1+ 'use strict' ;
2+
3+ Object . defineProperty ( exports , '__esModule' , {
4+ value : true
5+ } ) ;
6+ exports [ 'default' ] = draggableMixin ;
7+
8+ function _interopRequireDefault ( obj ) { return obj && obj . __esModule ? obj : { 'default' : obj } ; }
9+
10+ var _rx = require ( 'rx' ) ;
11+
12+ var _rx2 = _interopRequireDefault ( _rx ) ;
13+
14+ var _create = require ( './create' ) ;
15+
16+ var _create2 = _interopRequireDefault ( _create ) ;
17+
18+ var _reactNative = require ( 'react-native' ) ;
19+
20+ var _reactNative2 = _interopRequireDefault ( _reactNative ) ;
21+
22+ var _immutable = require ( 'immutable' ) ;
23+
24+ function draggableMixin ( gestureDefs ) {
25+ gestureDefs = gestureDefs || [ ] ;
26+
27+ var target ;
28+ var layout ;
29+
30+ var getInitialLayout = function getInitialLayout ( ) {
31+ return layout ;
32+ } ;
33+ var isCurrentTarget = function isCurrentTarget ( ev ) {
34+ return ev . target === target ;
35+ } ;
36+
37+ return {
38+ componentWillMount : function componentWillMount ( ) {
39+ var onDragStart = new _rx2 [ 'default' ] . Subject ( ) ;
40+ var onDragMove = new _rx2 [ 'default' ] . Subject ( ) ;
41+ var onDragRelease = new _rx2 [ 'default' ] . Subject ( ) ;
42+
43+ this . onLayout . take ( 1 ) . subscribe ( function ( ev ) {
44+ target = ev . target ;
45+ } ) ;
46+
47+ this . onLayout . subscribe ( function ( ev ) {
48+ return layout = ev . layout ;
49+ } ) ;
50+
51+ var draggable = {
52+ onDragStart : onDragStart . filter ( isCurrentTarget ) ,
53+ onDragMove : onDragMove . filter ( isCurrentTarget ) ,
54+ onDragRelease : onDragRelease . filter ( isCurrentTarget )
55+ } ;
56+
57+ this . gestureResponder = _reactNative . PanResponder . create ( {
58+ onStartShouldSetPanResponder : function onStartShouldSetPanResponder ( ) {
59+ return true ;
60+ } ,
61+ onStartShouldSetPanResponderCapture : function onStartShouldSetPanResponderCapture ( ) {
62+ return true ;
63+ } ,
64+ onMoveShouldSetPanResponder : function onMoveShouldSetPanResponder ( ) {
65+ return true ;
66+ } ,
67+ onMoveShouldSetPanResponderCapture : function onMoveShouldSetPanResponderCapture ( ) {
68+ return true ;
69+ } ,
70+ onPanResponderGrant : function onPanResponderGrant ( evt ) {
71+ return onDragStart . onNext ( evt . nativeEvent ) ;
72+ } ,
73+ onPanResponderMove : function onPanResponderMove ( evt , gestureState ) {
74+ return onDragMove . onNext ( evt . nativeEvent ) ;
75+ } ,
76+ onPanResponderTerminationRequest : function onPanResponderTerminationRequest ( ) {
77+ return true ;
78+ } ,
79+ onPanResponderRelease : function onPanResponderRelease ( evt ) {
80+ return onDragRelease . onNext ( evt . nativeEvent ) ;
81+ } ,
82+ onPanResponderTerminate : function onPanResponderTerminate ( ) {
83+ return true ;
84+ } ,
85+ onShouldBlockNativeResponder : function onShouldBlockNativeResponder ( ) {
86+ return true ;
87+ }
88+ } ) ;
89+
90+ if ( this . props && this . props . gestures ) {
91+ gestureDefs = gestureDefs . concat ( this . props . gestures ) ;
92+ }
93+
94+ this . layoutStream = _rx2 [ 'default' ] . Observable . merge ( gestureDefs . map ( function ( options ) {
95+ return ( 0 , _create2 [ 'default' ] ) ( options , getInitialLayout , draggable ) ;
96+ } ) ) ;
97+ }
98+ } ;
99+ }
100+
101+ ;
102+ module . exports = exports [ 'default' ] ;
0 commit comments