react-x11 1.2.0 → 2.0.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 +330 -81
- package/package.json +132 -14
- package/src/ClickToComponent.js +9 -2
- package/src/DevToolsIntegration.js +440 -32
- package/src/Reconciler.js +463 -165
- package/src/a11y.js +1299 -0
- package/src/acceleratorhooks.js +86 -0
- package/src/accelerators.js +128 -0
- package/src/activate.js +168 -0
- package/src/anchor.js +360 -0
- package/src/appcontext.js +161 -0
- package/src/appearance.js +748 -0
- package/src/appearancehooks.js +96 -0
- package/src/apphooks.js +73 -0
- package/src/application.js +748 -0
- package/src/atspi.js +1953 -0
- package/src/bus.js +545 -0
- package/src/bushooks.js +136 -0
- package/src/clientmessage.js +140 -0
- package/src/clipboard.js +121 -0
- package/src/components/Button.js +148 -33
- package/src/components/Checkbox.js +66 -32
- package/src/components/Dialog.js +96 -29
- package/src/components/FileDialog.js +491 -0
- package/src/components/Icon.js +329 -0
- package/src/components/Menu.js +797 -133
- package/src/components/PasswordInput.js +434 -0
- package/src/components/ProgressBar.js +91 -12
- package/src/components/Radio.js +78 -35
- package/src/components/Select.js +255 -65
- package/src/components/Slider.js +102 -41
- package/src/components/SplitPane.js +206 -0
- package/src/components/Switch.js +100 -22
- package/src/components/Table.js +529 -0
- package/src/components/Tabs.js +211 -0
- package/src/components/Tooltip.js +528 -54
- package/src/components/anchor.js +154 -107
- package/src/components/change.js +34 -0
- package/src/components/dnd.js +103 -0
- package/src/components/index.js +16 -3
- package/src/components/keys.js +17 -20
- package/src/components/scribble.js +247 -0
- package/src/components/theme.js +350 -42
- package/src/components/typeahead.js +12 -2
- package/src/compose.js +868 -0
- package/src/compositing.js +224 -0
- package/src/dbusmenu.js +384 -0
- package/src/debug.d.ts +63 -0
- package/src/debug.js +642 -0
- package/src/decorations.js +486 -0
- package/src/desktopsettings.js +209 -0
- package/src/desktopsettingshooks.js +62 -0
- package/src/dnd.js +1725 -0
- package/src/editmenu.js +272 -0
- package/src/errors.js +98 -0
- package/src/events.js +1406 -162
- package/src/extensions.js +45 -0
- package/src/filedialog.js +375 -0
- package/src/filedialoghooks.js +132 -0
- package/src/fonthooks.js +64 -0
- package/src/fonts.js +301 -0
- package/src/foreignnodes.js +519 -0
- package/src/frame/child.js +33 -0
- package/src/frame/childmain.js +274 -0
- package/src/frame/env.js +140 -0
- package/src/frame/index.js +444 -0
- package/src/frame/lifecycle.js +67 -0
- package/src/frame/protocol.js +179 -0
- package/src/frames.js +73 -0
- package/src/glbackend.js +114 -0
- package/src/glnodes.js +125 -67
- package/src/globalmenu.js +683 -0
- package/src/host.d.ts +88 -0
- package/src/host.js +42 -0
- package/src/idle.js +490 -0
- package/src/idlehooks.js +100 -0
- package/src/imagesource.js +349 -0
- package/src/index.d.ts +475 -0
- package/src/index.js +83 -9
- package/src/inputtime.js +206 -0
- package/src/jsx-dev-runtime.d.ts +21 -0
- package/src/jsx-dev-runtime.js +2 -0
- package/src/jsx-runtime.d.ts +39 -0
- package/src/jsx-runtime.js +6 -0
- package/src/keyboard.js +256 -0
- package/src/keyboardstate.js +278 -0
- package/src/keyboardstatehooks.js +58 -0
- package/src/keysyms.d.ts +149 -0
- package/src/keysyms.js +270 -0
- package/src/locale.js +170 -0
- package/src/localehooks.js +47 -0
- package/src/menuitem.js +223 -0
- package/src/node.d.ts +597 -0
- package/src/node.js +44 -0
- package/src/nodes.js +9546 -690
- package/src/ntk.d.ts +44 -0
- package/src/ntk.js +25 -0
- package/src/paintcache.js +366 -0
- package/src/palette.js +380 -0
- package/src/pastestate.js +66 -0
- package/src/portal.js +461 -0
- package/src/priority.js +26 -0
- package/src/refresh/index.d.ts +40 -0
- package/src/refresh/index.js +122 -0
- package/src/refresh/loader.d.ts +37 -0
- package/src/refresh/loader.js +401 -0
- package/src/refresh/register.d.ts +5 -0
- package/src/refresh/register.js +13 -0
- package/src/registry.js +232 -0
- package/src/scale.js +626 -0
- package/src/scalehooks.js +27 -0
- package/src/screencolor.js +640 -0
- package/src/screencolorhooks.js +101 -0
- package/src/screens.js +754 -0
- package/src/screenshooks.js +137 -0
- package/src/startup.js +302 -0
- package/src/style.d.ts +126 -0
- package/src/style.js +33 -0
- package/src/styles.js +1482 -6
- package/src/svgnodes.js +306 -0
- package/src/testing/a11y.js +484 -0
- package/src/testing/components.js +414 -0
- package/src/testing/events.js +407 -0
- package/src/testing/harness.js +455 -0
- package/src/testing/index.d.ts +558 -0
- package/src/testing/index.js +85 -0
- package/src/testing/mock-app.js +463 -0
- package/src/testing/pixels.js +152 -0
- package/src/testing/queries.js +224 -0
- package/src/textrange.js +83 -0
- package/src/textselection.js +439 -0
- package/src/trace-registry.js +63 -0
- package/src/transfer.js +93 -0
- package/src/types/appearance.d.ts +84 -0
- package/src/types/application.d.ts +173 -0
- package/src/types/components.d.ts +820 -0
- package/src/types/dbus.d.ts +177 -0
- package/src/types/elements.d.ts +897 -0
- package/src/types/events.d.ts +549 -0
- package/src/types/filedialog.d.ts +260 -0
- package/src/types/fonts.d.ts +124 -0
- package/src/types/frame.d.ts +146 -0
- package/src/types/globalmenu.d.ts +42 -0
- package/src/types/nodes.d.ts +199 -0
- package/src/types/screencolor.d.ts +84 -0
- package/src/types/style.d.ts +434 -0
- package/src/types/system.d.ts +287 -0
- package/src/windowid.js +151 -0
- package/src/windowstate.js +393 -0
- package/src/xsettings.js +336 -0
- package/src/yoga.d.ts +55 -0
- package/src/yoga.js +135 -0
- package/src/components/Canvas3D.js +0 -28
- package/src/geometry3d.js +0 -223
- package/src/pointer3d.js +0 -158
- package/src/raycast3d.js +0 -146
- package/src/richnodes.js +0 -436
- package/src/scene3d.js +0 -683
package/package.json
CHANGED
|
@@ -1,32 +1,69 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-x11",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "react renderer with X11 as a target",
|
|
5
5
|
"main": "./src/index.js",
|
|
6
6
|
"files": [
|
|
7
7
|
"src"
|
|
8
8
|
],
|
|
9
9
|
"scripts": {
|
|
10
|
-
"test": "node --test",
|
|
10
|
+
"test": "node --import tsx --test --test-timeout=60000",
|
|
11
|
+
"typecheck": "tsc -p tsconfig.json",
|
|
11
12
|
"lint": "eslint .",
|
|
12
13
|
"format": "prettier --write .",
|
|
13
14
|
"format:check": "prettier --check .",
|
|
15
|
+
"examples:app": "tsx examples/app.jsx",
|
|
16
|
+
"examples:theming": "tsx examples/theming.jsx",
|
|
17
|
+
"examples:appearance": "tsx examples/appearance.jsx",
|
|
14
18
|
"examples:simple": "tsx examples/simple.jsx",
|
|
15
19
|
"examples:simple-nojsx": "node examples/simple-nojsx.js",
|
|
16
20
|
"examples:xeyes": "tsx examples/xeyes.jsx",
|
|
17
21
|
"examples:dashboard": "tsx examples/dashboard.jsx",
|
|
18
22
|
"examples:tasks": "tsx examples/tasks.jsx",
|
|
19
|
-
"examples:tasks:hot": "node --enable-source-maps --import
|
|
23
|
+
"examples:tasks:hot": "node --enable-source-maps --import react-x11/refresh/register examples/tasks-hot.jsx",
|
|
20
24
|
"examples:menu": "tsx examples/menu.jsx",
|
|
25
|
+
"examples:monitor": "tsx examples/monitor.jsx",
|
|
26
|
+
"examples:attention": "tsx examples/attention.jsx",
|
|
27
|
+
"examples:tooltips": "tsx examples/tooltips.jsx",
|
|
28
|
+
"examples:chat": "tsx examples/chat.jsx",
|
|
29
|
+
"examples:clipboard": "tsx examples/clipboard.jsx",
|
|
30
|
+
"labs:urischeme": "tsx examples/labs/urischeme.jsx",
|
|
31
|
+
"filedialog:probe": "node scripts/filedialog-probe.mjs",
|
|
32
|
+
"a11y:probe": "node scripts/a11y-probe.mjs",
|
|
33
|
+
"scale:probe": "node scripts/scale-probe.mjs",
|
|
34
|
+
"xi2:probe": "node scripts/xi2-probe.mjs",
|
|
35
|
+
"globalmenu:host": "node scripts/globalmenu-host.mjs",
|
|
36
|
+
"devtools:proxy": "node scripts/devtools-proxy.mjs",
|
|
37
|
+
"examples:fonts": "tsx examples/fonts.jsx",
|
|
21
38
|
"examples:form": "tsx examples/form.jsx",
|
|
22
|
-
"examples:
|
|
39
|
+
"examples:rules": "tsx examples/rules.jsx",
|
|
40
|
+
"examples:selection": "tsx examples/selection.jsx",
|
|
41
|
+
"examples:settings": "tsx examples/settings.jsx",
|
|
42
|
+
"examples:timer": "tsx examples/timer.jsx",
|
|
23
43
|
"examples:widgets": "tsx examples/widgets.jsx",
|
|
24
|
-
"examples:
|
|
25
|
-
"examples:
|
|
44
|
+
"examples:password": "tsx examples/password.jsx",
|
|
45
|
+
"examples:icons": "tsx examples/icons.jsx",
|
|
46
|
+
"examples:raster-gate": "tsx examples/raster-gate.jsx",
|
|
47
|
+
"examples:stress": "tsx examples/stress/index.jsx",
|
|
48
|
+
"examples:finder": "tsx examples/finder.jsx",
|
|
49
|
+
"examples:foreign": "tsx examples/foreign.jsx",
|
|
50
|
+
"examples:frame": "tsx examples/frame.jsx",
|
|
51
|
+
"labs:text-baseline": "tsx examples/labs/text-baseline.jsx",
|
|
52
|
+
"examples:viewer3d": "tsx examples/viewer3d.jsx",
|
|
53
|
+
"examples:transparent": "tsx examples/transparent.jsx",
|
|
26
54
|
"examples:windows": "tsx examples/windows.jsx",
|
|
55
|
+
"examples:wm": "tsx examples/wm.jsx",
|
|
56
|
+
"examples:dnd-source": "tsx examples/dnd-source.jsx",
|
|
57
|
+
"examples:dnd-target": "tsx examples/dnd-target.jsx",
|
|
58
|
+
"stress:check": "tsx scripts/check-stress.jsx",
|
|
27
59
|
"screenshots": "tsx scripts/screenshots.jsx",
|
|
28
60
|
"screenshots:framed": "tsx scripts/screenshots-framed.jsx",
|
|
29
|
-
"bench": "tsx scripts/bench/protocol.js"
|
|
61
|
+
"bench": "tsx scripts/bench/protocol.js",
|
|
62
|
+
"bench:pixels": "tsx scripts/bench/pixels.js",
|
|
63
|
+
"bench:frames": "tsx scripts/bench/frames.js",
|
|
64
|
+
"docs:dev": "npm --prefix website start",
|
|
65
|
+
"docs:build": "npm --prefix website run build",
|
|
66
|
+
"docs:test": "npm --prefix website test"
|
|
30
67
|
},
|
|
31
68
|
"repository": {
|
|
32
69
|
"type": "git",
|
|
@@ -45,11 +82,33 @@
|
|
|
45
82
|
"node": ">=20.19"
|
|
46
83
|
},
|
|
47
84
|
"dependencies": {
|
|
48
|
-
"ntk": "^3.
|
|
49
|
-
"react-reconciler": "^0.33.0"
|
|
85
|
+
"ntk": "^8.3.0",
|
|
86
|
+
"react-reconciler": "^0.33.0",
|
|
87
|
+
"yoga-layout": "^3.2.1"
|
|
88
|
+
},
|
|
89
|
+
"optionalDependencies": {
|
|
90
|
+
"dbus-native": "^0.15.1"
|
|
50
91
|
},
|
|
51
92
|
"peerDependencies": {
|
|
52
|
-
"react": "^19.0.0"
|
|
93
|
+
"react": "^19.0.0",
|
|
94
|
+
"@babel/core": "^8.0.0",
|
|
95
|
+
"@babel/plugin-transform-react-jsx": "^8.0.0",
|
|
96
|
+
"hot-module-replacement": "^4.0.1",
|
|
97
|
+
"react-refresh": "^0.18.0"
|
|
98
|
+
},
|
|
99
|
+
"peerDependenciesMeta": {
|
|
100
|
+
"@babel/core": {
|
|
101
|
+
"optional": true
|
|
102
|
+
},
|
|
103
|
+
"@babel/plugin-transform-react-jsx": {
|
|
104
|
+
"optional": true
|
|
105
|
+
},
|
|
106
|
+
"hot-module-replacement": {
|
|
107
|
+
"optional": true
|
|
108
|
+
},
|
|
109
|
+
"react-refresh": {
|
|
110
|
+
"optional": true
|
|
111
|
+
}
|
|
53
112
|
},
|
|
54
113
|
"overrides": {
|
|
55
114
|
"brace-expansion": "^5.0.8"
|
|
@@ -58,19 +117,78 @@
|
|
|
58
117
|
"@babel/core": "^8.0.1",
|
|
59
118
|
"@babel/plugin-transform-react-jsx": "^8.0.1",
|
|
60
119
|
"@eslint/js": "^9.32.0",
|
|
120
|
+
"@types/react": "^19.2.17",
|
|
61
121
|
"eslint": "^9.32.0",
|
|
62
122
|
"eslint-plugin-react": "^7.37.5",
|
|
63
|
-
"globals": "^
|
|
64
|
-
"hot-module-replacement": "^4.0.
|
|
123
|
+
"globals": "^17.8.0",
|
|
124
|
+
"hot-module-replacement": "^4.0.1",
|
|
125
|
+
"katex": "^0.18.1",
|
|
65
126
|
"prettier": "^3.6.0",
|
|
66
127
|
"react": "^19.2.8",
|
|
67
128
|
"react-devtools-core": "^7.0.1",
|
|
68
129
|
"react-refresh": "^0.18.0",
|
|
69
130
|
"tsx": "^4.23.1",
|
|
131
|
+
"typescript": "^7.0.2",
|
|
70
132
|
"ws": "^8.21.1"
|
|
71
133
|
},
|
|
72
134
|
"type": "module",
|
|
73
135
|
"exports": {
|
|
74
|
-
".":
|
|
75
|
-
|
|
136
|
+
".": {
|
|
137
|
+
"types": "./src/index.d.ts",
|
|
138
|
+
"default": "./src/index.js"
|
|
139
|
+
},
|
|
140
|
+
"./jsx-runtime": {
|
|
141
|
+
"types": "./src/jsx-runtime.d.ts",
|
|
142
|
+
"default": "./src/jsx-runtime.js"
|
|
143
|
+
},
|
|
144
|
+
"./jsx-dev-runtime": {
|
|
145
|
+
"types": "./src/jsx-dev-runtime.d.ts",
|
|
146
|
+
"default": "./src/jsx-dev-runtime.js"
|
|
147
|
+
},
|
|
148
|
+
"./debug": {
|
|
149
|
+
"types": "./src/debug.d.ts",
|
|
150
|
+
"default": "./src/debug.js"
|
|
151
|
+
},
|
|
152
|
+
"./host": {
|
|
153
|
+
"types": "./src/host.d.ts",
|
|
154
|
+
"default": "./src/host.js"
|
|
155
|
+
},
|
|
156
|
+
"./node": {
|
|
157
|
+
"types": "./src/node.d.ts",
|
|
158
|
+
"default": "./src/node.js"
|
|
159
|
+
},
|
|
160
|
+
"./style": {
|
|
161
|
+
"types": "./src/style.d.ts",
|
|
162
|
+
"default": "./src/style.js"
|
|
163
|
+
},
|
|
164
|
+
"./yoga": {
|
|
165
|
+
"types": "./src/yoga.d.ts",
|
|
166
|
+
"default": "./src/yoga.js"
|
|
167
|
+
},
|
|
168
|
+
"./ntk": {
|
|
169
|
+
"types": "./src/ntk.d.ts",
|
|
170
|
+
"default": "./src/ntk.js"
|
|
171
|
+
},
|
|
172
|
+
"./test": {
|
|
173
|
+
"types": "./src/testing/index.d.ts",
|
|
174
|
+
"default": "./src/testing/index.js"
|
|
175
|
+
},
|
|
176
|
+
"./refresh": {
|
|
177
|
+
"types": "./src/refresh/index.d.ts",
|
|
178
|
+
"default": "./src/refresh/index.js"
|
|
179
|
+
},
|
|
180
|
+
"./refresh/register": {
|
|
181
|
+
"types": "./src/refresh/register.d.ts",
|
|
182
|
+
"default": "./src/refresh/register.js"
|
|
183
|
+
},
|
|
184
|
+
"./refresh/loader": {
|
|
185
|
+
"types": "./src/refresh/loader.d.ts",
|
|
186
|
+
"default": "./src/refresh/loader.js"
|
|
187
|
+
},
|
|
188
|
+
"./keysyms": {
|
|
189
|
+
"types": "./src/keysyms.d.ts",
|
|
190
|
+
"default": "./src/keysyms.js"
|
|
191
|
+
}
|
|
192
|
+
},
|
|
193
|
+
"types": "./src/index.d.ts"
|
|
76
194
|
}
|
package/src/ClickToComponent.js
CHANGED
|
@@ -13,12 +13,15 @@
|
|
|
13
13
|
import { spawn } from 'node:child_process';
|
|
14
14
|
import { fileURLToPath } from 'node:url';
|
|
15
15
|
import { setClickToComponentHandler } from './events.js';
|
|
16
|
+
import { selectInDevTools } from './DevToolsIntegration.js';
|
|
16
17
|
|
|
17
18
|
const STACK_FRAME = /^\s*at\s+(?:(.+?)\s+\()?(.+?):(\d+):(\d+)\)?\s*$/;
|
|
18
19
|
|
|
19
20
|
/** The first stack frame outside React/the reconciler/node internals — the
|
|
20
|
-
* user's own JSX call site for whatever element this Error was captured at.
|
|
21
|
-
|
|
21
|
+
* user's own JSX call site for whatever element this Error was captured at.
|
|
22
|
+
* Exported because `react-x11/test`'s `sourceOf` answers the same question
|
|
23
|
+
* for a test that a click answers for an editor. */
|
|
24
|
+
export function resolveLocation(debugStack) {
|
|
22
25
|
const stack = debugStack?.stack;
|
|
23
26
|
if (!stack) return null;
|
|
24
27
|
for (const line of stack.split('\n').slice(1)) {
|
|
@@ -159,6 +162,10 @@ function handleClick(node, native) {
|
|
|
159
162
|
// Alt+Shift+Click
|
|
160
163
|
logOwnerChain(fiber);
|
|
161
164
|
}
|
|
165
|
+
// With DevTools attached, the click that says which element this is says
|
|
166
|
+
// it there too — the tree jumps to the component instead of the user
|
|
167
|
+
// hunting for the row they just clicked. Nothing to do when it is not.
|
|
168
|
+
selectInDevTools(node);
|
|
162
169
|
flashHighlight(node);
|
|
163
170
|
openInEditor(location);
|
|
164
171
|
}
|