@gtkx/codegen 1.0.0-rc.1 → 1.0.0-rc.3

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 (531) hide show
  1. package/dist/analysis/descriptor-render.d.ts +20 -11
  2. package/dist/analysis/descriptor-render.d.ts.map +1 -1
  3. package/dist/analysis/descriptor-render.js +296 -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 +71 -29
  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 +192 -123
  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 +69 -133
  32. package/dist/docs/element-page.js.map +1 -1
  33. package/dist/docs/pipeline.d.ts +10 -7
  34. package/dist/docs/pipeline.d.ts.map +1 -1
  35. package/dist/docs/pipeline.js +81 -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 +29 -5
  46. package/dist/fingerprint.d.ts.map +1 -1
  47. package/dist/fingerprint.js +69 -13
  48. package/dist/fingerprint.js.map +1 -1
  49. package/dist/gi.d.ts +18 -0
  50. package/dist/gi.d.ts.map +1 -0
  51. package/dist/gi.js +23 -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 +5 -3
  82. package/dist/gir/libraries.d.ts.map +1 -1
  83. package/dist/gir/libraries.js +41 -28
  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 +3 -0
  133. package/dist/index.d.ts.map +1 -1
  134. package/dist/index.js +2 -0
  135. package/dist/index.js.map +1 -1
  136. package/dist/jsx.d.ts +28 -0
  137. package/dist/jsx.d.ts.map +1 -0
  138. package/dist/jsx.js +44 -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 +20 -0
  181. package/dist/react/element-config.d.ts.map +1 -0
  182. package/dist/react/element-config.js +64 -0
  183. package/dist/react/element-config.js.map +1 -0
  184. package/dist/runner.d.ts +19 -10
  185. package/dist/runner.d.ts.map +1 -1
  186. package/dist/runner.js +48 -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 +157 -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.d.ts +2 -1
  205. package/dist/store/gi/class.d.ts.map +1 -1
  206. package/dist/store/gi/class.js +86 -47
  207. package/dist/store/gi/class.js.map +1 -1
  208. package/dist/store/gi/companion.d.ts +2 -1
  209. package/dist/store/gi/companion.d.ts.map +1 -1
  210. package/dist/store/gi/companion.js +8 -5
  211. package/dist/store/gi/companion.js.map +1 -1
  212. package/dist/store/gi/constant.d.ts +3 -2
  213. package/dist/store/gi/constant.d.ts.map +1 -1
  214. package/dist/store/gi/constant.js +25 -8
  215. package/dist/store/gi/constant.js.map +1 -1
  216. package/dist/store/gi/constructor-props.d.ts +3 -2
  217. package/dist/store/gi/constructor-props.d.ts.map +1 -1
  218. package/dist/store/gi/constructor-props.js +17 -10
  219. package/dist/store/gi/constructor-props.js.map +1 -1
  220. package/dist/store/gi/enum.d.ts +3 -2
  221. package/dist/store/gi/enum.d.ts.map +1 -1
  222. package/dist/store/gi/enum.js +14 -11
  223. package/dist/store/gi/enum.js.map +1 -1
  224. package/dist/store/gi/function.d.ts +5 -4
  225. package/dist/store/gi/function.d.ts.map +1 -1
  226. package/dist/store/gi/function.js +48 -23
  227. package/dist/store/gi/function.js.map +1 -1
  228. package/dist/store/gi/gtype-binding.d.ts +4 -4
  229. package/dist/store/gi/gtype-binding.d.ts.map +1 -1
  230. package/dist/store/gi/gtype-binding.js +15 -11
  231. package/dist/store/gi/gtype-binding.js.map +1 -1
  232. package/dist/store/gi/interface.d.ts +2 -1
  233. package/dist/store/gi/interface.d.ts.map +1 -1
  234. package/dist/store/gi/interface.js +36 -18
  235. package/dist/store/gi/interface.js.map +1 -1
  236. package/dist/store/gi/item-comparators.d.ts +3 -2
  237. package/dist/store/gi/item-comparators.d.ts.map +1 -1
  238. package/dist/store/gi/item-comparators.js +33 -21
  239. package/dist/store/gi/item-comparators.js.map +1 -1
  240. package/dist/store/gi/method.d.ts +13 -13
  241. package/dist/store/gi/method.d.ts.map +1 -1
  242. package/dist/store/gi/method.js +188 -130
  243. package/dist/store/gi/method.js.map +1 -1
  244. package/dist/store/gi/param-marshal.d.ts +7 -6
  245. package/dist/store/gi/param-marshal.d.ts.map +1 -1
  246. package/dist/store/gi/param-marshal.js +26 -13
  247. package/dist/store/gi/param-marshal.js.map +1 -1
  248. package/dist/store/gi/pipeline.d.ts +2 -1
  249. package/dist/store/gi/pipeline.d.ts.map +1 -1
  250. package/dist/store/gi/pipeline.js +38 -23
  251. package/dist/store/gi/pipeline.js.map +1 -1
  252. package/dist/store/gi/properties.d.ts +2 -1
  253. package/dist/store/gi/properties.d.ts.map +1 -1
  254. package/dist/store/gi/properties.js +6 -4
  255. package/dist/store/gi/properties.js.map +1 -1
  256. package/dist/store/gi/property-accessor.d.ts +11 -10
  257. package/dist/store/gi/property-accessor.d.ts.map +1 -1
  258. package/dist/store/gi/property-accessor.js +86 -60
  259. package/dist/store/gi/property-accessor.js.map +1 -1
  260. package/dist/store/gi/record-constructor.d.ts +3 -2
  261. package/dist/store/gi/record-constructor.d.ts.map +1 -1
  262. package/dist/store/gi/record-constructor.js +40 -28
  263. package/dist/store/gi/record-constructor.js.map +1 -1
  264. package/dist/store/gi/record-field-accessor.d.ts +9 -8
  265. package/dist/store/gi/record-field-accessor.d.ts.map +1 -1
  266. package/dist/store/gi/record-field-accessor.js +187 -99
  267. package/dist/store/gi/record-field-accessor.js.map +1 -1
  268. package/dist/store/gi/record-layout.d.ts +6 -5
  269. package/dist/store/gi/record-layout.d.ts.map +1 -1
  270. package/dist/store/gi/record-layout.js +75 -39
  271. package/dist/store/gi/record-layout.js.map +1 -1
  272. package/dist/store/gi/record.d.ts +2 -1
  273. package/dist/store/gi/record.d.ts.map +1 -1
  274. package/dist/store/gi/record.js +15 -16
  275. package/dist/store/gi/record.js.map +1 -1
  276. package/dist/store/gi/registration.d.ts +3 -3
  277. package/dist/store/gi/registration.d.ts.map +1 -1
  278. package/dist/store/gi/registration.js +3 -2
  279. package/dist/store/gi/registration.js.map +1 -1
  280. package/dist/store/gi/return-wrap.d.ts +2 -2
  281. package/dist/store/gi/return-wrap.d.ts.map +1 -1
  282. package/dist/store/gi/return-wrap.js +43 -22
  283. package/dist/store/gi/return-wrap.js.map +1 -1
  284. package/dist/store/gi/runtime-override.d.ts +2 -1
  285. package/dist/store/gi/runtime-override.d.ts.map +1 -1
  286. package/dist/store/gi/runtime-override.js +6 -3
  287. package/dist/store/gi/runtime-override.js.map +1 -1
  288. package/dist/store/gi/signal.d.ts +3 -2
  289. package/dist/store/gi/signal.d.ts.map +1 -1
  290. package/dist/store/gi/signal.js +113 -66
  291. package/dist/store/gi/signal.js.map +1 -1
  292. package/dist/store/gi/value-marshalable.d.ts +15 -0
  293. package/dist/store/gi/value-marshalable.d.ts.map +1 -0
  294. package/dist/store/gi/value-marshalable.js +66 -0
  295. package/dist/store/gi/value-marshalable.js.map +1 -0
  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 +26 -0
  321. package/dist/store/jsx/intrinsic-elements.d.ts.map +1 -0
  322. package/dist/store/jsx/intrinsic-elements.js +127 -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/omitted-props.d.ts +10 -0
  333. package/dist/store/jsx/omitted-props.d.ts.map +1 -0
  334. package/dist/store/jsx/omitted-props.js +22 -0
  335. package/dist/store/jsx/omitted-props.js.map +1 -0
  336. package/dist/store/jsx/pipeline.d.ts +23 -0
  337. package/dist/store/jsx/pipeline.d.ts.map +1 -0
  338. package/dist/store/{react → jsx}/pipeline.js +38 -15
  339. package/dist/store/jsx/pipeline.js.map +1 -0
  340. package/dist/store/{react → jsx}/props.d.ts +9 -12
  341. package/dist/store/jsx/props.d.ts.map +1 -0
  342. package/dist/store/jsx/props.js +153 -0
  343. package/dist/store/jsx/props.js.map +1 -0
  344. package/dist/store/jsx-store.d.ts +5 -3
  345. package/dist/store/jsx-store.d.ts.map +1 -1
  346. package/dist/store/jsx-store.js +4 -1
  347. package/dist/store/jsx-store.js.map +1 -1
  348. package/dist/store/store-fs.d.ts +14 -12
  349. package/dist/store/store-fs.d.ts.map +1 -1
  350. package/dist/store/store-fs.js +9 -7
  351. package/dist/store/store-fs.js.map +1 -1
  352. package/dist/writer/context.d.ts +2 -1
  353. package/dist/writer/context.d.ts.map +1 -1
  354. package/dist/writer/context.js +12 -6
  355. package/dist/writer/context.js.map +1 -1
  356. package/dist/writer/doc.d.ts +2 -1
  357. package/dist/writer/doc.d.ts.map +1 -1
  358. package/dist/writer/doc.js +13 -7
  359. package/dist/writer/doc.js.map +1 -1
  360. package/dist/writer/emit.d.ts +8 -7
  361. package/dist/writer/emit.d.ts.map +1 -1
  362. package/dist/writer/emit.js +13 -10
  363. package/dist/writer/emit.js.map +1 -1
  364. package/dist/writer/gtk-doc.d.ts +2 -1
  365. package/dist/writer/gtk-doc.d.ts.map +1 -1
  366. package/dist/writer/gtk-doc.js +29 -18
  367. package/dist/writer/gtk-doc.js.map +1 -1
  368. package/dist/writer/imports.d.ts +4 -2
  369. package/dist/writer/imports.d.ts.map +1 -1
  370. package/dist/writer/imports.js +35 -24
  371. package/dist/writer/imports.js.map +1 -1
  372. package/dist/writer/module.d.ts +3 -2
  373. package/dist/writer/module.d.ts.map +1 -1
  374. package/dist/writer/module.js +16 -9
  375. package/dist/writer/module.js.map +1 -1
  376. package/dist/xml.d.ts +4 -0
  377. package/dist/xml.d.ts.map +1 -0
  378. package/dist/xml.js +10 -0
  379. package/dist/xml.js.map +1 -0
  380. package/overrides/cairo/context.ts.ejs +7 -7
  381. package/overrides/cairo/matrix.ts.ejs +2 -2
  382. package/overrides/cairo/recording-surface.ts.ejs +2 -2
  383. package/overrides/cairo/region.ts.ejs +1 -1
  384. package/overrides/cairo/scaled-font.ts.ejs +3 -3
  385. package/package.json +14 -9
  386. package/src/analysis/descriptor-render.ts +516 -168
  387. package/src/analysis/descriptor.ts +162 -125
  388. package/src/analysis/inheritance.ts +286 -98
  389. package/src/analysis/param-structure.ts +188 -57
  390. package/src/analysis/ts-type.ts +113 -34
  391. package/src/compile.ts +103 -76
  392. package/src/docs/api-reference.ts +337 -146
  393. package/src/docs/element-page.ts +137 -150
  394. package/src/docs/pipeline.ts +135 -73
  395. package/src/docs/render.ts +151 -87
  396. package/src/docs/symbol-page.ts +268 -123
  397. package/src/fingerprint.ts +138 -26
  398. package/src/gi.ts +35 -0
  399. package/src/gir/ancestry.ts +26 -14
  400. package/src/gir/callback.ts +10 -15
  401. package/src/gir/class.ts +20 -16
  402. package/src/gir/enum.ts +9 -7
  403. package/src/gir/field.ts +37 -8
  404. package/src/gir/function.ts +33 -9
  405. package/src/gir/gir-path.ts +36 -12
  406. package/src/gir/libraries.ts +59 -33
  407. package/src/gir/library.ts +200 -97
  408. package/src/gir/namespace.ts +42 -26
  409. package/src/gir/nullable-overrides.ts +5 -0
  410. package/src/gir/parameter.ts +80 -42
  411. package/src/gir/parse.ts +102 -47
  412. package/src/gir/primitives.ts +25 -23
  413. package/src/gir/property.ts +13 -11
  414. package/src/gir/record.ts +16 -14
  415. package/src/gir/size.ts +91 -58
  416. package/src/gir/type-id.ts +33 -18
  417. package/src/gir/type-ref.ts +62 -26
  418. package/src/gir/type.ts +10 -8
  419. package/src/index.ts +8 -0
  420. package/src/jsx.ts +75 -0
  421. package/src/khronos/args.ts +158 -89
  422. package/src/khronos/jsdoc.ts +67 -29
  423. package/src/khronos/model.ts +154 -53
  424. package/src/khronos/modules.ts +67 -27
  425. package/src/khronos/param-pair.ts +14 -0
  426. package/src/khronos/parse.ts +37 -17
  427. package/src/khronos/pipeline.ts +193 -90
  428. package/src/khronos/plan.ts +235 -86
  429. package/src/khronos/render.ts +208 -71
  430. package/src/khronos/select.ts +48 -18
  431. package/src/react/element-config.ts +97 -0
  432. package/src/runner.ts +100 -57
  433. package/src/store/compile-store.ts +32 -26
  434. package/src/store/gi/async.ts +48 -21
  435. package/src/store/gi/callables.ts +339 -136
  436. package/src/store/gi/callback.ts +13 -4
  437. package/src/store/gi/class.ts +186 -64
  438. package/src/store/gi/companion.ts +15 -6
  439. package/src/store/gi/constant.ts +42 -8
  440. package/src/store/gi/constructor-props.ts +42 -16
  441. package/src/store/gi/enum.ts +28 -13
  442. package/src/store/gi/function.ts +88 -24
  443. package/src/store/gi/gtype-binding.ts +31 -18
  444. package/src/store/gi/interface.ts +101 -36
  445. package/src/store/gi/item-comparators.ts +74 -26
  446. package/src/store/gi/method.ts +377 -159
  447. package/src/store/gi/param-marshal.ts +38 -15
  448. package/src/store/gi/pipeline.ts +72 -22
  449. package/src/store/gi/properties.ts +16 -5
  450. package/src/store/gi/property-accessor.ts +192 -84
  451. package/src/store/gi/record-constructor.ts +70 -33
  452. package/src/store/gi/record-field-accessor.ts +415 -167
  453. package/src/store/gi/record-layout.ts +130 -43
  454. package/src/store/gi/record.ts +29 -15
  455. package/src/store/gi/registration.ts +15 -9
  456. package/src/store/gi/return-wrap.ts +71 -23
  457. package/src/store/gi/runtime-override.ts +13 -3
  458. package/src/store/gi/signal.ts +244 -104
  459. package/src/store/gi/value-marshalable.ts +96 -0
  460. package/src/store/gi/vtable.ts +117 -41
  461. package/src/store/gi-store.ts +26 -13
  462. package/src/store/jsx/element-components.ts +152 -0
  463. package/src/store/jsx/element-prop-imports.ts +24 -0
  464. package/src/store/jsx/element-prop-types.ts +59 -0
  465. package/src/store/jsx/gir-index.ts +62 -0
  466. package/src/store/jsx/intrinsic-elements.ts +253 -0
  467. package/src/store/{react → jsx}/jsx.ts +213 -99
  468. package/src/store/jsx/metadata.ts +385 -0
  469. package/src/store/jsx/omitted-props.ts +32 -0
  470. package/src/store/jsx/pipeline.ts +148 -0
  471. package/src/store/jsx/props.ts +262 -0
  472. package/src/store/jsx-store.ts +15 -3
  473. package/src/store/store-fs.ts +36 -20
  474. package/src/writer/context.ts +25 -6
  475. package/src/writer/doc.ts +19 -5
  476. package/src/writer/emit.ts +20 -11
  477. package/src/writer/gtk-doc.ts +48 -21
  478. package/src/writer/imports.ts +63 -28
  479. package/src/writer/module.ts +35 -11
  480. package/src/xml.ts +12 -0
  481. package/dist/store/gi/class-struct-record.d.ts +0 -9
  482. package/dist/store/gi/class-struct-record.d.ts.map +0 -1
  483. package/dist/store/gi/class-struct-record.js +0 -34
  484. package/dist/store/gi/class-struct-record.js.map +0 -1
  485. package/dist/store/react/built-ins.d.ts +0 -9
  486. package/dist/store/react/built-ins.d.ts.map +0 -1
  487. package/dist/store/react/built-ins.js +0 -226
  488. package/dist/store/react/built-ins.js.map +0 -1
  489. package/dist/store/react/element-components.d.ts +0 -15
  490. package/dist/store/react/element-components.d.ts.map +0 -1
  491. package/dist/store/react/element-components.js +0 -92
  492. package/dist/store/react/element-components.js.map +0 -1
  493. package/dist/store/react/element-prop-types.d.ts +0 -19
  494. package/dist/store/react/element-prop-types.d.ts.map +0 -1
  495. package/dist/store/react/element-prop-types.js +0 -244
  496. package/dist/store/react/element-prop-types.js.map +0 -1
  497. package/dist/store/react/element-props.d.ts +0 -4
  498. package/dist/store/react/element-props.d.ts.map +0 -1
  499. package/dist/store/react/element-props.js +0 -178
  500. package/dist/store/react/element-props.js.map +0 -1
  501. package/dist/store/react/gir-index.d.ts +0 -25
  502. package/dist/store/react/gir-index.d.ts.map +0 -1
  503. package/dist/store/react/gir-index.js +0 -55
  504. package/dist/store/react/gir-index.js.map +0 -1
  505. package/dist/store/react/intrinsic-elements.d.ts +0 -26
  506. package/dist/store/react/intrinsic-elements.d.ts.map +0 -1
  507. package/dist/store/react/intrinsic-elements.js +0 -107
  508. package/dist/store/react/intrinsic-elements.js.map +0 -1
  509. package/dist/store/react/jsx.d.ts.map +0 -1
  510. package/dist/store/react/jsx.js.map +0 -1
  511. package/dist/store/react/metadata.d.ts +0 -4
  512. package/dist/store/react/metadata.d.ts.map +0 -1
  513. package/dist/store/react/metadata.js.map +0 -1
  514. package/dist/store/react/pipeline.d.ts +0 -14
  515. package/dist/store/react/pipeline.d.ts.map +0 -1
  516. package/dist/store/react/pipeline.js.map +0 -1
  517. package/dist/store/react/props.d.ts.map +0 -1
  518. package/dist/store/react/props.js +0 -133
  519. package/dist/store/react/props.js.map +0 -1
  520. package/overrides/gtk/constants.ts.ejs +0 -3
  521. package/overrides/gtk/index.ts.ejs +0 -2
  522. package/src/store/gi/class-struct-record.ts +0 -40
  523. package/src/store/react/built-ins.ts +0 -260
  524. package/src/store/react/element-components.ts +0 -138
  525. package/src/store/react/element-prop-types.ts +0 -280
  526. package/src/store/react/element-props.ts +0 -204
  527. package/src/store/react/gir-index.ts +0 -85
  528. package/src/store/react/intrinsic-elements.ts +0 -161
  529. package/src/store/react/metadata.ts +0 -197
  530. package/src/store/react/pipeline.ts +0 -90
  531. package/src/store/react/props.ts +0 -197
