A11y: various improvements

This commit is contained in:
Pieter Vander Vennet 2023-12-19 22:21:34 +01:00
parent 0d4f2c9c36
commit 5fa2ddd9c1
23 changed files with 327 additions and 98 deletions

33
src/Sensors/Motion.ts Normal file
View file

@ -0,0 +1,33 @@
import { UIEventSource } from "../Logic/UIEventSource"
export default class Motion {
public static singleton = new Motion()
/**
* In m/s²
*/
public maxAcc = new UIEventSource<number>(0)
public lastShakeEvent = new UIEventSource<Date>(undefined)
private isListening = false
private constructor() {
this.startListening()
}
private onUpdate(eventData: DeviceMotionEvent) {
const acc = eventData.acceleration
this.maxAcc.setData(Math.max(acc.x, acc.y, acc.z))
if (this.maxAcc.data > 22) {
this.lastShakeEvent.setData(new Date())
}
}
startListening() {
if (this.isListening) {
return
}
this.isListening = true
console.log("Listening to motion events", this)
window.addEventListener("devicemotion", (e) => this.onUpdate(e))
}
}