@gtkx/codegen 0.21.0 → 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 (756) hide show
  1. package/README.md +173 -0
  2. package/dist/analysis/descriptor-render.d.ts +25 -0
  3. package/dist/analysis/descriptor-render.d.ts.map +1 -0
  4. package/dist/analysis/descriptor-render.js +420 -0
  5. package/dist/analysis/descriptor-render.js.map +1 -0
  6. package/dist/analysis/descriptor.d.ts +62 -0
  7. package/dist/analysis/descriptor.d.ts.map +1 -0
  8. package/dist/analysis/descriptor.js +127 -0
  9. package/dist/analysis/descriptor.js.map +1 -0
  10. package/dist/analysis/inheritance.d.ts +38 -0
  11. package/dist/analysis/inheritance.d.ts.map +1 -0
  12. package/dist/analysis/inheritance.js +248 -0
  13. package/dist/analysis/inheritance.js.map +1 -0
  14. package/dist/analysis/param-structure.d.ts +27 -0
  15. package/dist/analysis/param-structure.d.ts.map +1 -0
  16. package/dist/analysis/param-structure.js +158 -0
  17. package/dist/analysis/param-structure.js.map +1 -0
  18. package/dist/analysis/ts-type.d.ts +20 -0
  19. package/dist/analysis/ts-type.d.ts.map +1 -0
  20. package/dist/analysis/ts-type.js +111 -0
  21. package/dist/analysis/ts-type.js.map +1 -0
  22. package/dist/compile.d.ts +18 -0
  23. package/dist/compile.d.ts.map +1 -0
  24. package/dist/compile.js +130 -0
  25. package/dist/compile.js.map +1 -0
  26. package/dist/docs/api-reference.d.ts +67 -0
  27. package/dist/docs/api-reference.d.ts.map +1 -0
  28. package/dist/docs/api-reference.js +372 -0
  29. package/dist/docs/api-reference.js.map +1 -0
  30. package/dist/docs/element-page.d.ts +12 -0
  31. package/dist/docs/element-page.d.ts.map +1 -0
  32. package/dist/docs/element-page.js +156 -0
  33. package/dist/docs/element-page.js.map +1 -0
  34. package/dist/docs/pipeline.d.ts +26 -0
  35. package/dist/docs/pipeline.d.ts.map +1 -0
  36. package/dist/docs/pipeline.js +156 -0
  37. package/dist/docs/pipeline.js.map +1 -0
  38. package/dist/docs/render.d.ts +34 -0
  39. package/dist/docs/render.d.ts.map +1 -0
  40. package/dist/docs/render.js +143 -0
  41. package/dist/docs/render.js.map +1 -0
  42. package/dist/docs/symbol-page.d.ts +41 -0
  43. package/dist/docs/symbol-page.d.ts.map +1 -0
  44. package/dist/docs/symbol-page.js +380 -0
  45. package/dist/docs/symbol-page.js.map +1 -0
  46. package/dist/fingerprint.d.ts +31 -28
  47. package/dist/fingerprint.d.ts.map +1 -1
  48. package/dist/fingerprint.js +84 -19
  49. package/dist/fingerprint.js.map +1 -1
  50. package/dist/gi.d.ts +13 -0
  51. package/dist/gi.d.ts.map +1 -0
  52. package/dist/gi.js +21 -0
  53. package/dist/gi.js.map +1 -0
  54. package/dist/gir/ancestry.d.ts +10 -0
  55. package/dist/gir/ancestry.d.ts.map +1 -0
  56. package/dist/gir/ancestry.js +26 -0
  57. package/dist/gir/ancestry.js.map +1 -0
  58. package/dist/gir/callback.d.ts +8 -14
  59. package/dist/gir/callback.d.ts.map +1 -1
  60. package/dist/gir/callback.js +16 -16
  61. package/dist/gir/callback.js.map +1 -1
  62. package/dist/gir/class.d.ts +25 -44
  63. package/dist/gir/class.d.ts.map +1 -1
  64. package/dist/gir/class.js +16 -26
  65. package/dist/gir/class.js.map +1 -1
  66. package/dist/gir/enum.d.ts +16 -34
  67. package/dist/gir/enum.d.ts.map +1 -1
  68. package/dist/gir/enum.js +10 -16
  69. package/dist/gir/enum.js.map +1 -1
  70. package/dist/gir/field.d.ts +16 -24
  71. package/dist/gir/field.d.ts.map +1 -1
  72. package/dist/gir/field.js +35 -18
  73. package/dist/gir/field.js.map +1 -1
  74. package/dist/gir/function.d.ts +15 -43
  75. package/dist/gir/function.d.ts.map +1 -1
  76. package/dist/gir/function.js +26 -23
  77. package/dist/gir/function.js.map +1 -1
  78. package/dist/gir/gir-path.d.ts +3 -0
  79. package/dist/gir/gir-path.d.ts.map +1 -0
  80. package/dist/gir/gir-path.js +57 -0
  81. package/dist/gir/gir-path.js.map +1 -0
  82. package/dist/gir/libraries.d.ts +5 -0
  83. package/dist/gir/libraries.d.ts.map +1 -0
  84. package/dist/gir/libraries.js +74 -0
  85. package/dist/gir/libraries.js.map +1 -0
  86. package/dist/gir/library.d.ts +43 -0
  87. package/dist/gir/library.d.ts.map +1 -0
  88. package/dist/gir/library.js +242 -0
  89. package/dist/gir/library.js.map +1 -0
  90. package/dist/gir/namespace.d.ts +40 -54
  91. package/dist/gir/namespace.d.ts.map +1 -1
  92. package/dist/gir/namespace.js +51 -40
  93. package/dist/gir/namespace.js.map +1 -1
  94. package/dist/gir/nullable-overrides.d.ts +3 -0
  95. package/dist/gir/nullable-overrides.d.ts.map +1 -0
  96. package/dist/gir/nullable-overrides.js +5 -0
  97. package/dist/gir/nullable-overrides.js.map +1 -0
  98. package/dist/gir/parameter.d.ts +34 -76
  99. package/dist/gir/parameter.d.ts.map +1 -1
  100. package/dist/gir/parameter.js +47 -59
  101. package/dist/gir/parameter.js.map +1 -1
  102. package/dist/gir/parse.d.ts +12 -77
  103. package/dist/gir/parse.d.ts.map +1 -1
  104. package/dist/gir/parse.js +65 -103
  105. package/dist/gir/parse.js.map +1 -1
  106. package/dist/gir/primitives.d.ts +5 -35
  107. package/dist/gir/primitives.d.ts.map +1 -1
  108. package/dist/gir/primitives.js +21 -36
  109. package/dist/gir/primitives.js.map +1 -1
  110. package/dist/gir/property.d.ts +18 -26
  111. package/dist/gir/property.d.ts.map +1 -1
  112. package/dist/gir/property.js +16 -12
  113. package/dist/gir/property.js.map +1 -1
  114. package/dist/gir/record.d.ts +28 -0
  115. package/dist/gir/record.d.ts.map +1 -0
  116. package/dist/gir/record.js +26 -0
  117. package/dist/gir/record.js.map +1 -0
  118. package/dist/gir/size.d.ts +15 -61
  119. package/dist/gir/size.d.ts.map +1 -1
  120. package/dist/gir/size.js +49 -72
  121. package/dist/gir/size.js.map +1 -1
  122. package/dist/gir/type-id.d.ts +51 -0
  123. package/dist/gir/type-id.d.ts.map +1 -0
  124. package/dist/gir/type-id.js +12 -0
  125. package/dist/gir/type-id.js.map +1 -0
  126. package/dist/gir/type-ref.d.ts +4 -77
  127. package/dist/gir/type-ref.d.ts.map +1 -1
  128. package/dist/gir/type-ref.js +58 -77
  129. package/dist/gir/type-ref.js.map +1 -1
  130. package/dist/gir/type.d.ts +34 -0
  131. package/dist/gir/type.d.ts.map +1 -0
  132. package/dist/gir/type.js +2 -0
  133. package/dist/gir/type.js.map +1 -0
  134. package/dist/index.d.ts +7 -11
  135. package/dist/index.d.ts.map +1 -1
  136. package/dist/index.js +6 -11
  137. package/dist/index.js.map +1 -1
  138. package/dist/jsx.d.ts +26 -0
  139. package/dist/jsx.d.ts.map +1 -0
  140. package/dist/jsx.js +40 -0
  141. package/dist/jsx.js.map +1 -0
  142. package/dist/khronos/args.d.ts +30 -0
  143. package/dist/khronos/args.d.ts.map +1 -0
  144. package/dist/khronos/args.js +171 -0
  145. package/dist/khronos/args.js.map +1 -0
  146. package/dist/khronos/jsdoc.d.ts +21 -0
  147. package/dist/khronos/jsdoc.d.ts.map +1 -0
  148. package/dist/khronos/jsdoc.js +72 -0
  149. package/dist/khronos/jsdoc.js.map +1 -0
  150. package/dist/khronos/model.d.ts +38 -0
  151. package/dist/khronos/model.d.ts.map +1 -0
  152. package/dist/khronos/model.js +167 -0
  153. package/dist/khronos/model.js.map +1 -0
  154. package/dist/khronos/modules.d.ts +12 -0
  155. package/dist/khronos/modules.d.ts.map +1 -0
  156. package/dist/khronos/modules.js +73 -0
  157. package/dist/khronos/modules.js.map +1 -0
  158. package/dist/khronos/param-pair.d.ts +11 -0
  159. package/dist/khronos/param-pair.d.ts.map +1 -0
  160. package/dist/khronos/param-pair.js +6 -0
  161. package/dist/khronos/param-pair.js.map +1 -0
  162. package/dist/khronos/parse.d.ts +8 -0
  163. package/dist/khronos/parse.d.ts.map +1 -0
  164. package/dist/khronos/parse.js +62 -0
  165. package/dist/khronos/parse.js.map +1 -0
  166. package/dist/khronos/pipeline.d.ts +24 -0
  167. package/dist/khronos/pipeline.d.ts.map +1 -0
  168. package/dist/khronos/pipeline.js +223 -0
  169. package/dist/khronos/pipeline.js.map +1 -0
  170. package/dist/khronos/plan.d.ts +81 -0
  171. package/dist/khronos/plan.d.ts.map +1 -0
  172. package/dist/khronos/plan.js +200 -0
  173. package/dist/khronos/plan.js.map +1 -0
  174. package/dist/khronos/render.d.ts +17 -0
  175. package/dist/khronos/render.d.ts.map +1 -0
  176. package/dist/khronos/render.js +205 -0
  177. package/dist/khronos/render.js.map +1 -0
  178. package/dist/khronos/select.d.ts +15 -0
  179. package/dist/khronos/select.d.ts.map +1 -0
  180. package/dist/khronos/select.js +56 -0
  181. package/dist/khronos/select.js.map +1 -0
  182. package/dist/react/element-config.d.ts +17 -0
  183. package/dist/react/element-config.d.ts.map +1 -0
  184. package/dist/react/element-config.js +61 -0
  185. package/dist/react/element-config.js.map +1 -0
  186. package/dist/runner.d.ts +38 -49
  187. package/dist/runner.d.ts.map +1 -1
  188. package/dist/runner.js +81 -54
  189. package/dist/runner.js.map +1 -1
  190. package/dist/store/compile-store.d.ts +11 -0
  191. package/dist/store/compile-store.d.ts.map +1 -0
  192. package/dist/store/compile-store.js +40 -0
  193. package/dist/store/compile-store.js.map +1 -0
  194. package/dist/store/gi/async.d.ts +5 -0
  195. package/dist/store/gi/async.d.ts.map +1 -0
  196. package/dist/store/gi/async.js +45 -0
  197. package/dist/store/gi/async.js.map +1 -0
  198. package/dist/store/gi/callables.d.ts +42 -0
  199. package/dist/store/gi/callables.d.ts.map +1 -0
  200. package/dist/store/gi/callables.js +264 -0
  201. package/dist/store/gi/callables.js.map +1 -0
  202. package/dist/store/gi/callback.d.ts +5 -0
  203. package/dist/store/gi/callback.d.ts.map +1 -0
  204. package/dist/store/gi/callback.js +17 -0
  205. package/dist/store/gi/callback.js.map +1 -0
  206. package/dist/store/gi/class-struct-record.d.ts +10 -0
  207. package/dist/store/gi/class-struct-record.d.ts.map +1 -0
  208. package/dist/store/gi/class-struct-record.js +52 -0
  209. package/dist/store/gi/class-struct-record.js.map +1 -0
  210. package/dist/store/gi/class.d.ts +5 -0
  211. package/dist/store/gi/class.d.ts.map +1 -0
  212. package/dist/store/gi/class.js +208 -0
  213. package/dist/store/gi/class.js.map +1 -0
  214. package/dist/store/gi/companion.d.ts +5 -0
  215. package/dist/store/gi/companion.d.ts.map +1 -0
  216. package/dist/store/gi/companion.js +16 -0
  217. package/dist/store/gi/companion.js.map +1 -0
  218. package/dist/store/gi/constant.d.ts +6 -0
  219. package/dist/store/gi/constant.d.ts.map +1 -0
  220. package/dist/store/gi/constant.js +35 -0
  221. package/dist/store/gi/constant.js.map +1 -0
  222. package/dist/store/gi/constructor-props.d.ts +6 -0
  223. package/dist/store/gi/constructor-props.d.ts.map +1 -0
  224. package/dist/store/gi/constructor-props.js +71 -0
  225. package/dist/store/gi/constructor-props.js.map +1 -0
  226. package/dist/store/gi/enum.d.ts +6 -0
  227. package/dist/store/gi/enum.d.ts.map +1 -0
  228. package/dist/store/gi/enum.js +41 -0
  229. package/dist/store/gi/enum.js.map +1 -0
  230. package/dist/store/gi/function.d.ts +9 -0
  231. package/dist/store/gi/function.d.ts.map +1 -0
  232. package/dist/store/gi/function.js +114 -0
  233. package/dist/store/gi/function.js.map +1 -0
  234. package/dist/store/gi/gtype-binding.d.ts +10 -0
  235. package/dist/store/gi/gtype-binding.d.ts.map +1 -0
  236. package/dist/store/gi/gtype-binding.js +24 -0
  237. package/dist/store/gi/gtype-binding.js.map +1 -0
  238. package/dist/store/gi/interface.d.ts +5 -0
  239. package/dist/store/gi/interface.d.ts.map +1 -0
  240. package/dist/store/gi/interface.js +117 -0
  241. package/dist/store/gi/interface.js.map +1 -0
  242. package/dist/store/gi/item-comparators.d.ts +7 -0
  243. package/dist/store/gi/item-comparators.d.ts.map +1 -0
  244. package/dist/store/gi/item-comparators.js +88 -0
  245. package/dist/store/gi/item-comparators.js.map +1 -0
  246. package/dist/store/gi/method.d.ts +24 -0
  247. package/dist/store/gi/method.d.ts.map +1 -0
  248. package/dist/store/gi/method.js +336 -0
  249. package/dist/store/gi/method.js.map +1 -0
  250. package/dist/store/gi/param-marshal.d.ts +10 -0
  251. package/dist/store/gi/param-marshal.d.ts.map +1 -0
  252. package/dist/store/gi/param-marshal.js +50 -0
  253. package/dist/store/gi/param-marshal.js.map +1 -0
  254. package/dist/store/gi/pipeline.d.ts +5 -0
  255. package/dist/store/gi/pipeline.d.ts.map +1 -0
  256. package/dist/store/gi/pipeline.js +95 -0
  257. package/dist/store/gi/pipeline.js.map +1 -0
  258. package/dist/store/gi/properties.d.ts +6 -0
  259. package/dist/store/gi/properties.d.ts.map +1 -0
  260. package/dist/store/gi/properties.js +32 -0
  261. package/dist/store/gi/properties.js.map +1 -0
  262. package/dist/store/gi/property-accessor.d.ts +27 -0
  263. package/dist/store/gi/property-accessor.d.ts.map +1 -0
  264. package/dist/store/gi/property-accessor.js +158 -0
  265. package/dist/store/gi/property-accessor.js.map +1 -0
  266. package/dist/store/gi/record-constructor.d.ts +6 -0
  267. package/dist/store/gi/record-constructor.d.ts.map +1 -0
  268. package/dist/store/gi/record-constructor.js +76 -0
  269. package/dist/store/gi/record-constructor.js.map +1 -0
  270. package/dist/store/gi/record-field-accessor.d.ts +25 -0
  271. package/dist/store/gi/record-field-accessor.d.ts.map +1 -0
  272. package/dist/store/gi/record-field-accessor.js +360 -0
  273. package/dist/store/gi/record-field-accessor.js.map +1 -0
  274. package/dist/store/gi/record-layout.d.ts +15 -0
  275. package/dist/store/gi/record-layout.d.ts.map +1 -0
  276. package/dist/store/gi/record-layout.js +132 -0
  277. package/dist/store/gi/record-layout.js.map +1 -0
  278. package/dist/store/gi/record.d.ts +5 -0
  279. package/dist/store/gi/record.d.ts.map +1 -0
  280. package/dist/store/gi/record.js +65 -0
  281. package/dist/store/gi/record.js.map +1 -0
  282. package/dist/store/gi/registration.d.ts +16 -0
  283. package/dist/store/gi/registration.d.ts.map +1 -0
  284. package/dist/store/gi/registration.js +21 -0
  285. package/dist/store/gi/registration.js.map +1 -0
  286. package/dist/store/gi/return-wrap.d.ts +10 -0
  287. package/dist/store/gi/return-wrap.d.ts.map +1 -0
  288. package/dist/store/gi/return-wrap.js +67 -0
  289. package/dist/store/gi/return-wrap.js.map +1 -0
  290. package/dist/store/gi/runtime-override.d.ts +4 -0
  291. package/dist/store/gi/runtime-override.d.ts.map +1 -0
  292. package/dist/store/gi/runtime-override.js +32 -0
  293. package/dist/store/gi/runtime-override.js.map +1 -0
  294. package/dist/store/gi/signal.d.ts +6 -0
  295. package/dist/store/gi/signal.d.ts.map +1 -0
  296. package/dist/store/gi/signal.js +280 -0
  297. package/dist/store/gi/signal.js.map +1 -0
  298. package/dist/store/gi/vtable.d.ts +5 -0
  299. package/dist/store/gi/vtable.d.ts.map +1 -0
  300. package/dist/store/gi/vtable.js +108 -0
  301. package/dist/store/gi/vtable.js.map +1 -0
  302. package/dist/store/gi-store.d.ts +10 -0
  303. package/dist/store/gi-store.d.ts.map +1 -0
  304. package/dist/store/gi-store.js +59 -0
  305. package/dist/store/gi-store.js.map +1 -0
  306. package/dist/store/jsx/element-components.d.ts +23 -0
  307. package/dist/store/jsx/element-components.d.ts.map +1 -0
  308. package/dist/store/jsx/element-components.js +86 -0
  309. package/dist/store/jsx/element-components.js.map +1 -0
  310. package/dist/store/jsx/element-prop-imports.d.ts +17 -0
  311. package/dist/store/jsx/element-prop-imports.d.ts.map +1 -0
  312. package/dist/store/jsx/element-prop-imports.js +15 -0
  313. package/dist/store/jsx/element-prop-imports.js.map +1 -0
  314. package/dist/store/jsx/element-prop-types.d.ts +10 -0
  315. package/dist/store/jsx/element-prop-types.d.ts.map +1 -0
  316. package/dist/store/jsx/element-prop-types.js +41 -0
  317. package/dist/store/jsx/element-prop-types.js.map +1 -0
  318. package/dist/store/jsx/gir-index.d.ts +16 -0
  319. package/dist/store/jsx/gir-index.d.ts.map +1 -0
  320. package/dist/store/jsx/gir-index.js +33 -0
  321. package/dist/store/jsx/gir-index.js.map +1 -0
  322. package/dist/store/jsx/intrinsic-elements.d.ts +27 -0
  323. package/dist/store/jsx/intrinsic-elements.d.ts.map +1 -0
  324. package/dist/store/jsx/intrinsic-elements.js +128 -0
  325. package/dist/store/jsx/intrinsic-elements.js.map +1 -0
  326. package/dist/store/jsx/jsx.d.ts +16 -0
  327. package/dist/store/jsx/jsx.d.ts.map +1 -0
  328. package/dist/store/jsx/jsx.js +242 -0
  329. package/dist/store/jsx/jsx.js.map +1 -0
  330. package/dist/store/jsx/metadata.d.ts +4 -0
  331. package/dist/store/jsx/metadata.d.ts.map +1 -0
  332. package/dist/store/jsx/metadata.js +253 -0
  333. package/dist/store/jsx/metadata.js.map +1 -0
  334. package/dist/store/jsx/pipeline.d.ts +21 -0
  335. package/dist/store/jsx/pipeline.d.ts.map +1 -0
  336. package/dist/store/jsx/pipeline.js +81 -0
  337. package/dist/store/jsx/pipeline.js.map +1 -0
  338. package/dist/store/jsx/props.d.ts +33 -0
  339. package/dist/store/jsx/props.d.ts.map +1 -0
  340. package/dist/store/jsx/props.js +158 -0
  341. package/dist/store/jsx/props.js.map +1 -0
  342. package/dist/store/jsx-store.d.ts +7 -0
  343. package/dist/store/jsx-store.d.ts.map +1 -0
  344. package/dist/store/jsx-store.js +26 -0
  345. package/dist/store/jsx-store.js.map +1 -0
  346. package/dist/store/store-fs.d.ts +43 -0
  347. package/dist/store/store-fs.d.ts.map +1 -0
  348. package/dist/store/store-fs.js +73 -0
  349. package/dist/store/store-fs.js.map +1 -0
  350. package/dist/writer/context.d.ts +17 -0
  351. package/dist/writer/context.d.ts.map +1 -0
  352. package/dist/writer/context.js +50 -0
  353. package/dist/writer/context.js.map +1 -0
  354. package/dist/writer/doc.d.ts +3 -0
  355. package/dist/writer/doc.d.ts.map +1 -0
  356. package/dist/writer/doc.js +18 -0
  357. package/dist/writer/doc.js.map +1 -0
  358. package/dist/writer/emit.d.ts +9 -0
  359. package/dist/writer/emit.d.ts.map +1 -0
  360. package/dist/writer/emit.js +24 -0
  361. package/dist/writer/emit.js.map +1 -0
  362. package/dist/writer/gtk-doc.d.ts +3 -0
  363. package/dist/writer/gtk-doc.d.ts.map +1 -0
  364. package/dist/writer/gtk-doc.js +78 -0
  365. package/dist/writer/gtk-doc.js.map +1 -0
  366. package/dist/writer/imports.d.ts +12 -0
  367. package/dist/writer/imports.d.ts.map +1 -0
  368. package/dist/writer/imports.js +61 -0
  369. package/dist/writer/imports.js.map +1 -0
  370. package/dist/writer/module.d.ts +16 -0
  371. package/dist/writer/module.d.ts.map +1 -0
  372. package/dist/writer/module.js +53 -0
  373. package/dist/writer/module.js.map +1 -0
  374. package/dist/xml.d.ts +4 -0
  375. package/dist/xml.d.ts.map +1 -0
  376. package/dist/xml.js +10 -0
  377. package/dist/xml.js.map +1 -0
  378. package/overrides/cairo/context.ts.ejs +1269 -0
  379. package/overrides/cairo/font-face.ts.ejs +151 -0
  380. package/overrides/cairo/font-options.ts.ejs +199 -0
  381. package/overrides/cairo/image-surface.ts.ejs +132 -0
  382. package/overrides/cairo/index.ts.ejs +22 -0
  383. package/overrides/cairo/matrix.ts.ejs +171 -0
  384. package/overrides/cairo/pattern.ts.ejs +476 -0
  385. package/overrides/cairo/recording-surface.ts.ejs +102 -0
  386. package/overrides/cairo/region.ts.ejs +237 -0
  387. package/overrides/cairo/scaled-font.ts.ejs +330 -0
  388. package/overrides/cairo/surface.ts.ejs +296 -0
  389. package/overrides/gdk/index.ts.ejs +2 -0
  390. package/overrides/gdk/rgba.ts.ejs +11 -0
  391. package/overrides/gobject/index.ts.ejs +29 -0
  392. package/overrides/gobject/object.ts.ejs +51 -0
  393. package/overrides/gobject/value.ts.ejs +17 -0
  394. package/overrides/graphene/index.ts.ejs +2 -0
  395. package/overrides/graphene/structs.ts.ejs +37 -0
  396. package/package.json +21 -15
  397. package/src/analysis/descriptor-render.ts +723 -0
  398. package/src/analysis/descriptor.ts +300 -0
  399. package/src/analysis/inheritance.ts +430 -0
  400. package/src/analysis/param-structure.ts +258 -0
  401. package/src/analysis/ts-type.ts +174 -0
  402. package/src/compile.ts +179 -0
  403. package/src/docs/api-reference.ts +557 -0
  404. package/src/docs/element-page.ts +281 -0
  405. package/src/docs/pipeline.ts +241 -0
  406. package/src/docs/render.ts +255 -0
  407. package/src/docs/symbol-page.ts +589 -0
  408. package/src/fingerprint.ts +144 -35
  409. package/src/gi.ts +26 -0
  410. package/src/gir/ancestry.ts +53 -0
  411. package/src/gir/callback.ts +22 -24
  412. package/src/gir/class.ts +39 -61
  413. package/src/gir/enum.ts +25 -41
  414. package/src/gir/field.ts +51 -37
  415. package/src/gir/function.ts +44 -59
  416. package/src/gir/gir-path.ts +73 -0
  417. package/src/gir/libraries.ts +102 -0
  418. package/src/gir/library.ts +351 -0
  419. package/src/gir/namespace.ts +109 -88
  420. package/src/gir/nullable-overrides.ts +5 -0
  421. package/src/gir/parameter.ts +111 -102
  422. package/src/gir/parse.ts +124 -121
  423. package/src/gir/primitives.ts +43 -63
  424. package/src/gir/property.ts +33 -33
  425. package/src/gir/record.ts +55 -0
  426. package/src/gir/size.ts +93 -107
  427. package/src/gir/type-id.ts +64 -0
  428. package/src/gir/type-ref.ts +77 -146
  429. package/src/gir/type.ts +18 -0
  430. package/src/index.ts +27 -15
  431. package/src/jsx.ts +70 -0
  432. package/src/khronos/args.ts +271 -0
  433. package/src/khronos/jsdoc.ts +114 -0
  434. package/src/khronos/model.ts +267 -0
  435. package/src/khronos/modules.ts +115 -0
  436. package/src/khronos/param-pair.ts +14 -0
  437. package/src/khronos/parse.ts +86 -0
  438. package/src/khronos/pipeline.ts +337 -0
  439. package/src/khronos/plan.ts +340 -0
  440. package/src/khronos/registry/LICENSE +202 -0
  441. package/src/khronos/registry/gl.xml +47748 -0
  442. package/src/khronos/render.ts +330 -0
  443. package/src/khronos/select.ts +97 -0
  444. package/src/react/element-config.ts +91 -0
  445. package/src/runner.ts +153 -80
  446. package/src/store/compile-store.ts +55 -0
  447. package/src/store/gi/async.ts +69 -0
  448. package/src/store/gi/callables.ts +518 -0
  449. package/src/store/gi/callback.ts +24 -0
  450. package/src/store/gi/class-struct-record.ts +72 -0
  451. package/src/store/gi/class.ts +334 -0
  452. package/src/store/gi/companion.ts +22 -0
  453. package/src/store/gi/constant.ts +58 -0
  454. package/src/store/gi/constructor-props.ts +108 -0
  455. package/src/store/gi/enum.ts +64 -0
  456. package/src/store/gi/function.ts +173 -0
  457. package/src/store/gi/gtype-binding.ts +46 -0
  458. package/src/store/gi/interface.ts +222 -0
  459. package/src/store/gi/item-comparators.ts +138 -0
  460. package/src/store/gi/method.ts +634 -0
  461. package/src/store/gi/param-marshal.ts +71 -0
  462. package/src/store/gi/pipeline.ts +135 -0
  463. package/src/store/gi/properties.ts +50 -0
  464. package/src/store/gi/property-accessor.ts +302 -0
  465. package/src/store/gi/record-constructor.ts +119 -0
  466. package/src/store/gi/record-field-accessor.ts +607 -0
  467. package/src/store/gi/record-layout.ts +221 -0
  468. package/src/store/gi/record.ts +89 -0
  469. package/src/store/gi/registration.ts +44 -0
  470. package/src/store/gi/return-wrap.ts +100 -0
  471. package/src/store/gi/runtime-override.ts +46 -0
  472. package/src/store/gi/signal.ts +450 -0
  473. package/src/store/gi/vtable.ts +175 -0
  474. package/src/store/gi-store.ts +92 -0
  475. package/src/store/jsx/element-components.ts +152 -0
  476. package/src/store/jsx/element-prop-imports.ts +24 -0
  477. package/src/store/jsx/element-prop-types.ts +59 -0
  478. package/src/store/jsx/gir-index.ts +62 -0
  479. package/src/store/jsx/intrinsic-elements.ts +262 -0
  480. package/src/store/jsx/jsx.ts +408 -0
  481. package/src/store/jsx/metadata.ts +385 -0
  482. package/src/store/jsx/pipeline.ts +145 -0
  483. package/src/store/jsx/props.ts +274 -0
  484. package/src/store/jsx-store.ts +39 -0
  485. package/src/store/store-fs.ts +128 -0
  486. package/src/writer/context.ts +67 -0
  487. package/src/writer/doc.ts +25 -0
  488. package/src/writer/emit.ts +35 -0
  489. package/src/writer/gtk-doc.ts +101 -0
  490. package/src/writer/imports.ts +94 -0
  491. package/src/writer/module.ts +69 -0
  492. package/src/xml.ts +12 -0
  493. package/LICENSE +0 -373
  494. package/dist/dsl/context.d.ts +0 -104
  495. package/dist/dsl/context.d.ts.map +0 -1
  496. package/dist/dsl/context.js +0 -140
  497. package/dist/dsl/context.js.map +0 -1
  498. package/dist/dsl/emit.d.ts +0 -28
  499. package/dist/dsl/emit.d.ts.map +0 -1
  500. package/dist/dsl/emit.js +0 -41
  501. package/dist/dsl/emit.js.map +0 -1
  502. package/dist/dsl/identifier.d.ts +0 -28
  503. package/dist/dsl/identifier.d.ts.map +0 -1
  504. package/dist/dsl/identifier.js +0 -45
  505. package/dist/dsl/identifier.js.map +0 -1
  506. package/dist/dsl/imports.d.ts +0 -58
  507. package/dist/dsl/imports.d.ts.map +0 -1
  508. package/dist/dsl/imports.js +0 -107
  509. package/dist/dsl/imports.js.map +0 -1
  510. package/dist/dsl/module.d.ts +0 -53
  511. package/dist/dsl/module.d.ts.map +0 -1
  512. package/dist/dsl/module.js +0 -76
  513. package/dist/dsl/module.js.map +0 -1
  514. package/dist/ffi/pipeline.d.ts +0 -19
  515. package/dist/ffi/pipeline.d.ts.map +0 -1
  516. package/dist/ffi/pipeline.js +0 -107
  517. package/dist/ffi/pipeline.js.map +0 -1
  518. package/dist/gi-store.d.ts +0 -34
  519. package/dist/gi-store.d.ts.map +0 -1
  520. package/dist/gi-store.js +0 -154
  521. package/dist/gi-store.js.map +0 -1
  522. package/dist/gir/boxed.d.ts +0 -66
  523. package/dist/gir/boxed.d.ts.map +0 -1
  524. package/dist/gir/boxed.js +0 -49
  525. package/dist/gir/boxed.js.map +0 -1
  526. package/dist/gir/qualified-name.d.ts +0 -37
  527. package/dist/gir/qualified-name.d.ts.map +0 -1
  528. package/dist/gir/qualified-name.js +0 -39
  529. package/dist/gir/qualified-name.js.map +0 -1
  530. package/dist/gir/qualify.d.ts +0 -32
  531. package/dist/gir/qualify.d.ts.map +0 -1
  532. package/dist/gir/qualify.js +0 -60
  533. package/dist/gir/qualify.js.map +0 -1
  534. package/dist/gir/repository.d.ts +0 -82
  535. package/dist/gir/repository.d.ts.map +0 -1
  536. package/dist/gir/repository.js +0 -122
  537. package/dist/gir/repository.js.map +0 -1
  538. package/dist/gir/signal.d.ts +0 -22
  539. package/dist/gir/signal.d.ts.map +0 -1
  540. package/dist/gir/signal.js +0 -20
  541. package/dist/gir/signal.js.map +0 -1
  542. package/dist/jsx-store.d.ts +0 -22
  543. package/dist/jsx-store.d.ts.map +0 -1
  544. package/dist/jsx-store.js +0 -40
  545. package/dist/jsx-store.js.map +0 -1
  546. package/dist/react/compounds-meta.d.ts +0 -18
  547. package/dist/react/compounds-meta.d.ts.map +0 -1
  548. package/dist/react/compounds-meta.js +0 -93
  549. package/dist/react/compounds-meta.js.map +0 -1
  550. package/dist/react/compounds.d.ts +0 -27
  551. package/dist/react/compounds.d.ts.map +0 -1
  552. package/dist/react/compounds.js +0 -164
  553. package/dist/react/compounds.js.map +0 -1
  554. package/dist/react/internal.d.ts +0 -14
  555. package/dist/react/internal.d.ts.map +0 -1
  556. package/dist/react/internal.js +0 -79
  557. package/dist/react/internal.js.map +0 -1
  558. package/dist/react/jsx.d.ts +0 -22
  559. package/dist/react/jsx.d.ts.map +0 -1
  560. package/dist/react/jsx.js +0 -134
  561. package/dist/react/jsx.js.map +0 -1
  562. package/dist/react/pipeline.d.ts +0 -13
  563. package/dist/react/pipeline.d.ts.map +0 -1
  564. package/dist/react/pipeline.js +0 -25
  565. package/dist/react/pipeline.js.map +0 -1
  566. package/dist/react/props.d.ts +0 -38
  567. package/dist/react/props.d.ts.map +0 -1
  568. package/dist/react/props.js +0 -231
  569. package/dist/react/props.js.map +0 -1
  570. package/dist/react/slot-props.d.ts +0 -10
  571. package/dist/react/slot-props.d.ts.map +0 -1
  572. package/dist/react/slot-props.js +0 -56
  573. package/dist/react/slot-props.js.map +0 -1
  574. package/dist/react/widgets.d.ts +0 -83
  575. package/dist/react/widgets.d.ts.map +0 -1
  576. package/dist/react/widgets.js +0 -152
  577. package/dist/react/widgets.js.map +0 -1
  578. package/dist/store-fs.d.ts +0 -109
  579. package/dist/store-fs.d.ts.map +0 -1
  580. package/dist/store-fs.js +0 -98
  581. package/dist/store-fs.js.map +0 -1
  582. package/dist/transpile.d.ts +0 -32
  583. package/dist/transpile.d.ts.map +0 -1
  584. package/dist/transpile.js +0 -63
  585. package/dist/transpile.js.map +0 -1
  586. package/dist/typecheck-store.d.ts +0 -41
  587. package/dist/typecheck-store.d.ts.map +0 -1
  588. package/dist/typecheck-store.js +0 -102
  589. package/dist/typecheck-store.js.map +0 -1
  590. package/dist/writers/alias.d.ts +0 -13
  591. package/dist/writers/alias.d.ts.map +0 -1
  592. package/dist/writers/alias.js +0 -17
  593. package/dist/writers/alias.js.map +0 -1
  594. package/dist/writers/async.d.ts +0 -22
  595. package/dist/writers/async.d.ts.map +0 -1
  596. package/dist/writers/async.js +0 -48
  597. package/dist/writers/async.js.map +0 -1
  598. package/dist/writers/boxed-constructor.d.ts +0 -26
  599. package/dist/writers/boxed-constructor.d.ts.map +0 -1
  600. package/dist/writers/boxed-constructor.js +0 -85
  601. package/dist/writers/boxed-constructor.js.map +0 -1
  602. package/dist/writers/boxed-field-accessor.d.ts +0 -18
  603. package/dist/writers/boxed-field-accessor.d.ts.map +0 -1
  604. package/dist/writers/boxed-field-accessor.js +0 -260
  605. package/dist/writers/boxed-field-accessor.js.map +0 -1
  606. package/dist/writers/boxed-layout.d.ts +0 -27
  607. package/dist/writers/boxed-layout.d.ts.map +0 -1
  608. package/dist/writers/boxed-layout.js +0 -128
  609. package/dist/writers/boxed-layout.js.map +0 -1
  610. package/dist/writers/boxed.d.ts +0 -20
  611. package/dist/writers/boxed.d.ts.map +0 -1
  612. package/dist/writers/boxed.js +0 -71
  613. package/dist/writers/boxed.js.map +0 -1
  614. package/dist/writers/callables.d.ts +0 -124
  615. package/dist/writers/callables.d.ts.map +0 -1
  616. package/dist/writers/callables.js +0 -283
  617. package/dist/writers/callables.js.map +0 -1
  618. package/dist/writers/callback.d.ts +0 -16
  619. package/dist/writers/callback.d.ts.map +0 -1
  620. package/dist/writers/callback.js +0 -38
  621. package/dist/writers/callback.js.map +0 -1
  622. package/dist/writers/class-struct-record.d.ts +0 -31
  623. package/dist/writers/class-struct-record.d.ts.map +0 -1
  624. package/dist/writers/class-struct-record.js +0 -67
  625. package/dist/writers/class-struct-record.js.map +0 -1
  626. package/dist/writers/class-struct.d.ts +0 -22
  627. package/dist/writers/class-struct.d.ts.map +0 -1
  628. package/dist/writers/class-struct.js +0 -85
  629. package/dist/writers/class-struct.js.map +0 -1
  630. package/dist/writers/class.d.ts +0 -16
  631. package/dist/writers/class.d.ts.map +0 -1
  632. package/dist/writers/class.js +0 -307
  633. package/dist/writers/class.js.map +0 -1
  634. package/dist/writers/constant.d.ts +0 -15
  635. package/dist/writers/constant.d.ts.map +0 -1
  636. package/dist/writers/constant.js +0 -23
  637. package/dist/writers/constant.js.map +0 -1
  638. package/dist/writers/constants.d.ts +0 -15
  639. package/dist/writers/constants.d.ts.map +0 -1
  640. package/dist/writers/constants.js +0 -23
  641. package/dist/writers/constants.js.map +0 -1
  642. package/dist/writers/constructor-props.d.ts +0 -32
  643. package/dist/writers/constructor-props.d.ts.map +0 -1
  644. package/dist/writers/constructor-props.js +0 -110
  645. package/dist/writers/constructor-props.js.map +0 -1
  646. package/dist/writers/enum.d.ts +0 -21
  647. package/dist/writers/enum.d.ts.map +0 -1
  648. package/dist/writers/enum.js +0 -48
  649. package/dist/writers/enum.js.map +0 -1
  650. package/dist/writers/function.d.ts +0 -40
  651. package/dist/writers/function.d.ts.map +0 -1
  652. package/dist/writers/function.js +0 -127
  653. package/dist/writers/function.js.map +0 -1
  654. package/dist/writers/gtype-binding.d.ts +0 -19
  655. package/dist/writers/gtype-binding.d.ts.map +0 -1
  656. package/dist/writers/gtype-binding.js +0 -40
  657. package/dist/writers/gtype-binding.js.map +0 -1
  658. package/dist/writers/inheritance.d.ts +0 -48
  659. package/dist/writers/inheritance.d.ts.map +0 -1
  660. package/dist/writers/inheritance.js +0 -90
  661. package/dist/writers/inheritance.js.map +0 -1
  662. package/dist/writers/interface.d.ts +0 -16
  663. package/dist/writers/interface.d.ts.map +0 -1
  664. package/dist/writers/interface.js +0 -155
  665. package/dist/writers/interface.js.map +0 -1
  666. package/dist/writers/method.d.ts +0 -150
  667. package/dist/writers/method.d.ts.map +0 -1
  668. package/dist/writers/method.js +0 -510
  669. package/dist/writers/method.js.map +0 -1
  670. package/dist/writers/param-classify.d.ts +0 -93
  671. package/dist/writers/param-classify.d.ts.map +0 -1
  672. package/dist/writers/param-classify.js +0 -163
  673. package/dist/writers/param-classify.js.map +0 -1
  674. package/dist/writers/property-accessor.d.ts +0 -19
  675. package/dist/writers/property-accessor.d.ts.map +0 -1
  676. package/dist/writers/property-accessor.js +0 -117
  677. package/dist/writers/property-accessor.js.map +0 -1
  678. package/dist/writers/registration.d.ts +0 -27
  679. package/dist/writers/registration.d.ts.map +0 -1
  680. package/dist/writers/registration.js +0 -30
  681. package/dist/writers/registration.js.map +0 -1
  682. package/dist/writers/return-wrap.d.ts +0 -39
  683. package/dist/writers/return-wrap.d.ts.map +0 -1
  684. package/dist/writers/return-wrap.js +0 -152
  685. package/dist/writers/return-wrap.js.map +0 -1
  686. package/dist/writers/runtime-override.d.ts +0 -18
  687. package/dist/writers/runtime-override.d.ts.map +0 -1
  688. package/dist/writers/runtime-override.js +0 -44
  689. package/dist/writers/runtime-override.js.map +0 -1
  690. package/dist/writers/signal.d.ts +0 -21
  691. package/dist/writers/signal.d.ts.map +0 -1
  692. package/dist/writers/signal.js +0 -260
  693. package/dist/writers/signal.js.map +0 -1
  694. package/dist/writers/ts-type.d.ts +0 -50
  695. package/dist/writers/ts-type.d.ts.map +0 -1
  696. package/dist/writers/ts-type.js +0 -75
  697. package/dist/writers/ts-type.js.map +0 -1
  698. package/dist/writers/types-ts.d.ts +0 -27
  699. package/dist/writers/types-ts.d.ts.map +0 -1
  700. package/dist/writers/types-ts.js +0 -97
  701. package/dist/writers/types-ts.js.map +0 -1
  702. package/dist/writers/value.d.ts +0 -89
  703. package/dist/writers/value.d.ts.map +0 -1
  704. package/dist/writers/value.js +0 -402
  705. package/dist/writers/value.js.map +0 -1
  706. package/src/dsl/context.ts +0 -146
  707. package/src/dsl/emit.ts +0 -42
  708. package/src/dsl/identifier.ts +0 -52
  709. package/src/dsl/imports.ts +0 -109
  710. package/src/dsl/module.ts +0 -75
  711. package/src/ffi/pipeline.ts +0 -113
  712. package/src/gi-store.ts +0 -199
  713. package/src/gir/boxed.ts +0 -94
  714. package/src/gir/qualified-name.ts +0 -55
  715. package/src/gir/qualify.ts +0 -64
  716. package/src/gir/repository.ts +0 -149
  717. package/src/gir/signal.ts +0 -36
  718. package/src/jsx-store.ts +0 -53
  719. package/src/react/compounds-meta.ts +0 -99
  720. package/src/react/compounds.ts +0 -204
  721. package/src/react/internal.ts +0 -91
  722. package/src/react/jsx.ts +0 -155
  723. package/src/react/pipeline.ts +0 -29
  724. package/src/react/props.ts +0 -307
  725. package/src/react/slot-props.ts +0 -57
  726. package/src/react/widgets.ts +0 -185
  727. package/src/store-fs.ts +0 -157
  728. package/src/transpile.ts +0 -80
  729. package/src/typecheck-store.ts +0 -136
  730. package/src/writers/alias.ts +0 -19
  731. package/src/writers/async.ts +0 -44
  732. package/src/writers/boxed-constructor.ts +0 -105
  733. package/src/writers/boxed-field-accessor.ts +0 -306
  734. package/src/writers/boxed-layout.ts +0 -166
  735. package/src/writers/boxed.ts +0 -77
  736. package/src/writers/callables.ts +0 -339
  737. package/src/writers/callback.ts +0 -40
  738. package/src/writers/class-struct-record.ts +0 -75
  739. package/src/writers/class-struct.ts +0 -96
  740. package/src/writers/class.ts +0 -384
  741. package/src/writers/constant.ts +0 -29
  742. package/src/writers/constructor-props.ts +0 -130
  743. package/src/writers/enum.ts +0 -53
  744. package/src/writers/function.ts +0 -136
  745. package/src/writers/gtype-binding.ts +0 -48
  746. package/src/writers/inheritance.ts +0 -104
  747. package/src/writers/interface.ts +0 -168
  748. package/src/writers/method.ts +0 -678
  749. package/src/writers/param-classify.ts +0 -178
  750. package/src/writers/property-accessor.ts +0 -139
  751. package/src/writers/registration.ts +0 -42
  752. package/src/writers/return-wrap.ts +0 -180
  753. package/src/writers/runtime-override.ts +0 -59
  754. package/src/writers/signal.ts +0 -318
  755. package/src/writers/ts-type.ts +0 -115
  756. package/src/writers/value.ts +0 -485
