@hedia/recommendation-screen 2.2.0-alpha.42 → 2.2.0-alpha.43

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 (166) hide show
  1. package/dist/index.js +1 -0
  2. package/dist/index.js.map +1 -0
  3. package/dist/src/RecommendationScreen.d.ts +35 -37
  4. package/dist/src/RecommendationScreen.js +83 -95
  5. package/dist/src/RecommendationScreen.js.map +1 -0
  6. package/dist/src/assets/IconsSVG/Close.d.ts +4 -0
  7. package/dist/src/assets/IconsSVG/Close.js +7 -0
  8. package/dist/src/assets/IconsSVG/Close.js.map +1 -0
  9. package/dist/src/assets/IconsSVG/CloseOutlined.d.ts +4 -0
  10. package/dist/src/assets/IconsSVG/CloseOutlined.js +9 -0
  11. package/dist/src/assets/IconsSVG/CloseOutlined.js.map +1 -0
  12. package/dist/src/assets/IconsSVG/Edit.d.ts +4 -0
  13. package/dist/src/assets/IconsSVG/Edit.js +8 -0
  14. package/dist/src/assets/IconsSVG/Edit.js.map +1 -0
  15. package/dist/src/assets/IconsSVG/activity/Cycling.d.ts +4 -0
  16. package/dist/src/assets/IconsSVG/activity/Cycling.js +12 -0
  17. package/dist/src/assets/IconsSVG/activity/Cycling.js.map +1 -0
  18. package/dist/src/assets/IconsSVG/activity/Running.d.ts +4 -0
  19. package/dist/src/assets/IconsSVG/activity/Running.js +10 -0
  20. package/dist/src/assets/IconsSVG/activity/Running.js.map +1 -0
  21. package/dist/src/assets/IconsSVG/activity/Stretching.d.ts +4 -0
  22. package/dist/src/assets/IconsSVG/activity/Stretching.js +10 -0
  23. package/dist/src/assets/IconsSVG/activity/Stretching.js.map +1 -0
  24. package/dist/src/assets/IconsSVG/activity/Swimming.d.ts +4 -0
  25. package/dist/src/assets/IconsSVG/activity/Swimming.js +13 -0
  26. package/dist/src/assets/IconsSVG/activity/Swimming.js.map +1 -0
  27. package/dist/src/assets/IconsSVG/activity/Walking.d.ts +4 -0
  28. package/dist/src/assets/IconsSVG/activity/Walking.js +11 -0
  29. package/dist/src/assets/IconsSVG/activity/Walking.js.map +1 -0
  30. package/dist/src/assets/IconsSVG/mood/Happy.d.ts +4 -0
  31. package/dist/src/assets/IconsSVG/mood/Happy.js +11 -0
  32. package/dist/src/assets/IconsSVG/mood/Happy.js.map +1 -0
  33. package/dist/src/assets/IconsSVG/mood/Neutral.d.ts +4 -0
  34. package/dist/src/assets/IconsSVG/mood/Neutral.js +11 -0
  35. package/dist/src/assets/IconsSVG/mood/Neutral.js.map +1 -0
  36. package/dist/src/assets/IconsSVG/mood/Sad.d.ts +4 -0
  37. package/dist/src/assets/IconsSVG/mood/Sad.js +11 -0
  38. package/dist/src/assets/IconsSVG/mood/Sad.js.map +1 -0
  39. package/dist/src/assets/IconsSVG/mood/SemiHappy.d.ts +4 -0
  40. package/dist/src/assets/IconsSVG/mood/SemiHappy.js +11 -0
  41. package/dist/src/assets/IconsSVG/mood/SemiHappy.js.map +1 -0
  42. package/dist/src/assets/IconsSVG/mood/SemiSad.d.ts +4 -0
  43. package/dist/src/assets/IconsSVG/mood/SemiSad.js +11 -0
  44. package/dist/src/assets/IconsSVG/mood/SemiSad.js.map +1 -0
  45. package/dist/src/components/ExitModal.d.ts +23 -0
  46. package/dist/src/components/ExitModal.js +91 -0
  47. package/dist/src/components/ExitModal.js.map +1 -0
  48. package/dist/src/components/InfoBars.d.ts +8 -28
  49. package/dist/src/components/InfoBars.js +28 -57
  50. package/dist/src/components/InfoBars.js.map +1 -0
  51. package/dist/src/components/InvisibleNumberInput.js +8 -13
  52. package/dist/src/components/InvisibleNumberInput.js.map +1 -0
  53. package/dist/src/components/LineSeparator.d.ts +5 -1
  54. package/dist/src/components/LineSeparator.js +2 -3
  55. package/dist/src/components/LineSeparator.js.map +1 -0
  56. package/dist/src/components/RecentInsulin.d.ts +2 -1
  57. package/dist/src/components/RecentInsulin.js +43 -46
  58. package/dist/src/components/RecentInsulin.js.map +1 -0
  59. package/dist/src/components/RecommendationModal.d.ts +36 -63
  60. package/dist/src/components/RecommendationModal.js +94 -113
  61. package/dist/src/components/RecommendationModal.js.map +1 -0
  62. package/dist/src/components/RecommendedCarbs.d.ts +2 -0
  63. package/dist/src/components/RecommendedCarbs.js +76 -89
  64. package/dist/src/components/RecommendedCarbs.js.map +1 -0
  65. package/dist/src/components/RecommendedInsulin.d.ts +1 -1
  66. package/dist/src/components/RecommendedInsulin.js +54 -63
  67. package/dist/src/components/RecommendedInsulin.js.map +1 -0
  68. package/dist/src/components/Remeasure.d.ts +5 -15
  69. package/dist/src/components/Remeasure.js +38 -72
  70. package/dist/src/components/Remeasure.js.map +1 -0
  71. package/dist/src/components/Text.d.ts +2 -2
  72. package/dist/src/components/Text.js +1 -0
  73. package/dist/src/components/Text.js.map +1 -0
  74. package/dist/src/components/TimeoutModal.d.ts +22 -0
  75. package/dist/src/components/TimeoutModal.js +84 -0
  76. package/dist/src/components/TimeoutModal.js.map +1 -0
  77. package/dist/src/components/TransferToLogbook.js +16 -15
  78. package/dist/src/components/TransferToLogbook.js.map +1 -0
  79. package/dist/src/components/activity/Activity.d.ts +2 -2
  80. package/dist/src/components/activity/Activity.js +51 -42
  81. package/dist/src/components/activity/Activity.js.map +1 -0
  82. package/dist/src/components/activity/ActivityIcon.d.ts +7 -7
  83. package/dist/src/components/activity/ActivityIcon.js +33 -25
  84. package/dist/src/components/activity/ActivityIcon.js.map +1 -0
  85. package/dist/src/components/activity/ActivityIntensity.d.ts +1 -1
  86. package/dist/src/components/activity/ActivityIntensity.js +13 -18
  87. package/dist/src/components/activity/ActivityIntensity.js.map +1 -0
  88. package/dist/src/components/mood/Emotion.d.ts +1 -1
  89. package/dist/src/components/mood/Emotion.js +14 -11
  90. package/dist/src/components/mood/Emotion.js.map +1 -0
  91. package/dist/src/components/mood/MoodIcon.d.ts +4 -5
  92. package/dist/src/components/mood/MoodIcon.js +28 -23
  93. package/dist/src/components/mood/MoodIcon.js.map +1 -0
  94. package/dist/src/components/styles/fonts.d.ts +14 -1
  95. package/dist/src/components/styles/fonts.js +14 -0
  96. package/dist/src/components/styles/fonts.js.map +1 -0
  97. package/dist/src/locales/da/messages.json +82 -0
  98. package/dist/src/locales/de/messages.json +81 -0
  99. package/dist/src/locales/en/messages.json +84 -0
  100. package/dist/src/locales/es/messages.json +81 -0
  101. package/dist/src/locales/fr/messages.json +81 -0
  102. package/dist/src/locales/it/messages.json +81 -0
  103. package/dist/src/locales/translate.d.ts +18 -0
  104. package/dist/src/locales/translate.js +51 -0
  105. package/dist/src/locales/translate.js.map +1 -0
  106. package/dist/src/types/enum.d.ts +8 -9
  107. package/dist/src/types/enum.js +15 -15
  108. package/dist/src/types/enum.js.map +1 -0
  109. package/dist/src/types/types.js +1 -0
  110. package/dist/src/types/types.js.map +1 -0
  111. package/dist/src/utils/AttentionMessages.js +29 -24
  112. package/dist/src/utils/AttentionMessages.js.map +1 -0
  113. package/dist/src/utils/Constants.d.ts +3 -2
  114. package/dist/src/utils/Constants.js +2 -0
  115. package/dist/src/utils/Constants.js.map +1 -0
  116. package/dist/src/utils/RecommendationError.js +24 -24
  117. package/dist/src/utils/RecommendationError.js.map +1 -0
  118. package/dist/src/utils/RecommendationUtils.js +5 -2
  119. package/dist/src/utils/RecommendationUtils.js.map +1 -0
  120. package/dist/src/utils/Translations.js +5 -5
  121. package/dist/src/utils/Translations.js.map +1 -0
  122. package/dist/src/utils/Utils.d.ts +1 -1
  123. package/dist/src/utils/Utils.js +1 -0
  124. package/dist/src/utils/Utils.js.map +1 -0
  125. package/dist/src/utils/Validations.d.ts +1 -1
  126. package/dist/src/utils/Validations.js +3 -2
  127. package/dist/src/utils/Validations.js.map +1 -0
  128. package/dist/tsconfig.tsbuildinfo +1 -0
  129. package/package.json +95 -102
  130. package/dist/src/assets/activity/Cyclist.png +0 -0
  131. package/dist/src/assets/activity/Other.png +0 -0
  132. package/dist/src/assets/activity/Runner.png +0 -0
  133. package/dist/src/assets/activity/Swimmer.png +0 -0
  134. package/dist/src/assets/activity/Walk.png +0 -0
  135. package/dist/src/assets/mood/happy.png +0 -0
  136. package/dist/src/assets/mood/happy_active.png +0 -0
  137. package/dist/src/assets/mood/neutral.png +0 -0
  138. package/dist/src/assets/mood/neutral_active.png +0 -0
  139. package/dist/src/assets/mood/sad.png +0 -0
  140. package/dist/src/assets/mood/sad_active.png +0 -0
  141. package/dist/src/assets/mood/semi_happy.png +0 -0
  142. package/dist/src/assets/mood/semi_happy_active.png +0 -0
  143. package/dist/src/assets/mood/semi_sad.png +0 -0
  144. package/dist/src/assets/mood/semi_sad_active.png +0 -0
  145. package/dist/src/components/Header.d.ts +0 -10
  146. package/dist/src/components/Header.js +0 -76
  147. package/dist/src/components/Icon.d.ts +0 -20
  148. package/dist/src/components/Icon.js +0 -43
  149. package/dist/src/components/LimitationMessage.d.ts +0 -14
  150. package/dist/src/components/LimitationMessage.js +0 -29
  151. package/dist/src/components/TwoOptionModal.d.ts +0 -147
  152. package/dist/src/components/TwoOptionModal.js +0 -140
  153. package/dist/src/locale/da/messages.js +0 -1
  154. package/dist/src/locale/da/messages.po +0 -349
  155. package/dist/src/locale/de/messages.js +0 -1
  156. package/dist/src/locale/de/messages.po +0 -349
  157. package/dist/src/locale/en/messages.js +0 -1
  158. package/dist/src/locale/en/messages.po +0 -349
  159. package/dist/src/locale/es/messages.js +0 -1
  160. package/dist/src/locale/es/messages.po +0 -349
  161. package/dist/src/locale/fr/messages.js +0 -1
  162. package/dist/src/locale/fr/messages.po +0 -349
  163. package/dist/src/locale/i18nUtils.d.ts +0 -18
  164. package/dist/src/locale/i18nUtils.js +0 -39
  165. package/dist/src/locale/it/messages.js +0 -1
  166. package/dist/src/locale/it/messages.po +0 -349
