@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.
Files changed (232) hide show
  1. package/es/actions/courses.d.ts +0 -1
  2. package/es/actions/{api → data}/is-fetching.d.ts +0 -1
  3. package/{lib/actions/api → es/actions/data}/validate-slide.d.ts +0 -1
  4. package/es/actions/finished-slides.d.ts +0 -1
  5. package/es/actions/index.d.ts +0 -1
  6. package/es/actions/navigation.d.ts +0 -1
  7. package/es/actions/review-status.d.ts +0 -1
  8. package/es/actions/slides.d.ts +0 -1
  9. package/es/actions/step-items.d.ts +0 -1
  10. package/es/actions/token.d.ts +0 -1
  11. package/es/common/index.d.ts +1 -1
  12. package/es/common/index.js +1 -0
  13. package/es/configure-store.d.ts +2 -3
  14. package/es/configure-store.js +3 -9
  15. package/es/fixtures/qcm-slide.d.ts +2 -0
  16. package/es/fixtures/qcm-slide.js +29 -0
  17. package/es/{temp-fixture.d.ts → fixtures/temp-fixture.d.ts} +1 -2
  18. package/es/helpers/css-register.js +2 -0
  19. package/es/index.d.ts +1 -3
  20. package/es/index.js +43 -27
  21. package/es/index.test.js +52 -0
  22. package/es/middlewares/on-start-app.d.ts +0 -1
  23. package/es/middlewares/on-start-app.js +2 -0
  24. package/es/reducers/courses.d.ts +0 -1
  25. package/es/reducers/data.d.ts +7 -0
  26. package/es/reducers/{api.js → data.js} +15 -8
  27. package/es/reducers/finished-slides.d.ts +1 -2
  28. package/es/reducers/finished-slides.js +17 -7
  29. package/es/reducers/index.d.ts +9 -14
  30. package/es/reducers/index.js +7 -6
  31. package/es/reducers/navigation.d.ts +0 -1
  32. package/es/reducers/navigation.js +1 -1
  33. package/es/reducers/review-status.d.ts +0 -1
  34. package/es/reducers/slides.d.ts +1 -2
  35. package/es/reducers/slides.js +37 -25
  36. package/es/reducers/step-items.d.ts +1 -2
  37. package/es/reducers/step-items.js +19 -12
  38. package/es/reducers/token.d.ts +4 -7
  39. package/es/reducers/token.js +3 -14
  40. package/es/services/fetch-demo.d.ts +0 -1
  41. package/es/services/fetch-demo.test.d.ts +0 -1
  42. package/es/services/fetch-responses.d.ts +0 -1
  43. package/es/services/fetch.mocks.d.ts +0 -1
  44. package/es/types/common.d.ts +0 -1
  45. package/es/types/data/index.d.ts +14 -0
  46. package/es/types/data/index.js +1 -0
  47. package/es/types/dispatchers.d.ts +1 -2
  48. package/es/types/finished-slides.d.ts +4 -2
  49. package/es/types/review-status.d.ts +0 -1
  50. package/es/types/slides.d.ts +4 -2
  51. package/es/types/states.d.ts +1 -3
  52. package/es/types/step-items.d.ts +4 -2
  53. package/es/types/store-state.d.ts +10 -10
  54. package/es/types/utils.d.ts +0 -1
  55. package/es/types/views.d.ts +9 -3
  56. package/lib/actions/courses.d.ts +0 -1
  57. package/lib/actions/{api → data}/is-fetching.d.ts +0 -1
  58. package/{es/actions/api → lib/actions/data}/validate-slide.d.ts +0 -1
  59. package/lib/actions/finished-slides.d.ts +0 -1
  60. package/lib/actions/index.d.ts +0 -1
  61. package/lib/actions/navigation.d.ts +0 -1
  62. package/lib/actions/review-status.d.ts +0 -1
  63. package/lib/actions/slides.d.ts +0 -1
  64. package/lib/actions/step-items.d.ts +0 -1
  65. package/lib/actions/token.d.ts +0 -1
  66. package/lib/common/index.d.ts +1 -1
  67. package/lib/common/index.js +1 -0
  68. package/lib/configure-store.d.ts +2 -3
  69. package/lib/configure-store.js +10 -66
  70. package/lib/fixtures/qcm-slide.d.ts +2 -0
  71. package/lib/fixtures/qcm-slide.js +29 -0
  72. package/lib/{temp-fixture.d.ts → fixtures/temp-fixture.d.ts} +1 -2
  73. package/lib/helpers/css-register.d.ts +1 -0
  74. package/lib/helpers/css-register.js +2 -0
  75. package/lib/index.d.ts +1 -3
  76. package/lib/index.js +52 -52
  77. package/lib/index.test.d.ts +1 -0
  78. package/lib/index.test.js +160 -0
  79. package/lib/middlewares/on-start-app.d.ts +0 -1
  80. package/lib/middlewares/on-start-app.js +2 -0
  81. package/lib/reducers/courses.d.ts +0 -1
  82. package/lib/reducers/courses.js +1 -17
  83. package/lib/reducers/data.d.ts +7 -0
  84. package/lib/reducers/{api.js → data.js} +15 -8
  85. package/lib/reducers/finished-slides.d.ts +1 -2
  86. package/lib/reducers/finished-slides.js +28 -45
  87. package/lib/reducers/index.d.ts +9 -14
  88. package/lib/reducers/index.js +7 -6
  89. package/lib/reducers/navigation.d.ts +0 -1
  90. package/lib/reducers/navigation.js +3 -19
  91. package/lib/reducers/review-status.d.ts +0 -1
  92. package/lib/reducers/slides.d.ts +1 -2
  93. package/lib/reducers/slides.js +58 -106
  94. package/lib/reducers/step-items.d.ts +1 -2
  95. package/lib/reducers/step-items.js +21 -52
  96. package/lib/reducers/token.d.ts +4 -7
  97. package/lib/reducers/token.js +3 -15
  98. package/lib/services/fetch-demo.d.ts +0 -1
  99. package/lib/services/fetch-demo.test.d.ts +0 -1
  100. package/lib/services/fetch-responses.d.ts +0 -1
  101. package/lib/services/fetch.mocks.d.ts +0 -1
  102. package/lib/types/common.d.ts +0 -1
  103. package/lib/types/data/index.d.ts +14 -0
  104. package/lib/types/data/index.js +1 -0
  105. package/lib/types/dispatchers.d.ts +1 -2
  106. package/lib/types/finished-slides.d.ts +4 -2
  107. package/lib/types/review-status.d.ts +0 -1
  108. package/lib/types/slides.d.ts +4 -2
  109. package/lib/types/states.d.ts +1 -3
  110. package/lib/types/step-items.d.ts +4 -2
  111. package/lib/types/store-state.d.ts +10 -10
  112. package/lib/types/utils.d.ts +0 -1
  113. package/lib/types/views.d.ts +9 -3
  114. package/package.json +10 -7
  115. package/src/common/index.ts +2 -0
  116. package/src/configure-store.ts +10 -20
  117. package/src/fixtures/qcm-slide.ts +31 -0
  118. package/src/{temp-fixture.ts → fixtures/temp-fixture.ts} +1 -1
  119. package/src/helpers/css-modules-require-hook.d.ts +4 -0
  120. package/src/helpers/css-register.ts +3 -0
  121. package/src/index.test.tsx +82 -0
  122. package/src/index.tsx +48 -34
  123. package/src/middlewares/on-start-app.ts +2 -0
  124. package/src/reducers/{api.ts → data.ts} +17 -14
  125. package/src/reducers/finished-slides.ts +22 -7
  126. package/src/reducers/index.ts +8 -6
  127. package/src/reducers/navigation.ts +1 -1
  128. package/src/reducers/slides.ts +38 -25
  129. package/src/reducers/step-items.ts +22 -12
  130. package/src/reducers/token.ts +5 -17
  131. package/src/types/data/index.ts +16 -0
  132. package/src/types/dispatchers.ts +1 -1
  133. package/src/types/finished-slides.ts +5 -2
  134. package/src/types/globals.d.ts +6 -0
  135. package/src/types/slides.ts +6 -3
  136. package/src/types/states.ts +1 -2
  137. package/src/types/step-items.ts +4 -1
  138. package/src/types/store-state.ts +11 -11
  139. package/src/types/views.tsx +9 -2
  140. package/es/actions/api/is-fetching.d.ts.map +0 -1
  141. package/es/actions/api/validate-slide.d.ts.map +0 -1
  142. package/es/actions/courses.d.ts.map +0 -1
  143. package/es/actions/finished-slides.d.ts.map +0 -1
  144. package/es/actions/index.d.ts.map +0 -1
  145. package/es/actions/navigation.d.ts.map +0 -1
  146. package/es/actions/review-status.d.ts.map +0 -1
  147. package/es/actions/slides.d.ts.map +0 -1
  148. package/es/actions/step-items.d.ts.map +0 -1
  149. package/es/actions/token.d.ts.map +0 -1
  150. package/es/common/index.d.ts.map +0 -1
  151. package/es/configure-store.d.ts.map +0 -1
  152. package/es/index.d.ts.map +0 -1
  153. package/es/middlewares/on-start-app.d.ts.map +0 -1
  154. package/es/reducers/api.d.ts +0 -12
  155. package/es/reducers/api.d.ts.map +0 -1
  156. package/es/reducers/courses.d.ts.map +0 -1
  157. package/es/reducers/finished-slides.d.ts.map +0 -1
  158. package/es/reducers/index.d.ts.map +0 -1
  159. package/es/reducers/navigation.d.ts.map +0 -1
  160. package/es/reducers/review-status.d.ts.map +0 -1
  161. package/es/reducers/slides.d.ts.map +0 -1
  162. package/es/reducers/step-items.d.ts.map +0 -1
  163. package/es/reducers/token.d.ts.map +0 -1
  164. package/es/services/fetch-demo.d.ts.map +0 -1
  165. package/es/services/fetch-demo.test.d.ts.map +0 -1
  166. package/es/services/fetch-responses.d.ts.map +0 -1
  167. package/es/services/fetch.mocks.d.ts.map +0 -1
  168. package/es/temp-fixture.d.ts.map +0 -1
  169. package/es/types/api/index.d.ts +0 -16
  170. package/es/types/api/index.d.ts.map +0 -1
  171. package/es/types/common.d.ts.map +0 -1
  172. package/es/types/dispatchers.d.ts.map +0 -1
  173. package/es/types/finished-slides.d.ts.map +0 -1
  174. package/es/types/review-status.d.ts.map +0 -1
  175. package/es/types/slides.d.ts.map +0 -1
  176. package/es/types/states.d.ts.map +0 -1
  177. package/es/types/step-items.d.ts.map +0 -1
  178. package/es/types/store-state.d.ts.map +0 -1
  179. package/es/types/utils.d.ts.map +0 -1
  180. package/es/types/views.d.ts.map +0 -1
  181. package/lib/actions/api/is-fetching.d.ts.map +0 -1
  182. package/lib/actions/api/validate-slide.d.ts.map +0 -1
  183. package/lib/actions/courses.d.ts.map +0 -1
  184. package/lib/actions/finished-slides.d.ts.map +0 -1
  185. package/lib/actions/index.d.ts.map +0 -1
  186. package/lib/actions/navigation.d.ts.map +0 -1
  187. package/lib/actions/review-status.d.ts.map +0 -1
  188. package/lib/actions/slides.d.ts.map +0 -1
  189. package/lib/actions/step-items.d.ts.map +0 -1
  190. package/lib/actions/token.d.ts.map +0 -1
  191. package/lib/common/index.d.ts.map +0 -1
  192. package/lib/configure-store.d.ts.map +0 -1
  193. package/lib/index.d.ts.map +0 -1
  194. package/lib/middlewares/on-start-app.d.ts.map +0 -1
  195. package/lib/reducers/api.d.ts +0 -12
  196. package/lib/reducers/api.d.ts.map +0 -1
  197. package/lib/reducers/courses.d.ts.map +0 -1
  198. package/lib/reducers/finished-slides.d.ts.map +0 -1
  199. package/lib/reducers/index.d.ts.map +0 -1
  200. package/lib/reducers/navigation.d.ts.map +0 -1
  201. package/lib/reducers/review-status.d.ts.map +0 -1
  202. package/lib/reducers/slides.d.ts.map +0 -1
  203. package/lib/reducers/step-items.d.ts.map +0 -1
  204. package/lib/reducers/token.d.ts.map +0 -1
  205. package/lib/services/fetch-demo.d.ts.map +0 -1
  206. package/lib/services/fetch-demo.test.d.ts.map +0 -1
  207. package/lib/services/fetch-responses.d.ts.map +0 -1
  208. package/lib/services/fetch.mocks.d.ts.map +0 -1
  209. package/lib/temp-fixture.d.ts.map +0 -1
  210. package/lib/types/api/index.d.ts +0 -16
  211. package/lib/types/api/index.d.ts.map +0 -1
  212. package/lib/types/common.d.ts.map +0 -1
  213. package/lib/types/dispatchers.d.ts.map +0 -1
  214. package/lib/types/finished-slides.d.ts.map +0 -1
  215. package/lib/types/review-status.d.ts.map +0 -1
  216. package/lib/types/slides.d.ts.map +0 -1
  217. package/lib/types/states.d.ts.map +0 -1
  218. package/lib/types/step-items.d.ts.map +0 -1
  219. package/lib/types/store-state.d.ts.map +0 -1
  220. package/lib/types/utils.d.ts.map +0 -1
  221. package/lib/types/views.d.ts.map +0 -1
  222. package/src/types/api/index.ts +0 -16
  223. /package/es/actions/{api → data}/is-fetching.js +0 -0
  224. /package/es/actions/{api → data}/validate-slide.js +0 -0
  225. /package/es/{temp-fixture.js → fixtures/temp-fixture.js} +0 -0
  226. /package/es/{types/api/index.js → helpers/css-register.d.ts} +0 -0
  227. /package/{lib/types/api/index.js → es/index.test.d.ts} +0 -0
  228. /package/lib/actions/{api → data}/is-fetching.js +0 -0
  229. /package/lib/actions/{api → data}/validate-slide.js +0 -0
  230. /package/lib/{temp-fixture.js → fixtures/temp-fixture.js} +0 -0
  231. /package/src/actions/{api → data}/is-fetching.ts +0 -0
  232. /package/src/actions/{api → data}/validate-slide.ts +0 -0
