@typeonce/ritmo-browser 0.10.0 → 0.12.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/CHANGELOG.md +106 -0
- package/README.md +6 -1
- package/dist/Controls.d.ts +496 -0
- package/dist/Controls.d.ts.map +1 -0
- package/dist/Controls.js +343 -0
- package/dist/Controls.js.map +1 -0
- package/dist/Gamepad.d.ts +376 -0
- package/dist/Gamepad.d.ts.map +1 -0
- package/dist/Gamepad.js +459 -0
- package/dist/Gamepad.js.map +1 -0
- package/dist/InputCapture.d.ts +46 -16
- package/dist/InputCapture.d.ts.map +1 -1
- package/dist/InputCapture.js +1 -1
- package/dist/InputCapture.js.map +1 -1
- package/dist/Keyboard.d.ts +177 -25
- package/dist/Keyboard.d.ts.map +1 -1
- package/dist/Keyboard.js +257 -91
- package/dist/Keyboard.js.map +1 -1
- package/dist/Pointer.d.ts +233 -64
- package/dist/Pointer.d.ts.map +1 -1
- package/dist/Pointer.js +205 -145
- package/dist/Pointer.js.map +1 -1
- package/dist/Touch.d.ts +75 -33
- package/dist/Touch.d.ts.map +1 -1
- package/dist/Touch.js +25 -30
- package/dist/Touch.js.map +1 -1
- package/dist/index.d.ts +10 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/buttons.d.ts +52 -0
- package/dist/internal/buttons.d.ts.map +1 -0
- package/dist/internal/buttons.js +211 -0
- package/dist/internal/buttons.js.map +1 -0
- package/dist/internal/introspect.d.ts +14 -0
- package/dist/internal/introspect.d.ts.map +1 -0
- package/dist/internal/introspect.js +19 -0
- package/dist/internal/introspect.js.map +1 -0
- package/dist/internal/state.d.ts +13 -0
- package/dist/internal/state.d.ts.map +1 -0
- package/dist/internal/state.js +2 -0
- package/dist/internal/state.js.map +1 -0
- package/dist/internal/used.d.ts +8 -0
- package/dist/internal/used.d.ts.map +1 -0
- package/dist/internal/used.js +14 -0
- package/dist/internal/used.js.map +1 -0
- package/dist/internal/vectors.d.ts +29 -0
- package/dist/internal/vectors.d.ts.map +1 -0
- package/dist/internal/vectors.js +22 -0
- package/dist/internal/vectors.js.map +1 -0
- package/package.json +4 -3
- package/src/Controls.ts +800 -0
- package/src/Gamepad.ts +752 -0
- package/src/InputCapture.ts +43 -24
- package/src/Keyboard.ts +387 -72
- package/src/Pointer.ts +392 -166
- package/src/Touch.ts +113 -61
- package/src/index.ts +10 -1
- package/src/internal/buttons.ts +222 -0
- package/src/internal/introspect.ts +23 -0
- package/src/internal/state.ts +12 -0
- package/src/internal/used.ts +14 -0
- package/src/internal/vectors.ts +41 -0
package/dist/Pointer.js
CHANGED
|
@@ -1,83 +1,115 @@
|
|
|
1
|
+
import * as Result from "@typeonce/ritmo/Result";
|
|
2
|
+
import * as ButtonsInternal from "./internal/buttons.js";
|
|
3
|
+
import { buttonTracker, idleActions, idleButtons } from "./internal/buttons.js";
|
|
4
|
+
import { anyUsed } from "./internal/used.js";
|
|
5
|
+
/** The physical buttons, in `PointerEvent.button` order 0 to 4. */
|
|
6
|
+
const physicalButtons = ["primary", "middle", "secondary", "back", "forward"];
|
|
7
|
+
const isPhysical = (name) => physicalButtons.includes(name);
|
|
1
8
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* actions
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* suppressing the context menu, clearing buttons on window blur, and listener
|
|
10
|
-
* cleanup. It does not know about the ECS; `InputCapture.system(...)` copies
|
|
11
|
-
* snapshots from a service into a resource, directly or through an adapter
|
|
12
|
-
* that merges pointer and keyboard snapshots.
|
|
13
|
-
*
|
|
14
|
-
* Positions are in CSS pixels relative to the element's top-left corner.
|
|
15
|
-
* Converting them into world coordinates (camera, zoom, projection) is game
|
|
16
|
-
* code.
|
|
17
|
-
*
|
|
18
|
-
* @module Pointer
|
|
19
|
-
* @docGroup browser
|
|
20
|
-
*
|
|
21
|
-
* @example
|
|
22
|
-
* ```ts
|
|
23
|
-
* const pointer = Pointer.track(canvas, window)
|
|
24
|
-
*
|
|
25
|
-
* // Once per update:
|
|
26
|
-
* const snapshot = pointer.snapshot()
|
|
27
|
-
* aimAt(snapshot.position)
|
|
28
|
-
* if (snapshot.primary.held) fire()
|
|
29
|
-
*
|
|
30
|
-
* // On teardown:
|
|
31
|
-
* pointer.dispose()
|
|
32
|
-
* ```
|
|
33
|
-
*
|
|
34
|
-
* For tests, replays, and headless runs, `scripted(...)` plays a timeline of
|
|
35
|
-
* moves, presses, and releases, and `recording(...)` wraps a live pointer to
|
|
36
|
-
* capture the timeline a session produced. `parseTimeline(...)` validates a
|
|
37
|
-
* timeline loaded from JSON.
|
|
9
|
+
* The buttons a snapshot reports: the main (usually left) button, the wheel
|
|
10
|
+
* button, the secondary (usually right) button, the side buttons, then the
|
|
11
|
+
* wheel's four directions. A wheel direction is a pulse, pressed and
|
|
12
|
+
* released in the same window, once per {@link wheelStep} pixels scrolled,
|
|
13
|
+
* so it binds actions that step (next weapon) and merges with a gamepad
|
|
14
|
+
* bumper in `Controls`; read the snapshot's `wheel` for how far it scrolled
|
|
15
|
+
* (zoom).
|
|
38
16
|
*/
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
const
|
|
17
|
+
export const buttonNames = [...physicalButtons, "wheelUp", "wheelDown", "wheelLeft", "wheelRight"];
|
|
18
|
+
/** Pixels scrolled per wheel pulse: one notch of a typical mouse wheel. */
|
|
19
|
+
export const wheelStep = 100;
|
|
20
|
+
const buttonOf = (code) => physicalButtons[code];
|
|
21
|
+
const buttonSet = new Set(buttonNames);
|
|
22
|
+
/** Whether `name` is a pointer button, for validating stored bindings. */
|
|
23
|
+
export const isButton = (name) => typeof name === "string" && buttonSet.has(name);
|
|
42
24
|
/**
|
|
43
|
-
* A snapshot with no buttons down, for initializing an input
|
|
44
|
-
* the first capture.
|
|
25
|
+
* A snapshot with no buttons down and no use yet, for initializing an input
|
|
26
|
+
* resource before the first capture.
|
|
45
27
|
*/
|
|
46
|
-
export const idle = (position = { x: 0, y: 0 }) => ({
|
|
28
|
+
export const idle = (bindings, position = { x: 0, y: 0 }) => ({
|
|
29
|
+
actions: idleActions(bindings),
|
|
30
|
+
vectors: {},
|
|
31
|
+
buttons: idleButtons(buttonNames),
|
|
47
32
|
position: { x: position.x, y: position.y },
|
|
33
|
+
movement: { x: 0, y: 0 },
|
|
34
|
+
wheel: { x: 0, y: 0 },
|
|
48
35
|
over: false,
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
middle: { held: false, pressed: false, released: false }
|
|
36
|
+
locked: false,
|
|
37
|
+
used: false
|
|
52
38
|
});
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
39
|
+
const pixelsPer = [1, 16, 800];
|
|
40
|
+
/**
|
|
41
|
+
* The button tracker with the position, motion, and wheel, shared by live
|
|
42
|
+
* and scripted pointers.
|
|
43
|
+
*/
|
|
44
|
+
const tracker = (initial, start) => {
|
|
45
|
+
const buttons = buttonTracker(buttonNames, initial);
|
|
46
|
+
let position = start;
|
|
47
|
+
let moved = false;
|
|
48
|
+
let movement = { x: 0, y: 0 };
|
|
49
|
+
let wheel = { x: 0, y: 0 };
|
|
50
|
+
// Scrolled toward the next pulse, per axis; reset when the direction turns.
|
|
51
|
+
const pending = { x: 0, y: 0 };
|
|
52
|
+
const pulse = (button) => {
|
|
53
|
+
buttons.down(button);
|
|
54
|
+
buttons.up(button);
|
|
55
|
+
};
|
|
56
|
+
const step = (axis, delta, negative, positive) => {
|
|
57
|
+
if (delta === 0)
|
|
58
|
+
return;
|
|
59
|
+
if (Math.sign(pending[axis]) !== Math.sign(delta))
|
|
60
|
+
pending[axis] = 0;
|
|
61
|
+
pending[axis] += delta;
|
|
62
|
+
while (Math.abs(pending[axis]) >= wheelStep) {
|
|
63
|
+
pulse(pending[axis] < 0 ? negative : positive);
|
|
64
|
+
pending[axis] -= Math.sign(pending[axis]) * wheelStep;
|
|
65
|
+
}
|
|
58
66
|
};
|
|
59
67
|
return {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
68
|
+
buttons,
|
|
69
|
+
move(next) {
|
|
70
|
+
if (next.x === position.x && next.y === position.y)
|
|
71
|
+
return;
|
|
72
|
+
position = next;
|
|
73
|
+
moved = true;
|
|
74
|
+
},
|
|
75
|
+
motion(delta) {
|
|
76
|
+
movement = { x: movement.x + delta.x, y: movement.y + delta.y };
|
|
77
|
+
},
|
|
78
|
+
scroll(delta) {
|
|
79
|
+
wheel = { x: wheel.x + delta.x, y: wheel.y + delta.y };
|
|
80
|
+
step("y", delta.y, "wheelUp", "wheelDown");
|
|
81
|
+
step("x", delta.x, "wheelLeft", "wheelRight");
|
|
82
|
+
},
|
|
83
|
+
snapshot(over, locked) {
|
|
84
|
+
const taken = buttons.take();
|
|
85
|
+
const used = moved || movement.x !== 0 || movement.y !== 0 || wheel.x !== 0 || wheel.y !== 0 || anyUsed(taken.buttons);
|
|
86
|
+
const snapshot = { ...taken, vectors: {}, position: { x: position.x, y: position.y }, movement, wheel, over, locked, used };
|
|
87
|
+
moved = false;
|
|
88
|
+
movement = { x: 0, y: 0 };
|
|
89
|
+
wheel = { x: 0, y: 0 };
|
|
90
|
+
return snapshot;
|
|
91
|
+
}
|
|
65
92
|
};
|
|
66
93
|
};
|
|
67
94
|
/**
|
|
68
|
-
* Starts tracking the pointer over `target
|
|
69
|
-
* releases held buttons when the
|
|
95
|
+
* Starts tracking the pointer over `target` with `bindings`, until
|
|
96
|
+
* `dispose()`. `blurHost` (usually `window`) releases held buttons when the
|
|
97
|
+
* page loses focus; a cancelled pointer and leaving the pointer lock release
|
|
98
|
+
* them too. Use `Touch.actions` for on-screen touch controls.
|
|
70
99
|
*/
|
|
71
|
-
export const
|
|
100
|
+
export const actions = (target, blurHost, bindings, options = {}) => {
|
|
72
101
|
const preventContextMenu = options.preventContextMenu ?? true;
|
|
102
|
+
const preventScroll = options.preventScroll ?? true;
|
|
103
|
+
const lock = options.lock;
|
|
73
104
|
const pointerTypes = options.pointerTypes ?? ["mouse", "pen"];
|
|
74
105
|
const tracked = (event) => pointerTypes.includes(event.pointerType ?? "mouse");
|
|
75
|
-
const
|
|
76
|
-
let position = { x: 0, y: 0 };
|
|
106
|
+
const state = tracker(bindings, { x: 0, y: 0 });
|
|
77
107
|
let over = false;
|
|
108
|
+
const isLocked = () => lock !== undefined && lock.pointerLockElement === target;
|
|
78
109
|
const locate = (event) => {
|
|
79
110
|
const rect = target.getBoundingClientRect();
|
|
80
|
-
|
|
111
|
+
state.move({ x: event.clientX - rect.left, y: event.clientY - rect.top });
|
|
112
|
+
state.motion({ x: event.movementX ?? 0, y: event.movementY ?? 0 });
|
|
81
113
|
};
|
|
82
114
|
const onDown = (event) => {
|
|
83
115
|
if (!tracked(event))
|
|
@@ -88,21 +120,23 @@ export const track = (target, blurHost, options = {}) => {
|
|
|
88
120
|
if (button === undefined)
|
|
89
121
|
return;
|
|
90
122
|
event.preventDefault();
|
|
91
|
-
|
|
92
|
-
|
|
123
|
+
if (lock !== undefined && !isLocked()) {
|
|
124
|
+
// The click that locks is not a press: "click to resume" does not also fire.
|
|
125
|
+
target.requestPointerLock?.();
|
|
93
126
|
return;
|
|
94
|
-
|
|
95
|
-
|
|
127
|
+
}
|
|
128
|
+
target.setPointerCapture?.(event.pointerId);
|
|
129
|
+
state.buttons.down(button);
|
|
96
130
|
};
|
|
97
131
|
const onUp = (event) => {
|
|
98
132
|
if (!tracked(event))
|
|
99
133
|
return;
|
|
100
134
|
locate(event);
|
|
101
135
|
const button = buttonOf(event.button);
|
|
102
|
-
if (button === undefined || !
|
|
136
|
+
if (button === undefined || !state.buttons.held.has(button))
|
|
103
137
|
return;
|
|
104
|
-
|
|
105
|
-
if (
|
|
138
|
+
state.buttons.up(button);
|
|
139
|
+
if (state.buttons.held.size === 0)
|
|
106
140
|
target.releasePointerCapture?.(event.pointerId);
|
|
107
141
|
};
|
|
108
142
|
const onMove = (event) => {
|
|
@@ -111,62 +145,65 @@ export const track = (target, blurHost, options = {}) => {
|
|
|
111
145
|
locate(event);
|
|
112
146
|
over = true;
|
|
113
147
|
};
|
|
114
|
-
const onEnter = (event) => {
|
|
115
|
-
if (!tracked(event))
|
|
116
|
-
return;
|
|
117
|
-
locate(event);
|
|
118
|
-
over = true;
|
|
119
|
-
};
|
|
120
148
|
const onLeave = (event) => {
|
|
121
149
|
if (tracked(event))
|
|
122
150
|
over = false;
|
|
123
151
|
};
|
|
124
|
-
const releaseAll = () => {
|
|
125
|
-
for (const button of edges.held)
|
|
126
|
-
edges.released.add(button);
|
|
127
|
-
edges.held.clear();
|
|
128
|
-
};
|
|
129
152
|
const onCancel = (event) => {
|
|
130
153
|
if (tracked(event))
|
|
131
|
-
|
|
154
|
+
state.buttons.upAll();
|
|
132
155
|
};
|
|
133
156
|
const onContextMenu = (event) => {
|
|
134
157
|
if (preventContextMenu)
|
|
135
158
|
event.preventDefault();
|
|
136
159
|
};
|
|
160
|
+
const onWheel = (event) => {
|
|
161
|
+
if (preventScroll)
|
|
162
|
+
event.preventDefault();
|
|
163
|
+
const scale = pixelsPer[event.deltaMode] ?? 1;
|
|
164
|
+
state.scroll({ x: event.deltaX * scale, y: event.deltaY * scale });
|
|
165
|
+
};
|
|
166
|
+
// Leaving the lock (Escape) releases what was held, like a blur.
|
|
167
|
+
const onLockChange = () => {
|
|
168
|
+
if (!isLocked())
|
|
169
|
+
state.buttons.upAll();
|
|
170
|
+
};
|
|
137
171
|
target.addEventListener("pointerdown", onDown);
|
|
138
172
|
target.addEventListener("pointerup", onUp);
|
|
139
173
|
target.addEventListener("pointermove", onMove);
|
|
140
|
-
target.addEventListener("pointerenter",
|
|
174
|
+
target.addEventListener("pointerenter", onMove);
|
|
141
175
|
target.addEventListener("pointerleave", onLeave);
|
|
142
176
|
target.addEventListener("pointercancel", onCancel);
|
|
143
177
|
target.addEventListener("contextmenu", onContextMenu);
|
|
144
|
-
|
|
178
|
+
target.addEventListener("wheel", onWheel, { passive: false });
|
|
179
|
+
blurHost.addEventListener("blur", state.buttons.upAll);
|
|
180
|
+
lock?.addEventListener("pointerlockchange", onLockChange);
|
|
145
181
|
return {
|
|
146
|
-
snapshot() {
|
|
147
|
-
const
|
|
148
|
-
|
|
149
|
-
edges.released.clear();
|
|
150
|
-
return snapshot;
|
|
182
|
+
snapshot: () => {
|
|
183
|
+
const locked = isLocked();
|
|
184
|
+
return state.snapshot(over || locked, locked);
|
|
151
185
|
},
|
|
186
|
+
rebind: state.buttons.rebind,
|
|
152
187
|
dispose() {
|
|
153
188
|
target.removeEventListener("pointerdown", onDown);
|
|
154
189
|
target.removeEventListener("pointerup", onUp);
|
|
155
190
|
target.removeEventListener("pointermove", onMove);
|
|
156
|
-
target.removeEventListener("pointerenter",
|
|
191
|
+
target.removeEventListener("pointerenter", onMove);
|
|
157
192
|
target.removeEventListener("pointerleave", onLeave);
|
|
158
193
|
target.removeEventListener("pointercancel", onCancel);
|
|
159
194
|
target.removeEventListener("contextmenu", onContextMenu);
|
|
160
|
-
|
|
195
|
+
target.removeEventListener("wheel", onWheel);
|
|
196
|
+
blurHost.removeEventListener("blur", state.buttons.upAll);
|
|
197
|
+
lock?.removeEventListener("pointerlockchange", onLockChange);
|
|
161
198
|
}
|
|
162
199
|
};
|
|
163
200
|
};
|
|
164
201
|
/**
|
|
165
|
-
* Plays `timeline`: before the snapshot at index `frame`,
|
|
166
|
-
* frame is applied. Buttons stay held from their press
|
|
167
|
-
* The scripted pointer is always over the element.
|
|
202
|
+
* Plays `timeline` with `bindings`: before the snapshot at index `frame`,
|
|
203
|
+
* every entry for that frame is applied. Buttons stay held from their press
|
|
204
|
+
* until their release. The scripted pointer is always over the element.
|
|
168
205
|
*/
|
|
169
|
-
export const scripted = (timeline, start = { x: 0, y: 0 }) => {
|
|
206
|
+
export const scripted = (bindings, timeline, start = { x: 0, y: 0 }) => {
|
|
170
207
|
const byFrame = new Map();
|
|
171
208
|
for (const entry of timeline) {
|
|
172
209
|
const entries = byFrame.get(entry.frame);
|
|
@@ -175,28 +212,32 @@ export const scripted = (timeline, start = { x: 0, y: 0 }) => {
|
|
|
175
212
|
else
|
|
176
213
|
byFrame.set(entry.frame, [entry]);
|
|
177
214
|
}
|
|
178
|
-
const
|
|
179
|
-
let position = start;
|
|
215
|
+
const state = tracker(bindings, start);
|
|
180
216
|
let frame = 0;
|
|
217
|
+
let locked = false;
|
|
181
218
|
return {
|
|
182
219
|
snapshot() {
|
|
183
|
-
edges.pressed.clear();
|
|
184
|
-
edges.released.clear();
|
|
185
220
|
for (const entry of byFrame.get(frame) ?? []) {
|
|
186
221
|
if (entry.move !== undefined)
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
if (
|
|
194
|
-
|
|
222
|
+
state.move(entry.move);
|
|
223
|
+
if (entry.movement !== undefined)
|
|
224
|
+
state.motion(entry.movement);
|
|
225
|
+
if (entry.wheel !== undefined)
|
|
226
|
+
state.scroll(entry.wheel);
|
|
227
|
+
if (entry.locked !== undefined) {
|
|
228
|
+
if (locked && !entry.locked)
|
|
229
|
+
state.buttons.upAll();
|
|
230
|
+
locked = entry.locked;
|
|
195
231
|
}
|
|
232
|
+
for (const button of entry.press ?? [])
|
|
233
|
+
state.buttons.down(button);
|
|
234
|
+
for (const button of entry.release ?? [])
|
|
235
|
+
state.buttons.up(button);
|
|
196
236
|
}
|
|
197
237
|
frame += 1;
|
|
198
|
-
return
|
|
238
|
+
return state.snapshot(true, locked);
|
|
199
239
|
},
|
|
240
|
+
rebind: state.buttons.rebind,
|
|
200
241
|
dispose() { },
|
|
201
242
|
frames: () => frame
|
|
202
243
|
};
|
|
@@ -209,17 +250,25 @@ export const recording = (pointer) => {
|
|
|
209
250
|
const entries = [];
|
|
210
251
|
let frame = 0;
|
|
211
252
|
let last;
|
|
253
|
+
let locked = false;
|
|
254
|
+
const nonZero = (delta) => delta.x !== 0 || delta.y !== 0;
|
|
212
255
|
return {
|
|
213
256
|
snapshot() {
|
|
214
257
|
const snapshot = pointer.snapshot();
|
|
215
258
|
const moved = last === undefined || last.x !== snapshot.position.x || last.y !== snapshot.position.y;
|
|
216
259
|
last = snapshot.position;
|
|
217
|
-
|
|
218
|
-
const
|
|
219
|
-
|
|
260
|
+
// Wheel pulses replay from the recorded wheel.
|
|
261
|
+
const press = physicalButtons.filter((button) => snapshot.buttons[button].pressed);
|
|
262
|
+
const release = physicalButtons.filter((button) => snapshot.buttons[button].released);
|
|
263
|
+
const lockChanged = snapshot.locked !== locked;
|
|
264
|
+
locked = snapshot.locked;
|
|
265
|
+
if (moved || lockChanged || nonZero(snapshot.movement) || nonZero(snapshot.wheel) || press.length > 0 || release.length > 0) {
|
|
220
266
|
entries.push({
|
|
221
267
|
frame,
|
|
222
268
|
...(moved ? { move: snapshot.position } : {}),
|
|
269
|
+
...(nonZero(snapshot.movement) ? { movement: snapshot.movement } : {}),
|
|
270
|
+
...(nonZero(snapshot.wheel) ? { wheel: snapshot.wheel } : {}),
|
|
271
|
+
...(lockChanged ? { locked: snapshot.locked } : {}),
|
|
223
272
|
...(press.length > 0 ? { press } : {}),
|
|
224
273
|
...(release.length > 0 ? { release } : {})
|
|
225
274
|
});
|
|
@@ -227,16 +276,16 @@ export const recording = (pointer) => {
|
|
|
227
276
|
frame += 1;
|
|
228
277
|
return snapshot;
|
|
229
278
|
},
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
},
|
|
279
|
+
rebind: (bindings) => pointer.rebind(bindings),
|
|
280
|
+
dispose: () => pointer.dispose(),
|
|
233
281
|
timeline: () => [...entries]
|
|
234
282
|
};
|
|
235
283
|
};
|
|
236
284
|
/**
|
|
237
285
|
* Validates untrusted data, such as a parsed JSON file, as a pointer
|
|
238
|
-
* timeline: an array of entries with a non-negative integer `frame`,
|
|
239
|
-
* optional finite `move`, and
|
|
286
|
+
* timeline: an array of entries with a non-negative integer `frame`,
|
|
287
|
+
* optional finite `move`, `movement`, and `wheel`, an optional boolean
|
|
288
|
+
* `locked`, and optional `press`/`release` arrays of physical buttons.
|
|
240
289
|
*/
|
|
241
290
|
export const parseTimeline = (data) => {
|
|
242
291
|
const invalid = (path, message) => Result.failure({ _tag: "InvalidTimeline", path, message });
|
|
@@ -248,49 +297,60 @@ export const parseTimeline = (data) => {
|
|
|
248
297
|
const path = `[${index}]`;
|
|
249
298
|
if (typeof entry !== "object" || entry === null)
|
|
250
299
|
return invalid(path, "expected an object");
|
|
251
|
-
const
|
|
300
|
+
const fields = entry;
|
|
301
|
+
const frame = fields["frame"];
|
|
252
302
|
if (typeof frame !== "number" || !Number.isInteger(frame) || frame < 0) {
|
|
253
303
|
return invalid(`${path}.frame`, "expected a non-negative integer");
|
|
254
304
|
}
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
305
|
+
const parsed = { frame };
|
|
306
|
+
for (const field of ["move", "movement", "wheel"]) {
|
|
307
|
+
const value = fields[field];
|
|
308
|
+
if (value === undefined)
|
|
309
|
+
continue;
|
|
310
|
+
if (typeof value !== "object" || value === null)
|
|
311
|
+
return invalid(`${path}.${field}`, "expected an object with x and y");
|
|
312
|
+
const { x, y } = value;
|
|
260
313
|
if (typeof x !== "number" || !Number.isFinite(x))
|
|
261
|
-
return invalid(`${path}.
|
|
314
|
+
return invalid(`${path}.${field}.x`, "expected a finite number");
|
|
262
315
|
if (typeof y !== "number" || !Number.isFinite(y))
|
|
263
|
-
return invalid(`${path}.
|
|
264
|
-
|
|
316
|
+
return invalid(`${path}.${field}.y`, "expected a finite number");
|
|
317
|
+
parsed[field] = { x, y };
|
|
318
|
+
}
|
|
319
|
+
const locked = fields["locked"];
|
|
320
|
+
if (locked !== undefined) {
|
|
321
|
+
if (typeof locked !== "boolean")
|
|
322
|
+
return invalid(`${path}.locked`, "expected a boolean");
|
|
323
|
+
parsed["locked"] = locked;
|
|
265
324
|
}
|
|
266
|
-
const
|
|
325
|
+
for (const field of ["press", "release"]) {
|
|
326
|
+
const value = fields[field];
|
|
267
327
|
if (value === undefined)
|
|
268
|
-
|
|
328
|
+
continue;
|
|
269
329
|
if (!Array.isArray(value))
|
|
270
330
|
return invalid(`${path}.${field}`, "expected an array of buttons");
|
|
271
|
-
const names = [];
|
|
272
331
|
for (let offset = 0; offset < value.length; offset++) {
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
if (button === undefined)
|
|
276
|
-
return invalid(`${path}.${field}[${offset}]`, `expected one of ${buttons.join(", ")}`);
|
|
277
|
-
names.push(button);
|
|
332
|
+
if (!isPhysical(value[offset]))
|
|
333
|
+
return invalid(`${path}.${field}[${offset}]`, `expected one of ${physicalButtons.join(", ")}`);
|
|
278
334
|
}
|
|
279
|
-
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
if (!pressed.ok)
|
|
283
|
-
return pressed;
|
|
284
|
-
const released = buttonsAt(release, "release");
|
|
285
|
-
if (!released.ok)
|
|
286
|
-
return released;
|
|
287
|
-
entries.push({
|
|
288
|
-
frame,
|
|
289
|
-
...(position === undefined ? {} : { move: position }),
|
|
290
|
-
...(pressed.value === undefined ? {} : { press: pressed.value }),
|
|
291
|
-
...(released.value === undefined ? {} : { release: released.value })
|
|
292
|
-
});
|
|
335
|
+
parsed[field] = [...value];
|
|
336
|
+
}
|
|
337
|
+
entries.push(parsed);
|
|
293
338
|
}
|
|
294
339
|
return Result.success(entries);
|
|
295
340
|
};
|
|
341
|
+
/**
|
|
342
|
+
* Validates untrusted data, such as saved settings parsed from JSON, as new
|
|
343
|
+
* buttons for `bindings`: an object with exactly the same action names, each
|
|
344
|
+
* mapped to a non-empty array of button names. Pass the result to
|
|
345
|
+
* {@link Actions.rebind}; on failure, keep the defaults.
|
|
346
|
+
*
|
|
347
|
+
* @example
|
|
348
|
+
* ```ts
|
|
349
|
+
* const saved = Pointer.parseRebinding(bindings, JSON.parse(stored))
|
|
350
|
+
* if (saved.ok) mouse.rebind(saved.value)
|
|
351
|
+
* ```
|
|
352
|
+
*/
|
|
353
|
+
export const parseRebinding = (bindings, data) =>
|
|
354
|
+
// The checked names and buttons are exactly `Rebinding<B>`.
|
|
355
|
+
ButtonsInternal.parseButtonRebinding(buttonNames, bindings, data);
|
|
296
356
|
//# sourceMappingURL=Pointer.js.map
|
package/dist/Pointer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pointer.js","sourceRoot":"","sources":["../src/Pointer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Pointer.js","sourceRoot":"","sources":["../src/Pointer.ts"],"names":[],"mappings":"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"}
|