@@MOVE Tag Usage
Signature:{
    '@@MOVE': [
        -/+fromIndex,
        -/+toIndex,
        +numItemsToMove? = 1
    ]
}Example:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import AutoImmutable, { Tag } from '@webkrafters/react-observable-context';
const protectedData = {
    a: {
        b: [
            { x: 7, y: 8, z: 9 },
            { x: 17, y: 18, z: 19 }
        ]
    },
    j: 10,
    q: [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
};
const aImmutable = new AutoImmutable( protectedData );
const consumer = aImmutable.connect();
/* assigning a '@@MOVE' command to a non-array property has no effect. */
consumer.set({
    a: {
        [ Tag.MOVE ]: [ 0, 1 ]
    }
});
//  moves aImmutable data.a.b[0] into index 1;
//  leaving aImmutable data.a.b = [{
//      x: 17, y: 18, z: 19 },
//      { x: 7, y: 8, z: 9 }
//  ]
consumer.set({
    a: {
        b: {
            [ Tag.MOVE ]: [ 0, 1 ] // or [ -2, -1 ] with negative indexing
        }
    }
});
//  moves aImmutable data.q[4] - [7] into indexes 1 - 4;
//  leaving aImmutable data.q = [ 1, 5, 6, 7, 8, 2, 3, 4, 9 ]
consumer.set({
    a: {
        q: {
            [ Tag.MOVE ]: [ 4, 1, 4 ] // or [ -5, -8, 4 ] with negative indexing
        }
    }
});