@@ -0,0 +1,86 @@
1
+ import { sourceStringLiteral } from "@gtkx/utils";
2
+ import { renderJsDoc } from "../../writer/doc.js";
3
+ import { ancestorGlibNames } from "./intrinsic-elements.js";
4
+ const generateElementComponentsSection = (targetNamespace, library, options) => {
5
+ const collector = { imports: options.imports, exportedNames: new Set(), exportLines: [] };
6
+ const lazyElements = options.lazyElements;
7
+ const virtualNames = new Set(lazyElements.map((entry) => entry.element));
8
+ collectCandidateExports(collector, {
9
+ targetNamespace,
10
+ library,
11
+ virtualNames,
12
+ intrinsicElements: options.intrinsicElements,
13
+ components: options.components,
14
+ });
15
+ collectLazyElementExports(collector, lazyElements);
16
+ const source = collector.exportLines.join("\n\n");
17
+ return { source, exportedNames: collector.exportedNames };
18
+ };
19
+ const appendCandidateExport = (collector, candidate, options) => {
20
+ const { targetNamespace, library, virtualNames, components } = options;
21
+ if (candidate.namespace.name !== targetNamespace.name) {
22
+ return;
23
+ }
24
+ if (virtualNames.has(candidate.glibName)) {
25
+ return;
26
+ }
27
+ const line = renderCandidateExport(candidate, library, collector.imports, components);
28
+ collector.exportLines.push(line);
29
+ collector.exportedNames.add(candidate.glibName);
30
+ };
31
+ // An abstract GType cannot be instantiated: `g_object_new` on one is a fatal GObject error rather
32
+ // than a NULL return. Its props interface and metadata still have to be emitted, since every
33
+ // concrete subclass extends them, so only the constructible component export is withheld.
34
+ const collectCandidateExports = (collector, options) => {
35
+ for (const candidate of options.intrinsicElements) {
36
+ if (candidate.klass.isAbstract) {
37
+ continue;
38
+ }
39
+ appendCandidateExport(collector, candidate, options);
40
+ }
41
+ };
42
+ const collectLazyElementExports = (collector, lazyElements) => {
43
+ for (const spec of lazyElements) {
44
+ collector.imports.addNamed("@gtkx/react/internal", "createElementComponent", false);
45
+ collector.imports.addNamed("react", "ReactNode", true);
46
+ collector.exportLines.push(renderLazyElementExport(spec));
47
+ collector.exportedNames.add(spec.element);
48
+ }
49
+ };
50
+ const renderLazyElementExport = (spec) => {
51
+ const factory = `createElementComponent(${sourceStringLiteral(spec.element)})`;
52
+ const component = `export const ${spec.element}: (props: ${spec.typeName}) => ReactNode = ${factory};`;
53
+ return `${spec.typeSource}\n\n${component}`;
54
+ };
55
+ const renderCandidateExport = (candidate, library, imports, components) => {
56
+ const { glibName, klass, namespace } = candidate;
57
+ const ancestry = ancestorGlibNames(klass, namespace, library);
58
+ const component = resolveElementComponent(ancestry, components);
59
+ imports.addNamed("@gtkx/react/internal", "createElementComponent", false);
60
+ imports.addNamed("react", "ReactNode", true);
61
+ if (component !== undefined) {
62
+ imports.addNamed(component.module, component.export, false);
63
+ }
64
+ return `${renderJsDoc(klass.doc)}${renderElementComponentExport(glibName, component)}`;
65
+ };
66
+ /** The component for the nearest ancestry match, most-derived first; user overrides win on their exact type. */
67
+ const resolveElementComponent = (ancestry, components) => {
68
+ for (const name of ancestry) {
69
+ const found = components[name];
70
+ if (found !== undefined) {
71
+ return found;
72
+ }
73
+ }
74
+ return undefined;
75
+ };
76
+ const renderElementComponentExport = (glibName, component) => {
77
+ const propsType = `${glibName}Props`;
78
+ const annotation = `(props: ${propsType}) => ReactNode`;
79
+ const factoryCall = `createElementComponent(${sourceStringLiteral(glibName)})`;
80
+ if (component === undefined) {
81
+ return `export const ${glibName}: ${annotation} = ${factoryCall};`;
82
+ }
83
+ return `export const ${glibName}: ${annotation} = ${component.export}(${factoryCall});`;
84
+ };
85
+ export { generateElementComponentsSection };
86
+ //# sourceMappingURL=element-components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element-components.js","sourceRoot":"","sources":["../../../src/store/jsx/element-components.ts"],"names":[],"mappings":"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","sourcesContent":["import { sourceStringLiteral } from \"@gtkx/utils\";\nimport type { Library } from \"../../gir/library.js\";\nimport type { GirNamespace } from \"../../gir/namespace.js\";\nimport type { ImportsBuilder } from \"../../writer/imports.js\";\nimport type { LazyElementSpec } from \"./element-prop-types.js\";\nimport { renderJsDoc } from \"../../writer/doc.js\";\nimport { ancestorGlibNames, type GlibNamedClass } from \"./intrinsic-elements.js\";\n\n/** A component that wraps a generated element, keyed by GLib type name (built-in or user-provided). */\ntype ElementComponent = { module: string; export: string };\n/** Component wrappers keyed by GLib type name; the framework's built-ins merged with the project's own. */\ntype ElementComponentOverrides = Record<string, ElementComponent>;\n\ntype ExportCollector = {\n imports: ImportsBuilder;\n exportedNames: Set<string>;\n exportLines: string[];\n};\n\ntype CandidateExportOptions = {\n targetNamespace: GirNamespace;\n library: Library;\n virtualNames: Set<string>;\n intrinsicElements: GlibNamedClass[];\n components: Record<string, ElementComponent>;\n};\n\nconst generateElementComponentsSection = (\n targetNamespace: GirNamespace,\n library: Library,\n options: {\n imports: ImportsBuilder;\n lazyElements: LazyElementSpec[];\n intrinsicElements: GlibNamedClass[];\n components: ElementComponentOverrides;\n },\n): { source: string; exportedNames: Set<string> } => {\n const collector: ExportCollector = { imports: options.imports, exportedNames: new Set(), exportLines: [] };\n const lazyElements = options.lazyElements;\n const virtualNames = new Set(lazyElements.map((entry) => entry.element));\n\n collectCandidateExports(collector, {\n targetNamespace,\n library,\n virtualNames,\n intrinsicElements: options.intrinsicElements,\n components: options.components,\n });\n\n collectLazyElementExports(collector, lazyElements);\n const source = collector.exportLines.join(\"\\n\\n\");\n\n return { source, exportedNames: collector.exportedNames };\n};\n\nconst appendCandidateExport = (\n collector: ExportCollector,\n candidate: GlibNamedClass,\n options: CandidateExportOptions,\n): void => {\n const { targetNamespace, library, virtualNames, components } = options;\n\n if (candidate.namespace.name !== targetNamespace.name) {\n return;\n }\n\n if (virtualNames.has(candidate.glibName)) {\n return;\n }\n\n const line = renderCandidateExport(candidate, library, collector.imports, components);\n collector.exportLines.push(line);\n collector.exportedNames.add(candidate.glibName);\n};\n\n// An abstract GType cannot be instantiated: `g_object_new` on one is a fatal GObject error rather\n// than a NULL return. Its props interface and metadata still have to be emitted, since every\n// concrete subclass extends them, so only the constructible component export is withheld.\nconst collectCandidateExports = (collector: ExportCollector, options: CandidateExportOptions): void => {\n for (const candidate of options.intrinsicElements) {\n if (candidate.klass.isAbstract) {\n continue;\n }\n\n appendCandidateExport(collector, candidate, options);\n }\n};\n\nconst collectLazyElementExports = (collector: ExportCollector, lazyElements: LazyElementSpec[]): void => {\n for (const spec of lazyElements) {\n collector.imports.addNamed(\"@gtkx/react/internal\", \"createElementComponent\", false);\n collector.imports.addNamed(\"react\", \"ReactNode\", true);\n collector.exportLines.push(renderLazyElementExport(spec));\n collector.exportedNames.add(spec.element);\n }\n};\n\nconst renderLazyElementExport = (spec: LazyElementSpec): string => {\n const factory = `createElementComponent(${sourceStringLiteral(spec.element)})`;\n const component = `export const ${spec.element}: (props: ${spec.typeName}) => ReactNode = ${factory};`;\n\n return `${spec.typeSource}\\n\\n${component}`;\n};\n\nconst renderCandidateExport = (\n candidate: GlibNamedClass,\n library: Library,\n imports: ImportsBuilder,\n components: Record<string, ElementComponent>,\n): string => {\n const { glibName, klass, namespace } = candidate;\n const ancestry = ancestorGlibNames(klass, namespace, library);\n const component = resolveElementComponent(ancestry, components);\n imports.addNamed(\"@gtkx/react/internal\", \"createElementComponent\", false);\n imports.addNamed(\"react\", \"ReactNode\", true);\n\n if (component !== undefined) {\n imports.addNamed(component.module, component.export, false);\n }\n\n return `${renderJsDoc(klass.doc)}${renderElementComponentExport(glibName, component)}`;\n};\n\n/** The component for the nearest ancestry match, most-derived first; user overrides win on their exact type. */\nconst resolveElementComponent = (\n ancestry: string[],\n components: Record<string, ElementComponent>,\n): ElementComponent | undefined => {\n for (const name of ancestry) {\n const found = components[name];\n\n if (found !== undefined) {\n return found;\n }\n }\n\n return undefined;\n};\n\nconst renderElementComponentExport = (glibName: string, component: ElementComponent | undefined): string => {\n const propsType = `${glibName}Props`;\n const annotation = `(props: ${propsType}) => ReactNode`;\n const factoryCall = `createElementComponent(${sourceStringLiteral(glibName)})`;\n\n if (component === undefined) {\n return `export const ${glibName}: ${annotation} = ${factoryCall};`;\n }\n\n return `export const ${glibName}: ${annotation} = ${component.export}(${factoryCall});`;\n};\n\nexport { generateElementComponentsSection, type ElementComponent, type ElementComponentOverrides };\n"]}
@@ -0,0 +1,17 @@
1
+ /** Props interface a generated element's props extend, declared by hand in `@gtkx/react`. */
2
+ type ElementPropTypeRef = {
3
+ type: string;
4
+ module: string;
5
+ export: string;
6
+ };
7
+ /** Base props interface each element extends, keyed by GLib type name (the module exports it). */
8
+ type ElementProps = Record<string, {
9
+ module: string;
10
+ export: string;
11
+ }>;
12
+ /** Installs the base props each element extends (GLib type name → `{ module, export }`); set once per run. */
13
+ declare const setElementProps: (props: ElementProps) => void;
14
+ /** The base props interface an element extends, when its element config declares one. */
15
+ declare const elementPropTypeFor: (glibName: string) => ElementPropTypeRef | undefined;
16
+ export { setElementProps, elementPropTypeFor, type ElementPropTypeRef, type ElementProps };
17
+ //# sourceMappingURL=element-prop-imports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element-prop-imports.d.ts","sourceRoot":"","sources":["../../../src/store/jsx/element-prop-imports.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,KAAK,kBAAkB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAC3E,kGAAkG;AAClG,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAIvE,8GAA8G;AAC9G,QAAA,MAAM,eAAe,GAAI,OAAO,YAAY,KAAG,IAM9C,CAAC;AAEF,yFAAyF;AACzF,QAAA,MAAM,kBAAkB,GAAI,UAAU,MAAM,KAAG,kBAAkB,GAAG,SAInE,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,KAAK,kBAAkB,EAAE,KAAK,YAAY,EAAE,CAAC"}
@@ -0,0 +1,15 @@
1
+ const elementProps = new Map();
2
+ /** Installs the base props each element extends (GLib type name → `{ module, export }`); set once per run. */
3
+ const setElementProps = (props) => {
4
+ elementProps.clear();
5
+ for (const [glibName, ref] of Object.entries(props)) {
6
+ elementProps.set(glibName, ref);
7
+ }
8
+ };
9
+ /** The base props interface an element extends, when its element config declares one. */
10
+ const elementPropTypeFor = (glibName) => {
11
+ const ref = elementProps.get(glibName);
12
+ return ref === undefined ? undefined : { type: glibName, module: ref.module, export: ref.export };
13
+ };
14
+ export { setElementProps, elementPropTypeFor };
15
+ //# sourceMappingURL=element-prop-imports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element-prop-imports.js","sourceRoot":"","sources":["../../../src/store/jsx/element-prop-imports.ts"],"names":[],"mappings":"AAKA,MAAM,YAAY,GAAoD,IAAI,GAAG,EAAE,CAAC;AAEhF,8GAA8G;AAC9G,MAAM,eAAe,GAAG,CAAC,KAAmB,EAAQ,EAAE;IAClD,YAAY,CAAC,KAAK,EAAE,CAAC;IAErB,KAAK,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAClD,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;AACL,CAAC,CAAC;AAEF,yFAAyF;AACzF,MAAM,kBAAkB,GAAG,CAAC,QAAgB,EAAkC,EAAE;IAC5E,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEvC,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;AACtG,CAAC,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAA8C,CAAC","sourcesContent":["/** Props interface a generated element's props extend, declared by hand in `@gtkx/react`. */\ntype ElementPropTypeRef = { type: string; module: string; export: string };\n/** Base props interface each element extends, keyed by GLib type name (the module exports it). */\ntype ElementProps = Record<string, { module: string; export: string }>;\n\nconst elementProps: Map<string, { module: string; export: string }> = new Map();\n\n/** Installs the base props each element extends (GLib type name → `{ module, export }`); set once per run. */\nconst setElementProps = (props: ElementProps): void => {\n elementProps.clear();\n\n for (const [glibName, ref] of Object.entries(props)) {\n elementProps.set(glibName, ref);\n }\n};\n\n/** The base props interface an element extends, when its element config declares one. */\nconst elementPropTypeFor = (glibName: string): ElementPropTypeRef | undefined => {\n const ref = elementProps.get(glibName);\n\n return ref === undefined ? undefined : { type: glibName, module: ref.module, export: ref.export };\n};\n\nexport { setElementProps, elementPropTypeFor, type ElementPropTypeRef, type ElementProps };\n"]}
@@ -0,0 +1,10 @@
1
+ import { type GirIndex } from "./gir-index.js";
2
+ type LazyElementSpec = {
3
+ element: string;
4
+ typeName: string;
5
+ typeSource: string;
6
+ };
7
+ /** Lazy element prop types to emit, grouped by the namespace declaring each element. */
8
+ declare const lazyElementSpecs: (context: GirIndex, lazyElements: string[]) => Map<string, LazyElementSpec[]>;
9
+ export { lazyElementSpecs, type LazyElementSpec };
10
+ //# sourceMappingURL=element-prop-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element-prop-types.d.ts","sourceRoot":"","sources":["../../../src/store/jsx/element-prop-types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,QAAQ,EAAqB,MAAM,gBAAgB,CAAC;AAG5E,KAAK,eAAe,GAAG;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AA8BF,wFAAwF;AACxF,QAAA,MAAM,gBAAgB,GAAI,SAAS,QAAQ,EAAE,cAAc,MAAM,EAAE,KAAG,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,CAgBlG,CAAC;AAEF,OAAO,EAAE,gBAAgB,EAAE,KAAK,eAAe,EAAE,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { toCamelIdentifier } from "@gtkx/utils";
2
+ import { getChain } from "./gir-index.js";
3
+ import { getGlibName } from "./intrinsic-elements.js";
4
+ const appendConstructOnlyNames = (klass, names) => {
5
+ for (const property of klass.properties) {
6
+ if (property.constructOnly) {
7
+ names.push(toCamelIdentifier(property.name));
8
+ }
9
+ }
10
+ };
11
+ const constructOnlyNames = (context, entry) => {
12
+ const names = [];
13
+ for (const klass of getChain(context, entry)) {
14
+ appendConstructOnlyNames(klass, names);
15
+ }
16
+ return names;
17
+ };
18
+ const createLazyElementSpec = (context, element, entry) => {
19
+ const typeName = `${element}ElementProps`;
20
+ const baseName = getGlibName(entry.klass) ?? element;
21
+ const omitted = constructOnlyNames(context, entry);
22
+ const omitUnion = omitted.map((name) => JSON.stringify(name)).join(" | ");
23
+ const base = omitted.length === 0 ? `${baseName}Props` : `Omit<${baseName}Props, ${omitUnion}>`;
24
+ return { element, typeName, typeSource: `export type ${typeName} = ${base} & { children?: ReactNode };` };
25
+ };
26
+ /** Lazy element prop types to emit, grouped by the namespace declaring each element. */
27
+ const lazyElementSpecs = (context, lazyElements) => {
28
+ const specs = new Map();
29
+ for (const element of lazyElements) {
30
+ const entry = context.index.get(element);
31
+ if (entry === undefined) {
32
+ continue;
33
+ }
34
+ const list = specs.get(entry.namespace.name) ?? [];
35
+ list.push(createLazyElementSpec(context, element, entry));
36
+ specs.set(entry.namespace.name, list);
37
+ }
38
+ return specs;
39
+ };
40
+ export { lazyElementSpecs };
41
+ //# sourceMappingURL=element-prop-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element-prop-types.js","sourceRoot":"","sources":["../../../src/store/jsx/element-prop-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAoC,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAQtD,MAAM,wBAAwB,GAAG,CAAC,KAAe,EAAE,KAAe,EAAQ,EAAE;IACxE,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACtC,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,OAAiB,EAAE,KAAmB,EAAY,EAAE;IAC5E,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;QAC3C,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,OAAiB,EAAE,OAAe,EAAE,KAAmB,EAAmB,EAAE;IACvG,MAAM,QAAQ,GAAG,GAAG,OAAO,cAAc,CAAC;IAC1C,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC;IACrD,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,OAAO,CAAC,CAAC,CAAC,QAAQ,QAAQ,UAAU,SAAS,GAAG,CAAC;IAEhG,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,QAAQ,MAAM,IAAI,8BAA8B,EAAE,CAAC;AAC9G,CAAC,CAAC;AAEF,wFAAwF;AACxF,MAAM,gBAAgB,GAAG,CAAC,OAAiB,EAAE,YAAsB,EAAkC,EAAE;IACnG,MAAM,KAAK,GAAmC,IAAI,GAAG,EAAE,CAAC;IAExD,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEzC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,SAAS;QACb,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACnD,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAC1D,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF,OAAO,EAAE,gBAAgB,EAAwB,CAAC","sourcesContent":["import { toCamelIdentifier } from \"@gtkx/utils\";\nimport type { GirClass } from \"../../gir/class.js\";\nimport { getChain, type GirIndex, type GirTypeEntry } from \"./gir-index.js\";\nimport { getGlibName } from \"./intrinsic-elements.js\";\n\ntype LazyElementSpec = {\n element: string;\n typeName: string;\n typeSource: string;\n};\n\nconst appendConstructOnlyNames = (klass: GirClass, names: string[]): void => {\n for (const property of klass.properties) {\n if (property.constructOnly) {\n names.push(toCamelIdentifier(property.name));\n }\n }\n};\n\nconst constructOnlyNames = (context: GirIndex, entry: GirTypeEntry): string[] => {\n const names: string[] = [];\n\n for (const klass of getChain(context, entry)) {\n appendConstructOnlyNames(klass, names);\n }\n\n return names;\n};\n\nconst createLazyElementSpec = (context: GirIndex, element: string, entry: GirTypeEntry): LazyElementSpec => {\n const typeName = `${element}ElementProps`;\n const baseName = getGlibName(entry.klass) ?? element;\n const omitted = constructOnlyNames(context, entry);\n const omitUnion = omitted.map((name) => JSON.stringify(name)).join(\" | \");\n const base = omitted.length === 0 ? `${baseName}Props` : `Omit<${baseName}Props, ${omitUnion}>`;\n\n return { element, typeName, typeSource: `export type ${typeName} = ${base} & { children?: ReactNode };` };\n};\n\n/** Lazy element prop types to emit, grouped by the namespace declaring each element. */\nconst lazyElementSpecs = (context: GirIndex, lazyElements: string[]): Map<string, LazyElementSpec[]> => {\n const specs: Map<string, LazyElementSpec[]> = new Map();\n\n for (const element of lazyElements) {\n const entry = context.index.get(element);\n\n if (entry === undefined) {\n continue;\n }\n\n const list = specs.get(entry.namespace.name) ?? [];\n list.push(createLazyElementSpec(context, element, entry));\n specs.set(entry.namespace.name, list);\n }\n\n return specs;\n};\n\nexport { lazyElementSpecs, type LazyElementSpec };\n"]}
@@ -0,0 +1,16 @@
1
+ import type { GirClass } from "../../gir/class.js";
2
+ import type { Library } from "../../gir/library.js";
3
+ import type { GirNamespace } from "../../gir/namespace.js";
4
+ type GirTypeEntry = {
5
+ klass: GirClass;
6
+ namespace: GirNamespace;
7
+ isInterface: boolean;
8
+ };
9
+ type GirIndex = {
10
+ library: Library;
11
+ index: Map<string, GirTypeEntry>;
12
+ };
13
+ declare const buildGirIndex: (library: Library) => GirIndex;
14
+ declare const getChain: (context: GirIndex, entry: GirTypeEntry) => GirClass[];
15
+ export { buildGirIndex, getChain, type GirTypeEntry, type GirIndex };
16
+ //# sourceMappingURL=gir-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gir-index.d.ts","sourceRoot":"","sources":["../../../src/store/jsx/gir-index.ts"],"names":[],"mappings":"AAAA,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;AAI3D,KAAK,YAAY,GAAG;IAChB,KAAK,EAAE,QAAQ,CAAC;IAChB,SAAS,EAAE,YAAY,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,KAAK,QAAQ,GAAG;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CACpC,CAAC;AAiBF,QAAA,MAAM,aAAa,GAAI,SAAS,OAAO,KAAG,QASzC,CAAC;AAEF,QAAA,MAAM,QAAQ,GAAI,SAAS,QAAQ,EAAE,OAAO,YAAY,KAAG,QAAQ,EAgBlE,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,YAAY,EAAE,KAAK,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { ancestorChain } from "../../gir/ancestry.js";
2
+ import { getGlibName, implementedInterfaces } from "./intrinsic-elements.js";
3
+ const indexClasses = (index, classes, namespace, isInterface) => {
4
+ for (const klass of classes) {
5
+ const glibName = getGlibName(klass);
6
+ if (glibName !== undefined && !index.has(glibName)) {
7
+ index.set(glibName, { klass, namespace, isInterface });
8
+ }
9
+ }
10
+ };
11
+ const buildGirIndex = (library) => {
12
+ const index = new Map();
13
+ for (const namespace of library.namespaces.values()) {
14
+ indexClasses(index, namespace.classes, namespace, false);
15
+ indexClasses(index, namespace.interfaces, namespace, true);
16
+ }
17
+ return { library, index };
18
+ };
19
+ const getChain = (context, entry) => {
20
+ if (entry.isInterface) {
21
+ return [entry.klass];
22
+ }
23
+ const chain = [];
24
+ for (const { klass } of ancestorChain(context.library, entry.klass, entry.namespace.name)) {
25
+ chain.push(klass);
26
+ }
27
+ for (const iface of implementedInterfaces(entry.klass, entry.namespace, context.library)) {
28
+ chain.push(iface.klass);
29
+ }
30
+ return chain;
31
+ };
32
+ export { buildGirIndex, getChain };
33
+ //# sourceMappingURL=gir-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gir-index.js","sourceRoot":"","sources":["../../../src/store/jsx/gir-index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAa7E,MAAM,YAAY,GAAG,CACjB,KAAgC,EAChC,OAA2B,EAC3B,SAAuB,EACvB,WAAoB,EAChB,EAAE;IACN,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QAEpC,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;QAC3D,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,OAAgB,EAAY,EAAE;IACjD,MAAM,KAAK,GAA8B,IAAI,GAAG,EAAE,CAAC;IAEnD,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;QAClD,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACzD,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,OAAiB,EAAE,KAAmB,EAAc,EAAE;IACpE,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,KAAK,GAAe,EAAE,CAAC;IAE7B,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACxF,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACvF,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAoC,CAAC","sourcesContent":["import type { GirClass } from \"../../gir/class.js\";\nimport type { Library } from \"../../gir/library.js\";\nimport type { GirNamespace } from \"../../gir/namespace.js\";\nimport { ancestorChain } from \"../../gir/ancestry.js\";\nimport { getGlibName, implementedInterfaces } from \"./intrinsic-elements.js\";\n\ntype GirTypeEntry = {\n klass: GirClass;\n namespace: GirNamespace;\n isInterface: boolean;\n};\n\ntype GirIndex = {\n library: Library;\n index: Map<string, GirTypeEntry>;\n};\n\nconst indexClasses = (\n index: Map<string, GirTypeEntry>,\n classes: Iterable<GirClass>,\n namespace: GirNamespace,\n isInterface: boolean,\n): void => {\n for (const klass of classes) {\n const glibName = getGlibName(klass);\n\n if (glibName !== undefined && !index.has(glibName)) {\n index.set(glibName, { klass, namespace, isInterface });\n }\n }\n};\n\nconst buildGirIndex = (library: Library): GirIndex => {\n const index: Map<string, GirTypeEntry> = new Map();\n\n for (const namespace of library.namespaces.values()) {\n indexClasses(index, namespace.classes, namespace, false);\n indexClasses(index, namespace.interfaces, namespace, true);\n }\n\n return { library, index };\n};\n\nconst getChain = (context: GirIndex, entry: GirTypeEntry): GirClass[] => {\n if (entry.isInterface) {\n return [entry.klass];\n }\n\n const chain: GirClass[] = [];\n\n for (const { klass } of ancestorChain(context.library, entry.klass, entry.namespace.name)) {\n chain.push(klass);\n }\n\n for (const iface of implementedInterfaces(entry.klass, entry.namespace, context.library)) {\n chain.push(iface.klass);\n }\n\n return chain;\n};\n\nexport { buildGirIndex, getChain, type GirTypeEntry, type GirIndex };\n"]}
@@ -0,0 +1,27 @@
1
+ import type { GirClass } from "../../gir/class.js";
2
+ import type { Library } from "../../gir/library.js";
3
+ import type { GirNamespace } from "../../gir/namespace.js";
4
+ type GlibNamedClass = {
5
+ glibName: string;
6
+ klass: GirClass;
7
+ namespace: GirNamespace;
8
+ };
9
+ type ResolvedQualifiedInterface = {
10
+ klass: GirClass;
11
+ namespace: GirNamespace;
12
+ };
13
+ type HasContainerProps = (glibName: string | undefined) => boolean;
14
+ declare const signalHandlerName: (signalName: string) => string;
15
+ declare function iterateClassesWithGlibName(library: Library): IterableIterator<GlibNamedClass>;
16
+ declare const implementedInterfaces: (klass: GirClass, namespace: GirNamespace, library: Library) => ResolvedQualifiedInterface[];
17
+ declare const getGlibName: (klass: GirClass) => string | undefined;
18
+ declare const giNamespaceAlias: (namespaceName: string) => string;
19
+ declare const hasInterfacePropsBody: (klass: GirClass, hasContainerProps?: HasContainerProps) => boolean;
20
+ declare const newlyImplementedInterfaces: (klass: GirClass, namespace: GirNamespace, library: Library, hasContainerProps?: HasContainerProps) => ResolvedQualifiedInterface[];
21
+ declare const collectInterfacePropsClasses: (library: Library, intrinsicElements: GlibNamedClass[], targetNamespaceName: string, hasContainerProps?: HasContainerProps) => ResolvedQualifiedInterface[];
22
+ declare const ancestorGlibNames: (klass: GirClass, namespace: GirNamespace, library: Library) => string[];
23
+ declare const hasExposedMethod: (klass: GirClass, namespace: GirNamespace, library: Library, methodName: string) => boolean;
24
+ declare const isIntrinsicElementClass: (klass: GirClass, namespace: GirNamespace, library: Library) => boolean;
25
+ declare const collectIntrinsicElementClasses: (library: Library) => GlibNamedClass[];
26
+ export { signalHandlerName, iterateClassesWithGlibName, implementedInterfaces, getGlibName, giNamespaceAlias, hasInterfacePropsBody, newlyImplementedInterfaces, collectInterfacePropsClasses, ancestorGlibNames, hasExposedMethod, isIntrinsicElementClass, collectIntrinsicElementClasses, type GlibNamedClass, type ResolvedQualifiedInterface, type HasContainerProps, };
27
+ //# sourceMappingURL=intrinsic-elements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intrinsic-elements.d.ts","sourceRoot":"","sources":["../../../src/store/jsx/intrinsic-elements.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;AAG3D,KAAK,cAAc,GAAG;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,QAAQ,CAAC;IAChB,SAAS,EAAE,YAAY,CAAC;CAC3B,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAAE,KAAK,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,YAAY,CAAA;CAAE,CAAC;AAQ/E,KAAK,iBAAiB,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,CAAC;AAUnE,QAAA,MAAM,iBAAiB,GAAI,YAAY,MAAM,KAAG,MAA0D,CAAC;AAc3G,iBAAU,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAIvF;AA0BD,QAAA,MAAM,qBAAqB,GACvB,OAAO,QAAQ,EACf,WAAW,YAAY,EACvB,SAAS,OAAO,KACjB,0BAA0B,EAK5B,CAAC;AAEF,QAAA,MAAM,WAAW,GAAI,OAAO,QAAQ,KAAG,MAAM,GAAG,SAA8C,CAAC;AAC/F,QAAA,MAAM,gBAAgB,GAAI,eAAe,MAAM,KAAG,MAA6B,CAAC;AAGhF,QAAA,MAAM,qBAAqB,GACvB,OAAO,QAAQ,EACf,oBAAmB,iBAAuC,KAC3D,OAA2G,CAAC;AA+B/G,QAAA,MAAM,0BAA0B,GAC5B,OAAO,QAAQ,EACf,WAAW,YAAY,EACvB,SAAS,OAAO,EAChB,oBAAmB,iBAAuC,KAC3D,0BAA0B,EAS5B,CAAC;AAoBF,QAAA,MAAM,4BAA4B,GAC9B,SAAS,OAAO,EAChB,mBAAmB,cAAc,EAAE,EACnC,qBAAqB,MAAM,EAC3B,oBAAmB,iBAAuC,KAC3D,0BAA0B,EAc5B,CAAC;AAEF,QAAA,MAAM,iBAAiB,GAAI,OAAO,QAAQ,EAAE,WAAW,YAAY,EAAE,SAAS,OAAO,KAAG,MAAM,EAY7F,CAAC;AA0BF,QAAA,MAAM,gBAAgB,GAClB,OAAO,QAAQ,EACf,WAAW,YAAY,EACvB,SAAS,OAAO,EAChB,YAAY,MAAM,KACnB,OACgH,CAAC;AAEpH,QAAA,MAAM,uBAAuB,GAAI,OAAO,QAAQ,EAAE,WAAW,YAAY,EAAE,SAAS,OAAO,KAAG,OACF,CAAC;AAE7F,QAAA,MAAM,8BAA8B,GAAI,SAAS,OAAO,KAAG,cAAc,EAgBxE,CAAC;AAEF,OAAO,EACH,iBAAiB,EACjB,0BAA0B,EAC1B,qBAAqB,EACrB,WAAW,EACX,gBAAgB,EAChB,qBAAqB,EACrB,0BAA0B,EAC1B,4BAA4B,EAC5B,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,8BAA8B,EAC9B,KAAK,cAAc,EACnB,KAAK,0BAA0B,EAC/B,KAAK,iBAAiB,GACzB,CAAC"}
@@ -0,0 +1,128 @@
1
+ import { sortStringsBy, toCamelIdentifier, upperFirst } from "@gtkx/utils";
2
+ import { ancestorChain } from "../../gir/ancestry.js";
3
+ const signalHandlerName = (signalName) => `on${upperFirst(toCamelIdentifier(signalName))}`;
4
+ function* classesWithGlibNameIn(namespace) {
5
+ for (const klass of namespace.classes) {
6
+ const glibName = getGlibName(klass);
7
+ if (glibName === undefined) {
8
+ continue;
9
+ }
10
+ yield { glibName, klass, namespace };
11
+ }
12
+ }
13
+ function* iterateClassesWithGlibName(library) {
14
+ for (const namespace of library.namespaces.values()) {
15
+ yield* classesWithGlibNameIn(namespace);
16
+ }
17
+ }
18
+ function collectImplementedInterface(state, name, fromNamespace) {
19
+ const resolved = state.library.resolveType(fromNamespace.name, name);
20
+ if (resolved?.kind !== "interface") {
21
+ return;
22
+ }
23
+ const key = `${resolved.namespace.name}.${resolved.value.name}`;
24
+ if (state.visited.has(key)) {
25
+ return;
26
+ }
27
+ state.visited.add(key);
28
+ state.result.push({ klass: resolved.value, namespace: resolved.namespace });
29
+ visitImplementedInterfaces(state, resolved.value.prerequisites, resolved.namespace);
30
+ }
31
+ function visitImplementedInterfaces(state, names, fromNamespace) {
32
+ for (const name of names) {
33
+ collectImplementedInterface(state, name, fromNamespace);
34
+ }
35
+ }
36
+ const implementedInterfaces = (klass, namespace, library) => {
37
+ const state = { library, visited: new Set(), result: [] };
38
+ visitImplementedInterfaces(state, klass.implements, namespace);
39
+ return state.result;
40
+ };
41
+ const getGlibName = (klass) => klass.glibTypeName ?? klass.cType;
42
+ const giNamespaceAlias = (namespaceName) => `${namespaceName}$`;
43
+ const hasNoContainerProps = () => false;
44
+ const hasInterfacePropsBody = (klass, hasContainerProps = hasNoContainerProps) => klass.properties.length > 0 || klass.signals.length > 0 || hasContainerProps(getGlibName(klass));
45
+ const qualifiedInterfaceKey = (iface) => `${iface.namespace.name}.${iface.klass.name}`;
46
+ const isCollectibleInterface = (iface, targetNamespaceName, hasContainerProps) => hasInterfacePropsBody(iface.klass, hasContainerProps) && iface.namespace.name === targetNamespaceName;
47
+ const parentImplementedInterfaceKeys = (klass, namespace, library) => {
48
+ const keys = new Set();
49
+ if (klass.parent === undefined) {
50
+ return keys;
51
+ }
52
+ const resolvedParent = library.resolveType(namespace.name, klass.parent);
53
+ if (resolvedParent?.kind !== "class") {
54
+ return keys;
55
+ }
56
+ for (const iface of implementedInterfaces(resolvedParent.value, resolvedParent.namespace, library)) {
57
+ keys.add(qualifiedInterfaceKey(iface));
58
+ }
59
+ return keys;
60
+ };
61
+ const newlyImplementedInterfaces = (klass, namespace, library, hasContainerProps = hasNoContainerProps) => {
62
+ const inherited = parentImplementedInterfaceKeys(klass, namespace, library);
63
+ const own = implementedInterfaces(klass, namespace, library).filter((iface) => hasInterfacePropsBody(iface.klass, hasContainerProps) && !inherited.has(qualifiedInterfaceKey(iface)));
64
+ return sortStringsBy(own, qualifiedInterfaceKey);
65
+ };
66
+ const collectInterfacePropsFromElement = (element, collector) => {
67
+ const { library, targetNamespaceName, hasContainerProps, seen, result } = collector;
68
+ for (const iface of implementedInterfaces(element.klass, element.namespace, library)) {
69
+ const key = qualifiedInterfaceKey(iface);
70
+ if (seen.has(key)) {
71
+ continue;
72
+ }
73
+ seen.add(key);
74
+ if (isCollectibleInterface(iface, targetNamespaceName, hasContainerProps)) {
75
+ result.push(iface);
76
+ }
77
+ }
78
+ };
79
+ const collectInterfacePropsClasses = (library, intrinsicElements, targetNamespaceName, hasContainerProps = hasNoContainerProps) => {
80
+ const collector = {
81
+ library,
82
+ targetNamespaceName,
83
+ hasContainerProps,
84
+ seen: new Set(),
85
+ result: [],
86
+ };
87
+ for (const element of intrinsicElements) {
88
+ collectInterfacePropsFromElement(element, collector);
89
+ }
90
+ return sortStringsBy(collector.result, qualifiedInterfaceKey);
91
+ };
92
+ const ancestorGlibNames = (klass, namespace, library) => {
93
+ const names = [];
94
+ for (const { klass: ancestor } of ancestorChain(library, klass, namespace.name)) {
95
+ const glibName = getGlibName(ancestor);
96
+ if (glibName !== undefined) {
97
+ names.push(glibName);
98
+ }
99
+ }
100
+ return names;
101
+ };
102
+ const hasMatchingAncestor = (klass, namespace, library, isMatch) => {
103
+ for (const { klass: ancestor } of ancestorChain(library, klass, namespace.name)) {
104
+ const glibName = getGlibName(ancestor) ?? "";
105
+ if (isMatch(ancestor, glibName)) {
106
+ return true;
107
+ }
108
+ }
109
+ return false;
110
+ };
111
+ const hasMatchingAncestorName = (klass, namespace, library, isMatch) => hasMatchingAncestor(klass, namespace, library, (_klass, glibName) => isMatch(glibName));
112
+ const hasExposedMethod = (klass, namespace, library, methodName) => hasMatchingAncestor(klass, namespace, library, (current) => current.methods.some((m) => m.name === methodName));
113
+ const isIntrinsicElementClass = (klass, namespace, library) => hasMatchingAncestorName(klass, namespace, library, (glibName) => glibName === "GObject");
114
+ const collectIntrinsicElementClasses = (library) => {
115
+ const seen = new Set();
116
+ const entries = [];
117
+ for (const candidate of iterateClassesWithGlibName(library)) {
118
+ const { glibName, klass, namespace } = candidate;
119
+ if (!isIntrinsicElementClass(klass, namespace, library) || seen.has(glibName)) {
120
+ continue;
121
+ }
122
+ seen.add(glibName);
123
+ entries.push(candidate);
124
+ }
125
+ return sortStringsBy(entries, (entry) => entry.glibName);
126
+ };
127
+ export { signalHandlerName, iterateClassesWithGlibName, implementedInterfaces, getGlibName, giNamespaceAlias, hasInterfacePropsBody, newlyImplementedInterfaces, collectInterfacePropsClasses, ancestorGlibNames, hasExposedMethod, isIntrinsicElementClass, collectIntrinsicElementClasses, };
128
+ //# sourceMappingURL=intrinsic-elements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intrinsic-elements.js","sourceRoot":"","sources":["../../../src/store/jsx/intrinsic-elements.ts"],"names":[],"mappings":"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","sourcesContent":["import { sortStringsBy, toCamelIdentifier, upperFirst } from \"@gtkx/utils\";\nimport type { GirClass } from \"../../gir/class.js\";\nimport type { Library } from \"../../gir/library.js\";\nimport type { GirNamespace } from \"../../gir/namespace.js\";\nimport { ancestorChain } from \"../../gir/ancestry.js\";\n\ntype GlibNamedClass = {\n glibName: string;\n klass: GirClass;\n namespace: GirNamespace;\n};\n\ntype ResolvedQualifiedInterface = { klass: GirClass; namespace: GirNamespace };\n\ntype InterfaceVisitState = {\n library: Library;\n visited: Set<string>;\n result: ResolvedQualifiedInterface[];\n};\n\ntype HasContainerProps = (glibName: string | undefined) => boolean;\n\ntype InterfacePropsCollector = {\n library: Library;\n targetNamespaceName: string;\n hasContainerProps: HasContainerProps;\n seen: Set<string>;\n result: ResolvedQualifiedInterface[];\n};\n\nconst signalHandlerName = (signalName: string): string => `on${upperFirst(toCamelIdentifier(signalName))}`;\n\nfunction* classesWithGlibNameIn(namespace: GirNamespace): IterableIterator<GlibNamedClass> {\n for (const klass of namespace.classes) {\n const glibName = getGlibName(klass);\n\n if (glibName === undefined) {\n continue;\n }\n\n yield { glibName, klass, namespace };\n }\n}\n\nfunction* iterateClassesWithGlibName(library: Library): IterableIterator<GlibNamedClass> {\n for (const namespace of library.namespaces.values()) {\n yield* classesWithGlibNameIn(namespace);\n }\n}\n\nfunction collectImplementedInterface(state: InterfaceVisitState, name: string, fromNamespace: GirNamespace): void {\n const resolved = state.library.resolveType(fromNamespace.name, name);\n\n if (resolved?.kind !== \"interface\") {\n return;\n }\n\n const key = `${resolved.namespace.name}.${resolved.value.name}`;\n\n if (state.visited.has(key)) {\n return;\n }\n\n state.visited.add(key);\n state.result.push({ klass: resolved.value, namespace: resolved.namespace });\n visitImplementedInterfaces(state, resolved.value.prerequisites, resolved.namespace);\n}\n\nfunction visitImplementedInterfaces(state: InterfaceVisitState, names: string[], fromNamespace: GirNamespace): void {\n for (const name of names) {\n collectImplementedInterface(state, name, fromNamespace);\n }\n}\n\nconst implementedInterfaces = (\n klass: GirClass,\n namespace: GirNamespace,\n library: Library,\n): ResolvedQualifiedInterface[] => {\n const state: InterfaceVisitState = { library, visited: new Set<string>(), result: [] };\n visitImplementedInterfaces(state, klass.implements, namespace);\n\n return state.result;\n};\n\nconst getGlibName = (klass: GirClass): string | undefined => klass.glibTypeName ?? klass.cType;\nconst giNamespaceAlias = (namespaceName: string): string => `${namespaceName}$`;\nconst hasNoContainerProps: HasContainerProps = () => false;\n\nconst hasInterfacePropsBody = (\n klass: GirClass,\n hasContainerProps: HasContainerProps = hasNoContainerProps,\n): boolean => klass.properties.length > 0 || klass.signals.length > 0 || hasContainerProps(getGlibName(klass));\n\nconst qualifiedInterfaceKey = (iface: ResolvedQualifiedInterface): string =>\n `${iface.namespace.name}.${iface.klass.name}`;\n\nconst isCollectibleInterface = (\n iface: ResolvedQualifiedInterface,\n targetNamespaceName: string,\n hasContainerProps: HasContainerProps,\n): boolean => hasInterfacePropsBody(iface.klass, hasContainerProps) && iface.namespace.name === targetNamespaceName;\n\nconst parentImplementedInterfaceKeys = (klass: GirClass, namespace: GirNamespace, library: Library): Set<string> => {\n const keys: Set<string> = new Set();\n\n if (klass.parent === undefined) {\n return keys;\n }\n\n const resolvedParent = library.resolveType(namespace.name, klass.parent);\n\n if (resolvedParent?.kind !== \"class\") {\n return keys;\n }\n\n for (const iface of implementedInterfaces(resolvedParent.value, resolvedParent.namespace, library)) {\n keys.add(qualifiedInterfaceKey(iface));\n }\n\n return keys;\n};\n\nconst newlyImplementedInterfaces = (\n klass: GirClass,\n namespace: GirNamespace,\n library: Library,\n hasContainerProps: HasContainerProps = hasNoContainerProps,\n): ResolvedQualifiedInterface[] => {\n const inherited = parentImplementedInterfaceKeys(klass, namespace, library);\n\n const own = implementedInterfaces(klass, namespace, library).filter(\n (iface) =>\n hasInterfacePropsBody(iface.klass, hasContainerProps) && !inherited.has(qualifiedInterfaceKey(iface)),\n );\n\n return sortStringsBy(own, qualifiedInterfaceKey);\n};\n\nconst collectInterfacePropsFromElement = (element: GlibNamedClass, collector: InterfacePropsCollector): void => {\n const { library, targetNamespaceName, hasContainerProps, seen, result } = collector;\n\n for (const iface of implementedInterfaces(element.klass, element.namespace, library)) {\n const key = qualifiedInterfaceKey(iface);\n\n if (seen.has(key)) {\n continue;\n }\n\n seen.add(key);\n\n if (isCollectibleInterface(iface, targetNamespaceName, hasContainerProps)) {\n result.push(iface);\n }\n }\n};\n\nconst collectInterfacePropsClasses = (\n library: Library,\n intrinsicElements: GlibNamedClass[],\n targetNamespaceName: string,\n hasContainerProps: HasContainerProps = hasNoContainerProps,\n): ResolvedQualifiedInterface[] => {\n const collector: InterfacePropsCollector = {\n library,\n targetNamespaceName,\n hasContainerProps,\n seen: new Set<string>(),\n result: [],\n };\n\n for (const element of intrinsicElements) {\n collectInterfacePropsFromElement(element, collector);\n }\n\n return sortStringsBy(collector.result, qualifiedInterfaceKey);\n};\n\nconst ancestorGlibNames = (klass: GirClass, namespace: GirNamespace, library: Library): string[] => {\n const names: string[] = [];\n\n for (const { klass: ancestor } of ancestorChain(library, klass, namespace.name)) {\n const glibName = getGlibName(ancestor);\n\n if (glibName !== undefined) {\n names.push(glibName);\n }\n }\n\n return names;\n};\n\nconst hasMatchingAncestor = (\n klass: GirClass,\n namespace: GirNamespace,\n library: Library,\n isMatch: (klass: GirClass, glibName: string) => boolean,\n): boolean => {\n for (const { klass: ancestor } of ancestorChain(library, klass, namespace.name)) {\n const glibName = getGlibName(ancestor) ?? \"\";\n\n if (isMatch(ancestor, glibName)) {\n return true;\n }\n }\n\n return false;\n};\n\nconst hasMatchingAncestorName = (\n klass: GirClass,\n namespace: GirNamespace,\n library: Library,\n isMatch: (glibName: string) => boolean,\n): boolean => hasMatchingAncestor(klass, namespace, library, (_klass, glibName) => isMatch(glibName));\n\nconst hasExposedMethod = (\n klass: GirClass,\n namespace: GirNamespace,\n library: Library,\n methodName: string,\n): boolean =>\n hasMatchingAncestor(klass, namespace, library, (current) => current.methods.some((m) => m.name === methodName));\n\nconst isIntrinsicElementClass = (klass: GirClass, namespace: GirNamespace, library: Library): boolean =>\n hasMatchingAncestorName(klass, namespace, library, (glibName) => glibName === \"GObject\");\n\nconst collectIntrinsicElementClasses = (library: Library): GlibNamedClass[] => {\n const seen: Set<string> = new Set();\n const entries: GlibNamedClass[] = [];\n\n for (const candidate of iterateClassesWithGlibName(library)) {\n const { glibName, klass, namespace } = candidate;\n\n if (!isIntrinsicElementClass(klass, namespace, library) || seen.has(glibName)) {\n continue;\n }\n\n seen.add(glibName);\n entries.push(candidate);\n }\n\n return sortStringsBy(entries, (entry) => entry.glibName);\n};\n\nexport {\n signalHandlerName,\n iterateClassesWithGlibName,\n implementedInterfaces,\n getGlibName,\n giNamespaceAlias,\n hasInterfacePropsBody,\n newlyImplementedInterfaces,\n collectInterfacePropsClasses,\n ancestorGlibNames,\n hasExposedMethod,\n isIntrinsicElementClass,\n collectIntrinsicElementClasses,\n type GlibNamedClass,\n type ResolvedQualifiedInterface,\n type HasContainerProps,\n};\n"]}
@@ -0,0 +1,16 @@
1
+ import type { Library } from "../../gir/library.js";
2
+ import type { GirNamespace } from "../../gir/namespace.js";
3
+ import type { ImportsBuilder } from "../../writer/imports.js";
4
+ import { type GlibNamedClass } from "./intrinsic-elements.js";
5
+ type GenerateJsxOptions = {
6
+ excludeNames: Set<string>;
7
+ imports: ImportsBuilder;
8
+ intrinsicElements: GlibNamedClass[];
9
+ intrinsicElementByGlibName: Map<string, GlibNamedClass>;
10
+ };
11
+ declare const generateJsxSection: (targetNamespace: GirNamespace, library: Library, options: GenerateJsxOptions) => {
12
+ source: string;
13
+ intrinsicCount: number;
14
+ };
15
+ export { generateJsxSection };
16
+ //# sourceMappingURL=jsx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsx.d.ts","sourceRoot":"","sources":["../../../src/store/jsx/jsx.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAI9D,OAAO,EAIH,KAAK,cAAc,EAKtB,MAAM,yBAAyB,CAAC;AAGjC,KAAK,kBAAkB,GAAG;IACtB,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,OAAO,EAAE,cAAc,CAAC;IACxB,iBAAiB,EAAE,cAAc,EAAE,CAAC;IACpC,0BAA0B,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAC3D,CAAC;AAgEF,QAAA,MAAM,kBAAkB,GACpB,iBAAiB,YAAY,EAC7B,SAAS,OAAO,EAChB,SAAS,kBAAkB,KAC5B;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAoD1C,CAAC;AAsQF,OAAO,EAAE,kBAAkB,EAAE,CAAC"}