@coorpacademy/app-review 0.0.21-alpha.8 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/actions/courses.d.ts +0 -1
- package/es/actions/{api → data}/is-fetching.d.ts +0 -1
- package/{lib/actions/api → es/actions/data}/validate-slide.d.ts +0 -1
- package/es/actions/finished-slides.d.ts +0 -1
- package/es/actions/index.d.ts +0 -1
- package/es/actions/navigation.d.ts +0 -1
- package/es/actions/review-status.d.ts +0 -1
- package/es/actions/slides.d.ts +0 -1
- package/es/actions/step-items.d.ts +0 -1
- package/es/actions/token.d.ts +0 -1
- package/es/common/index.d.ts +1 -1
- package/es/common/index.js +1 -0
- package/es/configure-store.d.ts +2 -3
- package/es/configure-store.js +3 -9
- package/es/fixtures/qcm-slide.d.ts +2 -0
- package/es/fixtures/qcm-slide.js +29 -0
- package/es/{temp-fixture.d.ts → fixtures/temp-fixture.d.ts} +1 -2
- package/es/helpers/css-register.js +2 -0
- package/es/index.d.ts +1 -3
- package/es/index.js +43 -27
- package/es/index.test.js +52 -0
- package/es/middlewares/on-start-app.d.ts +0 -1
- package/es/middlewares/on-start-app.js +2 -0
- package/es/reducers/courses.d.ts +0 -1
- package/es/reducers/data.d.ts +7 -0
- package/es/reducers/{api.js → data.js} +15 -8
- package/es/reducers/finished-slides.d.ts +1 -2
- package/es/reducers/finished-slides.js +17 -7
- package/es/reducers/index.d.ts +9 -14
- package/es/reducers/index.js +7 -6
- package/es/reducers/navigation.d.ts +0 -1
- package/es/reducers/navigation.js +1 -1
- package/es/reducers/review-status.d.ts +0 -1
- package/es/reducers/slides.d.ts +1 -2
- package/es/reducers/slides.js +37 -25
- package/es/reducers/step-items.d.ts +1 -2
- package/es/reducers/step-items.js +19 -12
- package/es/reducers/token.d.ts +4 -7
- package/es/reducers/token.js +3 -14
- package/es/services/fetch-demo.d.ts +0 -1
- package/es/services/fetch-demo.test.d.ts +0 -1
- package/es/services/fetch-responses.d.ts +0 -1
- package/es/services/fetch.mocks.d.ts +0 -1
- package/es/types/common.d.ts +0 -1
- package/es/types/data/index.d.ts +14 -0
- package/es/types/data/index.js +1 -0
- package/es/types/dispatchers.d.ts +1 -2
- package/es/types/finished-slides.d.ts +4 -2
- package/es/types/review-status.d.ts +0 -1
- package/es/types/slides.d.ts +4 -2
- package/es/types/states.d.ts +1 -3
- package/es/types/step-items.d.ts +4 -2
- package/es/types/store-state.d.ts +10 -10
- package/es/types/utils.d.ts +0 -1
- package/es/types/views.d.ts +9 -3
- package/lib/actions/courses.d.ts +0 -1
- package/lib/actions/{api → data}/is-fetching.d.ts +0 -1
- package/{es/actions/api → lib/actions/data}/validate-slide.d.ts +0 -1
- package/lib/actions/finished-slides.d.ts +0 -1
- package/lib/actions/index.d.ts +0 -1
- package/lib/actions/navigation.d.ts +0 -1
- package/lib/actions/review-status.d.ts +0 -1
- package/lib/actions/slides.d.ts +0 -1
- package/lib/actions/step-items.d.ts +0 -1
- package/lib/actions/token.d.ts +0 -1
- package/lib/common/index.d.ts +1 -1
- package/lib/common/index.js +1 -0
- package/lib/configure-store.d.ts +2 -3
- package/lib/configure-store.js +10 -66
- package/lib/fixtures/qcm-slide.d.ts +2 -0
- package/lib/fixtures/qcm-slide.js +29 -0
- package/lib/{temp-fixture.d.ts → fixtures/temp-fixture.d.ts} +1 -2
- package/lib/helpers/css-register.d.ts +1 -0
- package/lib/helpers/css-register.js +2 -0
- package/lib/index.d.ts +1 -3
- package/lib/index.js +52 -52
- package/lib/index.test.d.ts +1 -0
- package/lib/index.test.js +160 -0
- package/lib/middlewares/on-start-app.d.ts +0 -1
- package/lib/middlewares/on-start-app.js +2 -0
- package/lib/reducers/courses.d.ts +0 -1
- package/lib/reducers/courses.js +1 -17
- package/lib/reducers/data.d.ts +7 -0
- package/lib/reducers/{api.js → data.js} +15 -8
- package/lib/reducers/finished-slides.d.ts +1 -2
- package/lib/reducers/finished-slides.js +28 -45
- package/lib/reducers/index.d.ts +9 -14
- package/lib/reducers/index.js +7 -6
- package/lib/reducers/navigation.d.ts +0 -1
- package/lib/reducers/navigation.js +3 -19
- package/lib/reducers/review-status.d.ts +0 -1
- package/lib/reducers/slides.d.ts +1 -2
- package/lib/reducers/slides.js +58 -106
- package/lib/reducers/step-items.d.ts +1 -2
- package/lib/reducers/step-items.js +21 -52
- package/lib/reducers/token.d.ts +4 -7
- package/lib/reducers/token.js +3 -15
- package/lib/services/fetch-demo.d.ts +0 -1
- package/lib/services/fetch-demo.test.d.ts +0 -1
- package/lib/services/fetch-responses.d.ts +0 -1
- package/lib/services/fetch.mocks.d.ts +0 -1
- package/lib/types/common.d.ts +0 -1
- package/lib/types/data/index.d.ts +14 -0
- package/lib/types/data/index.js +1 -0
- package/lib/types/dispatchers.d.ts +1 -2
- package/lib/types/finished-slides.d.ts +4 -2
- package/lib/types/review-status.d.ts +0 -1
- package/lib/types/slides.d.ts +4 -2
- package/lib/types/states.d.ts +1 -3
- package/lib/types/step-items.d.ts +4 -2
- package/lib/types/store-state.d.ts +10 -10
- package/lib/types/utils.d.ts +0 -1
- package/lib/types/views.d.ts +9 -3
- package/package.json +10 -7
- package/src/common/index.ts +2 -0
- package/src/configure-store.ts +10 -20
- package/src/fixtures/qcm-slide.ts +31 -0
- package/src/{temp-fixture.ts → fixtures/temp-fixture.ts} +1 -1
- package/src/helpers/css-modules-require-hook.d.ts +4 -0
- package/src/helpers/css-register.ts +3 -0
- package/src/index.test.tsx +82 -0
- package/src/index.tsx +48 -34
- package/src/middlewares/on-start-app.ts +2 -0
- package/src/reducers/{api.ts → data.ts} +17 -14
- package/src/reducers/finished-slides.ts +22 -7
- package/src/reducers/index.ts +8 -6
- package/src/reducers/navigation.ts +1 -1
- package/src/reducers/slides.ts +38 -25
- package/src/reducers/step-items.ts +22 -12
- package/src/reducers/token.ts +5 -17
- package/src/types/data/index.ts +16 -0
- package/src/types/dispatchers.ts +1 -1
- package/src/types/finished-slides.ts +5 -2
- package/src/types/globals.d.ts +6 -0
- package/src/types/slides.ts +6 -3
- package/src/types/states.ts +1 -2
- package/src/types/step-items.ts +4 -1
- package/src/types/store-state.ts +11 -11
- package/src/types/views.tsx +9 -2
- package/es/actions/api/is-fetching.d.ts.map +0 -1
- package/es/actions/api/validate-slide.d.ts.map +0 -1
- package/es/actions/courses.d.ts.map +0 -1
- package/es/actions/finished-slides.d.ts.map +0 -1
- package/es/actions/index.d.ts.map +0 -1
- package/es/actions/navigation.d.ts.map +0 -1
- package/es/actions/review-status.d.ts.map +0 -1
- package/es/actions/slides.d.ts.map +0 -1
- package/es/actions/step-items.d.ts.map +0 -1
- package/es/actions/token.d.ts.map +0 -1
- package/es/common/index.d.ts.map +0 -1
- package/es/configure-store.d.ts.map +0 -1
- package/es/index.d.ts.map +0 -1
- package/es/middlewares/on-start-app.d.ts.map +0 -1
- package/es/reducers/api.d.ts +0 -12
- package/es/reducers/api.d.ts.map +0 -1
- package/es/reducers/courses.d.ts.map +0 -1
- package/es/reducers/finished-slides.d.ts.map +0 -1
- package/es/reducers/index.d.ts.map +0 -1
- package/es/reducers/navigation.d.ts.map +0 -1
- package/es/reducers/review-status.d.ts.map +0 -1
- package/es/reducers/slides.d.ts.map +0 -1
- package/es/reducers/step-items.d.ts.map +0 -1
- package/es/reducers/token.d.ts.map +0 -1
- package/es/services/fetch-demo.d.ts.map +0 -1
- package/es/services/fetch-demo.test.d.ts.map +0 -1
- package/es/services/fetch-responses.d.ts.map +0 -1
- package/es/services/fetch.mocks.d.ts.map +0 -1
- package/es/temp-fixture.d.ts.map +0 -1
- package/es/types/api/index.d.ts +0 -16
- package/es/types/api/index.d.ts.map +0 -1
- package/es/types/common.d.ts.map +0 -1
- package/es/types/dispatchers.d.ts.map +0 -1
- package/es/types/finished-slides.d.ts.map +0 -1
- package/es/types/review-status.d.ts.map +0 -1
- package/es/types/slides.d.ts.map +0 -1
- package/es/types/states.d.ts.map +0 -1
- package/es/types/step-items.d.ts.map +0 -1
- package/es/types/store-state.d.ts.map +0 -1
- package/es/types/utils.d.ts.map +0 -1
- package/es/types/views.d.ts.map +0 -1
- package/lib/actions/api/is-fetching.d.ts.map +0 -1
- package/lib/actions/api/validate-slide.d.ts.map +0 -1
- package/lib/actions/courses.d.ts.map +0 -1
- package/lib/actions/finished-slides.d.ts.map +0 -1
- package/lib/actions/index.d.ts.map +0 -1
- package/lib/actions/navigation.d.ts.map +0 -1
- package/lib/actions/review-status.d.ts.map +0 -1
- package/lib/actions/slides.d.ts.map +0 -1
- package/lib/actions/step-items.d.ts.map +0 -1
- package/lib/actions/token.d.ts.map +0 -1
- package/lib/common/index.d.ts.map +0 -1
- package/lib/configure-store.d.ts.map +0 -1
- package/lib/index.d.ts.map +0 -1
- package/lib/middlewares/on-start-app.d.ts.map +0 -1
- package/lib/reducers/api.d.ts +0 -12
- package/lib/reducers/api.d.ts.map +0 -1
- package/lib/reducers/courses.d.ts.map +0 -1
- package/lib/reducers/finished-slides.d.ts.map +0 -1
- package/lib/reducers/index.d.ts.map +0 -1
- package/lib/reducers/navigation.d.ts.map +0 -1
- package/lib/reducers/review-status.d.ts.map +0 -1
- package/lib/reducers/slides.d.ts.map +0 -1
- package/lib/reducers/step-items.d.ts.map +0 -1
- package/lib/reducers/token.d.ts.map +0 -1
- package/lib/services/fetch-demo.d.ts.map +0 -1
- package/lib/services/fetch-demo.test.d.ts.map +0 -1
- package/lib/services/fetch-responses.d.ts.map +0 -1
- package/lib/services/fetch.mocks.d.ts.map +0 -1
- package/lib/temp-fixture.d.ts.map +0 -1
- package/lib/types/api/index.d.ts +0 -16
- package/lib/types/api/index.d.ts.map +0 -1
- package/lib/types/common.d.ts.map +0 -1
- package/lib/types/dispatchers.d.ts.map +0 -1
- package/lib/types/finished-slides.d.ts.map +0 -1
- package/lib/types/review-status.d.ts.map +0 -1
- package/lib/types/slides.d.ts.map +0 -1
- package/lib/types/states.d.ts.map +0 -1
- package/lib/types/step-items.d.ts.map +0 -1
- package/lib/types/store-state.d.ts.map +0 -1
- package/lib/types/utils.d.ts.map +0 -1
- package/lib/types/views.d.ts.map +0 -1
- package/src/types/api/index.ts +0 -16
- /package/es/actions/{api → data}/is-fetching.js +0 -0
- /package/es/actions/{api → data}/validate-slide.js +0 -0
- /package/es/{temp-fixture.js → fixtures/temp-fixture.js} +0 -0
- /package/es/{types/api/index.js → helpers/css-register.d.ts} +0 -0
- /package/{lib/types/api/index.js → es/index.test.d.ts} +0 -0
- /package/lib/actions/{api → data}/is-fetching.js +0 -0
- /package/lib/actions/{api → data}/validate-slide.js +0 -0
- /package/lib/{temp-fixture.js → fixtures/temp-fixture.js} +0 -0
- /package/src/actions/{api → data}/is-fetching.ts +0 -0
- /package/src/actions/{api → data}/validate-slide.ts +0 -0
package/lib/reducers/slides.js
CHANGED
|
@@ -9,140 +9,92 @@ var __assign = (this && this.__assign) || function () {
|
|
|
9
9
|
};
|
|
10
10
|
return __assign.apply(this, arguments);
|
|
11
11
|
};
|
|
12
|
-
|
|
13
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
14
|
-
if (m) return m.call(o);
|
|
15
|
-
if (o && typeof o.length === "number") return {
|
|
16
|
-
next: function () {
|
|
17
|
-
if (o && i >= o.length) o = void 0;
|
|
18
|
-
return { value: o && o[i++], done: !o };
|
|
19
|
-
}
|
|
20
|
-
};
|
|
21
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
22
|
-
};
|
|
23
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
24
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
25
|
-
if (!m) return o;
|
|
26
|
-
var i = m.call(o), r, ar = [], e;
|
|
27
|
-
try {
|
|
28
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
29
|
-
}
|
|
30
|
-
catch (error) { e = { error: error }; }
|
|
31
|
-
finally {
|
|
32
|
-
try {
|
|
33
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
34
|
-
}
|
|
35
|
-
finally { if (e) throw e.error; }
|
|
36
|
-
}
|
|
37
|
-
return ar;
|
|
38
|
-
};
|
|
12
|
+
import map from 'lodash/fp/map';
|
|
39
13
|
import { STORE_FIRST_SLIDE, UPDATE_SLIDES_ON_NEXT, UPDATE_SLIDES_ON_VALIDATION } from '../actions/slides';
|
|
40
|
-
import { HIGHEST_INDEX, TOTAL_SLIDES_STACK } from '../common';
|
|
14
|
+
import { HIGHEST_INDEX, slideNumbers, TOTAL_SLIDES_STACK } from '../common';
|
|
41
15
|
var getInitialState = function () {
|
|
42
|
-
var state =
|
|
16
|
+
var state = {
|
|
17
|
+
slideNumbers: slideNumbers
|
|
18
|
+
};
|
|
43
19
|
// eslint-disable-next-line fp/no-loops
|
|
44
20
|
for (var index = 0; index < TOTAL_SLIDES_STACK; index++) {
|
|
45
|
-
state
|
|
21
|
+
state[index] = { hidden: false, position: index };
|
|
46
22
|
}
|
|
47
23
|
return state;
|
|
48
24
|
};
|
|
49
25
|
export var initialState = getInitialState();
|
|
50
26
|
// -----------------------------------------------------------------------------
|
|
51
27
|
var setFirstSlide = function (state, slide) {
|
|
52
|
-
var
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
}
|
|
63
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
64
|
-
finally {
|
|
65
|
-
try {
|
|
66
|
-
if (state_1_1 && !state_1_1.done && (_a = state_1.return)) _a.call(state_1);
|
|
67
|
-
}
|
|
68
|
-
finally { if (e_1) throw e_1.error; }
|
|
69
|
-
}
|
|
28
|
+
var _state = {
|
|
29
|
+
slideNumbers: slideNumbers
|
|
30
|
+
};
|
|
31
|
+
// eslint-disable-next-line lodash-fp/no-unused-result
|
|
32
|
+
map(function (index) {
|
|
33
|
+
var previousValue = state[index];
|
|
34
|
+
// Only update the 1st one
|
|
35
|
+
var content = index === 0 ? __assign(__assign({}, previousValue), slide) : __assign({}, previousValue);
|
|
36
|
+
_state[index] = __assign({}, content);
|
|
37
|
+
}, state.slideNumbers);
|
|
70
38
|
return _state;
|
|
71
39
|
};
|
|
72
40
|
// ||-------> Handles the updates of a given slide on validation,
|
|
73
41
|
// & then updates de remaining slides if this given change should impact their content
|
|
74
42
|
var stateUpdateOnValidation = function (state, payload) {
|
|
75
|
-
var e_2, _a;
|
|
76
43
|
var slideNumber = payload.slideNumber, newSlideContent = payload.newSlideContent, numberOfFinishedSlides = payload.numberOfFinishedSlides, nextSlide = payload.nextSlide;
|
|
77
|
-
var _state =
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
}
|
|
88
|
-
else
|
|
89
|
-
_state.set(slideNumber, newSlideContent);
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
// updates the rest of the slides here
|
|
93
|
-
var hidden = previousValue.hidden, position = previousValue.position;
|
|
94
|
-
_state.set(index, __assign(__assign({}, nextSlide), { endReview: newSlideContent.endReview, hidden: hidden, position: position }));
|
|
44
|
+
var _state = {
|
|
45
|
+
slideNumbers: slideNumbers
|
|
46
|
+
};
|
|
47
|
+
// eslint-disable-next-line lodash-fp/no-unused-result
|
|
48
|
+
map(function (index) {
|
|
49
|
+
var previousValue = state[index];
|
|
50
|
+
// the current slide
|
|
51
|
+
if (index === slideNumber) {
|
|
52
|
+
// only one slide remaining, presets the next value
|
|
53
|
+
if (numberOfFinishedSlides === HIGHEST_INDEX) {
|
|
54
|
+
_state[index] = __assign(__assign({}, previousValue), { nextSlide: nextSlide, position: newSlideContent.position, validationResult: newSlideContent.validationResult });
|
|
95
55
|
}
|
|
56
|
+
else
|
|
57
|
+
_state[slideNumber] = __assign(__assign({}, previousValue), newSlideContent);
|
|
96
58
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
if (state_2_1 && !state_2_1.done && (_a = state_2.return)) _a.call(state_2);
|
|
59
|
+
else {
|
|
60
|
+
// updates the rest of the slides here
|
|
61
|
+
var hidden = previousValue.hidden, position = previousValue.position;
|
|
62
|
+
_state[index] = __assign(__assign({}, nextSlide), { endReview: newSlideContent.endReview, hidden: hidden, position: position });
|
|
102
63
|
}
|
|
103
|
-
|
|
104
|
-
}
|
|
64
|
+
}, state.slideNumbers);
|
|
105
65
|
return _state;
|
|
106
66
|
};
|
|
107
67
|
// ||-------> Handles the updates of a given slide on correction popin's next click,
|
|
108
68
|
// & then updates de remaining slides (updates position to trigger animations)
|
|
109
69
|
var stateUpdateOnNext = function (state, payload) {
|
|
110
|
-
var e_3, _a;
|
|
111
70
|
var slideNumber = payload.slideNumber, newSlideContent = payload.newSlideContent, numberOfFinishedSlides = payload.numberOfFinishedSlides;
|
|
112
|
-
var _state =
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
}
|
|
123
|
-
else
|
|
124
|
-
_state.set(slideNumber, newSlideContent);
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
// updates the rest of the slides here
|
|
128
|
-
var hidden = previousValue.hidden, position = previousValue.position, answerUI = previousValue.answerUI, questionText = previousValue.questionText;
|
|
129
|
-
_state.set(index, {
|
|
130
|
-
hidden: hidden,
|
|
131
|
-
position: position - 1,
|
|
132
|
-
answerUI: answerUI,
|
|
133
|
-
questionText: questionText,
|
|
134
|
-
endReview: newSlideContent.endReview
|
|
135
|
-
});
|
|
71
|
+
var _state = {
|
|
72
|
+
slideNumbers: slideNumbers
|
|
73
|
+
};
|
|
74
|
+
// eslint-disable-next-line lodash-fp/no-unused-result
|
|
75
|
+
map(function (index) {
|
|
76
|
+
var previousValue = state[index];
|
|
77
|
+
// the current slide
|
|
78
|
+
if (index === slideNumber) {
|
|
79
|
+
// when there is only one slide remaining, updates the slide value
|
|
80
|
+
if (numberOfFinishedSlides === HIGHEST_INDEX && previousValue.nextSlide) {
|
|
81
|
+
_state[index] = __assign(__assign({}, previousValue.nextSlide), { position: previousValue.position });
|
|
136
82
|
}
|
|
83
|
+
else
|
|
84
|
+
_state[slideNumber] = newSlideContent;
|
|
137
85
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
86
|
+
else {
|
|
87
|
+
// updates the rest of the slides here
|
|
88
|
+
var hidden = previousValue.hidden, position = previousValue.position, answerUI = previousValue.answerUI, questionText = previousValue.questionText;
|
|
89
|
+
_state[index] = {
|
|
90
|
+
hidden: hidden,
|
|
91
|
+
position: position - 1,
|
|
92
|
+
answerUI: answerUI,
|
|
93
|
+
questionText: questionText,
|
|
94
|
+
endReview: newSlideContent.endReview
|
|
95
|
+
};
|
|
143
96
|
}
|
|
144
|
-
|
|
145
|
-
}
|
|
97
|
+
}, state.slideNumbers);
|
|
146
98
|
return _state;
|
|
147
99
|
};
|
|
148
100
|
// -----------------------------------------------------------------------------
|
|
@@ -2,6 +2,5 @@ import { StepItemsAction } from '../actions/step-items';
|
|
|
2
2
|
import { StepItems } from '../types/step-items';
|
|
3
3
|
export declare type State = StepItems;
|
|
4
4
|
export declare const initialState: State;
|
|
5
|
-
declare const reducer: (state:
|
|
5
|
+
declare const reducer: (state: State, action: StepItemsAction) => State;
|
|
6
6
|
export default reducer;
|
|
7
|
-
//# sourceMappingURL=step-items.d.ts.map
|
|
@@ -9,43 +9,20 @@ var __assign = (this && this.__assign) || function () {
|
|
|
9
9
|
};
|
|
10
10
|
return __assign.apply(this, arguments);
|
|
11
11
|
};
|
|
12
|
-
var __values = (this && this.__values) || function(o) {
|
|
13
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
14
|
-
if (m) return m.call(o);
|
|
15
|
-
if (o && typeof o.length === "number") return {
|
|
16
|
-
next: function () {
|
|
17
|
-
if (o && i >= o.length) o = void 0;
|
|
18
|
-
return { value: o && o[i++], done: !o };
|
|
19
|
-
}
|
|
20
|
-
};
|
|
21
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
22
|
-
};
|
|
23
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
24
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
25
|
-
if (!m) return o;
|
|
26
|
-
var i = m.call(o), r, ar = [], e;
|
|
27
|
-
try {
|
|
28
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
29
|
-
}
|
|
30
|
-
catch (error) { e = { error: error }; }
|
|
31
|
-
finally {
|
|
32
|
-
try {
|
|
33
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
34
|
-
}
|
|
35
|
-
finally { if (e) throw e.error; }
|
|
36
|
-
}
|
|
37
|
-
return ar;
|
|
38
|
-
};
|
|
39
12
|
import isNil from 'lodash/fp/isNil';
|
|
40
13
|
import get from 'lodash/fp/get';
|
|
14
|
+
import has from 'lodash/fp/has';
|
|
15
|
+
import map from 'lodash/fp/map';
|
|
41
16
|
import { UPDATE_STEP_ITEMS_ON_NEXT, UPDATE_STEP_ITEMS_ON_VALIDATION } from '../actions/step-items';
|
|
42
|
-
import { HIGHEST_INDEX, TOTAL_SLIDES_STACK } from '../common';
|
|
17
|
+
import { HIGHEST_INDEX, slideNumbers, TOTAL_SLIDES_STACK } from '../common';
|
|
43
18
|
var getInitialState = function () {
|
|
44
|
-
var state =
|
|
19
|
+
var state = {
|
|
20
|
+
slideNumbers: slideNumbers
|
|
21
|
+
};
|
|
45
22
|
// eslint-disable-next-line fp/no-loops
|
|
46
23
|
for (var index = 0; index < TOTAL_SLIDES_STACK; index++) {
|
|
47
24
|
var current = index === 0;
|
|
48
|
-
state
|
|
25
|
+
state[index] = { current: current, value: "".concat(index + 1), icon: null };
|
|
49
26
|
}
|
|
50
27
|
return state;
|
|
51
28
|
};
|
|
@@ -66,34 +43,26 @@ var calculateNextStepIndex = function (currentStepNumber, finishedSlides, lastVi
|
|
|
66
43
|
}
|
|
67
44
|
var indexToVisit = getNextIndex(isNil(lastVisitedIndex) ? currentStepNumber : lastVisitedIndex);
|
|
68
45
|
// if the index is already included in the correctly answered (finished) slides, then we proceed to check for the next one
|
|
69
|
-
return
|
|
46
|
+
return has(indexToVisit, finishedSlides)
|
|
70
47
|
? calculateNextStepIndex(currentStepNumber, finishedSlides, indexToVisit)
|
|
71
48
|
: indexToVisit;
|
|
72
49
|
};
|
|
73
50
|
var recalculateStepItemsState = function (state, stepNumber, stepItemToUpdateProps) {
|
|
74
|
-
var e_1, _a;
|
|
75
51
|
var nextIndex = get('nextIndex', stepItemToUpdateProps);
|
|
76
|
-
var _state =
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
else
|
|
87
|
-
_state.set(index, previousValue);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
91
|
-
finally {
|
|
92
|
-
try {
|
|
93
|
-
if (state_1_1 && !state_1_1.done && (_a = state_1.return)) _a.call(state_1);
|
|
52
|
+
var _state = {
|
|
53
|
+
slideNumbers: slideNumbers
|
|
54
|
+
};
|
|
55
|
+
// eslint-disable-next-line lodash-fp/no-unused-result
|
|
56
|
+
map(function (index) {
|
|
57
|
+
var previousValue = state[index];
|
|
58
|
+
if (stepNumber === index)
|
|
59
|
+
_state[stepNumber] = __assign(__assign({}, previousValue), stepItemToUpdateProps);
|
|
60
|
+
/* only for UPDATE_STEP_ITEMS_ON_NEXT -> */ else if (nextIndex === index) {
|
|
61
|
+
_state[index] = __assign(__assign({}, previousValue), { current: true });
|
|
94
62
|
}
|
|
95
|
-
|
|
96
|
-
|
|
63
|
+
else
|
|
64
|
+
_state[index] = previousValue;
|
|
65
|
+
}, state.slideNumbers);
|
|
97
66
|
return _state;
|
|
98
67
|
};
|
|
99
68
|
// -----------------------------------------------------------------------------
|
package/lib/reducers/token.d.ts
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
import { StoreToken } from '../actions/token';
|
|
2
1
|
import { StoreState } from '../types/store-state';
|
|
3
|
-
import {
|
|
4
|
-
export declare const initialState:
|
|
5
|
-
declare const
|
|
6
|
-
export declare const getToken: (appState: StoreState) => StoreState['token'];
|
|
7
|
-
export default reducer;
|
|
8
|
-
//# sourceMappingURL=token.d.ts.map
|
|
2
|
+
import { DataState } from '../types/data';
|
|
3
|
+
export declare const initialState: DataState['token'];
|
|
4
|
+
export declare const setToken: (token: string, state: DataState) => DataState;
|
|
5
|
+
export declare const getToken: (appState: StoreState) => StoreState['data']['token'];
|
package/lib/reducers/token.js
CHANGED
|
@@ -1,20 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import set from 'lodash/fp/set';
|
|
2
2
|
// -----------------------------------------------------------------------------
|
|
3
|
-
// export type State = string;
|
|
4
3
|
export var initialState = null;
|
|
5
4
|
// -----------------------------------------------------------------------------
|
|
6
|
-
|
|
7
|
-
var reducer = function (state, action) {
|
|
8
|
-
if (state === void 0) { state = initialState; }
|
|
9
|
-
switch (action.type) {
|
|
10
|
-
case STORE_TOKEN: {
|
|
11
|
-
return action.payload;
|
|
12
|
-
}
|
|
13
|
-
default:
|
|
14
|
-
return state;
|
|
15
|
-
}
|
|
16
|
-
};
|
|
5
|
+
export var setToken = function (token, state) { return set('token', token, state); };
|
|
17
6
|
// -----------------------------------------------------------------------------
|
|
18
|
-
export var getToken = function (appState) { return appState.token; };
|
|
7
|
+
export var getToken = function (appState) { return appState.data.token; };
|
|
19
8
|
// -----------------------------------------------------------------------------
|
|
20
|
-
export default reducer;
|
|
@@ -17,4 +17,3 @@ export declare class ResponseError extends Error {
|
|
|
17
17
|
export declare const toJSON: (response: _Response) => Promise<unknown>;
|
|
18
18
|
export declare const toText: (response: _Response) => Promise<string>;
|
|
19
19
|
export declare const toVoid: (response: _Response) => Promise<void>;
|
|
20
|
-
//# sourceMappingURL=fetch-responses.d.ts.map
|
|
@@ -7,4 +7,3 @@ export declare const notFoundJSONResponse: (body: unknown) => FetchFunction;
|
|
|
7
7
|
export declare const okTextResponse: (body: string) => FetchFunction;
|
|
8
8
|
export declare const internalServerErrorTextResponse: (body: string) => FetchFunction;
|
|
9
9
|
export {};
|
|
10
|
-
//# sourceMappingURL=fetch.mocks.d.ts.map
|
package/lib/types/common.d.ts
CHANGED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AnswerUI } from '../slides';
|
|
2
|
+
export declare type DataState = {
|
|
3
|
+
isFetching?: boolean;
|
|
4
|
+
slideValidationResult?: {
|
|
5
|
+
slideNumber: number;
|
|
6
|
+
result: 'success' | 'failure';
|
|
7
|
+
exitNode?: 'successExitNode' | 'failExitNode';
|
|
8
|
+
nextSlide: {
|
|
9
|
+
questionText?: string;
|
|
10
|
+
answerUI?: AnswerUI;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
token?: string;
|
|
14
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { validateSlide } from '../actions/
|
|
1
|
+
import { validateSlide } from '../actions/data/validate-slide';
|
|
2
2
|
import { updateFinishedSlides } from '../actions/finished-slides';
|
|
3
3
|
import { navigateBack, navigateTo } from '../actions/navigation';
|
|
4
4
|
import { updateReviewStatus } from '../actions/review-status';
|
|
@@ -15,4 +15,3 @@ export declare type Dispatchers = {
|
|
|
15
15
|
updateStepItemsOnNext: typeof updateStepItemsOnNext;
|
|
16
16
|
updateFinishedSlides: typeof updateFinishedSlides;
|
|
17
17
|
};
|
|
18
|
-
//# sourceMappingURL=dispatchers.d.ts.map
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { SlideNumber } from './slides';
|
|
2
|
-
export declare type FinishedSlides =
|
|
2
|
+
export declare type FinishedSlides = {
|
|
3
|
+
slideNumbers: SlideNumber[];
|
|
4
|
+
[key: SlideNumber]: true;
|
|
5
|
+
};
|
|
3
6
|
export declare type UpdateFinishedSlidesPayload = {
|
|
4
7
|
slideNumber: SlideNumber;
|
|
5
8
|
value: true;
|
|
6
9
|
};
|
|
7
|
-
//# sourceMappingURL=finished-slides.d.ts.map
|
package/lib/types/slides.d.ts
CHANGED
|
@@ -74,7 +74,10 @@ export declare type Slide = {
|
|
|
74
74
|
answerUI?: AnswerUI;
|
|
75
75
|
nextSlide?: Omit<Slide, 'endReview' | 'hidden' | 'position' | 'nextSlide'>;
|
|
76
76
|
};
|
|
77
|
-
export declare type Slides =
|
|
77
|
+
export declare type Slides = {
|
|
78
|
+
slideNumbers: SlideNumber[];
|
|
79
|
+
[key: SlideNumber]: Slide;
|
|
80
|
+
};
|
|
78
81
|
export declare type UpdateSlidesOnValidationPayload = {
|
|
79
82
|
slideNumber: SlideNumber;
|
|
80
83
|
newSlideContent: Slide;
|
|
@@ -82,4 +85,3 @@ export declare type UpdateSlidesOnValidationPayload = {
|
|
|
82
85
|
nextSlide: WithRequired<Slide['nextSlide'], 'answerUI' | 'questionText'>;
|
|
83
86
|
};
|
|
84
87
|
export declare type UpdateSlidesOnNextPayload = Omit<UpdateSlidesOnValidationPayload, 'nextSlide'>;
|
|
85
|
-
//# sourceMappingURL=slides.d.ts.map
|
package/lib/types/states.d.ts
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
export { Slides as SlidesState } from './slides';
|
|
2
|
-
export {
|
|
2
|
+
export { DataState } from './data';
|
|
3
3
|
export { StepItems as StepItemsState } from './step-items';
|
|
4
4
|
export { FinishedSlides as FinishedSlidesState } from './finished-slides';
|
|
5
5
|
export { State as ReviewStatusState } from '../reducers/review-status';
|
|
6
|
-
export declare type TokenState = string;
|
|
7
6
|
export declare type NavigationState = Array<'home' | 'onboarding' | 'slides'>;
|
|
8
|
-
//# sourceMappingURL=states.d.ts.map
|
|
@@ -10,7 +10,10 @@ export declare type StepItem = {
|
|
|
10
10
|
icon: IconValue;
|
|
11
11
|
value: string;
|
|
12
12
|
};
|
|
13
|
-
export declare type StepItems =
|
|
13
|
+
export declare type StepItems = {
|
|
14
|
+
slideNumbers: SlideNumber[];
|
|
15
|
+
[key: SlideNumber]: StepItem;
|
|
16
|
+
};
|
|
14
17
|
export declare type UpdateStepItemsOnValidationClickPayload = {
|
|
15
18
|
stepNumber: SlideNumber;
|
|
16
19
|
icon: IconValue;
|
|
@@ -21,4 +24,3 @@ export declare type UpdateStepItemsOnNextClickPayload = {
|
|
|
21
24
|
current: boolean;
|
|
22
25
|
};
|
|
23
26
|
export {};
|
|
24
|
-
//# sourceMappingURL=step-items.d.ts.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DataState, FinishedSlidesState, NavigationState, ReviewStatusState, SlidesState, StepItemsState } from './states';
|
|
2
2
|
export declare type StoreState = {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
3
|
+
ui: {
|
|
4
|
+
courses: unknown;
|
|
5
|
+
navigation: NavigationState;
|
|
6
|
+
slides: SlidesState;
|
|
7
|
+
stepItems: StepItemsState;
|
|
8
|
+
finishedSlides: FinishedSlidesState;
|
|
9
|
+
reviewStatus: ReviewStatusState;
|
|
10
|
+
};
|
|
11
|
+
data: DataState;
|
|
11
12
|
};
|
|
12
|
-
//# sourceMappingURL=store-state.d.ts.map
|
package/lib/types/utils.d.ts
CHANGED
package/lib/types/views.d.ts
CHANGED
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
import { State as ReviewStatus } from '../reducers/review-status';
|
|
2
|
-
import {
|
|
2
|
+
import { DataState } from './data';
|
|
3
3
|
import { Dispatchers } from './dispatchers';
|
|
4
4
|
import { FinishedSlides } from './finished-slides';
|
|
5
5
|
import { Slides } from './slides';
|
|
6
6
|
import { StepItems } from './step-items';
|
|
7
7
|
declare type SlidesViewStaticProps = {
|
|
8
8
|
slides: Slides;
|
|
9
|
+
headerProps: {
|
|
10
|
+
mode: string;
|
|
11
|
+
skillName: string;
|
|
12
|
+
onQuitClick: Function;
|
|
13
|
+
'aria-label'?: string;
|
|
14
|
+
closeButtonAriaLabel: string;
|
|
15
|
+
};
|
|
9
16
|
finishedSlides: FinishedSlides;
|
|
10
17
|
stepItems: StepItems;
|
|
11
18
|
reviewStatus: ReviewStatus;
|
|
@@ -50,9 +57,8 @@ declare type SlidesViewStaticProps = {
|
|
|
50
57
|
failureLabel: string;
|
|
51
58
|
};
|
|
52
59
|
reviewBackgroundAriaLabel?: string;
|
|
53
|
-
slideValidationResult:
|
|
60
|
+
slideValidationResult: DataState['slideValidationResult'];
|
|
54
61
|
};
|
|
55
62
|
declare type SlidesViewDispatcherProps = Omit<Dispatchers, 'navigateTo' | 'navigateBack'>;
|
|
56
63
|
declare type SlidesViewProps = SlidesViewStaticProps & SlidesViewDispatcherProps;
|
|
57
64
|
export { SlidesViewStaticProps, SlidesViewDispatcherProps, SlidesViewProps };
|
|
58
|
-
//# sourceMappingURL=views.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@coorpacademy/app-review",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=16.15.0"
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
"clean:commonjs": "rm -rf lib",
|
|
18
18
|
"clean:es": "rm -rf es",
|
|
19
19
|
"clean": "concurrently \"npm run clean:commonjs\" \"npm run clean:es\"",
|
|
20
|
+
"typecheck": "tsc --noEmit",
|
|
20
21
|
"test:unit": "ava",
|
|
21
22
|
"lint": "eslint '**/*' --cache --ext .js --ext .jsx --ext .ts --ext .tsx --ext .json",
|
|
22
23
|
"lint:fix": "npm run lint -- --fix",
|
|
@@ -39,12 +40,11 @@
|
|
|
39
40
|
"./package.json": "./package.json"
|
|
40
41
|
},
|
|
41
42
|
"dependencies": {
|
|
42
|
-
"@coorpacademy/components": "10.
|
|
43
|
+
"@coorpacademy/components": "10.21.1",
|
|
43
44
|
"cross-fetch": "^3.1.5",
|
|
44
45
|
"jwt-decode": "^3.1.2",
|
|
45
46
|
"react-redux": "^8.0.1",
|
|
46
47
|
"redux": "^4.2.0",
|
|
47
|
-
"redux-devtools-extension": "^2.13.9",
|
|
48
48
|
"redux-thunk": "^2.4.1"
|
|
49
49
|
},
|
|
50
50
|
"peerDependencies": {
|
|
@@ -53,11 +53,14 @@
|
|
|
53
53
|
"react-native": "0.68.1"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
|
+
"@coorpacademy/css-modules-require-hook": "2.1.5",
|
|
56
57
|
"@coorpacademy/eslint-plugin-coorpacademy": "^11.0.0",
|
|
58
|
+
"@testing-library/react": "^12.1.5",
|
|
57
59
|
"@types/lodash": "^4.14.182",
|
|
58
60
|
"@typescript-eslint/eslint-plugin": "^5.28.0",
|
|
59
61
|
"@typescript-eslint/parser": "^5.28.0",
|
|
60
|
-
"ava": "^4.
|
|
62
|
+
"ava": "^4.3.0",
|
|
63
|
+
"browser-env": "^3.3.0",
|
|
61
64
|
"chalk": "^4.1.2",
|
|
62
65
|
"concurrently": "^5.2.0",
|
|
63
66
|
"connect-history-api-fallback": "^1.6.0",
|
|
@@ -65,13 +68,13 @@
|
|
|
65
68
|
"esbuild": "^0.14.39",
|
|
66
69
|
"esbuild-css-modules-plugin": "https://github.com/chrisdugne/esbuild-css-modules-plugin#main",
|
|
67
70
|
"esbuild-plugin-svgr": "^1.0.1",
|
|
68
|
-
"eslint": "^8.
|
|
71
|
+
"eslint": "^8.18.0",
|
|
69
72
|
"eslint-plugin-react-hooks": "^4.6.0",
|
|
70
73
|
"live-server": "^1.2.2",
|
|
71
74
|
"postcss-modules-values-replace": "^3.4.0",
|
|
72
75
|
"react-dom": "^17.0.2",
|
|
73
76
|
"ts-node": "^10.8.1",
|
|
74
|
-
"typescript": "^4.
|
|
77
|
+
"typescript": "^4.7.4"
|
|
75
78
|
},
|
|
76
|
-
"gitHead": "
|
|
79
|
+
"gitHead": "9b67197b24c5d84d7bc7c412b6af19d2d8ca7d7b"
|
|
77
80
|
}
|
package/src/common/index.ts
CHANGED
package/src/configure-store.ts
CHANGED
|
@@ -11,26 +11,16 @@ const preloadedState: unknown = undefined;
|
|
|
11
11
|
|
|
12
12
|
// -----------------------------------------------------------------------------
|
|
13
13
|
|
|
14
|
-
export default
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
: // eslint-disable-next-line node/no-unsupported-features/es-syntax, import/dynamic-import-chunkname
|
|
25
|
-
await import('redux-devtools-extension');
|
|
26
|
-
const _compose =
|
|
27
|
-
!isProd && isExtensionEnabled
|
|
28
|
-
? composeWithDevTools({
|
|
29
|
-
name: 'app-review',
|
|
30
|
-
trace: true,
|
|
31
|
-
traceLimit: 25
|
|
32
|
-
})
|
|
33
|
-
: compose;
|
|
14
|
+
export default function configureStore(): Store<EmptyObject & StoreState, AnyAction> & {
|
|
15
|
+
dispatch: {};
|
|
16
|
+
} {
|
|
17
|
+
const _compose = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__
|
|
18
|
+
? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({
|
|
19
|
+
name: 'app-review',
|
|
20
|
+
trace: true,
|
|
21
|
+
traceLimit: 25
|
|
22
|
+
})
|
|
23
|
+
: compose;
|
|
34
24
|
|
|
35
25
|
const enhancer = _compose(applyMiddleware(thunk, onStartApp));
|
|
36
26
|
const store = createStore(rootReducer, preloadedState, enhancer);
|