11import xs , { Stream } from 'xstream' ;
22import delay from 'xstream/extra/delay' ;
33import { DOMSource , VNode } from '@cycle/dom' ;
4+ import { adapt } from '@cycle/run/lib/adapt' ;
45
56import { SortableOptions , Transform , EventDetails } from './definitions' ;
67import { applyDefaults , addKeys } from './helpers' ;
@@ -15,29 +16,30 @@ export { SortableOptions, Transform, EventHandler, EventDetails } from './defini
1516 * @param {SortableOptions } options @see {SortableOptions}
1617 * @return {Transform<VNode, VNode> } A function to be composed with a view VNode stream
1718 */
18- export function makeSortable ( dom : DOMSource , options ? : SortableOptions ) : Transform < VNode , VNode >
19+ export function makeSortable < T > ( dom : DOMSource , options ? : SortableOptions ) : ( s : T ) => T
1920{
20- return sortable => sortable
21+ return sortable => adapt (
22+ ( xs . fromObservable ( sortable as any ) as Stream < VNode > )
2123 . map ( node => {
2224 const defaults : SortableOptions = applyDefaults ( options || { } , node ) ;
2325
24- const mousedown$ : Stream < MouseEvent > = dom . select ( defaults . handle )
25- . events ( 'mousedown' ) as Stream < MouseEvent > ;
26+ const mousedown$ : Stream < MouseEvent > = xs . fromObservable ( dom . select ( defaults . handle ) . events ( 'mousedown' ) ) as Stream < MouseEvent > ;
2627
2728 const mouseup$ : Stream < MouseEvent > = mousedown$
28- . mapTo ( dom . select ( 'body' ) . events ( 'mouseup' ) . take ( 1 ) )
29+ . mapTo ( xs . fromObservable ( dom . select ( 'body' ) . events ( 'mouseup' ) . take ( 1 ) ) )
2930 . flatten ( ) as Stream < MouseEvent > ;
3031
3132 const mousemove$ : Stream < MouseEvent > = mousedown$
32- . mapTo ( dom . select ( 'body' ) . events ( 'mousemove' ) )
33+ . mapTo ( xs . fromObservable ( dom . select ( 'body' ) . events ( 'mousemove' ) ) )
3334 . flatten ( )
3435 . compose ( emitBetween ( mousedown$ , mouseup$ ) ) as Stream < MouseEvent > ;
3536
3637 const event$ : Stream < MouseEvent > = xs . merge ( mousedown$ , mouseup$ , mousemove$ ) ;
3738
3839 return event$ . fold ( ( acc , curr ) => handleEvent ( acc , curr , defaults ) , node ) ;
3940 } )
40- . flatten ( ) ;
41+ . flatten ( )
42+ ) ;
4143}
4244
4345/**
0 commit comments