Skip to content

Commit

Permalink
Initial version
Browse files Browse the repository at this point in the history
  • Loading branch information
zabojad committed Nov 15, 2019
0 parents commit eaacd28
Show file tree
Hide file tree
Showing 6 changed files with 360 additions and 0 deletions.
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# react-native-gesture-handler

Haxe externs for [react-native-gesture-handler](https://github.com/kmagiera/react-native-gesture-handler)

18 changes: 18 additions & 0 deletions haxelib.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"name": "react-native-gesture-handler",
"license": "MIT",
"tags": [
"react",
"native",
"gesture"
],
"classPath": "src",
"contributors": [
"zabojad"
],
"releasenote": "Initial release",
"version": "1.0.0",
"url": "https://github.com/haxe-react/react-native-gesture-handler",
"dependencies": {
}
}
149 changes: 149 additions & 0 deletions src/react/native/gesturehandler/GestureEvent.hx
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
package react.native.gesturehandler;

@:enum
abstract Directions(Int) to Int {
var RIGHT = 1;
var LEFT = 2;
var UP = 4;
var DOWN = 8;
}

@:enum
abstract State(Int) to Int {
var UNDETERMINED = 0;
var FAILED = 1;
var BEGAN = 2;
var CANCELLED = 3;
var ACTIVE = 4;
var END = 5;
}

/* STATE CHANGE EVENTS */

typedef GestureHandlerGestureEventNativeEvent = {
handlerTag: Float,
numberOfPointers: Float,
state: State,
}

typedef GestureHandlerStateChangeNativeEvent = {
handlerTag: Float,
numberOfPointers: Float,
state: State,
oldState: State,
}

class GestureHandlerStateChangeEvent<T:(GestureHandlerStateChangeNativeEvent)> {
public var nativeEvent: T;
}


class GestureHandlerGestureEvent<T:(GestureHandlerGestureEventNativeEvent)> {
public var nativeEvent: T;
}

class GestureHandlerGestureNativeEvent extends GestureHandlerGestureEvent<GestureHandlerGestureEventNativeEvent> {}


typedef NativeViewGestureHandlerStateChangeEventExtra = {
> GestureHandlerStateChangeNativeEvent,
pointerInside: Bool,
}

typedef NativeViewGestureHandlerGestureEventExtra = {
> GestureHandlerGestureEventNativeEvent,
pointerInside: Bool,
}

class NativeViewGestureHandlerStateChangeEvent extends GestureHandlerStateChangeEvent<NativeViewGestureHandlerStateChangeEventExtra> {}

class NativeViewGestureHandlerGestureEvent extends GestureHandlerGestureEvent<NativeViewGestureHandlerGestureEventExtra> {}

typedef TapGestureHandlerEventExtra = {
> GestureHandlerStateChangeNativeEvent,
x: Float,
y: Float,
absoluteX: Float,
absoluteY: Float,
}

typedef ForceTouchGestureHandlerEventExtra = {
> GestureHandlerStateChangeNativeEvent,
x: Float,
y: Float,
absoluteX: Float,
absoluteY: Float,
force: Float,
}

class TapGestureHandlerStateChangeEvent extends GestureHandlerStateChangeEvent<TapGestureHandlerEventExtra> {}

class TapGestureHandlerGestureEvent extends GestureHandlerStateChangeEvent<TapGestureHandlerEventExtra> {}

class ForceTouchGestureHandlerGestureEvent extends GestureHandlerStateChangeEvent<ForceTouchGestureHandlerEventExtra> {}

class LongPressGestureHandlerStateChangeEvent extends GestureHandlerStateChangeEvent<LongPressGestureHandlerEventExtra> {}

class ForceTouchGestureHandlerStateChangeEvent extends GestureHandlerStateChangeEvent<ForceTouchGestureHandlerEventExtra> {}

typedef LongPressGestureHandlerEventExtra = {
> GestureHandlerStateChangeNativeEvent,
x: Float,
y: Float,
absoluteX: Float,
absoluteY: Float,
}

typedef PanGestureHandlerEventExtra = {
> GestureHandlerStateChangeNativeEvent,
x: Float,
y: Float,
absoluteX: Float,
absoluteY: Float,
translationX: Float,
translationY: Float,
velocityX: Float,
velocityY: Float,
}

class PanGestureHandlerStateChangeEvent extends GestureHandlerStateChangeEvent<PanGestureHandlerEventExtra> {}

class PanGestureHandlerGestureEvent extends GestureHandlerGestureEvent<PanGestureHandlerEventExtra> {}


