awesome-cordova-plugins/src/plugins/3dtouch.ts

124 lines
3.8 KiB
TypeScript
Raw Normal View History

2016-06-10 09:25:53 +08:00
import {Plugin, Cordova} from './plugin';
2016-06-10 09:47:27 +08:00
import {Observable} from 'rxjs/Observable';
declare var window: any;
2016-06-10 09:25:53 +08:00
/**
2016-06-10 09:47:27 +08:00
* @name 3DTouch
2016-06-10 09:25:53 +08:00
* @description
* @usage
2016-06-10 09:51:23 +08:00
* Please do refer to the original plugin's repo for detailed usage. The usage example here might not be sufficient.
2016-06-10 09:47:27 +08:00
* ```
* import {ThreeDeeTouch, ThreeDeeTouchQuickAction, ThreeDeeTouchForceTouch} from 'ionic-native';
*
* ...
*
* ThreeDeeTouch.isAvailable().then(isAvailable => console.log("3D Touch available? " + isAvailable)):
*
* ThreeDeeTouch.watchForceTouches()
* .subscribe(
* (data: ThreeDeeTouchForceTouch) => {
* console.log("Force touch %" + data.force);
* console.log("Force touch timestamp: " + data.timestamp);
* console.log("Force touch x: " + data.x);
* console.log("Force touch y: " + data.y);
* }
* );
*
*
* let actions: Array<ThreeDeeTouchQuickAction> = [
* {
* type: 'checkin',
* title: 'Check in',
* subtitle: 'Quickly check in',
* iconType: 'Compose'
* },
* {
* type: 'share',
* title: 'Share',
* subtitle: 'Share like you care',
* iconType: 'Share'
* },
* {
* type: 'search',
* title: 'Search',
* iconType: 'Search'
* },
* {
* title: 'Show favorites',
* iconTemplate: 'HeartTemplate'
* }
* ];
* ThreeDeeTouch.configureQuickActions(actions);
* ```
2016-06-10 09:25:53 +08:00
*/
@Plugin({
2016-06-10 09:47:27 +08:00
plugin: 'cordova-plugin-3dtouch',
pluginRef: 'ThreeDeeTouch',
repo: 'https://github.com/EddyVerbruggen/cordova-plugin-3dtouch',
2016-06-10 09:25:53 +08:00
platforms: ['iOS']
2016-06-10 09:47:27 +08:00
})
export class ThreeDeeTouch {
/**
* You need an iPhone 6S or some future tech to use the features of this plugin, so you can check at runtime if the user's device is supported.
2016-06-10 09:51:23 +08:00
* @returns {Promise<boolean>} returns a promise that resolves with a boolean that indicates whether the plugin is available or not
2016-06-10 09:47:27 +08:00
*/
@Cordova()
static isAvailable(): Promise<boolean> {return; }
/**
* You can get a notification when the user force touches the webview. The plugin defines a Force Touch when at least 75% of the maximum force is applied to the screen. Your app will receive the x and y coordinates, so you have to figure out which UI element was touched.
2016-06-10 09:51:23 +08:00
* @returns {Observable<ThreeDeeTouchForceTouch>} Returns an observable that sends a `ThreeDeeTouchForceTouch` object
2016-06-10 09:47:27 +08:00
*/
@Cordova({
observable: true
})
static watchForceTouches(): Observable<ThreeDeeTouchForceTouch> {return; }
@Cordova({
sync: true
})
static configureQuickActions(quickActions: Array<ThreeDeeTouchQuickAction>): void {}
2016-06-10 09:51:23 +08:00
/**
* When a home icon is pressed, your app launches and this JS callback is invoked.
* @returns {Observable<any>} returns an observable that notifies you when he user presses on the home screen icon
*/
static onHomeIconPressed(): Observable<any> {
return new Observable(observer => {
if (window.ThreeDeeTouch && window.ThreeDeeTouch.onHomeIconPressed) window.ThreeDeeTouch.onHomeIconPressed = observer.next.bind(observer);
else {
observer.error('3dTouch plugin is not available.');
observer.complete();
}
});
}
2016-06-10 09:47:27 +08:00
2016-06-10 09:51:23 +08:00
/**
* UIWebView and WKWebView (the webviews powering Cordova apps) don't allow the fancy new link preview feature of iOS9.
*/
2016-06-10 09:47:27 +08:00
@Cordova({
sync: true
})
static enableLinkPreview(): void {}
2016-06-10 09:51:23 +08:00
/**
* Disabled the link preview feature, if enabled.
*/
2016-06-10 09:47:27 +08:00
@Cordova({
sync: true
})
static disableLinkPreview(): void {}
}
export interface ThreeDeeTouchQuickAction {
type?: string;
title: string;
subtitle?: string;
iconType?: string;
}
export interface ThreeDeeTouchForceTouch {
force: number;
timestamp: number;
x: number;
y: number;
}