UNPKG

declarations

Version:

[![npm version](https://badge.fury.io/js/declarations.svg)](https://www.npmjs.com/package/declarations)

259 lines (222 loc) 10.4 kB
// Type definitions for cordova-plugin-qrscanner v1.0.0 // Project: https://github.com/bitpay/cordova-plugin-qrscanner // Definitions by: Jason Dreyzehner <https://github.com/bitjson/> // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped /** * Global object QRScanner. */ interface Window { QRScanner: QRScanner; } /** * The QRScanner object provides functions to initialize, control, utilize, and * deallocate a native QR code scanner and video preview behind the Cordova webview. */ interface QRScanner { /** * Request permission to access the camera (if not already granted), prepare * the video preview, and configure everything needed by QRScanner. This will * only be visible if `QRScanner.show()` has already made the webview transparent. * @param {function} [callback] Callback that gets an error or the QRScannerStatus object. */ prepare: (callback?: (error: QRScannerError, status: QRScannerStatus) => any) => void; /** * Sets QRScanner to "watch" for valid QR codes. Once a valid code is * detected, it's contents are passed to the callback, and scanning is * toggled off. If `QRScanner.prepare()` has not been called, * this method performs that setup as well. The video preview does * not need to be visible for scanning to function. * @param {function} callback Callback that gets an error or the results string. */ scan: (callback: (error: QRScannerError, result: String) => any) => void; /** * Cancels the current scan. If `QRScanner.prepare()` has not been called, * this method performs that setup as well. * @param {function} [callback] Callback that gets the QRScannerStatus object. */ cancelScan: (callback?: (status: QRScannerStatus) => any) => void; /** * Configures the native webview to have a transparent background, then sets * the background of the `<body>` and parent elements to transparent, * allowing the webview to re-render with the transparent background. * * To see the video preview, your application background must be transparent * in the areas through which it should show. * @param {function} [callback] Callback that gets the QRScannerStatus object. */ show: (callback?: (status: QRScannerStatus) => any) => void; /** * Configures the native webview to be opaque with a white background, * covering the video preview. * @param {function} [callback] Callback that gets the QRScannerStatus object. */ hide: (callback?: (status: QRScannerStatus) => any) => void; /** * Enable the device's light (for scanning in low-light environments). If * `QRScanner.prepare()` has not been called, this method performs that setup * as well. * @param {function} [callback] Callback that gets an error or the QRScannerStatus object. */ enableLight: (callback?: (error: QRScannerError, status: QRScannerStatus) => any) => void; /** * Disable the device's light. If `QRScanner.prepare()` has not been called, * this method performs that setup as well. * @param {function} [callback] Callback that gets an error or the QRScannerStatus object. */ disableLight: (callback?: (error: QRScannerError, status: QRScannerStatus) => any) => void; /** * Switch video capture to the `index` camera. Camera `0` is the back camera, * camera `1` is front camera. If `QRScanner.prepare()` has not been called, * this method performs that setup as well. * @param {number} index A number representing the index of the camera to use. * @param {function} [callback] Callback that gets an error or the QRScannerStatus object. */ useCamera: (index: Number, callback?: (error: QRScannerError, status: QRScannerStatus) => any) => void; /** * Switch video capture to the device's front camera. If `QRScanner.prepare()` * has not been called, this method performs that setup as well. * @param {function} [callback] Callback that gets an error or the QRScannerStatus object. */ useFrontCamera: (callback?: (error: QRScannerError, status: QRScannerStatus) => any) => void; /** * Switch video capture to the device's back camera. If `QRScanner.prepare()` * has not been called, this method performs that setup as well. * @param {function} [callback] Callback that gets an error or the QRScannerStatus object. */ useBackCamera: (callback?: (error: QRScannerError, status: QRScannerStatus) => any) => void; /** * Pauses the video preview on the current frame (as if a snapshot was taken). * @param {function} [callback] Callback that gets the QRScannerStatus object. */ pausePreview: (callback?: (status: QRScannerStatus) => any) => void; /** * Resumes the video preview. * @param {function} [callback] Callback that gets the QRScannerStatus object. */ resumePreview: (callback?: (status: QRScannerStatus) => any) => void; /** * Open the app-specific permission settings in the user's device settings. * Here the user can enable/disable camera (and other) access for your app. * * Note: iOS immediately kills all apps affected by permissions changes. If * the user changes a permission settings, your app will stop and only * restart when they return. * @param {function} [callback] Callback that gets the QRScannerStatus object. */ openSettings: (callback?: (error: QRScannerError, status: QRScannerStatus) => any) => void; /** * Retrieve the status of QRScanner and provide it to the callback function. * @param {function} callback Callback that gets the QRScannerStatus object. */ getStatus: (callback: (status: QRScannerStatus) => any) => void; /** * Runs hide(), stops scanning, video capture, and the preview, and * deallocates as much as possible. (E.g. to improve performance/battery life * when the scanner is not likely to be used for a while.) * Basically reverts the plugin to it's startup-state. * @param {function} [callback] Callback that gets the QRScannerStatus object. */ destroy: (callback?: (status: QRScannerStatus) => any) => void; } /** * An object representing the current status of QRScanner. */ interface QRScannerStatus { /** * On iOS and Android 6.0+, camera access is granted at runtime by the user (by * clicking "Allow" at the dialog). The `authorized` property is a boolean * value which is true only when the user has allowed camera access to your app * (`AVAuthorizationStatus.Authorized`). On platforms with permissions granted * at install (Android pre-6.0, Windows Phone) this property is always true. */ authorized: Boolean, /** * A boolean value which is true if the user permenantly denied camera access * to the app (`AVAuthorizationStatus.Denied`). Once denied, camera access can * only be gained by requesting the user change their decision (consider * offering a link to the setting via `openSettings()`). */ denied: Boolean, /** * A boolean value which is true if the user is unable to grant permissions due * to parental controls, organization security configuration profiles, or * similar reasons. */ restricted: Boolean, /** * A boolean value which is true if QRScanner is prepared to capture video and * render it to the view. */ prepared: Boolean, /** * A boolean value which is true if QRScanner is actively scanning for a QR code. */ scanning: Boolean, /** * A boolean value which is true if QRScanner is displaying a live preview * from the device's camera. Set to false when the preview is paused. */ previewing: Boolean, /** * A boolean value which is true when the native webview background is transparent. */ webviewBackgroundIsTransparent: Boolean, /** * A boolean value which is true if the light is enabled. */ lightEnabled: Boolean, /** * A boolean value which is true only if the users' operating system is able * to `QRScanner.openSettings()`. */ canOpenSettings: Boolean, /** * A boolean value which is true only if the users' device can enable a light * in the direction of the currentCamera. */ canEnableLight: Boolean, /** * A number representing the index of the currentCamera. `0` is the back * camera, `1` is the front. */ currentCamera: Number } /** * An object representing an error issued by QRScanner. * * Many QRScanner functions accept a callback with an `error` parameter. When * QRScanner experiences errors, this parameter contains a QRScannerError object * with properties `name` (_String_), `code` (_Number_), and `_message` * (_String_). When handling errors, rely only on the `name` or `code` parameter, *as the specific content of `_message` is not considered part of the plugin's * stable API. * * # Possible Error Types * * Code | Name | Description * ---: | :-------------------------- | :---------------------------------------- * 0 | `UNEXPECTED_ERROR` | An unexpected error. Returned only by bugs in QRScanner. * 1 | `CAMERA_ACCESS_DENIED` | The user denied camera access. * 2 | `CAMERA_ACCESS_RESTRICTED` | Camera access is restricted (due to parental controls, organization security configuration profiles, or similar reasons). * 3 | `BACK_CAMERA_UNAVAILABLE` | The back camera is unavailable. * 4 | `FRONT_CAMERA_UNAVAILABLE` | The front camera is unavailable. * 5 | `CAMERA_UNAVAILABLE` | The camera is unavailable because it doesn't exist or is otherwise unable to be configured. (Returned if QRScanner cannot return one of the more specific `BACK_CAMERA_UNAVAILABLE` or `FRONT_CAMERA_UNAVAILABLE` errors.) * 6 | `SCAN_CANCELED` | Scan was canceled by the `cancelScan()` method. (Returned exclusively to the `QRScanner.scan()` method.) * 7 | `LIGHT_UNAVAILABLE` | The device light is unavailable because it doesn't exist or is otherwise unable to be configured. * 8 | `OPEN_SETTINGS_UNAVAILABLE` | The device is unable to open settings. */ interface QRScannerError { /** * The standard string identifying the type of this QRScannerError. */ name: String, /** * The standard number identifying the type of this QRScannerError. */ code: Number, /** * A simple message describing this QRScannerError. */ _message: String } declare var QRScanner: QRScanner;