typedef PinchGestureHandlerEventExtra = {
> GestureHandlerStateChangeNativeEvent,
scale: Float,
focalX: Float,
focalY: Float,
velocity: Float,
}

class PinchGestureHandlerStateChangeEvent extends GestureHandlerStateChangeEvent<PinchGestureHandlerEventExtra> {}
class PinchGestureHandlerGestureEvent extends GestureHandlerGestureEvent<PinchGestureHandlerEventExtra> {}

typedef RotationGestureHandlerEventExtra = {
> GestureHandlerStateChangeNativeEvent,
rotation: Float,
anchorX: Float,
anchorY: Float,
velocity: Float,
}

class RotationGestureHandlerStateChangeEvent extends GestureHandlerStateChangeEvent<RotationGestureHandlerEventExtra> {}
class RotationGestureHandlerGestureEvent extends GestureHandlerGestureEvent<RotationGestureHandlerEventExtra> {}


typedef FlingGestureHandlerEventExtra = {
> GestureHandlerStateChangeNativeEvent,
x: Float,
y: Float,
absoluteX: Float,
absoluteY: Float,
}

class FlingGestureHandlerStateChangeEvent extends GestureHandlerStateChangeEvent<FlingGestureHandlerEventExtra> {}
class FlingGestureHandlerGestureEvent extends GestureHandlerGestureEvent<GestureHandlerGestureEventNativeEvent> {}


//TODO complete missing classes.. I think there's more
152 changes: 152 additions & 0 deletions src/react/native/gesturehandler/GestureHandler.hx
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
package react.native.gesturehandler;

import haxe.extern.EitherType;
import react.ReactRef;
import react.ReactComponent;
import react.native.component.props.ViewStyle;
import react.native.gesturehandler.GestureEvent;

private typedef EitherData<T> = EitherType<T, Array<T>>;

/* GESTURE HANDLERS PROPERTIES */

typedef GestureHandlerProperties = {
? id: String,
? enabled: Bool,
? waitFor: ReactRef<EitherData<Any>>,
? simultaneousHandlers: ReactRef<EitherData<Any>>,
? shouldCancelWhenOutside: Bool,
? hitSlop: EitherType<Float, {
? left: Float,
? right: Float,
? top: Float,
? bottom: Float,
? vertical: Float,
? horizontal: Float,
}>,
}

typedef NativeViewGestureHandlerProperties = {
> GestureHandlerProperties,
? shouldActivateOnStart: Bool,
? disallowInterruption: Bool,
? onGestureEvent: NativeViewGestureHandlerGestureEvent -> Void,
? onHandlerStateChange: NativeViewGestureHandlerStateChangeEvent -> Void,
}

typedef TapGestureHandlerProperties = {
> GestureHandlerProperties,
? minPointers: Float,
? maxDurationMs: Float,
? maxDelayMs: Float,
? FloatOfTaps: Float,
? maxDeltaX: Float,
? maxDeltaY: Float,
? maxDist: Float,
? onGestureEvent: TapGestureHandlerGestureEvent -> Void,
? onHandlerStateChange: TapGestureHandlerStateChangeEvent -> Void,
}

typedef ForceTouchGestureHandlerProperties = {
> GestureHandlerProperties,
? minForce: Float,
? maxForce: Float,
? feedbackOnActivation: Bool,
? onGestureEvent: ForceTouchGestureHandlerGestureEvent -> Void,
? onHandlerStateChange: ForceTouchGestureHandlerStateChangeEvent -> Void,
}

typedef LongPressGestureHandlerProperties = {
> GestureHandlerProperties,
? minDurationMs: Float,
? maxDist: Float,
? onGestureEvent: GestureHandlerGestureNativeEvent -> Void,
? onHandlerStateChange: LongPressGestureHandlerStateChangeEvent -> Void,
}

typedef PanGestureHandlerProperties = {
> GestureHandlerProperties,
// @deprecated use activeOffsetX
? minDeltaX: Float,
// @deprecated use activeOffsetY
? minDeltaY: Float,
// @deprecated use failOffsetX
? maxDeltaX: Float,
// @deprecated use failOffsetY
? maxDeltaY: Float,
// @deprecated use activeOffsetX
? minOffsetX: Float,
// @deprecated use failOffsetY
? minOffsetY: Float,
? activeOffsetY: EitherData<Float>,
? activeOffsetX: EitherData<Float>,
? failOffsetY: EitherData<Float>,
? failOffsetX: EitherData<Float>,
? minDist: Float,
? minVelocity: Float,
? minVelocityX: Float,
? minVelocityY: Float,
? minPointers: Float,
? maxPointers: Float,
? avgTouches: Bool,
? onGestureEvent: PanGestureHandlerGestureEvent -> Void,
? onHandlerStateChange: PanGestureHandlerStateChangeEvent -> Void,
}

