UNPKG

@capgo/capacitor-flash

Version:

Switch the Flashlight / Torch of your device.

85 lines 2.76 kB
import { WebPlugin } from '@capacitor/core'; export class CapacitorFlashWeb extends WebPlugin { constructor() { super(...arguments); this.stream = null; this.track = null; this.torchOn = false; } async isAvailable() { var _a, _b; try { if (!((_a = navigator.mediaDevices) === null || _a === void 0 ? void 0 : _a.getUserMedia)) { return { value: false }; } const stream = await navigator.mediaDevices.getUserMedia({ video: { facingMode: 'environment' }, }); const track = stream.getVideoTracks()[0]; const capabilities = (_b = track.getCapabilities) === null || _b === void 0 ? void 0 : _b.call(track); const hasTorch = (capabilities === null || capabilities === void 0 ? void 0 : capabilities.torch) === true; // Stop the test stream track.stop(); return { value: hasTorch }; } catch (_c) { return { value: false }; } } async switchOn(_options) { var _a; try { // If we already have a stream with torch on, just return if (this.stream && this.torchOn) { return; } // Get camera stream if we don't have one if (!this.stream) { this.stream = await navigator.mediaDevices.getUserMedia({ video: { facingMode: 'environment' }, }); this.track = this.stream.getVideoTracks()[0]; } // Apply torch constraint await ((_a = this.track) === null || _a === void 0 ? void 0 : _a.applyConstraints({ advanced: [{ torch: true }], })); this.torchOn = true; } catch (e) { throw new Error(`Failed to switch on torch: ${e}`); } } async switchOff() { try { if (this.track) { // Turn off torch by stopping the track this.track.stop(); this.track = null; } if (this.stream) { this.stream = null; } this.torchOn = false; } catch (e) { throw new Error(`Failed to switch off torch: ${e}`); } } async isSwitchedOn() { return { value: this.torchOn }; } async toggle() { if (this.torchOn) { await this.switchOff(); } else { await this.switchOn({}); } return { value: this.torchOn }; } async getPluginVersion() { return { version: 'web' }; } } //# sourceMappingURL=web.js.map