@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.
- package/README.md +6 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/internal/heights.d.ts +26 -1
- package/dist/internal/heights.d.ts.map +1 -1
- package/dist/internal/heights.js +57 -6
- package/dist/internal/heights.js.map +1 -1
- package/dist/internal/scroll.d.ts +11 -0
- package/dist/internal/scroll.d.ts.map +1 -1
- package/dist/internal/scroll.js +43 -3
- package/dist/internal/scroll.js.map +1 -1
- package/dist/internal/timers.d.ts +8 -0
- package/dist/internal/timers.d.ts.map +1 -1
- package/dist/internal/timers.js +10 -0
- package/dist/internal/timers.js.map +1 -1
- package/dist/internal/window.d.ts +161 -0
- package/dist/internal/window.d.ts.map +1 -0
- package/dist/internal/window.js +417 -0
- package/dist/internal/window.js.map +1 -0
- package/dist/qml/containers.d.ts +3 -0
- package/dist/qml/containers.d.ts.map +1 -0
- package/dist/qml/containers.js +331 -0
- package/dist/qml/containers.js.map +1 -0
- package/dist/qml/controls.d.ts +12 -0
- package/dist/qml/controls.d.ts.map +1 -0
- package/dist/qml/controls.js +21 -0
- package/dist/qml/controls.js.map +1 -0
- package/dist/qml/globals.d.ts +6 -0
- package/dist/qml/globals.d.ts.map +1 -0
- package/dist/qml/globals.js +25 -0
- package/dist/qml/globals.js.map +1 -0
- package/dist/qml/index.d.ts +15 -0
- package/dist/qml/index.d.ts.map +1 -0
- package/dist/qml/index.js +25 -0
- package/dist/qml/index.js.map +1 -0
- package/dist/qml/interaction.d.ts +12 -0
- package/dist/qml/interaction.d.ts.map +1 -0
- package/dist/qml/interaction.js +246 -0
- package/dist/qml/interaction.js.map +1 -0
- package/dist/qml/ir.d.ts +106 -0
- package/dist/qml/ir.d.ts.map +1 -0
- package/dist/qml/ir.js +7 -0
- package/dist/qml/ir.js.map +1 -0
- package/dist/qml/layouts.d.ts +3 -0
- package/dist/qml/layouts.d.ts.map +1 -0
- package/dist/qml/layouts.js +122 -0
- package/dist/qml/layouts.js.map +1 -0
- package/dist/qml/models.d.ts +14 -0
- package/dist/qml/models.d.ts.map +1 -0
- package/dist/qml/models.js +80 -0
- package/dist/qml/models.js.map +1 -0
- package/dist/qml/objects.d.ts +228 -0
- package/dist/qml/objects.d.ts.map +1 -0
- package/dist/qml/objects.js +1103 -0
- package/dist/qml/objects.js.map +1 -0
- package/dist/qml/parse.d.ts +10 -0
- package/dist/qml/parse.d.ts.map +1 -0
- package/dist/qml/parse.js +607 -0
- package/dist/qml/parse.js.map +1 -0
- package/dist/qml/qtquick.d.ts +7 -0
- package/dist/qml/qtquick.d.ts.map +1 -0
- package/dist/qml/qtquick.js +347 -0
- package/dist/qml/qtquick.js.map +1 -0
- package/dist/qml/react.d.ts +83 -0
- package/dist/qml/react.d.ts.map +1 -0
- package/dist/qml/react.js +323 -0
- package/dist/qml/react.js.map +1 -0
- package/dist/qml/resolver.d.ts +38 -0
- package/dist/qml/resolver.d.ts.map +1 -0
- package/dist/qml/resolver.js +64 -0
- package/dist/qml/resolver.js.map +1 -0
- package/dist/qml/slots.d.ts +65 -0
- package/dist/qml/slots.d.ts.map +1 -0
- package/dist/qml/slots.js +230 -0
- package/dist/qml/slots.js.map +1 -0
- package/dist/qml/states.d.ts +5 -0
- package/dist/qml/states.d.ts.map +1 -0
- package/dist/qml/states.js +276 -0
- package/dist/qml/states.js.map +1 -0
- package/dist/qml/view-utils.d.ts +42 -0
- package/dist/qml/view-utils.d.ts.map +1 -0
- package/dist/qml/view-utils.js +121 -0
- package/dist/qml/view-utils.js.map +1 -0
- package/dist/table/index.d.ts +73 -2
- package/dist/table/index.d.ts.map +1 -1
- package/dist/table/index.js +405 -161
- package/dist/table/index.js.map +1 -1
- package/dist/tabs/hx.d.ts +18 -0
- package/dist/tabs/hx.d.ts.map +1 -0
- package/dist/tabs/hx.js +10 -0
- package/dist/tabs/hx.js.map +1 -0
- package/dist/tabs/index.d.ts +143 -0
- package/dist/tabs/index.d.ts.map +1 -0
- package/dist/tabs/index.js +602 -0
- package/dist/tabs/index.js.map +1 -0
- package/dist/terminal/vt/index.d.ts +1 -1
- package/dist/terminal/vt/index.d.ts.map +1 -1
- package/dist/terminal/vt/index.js +3 -3
- package/dist/terminal/vt/index.js.map +1 -1
- package/dist/terminal/vt/pty.d.ts +16 -0
- package/dist/terminal/vt/pty.d.ts.map +1 -1
- package/dist/terminal/vt/pty.js +186 -0
- package/dist/terminal/vt/pty.js.map +1 -1
- package/dist/tree/index.d.ts +65 -5
- package/dist/tree/index.d.ts.map +1 -1
- package/dist/tree/index.js +446 -189
- package/dist/tree/index.js.map +1 -1
- package/package.json +11 -1
- package/src/index.ts +44 -0
- package/src/internal/heights.ts +57 -6
- package/src/internal/scroll.ts +59 -3
- package/src/internal/timers.ts +13 -0
- package/src/internal/window.ts +570 -0
- package/src/qml/containers.tsx +380 -0
- package/src/qml/controls.tsx +47 -0
- package/src/qml/globals.ts +33 -0
- package/src/qml/index.ts +67 -0
- package/src/qml/interaction.tsx +317 -0
- package/src/qml/ir.ts +80 -0
- package/src/qml/layouts.tsx +141 -0
- package/src/qml/models.ts +101 -0
- package/src/qml/objects.ts +1431 -0
- package/src/qml/parse.ts +624 -0
- package/src/qml/qtquick.tsx +413 -0
- package/src/qml/react.tsx +454 -0
- package/src/qml/resolver.ts +99 -0
- package/src/qml/slots.ts +249 -0
- package/src/qml/states.ts +318 -0
- package/src/qml/view-utils.ts +140 -0
- package/src/table/index.ts +599 -178
- package/src/tabs/hx.ts +31 -0
- package/src/tabs/index.ts +850 -0
- package/src/terminal/vt/index.ts +4 -2
- package/src/terminal/vt/pty.ts +243 -0
- package/src/tree/index.ts +687 -260
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
// Helpers every QtQuick view shares: colour conversion, the geometry →
|
|
2
|
+
// style mapping, and the motion merge (Behavior / state transitions /
|
|
3
|
+
// looping animations lowered onto react-x11's own `transition` and
|
|
4
|
+
// `animation` style engines).
|
|
5
|
+
import { QmlInstance } from './objects.js';
|
|
6
|
+
import { geometryStyle } from './react.js';
|
|
7
|
+
import { setupStates } from './states.js';
|
|
8
|
+
export const num = (v) => typeof v === 'number' && Number.isFinite(v) ? v : 0;
|
|
9
|
+
export const str = (v) => (v == null ? '' : String(v));
|
|
10
|
+
/** QML hex colours put alpha FIRST (#AARRGGBB); CSS puts it last. */
|
|
11
|
+
export function qmlColor(v) {
|
|
12
|
+
if (typeof v !== 'string')
|
|
13
|
+
return v == null ? undefined : String(v);
|
|
14
|
+
if (v[0] === '#' && v.length === 9)
|
|
15
|
+
return `#${v.slice(3)}${v.slice(1, 3)}`;
|
|
16
|
+
if (v[0] === '#' && v.length === 5)
|
|
17
|
+
return `#${v.slice(2)}${v.slice(1, 2)}`;
|
|
18
|
+
return v;
|
|
19
|
+
}
|
|
20
|
+
/** QML property name → the style key the renderer animates. */
|
|
21
|
+
export const STYLE_KEY = {
|
|
22
|
+
x: 'left',
|
|
23
|
+
y: 'top',
|
|
24
|
+
width: 'width',
|
|
25
|
+
height: 'height',
|
|
26
|
+
color: 'backgroundColor',
|
|
27
|
+
radius: 'borderRadius',
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Merge the instance's motion sources into the style. The renderer
|
|
31
|
+
* animates; the property jumps — the declared divergence from
|
|
32
|
+
* docs/components/qml.md ("Behavior").
|
|
33
|
+
*/
|
|
34
|
+
export function applyMotion(inst, style) {
|
|
35
|
+
const motion = inst.state;
|
|
36
|
+
let transition;
|
|
37
|
+
if (motion.behaviors) {
|
|
38
|
+
for (const [prop, beh] of Object.entries(motion.behaviors)) {
|
|
39
|
+
if (beh.slots.get('enabled')?.peek() === false)
|
|
40
|
+
continue;
|
|
41
|
+
const key = STYLE_KEY[prop];
|
|
42
|
+
if (!key)
|
|
43
|
+
continue;
|
|
44
|
+
// A Behavior takes its duration from its animation child; a bare
|
|
45
|
+
// `NumberAnimation on x` carries its own.
|
|
46
|
+
const anim = beh.children.find((c) => c.slots.has('duration'));
|
|
47
|
+
const duration = num(anim?.slot('duration').peek()) ||
|
|
48
|
+
num(beh.slots.get('duration')?.peek()) ||
|
|
49
|
+
250;
|
|
50
|
+
(transition ??= {})[key] = duration;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (motion.stateTransitions) {
|
|
54
|
+
for (const [prop, duration] of Object.entries(motion.stateTransitions)) {
|
|
55
|
+
const key = STYLE_KEY[prop];
|
|
56
|
+
if (key)
|
|
57
|
+
(transition ??= {})[key] = duration;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (transition)
|
|
61
|
+
style.transition = transition;
|
|
62
|
+
if (motion.loopAnims) {
|
|
63
|
+
const animation = {};
|
|
64
|
+
for (const [prop, spec] of Object.entries(motion.loopAnims)) {
|
|
65
|
+
const key = STYLE_KEY[prop];
|
|
66
|
+
if (!key)
|
|
67
|
+
continue;
|
|
68
|
+
animation[key] = {
|
|
69
|
+
from: prop === 'color' ? qmlColor(spec.from) : spec.from,
|
|
70
|
+
to: prop === 'color' ? qmlColor(spec.to) : spec.to,
|
|
71
|
+
duration: spec.duration,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
style.animation = animation;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/** Ref callback capturing the host node for coordinate re-basing, text
|
|
78
|
+
* measurement and `forceActiveFocus()`. */
|
|
79
|
+
export function captureNode(inst) {
|
|
80
|
+
let fn = inst.state.__captureNode;
|
|
81
|
+
if (!fn) {
|
|
82
|
+
fn = (node) => {
|
|
83
|
+
inst.state.node = node;
|
|
84
|
+
};
|
|
85
|
+
inst.state.__captureNode = fn;
|
|
86
|
+
}
|
|
87
|
+
return fn;
|
|
88
|
+
}
|
|
89
|
+
export const hostNode = (inst) => inst.state.node ?? null;
|
|
90
|
+
/** The `anchors.*` slot set every Item carries. */
|
|
91
|
+
export const anchorProperties = {};
|
|
92
|
+
for (const n of [
|
|
93
|
+
'fill',
|
|
94
|
+
'centerIn',
|
|
95
|
+
'left',
|
|
96
|
+
'right',
|
|
97
|
+
'top',
|
|
98
|
+
'bottom',
|
|
99
|
+
'horizontalCenter',
|
|
100
|
+
'verticalCenter',
|
|
101
|
+
'margins',
|
|
102
|
+
'leftMargin',
|
|
103
|
+
'rightMargin',
|
|
104
|
+
'topMargin',
|
|
105
|
+
'bottomMargin',
|
|
106
|
+
]) {
|
|
107
|
+
anchorProperties[`anchors.${n}`] = { default: undefined };
|
|
108
|
+
}
|
|
109
|
+
/** Item's own init: focus plumbing and the state engine. A type that
|
|
110
|
+
* declares its own `init` replaces this (registry semantics), so it calls
|
|
111
|
+
* `initItem(inst)` first — Row, Flickable and Loader all do. */
|
|
112
|
+
export function initItem(inst) {
|
|
113
|
+
inst.methods.set('forceActiveFocus', () => {
|
|
114
|
+
const node = hostNode(inst);
|
|
115
|
+
node?.focus?.();
|
|
116
|
+
return undefined;
|
|
117
|
+
});
|
|
118
|
+
setupStates(inst);
|
|
119
|
+
}
|
|
120
|
+
export { geometryStyle };
|
|
121
|
+
//# sourceMappingURL=view-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view-utils.js","sourceRoot":"","sources":["../../src/qml/view-utils.ts"],"names":[],"mappings":"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"}
|
package/dist/table/index.d.ts
CHANGED
|
@@ -5,6 +5,28 @@ import type { Host } from './hx.js';
|
|
|
5
5
|
import type { TableCellState, TableColumn, TableHeaderCellState, TableRow, TableRowId, TableRowState, TableSort } from './rows.js';
|
|
6
6
|
export type { ResolvedWidths, TableCellState, TableColumn, TableHeaderCellState, TableRow, TableRowId, TableRowState, TableSort, } from './rows.js';
|
|
7
7
|
export { MIN_COLUMN, UNSIZED_MIN, columnValue, defaultCompare, orderRows, resolveGetId, resolveWidths, } from './rows.js';
|
|
8
|
+
/**
|
|
9
|
+
* What `renderScrollHint` is told: where the viewport is, while a fast
|
|
10
|
+
* scroll is still being caught up with. The top row itself is included so a
|
|
11
|
+
* hint can show what is *at* this position — a date, a group, a name — the
|
|
12
|
+
* way a photo library's scrubber shows the month.
|
|
13
|
+
*/
|
|
14
|
+
export interface TableScrollHintState<Row = any> {
|
|
15
|
+
/** The first row in view, in display order. */
|
|
16
|
+
row: TableRow<Row>;
|
|
17
|
+
/** Its position, 1-based — "row `from` of `count`". */
|
|
18
|
+
from: number;
|
|
19
|
+
/** The last row in view, 1-based. */
|
|
20
|
+
to: number;
|
|
21
|
+
/** How many rows the table has. */
|
|
22
|
+
count: number;
|
|
23
|
+
/** How many of the rows in view are still placeholders. */
|
|
24
|
+
pending: number;
|
|
25
|
+
/** When the viewport first stopped being whole, epoch ms — what the
|
|
26
|
+
* show-delay was measured against. `Date.now() - since` is how long the
|
|
27
|
+
* user has been looking at unresolved content. */
|
|
28
|
+
since: number;
|
|
29
|
+
}
|
|
8
30
|
/** The selection that just changed, alongside the whole set. `id`/`row` name
|
|
9
31
|
* the row the gesture landed on; a select-all has no single row to name. */
|
|
10
32
|
export interface TableSelectChange<Row> {
|
|
@@ -78,14 +100,25 @@ interface TableBaseProps<Row> extends Omit<BoxProps, 'style' | 'children' | 'ref
|
|
|
78
100
|
*/
|
|
79
101
|
rowHeight?: number;
|
|
80
102
|
/** What an unmeasured row is assumed — and floored — at, while measuring.
|
|
81
|
-
* Default 24. The scrollbar is this guess for every row not yet seen
|
|
82
|
-
*
|
|
103
|
+
* Default 24. The scrollbar is this guess for every row not yet seen; it
|
|
104
|
+
* converges as you scroll, and once enough rows have been measured the
|
|
105
|
+
* guess itself is re-learnt from their mean, so the scrollbar lands near
|
|
106
|
+
* the truth without visiting the whole list. */
|
|
83
107
|
estimatedRowHeight?: number;
|
|
84
108
|
/** Build only the rows on screen. `'auto'` (the default) turns it on past
|
|
85
109
|
* 200 rows. */
|
|
86
110
|
virtual?: boolean | 'auto';
|
|
87
111
|
/** Rows built either side of the viewport. */
|
|
88
112
|
overscan?: number;
|
|
113
|
+
/**
|
|
114
|
+
* Rows built *beyond* the overscan while the table sits idle, per side.
|
|
115
|
+
* Default 40. The pane blits a scroll before React can run, so the only
|
|
116
|
+
* scroll with no blank frame is one that lands on rows already built —
|
|
117
|
+
* this band is that, grown in small steps while nobody is scrolling, and
|
|
118
|
+
* kept behind the viewport so a reversal lands on rows still mounted.
|
|
119
|
+
* `0` turns the band off: the slice is exactly viewport-plus-overscan.
|
|
120
|
+
*/
|
|
121
|
+
prefetch?: number;
|
|
89
122
|
/**
|
|
90
123
|
* Everything inside the row box, given what would have been there.
|
|
91
124
|
*
|
|
@@ -97,6 +130,44 @@ interface TableBaseProps<Row> extends Omit<BoxProps, 'style' | 'children' | 'ref
|
|
|
97
130
|
/** The body's content when the rows resolve empty. Nothing by default —
|
|
98
131
|
* the header still shows. */
|
|
99
132
|
renderEmpty?: () => ReactNode;
|
|
133
|
+
/**
|
|
134
|
+
* The fast-scroll overlay. Shown only while a scroll has outrun the rows
|
|
135
|
+
* far enough that placeholders cover a meaningful part of the viewport —
|
|
136
|
+
* a scroll the table absorbs within a frame never shows it — and hidden
|
|
137
|
+
* the moment the view is whole again. The default is a pill reading
|
|
138
|
+
* "2,345 / 100,000"; return something else to replace it (the state
|
|
139
|
+
* carries the top row, so a hint can show a date or a name instead of a
|
|
140
|
+
* number), or null for no overlay at all.
|
|
141
|
+
*/
|
|
142
|
+
renderScrollHint?: (state: TableScrollHintState<Row>) => ReactNode;
|
|
143
|
+
/**
|
|
144
|
+
* How long the viewport must have been showing unresolved content before
|
|
145
|
+
* the overlay appears, in milliseconds. Default 250: a catch-up the next
|
|
146
|
+
* few frames absorb is never announced. `0` shows it the moment a
|
|
147
|
+
* catch-up engages.
|
|
148
|
+
*/
|
|
149
|
+
scrollHintDelay?: number;
|
|
150
|
+
/**
|
|
151
|
+
* Tuning for the catch-up pacing — how a scroll that outruns the built
|
|
152
|
+
* rows is absorbed. All optional, all in rows:
|
|
153
|
+
*
|
|
154
|
+
* - `threshold` (default 16): more rows than this entering the window in
|
|
155
|
+
* one render is a flood, and floods build skeletons first. Raise it
|
|
156
|
+
* past the window size to never show skeletons; `0` skeletons every
|
|
157
|
+
* scroll.
|
|
158
|
+
* - `burst` (default 24): full rows built per render while the scroll is
|
|
159
|
+
* still moving.
|
|
160
|
+
* - `settle` (default 48): the same once it has stopped.
|
|
161
|
+
*
|
|
162
|
+
* The defaults follow the measured cost of a default-shape row (about
|
|
163
|
+
* twice a skeleton, warm); tables with heavy `render` seams may want
|
|
164
|
+
* smaller budgets, and cheap tables may raise the threshold instead.
|
|
165
|
+
*/
|
|
166
|
+
catchup?: {
|
|
167
|
+
threshold?: number;
|
|
168
|
+
burst?: number;
|
|
169
|
+
settle?: number;
|
|
170
|
+
};
|
|
100
171
|
styles?: TableStyles<Row>;
|
|
101
172
|
style?: StyleProp;
|
|
102
173
|
/** Whether the table is a tab stop. Default true; `false` for a table
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/table/index.ts"],"names":[],"mappings":"AAsCA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,KAAK,EAEV,aAAa,EACb,UAAU,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/table/index.ts"],"names":[],"mappings":"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"}
|