@react-x11/components 0.2.1 → 0.4.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 (137) hide show
  1. package/README.md +6 -0
  2. package/dist/index.d.ts +4 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +5 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/internal/heights.d.ts +26 -1
  7. package/dist/internal/heights.d.ts.map +1 -1
  8. package/dist/internal/heights.js +57 -6
  9. package/dist/internal/heights.js.map +1 -1
  10. package/dist/internal/scroll.d.ts +11 -0
  11. package/dist/internal/scroll.d.ts.map +1 -1
  12. package/dist/internal/scroll.js +43 -3
  13. package/dist/internal/scroll.js.map +1 -1
  14. package/dist/internal/timers.d.ts +8 -0
  15. package/dist/internal/timers.d.ts.map +1 -1
  16. package/dist/internal/timers.js +10 -0
  17. package/dist/internal/timers.js.map +1 -1
  18. package/dist/internal/window.d.ts +161 -0
  19. package/dist/internal/window.d.ts.map +1 -0
  20. package/dist/internal/window.js +417 -0
  21. package/dist/internal/window.js.map +1 -0
  22. package/dist/qml/containers.d.ts +3 -0
  23. package/dist/qml/containers.d.ts.map +1 -0
  24. package/dist/qml/containers.js +331 -0
  25. package/dist/qml/containers.js.map +1 -0
  26. package/dist/qml/controls.d.ts +12 -0
  27. package/dist/qml/controls.d.ts.map +1 -0
  28. package/dist/qml/controls.js +21 -0
  29. package/dist/qml/controls.js.map +1 -0
  30. package/dist/qml/globals.d.ts +6 -0
  31. package/dist/qml/globals.d.ts.map +1 -0
  32. package/dist/qml/globals.js +25 -0
  33. package/dist/qml/globals.js.map +1 -0
  34. package/dist/qml/index.d.ts +15 -0
  35. package/dist/qml/index.d.ts.map +1 -0
  36. package/dist/qml/index.js +25 -0
  37. package/dist/qml/index.js.map +1 -0
  38. package/dist/qml/interaction.d.ts +12 -0
  39. package/dist/qml/interaction.d.ts.map +1 -0
  40. package/dist/qml/interaction.js +246 -0
  41. package/dist/qml/interaction.js.map +1 -0
  42. package/dist/qml/ir.d.ts +106 -0
  43. package/dist/qml/ir.d.ts.map +1 -0
  44. package/dist/qml/ir.js +7 -0
  45. package/dist/qml/ir.js.map +1 -0
  46. package/dist/qml/layouts.d.ts +3 -0
  47. package/dist/qml/layouts.d.ts.map +1 -0
  48. package/dist/qml/layouts.js +122 -0
  49. package/dist/qml/layouts.js.map +1 -0
  50. package/dist/qml/models.d.ts +14 -0
  51. package/dist/qml/models.d.ts.map +1 -0
  52. package/dist/qml/models.js +80 -0
  53. package/dist/qml/models.js.map +1 -0
  54. package/dist/qml/objects.d.ts +228 -0
  55. package/dist/qml/objects.d.ts.map +1 -0
  56. package/dist/qml/objects.js +1103 -0
  57. package/dist/qml/objects.js.map +1 -0
  58. package/dist/qml/parse.d.ts +10 -0
  59. package/dist/qml/parse.d.ts.map +1 -0
  60. package/dist/qml/parse.js +607 -0
  61. package/dist/qml/parse.js.map +1 -0
  62. package/dist/qml/qtquick.d.ts +7 -0
  63. package/dist/qml/qtquick.d.ts.map +1 -0
  64. package/dist/qml/qtquick.js +347 -0
  65. package/dist/qml/qtquick.js.map +1 -0
  66. package/dist/qml/react.d.ts +83 -0
  67. package/dist/qml/react.d.ts.map +1 -0
  68. package/dist/qml/react.js +323 -0
  69. package/dist/qml/react.js.map +1 -0
  70. package/dist/qml/resolver.d.ts +38 -0
  71. package/dist/qml/resolver.d.ts.map +1 -0
  72. package/dist/qml/resolver.js +64 -0
  73. package/dist/qml/resolver.js.map +1 -0
  74. package/dist/qml/slots.d.ts +65 -0
  75. package/dist/qml/slots.d.ts.map +1 -0
  76. package/dist/qml/slots.js +230 -0
  77. package/dist/qml/slots.js.map +1 -0
  78. package/dist/qml/states.d.ts +5 -0
  79. package/dist/qml/states.d.ts.map +1 -0
  80. package/dist/qml/states.js +276 -0
  81. package/dist/qml/states.js.map +1 -0
  82. package/dist/qml/view-utils.d.ts +42 -0
  83. package/dist/qml/view-utils.d.ts.map +1 -0
  84. package/dist/qml/view-utils.js +121 -0
  85. package/dist/qml/view-utils.js.map +1 -0
  86. package/dist/table/index.d.ts +73 -2
  87. package/dist/table/index.d.ts.map +1 -1
  88. package/dist/table/index.js +405 -161
  89. package/dist/table/index.js.map +1 -1
  90. package/dist/tabs/hx.d.ts +18 -0
  91. package/dist/tabs/hx.d.ts.map +1 -0
  92. package/dist/tabs/hx.js +10 -0
  93. package/dist/tabs/hx.js.map +1 -0
  94. package/dist/tabs/index.d.ts +143 -0
  95. package/dist/tabs/index.d.ts.map +1 -0
  96. package/dist/tabs/index.js +602 -0
  97. package/dist/tabs/index.js.map +1 -0
  98. package/dist/terminal/vt/index.d.ts +1 -1
  99. package/dist/terminal/vt/index.d.ts.map +1 -1
  100. package/dist/terminal/vt/index.js +3 -3
  101. package/dist/terminal/vt/index.js.map +1 -1
  102. package/dist/terminal/vt/pty.d.ts +16 -0
  103. package/dist/terminal/vt/pty.d.ts.map +1 -1
  104. package/dist/terminal/vt/pty.js +186 -0
  105. package/dist/terminal/vt/pty.js.map +1 -1
  106. package/dist/tree/index.d.ts +65 -5
  107. package/dist/tree/index.d.ts.map +1 -1
  108. package/dist/tree/index.js +446 -189
  109. package/dist/tree/index.js.map +1 -1
  110. package/package.json +11 -1
  111. package/src/index.ts +44 -0
  112. package/src/internal/heights.ts +57 -6
  113. package/src/internal/scroll.ts +59 -3
  114. package/src/internal/timers.ts +13 -0
  115. package/src/internal/window.ts +570 -0
  116. package/src/qml/containers.tsx +380 -0
  117. package/src/qml/controls.tsx +47 -0
  118. package/src/qml/globals.ts +33 -0
  119. package/src/qml/index.ts +67 -0
  120. package/src/qml/interaction.tsx +317 -0
  121. package/src/qml/ir.ts +80 -0
  122. package/src/qml/layouts.tsx +141 -0
  123. package/src/qml/models.ts +101 -0
  124. package/src/qml/objects.ts +1431 -0
  125. package/src/qml/parse.ts +624 -0
  126. package/src/qml/qtquick.tsx +413 -0
  127. package/src/qml/react.tsx +454 -0
  128. package/src/qml/resolver.ts +99 -0
  129. package/src/qml/slots.ts +249 -0
  130. package/src/qml/states.ts +318 -0
  131. package/src/qml/view-utils.ts +140 -0
  132. package/src/table/index.ts +599 -178
  133. package/src/tabs/hx.ts +31 -0
  134. package/src/tabs/index.ts +850 -0
  135. package/src/terminal/vt/index.ts +4 -2
  136. package/src/terminal/vt/pty.ts +243 -0
  137. package/src/tree/index.ts +687 -260
