microbit-web-components
Version:
Web Components library for micro:bit
59 lines (54 loc) • 1.9 kB
JavaScript
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
const __chunk_1 = require('./chunk-0d894813.js');
const __chunk_2 = require('./chunk-6ce037e1.js');
class MicrobitMovement {
constructor(hostRef) {
__chunk_1.registerInstance(this, hostRef);
this.services = null;
/**
* The sensitivity of the sensor
*/
this.sensitivity = 1;
/**
* The frequency to read the sensor
*/
this.frequency = 20;
/**
* The CSS class to use when still
*/
this.stillClass = "microbit-still";
/**
* The CSS class to use when moved
*/
this.movedClass = "microbit-moved";
this.className = this.stillClass;
__chunk_2.microbitStore.addListener(this);
}
async servicesUpdated() {
if (!this.services || !this.services.accelerometerService) {
this.className = this.stillClass;
return;
}
const service = this.services.accelerometerService;
await service.setAccelerometerPeriod(this.frequency);
const data = await service.readAccelerometerData();
this.setClassName(data);
await service.addEventListener("accelerometerdatachanged", event => this.setClassName(event.detail));
}
setClassName(data) {
this.className =
(Math.abs(data.x) > this.sensitivity
|| Math.abs(data.y) > this.sensitivity
|| Math.abs(data.z) > this.sensitivity) ? this.movedClass
: this.stillClass;
}
render() {
return (__chunk_1.h("span", { class: this.className }, __chunk_1.h("slot", null)));
}
get el() { return __chunk_1.getElement(this); }
static get watchers() { return {
"services": ["servicesUpdated"]
}; }
}
exports.microbit_movement = MicrobitMovement;