package/dist/index.js CHANGED
@@ -3,3 +3,4 @@ import * as Errors from "./src/utils/RecommendationError";
3
3
  export default RecommendationScreen;
4
4
  export { Errors };
5
5
  export * from "./src/types/enum";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,MAAM,MAAM,iCAAiC,CAAC;AAE1D,eAAe,oBAAoB,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,cAAc,kBAAkB,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import React from "react";
2
2
  import { AppStateStatus } from "react-native";
3
3
  import { BloodGlucoseUnit, BloodKetonesUnit, BolusCalculator, Languages, Logbook, UserSettings } from "@hedia/types";
4
- import { RecommendationError } from "./utils/RecommendationError";
5
4
  import { IActivityDisplayProps } from "./types/types";
5
+ import { RecommendationError } from "./utils/RecommendationError";
6
6
  /** Represents both a suggestion by HDA and an actual amount of either insulin or carbohydrates. */
7
7
  export interface IResult {
8
8
  /** The suggested amount (of insulin in units or carbohydrates in grams) */
@@ -14,7 +14,7 @@ export interface IRecommendationProps {
14
14
  /** The blood glucose measurement unit that the user prefers. */
15
15
  bloodGlucoseUnit: BloodGlucoseUnit;
16
16
  /** The user’s preferred language. */
17
- language: Languages;
17
+ language: keyof typeof Languages;
18
18
  /** The user’s preferred default reminder time in hours when they enter carbohydrates or an activity. */
19
19
  userReminder: number;
20
20
  /** The values needed to make an insulin recommendation calculation. */
@@ -29,6 +29,8 @@ export interface IRecommendationProps {
29
29
  latestLogbookFrom6Hours: Logbook.Types.ILogbookEntry | null;
30
30
  /** The properties of the entered activity that are not used for making the calculation itself, but will be used on the recommendation screen. */
31
31
  activityDisplayProps: IActivityDisplayProps | null;
32
+ /** Should the exit modal be displayed or not */
33
+ showExitModal: boolean;
32
34
  /**
33
35
  * Callback function taking a single boolean argument and returning nothing.
34
36
  * To be called when the user decides on a presented carbohydrate recommendation.
@@ -52,6 +54,12 @@ export interface IRecommendationProps {
52
54
  * Should allow the user to enter when they injected insulin and how much.
53
55
  */
54
56
  onRecentInsulinYes(): void;
57
+ /**
58
+ * Callback function without arguments or return values.
59
+ * To be called if the user taps “No” when asked if they have taken insulin recently, making the recommendation visible.
60
+ * Or if they have recently taken insulin and the recommendation is visible.
61
+ */
62
+ onRecommendationDisplayed(): void;
55
63
  /**
56
64
  * To be called when the “Transfer to Logbook” button is pressed.
57
65
  * @param carbs The suggested and entered amount of carbohydrates.
@@ -66,18 +74,16 @@ export interface IRecommendationProps {
66
74
  * To be called in case a serious issue with the validity of input data is detected.
67
75
  * @param error The detected error.
68
76
  */
69
- onError(error: RecommendationError): void;
70
- /**
71
- * Callback function taking a single argument of type boolean.
72
- * To be called to hide the bottom navigation bar while displaying modal dialogs.
73
- * @param toggle Showing (true) or hiding (false) the bottom navigation bar on the calculation flow screens.
74
- */
75
- showBolusBar(toggle: boolean): void;
77
+ onError(error: RecommendationError | Error): void;
76
78
  /**
77
79
  * Callback function taking no arguments.
78
80
  * To be called if the user chooses to restart the calculation.
79
81
  */
80
82
  restartCalculation(): void;
83
+ /**
84
+ * Callback function taking a single argument of type boolean.
85
+ */
86
+ hideExitModal(): void;
81
87
  }
82
88
  interface IState {
83
89
  /** The time in hours in hours until a reminder notification will be sent to the user. If 0 then no notification will be sent. */
@@ -110,8 +116,10 @@ interface IState {
110
116
  * The exit modal prompts the user to consider saving the calculation to a logbook entry before closing the recommendation screen.
111
117
  */
112
118
  showExitModal: boolean;
113
- /** Keeps track of whether or not a message about insulin limitation should be displayed. */
114
- showLimitationMessage: boolean;
119
+ /**
120
+ * Keeps track of whether or not only the limitation page of the recommendation modal should be visible.
121
+ */
122
+ onlyShowLimitationMessage: boolean;
115
123
  /** Keeps track of whether or not a message about the recommendation being too old should be displayed. */
116
124
  showTimeoutModal: boolean;
117
125
  }
@@ -147,11 +155,6 @@ export default class RecommendationScreen extends React.Component<IRecommendatio
147
155
  * It'll allow us to later remove the subscription.
148
156
  */
149
157
  private appStateSubscription?;
150
- /**
151
- * A reference to the eventSubscription that'll be returned by BackHandler.addEventListener().
152
- * It'll allow us to later remove the subscription.
153
- */
154
- private backHandlerSubscription?;
155
158
  /**
156
159
  * Steps:
157
160
  * 1. Call the super() method with the props.
@@ -161,6 +164,7 @@ export default class RecommendationScreen extends React.Component<IRecommendatio
161
164
  * - Set the language by using the language prop as argument for calling changeLanguage()
162
165
  * - Unpack recentBoluses from the calculatorParams prop.
163
166
  * - Use the calculatorParams prop as argument for calling calculateRecommendation() and unpack all of the resulting values.
167
+ * - Call the onRecommendationDisplayed() callback prop if the recommendation is visible
164
168
  * - Copy the carbRecommendation to the suggestedCarbs member variable.
165
169
  * - Set the following state variables:
166
170
  * - Set remeasureTime to the return value from calling the getBGLevelRemeasurementReminder() method.
@@ -172,7 +176,8 @@ export default class RecommendationScreen extends React.Component<IRecommendatio
172
176
  * - Set activeInsulin to the estimation returned from the calculation result.
173
177
  * - Set enteredCarbs, enteredInsulin, selectedMood to null.
174
178
  * - Set recommendationModal to be true if wasLimited is true or if carbRecommendation after being rounded is truthy or if the return value from calling the getBGLevelAttentionMessage() method is truthy.
175
- * - Set showExitModal, showLimitationMessage, showTimeoutModal to be false.
179
+ * - Set onlyShowLimitationMessage, showTimeoutModal to be false.
180
+ * - Set showExitModal with the value of the showExitModal prop.
176
181
  * 3. Start a 15 minute timer assigned to the timer member variable using the setTimeout() function. When the timer expires, call the showTimeoutModal() method.
177
182
  * @param props The data required to initialise the Recommendation Screen
178
183
  */
@@ -195,6 +200,14 @@ export default class RecommendationScreen extends React.Component<IRecommendatio
195
200
  * 2. Remove the listener for app state changes that was set by the componentDidMount() method.
196
201
  */
197
202
  componentWillUnmount(): void;
203
+ /**
204
+ * Called immediately after updating occurs. This method is not called for the initial render.
205
+ * Use this as an opportunity to operate on the DOM when the component has been updated.
206
+ * Steps:
207
+ * 1. If the showExitModal prop is true and it was false before, call the onExit() method.
208
+ * @param showExitModal The previous showExitModal props of the component.
209
+ */
210
+ componentDidUpdate({ showExitModal }: IRecommendationProps): void;
198
211
  /**
199
212
  * Steps:
200
213
  * 1. Evaluate a boolean called isOlderThan15Minutes to indicate whether the recommendationDate member variable represents a time more than 15 minutes ago.
@@ -204,7 +217,7 @@ export default class RecommendationScreen extends React.Component<IRecommendatio
204
217
  handleAppStateChange: (nextAppState: AppStateStatus) => void;
205
218
  /**
206
219
  * Steps:
207
- * 1. Set the showTimeoutModal state variable to be true. Use a callback function to call the showBolusBar prop callback function with false as argument when the state has been updated.
220
+ * 1. Set the showTimeoutModal state variable to be true.
208
221
  * */
209
222
  showTimeoutModal: () => void;
210
223
  /**
@@ -226,19 +239,11 @@ export default class RecommendationScreen extends React.Component<IRecommendatio
226
239
  *
227
240
  * Steps:
228
241
  * 1. If the insulin recommendation is being displayed (the isRecommendationDisplayed state variable is true):
229
- * - Set the showExitModal state variable to true. When the state has been updated, call the showBolusBar prop callback function with the inverse value of the showExitModal state variable as argument.
242
+ * - Set the showExitModal state variable to true.
230
243
  * 2. Else:
231
244
  * - Call the exitCallback prop callback function.
232
245
  */
233
246
  onExit: () => void;
234
- /**
235
- * Callback to be executed by the back handler listener.
236
- *
237
- * Steps:
238
- * 1. Call the onExist method
239
- * 2. Return true so that the default behaviour is overwritten.
240
- */
241
- onBackHandlerPress: () => boolean;
242
247
  /**
243
248
  * Hide the modal that shows attention messages.
244
249
  *
@@ -246,19 +251,12 @@ export default class RecommendationScreen extends React.Component<IRecommendatio
246
251
  * 1. Set the recommendationModal state variable to false.
247
252
  */
248
253
  hideAttentionModal: () => void;
249
- /**
250
- * Hide the modal that shows attention messages.
251
- *
252
- * Steps:
253
- * 1. Set the showLimitationMessage state variable to false.
254
- */
255
- hideLimitationMessage: () => void;
256
254
  /**
257
255
  * Hide the exit modal. To be used when the user closes the modal directly or in some way exits the recommendation screen.
258
256
  *
259
257
  * Steps:
260
258
  * 1. Set the showExitModal state variable to false.
261
- * When the state has been updated, call the showBolusBar prop callback function with the inverse value of the showExitModal state variable as argument.
259
+ * 2. Call the hideExitModal prop callback function.
262
260
  */
263
261
  hideExitModal: () => void;
264
262
  /**
@@ -266,7 +264,6 @@ export default class RecommendationScreen extends React.Component<IRecommendatio
266
264
  *
267
265
  * Steps:
268
266
  * 1. Set the showTimeoutModal state variable to false.
269
- * When the state has been updated, call the showBolusBar prop callback function with the inverse value of the showTimeoutModal state variable as argument.
270
267
  */
271
268
  hideTimeoutModal: () => void;
272
269
  /**
@@ -284,7 +281,8 @@ export default class RecommendationScreen extends React.Component<IRecommendatio
284
281
  *
285
282
  * Steps:
286
283
  * 1. Set the isRecommendationDisplayed state variable to be true.
287
- * 2. As a callback to the setState() method, define a new anonymous function that calls setTimeout() with a duration of 0 milliseconds.
284
+ * 2. Call the onRecommendationDisplayed prop callback function.
285
+ * 3. As a callback to the setState() method, define a new anonymous function that calls setTimeout() with a duration of 0 milliseconds.
288
286
  * When the time expires, call the scrollToEnd() method of the scrollView member, with the animated argument set to true.
289
287
  * This ensures that the scroll event happens after all other events that get queued to happen at the same time,
290
288
  * so all relevant elements are visible on the screen and the scroll happens reliably.
@@ -1,26 +1,25 @@
1
1
  import React from "react";
2
- import { AppState, BackHandler, LogBox, StyleSheet, View } from "react-native";
2
+ import { AppState, LogBox, StyleSheet, View } from "react-native";
3
3
  import { KeyboardAwareScrollView } from "react-native-keyboard-aware-scroll-view";
4
- import Header from "./components/Header";
5
- import InfoBars, { infoStyles } from "./components/InfoBars";
4
+ import * as Calculator from "@hedia/recommendation-calculator";
5
+ import { Milliseconds, } from "@hedia/types";
6
+ import Activity from "./components/activity/Activity";
7
+ import ExitModal from "./components/ExitModal";
8
+ import InfoBars from "./components/InfoBars";
9
+ import Emotion from "./components/mood/Emotion";
6
10
  import RecentInsulin from "./components/RecentInsulin";
11
+ import RecommendationModal from "./components/RecommendationModal";
7
12
  import RecommendedCarbs from "./components/RecommendedCarbs";
8
13
  import RecommendedInsulin from "./components/RecommendedInsulin";
9
14
  import Remeasure from "./components/Remeasure";
10
- import * as Calculator from "@hedia/recommendation-calculator";
11
- import { Milliseconds, } from "@hedia/types";
12
- import { I18nProvider } from "@lingui/react";
13
- import Emotion from "./components/mood/Emotion";
15
+ import { FONTS } from "./components/styles/fonts";
16
+ import Text from "./components/Text";
17
+ import TimeoutModal from "./components/TimeoutModal";
14
18
  import TransferToLogbook from "./components/TransferToLogbook";
15
- import { colors } from "./utils/Constants";
16
- import { t } from "@lingui/macro";
17
- import Activity from "./components/activity/Activity";
18
- import LimitationMessage from "./components/LimitationMessage";
19
- import RecommendationModal from "./components/RecommendationModal";
20
- import TwoOptionModal, { modalStyle } from "./components/TwoOptionModal";
21
- import { changeLanguage, i18n } from "./locale/i18nUtils";
19
+ import { changeLocale, translate } from "./locales/translate";
22
20
  import { Testing } from "./types/enum";
23
21
  import { Messages } from "./utils/AttentionMessages";
22
+ import { colors } from "./utils/Constants";
24
23
  import { getAttentionMessage, getBGLevel, getLimitationMessage, getReminder } from "./utils/RecommendationUtils";
25
24
  import { Utils } from "./utils/Utils";
26
25
  import { validateParams } from "./utils/Validations";
@@ -60,11 +59,6 @@ export default class RecommendationScreen extends React.Component {
60
59
  * It'll allow us to later remove the subscription.
61
60
  */
62
61
  appStateSubscription;
63
- /**
64
- * A reference to the eventSubscription that'll be returned by BackHandler.addEventListener().
65
- * It'll allow us to later remove the subscription.
66
- */
67
- backHandlerSubscription;
68
62
  /**
69
63
  * Steps:
70
64
  * 1. Call the super() method with the props.
@@ -74,6 +68,7 @@ export default class RecommendationScreen extends React.Component {
74
68
  * - Set the language by using the language prop as argument for calling changeLanguage()
75
69
  * - Unpack recentBoluses from the calculatorParams prop.
76
70
  * - Use the calculatorParams prop as argument for calling calculateRecommendation() and unpack all of the resulting values.
71
+ * - Call the onRecommendationDisplayed() callback prop if the recommendation is visible
77
72
  * - Copy the carbRecommendation to the suggestedCarbs member variable.
78
73
  * - Set the following state variables:
79
74
  * - Set remeasureTime to the return value from calling the getBGLevelRemeasurementReminder() method.
@@ -85,7 +80,8 @@ export default class RecommendationScreen extends React.Component {
85
80
  * - Set activeInsulin to the estimation returned from the calculation result.
86
81
  * - Set enteredCarbs, enteredInsulin, selectedMood to null.
87
82
  * - Set recommendationModal to be true if wasLimited is true or if carbRecommendation after being rounded is truthy or if the return value from calling the getBGLevelAttentionMessage() method is truthy.
88
- * - Set showExitModal, showLimitationMessage, showTimeoutModal to be false.
83
+ * - Set onlyShowLimitationMessage, showTimeoutModal to be false.
84
+ * - Set showExitModal with the value of the showExitModal prop.
89
85
  * 3. Start a 15 minute timer assigned to the timer member variable using the setTimeout() function. When the timer expires, call the showTimeoutModal() method.
90
86
  * @param props The data required to initialise the Recommendation Screen
91
87
  */
@@ -93,14 +89,18 @@ export default class RecommendationScreen extends React.Component {
93
89
  super(props);
94
90
  try {
95
91
  validateParams(props);
96
- this.recommendationDate = new Date(global.Date.now());
97
- changeLanguage(props.language);
92
+ changeLocale(props.language);
93
+ this.recommendationDate = new Date();
98
94
  const { recentBoluses } = props.calculatorParams;
99
95
  const { bolus, carbRecommendation, activityReduction, wasLimited, activeInsulin } = Calculator.calculateRecommendation(props.calculatorParams);
100
96
  this.suggestedCarbs = carbRecommendation;
97
+ const isRecommendationDisplayed = recentBoluses?.length !== 0;
98
+ if (isRecommendationDisplayed) {
99
+ this.props.onRecommendationDisplayed();
100
+ }
101
101
  this.state = {
102
102
  remeasureTime: this.getBGLevelRemeasurementReminder(),
103
- isRecommendationDisplayed: recentBoluses?.length !== 0,
103
+ isRecommendationDisplayed,
104
104
  insulinRecommendation: Utils.roundValue(bolus, props.injectionMethod),
105
105
  wasLimited,
106
106
  activityReduction,
@@ -110,8 +110,8 @@ export default class RecommendationScreen extends React.Component {
110
110
  enteredInsulin: null,
111
111
  selectedMood: null,
112
112
  recommendationModal: wasLimited || !!Math.round(carbRecommendation) || !!this.getBGLevelAttentionMessage(),
113
- showExitModal: false,
114
- showLimitationMessage: false,
113
+ onlyShowLimitationMessage: false,
114
+ showExitModal: props.showExitModal,
115
115
  showTimeoutModal: false,
116
116
  };
117
117
  this.timer = setTimeout(this.showTimeoutModal, Milliseconds.Minute * 15);
@@ -130,7 +130,6 @@ export default class RecommendationScreen extends React.Component {
130
130
  componentDidMount() {
131
131
  if (!this.hasError) {
132
132
  this.appStateSubscription = AppState.addEventListener(`change`, this.handleAppStateChange);
133
- this.backHandlerSubscription = BackHandler.addEventListener(`hardwareBackPress`, this.onBackHandlerPress);
134
133
  }
135
134
  }
136
135
  /**
@@ -148,7 +147,18 @@ export default class RecommendationScreen extends React.Component {
148
147
  clearTimeout(this.timer);
149
148
  }
150
149
  this.appStateSubscription?.remove();
151
- this.backHandlerSubscription?.remove();
150
+ }
151
+ /**
152
+ * Called immediately after updating occurs. This method is not called for the initial render.
153
+ * Use this as an opportunity to operate on the DOM when the component has been updated.
154
+ * Steps:
155
+ * 1. If the showExitModal prop is true and it was false before, call the onExit() method.
156
+ * @param showExitModal The previous showExitModal props of the component.
157
+ */
158
+ componentDidUpdate({ showExitModal }) {
159
+ if (this.props.showExitModal && showExitModal !== this.props.showExitModal) {
160
+ this.onExit();
161
+ }
152
162
  }
153
163
  /**
154
164
  * Steps:
@@ -158,17 +168,17 @@ export default class RecommendationScreen extends React.Component {
158
168
  */
159
169
  handleAppStateChange = (nextAppState) => {
160
170
  const time = this.recommendationDate.getTime();
161
- const isOlderThan15Minutes = global.Date.now() - time > Milliseconds.Minute * 15;
171
+ const isOlderThan15Minutes = new Date().getTime() - time > Milliseconds.Minute * 15;
162
172
  if (nextAppState === `active` && isOlderThan15Minutes) {
163
173
  this.showTimeoutModal();
164
174
  }
165
175
  };
166
176
  /**
167
177
  * Steps:
168
- * 1. Set the showTimeoutModal state variable to be true. Use a callback function to call the showBolusBar prop callback function with false as argument when the state has been updated.
178
+ * 1. Set the showTimeoutModal state variable to be true.
169
179
  * */
170
180
  showTimeoutModal = () => {
171
- this.setState({ showTimeoutModal: true }, () => this.props.showBolusBar(!this.state.showTimeoutModal));
181
+ this.setState({ showTimeoutModal: true });
172
182
  };
173
183
  /**
174
184
  * Make a new insulin calculation and set the result to be displayed to the user.
@@ -190,7 +200,7 @@ export default class RecommendationScreen extends React.Component {
190
200
  enteredInsulin: null,
191
201
  wasLimited,
192
202
  activityReduction,
193
- showLimitationMessage: wasLimited,
203
+ onlyShowLimitationMessage: wasLimited,
194
204
  });
195
205
  };
196
206
  /**
@@ -198,29 +208,18 @@ export default class RecommendationScreen extends React.Component {
198
208
  *
199
209
  * Steps:
200
210
  * 1. If the insulin recommendation is being displayed (the isRecommendationDisplayed state variable is true):
201
- * - Set the showExitModal state variable to true. When the state has been updated, call the showBolusBar prop callback function with the inverse value of the showExitModal state variable as argument.
211
+ * - Set the showExitModal state variable to true.
202
212
  * 2. Else:
203
213
  * - Call the exitCallback prop callback function.
204
214
  */
205
215
  onExit = () => {
206
216
  if (this.state.isRecommendationDisplayed) {
207
- this.setState({ showExitModal: true }, () => this.props.showBolusBar(!this.state.showExitModal));
217
+ this.setState({ showExitModal: true });
208
218
  }
209
219
  else {
210
220
  this.props.exitCallback();
211
221
  }
212
222
  };
213
- /**
214
- * Callback to be executed by the back handler listener.
215
- *
216
- * Steps:
217
- * 1. Call the onExist method
218
- * 2. Return true so that the default behaviour is overwritten.
219
- */
220
- onBackHandlerPress = () => {
221
- this.onExit();
222
- return true;
223
- };
224
223
  /**
225
224
  * Hide the modal that shows attention messages.
226
225
  *
@@ -228,36 +227,26 @@ export default class RecommendationScreen extends React.Component {
228
227
  * 1. Set the recommendationModal state variable to false.
229
228
  */
230
229
  hideAttentionModal = () => {
231
- this.setState({ recommendationModal: false });
232
- };
233
- /**
234
- * Hide the modal that shows attention messages.
235
- *
236
- * Steps:
237
- * 1. Set the showLimitationMessage state variable to false.
238
- */
239
- hideLimitationMessage = () => {
240
- this.setState({ showLimitationMessage: false });
230
+ this.setState({ recommendationModal: false, onlyShowLimitationMessage: false });
241
231
  };
242
232
  /**
243
233
  * Hide the exit modal. To be used when the user closes the modal directly or in some way exits the recommendation screen.
244
234
  *
245
235
  * Steps:
246
236
  * 1. Set the showExitModal state variable to false.
247
- * When the state has been updated, call the showBolusBar prop callback function with the inverse value of the showExitModal state variable as argument.
237
+ * 2. Call the hideExitModal prop callback function.
248
238
  */
249
239
  hideExitModal = () => {
250
- this.setState({ showExitModal: false }, () => this.props.showBolusBar(!this.state.showExitModal));
240
+ this.setState({ showExitModal: false }, this.props.hideExitModal);
251
241
  };
252
242
  /**
253
243
  * Hide the modal that warns the user that their recommendation is old.
254
244
  *
255
245
  * Steps:
256
246
  * 1. Set the showTimeoutModal state variable to false.
257
- * When the state has been updated, call the showBolusBar prop callback function with the inverse value of the showTimeoutModal state variable as argument.
258
247
  */
259
248
  hideTimeoutModal = () => {
260
- this.setState({ showTimeoutModal: false }, () => this.props.showBolusBar(!this.state.showTimeoutModal));
249
+ this.setState({ showTimeoutModal: false });
261
250
  };
262
251
  /**
263
252
  * Used as a callback function for the Remeasure component to update the state when the remeasure time slider’s value changes.
@@ -276,13 +265,15 @@ export default class RecommendationScreen extends React.Component {
276
265
  *
277
266
  * Steps:
278
267
  * 1. Set the isRecommendationDisplayed state variable to be true.
279
- * 2. As a callback to the setState() method, define a new anonymous function that calls setTimeout() with a duration of 0 milliseconds.
268
+ * 2. Call the onRecommendationDisplayed prop callback function.
269
+ * 3. As a callback to the setState() method, define a new anonymous function that calls setTimeout() with a duration of 0 milliseconds.
280
270
  * When the time expires, call the scrollToEnd() method of the scrollView member, with the animated argument set to true.
281
271
  * This ensures that the scroll event happens after all other events that get queued to happen at the same time,
282
272
  * so all relevant elements are visible on the screen and the scroll happens reliably.
283
273
  */
284
274
  handleNoRecentInsulin = () => {
285
275
  this.setState({ isRecommendationDisplayed: true }, () => {
276
+ this.props.onRecommendationDisplayed();
286
277
  setTimeout(() => {
287
278
  this.scrollView?.scrollToEnd(true);
288
279
  }, 0);
@@ -451,69 +442,66 @@ export default class RecommendationScreen extends React.Component {
451
442
  /** Render a JSX element for displaying the insulin recommendation screen. */
452
443
  render() {
453
444
  if (this.hasError) {
454
- return <View style={containerStyles.container}/>;
445
+ return <View style={styles.container}/>;
455
446
  }
456
447
  const { activeInsulin, recommendationModal, carbRecommendation: carbRecommendationProp, enteredCarbs, enteredInsulin, insulinRecommendation, activityReduction, isRecommendationDisplayed, } = this.state;
457
448
  const { BloodGlucose: BGValueTestID, BloodKetone: BKValueTestID, ActiveInsulin: ActiveInsulinValueTestID, } = InfoBarTestIds.Value;
458
449
  const { ActiveInsulin: ActiveInsulinUnitTestID, BloodGlucose: BGUnitTestID, BloodKetone: BKUnitTestID, } = InfoBarTestIds.Unit;
459
450
  const carbRecommendation = carbRecommendationProp !== null ? Math.round(carbRecommendationProp) : null;
460
451
  const recommendedCarbs = enteredCarbs ?? carbRecommendation;
452
+ const foodBorderColor = recommendedCarbs !== null && recommendedCarbs > 0 ? colors.teal : colors.dustyDarkBlue;
461
453
  const { calculatorParams, bloodGlucoseUnit, currentBKL, bloodKetoneUnit } = this.props;
462
454
  const { currentBGL, carbohydrates: providedCarbs } = calculatorParams;
463
455
  const displayedBGL = currentBGL ? Utils.displayedBGLValue(currentBGL, bloodGlucoseUnit) : null;
464
456
  const displayedBKL = currentBKL !== null && bloodKetoneUnit ? Utils.displayedBKLValue(currentBKL, bloodKetoneUnit) : null;
465
- return (<I18nProvider language={this.props.language} i18n={i18n}>
466
- <KeyboardAwareScrollView testID={RecommendationScreenTestIds.RecommendationScrollView} enableResetScrollToCoords={false} style={containerStyles.container} ref={(view) => {
457
+ return (<>
458
+ <KeyboardAwareScrollView testID={RecommendationScreenTestIds.RecommendationScrollView} enableResetScrollToCoords={false} style={styles.container} ref={(view) => {
467
459
  if (view !== null) {
468
460
  this.scrollView = view;
469
461
  }
470
462
  }}>
471
- <Header exitCallback={this.onExit}/>
472
- <InfoBars label={i18n._(t `Active Insulin`)} value={activeInsulin ? `${activeInsulin.toFixed(1)}` : null} unit={i18n._(t `units`)} showNullAsDash={false} testID={{ unitID: ActiveInsulinUnitTestID, valueID: ActiveInsulinValueTestID }}/>
473
- <InfoBars label={i18n._(t `Blood Glucose Level`)} value={displayedBGL} unit={this.props.bloodGlucoseUnit} showNullAsDash={true} testID={{ unitID: BGUnitTestID, valueID: BGValueTestID }}/>
474
- <InfoBars label={i18n._(t `Blood Ketone Level`)} value={displayedBKL} unit={this.props.bloodKetoneUnit} showNullAsDash={true} testID={{ unitID: BKUnitTestID, valueID: BKValueTestID }}/>
475
- <View style={containerStyles.calcContainer}>
476
- <View style={containerStyles.calcMargin}>
477
- <View style={[
478
- containerStyles.calcBorder,
479
- {
480
- borderColor: recommendedCarbs ? colors.teal : colors.mistBlue,
481
- },
482
- ]}>
483
- <RecommendedCarbs enteredCarbs={`${providedCarbs}`} changedRecommendedCarbs={this.updateCarbRecommendation} recommendedCarbs={`${recommendedCarbs}`} removeRecommendedCarbs={this.removeCarbRecommendation}/>
484
- </View>
485
- </View>
463
+ <Text style={styles.header}>{translate(`Insulin recommendation`)}</Text>
464
+ <InfoBars label={translate(`Active Insulin`)} value={activeInsulin ? `${activeInsulin.toFixed(1)}` : null} unit={translate(`units`)} showNullAsDash={false} testID={{ unitID: ActiveInsulinUnitTestID, valueID: ActiveInsulinValueTestID }}/>
465
+ <InfoBars label={translate(`Blood Glucose Level`)} value={displayedBGL} unit={this.props.bloodGlucoseUnit} showNullAsDash={true} testID={{ unitID: BGUnitTestID, valueID: BGValueTestID }}/>
466
+ <InfoBars label={translate(`Blood Ketone Level`)} value={displayedBKL} unit={this.props.bloodKetoneUnit} showNullAsDash={true} testID={{ unitID: BKUnitTestID, valueID: BKValueTestID }}/>
467
+ <View style={[styles.carbsBorder, { borderColor: foodBorderColor }]}>
468
+ <RecommendedCarbs enteredCarbs={`${providedCarbs}`} changedRecommendedCarbs={this.updateCarbRecommendation} recommendedCarbs={`${recommendedCarbs}`} removeRecommendedCarbs={this.removeCarbRecommendation}/>
486
469
  </View>
487
- {this.props.calculatorParams.activity && this.props.activityDisplayProps ? (<Activity activity={this.props.calculatorParams.activity} activityType={this.props.activityDisplayProps.activityType} activityTitle={this.props.activityDisplayProps.activityTitle} activityReduction={this.state.activityReduction}/>) : null}
470
+ {this.props.calculatorParams.activity && this.props.activityDisplayProps && (<Activity activity={this.props.calculatorParams.activity} activityType={this.props.activityDisplayProps.activityType} activityTitle={this.props.activityDisplayProps.activityTitle} activityReduction={this.state.activityReduction}/>)}
488
471
  <Remeasure onSliderChange={this.updateRemeasureTime} remeasureTime={this.state.remeasureTime}/>
489
472
  {!this.state.isRecommendationDisplayed ? (<RecentInsulin onRecentInsulinYes={this.props.onRecentInsulinYes} onRecentInsulinNo={this.handleNoRecentInsulin}/>) : (<RecommendedInsulin injectionMethod={this.props.injectionMethod} insulinRecommendation={insulinRecommendation} enteredInsulin={enteredInsulin} activityReduction={activityReduction} updateRecommendedInsulin={this.updateInsulinRecommendation}/>)}
490
473
  <Emotion moodSelected={this.handleMoodSelected} currentMood={this.state.selectedMood}/>
491
474
  <TransferToLogbook visible={isRecommendationDisplayed} transfer={this.handleTransfer}/>
492
- <RecommendationModal isVisible={recommendationModal} suggestedCarbohydrates={carbRecommendationProp} attentionMessage={this.getBGLevelAttentionMessage()} limitationMessage={this.getLimitationAttentionMessage()} onClickOkButton={this.hideAttentionModal} onAcceptCarbohydrates={this.acceptCarbRecommendation} onDeclineCarbohydrates={this.declineCarbRecommendation}/>
475
+ <RecommendationModal isVisible={recommendationModal || this.state.onlyShowLimitationMessage} onlyShowLimitationMessage={this.state.onlyShowLimitationMessage} suggestedCarbohydrates={carbRecommendationProp} attentionMessage={this.getBGLevelAttentionMessage()} limitationMessage={this.getLimitationAttentionMessage()} onClickOkButton={this.hideAttentionModal} onAcceptCarbohydrates={this.acceptCarbRecommendation} onDeclineCarbohydrates={this.declineCarbRecommendation}/>
493
476
  </KeyboardAwareScrollView>
494
- {this.state.showExitModal ? (<TwoOptionModal title={i18n._(t `Save data before closing?`)} message={i18n._(t `Your saved data will be used for future calculations.`)} textFirstOption={i18n._(t `Save to logbook`)} textSecondOption={i18n._(t `Close calculation`)} isCancelable={true} rowAsButtonLayout={true} firstOption={this.handleTransfer} secondOption={this.closeCalculation} onClose={this.hideExitModal}/>) : null}
495
- {this.state.showLimitationMessage ? (<View style={modalStyle.container}>
496
- <LimitationMessage limitationMessage={this.getLimitationAttentionMessage()} onPressNextButton={this.hideLimitationMessage}/>
497
- </View>) : null}
498
- {this.state.showTimeoutModal ? (this.state.isRecommendationDisplayed ? (<TwoOptionModal title={Messages.TimeoutPrompTitle()} message={Messages.TimeoutRecommendationVisible(this.recommendationDate)} textFirstOption={i18n._(t `Yes, save to logbook`)} textSecondOption={i18n._(t `No, return to dashboard`)} rowAsButtonLayout={false} firstOption={this.handleTransfer} secondOption={this.closeCalculation}/>) : (<TwoOptionModal title={Messages.TimeoutPrompTitle()} message={Messages.TimeoutRecommendationNotVisible()} textFirstOption={i18n._(t `Start new calculation`)} textSecondOption={i18n._(t `Return to dashboard`)} rowAsButtonLayout={false} firstOption={this.restartCalculation} secondOption={this.closeCalculation}/>)) : null}
499
- </I18nProvider>);
477
+
478
+ <ExitModal isVisible={this.state.showExitModal} title={translate(`Save data before closing?`)} message={translate(`Your saved data will be used for future calculations.`)} textFirstOption={translate(`Save to logbook`)} textSecondOption={translate(`Close calculation`)} firstOption={this.handleTransfer} secondOption={this.closeCalculation} onClose={this.hideExitModal}/>
479
+
480
+ {this.state.isRecommendationDisplayed ? (<TimeoutModal isVisible={this.state.showTimeoutModal} title={Messages.TimeoutPrompTitle()} message={Messages.TimeoutRecommendationVisible(this.recommendationDate)} textFirstOption={translate(`Yes, save to logbook`)} textSecondOption={translate(`No, return to dashboard`)} firstOption={this.handleTransfer} secondOption={this.closeCalculation}/>) : (<TimeoutModal isVisible={this.state.showTimeoutModal} title={Messages.TimeoutPrompTitle()} message={Messages.TimeoutRecommendationNotVisible()} textFirstOption={translate(`Start new calculation`)} textSecondOption={translate(`Return to dashboard`)} firstOption={this.restartCalculation} secondOption={this.closeCalculation}/>)}
481
+ </>);
500
482
  }
501
483
  }
502
- const containerStyles = StyleSheet.create({
484
+ const styles = StyleSheet.create({
503
485
  container: {
504
486
  flex: 1,
487
+ paddingHorizontal: 18,
505
488
  backgroundColor: colors.darkBlue,
506
489
  },
507
- calcContainer: {
508
- flex: 1,
490
+ limitationModalContainer: {
491
+ ...StyleSheet.absoluteFillObject,
492
+ justifyContent: `center`,
493
+ backgroundColor: colors.transparentBlack,
509
494
  },
510
- calcMargin: {
511
- flex: 1,
512
- marginBottom: 0,
513
- margin: `3%`,
495
+ carbsBorder: {
496
+ borderWidth: 1,
497
+ borderRadius: 5,
498
+ padding: 16,
514
499
  },
515
- calcBorder: {
516
- ...infoStyles.border,
517
- borderColor: colors.teal,
500
+ header: {
501
+ ...FONTS.Poppins.medium_Base,
502
+ color: colors.dustyBlue,
503
+ marginBottom: 22,
504
+ textAlign: `center`,
518
505
  },
519
506
  });
507
+ //# sourceMappingURL=RecommendationScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecommendationScreen.js","sourceRoot":"","sources":["../../src/RecommendationScreen.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import { SvgProps } from "react-native-svg";
3
+ declare const Close: (props: SvgProps) => JSX.Element;
4
+ export default Close;
@@ -0,0 +1,7 @@
1
+ import * as React from "react";
2
+ import { Path, Svg } from "react-native-svg";
3
+ const Close = (props) => (<Svg viewBox="0 0 28 28" {...props}>
4
+ <Path d="M4.4753 23.4372C5.10827 24.0746 6.20854 24.0519 6.82281 23.4477L14.0546 16.2888L21.2957 23.4425C21.9208 24.0599 22.9955 24.072 23.6285 23.4346C24.2858 22.7973 24.2736 21.7355 23.6364 21.1181L16.4101 13.9618L23.6364 6.8228C24.2736 6.20277 24.2858 5.129 23.6285 4.50632C22.9955 3.86898 21.9208 3.88101 21.2957 4.49576L14.0546 11.6468L6.82281 4.49312C6.20854 3.88628 5.10827 3.86634 4.4753 4.50104C3.83282 5.12636 3.85301 6.21333 4.46728 6.82016L11.7139 13.9618L4.46728 21.1207C3.85301 21.7275 3.83282 22.7999 4.4753 23.4372Z" fill={props.color}/>
5
+ </Svg>);
6
+ export default Close;
7
+ //# sourceMappingURL=Close.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Close.js","sourceRoot":"","sources":["../../../../src/assets/IconsSVG/Close.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,GAAG,EAAY,MAAM,kBAAkB,CAAC;AAEvD,MAAM,KAAK,GAAG,CAAC,KAAe,EAAE,EAAE,CAAC,CAClC,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,CAClC;EAAA,CAAC,IAAI,CACJ,CAAC,CAAC,4gBAA4gB,CAC9gB,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAEpB;CAAA,EAAE,GAAG,CAAC,CACN,CAAC;AAEF,eAAe,KAAK,CAAC"}
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import { SvgProps } from "react-native-svg";
3
+ declare const CloseOutlined: (props: SvgProps) => JSX.Element;
4
+ export default CloseOutlined;
@@ -0,0 +1,9 @@
1
+ import * as React from "react";
2
+ import { Path, Svg } from "react-native-svg";
3
+ import { colors } from "../../utils/Constants";
4
+ const CloseOutlined = (props) => (<Svg viewBox="0 0 16 16" {...props}>
5
+ <Path fillRule="evenodd" clipRule="evenodd" d="M8 0C3.58172 0 0 3.58172 0 8C0 12.4183 3.58172 16 8 16C12.4183 16 16 12.4183 16 8C16 3.58172 12.4183 0 8 0ZM8.00003 14.9091C4.18425 14.9091 1.09094 11.8158 1.09094 8.00005C1.09094 4.18427 4.18425 1.09096 8.00003 1.09096C11.8158 1.09096 14.9091 4.18427 14.9091 8.00005C14.9091 9.83246 14.1812 11.5898 12.8855 12.8855C11.5898 14.1812 9.83244 14.9091 8.00003 14.9091Z" fill={colors.teal}/>
6
+ <Path fillRule="evenodd" clipRule="evenodd" d="M10.8261 4.99334C10.6131 4.78065 10.2681 4.78065 10.0552 4.99334L7.98608 7.14607L5.73517 4.96425C5.59618 4.82218 5.39091 4.76696 5.1994 4.82011C5.00789 4.87326 4.86045 5.02638 4.81456 5.21976C4.76867 5.41314 4.83159 5.61618 4.97881 5.74971L7.21517 7.90243L4.97881 10.0552C4.83159 10.1887 4.76867 10.3917 4.81456 10.5851C4.86045 10.7785 5.00789 10.9316 5.1994 10.9848C5.39091 11.0379 5.59618 10.9827 5.73517 10.8406L7.98608 8.6588L10.0552 10.8115C10.1887 10.9587 10.3917 11.0217 10.5851 10.9758C10.7785 10.9299 10.9316 10.7824 10.9848 10.5909C11.0379 10.3994 10.9827 10.1942 10.8406 10.0552L8.75699 7.87334L10.8406 5.69153C11.0049 5.48579 10.9988 5.19206 10.8261 4.99334Z" fill={colors.teal}/>
7
+ </Svg>);
8
+ export default CloseOutlined;
9
+ //# sourceMappingURL=CloseOutlined.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CloseOutlined.js","sourceRoot":"","sources":["../../../../src/assets/IconsSVG/CloseOutlined.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,GAAG,EAAY,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,MAAM,aAAa,GAAG,CAAC,KAAe,EAAE,EAAE,CAAC,CAC1C,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,CAClC;EAAA,CAAC,IAAI,CACJ,QAAQ,CAAC,SAAS,CAClB,QAAQ,CAAC,SAAS,CAClB,CAAC,CAAC,8WAA8W,CAChX,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAEnB;EAAA,CAAC,IAAI,CACJ,QAAQ,CAAC,SAAS,CAClB,QAAQ,CAAC,SAAS,CAClB,CAAC,CAAC,gqBAAgqB,CAClqB,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAEpB;CAAA,EAAE,GAAG,CAAC,CACN,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import { SvgProps } from "react-native-svg";
3
+ declare const Edit: (props: SvgProps) => JSX.Element;
4
+ export default Edit;