typedef PinchGestureHandlerProperties = {
> GestureHandlerProperties,
? onGestureEvent: PinchGestureHandlerGestureEvent -> Void,
? onHandlerStateChange: PinchGestureHandlerStateChangeEvent -> Void,
}

typedef RotationGestureHandlerProperties = {
> GestureHandlerProperties,
? onGestureEvent: RotationGestureHandlerGestureEvent -> Void,
? onHandlerStateChange: RotationGestureHandlerStateChangeEvent->Void,
}

typedef FlingGestureHandlerProperties = {
> GestureHandlerProperties,
? direction: Float,
? FloatOfPointers: Float,
? onGestureEvent: FlingGestureHandlerGestureEvent -> Void,
? onHandlerStateChange: FlingGestureHandlerStateChangeEvent -> Void,
}

// GESTURE HANDLERS CLASSES

@:jsRequire('react-native-gesture-handler', 'GestureHandler')
extern class NativeViewGestureHandler extends ReactComponentOfProps<NativeViewGestureHandlerProperties> {}

@:jsRequire('react-native-gesture-handler', 'GestureHandler')
extern class TapGestureHandler extends ReactComponentOfProps<TapGestureHandlerProperties> {}

@:jsRequire('react-native-gesture-handler', 'GestureHandler')
extern class LongPressGestureHandler extends ReactComponentOfProps<LongPressGestureHandlerProperties> {}

@:jsRequire('react-native-gesture-handler', 'GestureHandler')
extern class PanGestureHandler extends ReactComponentOfProps<PanGestureHandlerProperties> {}

@:jsRequire('react-native-gesture-handler', 'GestureHandler')
extern class PinchGestureHandler extends ReactComponentOfProps<PinchGestureHandlerProperties> {}

@:jsRequire('react-native-gesture-handler', 'GestureHandler')
extern class RotationGestureHandler extends ReactComponentOfProps<RotationGestureHandlerProperties> {}

@:jsRequire('react-native-gesture-handler', 'GestureHandler')
extern class FlingGestureHandler extends ReactComponentOfProps<FlingGestureHandlerProperties> {}

@:jsRequire('react-native-gesture-handler', 'GestureHandler')
extern class ForceTouchGestureHandler extends ReactComponentOfProps<ForceTouchGestureHandlerProperties> {}


@:jsRequire('react-native-gesture-handler', 'gestureHandlerRootHOC')
extern class GestureHandler
{
@:selfCall
public static function gestureHandlerRootHOC(component: react.ReactType, ?containerStyles: ViewStyle): react.ReactType;
}

//@:selfCall
// public static function call(component: react.ReactType, config: NativeViewGestureHandlerProperties): react.ReactType;

32 changes: 32 additions & 0 deletions src/react/native/gesturehandler/Swipeable.hx
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package react.native.gesturehandler;

import react.ReactComponent;
import react.native.api.Animated;
import react.native.api.Animated.AnimatedValue;

typedef SwipeableProps = {
?friction:Float,
?leftThreshold:Float,
?rightThreshold:Float,
?overshootLeft:Bool,
?overshootRight:Bool,
?overshootFriction:Float,
?onSwipeableLeftOpen:Void->Void,
?onSwipeableRightOpen:Dynamic->Void,
?onSwipeableOpen:Void->Void,
?onSwipeableClose:Void->Void,
?onSwipeableLeftWillOpen:Void->Void,
?onSwipeableRightWillOpen:Void->Void,
?onSwipeableWillOpen:Void->Void,
?onSwipeableWillClose:Void->Void,
?renderLeftActions:AnimatedValue->AnimatedValue->react.ReactFragment,//progress, drag
?renderRightActions:AnimatedValue->AnimatedValue->react.ReactFragment,//progress, drag
?useNativeAnimations:Bool,
}

@:jsRequire('react-native-gesture-handler/Swipeable', 'default')
extern class Swipeable extends ReactComponentOfProps<SwipeableProps> {
function close():Void;
function openLeft():Void;
function openRight():Void;
}
5 changes: 5 additions & 0 deletions submit.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#!/bin/sh

zip -r temp.zip haxelib.json src README.md
haxelib submit temp.zip
rm temp.zip

0 comments on commit eaacd28

Please sign in to comment.