@@ -13,14 +13,15 @@ import {
13
13
} from '@angular/core' ;
14
14
import { Subject } from 'rxjs/Subject' ;
15
15
import { Observable } from 'rxjs/Observable' ;
16
- import 'rxjs/add/observable/merge' ;
17
- import 'rxjs/add/operator/map' ;
18
- import 'rxjs/add/operator/mergeMap' ;
19
- import 'rxjs/add/operator/takeUntil' ;
20
- import 'rxjs/add/operator/take' ;
21
- import 'rxjs/add/operator/takeLast' ;
22
- import 'rxjs/add/operator/pairwise' ;
23
- import 'rxjs/add/operator/share' ;
16
+ import { merge } from 'rxjs/observable/merge' ;
17
+ import { map } from 'rxjs/operators/map' ;
18
+ import { mergeMap } from 'rxjs/operators/mergeMap' ;
19
+ import { takeUntil } from 'rxjs/operators/takeUntil' ;
20
+ import { take } from 'rxjs/operators/take' ;
21
+ import { takeLast } from 'rxjs/operators/takeLast' ;
22
+ import { pairwise } from 'rxjs/operators/pairwise' ;
23
+ import { share } from 'rxjs/operators/share' ;
24
+ import { filter } from 'rxjs/operators/filter' ;
24
25
import { DraggableHelper } from './draggable-helper.provider' ;
25
26
26
27
export interface Coordinates {
@@ -114,96 +115,108 @@ export class DraggableDirective implements OnInit, OnChanges, OnDestroy {
114
115
this . checkEventListeners ( ) ;
115
116
116
117
const pointerDrag : Observable < any > = this . pointerDown
117
- . filter ( ( ) => this . canDrag ( ) )
118
- . flatMap ( ( pointerDownEvent : PointerEvent ) => {
119
- const currentDrag : Subject < any > = new Subject ( ) ;
120
-
121
- const pointerMove : Observable < Coordinates > = this . pointerMove
122
- . map ( ( pointerMoveEvent : PointerEvent ) => {
123
- pointerMoveEvent . event . preventDefault ( ) ;
124
-
125
- return {
126
- currentDrag,
127
- x : pointerMoveEvent . clientX - pointerDownEvent . clientX ,
128
- y : pointerMoveEvent . clientY - pointerDownEvent . clientY ,
129
- clientX : pointerMoveEvent . clientX ,
130
- clientY : pointerMoveEvent . clientY
131
- } ;
132
- } )
133
- . map ( ( moveData : Coordinates ) => {
134
- if ( this . dragSnapGrid . x ) {
135
- moveData . x =
136
- Math . floor ( moveData . x / this . dragSnapGrid . x ) *
137
- this . dragSnapGrid . x ;
138
- }
139
-
140
- if ( this . dragSnapGrid . y ) {
141
- moveData . y =
142
- Math . floor ( moveData . y / this . dragSnapGrid . y ) *
143
- this . dragSnapGrid . y ;
144
- }
145
-
146
- return moveData ;
147
- } )
148
- . map ( ( moveData : Coordinates ) => {
149
- if ( ! this . dragAxis . x ) {
150
- moveData . x = 0 ;
151
- }
152
-
153
- if ( ! this . dragAxis . y ) {
154
- moveData . y = 0 ;
155
- }
156
-
157
- return moveData ;
158
- } )
159
- . filter (
160
- ( { x, y } ) => ! this . validateDrag || this . validateDrag ( { x, y } )
161
- )
162
- . takeUntil ( Observable . merge ( this . pointerUp , this . pointerDown ) )
163
- . share ( ) ;
164
-
165
- pointerMove . take ( 1 ) . subscribe ( ( ) => {
166
- pointerDownEvent . event . preventDefault ( ) ;
167
-
168
- this . zone . run ( ( ) => {
169
- this . dragStart . next ( { x : 0 , y : 0 } ) ;
118
+ . pipe ( filter ( ( ) => this . canDrag ( ) ) )
119
+ . pipe (
120
+ mergeMap ( ( pointerDownEvent : PointerEvent ) => {
121
+ const currentDrag : Subject < any > = new Subject ( ) ;
122
+
123
+ const pointerMove : Observable < Coordinates > = this . pointerMove
124
+ . pipe (
125
+ map ( ( pointerMoveEvent : PointerEvent ) => {
126
+ pointerMoveEvent . event . preventDefault ( ) ;
127
+
128
+ return {
129
+ currentDrag,
130
+ x : pointerMoveEvent . clientX - pointerDownEvent . clientX ,
131
+ y : pointerMoveEvent . clientY - pointerDownEvent . clientY ,
132
+ clientX : pointerMoveEvent . clientX ,
133
+ clientY : pointerMoveEvent . clientY
134
+ } ;
135
+ } )
136
+ )
137
+ . pipe (
138
+ map ( ( moveData : Coordinates ) => {
139
+ if ( this . dragSnapGrid . x ) {
140
+ moveData . x =
141
+ Math . floor ( moveData . x / this . dragSnapGrid . x ) *
142
+ this . dragSnapGrid . x ;
143
+ }
144
+
145
+ if ( this . dragSnapGrid . y ) {
146
+ moveData . y =
147
+ Math . floor ( moveData . y / this . dragSnapGrid . y ) *
148
+ this . dragSnapGrid . y ;
149
+ }
150
+
151
+ return moveData ;
152
+ } )
153
+ )
154
+ . pipe (
155
+ map ( ( moveData : Coordinates ) => {
156
+ if ( ! this . dragAxis . x ) {
157
+ moveData . x = 0 ;
158
+ }
159
+
160
+ if ( ! this . dragAxis . y ) {
161
+ moveData . y = 0 ;
162
+ }
163
+
164
+ return moveData ;
165
+ } )
166
+ )
167
+ . pipe (
168
+ filter (
169
+ ( { x, y } ) => ! this . validateDrag || this . validateDrag ( { x, y } )
170
+ )
171
+ )
172
+ . pipe ( takeUntil ( merge ( this . pointerUp , this . pointerDown ) ) )
173
+ . pipe ( share ( ) ) ;
174
+
175
+ pointerMove . pipe ( take ( 1 ) ) . subscribe ( ( ) => {
176
+ pointerDownEvent . event . preventDefault ( ) ;
177
+
178
+ this . zone . run ( ( ) => {
179
+ this . dragStart . next ( { x : 0 , y : 0 } ) ;
180
+ } ) ;
181
+
182
+ this . setCursor ( this . dragCursor ) ;
183
+
184
+ this . draggableHelper . currentDrag . next ( currentDrag ) ;
170
185
} ) ;
171
186
172
- this . setCursor ( this . dragCursor ) ;
173
-
174
- this . draggableHelper . currentDrag . next ( currentDrag ) ;
175
- } ) ;
176
-
177
- pointerMove . takeLast ( 1 ) . subscribe ( ( { x, y } ) => {
178
- this . zone . run ( ( ) => {
179
- this . dragEnd . next ( { x, y } ) ;
187
+ pointerMove . pipe ( takeLast ( 1 ) ) . subscribe ( ( { x, y } ) => {
188
+ this . zone . run ( ( ) => {
189
+ this . dragEnd . next ( { x, y } ) ;
190
+ } ) ;
191
+ currentDrag . complete ( ) ;
192
+ this . setCssTransform ( null ) ;
193
+ if ( this . ghostDragEnabled ) {
194
+ this . renderer . setStyle (
195
+ this . element . nativeElement ,
196
+ 'pointerEvents' ,
197
+ null
198
+ ) ;
199
+ }
180
200
} ) ;
181
- currentDrag . complete ( ) ;
182
- this . setCssTransform ( null ) ;
183
- if ( this . ghostDragEnabled ) {
184
- this . renderer . setStyle (
185
- this . element . nativeElement ,
186
- 'pointerEvents' ,
187
- null
188
- ) ;
189
- }
190
- } ) ;
191
201
192
- return pointerMove ;
193
- } )
194
- . share ( ) ;
202
+ return pointerMove ;
203
+ } )
204
+ )
205
+ . pipe ( share ( ) ) ;
195
206
196
- Observable . merge (
197
- pointerDrag . take ( 1 ) . map ( value => [ , value ] ) ,
198
- pointerDrag . pairwise ( )
207
+ merge (
208
+ pointerDrag . pipe ( take ( 1 ) ) . pipe ( map ( value => [ , value ] ) ) ,
209
+ pointerDrag . pipe ( pairwise ( ) )
199
210
)
200
- . filter ( ( [ previous , next ] ) => {
201
- if ( ! previous ) {
202
- return true ;
203
- }
204
- return previous . x !== next . x || previous . y !== next . y ;
205
- } )
206
- . map ( ( [ previous , next ] ) => next )
211
+ . pipe (
212
+ filter ( ( [ previous , next ] ) => {
213
+ if ( ! previous ) {
214
+ return true ;
215
+ }
216
+ return previous . x !== next . x || previous . y !== next . y ;
217
+ } )
218
+ )
219
+ . pipe ( map ( ( [ previous , next ] ) => next ) )
207
220
. subscribe ( ( { x, y, currentDrag, clientX, clientY } ) => {
208
221
this . zone . run ( ( ) => {
209
222
this . dragging . next ( { x, y } ) ;
0 commit comments