@@ -9,140 +9,92 @@ 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
- };
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 = new Map();
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.set(index, { hidden: false, position: index });
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 e_1, _a;
53
- var _state = new Map();
54
- try {
55
- // eslint-disable-next-line fp/no-loops
56
- for (var state_1 = __values(state), state_1_1 = state_1.next(); !state_1_1.done; state_1_1 = state_1.next()) {
57
- var _b = __read(state_1_1.value, 2), index = _b[0], previousValue = _b[1];
58
- // Only update the 1st one
59
- var content = index === 0 ? __assign(__assign({}, previousValue), slide) : __assign({}, previousValue);
60
- _state.set(index, __assign({}, content));
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 = new Map();
78
- try {
79
- // eslint-disable-next-line fp/no-loops
80
- for (var state_2 = __values(state), state_2_1 = state_2.next(); !state_2_1.done; state_2_1 = state_2.next()) {
81
- var _b = __read(state_2_1.value, 2), index = _b[0], previousValue = _b[1];
82
- // the current slide
83
- if (index === slideNumber) {
84
- // only one slide remaining, presets the next value
85
- if (numberOfFinishedSlides === HIGHEST_INDEX) {
86
- _state.set(index, __assign(__assign({}, previousValue), { nextSlide: nextSlide, position: newSlideContent.position, validationResult: newSlideContent.validationResult }));
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
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
99
- finally {
100
- try {
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
- finally { if (e_2) throw e_2.error; }
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 = new Map();
113
- try {
114
- // eslint-disable-next-line fp/no-loops
115
- for (var state_3 = __values(state), state_3_1 = state_3.next(); !state_3_1.done; state_3_1 = state_3.next()) {
116
- var _b = __read(state_3_1.value, 2), index = _b[0], previousValue = _b[1];
117
- // the current slide
118
- if (index === slideNumber) {
119
- // when there is only one slide remaining, updates the slide value
120
- if (numberOfFinishedSlides === HIGHEST_INDEX) {
121
- _state.set(index, __assign(__assign({}, previousValue.nextSlide), { position: previousValue.position }));
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
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
140
- finally {
141
- try {
142
- if (state_3_1 && !state_3_1.done && (_a = state_3.return)) _a.call(state_3);
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
- finally { if (e_3) throw e_3.error; }
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: StepItems, action: StepItemsAction) => StepItems;
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 = new Map();
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.set(index, { current: current, value: "".concat(index + 1), icon: null });
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 finishedSlides.has(indexToVisit)
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 = new Map();
77
- try {
78
- // eslint-disable-next-line fp/no-loops
79
- for (var state_1 = __values(state), state_1_1 = state_1.next(); !state_1_1.done; state_1_1 = state_1.next()) {
80
- var _b = __read(state_1_1.value, 2), index = _b[0], previousValue = _b[1];
81
- if (stepNumber === index)
82
- _state.set(stepNumber, __assign(__assign({}, previousValue), stepItemToUpdateProps));
83
- /* only for UPDATE_STEP_ITEMS_ON_NEXT -> */ else if (nextIndex === index) {
84
- _state.set(index, __assign(__assign({}, previousValue), { current: true }));
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
- finally { if (e_1) throw e_1.error; }
96
- }
63
+ else
64
+ _state[index] = previousValue;
65
+ }, state.slideNumbers);
97
66
  return _state;
98
67
  };
99
68
  // -----------------------------------------------------------------------------
@@ -1,8 +1,5 @@
1
- import { StoreToken } from '../actions/token';
2
1
  import { StoreState } from '../types/store-state';
3
- import { TokenState as State } from '../types/states';
4
- export declare const initialState: State;
5
- declare const reducer: (state: State, action: StoreToken) => State;
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'];
@@ -1,20 +1,8 @@
1
- import { STORE_TOKEN } from '../actions/token';
1
+ import set from 'lodash/fp/set';
2
2
  // -----------------------------------------------------------------------------
3
- // export type State = string;
4
3
  export var initialState = null;
5
4
  // -----------------------------------------------------------------------------
6
- // eslint-disable-next-line default-param-last
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;
@@ -9,4 +9,3 @@ export declare type CatalogHits = {
9
9
  export { fetchCourse };
10
10
  declare const _default: (token: any, language: any, universalRef: any) => Promise<Course>;
11
11
  export default _default;
12
- //# sourceMappingURL=fetch-demo.d.ts.map
@@ -1,2 +1 @@
1
1
  export {};
2
- //# sourceMappingURL=fetch-demo.test.d.ts.map
@@ -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
@@ -5,4 +5,3 @@ export declare type AppOptions = {
5
5
  translations?: unknown;
6
6
  slide?: Slide;
7
7
  };
8
- //# sourceMappingURL=common.d.ts.map
@@ -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/api/validate-slide';
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 = Map<SlideNumber, true>;
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
@@ -1,2 +1 @@
1
1
  export declare type UpdateReviewStatusPayload = 'finished';
2
- //# sourceMappingURL=review-status.d.ts.map
@@ -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 = Map<SlideNumber, Slide>;
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
@@ -1,8 +1,6 @@
1
1
  export { Slides as SlidesState } from './slides';
2
- export { ApiState } from './api';
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 = Map<SlideNumber, StepItem>;
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 { ApiState, FinishedSlidesState, NavigationState, ReviewStatusState, SlidesState, StepItemsState, TokenState } from './states';
1
+ import { DataState, FinishedSlidesState, NavigationState, ReviewStatusState, SlidesState, StepItemsState } from './states';
2
2
  export declare type StoreState = {
3
- courses: unknown;
4
- navigation: NavigationState;
5
- slides: SlidesState;
6
- stepItems: StepItemsState;
7
- finishedSlides: FinishedSlidesState;
8
- reviewStatus: ReviewStatusState;
9
- token: TokenState;
10
- api: ApiState;
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
@@ -1,4 +1,3 @@
1
1
  export declare type WithRequired<T, K extends keyof T> = T & {
2
2
  [P in K]-?: T[P];
3
3
  };
4
- //# sourceMappingURL=utils.d.ts.map
@@ -1,11 +1,18 @@
1
1
  import { State as ReviewStatus } from '../reducers/review-status';
2
- import { ApiState } from './api';
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: ApiState['entities']['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.0.21-alpha.8+78b219b1f",
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.19.13-alpha.8+78b219b1f",
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.2.0",
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.17.0",
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.6.4"
77
+ "typescript": "^4.7.4"
75
78
  },
76
- "gitHead": "78b219b1f697fdc10dae58a4a6000cd155321a2a"
79
+ "gitHead": "9b67197b24c5d84d7bc7c412b6af19d2d8ca7d7b"
77
80
  }
@@ -10,3 +10,5 @@ export const VIEWS: {
10
10
  onboarding: 'onboarding',
11
11
  slides: 'slides'
12
12
  };
13
+
14
+ export const slideNumbers: number[] = [0, 1, 2, 3, 4];
@@ -11,26 +11,16 @@ const preloadedState: unknown = undefined;
11
11
 
12
12
  // -----------------------------------------------------------------------------
13
13
 
14
- export default async function configureStore(): Promise<
15
- Store<EmptyObject & StoreState, AnyAction> & {
16
- dispatch: {};
17
- }
18
- > {
19
- const isExtensionEnabled = typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__;
20
- const isProd = process.env.NODE_ENV !== 'production';
21
-
22
- const {composeWithDevTools} = isProd
23
- ? {composeWithDevTools: null}
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);