UNPKG

3.37 kBSource Map (JSON)View Raw
1{"version":3,"file":"DeviceSensor.js","sourceRoot":"","sources":["../src/DeviceSensor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAgB,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAMxE;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,YAAY;IAM/B,YAAY,kBAAsC,EAAE,eAAuB;QACzE,IAAI,CAAC,aAAa,GAAG,kBAAkB,CAAC;QACxC,IAAI,CAAC,cAAc,GAAG,IAAI,YAAY,CAAC,kBAAkB,CAAC,CAAC;QAC3D,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;QACxC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,WAAW,CAAC,QAAqB;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QACtF,YAAY,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAClE,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAChE,CAAC;IAED,kBAAkB,CAAC,YAA0B;QAC3C,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;IACvD,CAAC;IAED,iBAAiB,CAAC,UAAkB;QAClC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE;YACzC,OAAO,CAAC,IAAI,CAAC,yDAAyD,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;SACtF;aAAM;YACL,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;SAClD;IACH,CAAC;IACD,KAAK,CAAC,gBAAgB;QACpB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE;YACxC,OAAO,KAAK,CAAC;SACd;aAAM;YACL,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC;SACpD;IACH,CAAC;CACF","sourcesContent":["import { EventEmitter, Subscription, Platform } from '@unimodules/core';\n\ntype Listener<E> = (event: E) => void;\n\ntype NativeSensorModule = any;\n\n/**\n * A base class for subscribable sensors. The events emitted by this class are measurements\n * specified by the parameter type `M`.\n */\nexport default class DeviceSensor<M> {\n _nativeModule: NativeSensorModule;\n _nativeEmitter: EventEmitter;\n _nativeEventName: string;\n _listenerCount: number;\n\n constructor(nativeSensorModule: NativeSensorModule, nativeEventName: string) {\n this._nativeModule = nativeSensorModule;\n this._nativeEmitter = new EventEmitter(nativeSensorModule);\n this._nativeEventName = nativeEventName;\n this._listenerCount = 0;\n }\n\n addListener(listener: Listener<M>): Subscription {\n const subscription = this._nativeEmitter.addListener(this._nativeEventName, listener);\n subscription.remove = () => this.removeSubscription(subscription);\n this._listenerCount++;\n return subscription;\n }\n\n hasListeners(): boolean {\n return this._listenerCount > 0;\n }\n\n getListenerCount(): number {\n return this._listenerCount;\n }\n\n removeAllListeners(): void {\n this._listenerCount = 0;\n this._nativeEmitter.removeAllListeners(this._nativeEventName);\n }\n\n removeSubscription(subscription: Subscription): void {\n this._listenerCount--;\n this._nativeEmitter.removeSubscription(subscription);\n }\n\n setUpdateInterval(intervalMs: number): void {\n if (!this._nativeModule.setUpdateInterval) {\n console.warn(`expo-sensors: setUpdateInterval() is not supported on ${Platform.OS}`);\n } else {\n this._nativeModule.setUpdateInterval(intervalMs);\n }\n }\n async isAvailableAsync(): Promise<boolean> {\n if (!this._nativeModule.isAvailableAsync) {\n return false;\n } else {\n return await this._nativeModule.isAvailableAsync();\n }\n }\n}\n"]}
\No newline at end of file