@react-x11/components 0.3.0 → 0.5.0

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 (314) hide show
  1. package/README.md +131 -4
  2. package/dist/charts/components.d.ts +3 -1
  3. package/dist/charts/components.d.ts.map +1 -1
  4. package/dist/charts/components.js +8 -4
  5. package/dist/charts/components.js.map +1 -1
  6. package/dist/charts/node.d.ts +13 -6
  7. package/dist/charts/node.d.ts.map +1 -1
  8. package/dist/charts/node.js +75 -24
  9. package/dist/charts/node.js.map +1 -1
  10. package/dist/charts/render.d.ts +4 -0
  11. package/dist/charts/render.d.ts.map +1 -1
  12. package/dist/charts/render.js +11 -6
  13. package/dist/charts/render.js.map +1 -1
  14. package/dist/code-editor/node.d.ts +47 -16
  15. package/dist/code-editor/node.d.ts.map +1 -1
  16. package/dist/code-editor/node.js +121 -51
  17. package/dist/code-editor/node.js.map +1 -1
  18. package/dist/flow/draw.d.ts +19 -1
  19. package/dist/flow/draw.d.ts.map +1 -1
  20. package/dist/flow/draw.js +64 -35
  21. package/dist/flow/draw.js.map +1 -1
  22. package/dist/flow/index.d.ts.map +1 -1
  23. package/dist/flow/index.js +24 -8
  24. package/dist/flow/index.js.map +1 -1
  25. package/dist/flow/model.d.ts +4 -2
  26. package/dist/flow/model.d.ts.map +1 -1
  27. package/dist/flow/model.js +4 -2
  28. package/dist/flow/model.js.map +1 -1
  29. package/dist/flow/node.d.ts +40 -9
  30. package/dist/flow/node.d.ts.map +1 -1
  31. package/dist/flow/node.js +142 -53
  32. package/dist/flow/node.js.map +1 -1
  33. package/dist/flow/types.d.ts +46 -21
  34. package/dist/flow/types.d.ts.map +1 -1
  35. package/dist/formula/index.d.ts +4 -2
  36. package/dist/formula/index.d.ts.map +1 -1
  37. package/dist/formula/index.js.map +1 -1
  38. package/dist/formula/node.d.ts +5 -1
  39. package/dist/formula/node.d.ts.map +1 -1
  40. package/dist/formula/node.js +19 -3
  41. package/dist/formula/node.js.map +1 -1
  42. package/dist/html/controls.d.ts +4 -1
  43. package/dist/html/controls.d.ts.map +1 -1
  44. package/dist/html/controls.js.map +1 -1
  45. package/dist/html/css/cascade.d.ts +11 -5
  46. package/dist/html/css/cascade.d.ts.map +1 -1
  47. package/dist/html/css/cascade.js +18 -8
  48. package/dist/html/css/cascade.js.map +1 -1
  49. package/dist/html/css/parse.d.ts +15 -10
  50. package/dist/html/css/parse.d.ts.map +1 -1
  51. package/dist/html/css/parse.js +41 -16
  52. package/dist/html/css/parse.js.map +1 -1
  53. package/dist/html/css/style.d.ts +3 -0
  54. package/dist/html/css/style.d.ts.map +1 -1
  55. package/dist/html/css/style.js +3 -1
  56. package/dist/html/css/style.js.map +1 -1
  57. package/dist/html/css/values.d.ts +14 -1
  58. package/dist/html/css/values.d.ts.map +1 -1
  59. package/dist/html/css/values.js +11 -8
  60. package/dist/html/css/values.js.map +1 -1
  61. package/dist/html/index.d.ts.map +1 -1
  62. package/dist/html/index.js +1 -0
  63. package/dist/html/index.js.map +1 -1
  64. package/dist/html/layout/boxes.d.ts +12 -5
  65. package/dist/html/layout/boxes.d.ts.map +1 -1
  66. package/dist/html/layout/boxes.js +7 -4
  67. package/dist/html/layout/boxes.js.map +1 -1
  68. package/dist/html/layout/inline.d.ts.map +1 -1
  69. package/dist/html/layout/inline.js +22 -1
  70. package/dist/html/layout/inline.js.map +1 -1
  71. package/dist/html/node.d.ts +22 -8
  72. package/dist/html/node.d.ts.map +1 -1
  73. package/dist/html/node.js +97 -15
  74. package/dist/html/node.js.map +1 -1
  75. package/dist/html/paint.d.ts +3 -0
  76. package/dist/html/paint.d.ts.map +1 -1
  77. package/dist/html/paint.js +2 -2
  78. package/dist/html/paint.js.map +1 -1
  79. package/dist/index.d.ts +11 -1
  80. package/dist/index.d.ts.map +1 -1
  81. package/dist/index.js +26 -0
  82. package/dist/index.js.map +1 -1
  83. package/dist/maps/clip.d.ts +43 -0
  84. package/dist/maps/clip.d.ts.map +1 -0
  85. package/dist/maps/clip.js +171 -0
  86. package/dist/maps/clip.js.map +1 -0
  87. package/dist/maps/gzip.d.ts +15 -0
  88. package/dist/maps/gzip.d.ts.map +1 -0
  89. package/dist/maps/gzip.js +56 -0
  90. package/dist/maps/gzip.js.map +1 -0
  91. package/dist/maps/index.d.ts +55 -0
  92. package/dist/maps/index.d.ts.map +1 -0
  93. package/dist/maps/index.js +141 -0
  94. package/dist/maps/index.js.map +1 -0
  95. package/dist/maps/labels.d.ts +123 -0
  96. package/dist/maps/labels.d.ts.map +1 -0
  97. package/dist/maps/labels.js +323 -0
  98. package/dist/maps/labels.js.map +1 -0
  99. package/dist/maps/mvt.d.ts +244 -0
  100. package/dist/maps/mvt.d.ts.map +1 -0
  101. package/dist/maps/mvt.js +820 -0
  102. package/dist/maps/mvt.js.map +1 -0
  103. package/dist/maps/node.d.ts +278 -0
  104. package/dist/maps/node.d.ts.map +1 -0
  105. package/dist/maps/node.js +1459 -0
  106. package/dist/maps/node.js.map +1 -0
  107. package/dist/maps/overlay.d.ts +157 -0
  108. package/dist/maps/overlay.d.ts.map +1 -0
  109. package/dist/maps/overlay.js +472 -0
  110. package/dist/maps/overlay.js.map +1 -0
  111. package/dist/maps/paint.d.ts +226 -0
  112. package/dist/maps/paint.d.ts.map +1 -0
  113. package/dist/maps/paint.js +705 -0
  114. package/dist/maps/paint.js.map +1 -0
  115. package/dist/maps/proj.d.ts +281 -0
  116. package/dist/maps/proj.d.ts.map +1 -0
  117. package/dist/maps/proj.js +451 -0
  118. package/dist/maps/proj.js.map +1 -0
  119. package/dist/maps/sources.d.ts +256 -0
  120. package/dist/maps/sources.d.ts.map +1 -0
  121. package/dist/maps/sources.js +210 -0
  122. package/dist/maps/sources.js.map +1 -0
  123. package/dist/maps/style.d.ts +141 -0
  124. package/dist/maps/style.d.ts.map +1 -0
  125. package/dist/maps/style.js +147 -0
  126. package/dist/maps/style.js.map +1 -0
  127. package/dist/maps/styles.d.ts +82 -0
  128. package/dist/maps/styles.d.ts.map +1 -0
  129. package/dist/maps/styles.js +898 -0
  130. package/dist/maps/styles.js.map +1 -0
  131. package/dist/maps/tiles.d.ts +283 -0
  132. package/dist/maps/tiles.d.ts.map +1 -0
  133. package/dist/maps/tiles.js +469 -0
  134. package/dist/maps/tiles.js.map +1 -0
  135. package/dist/maps/types.d.ts +244 -0
  136. package/dist/maps/types.d.ts.map +1 -0
  137. package/dist/maps/types.js +2 -0
  138. package/dist/maps/types.js.map +1 -0
  139. package/dist/qml/containers.d.ts +3 -0
  140. package/dist/qml/containers.d.ts.map +1 -0
  141. package/dist/qml/containers.js +331 -0
  142. package/dist/qml/containers.js.map +1 -0
  143. package/dist/qml/controls.d.ts +12 -0
  144. package/dist/qml/controls.d.ts.map +1 -0
  145. package/dist/qml/controls.js +21 -0
  146. package/dist/qml/controls.js.map +1 -0
  147. package/dist/qml/globals.d.ts +6 -0
  148. package/dist/qml/globals.d.ts.map +1 -0
  149. package/dist/qml/globals.js +25 -0
  150. package/dist/qml/globals.js.map +1 -0
  151. package/dist/qml/index.d.ts +15 -0
  152. package/dist/qml/index.d.ts.map +1 -0
  153. package/dist/qml/index.js +25 -0
  154. package/dist/qml/index.js.map +1 -0
  155. package/dist/qml/interaction.d.ts +12 -0
  156. package/dist/qml/interaction.d.ts.map +1 -0
  157. package/dist/qml/interaction.js +246 -0
  158. package/dist/qml/interaction.js.map +1 -0
  159. package/dist/qml/ir.d.ts +106 -0
  160. package/dist/qml/ir.d.ts.map +1 -0
  161. package/dist/qml/ir.js +7 -0
  162. package/dist/qml/ir.js.map +1 -0
  163. package/dist/qml/layouts.d.ts +3 -0
  164. package/dist/qml/layouts.d.ts.map +1 -0
  165. package/dist/qml/layouts.js +122 -0
  166. package/dist/qml/layouts.js.map +1 -0
  167. package/dist/qml/models.d.ts +14 -0
  168. package/dist/qml/models.d.ts.map +1 -0
  169. package/dist/qml/models.js +80 -0
  170. package/dist/qml/models.js.map +1 -0
  171. package/dist/qml/objects.d.ts +228 -0
  172. package/dist/qml/objects.d.ts.map +1 -0
  173. package/dist/qml/objects.js +1103 -0
  174. package/dist/qml/objects.js.map +1 -0
  175. package/dist/qml/parse.d.ts +10 -0
  176. package/dist/qml/parse.d.ts.map +1 -0
  177. package/dist/qml/parse.js +607 -0
  178. package/dist/qml/parse.js.map +1 -0
  179. package/dist/qml/qtquick.d.ts +7 -0
  180. package/dist/qml/qtquick.d.ts.map +1 -0
  181. package/dist/qml/qtquick.js +347 -0
  182. package/dist/qml/qtquick.js.map +1 -0
  183. package/dist/qml/react.d.ts +83 -0
  184. package/dist/qml/react.d.ts.map +1 -0
  185. package/dist/qml/react.js +323 -0
  186. package/dist/qml/react.js.map +1 -0
  187. package/dist/qml/resolver.d.ts +38 -0
  188. package/dist/qml/resolver.d.ts.map +1 -0
  189. package/dist/qml/resolver.js +64 -0
  190. package/dist/qml/resolver.js.map +1 -0
  191. package/dist/qml/slots.d.ts +65 -0
  192. package/dist/qml/slots.d.ts.map +1 -0
  193. package/dist/qml/slots.js +230 -0
  194. package/dist/qml/slots.js.map +1 -0
  195. package/dist/qml/states.d.ts +5 -0
  196. package/dist/qml/states.d.ts.map +1 -0
  197. package/dist/qml/states.js +276 -0
  198. package/dist/qml/states.js.map +1 -0
  199. package/dist/qml/view-utils.d.ts +42 -0
  200. package/dist/qml/view-utils.d.ts.map +1 -0
  201. package/dist/qml/view-utils.js +121 -0
  202. package/dist/qml/view-utils.js.map +1 -0
  203. package/dist/reorder/hx.d.ts +18 -0
  204. package/dist/reorder/hx.d.ts.map +1 -0
  205. package/dist/reorder/hx.js +10 -0
  206. package/dist/reorder/hx.js.map +1 -0
  207. package/dist/reorder/index.d.ts +314 -0
  208. package/dist/reorder/index.d.ts.map +1 -0
  209. package/dist/reorder/index.js +1539 -0
  210. package/dist/reorder/index.js.map +1 -0
  211. package/dist/reorder/model.d.ts +107 -0
  212. package/dist/reorder/model.d.ts.map +1 -0
  213. package/dist/reorder/model.js +162 -0
  214. package/dist/reorder/model.js.map +1 -0
  215. package/dist/richtext/node.d.ts +15 -5
  216. package/dist/richtext/node.d.ts.map +1 -1
  217. package/dist/richtext/node.js +40 -11
  218. package/dist/richtext/node.js.map +1 -1
  219. package/dist/richtext/runs.d.ts +35 -13
  220. package/dist/richtext/runs.d.ts.map +1 -1
  221. package/dist/richtext/runs.js +83 -27
  222. package/dist/richtext/runs.js.map +1 -1
  223. package/dist/tabs/hx.d.ts +18 -0
  224. package/dist/tabs/hx.d.ts.map +1 -0
  225. package/dist/tabs/hx.js +10 -0
  226. package/dist/tabs/hx.js.map +1 -0
  227. package/dist/tabs/index.d.ts +160 -0
  228. package/dist/tabs/index.d.ts.map +1 -0
  229. package/dist/tabs/index.js +1265 -0
  230. package/dist/tabs/index.js.map +1 -0
  231. package/dist/terminal/vt/fonts.d.ts +45 -15
  232. package/dist/terminal/vt/fonts.d.ts.map +1 -1
  233. package/dist/terminal/vt/fonts.js +89 -19
  234. package/dist/terminal/vt/fonts.js.map +1 -1
  235. package/dist/terminal/vt/index.d.ts +1 -1
  236. package/dist/terminal/vt/index.d.ts.map +1 -1
  237. package/dist/terminal/vt/index.js +3 -3
  238. package/dist/terminal/vt/index.js.map +1 -1
  239. package/dist/terminal/vt/node.d.ts +42 -0
  240. package/dist/terminal/vt/node.d.ts.map +1 -1
  241. package/dist/terminal/vt/node.js +95 -11
  242. package/dist/terminal/vt/node.js.map +1 -1
  243. package/dist/terminal/vt/pty.d.ts +16 -0
  244. package/dist/terminal/vt/pty.d.ts.map +1 -1
  245. package/dist/terminal/vt/pty.js +186 -0
  246. package/dist/terminal/vt/pty.js.map +1 -1
  247. package/dist/terminal/vt/renderer.d.ts.map +1 -1
  248. package/dist/terminal/vt/renderer.js +13 -3
  249. package/dist/terminal/vt/renderer.js.map +1 -1
  250. package/package.json +23 -3
  251. package/src/charts/components.ts +14 -7
  252. package/src/charts/node.ts +81 -26
  253. package/src/charts/render.ts +16 -6
  254. package/src/code-editor/node.ts +147 -53
  255. package/src/flow/draw.ts +104 -35
  256. package/src/flow/index.ts +33 -13
  257. package/src/flow/model.ts +4 -2
  258. package/src/flow/node.ts +158 -59
  259. package/src/flow/types.ts +46 -21
  260. package/src/formula/index.ts +4 -2
  261. package/src/formula/node.ts +24 -5
  262. package/src/html/controls.ts +4 -1
  263. package/src/html/css/cascade.ts +18 -7
  264. package/src/html/css/parse.ts +46 -21
  265. package/src/html/css/style.ts +6 -1
  266. package/src/html/css/values.ts +25 -9
  267. package/src/html/index.ts +1 -0
  268. package/src/html/layout/boxes.ts +19 -9
  269. package/src/html/layout/inline.ts +23 -1
  270. package/src/html/node.ts +110 -17
  271. package/src/html/paint.ts +17 -2
  272. package/src/index.ts +142 -0
  273. package/src/maps/clip.ts +184 -0
  274. package/src/maps/gzip.ts +66 -0
  275. package/src/maps/index.ts +316 -0
  276. package/src/maps/labels.ts +442 -0
  277. package/src/maps/mvt.ts +857 -0
  278. package/src/maps/node.ts +1819 -0
  279. package/src/maps/overlay.ts +639 -0
  280. package/src/maps/paint.ts +978 -0
  281. package/src/maps/proj.ts +641 -0
  282. package/src/maps/sources.ts +425 -0
  283. package/src/maps/style.ts +309 -0
  284. package/src/maps/styles.ts +1040 -0
  285. package/src/maps/tiles.ts +676 -0
  286. package/src/maps/types.ts +260 -0
  287. package/src/qml/containers.tsx +380 -0
  288. package/src/qml/controls.tsx +47 -0
  289. package/src/qml/globals.ts +33 -0
  290. package/src/qml/index.ts +67 -0
  291. package/src/qml/interaction.tsx +317 -0
  292. package/src/qml/ir.ts +80 -0
  293. package/src/qml/layouts.tsx +141 -0
  294. package/src/qml/models.ts +101 -0
  295. package/src/qml/objects.ts +1431 -0
  296. package/src/qml/parse.ts +624 -0
  297. package/src/qml/qtquick.tsx +413 -0
  298. package/src/qml/react.tsx +454 -0
  299. package/src/qml/resolver.ts +99 -0
  300. package/src/qml/slots.ts +249 -0
  301. package/src/qml/states.ts +318 -0
  302. package/src/qml/view-utils.ts +140 -0
  303. package/src/reorder/hx.ts +31 -0
  304. package/src/reorder/index.ts +2223 -0
  305. package/src/reorder/model.ts +232 -0
  306. package/src/richtext/node.ts +49 -14
  307. package/src/richtext/runs.ts +115 -30
  308. package/src/tabs/hx.ts +31 -0
  309. package/src/tabs/index.ts +1686 -0
  310. package/src/terminal/vt/fonts.ts +128 -36
  311. package/src/terminal/vt/index.ts +4 -2
  312. package/src/terminal/vt/node.ts +105 -12
  313. package/src/terminal/vt/pty.ts +243 -0
  314. package/src/terminal/vt/renderer.ts +13 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controls.js","sourceRoot":"","sources":["../../src/qml/controls.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAYtC,MAAM,UAAU,gBAAgB,CAAC,EAAE,MAAM,EAAmB;IAC1D,iBAAiB,CAAC,kBAAkB,EAAE;QACpC,OAAO,EAAE,KAAK;QACd,KAAK,EAAE;YACL,MAAM,EAAE;gBACN,OAAO,EAAE,MAAM;gBACf,UAAU,EAAE;oBACV,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;oBACrB,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;iBAC5B;gBACD,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;gBACxB,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAClB,cAAK,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,YAC7B,KAAC,MAAM,IACL,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,KAAK,IAAI,EAC7C,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,EAC/C,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAElC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,GACvB,GACL,CACP;aACF;SACF;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare function microtask(fn: () => void): void;
