UNPKG

@oliverphaser/nativescript-eventify

Version:

Enables programmatic execution of gesture events in NativeScript applications. Forked from mudlabs and updated for NativeScript 8.

71 lines (66 loc) 1.84 kB
import * as Common from "./eventify.common"; import { ViewBase } from "@nativescript/core/ui/core/view-base"; /** * Simulates a pointer touching down onto the device. */ const touchDown = view => { const origin = Common.getObjectXYRelativeToPage(view); view.android.dispatchTouchEvent( android.view.MotionEvent.obtain( android.os.SystemClock.uptimeMillis(), android.os.SystemClock.uptimeMillis(), android.view.MotionEvent.ACTION_DOWN, origin.x + view.getActualSize().width / 2, origin.y + view.getActualSize().height / 2, 0 ) ); }; /** * Simulates a pointer raising up from the device. */ const touchUp = veiw => { const origin = Common.getObjectXYRelativeToPage(veiw); veiw.android.dispatchTouchEvent( android.view.MotionEvent.obtain( android.os.SystemClock.uptimeMillis(), android.os.SystemClock.uptimeMillis(), android.view.MotionEvent.ACTION_UP, origin.x + veiw.getActualSize().width / 2, origin.y + veiw.getActualSize().height / 2, 0 ) ); }; /** * Simulates a tap event. * * @param view - The object to be touched */ const tap = view => { touchDown(view); touchUp(view); }; /** * Add the eventify method to the ViewBase prototype chain so it's available to everything that extends from it. * * @param data - The `eventName` and `object` that would otherwise have been passed to `notify(...)`. * @param info - The additional information needed to execute the event. * * @returns void */ //@ts-ignore ViewBase.prototype.eventify = function( data: Common.EventData, info: Common.EventInfo ): void { Common.canBeHandledByNotify(this, data.eventName) ? this.notify(data) : (() => { switch (data.eventName) { case "tap": tap(this); break; } })(); };