@@ -0,0 +1,347 @@
1
+ import { jsx as _jsx } from "react-x11/jsx-runtime";
2
+ // The QtQuick module: QML's core types over react-x11's intrinsic
3
+ // elements. The mapping table lives in docs/components/qml.md. The short
4
+ // version: Item/Rectangle are `<box>` with absolute geometry driven by the
5
+ // slot graph, Text is `<text>` with implicit size measured through the
6
+ // same ntk font stack the renderer lays out with, and every kind of motion
7
+ // (`Behavior`, state `Transition`s, looping animations) lowers onto the
8
+ // renderer's own `transition`/`animation` style engines — the renderer
9
+ // animates; the property jumps (the documented divergence).
10
+ import { useEffect } from 'react';
11
+ import { Qt, QmlInstance, registerQmlModule, } from './objects.js';
12
+ import { renderQmlChildren } from './react.js';
13
+ import { anchorProperties, applyMotion, captureNode, geometryStyle, hostNode, initItem, num, qmlColor, str, } from './view-utils.js';
14
+ import { applyFontStyle, interactionTypes, keyFocusProps, } from './interaction.js';
15
+ import { containerTypes } from './containers.js';
16
+ import { layoutTypes } from './layouts.js';
17
+ import { modelTypes } from './models.js';
18
+ import { stateTypes } from './states.js';
19
+ import { cancel, schedule, warn } from './globals.js';
20
+ // Qt namespace constants used from expressions (`Qt.LeftButton`,
21
+ // `mouse.modifiers & Qt.ShiftModifier`, `Qt.AlignHCenter`).
22
+ Object.assign(Qt, {
23
+ LeftButton: 1,
24
+ RightButton: 2,
25
+ MiddleButton: 4,
26
+ ShiftModifier: 0x02000000,
27
+ ControlModifier: 0x04000000,
28
+ AltModifier: 0x08000000,
29
+ MetaModifier: 0x10000000,
30
+ AlignLeft: 1,
31
+ AlignRight: 2,
32
+ AlignHCenter: 4,
33
+ AlignTop: 32,
34
+ AlignBottom: 64,
35
+ AlignVCenter: 128,
36
+ });
37
+ // --- views -----------------------------------------------------------------
38
+ function ItemView({ inst }) {
39
+ const style = geometryStyle(inst);
40
+ applyMotion(inst, style);
41
+ return (_jsx("box", { ref: captureNode(inst), style: style, ...keyFocusProps(inst), children: renderQmlChildren(inst) }));
42
+ }
43
+ function RectangleView({ inst }) {
44
+ const style = geometryStyle(inst);
45
+ style.backgroundColor = qmlColor(inst.slot('color').peek());
46
+ const radius = num(inst.slot('radius').peek());
47
+ if (radius)
48
+ style.borderRadius = radius;
49
+ const bw = num(inst.slot('border.width').peek());
50
+ if (bw) {
51
+ style.borderWidth = bw;
52
+ style.borderColor = qmlColor(inst.slot('border.color').peek());
53
+ }
54
+ applyMotion(inst, style);
55
+ return (_jsx("box", { ref: captureNode(inst), style: style, ...keyFocusProps(inst), children: renderQmlChildren(inst) }));
56
+ }
57
+ function TextView({ inst }) {
58
+ const style = geometryStyle(inst, { contentSized: true });
59
+ applyFontStyle(inst, style);
60
+ const wrap = num(inst.slot('wrapMode').peek());
61
+ style.textWrap = wrap ? 'wrap' : 'nowrap';
62
+ const elide = num(inst.slot('elide').peek());
63
+ if (elide === 1 || elide === 2) {
64
+ style.textOverflow = 'ellipsis';
65
+ style.textWrap = 'nowrap';
66
+ }
67
+ const halign = num(inst.slot('horizontalAlignment').peek());
68
+ if (halign === 1)
69
+ style.textAlign = 'left';
70
+ else if (halign === 2)
71
+ style.textAlign = 'right';
72
+ else if (halign === 4)
73
+ style.textAlign = 'center';
74
+ applyMotion(inst, style);
75
+ const text = str(inst.slot('text').peek());
76
+ // Implicit size, measured by the engine that will draw it. `assign`
77
+ // (never `set`) so this is not mistaken for interactive state.
78
+ useEffect(() => {
79
+ const node = hostNode(inst);
80
+ if (!node?.app?.fonts || !node.resolvedTextStyle)
81
+ return;
82
+ try {
83
+ const layout = node.app.fonts.layout(text, node.resolvedTextStyle());
84
+ inst.slots.get('implicitWidth')?.assign(Math.ceil(layout.width));
85
+ inst.slots.get('implicitHeight')?.assign(Math.ceil(layout.height));
86
+ }
87
+ catch {
88
+ // No fonts loaded (headless without the fonts option): leave 0.
89
+ }
90
+ });
91
+ return (_jsx("text", { ref: captureNode(inst), style: style, ...keyFocusProps(inst), children: text }));
92
+ }
93
+ const warnedFillMode = { done: false };
94
+ function ImageView({ inst }) {
95
+ const style = geometryStyle(inst);
96
+ applyMotion(inst, style);
97
+ const source = str(inst.slot('source').peek());
98
+ if (num(inst.slot('fillMode').peek()) !== 0 && !warnedFillMode.done) {
99
+ warnedFillMode.done = true;
100
+ warn('QML: Image.fillMode other than Stretch needs a fit mode in core ' +
101
+ '<image>; the image is stretched.');
102
+ }
103
+ if (!source)
104
+ return _jsx("box", { style: style, children: renderQmlChildren(inst) });
105
+ return (_jsx("image", { src: source, style: style, children: renderQmlChildren(inst) }));
106
+ }
107
+ // --- animation sources -----------------------------------------------------
108
+ function behaviorHookup(beh, hookup) {
109
+ const { targetSlot, target } = hookup;
110
+ const motion = target.state;
111
+ (motion.behaviors ??= {})[targetSlot.name] = beh;
112
+ target._changed();
113
+ }
114
+ function numberAnimationHookup(anim, hookup) {
115
+ const { targetSlot, target } = hookup;
116
+ const prop = targetSlot.name;
117
+ const motion = target.state;
118
+ const sync = () => {
119
+ const loops = num(anim.slot('loops').peek());
120
+ const running = anim.slot('running').peek();
121
+ const from = anim.slot('from').peek();
122
+ const to = anim.slot('to').peek();
123
+ const duration = num(anim.slot('duration').peek()) || 250;
124
+ if (loops === -1 &&
125
+ from !== undefined &&
126
+ to !== undefined &&
127
+ running !== false) {
128
+ // `loops: Animation.Infinite` — the style `animation` engine's case.
129
+ (motion.loopAnims ??= {})[prop] = { from, to, duration };
130
+ target._changed();
131
+ return;
132
+ }
133
+ if (motion.loopAnims?.[prop]) {
134
+ delete motion.loopAnims[prop];
135
+ target._changed();
136
+ }
137
+ // A property value source auto-runs unless told `running: false` —
138
+ // Qt's rule for `NumberAnimation on x`.
139
+ if (running === true || (running === undefined && to !== undefined)) {
140
+ // One crossing: commit `to`; the renderer eases from where it is
141
+ // (`from` is visual-only here — the documented divergence).
142
+ (motion.behaviors ??= {})[prop] = anim;
143
+ target._changed();
144
+ if (to !== undefined)
145
+ targetSlot.assign(to);
146
+ cancel(anim.state.stopId);
147
+ anim.state.stopId = schedule(() => {
148
+ anim.slot('running').assign(false);
149
+ }, duration);
150
+ }
151
+ else {
152
+ cancel(anim.state.stopId);
153
+ if (motion.behaviors?.[prop] === anim) {
154
+ delete motion.behaviors[prop];
155
+ target._changed();
156
+ }
157
+ }
158
+ };
159
+ anim.slot('running').watch(sync);
160
+ sync();
161
+ }
162
+ // --- Timer -----------------------------------------------------------------
163
+ function timerSync(inst) {
164
+ cancel(inst.state.timeout);
165
+ inst.state.timeout = null;
166
+ if (inst.destroyed || inst.slot('running').peek() !== true)
167
+ return;
168
+ const tick = () => {
169
+ inst.state.timeout = schedule(() => {
170
+ if (inst.destroyed)
171
+ return;
172
+ if (inst.slot('repeat').peek() && inst.slot('running').peek())
173
+ tick();
174
+ else
175
+ inst.slot('running').assign(false);
176
+ inst.emit('triggered');
177
+ }, num(inst.slot('interval').peek()));
178
+ };
179
+ tick();
180
+ }
181
+ // --- registration ----------------------------------------------------------
182
+ const TEXT_ENUMS = {
183
+ // Qt's actual values, so ported documents keep meaning.
184
+ NoWrap: 0,
185
+ WordWrap: 1,
186
+ WrapAnywhere: 3,
187
+ Wrap: 4,
188
+ ElideLeft: 0,
189
+ ElideRight: 1,
190
+ ElideMiddle: 2,
191
+ ElideNone: 3,
192
+ AlignLeft: 1,
193
+ AlignRight: 2,
194
+ AlignHCenter: 4,
195
+ AlignJustify: 8,
196
+ AlignTop: 32,
197
+ AlignBottom: 64,
198
+ AlignVCenter: 128,
199
+ };
200
+ const coreTypes = {
201
+ QtObject: { nonVisual: true, properties: {} },
202
+ Item: {
203
+ view: ItemView,
204
+ init: initItem,
205
+ properties: {
206
+ x: { default: 0 },
207
+ y: { default: 0 },
208
+ width: { default: 0 },
209
+ height: { default: 0 },
210
+ implicitWidth: { default: 0 },
211
+ implicitHeight: { default: 0 },
212
+ visible: { default: true },
213
+ enabled: { default: true },
214
+ clip: { default: false },
215
+ z: { default: 0 },
216
+ opacity: { default: 1 },
217
+ rotation: { default: 0 },
218
+ scale: { default: 1 },
219
+ focus: { default: false },
220
+ activeFocus: { default: false },
221
+ state: { default: '' },
222
+ // Object arrays land as templates; these slots catch the empty and
223
+ // dynamic forms (`states: []`) without a diagnostic.
224
+ states: { default: undefined },
225
+ transitions: { default: undefined },
226
+ ...anchorProperties,
227
+ },
228
+ },
229
+ Rectangle: {
230
+ extends: 'Item',
231
+ view: RectangleView,
232
+ properties: {
233
+ color: { default: 'white' },
234
+ radius: { default: 0 },
235
+ 'border.width': { default: 0 },
236
+ 'border.color': { default: 'black' },
237
+ },
238
+ },
239
+ Text: {
240
+ extends: 'Item',
241
+ view: TextView,
242
+ properties: {
243
+ text: { default: '' },
244
+ color: { default: 'black' },
245
+ wrapMode: { default: 0 },
246
+ elide: { default: 3 }, // Qt.ElideNone
247
+ horizontalAlignment: { default: 0 },
248
+ verticalAlignment: { default: 0 },
249
+ 'font.pixelSize': { default: 0 },
250
+ 'font.pointSize': { default: 0 },
251
+ 'font.family': { default: '' },
252
+ 'font.bold': { default: false },
253
+ 'font.italic': { default: false },
254
+ 'font.weight': { default: 0 },
255
+ },
256
+ enums: TEXT_ENUMS,
257
+ },
258
+ Image: {
259
+ extends: 'Item',
260
+ view: ImageView,
261
+ properties: { source: { default: '' }, fillMode: { default: 0 } },
262
+ enums: {
263
+ Stretch: 0,
264
+ PreserveAspectFit: 1,
265
+ PreserveAspectCrop: 2,
266
+ Tile: 3,
267
+ },
268
+ },
269
+ Timer: {
270
+ nonVisual: true,
271
+ properties: {
272
+ interval: { default: 1000 },
273
+ running: { default: false },
274
+ repeat: { default: false },
275
+ },
276
+ signals: { triggered: [] },
277
+ init(inst) {
278
+ inst.methods.set('start', () => inst.slot('running').assign(true));
279
+ inst.methods.set('stop', () => inst.slot('running').assign(false));
280
+ inst.methods.set('restart', () => {
281
+ inst.slot('running').assign(false);
282
+ inst.slot('running').assign(true);
283
+ });
284
+ inst.slot('running').watch(() => timerSync(inst));
285
+ inst.slot('interval').watch(() => timerSync(inst));
286
+ timerSync(inst);
287
+ },
288
+ dispose(inst) {
289
+ cancel(inst.state.timeout);
290
+ },
291
+ },
292
+ Behavior: {
293
+ nonVisual: true,
294
+ properties: { enabled: { default: true } },
295
+ init(inst, hookup) {
296
+ if (hookup)
297
+ behaviorHookup(inst, hookup);
298
+ },
299
+ },
300
+ /** The `Animation.Infinite` namespace. */
301
+ Animation: { nonVisual: true, enums: { Infinite: -1 } },
302
+ NumberAnimation: {
303
+ nonVisual: true,
304
+ properties: {
305
+ duration: { default: 250 },
306
+ from: { default: undefined },
307
+ to: { default: undefined },
308
+ loops: { default: 1 },
309
+ // Undefined so a value source can tell "never said" (auto-runs, as
310
+ // in Qt) from an explicit `running: false`.
311
+ running: { default: undefined },
312
+ properties: { default: '' }, // Transition's per-property list
313
+ property: { default: '' },
314
+ },
315
+ init(inst, hookup) {
316
+ if (hookup)
317
+ numberAnimationHookup(inst, hookup);
318
+ },
319
+ dispose(inst) {
320
+ cancel(inst.state.stopId);
321
+ },
322
+ },
323
+ ColorAnimation: { extends: 'NumberAnimation', nonVisual: true },
324
+ PropertyAnimation: { extends: 'NumberAnimation', nonVisual: true },
325
+ };
326
+ let registered = false;
327
+ /** Populate the QtQuick registry — the family's one import-time side
328
+ * effect, called from `src/qml/index.ts` at module scope the way a
329
+ * component's `registerElement` is. */
330
+ export function registerQtQuick() {
331
+ if (registered)
332
+ return;
333
+ registered = true;
334
+ registerQmlModule('QtQuick', {
335
+ version: '2.0',
336
+ types: {
337
+ ...coreTypes,
338
+ ...stateTypes,
339
+ ...modelTypes,
340
+ ...containerTypes,
341
+ ...interactionTypes,
342
+ },
343
+ });
344
+ registerQmlModule('QtQuick.Layouts', { version: '1.15', types: layoutTypes });
345
+ }
346
+ export { qmlColor };
347
+ //# sourceMappingURL=qtquick.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qtquick.js","sourceRoot":"","sources":["../../src/qml/qtquick.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ import type { ComponentType, ReactNode } from 'react';
2
+ import type { Style } from 'react-x11/style';
3
+ import { Context, QmlInstance, type QmlFacade, type QmlPropertyDef } from './objects.js';
4
+ import type { QmlResolver } from './resolver.js';
5
+ export declare function useQmlVersion(inst: QmlInstance): number;
6
+ export declare function QmlNode({ inst }: {
7
+ inst: QmlInstance;
8
+ }): ReactNode;
9
+ export declare function renderQmlChildren(inst: QmlInstance): ReactNode[];
10
+ export interface QmlViewHandle {
11
+ /** The root object, as expressions see it: live properties, callable
12
+ * signals and methods. */
13
+ root: QmlFacade;
14
+ /** An object by its document id, or null. */
15
+ id(name: string): QmlFacade | null;
16
+ instance: QmlInstance;
17
+ }
18
+ export interface QmlViewProps {
19
+ /** QML source text. When it changes the tree is rebuilt; interactive
20
+ * state (assigned property values) is carried across by id — the
21
+ * hot-reload story. Pass `hotReload={false}` for a cold swap. */
22
+ source: string;
23
+ /** Shown in errors; pass the file path when the source came from one. */
24
+ file?: string;
25
+ /** Context properties — names visible to every binding in the document.
26
+ * Updated values ride ordinary commits. */
27
+ context?: Record<string, unknown>;
28
+ /** Subscriptions to the root object's signals, by signal name. */
29
+ onSignal?: Record<string, (...args: unknown[]) => void>;
30
+ hotReload?: boolean;
31
+ /** Enables `.qml`-file resolution — the implicit same-directory import
32
+ * and quoted-path imports. `createFileResolver(dir)` is the standard
33
+ * filesystem one; any object with the `QmlResolver` shape works
34
+ * (resolver.ts). Fixed for the lifetime of the view. */
35
+ resolver?: QmlResolver;
36
+ /** Rebuild (with the same state migration a `source` change gets) when
37
+ * this value changes — how a watcher of *sibling* `.qml` files triggers
38
+ * a hot reload the unchanged root source cannot. */
39
+ reloadToken?: unknown;
40
+ style?: Style | Style[];
41
+ }
42
+ /**
43
+ * A QML document as a react-x11 element tree.
44
+ *
45
+ * The wrapper box takes the root object's declared size when it has one;
46
+ * otherwise it is sized by the app (the `style` prop) and feeds its
47
+ * laid-out size back into the root's implicit size, so `width`/`height`
48
+ * bindings inside the document see the real number — the "root fills the
49
+ * window" behavior.
50
+ */
51
+ export declare const QmlView: import("react").ForwardRefExoticComponent<QmlViewProps & import("react").RefAttributes<QmlViewHandle>>;
52
+ export interface RegisterReactComponentOptions {
53
+ properties?: Record<string, QmlPropertyDef>;
54
+ signals?: Record<string, string[]>;
55
+ /** Reshape when prop names don't line up one-to-one. */
56
+ toProps?: (props: Record<string, unknown>, inst: QmlInstance) => Record<string, unknown>;
57
+ }
58
+ /**
59
+ * Register a React component as a QML type — the "extend in code" seam.
60
+ *
61
+ * registerReactComponent('Shop.Widgets', 'PriceTag', PriceTag, {
62
+ * properties: { amount: { default: 0 } },
63
+ * signals: { activated: [] },
64
+ * });
65
+ *
66
+ * Declared properties arrive as props (live: a binding update re-renders
67
+ * the component); declared signals arrive as `on<Signal>` callback props
68
+ * that emit back into QML.
69
+ */
70
+ export declare function registerReactComponent(moduleName: string, typeName: string, Component: ComponentType<Record<string, unknown>>, { properties, signals, toProps, }?: RegisterReactComponentOptions): void;
71
+ export declare function geometryStyle(inst: QmlInstance, { contentSized }?: {
72
+ contentSized?: boolean | undefined;
73
+ }): Style;
74
+ /**
75
+ * An item's size hint on one axis, in Qt's order: `Layout.preferredWidth`,
76
+ * then an author-set `width` (friendlier than Qt, which ignores it — ours
77
+ * reads as a preferred size), then `implicitWidth`. `read` decides
78
+ * tracking: `.get` inside the container's implicit-size bindings, `.peek`
79
+ * during render.
80
+ */
81
+ export declare function preferredSpan(inst: QmlInstance, horizontal: boolean, read: (slot: NonNullable<ReturnType<QmlInstance['slots']['get']>>) => unknown, filling?: boolean): number | null;
82
+ export { Context, QmlInstance };
83
+ //# sourceMappingURL=react.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../src/qml/react.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,aAAa,EAAgB,SAAS,EAAO,MAAM,OAAO,CAAC;AAEzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAI7C,OAAO,EACL,OAAO,EACP,WAAW,EAKX,KAAK,SAAS,EACd,KAAK,cAAc,EACpB,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAKvD;AAED,wBAAgB,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GAAG,SAAS,CAMlE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,EAAE,CAEhE;AAED,MAAM,WAAW,aAAa;IAC5B;8BAC0B;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,6CAA6C;IAC7C,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACnC,QAAQ,EAAE,WAAW,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B;;qEAEiE;IACjE,MAAM,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;+CAC2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC;IACxD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;4DAGwD;IACxD,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB;;wDAEoD;IACpD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,CAAC;CACzB;AAQD;;;;;;;;GAQG;AACH,eAAO,MAAM,OAAO,wGAwGlB,CAAC;AAKH,MAAM,WAAW,6BAA6B;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACnC,wDAAwD;IACxD,OAAO,CAAC,EAAE,CACR,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,IAAI,EAAE,WAAW,KACd,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACjD,EACE,UAAe,EACf,OAAY,EACZ,OAAO,GACR,GAAE,6BAAkC,GACpC,IAAI,CA0BN;AAID,wBAAgB,aAAa,CAC3B,IAAI,EAAE,WAAW,EACjB,EAAE,YAAoB,EAAE;;CAAK,GAC5B,KAAK,CAuBP;AAiBD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,WAAW,EACjB,UAAU,EAAE,OAAO,EACnB,IAAI,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,EAC7E,OAAO,UAAQ,GACd,MAAM,GAAG,IAAI,CAuBf;AAqGD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC"}