@@ -1,27 +1,26 @@
1
- import type { ContainerProp, ElementProp } from "@gtkx/config";
2
1
  import { sortStringsBy, toCamelIdentifier, upperFirst } from "@gtkx/utils";
3
- import { ancestorChain } from "../gir/ancestry.js";
4
2
  import type { GirClass } from "../gir/class.js";
5
3
  import type { Library } from "../gir/library.js";
4
+ import { ancestorChain } from "../gir/ancestry.js";
6
5
  import { type GirNamespace, namespaceDirectory } from "../gir/namespace.js";
7
- import type { GirSignal } from "../gir/parameter.js";
8
6
  import { type GirProperty, isConstructableProperty } from "../gir/property.js";
9
- import { createElementPropTypegen, type ElementPropTypegen } from "../store/react/element-prop-types.js";
10
- import { assembleElementProps } from "../store/react/element-props.js";
11
- import { buildGirIndex, type GirIndex } from "../store/react/gir-index.js";
7
+ import { elementPropTypeFor } from "../store/jsx/element-prop-imports.js";
8
+ import { buildGirIndex, type GirIndex } from "../store/jsx/gir-index.js";
12
9
  import {
10
+ getGlibName,
13
11
  type GlibNamedClass,
14
- glibNameOf,
15
12
  implementedInterfaces,
16
13
  newlyImplementedInterfaces,
17
14
  signalHandlerName,
18
- } from "../store/react/intrinsic-elements.js";
19
- import { isObjectProp } from "../store/react/props.js";
15
+ } from "../store/jsx/intrinsic-elements.js";
16
+ import { isOmittedProp } from "../store/jsx/omitted-props.js";
17
+ import { isObjectProp } from "../store/jsx/props.js";
20
18
  import {
21
19
  classMethodEntries,
22
20
  docMarkdown,
23
21
  docsDefaultValue,
24
22
  firstSentence,
23
+ implementsLine,
25
24
  joinSections,
26
25
  metaBlock,
27
26
  methodsSectionBlocks,
@@ -30,30 +29,12 @@ import {
30
29
  renderDocsType,
31
30
  } from "./render.js";
32
31
 
33
- export type ElementPageContext = {
32
+ type ElementPageContext = {
34
33
  library: Library;
35
34
  girIndex: GirIndex;
36
- typegen: ElementPropTypegen;
37
- elementProps: Record<string, ElementProp[]>;
38
35
  linkFor: (glibName: string) => string | undefined;
39
36
  };
40
37
 
41
- export const createElementPageContext = (
42
- library: Library,
43
- elementProps: Record<string, ElementProp[]>,
44
- linkFor: (glibName: string) => string | undefined,
45
- ): ElementPageContext => {
46
- const girIndex = buildGirIndex(library);
47
- const applied = assembleElementProps(girIndex, elementProps);
48
- return {
49
- library,
50
- girIndex,
51
- typegen: createElementPropTypegen(girIndex, applied),
52
- elementProps: applied,
53
- linkFor,
54
- };
55
- };
56
-
57
38
  type MemberOwner = {
58
39
  klass: GirClass;
59
40
  namespace: GirNamespace;
@@ -67,9 +48,22 @@ type PropEntry = {
67
48
  doc: string;
68
49
  };
69
50
 
51
+ type SignalEntry = {
52
+ name: string;
53
+ signature: string;
54
+ doc: string;
55
+ origin: string | undefined;
56
+ };
57
+
58
+ const createElementPageContext = (
59
+ library: Library,
60
+ linkFor: (glibName: string) => string | undefined,
61
+ ): ElementPageContext => ({ library, girIndex: buildGirIndex(library), linkFor });
62
+
70
63
  const frontmatter = (entry: GlibNamedClass): string => {
71
64
  const sentence = firstSentence(entry.klass.doc);
72
65
  const description = sentence.length > 0 ? sentence : `API reference for the ${entry.glibName} element.`;
66
+
73
67
  return `---\ndescription: ${JSON.stringify(description)}\n---`;
74
68
  };
75
69
 
@@ -78,60 +72,33 @@ const importBlock = (entry: GlibNamedClass): string =>
78
72
 
79
73
  const glibLabel = (context: ElementPageContext, glibName: string): string => {
80
74
  const link = context.linkFor(glibName);
75
+
81
76
  return link === undefined ? `\`${glibName}\`` : `[${glibName}](${link})`;
82
77
  };
83
78
 
84
79
  const hierarchySection = (entry: GlibNamedClass, context: ElementPageContext): string[] => {
85
- const ancestors = [...ancestorChain(context.library, entry.klass, entry.namespace.name)].slice(1).reverse();
86
- if (ancestors.length === 0) return [];
80
+ const ancestors = [...ancestorChain(context.library, entry.klass, entry.namespace.name)].slice(1).toReversed();
81
+
82
+ if (ancestors.length === 0) {
83
+ return [];
84
+ }
85
+
87
86
  const parts = ancestors.map((ancestor) => {
88
- const glib = glibNameOf(ancestor.klass);
87
+ const glib = getGlibName(ancestor.klass);
88
+
89
89
  return glib === undefined ? `\`${ancestor.namespaceName}.${ancestor.klass.name}\`` : glibLabel(context, glib);
90
90
  });
91
+
91
92
  parts.push(`**${entry.glibName}**`);
92
- const lines = [`## Hierarchy`, parts.join(" → ")];
93
+ const lines = ["## Hierarchy", parts.join(" → ")];
94
+
93
95
  const interfaces = implementedInterfaces(entry.klass, entry.namespace, context.library)
94
- .map((iface) => glibNameOf(iface.klass))
96
+ .map((iface) => getGlibName(iface.klass))
95
97
  .filter((name): name is string => name !== undefined);
96
- if (interfaces.length > 0) {
97
- lines.push(`Implements ${interfaces.map((name) => `\`${name}\``).join(", ")}.`);
98
- }
99
- return lines;
100
- };
101
-
102
- const callName = (call: ContainerProp["append"]): string | undefined =>
103
- call === undefined ? undefined : typeof call === "string" ? call : call.method;
104
98
 
105
- const containerLine = (prop: ContainerProp, context: ElementPageContext): string => {
106
- const child = glibLabel(context, prop.child);
107
- const attach = callName(prop.append);
108
- const detail: string[] = [];
109
- if (attach !== undefined) detail.push(`attached with \`${attach}()\``);
110
- if (prop.autowrap !== undefined) {
111
- detail.push(`children are wrapped in a ${glibLabel(context, prop.autowrap)} before attaching`);
112
- }
113
- const suffix = detail.length > 0 ? ` (${detail.join("; ")})` : "";
114
- if (prop.prop === "children") return `- \`children\` accepts ${child} elements${suffix}.`;
115
- return `- \`${prop.prop}\` is a slot accepting ${child} elements${suffix}.`;
116
- };
99
+ lines.push(...implementsLine(interfaces));
117
100
 
118
- const childrenSection = (entry: GlibNamedClass, context: ElementPageContext): string[] => {
119
- const lines: string[] = [];
120
- const seen = new Set<string>();
121
- for (const owner of memberOwners(entry, context)) {
122
- if (owner.glibName === undefined) continue;
123
- const overlays = context.elementProps[owner.glibName] ?? [];
124
- const containers = overlays.filter(
125
- (prop): prop is ContainerProp => prop.kind === "container" && !seen.has(prop.prop),
126
- );
127
- for (const prop of containers) lines.push(containerLine(prop, context));
128
- for (const prop of containers) seen.add(prop.prop);
129
- }
130
- if (!seen.has("children") && context.typegen.acceptsChildren(entry.glibName)) {
131
- lines.push("- `children` accepts child elements.");
132
- }
133
- if (lines.length === 0) return [];
134
- return ["## Children", lines.join("\n")];
101
+ return lines;
135
102
  };
136
103
 
137
104
  const memberOwners = (entry: GlibNamedClass, context: ElementPageContext): MemberOwner[] => [
@@ -140,9 +107,10 @@ const memberOwners = (entry: GlibNamedClass, context: ElementPageContext): Membe
140
107
  entry.klass,
141
108
  entry.namespace,
142
109
  context.library,
143
- (glibName) => glibName !== undefined && context.typegen.containerPropNamesFor(glibName).length > 0,
110
+ (glibName) => glibName !== undefined && elementPropTypeFor(glibName) !== undefined,
144
111
  ).map((iface) => {
145
- const glibName = glibNameOf(iface.klass);
112
+ const glibName = getGlibName(iface.klass);
113
+
146
114
  return { klass: iface.klass, namespace: iface.namespace, origin: glibName, glibName };
147
115
  }),
148
116
  ];
@@ -153,138 +121,157 @@ const propertyEntry = (
153
121
  property: GirProperty,
154
122
  jsName: string,
155
123
  ): PropEntry => {
156
- const object = isObjectProp(
157
- { library: context.library, klass: owner.klass, namespace: owner.namespace },
158
- property,
159
- jsName,
160
- );
124
+ const isObject = isObjectProp(context.library, property);
161
125
  const baseType = renderDocsType(context.library, property.type, false);
162
- const type = object ? `${baseType} | ReactElement` : baseType;
126
+ const type = isObject ? `${baseType} | ReactElement` : baseType;
163
127
  const meta: string[] = [`\`${type}\``];
164
- if (property.defaultValue !== undefined) meta.push(`default \`${docsDefaultValue(property.defaultValue)}\``);
165
- if (property.constructOnly) meta.push("construct-only");
166
- if (!isConstructableProperty(property)) meta.push(`read-only, observe with \`onNotify${upperFirst(jsName)}\``);
167
- if (owner.origin !== undefined) meta.push(`from \`${owner.origin}\``);
128
+
129
+ if (property.defaultValue !== undefined) {
130
+ meta.push(`default \`${docsDefaultValue(property.defaultValue)}\``);
131
+ }
132
+
133
+ if (property.constructOnly) {
134
+ meta.push("construct-only");
135
+ }
136
+
137
+ if (!isConstructableProperty(property)) {
138
+ meta.push(`read-only, observe with \`onNotify${upperFirst(jsName)}\``);
139
+ }
140
+
141
+ if (owner.origin !== undefined) {
142
+ meta.push(`from \`${owner.origin}\``);
143
+ }
144
+
168
145
  return { name: jsName, meta: meta.join(" · "), doc: docMarkdown(property.doc) };
169
146
  };
170
147
 
171
- const overlayNote = (overlays: ElementProp[], name: string): string | undefined => {
172
- for (const overlay of overlays) {
173
- if (overlay.kind === "container" || overlay.prop !== name) continue;
174
- if (overlay.kind === "value") return `Applied with \`${callName(overlay.call)}()\`.`;
175
- if (overlay.kind === "list") {
176
- const applied = (Array.isArray(overlay.add) ? overlay.add : [overlay.add])
177
- .map((call) => `\`${callName(call)}()\``)
178
- .join(", ");
179
- return `Array prop; items are applied with ${applied}.`;
180
- }
181
- if (overlay.kind === "controlled-text") {
182
- return "Controlled: the element is synced to the prop value whenever that value changes; text the user has typed is preserved rather than reverted on every render.";
183
- }
148
+ const propJsName = (property: GirProperty, owner: MemberOwner, seen: Set<string>): string | undefined => {
149
+ if (!property.introspectable) {
150
+ return undefined;
184
151
  }
185
- return undefined;
186
- };
187
152
 
188
- const cleanOverlayType = (type: string): string => type.replace(/\s*\|\s*undefined$/, "").replaceAll("$.", ".");
153
+ const jsName = toCamelIdentifier(property.name);
189
154
 
190
- const overlayEntries = (entry: GlibNamedClass, context: ElementPageContext, seen: Set<string>): PropEntry[] => {
191
- const overlays = context.elementProps[entry.glibName] ?? [];
192
- const entries: PropEntry[] = [];
193
- const lines = context.typegen.classPropLines(entry.glibName, entry.klass, entry.namespace, new Map());
194
- for (const line of lines) {
195
- const match = line.match(/^([A-Za-z0-9_]+)\?: (.*);$/);
196
- if (match === null) continue;
197
- const [, name = "", rawType = ""] = match;
198
- if (seen.has(name)) continue;
199
- seen.add(name);
200
- const note = overlayNote(overlays, name) ?? "Element prop managed by GTKX.";
201
- entries.push({ name, meta: `\`${cleanOverlayType(rawType)}\``, doc: note });
155
+ if (seen.has(jsName) || isOmittedProp(owner.glibName, jsName)) {
156
+ return undefined;
202
157
  }
203
- return entries;
158
+
159
+ seen.add(jsName);
160
+
161
+ return jsName;
204
162
  };
205
163
 
206
- const withOverlayNote = (propEntry: PropEntry, note: string | undefined): PropEntry => {
207
- if (note === undefined) return propEntry;
208
- return { ...propEntry, doc: propEntry.doc.length > 0 ? `${note}\n\n${propEntry.doc}` : note };
164
+ const ownerPropEntries = (context: ElementPageContext, owner: MemberOwner, seen: Set<string>): PropEntry[] => {
165
+ const entries: PropEntry[] = [];
166
+
167
+ for (const property of owner.klass.properties) {
168
+ const jsName = propJsName(property, owner, seen);
169
+
170
+ if (jsName !== undefined) {
171
+ entries.push(propertyEntry(context, owner, property, jsName));
172
+ }
173
+ }
174
+
175
+ return entries;
209
176
  };
210
177
 
211
178
  const propertyEntries = (entry: GlibNamedClass, context: ElementPageContext, seen: Set<string>): PropEntry[] => {
212
- const owners = memberOwners(entry, context);
213
- const overlays = owners.flatMap((owner) =>
214
- owner.glibName === undefined ? [] : (context.elementProps[owner.glibName] ?? []),
215
- );
216
179
  const entries: PropEntry[] = [];
217
- for (const owner of owners) {
218
- for (const property of owner.klass.properties) {
219
- if (!property.introspectable) continue;
220
- const jsName = toCamelIdentifier(property.name);
221
- if (seen.has(jsName)) continue;
222
- seen.add(jsName);
223
- const propEntry = propertyEntry(context, owner, property, jsName);
224
- entries.push(withOverlayNote(propEntry, overlayNote(overlays, jsName)));
225
- }
180
+
181
+ for (const owner of memberOwners(entry, context)) {
182
+ entries.push(...ownerPropEntries(context, owner, seen));
226
183
  }
184
+
227
185
  return entries;
228
186
  };
229
187
 
230
188
  const propsSection = (entry: GlibNamedClass, context: ElementPageContext, selfType: string): string[] => {
231
- const seen = new Set<string>();
232
- const entries = [...propertyEntries(entry, context, seen), ...overlayEntries(entry, context, seen)];
189
+ const seen: Set<string> = new Set();
190
+ const entries = propertyEntries(entry, context, seen);
191
+
233
192
  const intro = [
234
193
  `\`ref\` receives the \`${selfType}\` instance.`,
235
- `Every mutable property also has an \`onNotify<Prop>\` handler prop called with the new value when the property changes.`,
236
- `Props inherited from ancestor elements are documented on their own pages.`,
194
+ "Every mutable property also has an `onNotify<Prop>` handler prop called with the new value " +
195
+ "when the property changes.",
196
+ "Props inherited from ancestor elements are documented on their own pages.",
237
197
  ].join(" ");
238
- if (entries.length === 0) return ["## Props", intro];
198
+
199
+ if (entries.length === 0) {
200
+ return ["## Props", intro];
201
+ }
202
+
239
203
  const sorted = sortStringsBy(entries, (item) => item.name);
240
- return ["## Props", intro, ...sorted.map((item) => metaBlock(item.name, item.meta, item.doc))];
241
- };
242
204
 
243
- type SignalEntry = {
244
- name: string;
245
- signature: string;
246
- doc: string;
247
- origin: string | undefined;
205
+ return ["## Props", intro, ...sorted.map((item) => metaBlock(item.name, item.meta, item.doc))];
248
206
  };
249
207
 
250
- const signalsSection = (entry: GlibNamedClass, context: ElementPageContext, selfType: string): string[] => {
251
- const seen = new Set<string>();
208
+ const ownerSignalEntries = (
209
+ context: ElementPageContext,
210
+ owner: MemberOwner,
211
+ selfType: string,
212
+ seen: Set<string>,
213
+ ): SignalEntry[] => {
252
214
  const entries: SignalEntry[] = [];
253
- const acceptSignal = (signal: GirSignal, origin: string | undefined): void => {
215
+
216
+ for (const signal of owner.klass.signals) {
254
217
  const name = signalHandlerName(signal.name);
255
- if (seen.has(name)) return;
218
+
219
+ if (seen.has(name)) {
220
+ continue;
221
+ }
222
+
256
223
  seen.add(name);
224
+
257
225
  entries.push({
258
226
  name,
259
227
  signature: renderDocsSignalSignature(context.library, signal, selfType),
260
228
  doc: docMarkdown(signal.doc),
261
- origin,
229
+ origin: owner.origin,
262
230
  });
263
- };
231
+ }
232
+
233
+ return entries;
234
+ };
235
+
236
+ const signalsSection = (entry: GlibNamedClass, context: ElementPageContext, selfType: string): string[] => {
237
+ const seen: Set<string> = new Set();
238
+ const entries: SignalEntry[] = [];
239
+
264
240
  for (const owner of memberOwners(entry, context)) {
265
- for (const signal of owner.klass.signals) acceptSignal(signal, owner.origin);
241
+ entries.push(...ownerSignalEntries(context, owner, selfType, seen));
242
+ }
243
+
244
+ if (entries.length === 0) {
245
+ return [];
266
246
  }
267
- if (entries.length === 0) return [];
247
+
268
248
  return ["## Signals", ...originSignatureBlocks(entries)];
269
249
  };
270
250
 
271
251
  const methodsSection = (entry: GlibNamedClass, context: ElementPageContext, selfType: string): string[] => {
272
252
  const entries = classMethodEntries(context.library, entry.namespace, entry.klass);
273
- const intro = `Methods are called on the \`${selfType}\` instance, obtained with the \`ref\` prop or imported from \`@gtkx/gi/${namespaceDirectory(entry.namespace)}\`. Methods inherited from ancestors are documented on their own pages.`;
253
+ const importPath = `@gtkx/gi/${namespaceDirectory(entry.namespace)}`;
254
+
255
+ const intro =
256
+ `Methods are called on the \`${selfType}\` instance, obtained with the \`ref\` prop or ` +
257
+ `imported from \`${importPath}\`. Methods inherited from ancestors are documented on their own pages.`;
258
+
274
259
  return methodsSectionBlocks(entries, intro);
275
260
  };
276
261
 
277
- export const renderElementPage = (entry: GlibNamedClass, context: ElementPageContext): string => {
262
+ const renderElementPage = (entry: GlibNamedClass, context: ElementPageContext): string => {
278
263
  const selfType = `${entry.namespace.name}.${entry.klass.name}`;
264
+
279
265
  return joinSections([
280
266
  frontmatter(entry),
281
267
  `# ${entry.glibName}`,
282
268
  docMarkdown(entry.klass.doc),
283
269
  importBlock(entry),
284
270
  ...hierarchySection(entry, context),
285
- ...childrenSection(entry, context),
286
271
  ...propsSection(entry, context, selfType),
287
272
  ...signalsSection(entry, context, selfType),
288
273
  ...methodsSection(entry, context, selfType),
289
274
  ]);
290
275
  };
276
+
277
+ export { createElementPageContext, renderElementPage, type ElementPageContext };