projecte_ionic/node_modules/@ionic/core/components/haptic.js
2022-02-09 18:30:03 +01:00

107 lines
2.5 KiB
JavaScript
Executable file

const HapticEngine = {
getEngine() {
const win = window;
return (win.TapticEngine) || (win.Capacitor && win.Capacitor.isPluginAvailable('Haptics') && win.Capacitor.Plugins.Haptics);
},
available() {
return !!this.getEngine();
},
isCordova() {
return !!window.TapticEngine;
},
isCapacitor() {
const win = window;
return !!win.Capacitor;
},
impact(options) {
const engine = this.getEngine();
if (!engine) {
return;
}
const style = this.isCapacitor() ? options.style.toUpperCase() : options.style;
engine.impact({ style });
},
notification(options) {
const engine = this.getEngine();
if (!engine) {
return;
}
const style = this.isCapacitor() ? options.style.toUpperCase() : options.style;
engine.notification({ style });
},
selection() {
this.impact({ style: 'light' });
},
selectionStart() {
const engine = this.getEngine();
if (!engine) {
return;
}
if (this.isCapacitor()) {
engine.selectionStart();
}
else {
engine.gestureSelectionStart();
}
},
selectionChanged() {
const engine = this.getEngine();
if (!engine) {
return;
}
if (this.isCapacitor()) {
engine.selectionChanged();
}
else {
engine.gestureSelectionChanged();
}
},
selectionEnd() {
const engine = this.getEngine();
if (!engine) {
return;
}
if (this.isCapacitor()) {
engine.selectionEnd();
}
else {
engine.gestureSelectionEnd();
}
}
};
/**
* Trigger a selection changed haptic event. Good for one-time events
* (not for gestures)
*/
const hapticSelection = () => {
HapticEngine.selection();
};
/**
* Tell the haptic engine that a gesture for a selection change is starting.
*/
const hapticSelectionStart = () => {
HapticEngine.selectionStart();
};
/**
* Tell the haptic engine that a selection changed during a gesture.
*/
const hapticSelectionChanged = () => {
HapticEngine.selectionChanged();
};
/**
* Tell the haptic engine we are done with a gesture. This needs to be
* called lest resources are not properly recycled.
*/
const hapticSelectionEnd = () => {
HapticEngine.selectionEnd();
};
/**
* Use this to indicate success/failure/warning to the user.
* options should be of the type `{ style: 'light' }` (or `medium`/`heavy`)
*/
const hapticImpact = (options) => {
HapticEngine.impact(options);
};
export { hapticSelectionStart as a, hapticSelectionChanged as b, hapticImpact as c, hapticSelection as d, hapticSelectionEnd as h };