1 | "use strict";
|
2 | var __assign = (this && this.__assign) || function () {
|
3 | __assign = Object.assign || function(t) {
|
4 | for (var s, i = 1, n = arguments.length; i < n; i++) {
|
5 | s = arguments[i];
|
6 | for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
7 | t[p] = s[p];
|
8 | }
|
9 | return t;
|
10 | };
|
11 | return __assign.apply(this, arguments);
|
12 | };
|
13 | Object.defineProperty(exports, "__esModule", { value: true });
|
14 | var index_1 = require("./index");
|
15 | var rxjs_1 = require("rxjs");
|
16 | var initialState = {
|
17 | counter: 0,
|
18 | todoState: {
|
19 | todos: [{ id: 1, title: "Homework", done: false }, { id: 2, title: "Walk dog", done: false }],
|
20 | },
|
21 | };
|
22 |
|
23 | var store = index_1.Store.create(initialState);
|
24 |
|
25 | store.select().subscribe(function (newState) { return console.log(JSON.stringify(newState)); });
|
26 |
|
27 | var incrementAction = new rxjs_1.Subject();
|
28 | var incrementReducer = function (state, payload) { return state + 1; };
|
29 | var decrementAction = new rxjs_1.Subject();
|
30 | var decrementReducer = function (state, payload) { return state - 1; };
|
31 |
|
32 |
|
33 | var counterStore = store.createSlice("counter");
|
34 | counterStore.addReducer(incrementAction, incrementReducer);
|
35 | counterStore.addReducer(decrementAction, decrementReducer);
|
36 |
|
37 | incrementAction.next();
|
38 | incrementAction.next();
|
39 | decrementAction.next();
|
40 |
|
41 | var deleteToDoAction = new rxjs_1.Subject();
|
42 | var deleteToDoReducer = function (state, payload) {
|
43 | var filteredTodos = state.todos.filter(function (todo) { return todo.id != payload; });
|
44 | return __assign(__assign({}, state), { todos: filteredTodos });
|
45 | };
|
46 | var markTodoAsDoneAction = new rxjs_1.Subject();
|
47 |
|
48 |
|
49 | var markTodoAsDoneReducer = function (state, payload) {
|
50 | var todos = state.todos.map(function (todo) {
|
51 | if (todo.id != payload)
|
52 | return todo;
|
53 | return __assign(__assign({}, todo), { done: true });
|
54 | });
|
55 | return __assign(__assign({}, state), { todos: todos });
|
56 | };
|
57 | var todoStore = store.createSlice("todoState");
|
58 | todoStore.addReducer(deleteToDoAction, deleteToDoReducer);
|
59 | var reducerSubscription = todoStore.addReducer(markTodoAsDoneAction, markTodoAsDoneReducer);
|
60 | markTodoAsDoneAction.next(1);
|
61 | deleteToDoAction.next(1);
|
62 |
|
63 |
|
64 | reducerSubscription.unsubscribe();
|
65 |
|
66 | var todosArraySlice = store.createSlice("todoState").createSlice("todos");
|
67 |
|
68 | var markTodoAsDoneSimpleReducer = function (state, payload) {
|
69 | return state.map(function (todo) {
|
70 | if (todo.id != payload)
|
71 | return todo;
|
72 | return __assign(__assign({}, todo), { done: true });
|
73 | });
|
74 | };
|
75 | todosArraySlice.addReducer(markTodoAsDoneAction, markTodoAsDoneSimpleReducer);
|
76 | markTodoAsDoneAction.next(2);
|
77 | deleteToDoAction.next(2);
|
78 |
|
\ | No newline at end of file |