@@ -34,12 +34,65 @@ export function insertNodeAt(
34
34
export function handleDOMChanges < T extends ItemInterface > (
35
35
customs : Normalized < T > [ ]
36
36
) {
37
+ removeNodes ( customs ) ;
38
+ insertNodes ( customs ) ;
39
+ }
40
+
41
+ export function removeNodes < T extends ItemInterface > ( customs : Normalized < T > [ ] ) {
37
42
customs . forEach ( curr => removeNode ( curr . element ) ) ;
43
+ }
44
+
45
+ export function insertNodes < T extends ItemInterface > ( cust
8000
oms : Normalized < T > [ ] ) {
38
46
customs . forEach ( curr => {
39
47
insertNodeAt ( curr . parentElement , curr . element , curr . oldIndex ) ;
40
48
} ) ;
41
49
}
42
50
51
+ export function createCustoms < T extends ItemInterface > (
52
+ evt : MultiDragEvent ,
53
+ list : T [ ]
54
+ ) {
55
+ const mode = getMode ( evt ) ;
56
+ const parentElement = { parentElement : evt . from } ;
57
+ let custom = [ ] ;
58
+ switch ( mode ) {
59
+ case "normal" :
60
+ const item = {
61
+ element : evt . item ,
62
+ newIndex : evt . newIndex ! ,
63
+ oldIndex : evt . oldIndex ! ,
64
+ parentElement : evt . from
65
+ } ;
66
+ custom = [ item ] ;
67
+ break ;
68
+ case "swap" :
69
+ const drag : Input = {
70
+ element : evt . item ,
71
+ oldIndex : evt . oldIndex ! ,
72
+ newIndex : evt . newIndex ! ,
73
+ ...parentElement
74
+ } ;
75
+ const swap : Input = {
76
+ element : evt . swapItem ! ,
77
+ oldIndex : evt . newIndex ! ,
78
+ newIndex : evt . oldIndex ! ,
79
+ ...parentElement
80
+ } ;
81
+ custom = [ drag , swap ] ;
82
+ break ;
83
+ case "multidrag" :
84
+ custom = evt . oldIndicies . map < Input > ( ( curr , index ) => ( {
85
+ element : curr . multiDragElement ,
86
+ oldIndex : curr . index ,
87
+ newIndex : evt . newIndicies [ index ] . index ,
88
+ ...parentElement
89
+ } ) ) ;
90
+ break ;
91
+ }
92
+ const customs = createNormalized ( custom , list ) ;
93
+ return customs ;
94
+ }
95
+
43
96
/** moves items form old index to new index without breaking anything ideally. */
44
97
export function handleStateChanges < T extends ItemInterface > (
45
98
normalized : Normalized < T > [ ] ,
0 commit comments