lesca-sensor-motion
Version:
collect `device-motion` to a useful value. Include user permission and event listener.
85 lines (65 loc) • 3.58 kB
Markdown
[](https://zh-hant.reactjs.org/)
[](https://lesscss.org/)
[](https://www.typescriptlang.org/)
[](https://www.w3schools.com/html/)
[](https://www.w3schools.com/css/)
[](https://www.npmjs.com/)
[](https://nodejs.org/en/)
[](https://www.npmjs.com/~jameshsu1125)
collect `device-motion` to a useful value. Include user permission and event listener.
```sh
npm install lesca-sensor-motion --save
```
As a Node module:
```javascript
import { useState, useEffect, useMemo } from 'react';
import Motion from 'lesca-sensor-motion';
// (1) waiting for permission => Must be user-triggered event and SSL required
// (2) add addListener
const Components = () => {
const [state, setState] = useState(false);
const motion = useMemo(() => new Motion(), []);
const require_permission = () => {
motion
.permission()
.then(() => {
// permission granted
setState(true);
})
.catch(() => {
// permission denied
});
};
useEffect(() => {
if (state) {
motion.addEventListener(20, (e) => {
alert(e);
});
}
return () => {
motion.destroy();
};
}, [state]);
return <button onClick={require_permission}>click me</button>;
};
```
| method | description | return |
| :---------------------------------------------------------- | :------------------------: | --------------------------------------------------------------------------------------------------: |
| .permission() | require user permission | [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) |
| .addEventListener(`force`: _number_, `handler`: _function_) | exceeds the value of force | 20 |
| .destroy() | destroy event | void |
| Properties | description | default |
| :--------------------- | :---------------------------: | ------: |
| .each : _int_ | time of force update | 1 |
| .delay : _int_ | time delay of callback called | 1000 |
| .disable : _boolean_ | stop / continue event listen | true |
| .isSupport : _boolean_ | permission granted or denied | false |
- maintain if necessary