@solidrt/3d 0.0.66 → 0.0.67
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/package.json +3 -3
- package/src/components/node-props.ts +6 -1
- package/src/components/scene.tsx +3 -0
- package/src/components/view3d.tsx +2 -0
- package/src/node.ts +2 -0
- package/src/scene-pointer.ts +14 -1
- package/src/scene.ts +1 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@solidrt/3d",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.67",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"funding": "https://github.com/sponsors/wellawaretech",
|
|
6
6
|
"author": "Antoine van Wel",
|
|
@@ -20,10 +20,10 @@
|
|
|
20
20
|
"AGENTS.md"
|
|
21
21
|
],
|
|
22
22
|
"devDependencies": {
|
|
23
|
-
"@solidrt/test": "0.0.
|
|
23
|
+
"@solidrt/test": "0.0.67"
|
|
24
24
|
},
|
|
25
25
|
"peerDependencies": {
|
|
26
26
|
"@solidjs/signals": "2.0.0-rc.13",
|
|
27
|
-
"@solidrt/core": "0.0.
|
|
27
|
+
"@solidrt/core": "0.0.67"
|
|
28
28
|
}
|
|
29
29
|
}
|
|
@@ -50,6 +50,9 @@ export type BubblingPointerEventProps = {
|
|
|
50
50
|
onPointerDown?: (event: NodePointerEvent) => void
|
|
51
51
|
onPointerMove?: (event: NodePointerEvent) => void
|
|
52
52
|
onPointerUp?: (event: NodePointerEvent) => void
|
|
53
|
+
/** The pointer's other end: the system took it away (see core's
|
|
54
|
+
* onPointerCancel); bubbles like up, and the press it ends never taps. */
|
|
55
|
+
onPointerCancel?: (event: NodePointerEvent) => void
|
|
53
56
|
/** The wheel over the node: `deltaX`/`deltaY`. */
|
|
54
57
|
onWheel?: (event: NodeWheelEvent) => void
|
|
55
58
|
/** A press released on the node within the slop, alone for its whole
|
|
@@ -73,18 +76,20 @@ export function syncNode(node: SceneNode, props: TransformProps & PointerEventPr
|
|
|
73
76
|
props.onPointerDown,
|
|
74
77
|
props.onPointerMove,
|
|
75
78
|
props.onPointerUp,
|
|
79
|
+
props.onPointerCancel,
|
|
76
80
|
props.onPointerEnter,
|
|
77
81
|
props.onPointerLeave,
|
|
78
82
|
props.onWheel,
|
|
79
83
|
props.onTap,
|
|
80
84
|
props.onTransitionEnd,
|
|
81
85
|
] as const,
|
|
82
|
-
([position, rotation, quaternion, scale, visible, down, move, up, enter, leave, wheel, tap, end]) => {
|
|
86
|
+
([position, rotation, quaternion, scale, visible, down, move, up, cancel, enter, leave, wheel, tap, end]) => {
|
|
83
87
|
setTransform(node, { position, rotation, quaternion, scale })
|
|
84
88
|
setVisible(node, visible !== false)
|
|
85
89
|
node.onPointerDown = down
|
|
86
90
|
node.onPointerMove = move
|
|
87
91
|
node.onPointerUp = up
|
|
92
|
+
node.onPointerCancel = cancel
|
|
88
93
|
node.onPointerEnter = enter
|
|
89
94
|
node.onPointerLeave = leave
|
|
90
95
|
node.onWheel = wheel
|
package/src/components/scene.tsx
CHANGED
|
@@ -18,6 +18,7 @@ export type ScenePointerProps = {
|
|
|
18
18
|
onPointerDown?: (event: ScenePointerEvent) => void
|
|
19
19
|
onPointerMove?: (event: ScenePointerEvent) => void
|
|
20
20
|
onPointerUp?: (event: ScenePointerEvent) => void
|
|
21
|
+
onPointerCancel?: (event: ScenePointerEvent) => void
|
|
21
22
|
onWheel?: (event: SceneWheelEvent) => void
|
|
22
23
|
onTap?: (event: SceneTapEvent) => void
|
|
23
24
|
}
|
|
@@ -268,6 +269,7 @@ export let Scene: ParentComponent<SceneProps> = props => {
|
|
|
268
269
|
onPointerDown: e => props.onPointerDown?.(e),
|
|
269
270
|
onPointerMove: e => props.onPointerMove?.(e),
|
|
270
271
|
onPointerUp: e => props.onPointerUp?.(e),
|
|
272
|
+
onPointerCancel: e => props.onPointerCancel?.(e),
|
|
271
273
|
onWheel: e => props.onWheel?.(e),
|
|
272
274
|
onTap: e => props.onTap?.(e),
|
|
273
275
|
}),
|
|
@@ -331,6 +333,7 @@ export let Scene: ParentComponent<SceneProps> = props => {
|
|
|
331
333
|
onPointerDown={events ? sceneHandlers.onPointerDown : undefined}
|
|
332
334
|
onPointerMove={events ? sceneHandlers.onPointerMove : undefined}
|
|
333
335
|
onPointerUp={events ? sceneHandlers.onPointerUp : undefined}
|
|
336
|
+
onPointerCancel={events ? sceneHandlers.onPointerCancel : undefined}
|
|
334
337
|
onPointerLeave={events ? sceneHandlers.onPointerLeave : undefined}
|
|
335
338
|
onWheel={events ? sceneHandlers.onWheel : undefined}
|
|
336
339
|
/>
|
|
@@ -129,6 +129,7 @@ export let View3d: ParentComponent<View3dProps> = props => {
|
|
|
129
129
|
onPointerDown: e => props.onPointerDown?.(e),
|
|
130
130
|
onPointerMove: e => props.onPointerMove?.(e),
|
|
131
131
|
onPointerUp: e => props.onPointerUp?.(e),
|
|
132
|
+
onPointerCancel: e => props.onPointerCancel?.(e),
|
|
132
133
|
onWheel: e => props.onWheel?.(e),
|
|
133
134
|
onTap: e => props.onTap?.(e),
|
|
134
135
|
}),
|
|
@@ -159,6 +160,7 @@ export let View3d: ParentComponent<View3dProps> = props => {
|
|
|
159
160
|
onPointerDown={events ? view.handlers.onPointerDown : undefined}
|
|
160
161
|
onPointerMove={events ? view.handlers.onPointerMove : undefined}
|
|
161
162
|
onPointerUp={events ? view.handlers.onPointerUp : undefined}
|
|
163
|
+
onPointerCancel={events ? view.handlers.onPointerCancel : undefined}
|
|
162
164
|
onPointerLeave={events ? view.handlers.onPointerLeave : undefined}
|
|
163
165
|
onWheel={events ? view.handlers.onWheel : undefined}
|
|
164
166
|
/>
|
package/src/node.ts
CHANGED
|
@@ -203,6 +203,7 @@ export type SceneNode = {
|
|
|
203
203
|
onPointerDown?: (event: NodePointerEvent) => void
|
|
204
204
|
onPointerMove?: (event: NodePointerEvent) => void
|
|
205
205
|
onPointerUp?: (event: NodePointerEvent) => void
|
|
206
|
+
onPointerCancel?: (event: NodePointerEvent) => void
|
|
206
207
|
onPointerEnter?: (event: NodePointerEvent) => void
|
|
207
208
|
onPointerLeave?: (event: NodePointerEvent) => void
|
|
208
209
|
/** The wheel over the node (NodeWheelEvent: `deltaX`/`deltaY`), bubbling
|
|
@@ -352,6 +353,7 @@ export type ScenePointerListener = {
|
|
|
352
353
|
onPointerDown?: (event: ScenePointerEvent) => void
|
|
353
354
|
onPointerMove?: (event: ScenePointerEvent) => void
|
|
354
355
|
onPointerUp?: (event: ScenePointerEvent) => void
|
|
356
|
+
onPointerCancel?: (event: ScenePointerEvent) => void
|
|
355
357
|
onWheel?: (event: SceneWheelEvent) => void
|
|
356
358
|
onTap?: (event: SceneTapEvent) => void
|
|
357
359
|
}
|
package/src/scene-pointer.ts
CHANGED
|
@@ -41,7 +41,7 @@ const TAP_INTERVAL_MS = 300
|
|
|
41
41
|
// neighbouring meshes.
|
|
42
42
|
const TAP_REPEAT_SLOP = 20
|
|
43
43
|
|
|
44
|
-
type HandlerName = "onPointerDown" | "onPointerMove" | "onPointerUp" | "onWheel" | "onTap"
|
|
44
|
+
type HandlerName = "onPointerDown" | "onPointerMove" | "onPointerUp" | "onPointerCancel" | "onWheel" | "onTap"
|
|
45
45
|
|
|
46
46
|
// What a press captures, a hover tracks and a tap compares: the struck
|
|
47
47
|
// mesh, and the instance when the mesh is instanced.
|
|
@@ -254,6 +254,18 @@ export function makePointerInput(deps: PointerInputDeps): PointerInput {
|
|
|
254
254
|
tap.tapCount = count
|
|
255
255
|
walk("onTap", tap, !press.claimed)
|
|
256
256
|
},
|
|
257
|
+
onPointerCancel(e) {
|
|
258
|
+
let [x, y] = toScene(e)
|
|
259
|
+
let press = presses.get(e.pointerId)
|
|
260
|
+
if (!press) {
|
|
261
|
+
let hit = nearest(x, y)
|
|
262
|
+
walk("onPointerCancel", makeEvent(e, hit === null ? null : targetOf(hit), x, y, hit), true)
|
|
263
|
+
return
|
|
264
|
+
}
|
|
265
|
+
// The press ends where it was: the walk it captured, never a tap.
|
|
266
|
+
presses.delete(e.pointerId)
|
|
267
|
+
walk("onPointerCancel", makeEvent(e, press.target, x, y, hitOn(press.target, x, y)), !press.claimed)
|
|
268
|
+
},
|
|
257
269
|
onWheel(e) {
|
|
258
270
|
let [x, y] = toScene(e)
|
|
259
271
|
let hit = nearest(x, y)
|
|
@@ -290,6 +302,7 @@ export function feedPointer(root: { listen(listener: ScenePointerListener): () =
|
|
|
290
302
|
onPointerDown: e => feed.handlers.onPointerDown(e.native),
|
|
291
303
|
onPointerMove: e => feed.handlers.onPointerMove(e.native),
|
|
292
304
|
onPointerUp: e => feed.handlers.onPointerUp(e.native),
|
|
305
|
+
onPointerCancel: e => feed.handlers.onPointerCancel(e.native),
|
|
293
306
|
onWheel: e => feed.handlers.onWheel(e.native),
|
|
294
307
|
})
|
|
295
308
|
}
|
package/src/scene.ts
CHANGED
|
@@ -227,6 +227,7 @@ export type SceneHandlers = {
|
|
|
227
227
|
onPointerDown(event: ElementPointerEvent): void
|
|
228
228
|
onPointerMove(event: ElementPointerEvent): void
|
|
229
229
|
onPointerUp(event: ElementPointerEvent): void
|
|
230
|
+
onPointerCancel(event: ElementPointerEvent): void
|
|
230
231
|
onPointerLeave(event: ElementPointerEvent): void
|
|
231
232
|
onWheel(event: ElementWheelEvent): void
|
|
232
233
|
}
|