2
+ /** `Timer { interval: … }` — null when the host has no timer at all. */
3
+ export declare function schedule(fn: () => void, ms: number): unknown;
4
+ export declare function cancel(id: unknown): void;
5
+ export declare function warn(...args: unknown[]): void;
6
+ //# sourceMappingURL=globals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globals.d.ts","sourceRoot":"","sources":["../../src/qml/globals.ts"],"names":[],"mappings":"AAgBA,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAG9C;AAED,wEAAwE;AACxE,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED,wBAAgB,MAAM,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAExC;AAED,wBAAgB,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAE7C"}
@@ -0,0 +1,25 @@
1
+ // Host globals, reached structurally through `globalThis`. The build
2
+ // compiles `src/` with `types: []` on purpose — a Node global that wanders
3
+ // in must fail the build rather than become an implicit `@types/node`
4
+ // dependency (AGENTS.md) — so the few platform facilities the QML runtime
5
+ // needs are typed here, the way `charts/timers.ts` and `three/globals.ts`
6
+ // do it.
7
+ const g = globalThis;
8
+ export function microtask(fn) {
9
+ if (g.queueMicrotask)
10
+ g.queueMicrotask(fn);
11
+ else
12
+ void Promise.resolve().then(fn);
13
+ }
14
+ /** `Timer { interval: … }` — null when the host has no timer at all. */
15
+ export function schedule(fn, ms) {
16
+ return g.setTimeout ? g.setTimeout(fn, ms) : null;
17
+ }
18
+ export function cancel(id) {
19
+ if (id != null)
20
+ g.clearTimeout?.(id);
21
+ }
22
+ export function warn(...args) {
23
+ g.console?.warn(...args);
24
+ }
25
+ //# sourceMappingURL=globals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globals.js","sourceRoot":"","sources":["../../src/qml/globals.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,2EAA2E;AAC3E,sEAAsE;AACtE,0EAA0E;AAC1E,0EAA0E;AAC1E,SAAS;AAST,MAAM,CAAC,GAAG,UAAyB,CAAC;AAEpC,MAAM,UAAU,SAAS,CAAC,EAAc;IACtC,IAAI,CAAC,CAAC,cAAc;QAAE,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;;QACtC,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,QAAQ,CAAC,EAAc,EAAE,EAAU;IACjD,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,EAAW;IAChC,IAAI,EAAE,IAAI,IAAI;QAAE,CAAC,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,GAAG,IAAe;IACrC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,15 @@
1
+ export { parseQml, ParseError } from './parse.js';
2
+ export type { QmlDocument, QmlImport, ObjectIR, MemberIR, ValueIR, } from './ir.js';
3
+ export { Qt, QmlInstance, Context, instantiateDocument, instantiateTemplate, migrateUserState, registerQmlModule, instanceOf, lookupType, } from './objects.js';
4
+ export type { QmlFacade, QmlTypeDef, QmlTypeInfo, QmlPropertyDef, ValueSourceHookup, InstantiateResult, QtNamespace, TemplateRef, } from './objects.js';
5
+ export { Slot, flushBindings } from './slots.js';
6
+ export { QmlView, QmlNode, registerReactComponent, renderQmlChildren, useQmlVersion, } from './react.js';
7
+ export type { QmlViewProps, QmlViewHandle, RegisterReactComponentOptions, } from './react.js';
8
+ export { qmlColor, registerQtQuick } from './qtquick.js';
9
+ export { createFileResolver } from './resolver.js';
10
+ export type { QmlResolver, DocLoad } from './resolver.js';
11
+ export { geometryStyle, preferredSpan } from './react.js';
12
+ export { captureNode, hostNode } from './view-utils.js';
13
+ export { registerControls } from './controls.js';
14
+ export type { ControlsWidgets } from './controls.js';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/qml/index.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAClD,YAAY,EACV,WAAW,EACX,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,OAAO,GACR,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,EAAE,EACF,WAAW,EACX,OAAO,EACP,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,UAAU,EACV,UAAU,GACX,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,SAAS,EACT,UAAU,EACV,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EACL,OAAO,EACP,OAAO,EACP,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,YAAY,EACZ,aAAa,EACb,6BAA6B,GAC9B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,25 @@
1
+ // `@react-x11/components/qml` — QML as an authoring layer over react-x11.
2
+ //
3
+ // A zero-dependency QML engine: the parser, the reactive slot graph with
4
+ // QML's binding-breaking assignment, the object model with Qt's scoping
5
+ // rules, and a QtQuick subset whose every pixel is an ordinary
6
+ // `<box>`/`<text>`/`<image>` committed through the renderer. The docs page
7
+ // is docs/components/qml.md; the design record is react-x11's QML RFC.
8
+ //
9
+ // Importing this module populates the QtQuick registry — the family's own
10
+ // module-level registry, no core state touched. That is this family's one
11
+ // import-time side effect, the same shape as a component registering its
12
+ // element (AGENTS.md, "Tree-shaking"): it lives here so a bundler that
13
+ // keeps the family runs it, and one that shakes the family drops it.
14
+ import { registerQtQuick } from './qtquick.js';
15
+ registerQtQuick();
16
+ export { parseQml, ParseError } from './parse.js';
17
+ export { Qt, QmlInstance, Context, instantiateDocument, instantiateTemplate, migrateUserState, registerQmlModule, instanceOf, lookupType, } from './objects.js';
18
+ export { Slot, flushBindings } from './slots.js';
19
+ export { QmlView, QmlNode, registerReactComponent, renderQmlChildren, useQmlVersion, } from './react.js';
20
+ export { qmlColor, registerQtQuick } from './qtquick.js';
21
+ export { createFileResolver } from './resolver.js';
22
+ export { geometryStyle, preferredSpan } from './react.js';
23
+ export { captureNode, hostNode } from './view-utils.js';
24
+ export { registerControls } from './controls.js';
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/qml/index.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,EAAE;AACF,yEAAyE;AACzE,wEAAwE;AACxE,+DAA+D;AAC/D,2EAA2E;AAC3E,uEAAuE;AACvE,EAAE;AACF,0EAA0E;AAC1E,0EAA0E;AAC1E,yEAAyE;AACzE,uEAAuE;AACvE,qEAAqE;AAErE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,eAAe,EAAE,CAAC;AAElB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAQlD,OAAO,EACL,EAAE,EACF,WAAW,EACX,OAAO,EACP,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,UAAU,EACV,UAAU,GACX,MAAM,cAAc,CAAC;AAWtB,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EACL,OAAO,EACP,OAAO,EACP,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,GACd,MAAM,YAAY,CAAC;AAMpB,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { Style } from 'react-x11/style';
2
+ import { QmlInstance, type QmlTypeDef } from './objects.js';
3
+ /**
4
+ * The focus/keyboard props an Item earns from `focus: true`, `Keys.*`
5
+ * handlers, or being told to be focusable. `activeFocus` follows the real
6
+ * focus events.
7
+ */
8
+ export declare function keyFocusProps(inst: QmlInstance): Record<string, unknown>;
9
+ /** The font/colour subset Text and the editors share. */
10
+ export declare function applyFontStyle(inst: QmlInstance, style: Style): void;
11
+ export declare const interactionTypes: Record<string, QmlTypeDef>;
12
+ //# sourceMappingURL=interaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interaction.d.ts","sourceRoot":"","sources":["../../src/qml/interaction.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAe7C,OAAO,EAAE,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAoF5D;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkBxE;AAyED,yDAAyD;AACzD,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAepE;AA+CD,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAoDvD,CAAC"}
@@ -0,0 +1,246 @@
1
+ import { jsx as _jsx } from "react-x11/jsx-runtime";
2
+ // Pointer and keyboard: MouseArea, the `Keys` attached handlers, `focus`/
3
+ // `activeFocus`, and the two text editors over core's `<textinput>` /
4
+ // `<textarea>`.
5
+ import { useEffect } from 'react';
6
+ import { XK_BACKSPACE, XK_DELETE, XK_DOWN, XK_ESCAPE, XK_KP_ENTER, XK_LEFT, XK_RETURN, XK_RIGHT, XK_SPACE, XK_TAB, XK_UP, } from 'react-x11/keysyms';
7
+ import { QmlInstance } from './objects.js';
8
+ import { renderQmlChildren, geometryStyle } from './react.js';
9
+ import { applyMotion, captureNode, hostNode, num, qmlColor, str, } from './view-utils.js';
10
+ // Qt's modifier flags, so `mouse.modifiers & Qt.ShiftModifier` reads as
11
+ // ported code expects.
12
+ const SHIFT = 0x02000000;
13
+ const CTRL = 0x04000000;
14
+ const ALT = 0x08000000;
15
+ const META = 0x10000000;
16
+ const modifiersOf = (e) => (e.shiftKey ? SHIFT : 0) |
17
+ (e.ctrlKey ? CTRL : 0) |
18
+ (e.altKey ? ALT : 0) |
19
+ (e.metaKey ? META : 0);
20
+ const NAMED_KEYS = {
21
+ [XK_RETURN]: 'Return',
22
+ [XK_KP_ENTER]: 'Enter',
23
+ [XK_ESCAPE]: 'Escape',
24
+ [XK_UP]: 'Up',
25
+ [XK_DOWN]: 'Down',
26
+ [XK_LEFT]: 'Left',
27
+ [XK_RIGHT]: 'Right',
28
+ [XK_TAB]: 'Tab',
29
+ [XK_SPACE]: 'Space',
30
+ [XK_DELETE]: 'Delete',
31
+ [XK_BACKSPACE]: 'Back',
32
+ };
33
+ function dispatchKeys(inst, e) {
34
+ const ev = {
35
+ key: e.keysym ?? 0,
36
+ text: e.key ?? '',
37
+ modifiers: modifiersOf(e),
38
+ accepted: false,
39
+ };
40
+ const named = NAMED_KEYS[ev.key];
41
+ if (named)
42
+ inst.attachedHandlers.get(`Keys.on${named}Pressed`)?.(ev);
43
+ if (!ev.accepted)
44
+ inst.attachedHandlers.get('Keys.onPressed')?.(ev);
45
+ if (ev.accepted)
46
+ e.stopPropagation?.();
47
+ }
48
+ /**
49
+ * The focus/keyboard props an Item earns from `focus: true`, `Keys.*`
50
+ * handlers, or being told to be focusable. `activeFocus` follows the real
51
+ * focus events.
52
+ */
53
+ export function keyFocusProps(inst) {
54
+ const wantsFocus = inst.slots.get('focus')?.peek() === true;
55
+ let hasKeys = false;
56
+ for (const k of inst.attachedHandlers.keys()) {
57
+ if (k.startsWith('Keys.')) {
58
+ hasKeys = true;
59
+ break;
60
+ }
61
+ }
62
+ if (!wantsFocus && !hasKeys)
63
+ return {};
64
+ const props = {
65
+ focusable: true,
66
+ onFocus: () => inst.slots.get('activeFocus')?.assign(true),
67
+ onBlur: () => inst.slots.get('activeFocus')?.assign(false),
68
+ };
69
+ if (wantsFocus)
70
+ props.autoFocus = true;
71
+ if (hasKeys)
72
+ props.onKeyDown = (e) => dispatchKeys(inst, e);
73
+ return props;
74
+ }
75
+ // --- MouseArea -------------------------------------------------------------
76
+ function MouseAreaView({ inst }) {
77
+ const enabled = inst.slot('enabled').peek() !== false;
78
+ const hoverEnabled = inst.slot('hoverEnabled').peek() === true;
79
+ const style = geometryStyle(inst);
80
+ applyMotion(inst, style);
81
+ const mouse = (e) => {
82
+ const abs = hostNode(inst)?.abs;
83
+ return {
84
+ x: e.x - (abs?.x ?? 0),
85
+ y: e.y - (abs?.y ?? 0),
86
+ button: e.button,
87
+ modifiers: modifiersOf(e),
88
+ accepted: true,
89
+ };
90
+ };
91
+ const handlers = {};
92
+ if (enabled) {
93
+ handlers.onClick = (e) => {
94
+ e.stopPropagation?.();
95
+ inst.emit('clicked', mouse(e));
96
+ if (e.detail === 2)
97
+ inst.emit('doubleClicked', mouse(e));
98
+ };
99
+ handlers.onMouseDown = (e) => {
100
+ e.stopPropagation?.();
101
+ inst.slot('pressed').assign(true);
102
+ inst.emit('pressed', mouse(e));
103
+ };
104
+ handlers.onMouseUp = (e) => {
105
+ e.stopPropagation?.();
106
+ inst.slot('pressed').assign(false);
107
+ inst.emit('released', mouse(e));
108
+ };
109
+ handlers.onMouseMove = (e) => {
110
+ inst.emit('positionChanged', mouse(e));
111
+ };
112
+ handlers.onWheel = (e) => {
113
+ inst.emit('wheel', {
114
+ ...mouse(e),
115
+ angleDelta: { x: e.deltaX ?? 0, y: e.deltaY ?? 0 },
116
+ });
117
+ };
118
+ if (hoverEnabled) {
119
+ handlers.onMouseEnter = () => {
120
+ inst.slot('containsMouse').assign(true);
121
+ inst.emit('entered');
122
+ };
123
+ handlers.onMouseLeave = () => {
124
+ inst.slot('containsMouse').assign(false);
125
+ inst.emit('exited');
126
+ };
127
+ }
128
+ }
129
+ return (_jsx("box", { ref: captureNode(inst), style: style, ...handlers, ...keyFocusProps(inst), children: renderQmlChildren(inst) }));
130
+ }
131
+ // --- TextInput / TextEdit --------------------------------------------------
132
+ /** The font/colour subset Text and the editors share. */
133
+ export function applyFontStyle(inst, style) {
134
+ const color = inst.slots.get('color')?.peek();
135
+ if (color !== undefined)
136
+ style.color = qmlColor(color);
137
+ const px = num(inst.slots.get('font.pixelSize')?.peek());
138
+ const pt = num(inst.slots.get('font.pointSize')?.peek());
139
+ if (px)
140
+ style.fontSize = px;
141
+ else if (pt)
142
+ style.fontSize = Math.round((pt * 96) / 72); // CSS's 1pt
143
+ const family = inst.slots.get('font.family')?.peek();
144
+ if (family)
145
+ style.fontFamily = String(family);
146
+ if (inst.slots.get('font.bold')?.peek())
147
+ style.fontWeight = 700;
148
+ else {
149
+ const weight = num(inst.slots.get('font.weight')?.peek());
150
+ if (weight)
151
+ style.fontWeight = weight;
152
+ }
153
+ if (inst.slots.get('font.italic')?.peek())
154
+ style.fontStyle = 'italic';
155
+ }
156
+ function useImplicitLineHeight(inst, text) {
157
+ useEffect(() => {
158
+ const node = hostNode(inst);
159
+ if (!node?.app?.fonts || !node.resolvedTextStyle)
160
+ return;
161
+ try {
162
+ const probe = node.app.fonts.layout(text || 'Mg', node.resolvedTextStyle());
163
+ inst.slots.get('implicitHeight')?.assign(Math.ceil(probe.height) + 8);
164
+ }
165
+ catch {
166
+ // No fonts loaded (headless without the fonts option): leave 0.
167
+ }
168
+ });
169
+ }
170
+ function editorView(tag) {
171
+ return function EditorView({ inst }) {
172
+ const style = geometryStyle(inst);
173
+ applyFontStyle(inst, style);
174
+ applyMotion(inst, style);
175
+ const text = str(inst.slot('text').peek());
176
+ useImplicitLineHeight(inst, text);
177
+ const maxLen = num(inst.slots.get('maximumLength')?.peek());
178
+ const props = {
179
+ ref: captureNode(inst),
180
+ style,
181
+ value: text,
182
+ onChange: (ev) => inst.slot('text').set(ev.value),
183
+ ...keyFocusProps(inst),
184
+ };
185
+ if (tag === 'textinput') {
186
+ props.onSubmit = () => inst.emit('accepted');
187
+ if (maxLen > 0 && maxLen < 32767)
188
+ props.maxLength = maxLen;
189
+ return _jsx("textinput", { ...props });
190
+ }
191
+ return _jsx("textarea", { ...props });
192
+ };
193
+ }
194
+ // --- the type definitions --------------------------------------------------
195
+ export const interactionTypes = {
196
+ MouseArea: {
197
+ extends: 'Item',
198
+ view: MouseAreaView,
199
+ properties: {
200
+ pressed: { default: false },
201
+ containsMouse: { default: false },
202
+ hoverEnabled: { default: false },
203
+ },
204
+ signals: {
205
+ clicked: ['mouse'],
206
+ doubleClicked: ['mouse'],
207
+ pressed: ['mouse'],
208
+ released: ['mouse'],
209
+ positionChanged: ['mouse'],
210
+ entered: [],
211
+ exited: [],
212
+ wheel: ['wheel'],
213
+ },
214
+ },
215
+ TextInput: {
216
+ extends: 'Item',
217
+ view: editorView('textinput'),
218
+ properties: {
219
+ text: { default: '' },
220
+ color: { default: undefined },
221
+ maximumLength: { default: 32767 },
222
+ 'font.pixelSize': { default: 0 },
223
+ 'font.pointSize': { default: 0 },
224
+ 'font.family': { default: '' },
225
+ 'font.bold': { default: false },
226
+ 'font.italic': { default: false },
227
+ 'font.weight': { default: 0 },
228
+ },
229
+ signals: { accepted: [], editingFinished: [] },
230
+ },
231
+ TextEdit: {
232
+ extends: 'Item',
233
+ view: editorView('textarea'),
234
+ properties: {
235
+ text: { default: '' },
236
+ color: { default: undefined },
237
+ 'font.pixelSize': { default: 0 },
238
+ 'font.pointSize': { default: 0 },
239
+ 'font.family': { default: '' },
240
+ 'font.bold': { default: false },
241
+ 'font.italic': { default: false },
242
+ 'font.weight': { default: 0 },
243
+ },
244
+ },
245
+ };
246
+ //# sourceMappingURL=interaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interaction.js","sourceRoot":"","sources":["../../src/qml/interaction.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ export interface QmlImport {
2
+ /** `import QtQuick 2.15` — a registry module name. */
3
+ module?: string;
4
+ /** `import "./widgets"` — a path import (resolved by the host app). */
5
+ path?: string;
6
+ version?: string;
7
+ alias?: string;
8
+ }
9
+ export interface ObjectIR {
10
+ type: string;
11
+ id: string | null;
12
+ members: MemberIR[];
13
+ loc: number;
14
+ }
15
+ export type ValueIR =
16
+ /** A JavaScript expression, compiled lazily by the runtime. */
17
+ {
18
+ kind: 'expr';
19
+ src: string;
20
+ loc: number;
21
+ }
22
+ /** `prop: { …statements }` — a script binding (still reactive). */
23
+ | {
24
+ kind: 'block';
25
+ src: string;
26
+ loc: number;
27
+ }
28
+ /** `delegate: Component { … }`, `background: Rectangle { … }`. */
29
+ | {
30
+ kind: 'object';
31
+ object: ObjectIR;
32
+ }
33
+ /** `states: [State { … }, …]` — an array of object templates. */
34
+ | {
35
+ kind: 'array';
36
+ items: ValueIR[];
37
+ };
38
+ export interface AliasTargetIR {
39
+ kind: 'alias-target';
40
+ path: string[];
41
+ }
42
+ export type MemberIR = {
43
+ kind: 'property';
44
+ name: string;
45
+ propType: string;
46
+ readonly: boolean;
47
+ default: boolean;
48
+ required: boolean;
49
+ value: ValueIR | AliasTargetIR | null;
50
+ loc: number;
51
+ } | {
52
+ kind: 'signal';
53
+ name: string;
54
+ params: Array<{
55
+ type: string;
56
+ name: string;
57
+ }>;
58
+ loc: number;
59
+ } | {
60
+ kind: 'function';
61
+ name: string;
62
+ params: string[];
63
+ body: string;
64
+ loc: number;
65
+ } | {
66
+ kind: 'binding';
67
+ path: string[];
68
+ value: ValueIR;
69
+ loc: number;
70
+ } | {
71
+ kind: 'group';
72
+ bindings: BindingMemberIR[];
73
+ loc: number;
74
+ } | {
75
+ kind: 'object';
76
+ object: ObjectIR;
77
+ loc: number;
78
+ } | {
79
+ kind: 'value-source';
80
+ object: ObjectIR;
81
+ on: string[];
82
+ loc: number;
83
+ } | {
84
+ kind: 'id';
85
+ id: string;
86
+ loc: number;
87
+ } | {
88
+ kind: 'inline-component';
89
+ name: string;
90
+ object: ObjectIR;
91
+ loc: number;
92
+ };
93
+ export type BindingMemberIR = Extract<MemberIR, {
94
+ kind: 'binding';
95
+ }>;
96
+ export interface QmlDocument {
97
+ fileName: string;
98
+ imports: QmlImport[];
99
+ pragmas: string[];
100
+ root: ObjectIR;
101
+ /** How this document was loaded — set by the engine when a resolver is
102
+ * in play, so the type names it uses can resolve `.qml` files relative
103
+ * to it (resolver.ts). */
104
+ load?: import('./resolver.js').DocLoad;
105
+ }
106
+ //# sourceMappingURL=ir.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ir.d.ts","sourceRoot":"","sources":["../../src/qml/ir.ts"],"names":[],"mappings":"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"}
package/dist/qml/ir.js ADDED
@@ -0,0 +1,7 @@
1
+ // The intermediate representation both halves share: the parser produces it,
2
+ // the runtime instantiates it, and the future compiler will serialize it.
3
+ // Everything is plain data — no methods, no cycles — so a document parses
4
+ // once and instantiates many times (a Repeater's delegate is one ObjectIR,
5
+ // however many rows exist).
6
+ export {};
7
+ //# sourceMappingURL=ir.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ir.js","sourceRoot":"","sources":["../../src/qml/ir.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,0EAA0E;AAC1E,0EAA0E;AAC1E,2EAA2E;AAC3E,4BAA4B"}
@@ -0,0 +1,3 @@
1
+ import { type QmlTypeDef } from './objects.js';
2
+ export declare const layoutTypes: Record<string, QmlTypeDef>;
3
+ //# sourceMappingURL=layouts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layouts.d.ts","sourceRoot":"","sources":["../../src/qml/layouts.tsx"],"names":[],"mappings":"AAuBA,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAkH5D,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAGlD,CAAC"}
@@ -0,0 +1,122 @@
1
+ import { jsx as _jsx } from "react-x11/jsx-runtime";
2
+ // QtQuick.Layouts — RowLayout and ColumnLayout, lowered onto yoga.
3
+ //
4
+ // This is react-x11's home turf: the container renders a flex `<box>` and
5
+ // every child renders as a flex item styled from its `Layout.*` attached
6
+ // properties (react.tsx, `layoutChildStyle`) — `fillWidth` is `flexGrow`,
7
+ // `preferredWidth` is the basis, `alignment` is `alignSelf`, margins are
8
+ // margins. Yoga decides the geometry; the renderer never re-implements it.
9
+ //
10
+ // What QML still needs from that arrangement is *readable geometry*:
11
+ // `item.x` and `item.width` are ordinary properties other bindings consume.
12
+ // After each layout pass the container reads its children's laid-out rects
13
+ // and `reflect()`s them into the x/y/width/height slots — a write that
14
+ // disturbs no binding and no flag, so the implicit-width default keeps
15
+ // meaning "content-sized" and an author `width:` keeps reading as a size
16
+ // hint. Expressions see yoga's answer; yoga sees the hints.
17
+ //
18
+ // GridLayout is not here yet — yoga has no grid, and a half-true one would
19
+ // be worse than the clear unknown-type error; RowLayout, ColumnLayout and
20
+ // the full Layout.* set cover the linked reference page.
21
+ import { useEffect } from 'react';
22
+ import { QmlInstance } from './objects.js';
23
+ import { renderQmlChildren, geometryStyle, preferredSpan } from './react.js';
24
+ import { applyMotion, captureNode, hostNode, initItem, num, } from './view-utils.js';
25
+ import { afterLayout, cancelAfterLayout, } from '../internal/timers.js';
26
+ function isRow(inst) {
27
+ return inst.typeInfo.name === 'RowLayout';
28
+ }
29
+ /** Reflect yoga's answers into the managed children's geometry slots. */
30
+ function feedbackLayout(inst) {
31
+ if (inst.destroyed)
32
+ return;
33
+ const containerAbs = hostNode(inst)?.abs;
34
+ if (!containerAbs)
35
+ return;
36
+ for (const child of inst.visualChildren()) {
37
+ const abs = hostNode(child)?.abs;
38
+ if (!abs)
39
+ continue; // a custom view without captureNode: skip quietly
40
+ child.slots.get('x')?.reflect(abs.x - containerAbs.x);
41
+ child.slots.get('y')?.reflect(abs.y - containerAbs.y);
42
+ child.slots.get('width')?.reflect(abs.width);
43
+ child.slots.get('height')?.reflect(abs.height);
44
+ }
45
+ }
46
+ function LayoutView({ inst }) {
47
+ const horizontal = isRow(inst);
48
+ const style = geometryStyle(inst);
49
+ style.display = 'flex';
50
+ style.flexDirection = horizontal ? 'row' : 'column';
51
+ style.gap = num(inst.slot('spacing').peek());
52
+ applyMotion(inst, style);
53
+ // Feed geometry back after the layout flush — and again whenever any
54
+ // child re-renders (its size hints may have moved yoga). A reflect that
55
+ // changes nothing notifies nobody, so this settles.
56
+ useEffect(() => {
57
+ let tick = null;
58
+ const schedule = () => {
59
+ cancelAfterLayout(tick);
60
+ tick = afterLayout(() => feedbackLayout(inst));
61
+ };
62
+ schedule();
63
+ const offs = inst.visualChildren().map((c) => c.subscribe(schedule));
64
+ return () => {
65
+ cancelAfterLayout(tick);
66
+ offs.forEach((off) => off());
67
+ };
68
+ });
69
+ return (_jsx("box", { ref: captureNode(inst), style: style, children: renderQmlChildren(inst) }));
70
+ }
71
+ /** The container's own size hint: sum of children's preferred spans on the
72
+ * main axis (plus spacing), max on the cross — tracked bindings, so a
73
+ * child's hint change resizes a content-sized layout. */
74
+ function layoutImplicit(inst) {
75
+ const horizontal = isRow(inst);
76
+ const tracked = (slot) => slot.get();
77
+ const mainExtent = () => {
78
+ let sum = 0;
79
+ let count = 0;
80
+ const spacing = num(inst.slot('spacing').get());
81
+ for (const child of inst.visualChildren()) {
82
+ if (child.slot('visible').get() === false)
83
+ continue;
84
+ sum += preferredSpan(child, horizontal, tracked) ?? 0;
85
+ count++;
86
+ }
87
+ return sum + spacing * Math.max(0, count - 1);
88
+ };
89
+ const crossExtent = () => {
90
+ let max = 0;
91
+ for (const child of inst.visualChildren()) {
92
+ if (child.slot('visible').get() === false)
93
+ continue;
94
+ max = Math.max(max, preferredSpan(child, !horizontal, tracked) ?? 0);
95
+ }
96
+ return max;
97
+ };
98
+ inst
99
+ .slot(horizontal ? 'implicitWidth' : 'implicitHeight')
100
+ .setBinding(mainExtent);
101
+ inst
102
+ .slot(horizontal ? 'implicitHeight' : 'implicitWidth')
103
+ .setBinding(crossExtent);
104
+ }
105
+ function layoutInit(inst) {
106
+ initItem(inst);
107
+ layoutImplicit(inst);
108
+ }
109
+ const layoutContainer = {
110
+ extends: 'Item',
111
+ managesChildLayout: true,
112
+ view: LayoutView,
113
+ // Qt's RowLayout/ColumnLayout default spacing.
114
+ properties: { spacing: { default: 5 } },
115
+ init: layoutInit,
116
+ onStructure: layoutImplicit, // a Repeater spliced new children in
117
+ };
118
+ export const layoutTypes = {
119
+ RowLayout: { ...layoutContainer },
120
+ ColumnLayout: { ...layoutContainer },
121
+ };
122
+ //# sourceMappingURL=layouts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layouts.js","sourceRoot":"","sources":["../../src/qml/layouts.tsx"],"names":[],"mappings":"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"}