@axelor/aos-mobile-core 6.4.1 → 6.4.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 (152) hide show
  1. package/README.md +24 -18
  2. package/lib/api/login-api.d.ts +1 -0
  3. package/lib/api/login-api.js +2 -2
  4. package/lib/api/login-api.js.map +1 -1
  5. package/lib/api/utils.js +9 -10
  6. package/lib/api/utils.js.map +1 -1
  7. package/lib/app/Application.d.ts +17 -2
  8. package/lib/app/Application.js +6 -3
  9. package/lib/app/Application.js.map +1 -1
  10. package/lib/app/ContextedApplication.d.ts +15 -1
  11. package/lib/app/ContextedApplication.js +2 -2
  12. package/lib/app/ContextedApplication.js.map +1 -1
  13. package/lib/app/ContextsProvider.d.ts +2 -1
  14. package/lib/app/ContextsProvider.js +9 -4
  15. package/lib/app/ContextsProvider.js.map +1 -1
  16. package/lib/app/Module.d.ts +9 -6
  17. package/lib/app/RootNavigator.d.ts +2 -1
  18. package/lib/app/RootNavigator.js +6 -2
  19. package/lib/app/RootNavigator.js.map +1 -1
  20. package/lib/auth/features/companySlice.js +1 -1
  21. package/lib/auth/features/companySlice.js.map +1 -1
  22. package/lib/auth/features/configSlice.js +2 -2
  23. package/lib/auth/features/configSlice.js.map +1 -1
  24. package/lib/auth/features/languageSlice.js +1 -1
  25. package/lib/auth/features/languageSlice.js.map +1 -1
  26. package/lib/auth/features/userSlice.js +2 -2
  27. package/lib/auth/features/userSlice.js.map +1 -1
  28. package/lib/auth/i18n/en.json +7 -1
  29. package/lib/auth/i18n/fr.json +7 -1
  30. package/lib/auth/screens/SettingsScreen.d.ts +2 -1
  31. package/lib/auth/screens/SettingsScreen.js +19 -5
  32. package/lib/auth/screens/SettingsScreen.js.map +1 -1
  33. package/lib/components/external/CodeHighlighter/CodeHighlighter.d.ts +9 -0
  34. package/lib/components/external/CodeHighlighter/CodeHighlighter.js +30 -0
  35. package/lib/components/external/CodeHighlighter/CodeHighlighter.js.map +1 -0
  36. package/lib/components/external/CodeHighlighter/code-highlighter.helper.d.ts +39 -0
  37. package/lib/components/external/CodeHighlighter/code-highlighter.helper.js +60 -0
  38. package/lib/components/external/CodeHighlighter/code-highlighter.helper.js.map +1 -0
  39. package/lib/components/external/PlanningView/PlanningView.d.ts +5 -4
  40. package/lib/components/external/PlanningView/PlanningView.js +58 -12
  41. package/lib/components/external/PlanningView/PlanningView.js.map +1 -1
  42. package/lib/components/external/PlanningView/agenda.helpers.d.ts +15 -2
  43. package/lib/components/external/PlanningView/agenda.helpers.js +69 -9
  44. package/lib/components/external/PlanningView/agenda.helpers.js.map +1 -1
  45. package/lib/components/external/Scanner/Scanner.js +10 -6
  46. package/lib/components/external/Scanner/Scanner.js.map +1 -1
  47. package/lib/components/external/index.d.ts +2 -0
  48. package/lib/components/external/index.js +2 -0
  49. package/lib/components/external/index.js.map +1 -1
  50. package/lib/components/molecules/DatePicker/DatePicker.d.ts +8 -0
  51. package/lib/components/molecules/DatePicker/DatePicker.js +33 -0
  52. package/lib/components/molecules/DatePicker/DatePicker.js.map +1 -0
  53. package/lib/components/molecules/ErrorText/ErrorText.d.ts +2 -2
  54. package/lib/components/molecules/ErrorText/ErrorText.js +53 -7
  55. package/lib/components/molecules/ErrorText/ErrorText.js.map +1 -1
  56. package/lib/components/molecules/InputBarCodeCard/InputBarCodeCard.d.ts +3 -1
  57. package/lib/components/molecules/InputBarCodeCard/InputBarCodeCard.js +18 -33
  58. package/lib/components/molecules/InputBarCodeCard/InputBarCodeCard.js.map +1 -1
  59. package/lib/components/molecules/LoginButton/LoginButton.d.ts +2 -1
  60. package/lib/components/molecules/LoginButton/LoginButton.js +4 -3
  61. package/lib/components/molecules/LoginButton/LoginButton.js.map +1 -1
  62. package/lib/components/molecules/index.d.ts +1 -0
  63. package/lib/components/molecules/index.js +1 -0
  64. package/lib/components/molecules/index.js.map +1 -1
  65. package/lib/components/organisms/AutoCompleteSearchInput/AutoCompleteSearchInput.d.ts +17 -0
  66. package/lib/components/organisms/AutoCompleteSearchInput/AutoCompleteSearchInput.js +61 -0
  67. package/lib/components/organisms/AutoCompleteSearchInput/AutoCompleteSearchInput.js.map +1 -0
  68. package/lib/components/organisms/DateInput/DateInput.d.ts +11 -0
  69. package/lib/components/organisms/DateInput/DateInput.js +137 -0
  70. package/lib/components/organisms/DateInput/DateInput.js.map +1 -0
  71. package/lib/components/organisms/DateInput/date-input.helper.d.ts +17 -0
  72. package/lib/components/organisms/DateInput/date-input.helper.js +63 -0
  73. package/lib/components/organisms/DateInput/date-input.helper.js.map +1 -0
  74. package/lib/components/organisms/MailMessageCommentCard/MailMessageCommentCard.js +6 -9
  75. package/lib/components/organisms/MailMessageCommentCard/MailMessageCommentCard.js.map +1 -1
  76. package/lib/components/organisms/PasswordInput/PasswordInput.js +1 -1
  77. package/lib/components/organisms/PasswordInput/PasswordInput.js.map +1 -1
  78. package/lib/components/organisms/ScannerAutocompleteSearch/ScannerAutocompleteSearch.d.ts +2 -1
  79. package/lib/components/organisms/ScannerAutocompleteSearch/ScannerAutocompleteSearch.js +8 -13
  80. package/lib/components/organisms/ScannerAutocompleteSearch/ScannerAutocompleteSearch.js.map +1 -1
  81. package/lib/components/organisms/UrlInput/UrlInput.js +1 -1
  82. package/lib/components/organisms/UrlInput/UrlInput.js.map +1 -1
  83. package/lib/components/organisms/UsernameInput/UsernameInput.d.ts +5 -1
  84. package/lib/components/organisms/UsernameInput/UsernameInput.js +10 -3
  85. package/lib/components/organisms/UsernameInput/UsernameInput.js.map +1 -1
  86. package/lib/components/organisms/index.d.ts +2 -0
  87. package/lib/components/organisms/index.js +2 -0
  88. package/lib/components/organisms/index.js.map +1 -1
  89. package/lib/components/templates/AttachedFilesView/AttachedFilesView.js +14 -20
  90. package/lib/components/templates/AttachedFilesView/AttachedFilesView.js.map +1 -1
  91. package/lib/components/templates/MailMessageView/MailMessageView.js +2 -2
  92. package/lib/components/templates/MailMessageView/MailMessageView.js.map +1 -1
  93. package/lib/features/attachedFilesSlice.js +3 -3
  94. package/lib/features/attachedFilesSlice.js.map +1 -1
  95. package/lib/features/authSlice.d.ts +24 -13
  96. package/lib/features/authSlice.js +27 -10
  97. package/lib/features/authSlice.js.map +1 -1
  98. package/lib/features/mailMessageSlice.js +10 -10
  99. package/lib/features/mailMessageSlice.js.map +1 -1
  100. package/lib/features/menuConfigSlice.js +1 -1
  101. package/lib/features/menuConfigSlice.js.map +1 -1
  102. package/lib/features/metafileSlice.js +1 -1
  103. package/lib/features/metafileSlice.js.map +1 -1
  104. package/lib/features/mobileConfigSlice.js +1 -1
  105. package/lib/features/mobileConfigSlice.js.map +1 -1
  106. package/lib/hooks/use-scan-activator.d.ts +9 -0
  107. package/lib/hooks/use-scan-activator.js +60 -0
  108. package/lib/hooks/use-scan-activator.js.map +1 -0
  109. package/lib/i18n/component/Translator.d.ts +3 -1
  110. package/lib/i18n/helpers/langages.d.ts +7 -3
  111. package/lib/i18n/helpers/langages.js.map +1 -1
  112. package/lib/i18n/i18n.d.ts +4 -3
  113. package/lib/i18n/i18n.js +5 -5
  114. package/lib/i18n/i18n.js.map +1 -1
  115. package/lib/i18n/translations/en.json +25 -1
  116. package/lib/i18n/translations/fr.json +25 -1
  117. package/lib/index.d.ts +1 -1
  118. package/lib/index.js +1 -1
  119. package/lib/index.js.map +1 -1
  120. package/lib/screens/LoginScreen.js +53 -13
  121. package/lib/screens/LoginScreen.js.map +1 -1
  122. package/lib/storage/Storage.d.ts +5 -1
  123. package/lib/storage/Storage.js +7 -1
  124. package/lib/storage/Storage.js.map +1 -1
  125. package/lib/tools/FilePicker.d.ts +1 -0
  126. package/lib/tools/FilePicker.js +42 -0
  127. package/lib/tools/FilePicker.js.map +1 -0
  128. package/lib/utils/api.d.ts +2 -0
  129. package/lib/utils/api.js +47 -0
  130. package/lib/utils/api.js.map +1 -0
  131. package/lib/utils/date.d.ts +3 -0
  132. package/lib/utils/date.js +16 -0
  133. package/lib/utils/date.js.map +1 -1
  134. package/lib/utils/filter.d.ts +9 -0
  135. package/lib/utils/filter.js +31 -0
  136. package/lib/utils/filter.js.map +1 -0
  137. package/lib/utils/formatters.d.ts +1 -0
  138. package/lib/utils/formatters.js +24 -0
  139. package/lib/utils/formatters.js.map +1 -1
  140. package/lib/utils/index.d.ts +6 -5
  141. package/lib/utils/index.js +6 -5
  142. package/lib/utils/index.js.map +1 -1
  143. package/lib/utils/object.d.ts +3 -0
  144. package/lib/utils/object.js +22 -0
  145. package/lib/utils/object.js.map +1 -1
  146. package/lib/utils/storage-keys.d.ts +1 -0
  147. package/lib/utils/storage-keys.js +19 -0
  148. package/lib/utils/storage-keys.js.map +1 -0
  149. package/lib/utils/string.d.ts +1 -1
  150. package/lib/utils/string.js +1 -1
  151. package/lib/utils/string.js.map +1 -1
  152. package/package.json +10 -5
@@ -0,0 +1,33 @@
1
+ /*
2
+ * Axelor Business Solutions
3
+ *
4
+ * Copyright (C) 2023 Axelor (<http://axelor.com>).
5
+ *
6
+ * This program is free software: you can redistribute it and/or modify
7
+ * it under the terms of the GNU Affero General Public License, version 3,
8
+ * as published by the Free Software Foundation.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ import React, { useMemo } from 'react';
19
+ import { StyleSheet } from 'react-native';
20
+ import { default as NativeDatePicker } from 'react-native-date-picker';
21
+ import { useThemeColor } from '@axelor/aos-mobile-ui';
22
+ const DatePicker = ({ defaultDate, mode, onDateChange, pickerWidth = null, }) => {
23
+ const Colors = useThemeColor();
24
+ const styles = useMemo(() => getStyles(pickerWidth), [pickerWidth]);
25
+ return (<NativeDatePicker date={defaultDate} onDateChange={onDateChange} mode={mode} textColor={Colors.text} fadeToColor={Colors.backgroundColor} style={styles.container}/>);
26
+ };
27
+ const getStyles = (pickerWidth) => StyleSheet.create({
28
+ container: {
29
+ width: pickerWidth,
30
+ },
31
+ });
32
+ export default DatePicker;
33
+ //# sourceMappingURL=DatePicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatePicker.js","sourceRoot":"","sources":["../../../../src/components/molecules/DatePicker/DatePicker.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AACxC,OAAO,EAAC,OAAO,IAAI,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAC;AASpD,MAAM,UAAU,GAAG,CAAC,EAClB,WAAW,EACX,IAAI,EACJ,YAAY,EACZ,WAAW,GAAG,IAAI,GACF,EAAE,EAAE;IACpB,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAE/B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAEpE,OAAO,CACL,CAAC,gBAAgB,CACf,IAAI,CAAC,CAAC,WAAW,CAAC,CAClB,YAAY,CAAC,CAAC,YAAY,CAAC,CAC3B,IAAI,CAAC,CAAC,IAAI,CAAC,CACX,SAAS,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CACvB,WAAW,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CACpC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EACxB,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,WAAmB,EAAE,EAAE,CACxC,UAAU,CAAC,MAAM,CAAC;IAChB,SAAS,EAAE;QACT,KAAK,EAAE,WAAW;KACnB;CACF,CAAC,CAAC;AAEL,eAAe,UAAU,CAAC"}
@@ -1,4 +1,4 @@
1
1
  export default ErrorText;
2
- declare function ErrorText({ message }: {
3
- message: any;
2
+ declare function ErrorText({ error }: {
3
+ error: any;
4
4
  }): JSX.Element;
@@ -15,15 +15,61 @@
15
15
  * You should have received a copy of the GNU Affero General Public License
16
16
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
- import React from 'react';
19
- import { StyleSheet } from 'react-native';
20
- import { Text } from '@axelor/aos-mobile-ui';
21
- const ErrorText = ({ message }) => {
22
- return <Text style={styles.text}>{message}</Text>;
18
+ import React, { useMemo } from 'react';
19
+ import { StyleSheet, View } from 'react-native';
20
+ import { Icon, Text, useThemeColor } from '@axelor/aos-mobile-ui';
21
+ import { useTranslator } from '../../../i18n';
22
+ const ERROR_CODE_REGEX = /\d{3}$/g;
23
+ const LOGIN_ERROR = 401;
24
+ const URL_ERROR = 999;
25
+ const ErrorText = ({ error }) => {
26
+ const I18n = useTranslator();
27
+ const Colors = useThemeColor();
28
+ const styles = useMemo(() => {
29
+ return getStyles(Colors.errorColor);
30
+ }, [Colors.errorColor]);
31
+ const errorCode = useMemo(() => {
32
+ if (error?.message == null) {
33
+ return null;
34
+ }
35
+ const regexResult = error.message.match(ERROR_CODE_REGEX)[0];
36
+ return regexResult == null ? null : parseFloat(regexResult);
37
+ }, [error]);
38
+ const errorMessage = useMemo(() => {
39
+ if (errorCode === LOGIN_ERROR) {
40
+ return I18n.t('Auth_WrongPasswordOrUserName');
41
+ }
42
+ if (errorCode === URL_ERROR) {
43
+ return `${I18n.t('Auth_InvalidUrl')}: ${error.url}`;
44
+ }
45
+ return error?.message;
46
+ }, [I18n, error, errorCode]);
47
+ if (error == null) {
48
+ return null;
49
+ }
50
+ return (<View style={styles.container}>
51
+ <Icon name="warning" FontAwesome5={false} color={Colors.errorColor.foreground}/>
52
+ <Text style={styles.text}>{errorMessage}</Text>
53
+ </View>);
23
54
  };
24
- const styles = StyleSheet.create({
55
+ const getStyles = color => StyleSheet.create({
56
+ container: {
57
+ width: '90%',
58
+ borderColor: color.background_light,
59
+ borderWidth: 1,
60
+ borderRadius: 13,
61
+ backgroundColor: '#f79696',
62
+ flexDirection: 'row',
63
+ justifyContent: 'flex-start',
64
+ alignItems: 'center',
65
+ marginVertical: 10,
66
+ marginHorizontal: 20,
67
+ paddingVertical: 10,
68
+ paddingHorizontal: 10,
69
+ },
25
70
  text: {
26
- color: 'red',
71
+ marginLeft: 10,
72
+ color: color.foreground,
27
73
  alignSelf: 'center',
28
74
  },
29
75
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorText.js","sourceRoot":"","sources":["../../../../src/components/molecules/ErrorText/ErrorText.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AACxC,OAAO,EAAC,IAAI,EAAC,MAAM,uBAAuB,CAAC;AAE3C,MAAM,SAAS,GAAG,CAAC,EAAC,OAAO,EAAC,EAAE,EAAE;IAC9B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE;QACJ,KAAK,EAAE,KAAK;QACZ,SAAS,EAAE,QAAQ;KACpB;CACF,CAAC,CAAC;AAEH,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"ErrorText.js","sourceRoot":"","sources":["../../../../src/components/molecules/ErrorText/ErrorText.js"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  export default InputBarCodeCard;
2
- declare function InputBarCodeCard({ style, scanKeySearch, title, onChange, }: {
2
+ declare function InputBarCodeCard({ style, scanKeySearch, title, defaultValue, readOnly, onChange, }: {
3
3
  style: any;
4
4
  scanKeySearch: any;
5
5
  title: any;
6
+ defaultValue: any;
7
+ readOnly?: boolean;
6
8
  onChange?: () => void;
7
9
  }): JSX.Element;
@@ -15,19 +15,20 @@
15
15
  * You should have received a copy of the GNU Affero General Public License
16
16
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
- import React, { useState, useEffect, useMemo } from 'react';
18
+ import React, { useState, useEffect } from 'react';
19
19
  import { StyleSheet, View } from 'react-native';
20
- import { useDispatch } from 'react-redux';
21
- import { Card, getCommonStyles, Icon, Input, Text, useThemeColor, } from '@axelor/aos-mobile-ui';
22
- import { enableScan, useScannedValueByKey, useScannerSelector, } from '../../../features/scannerSlice';
23
- import { enableCameraScanner, useCameraScannerValueByKey, } from '../../../features/cameraScannerSlice';
24
- const InputBarCodeCard = ({ style, scanKeySearch, title, onChange = () => { }, }) => {
20
+ import { Icon, IconInput, Text, useThemeColor } from '@axelor/aos-mobile-ui';
21
+ import { useScannedValueByKey, useScannerSelector, } from '../../../features/scannerSlice';
22
+ import { useCameraScannerValueByKey } from '../../../features/cameraScannerSlice';
23
+ import { useScanActivator, useScannerDeviceActivator, } from '../../../hooks/use-scan-activator';
24
+ const InputBarCodeCard = ({ style, scanKeySearch, title, defaultValue, readOnly = false, onChange = () => { }, }) => {
25
25
  const Colors = useThemeColor();
26
- const [inputData, setInputData] = useState(null);
26
+ const [inputData, setInputData] = useState(defaultValue);
27
27
  const { isEnabled: scannerEnabled, scanKey } = useScannerSelector();
28
28
  const scannedValue = useScannedValueByKey(scanKeySearch);
29
29
  const scanData = useCameraScannerValueByKey(scanKeySearch);
30
- const dispatch = useDispatch();
30
+ const { enable: onScanPress } = useScanActivator(scanKeySearch);
31
+ const { enable: enableScanner } = useScannerDeviceActivator(scanKeySearch);
31
32
  useEffect(() => {
32
33
  if (scannedValue) {
33
34
  setInputData(scannedValue);
@@ -38,44 +39,28 @@ const InputBarCodeCard = ({ style, scanKeySearch, title, onChange = () => { }, }
38
39
  onChange(scanData.value);
39
40
  }
40
41
  }, [onChange, scanData, scannedValue]);
41
- const commonStyles = useMemo(() => getCommonStyles(Colors), [Colors]);
42
42
  return (<View style={style}>
43
43
  {title && (<View style={styles.titleContainer}>
44
44
  <Text style={styles.textImportant}>{title}</Text>
45
45
  </View>)}
46
- <Card style={[
47
- commonStyles.filter,
48
- commonStyles.filterAlign,
49
- styles.container,
50
- ]}>
51
- <Input style={styles.inputField} value={inputData} onChange={onChange} onSelection={() => {
52
- scanKeySearch ? dispatch(enableScan(scanKeySearch)) : undefined;
53
- }}/>
54
- <Icon name="qrcode" touchable={true} onPress={() => {
55
- scanKeySearch
56
- ? dispatch(enableCameraScanner(scanKeySearch))
57
- : undefined;
58
- }} color={scannerEnabled && scanKey === scanKeySearch
59
- ? Colors.primaryColor.background
60
- : Colors.secondaryColor_dark.background}/>
61
- </Card>
46
+ <IconInput style={style} value={inputData} onChange={onChange} readOnly={readOnly} onSelection={enableScanner} rightIconsList={[
47
+ <Icon name="qrcode" size={20} color={scannerEnabled && scanKey === scanKeySearch
48
+ ? Colors.primaryColor.background
49
+ : Colors.secondaryColor_dark.background} touchable={true} style={styles.icon} onPress={onScanPress} FontAwesome5={false}/>,
50
+ ]}/>
62
51
  </View>);
63
52
  };
64
53
  const styles = StyleSheet.create({
65
- container: {
66
- marginHorizontal: 16,
67
- paddingRight: 15,
68
- marginBottom: '3%',
69
- },
70
- inputField: {
71
- width: '90%',
72
- },
73
54
  titleContainer: {
74
55
  marginHorizontal: 16,
75
56
  },
76
57
  textImportant: {
77
58
  fontWeight: 'bold',
78
59
  },
60
+ icon: {
61
+ width: '7%',
62
+ margin: 3,
63
+ },
79
64
  });
80
65
  export default InputBarCodeCard;
81
66
  //# sourceMappingURL=InputBarCodeCard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InputBarCodeCard.js","sourceRoot":"","sources":["../../../../src/components/molecules/InputBarCodeCard/InputBarCodeCard.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"InputBarCodeCard.js","sourceRoot":"","sources":["../../../../src/components/molecules/InputBarCodeCard/InputBarCodeCard.js"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export default LoginButton;
2
- declare function LoginButton({ onPress }: {
2
+ declare function LoginButton({ onPress, disabled }: {
3
3
  onPress: any;
4
+ disabled: any;
4
5
  }): JSX.Element;
@@ -17,12 +17,13 @@
17
17
  */
18
18
  import React from 'react';
19
19
  import { StyleSheet, View } from 'react-native';
20
- import { Button } from '@axelor/aos-mobile-ui';
20
+ import { Button, useThemeColor } from '@axelor/aos-mobile-ui';
21
21
  import useTranslator from '../../../i18n/hooks/use-translator';
22
- const LoginButton = ({ onPress }) => {
22
+ const LoginButton = ({ onPress, disabled }) => {
23
23
  const I18n = useTranslator();
24
+ const Colors = useThemeColor();
24
25
  return (<View style={styles.container}>
25
- <Button style={styles.button} title={I18n.t('Auth_LOGIN')} onPress={onPress}/>
26
+ <Button style={styles.button} title={I18n.t('Auth_LOGIN')} onPress={onPress} disabled={disabled} color={disabled ? Colors.secondaryColor : Colors.primaryColor}/>
26
27
  </View>);
27
28
  };
28
29
  const styles = StyleSheet.create({
@@ -1 +1 @@
1
- {"version":3,"file":"LoginButton.js","sourceRoot":"","sources":["../../../../src/components/molecules/LoginButton/LoginButton.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,UAAU,EAAE,IAAI,EAAC,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAC,MAAM,EAAC,MAAM,uBAAuB,CAAC;AAC7C,OAAO,aAAa,MAAM,oCAAoC,CAAC;AAE/D,MAAM,WAAW,GAAG,CAAC,EAAC,OAAO,EAAC,EAAE,EAAE;IAChC,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;IAE7B,OAAO,CACL,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAC5B;MAAA,CAAC,MAAM,CACL,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CACrB,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAC5B,OAAO,CAAC,CAAC,OAAO,CAAC,EAErB;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE;QACT,UAAU,EAAE,QAAQ;KACrB;IACD,MAAM,EAAE;QACN,SAAS,EAAE,EAAE;QACb,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,EAAE;QACV,SAAS,EAAE,CAAC;KACb;CACF,CAAC,CAAC;AAEH,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"LoginButton.js","sourceRoot":"","sources":["../../../../src/components/molecules/LoginButton/LoginButton.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,UAAU,EAAE,IAAI,EAAC,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAC,MAAM,EAAE,aAAa,EAAC,MAAM,uBAAuB,CAAC;AAC5D,OAAO,aAAa,MAAM,oCAAoC,CAAC;AAE/D,MAAM,WAAW,GAAG,CAAC,EAAC,OAAO,EAAE,QAAQ,EAAC,EAAE,EAAE;IAC1C,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAE/B,OAAO,CACL,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAC5B;MAAA,CAAC,MAAM,CACL,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CACrB,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAC5B,OAAO,CAAC,CAAC,OAAO,CAAC,CACjB,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,EAElE;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE;QACT,UAAU,EAAE,QAAQ;KACrB;IACD,MAAM,EAAE;QACN,SAAS,EAAE,EAAE;QACb,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,EAAE;QACV,SAAS,EAAE,CAAC;KACb;CACF,CAAC,CAAC;AAEH,eAAe,WAAW,CAAC"}
@@ -1,3 +1,4 @@
1
+ export { default as DatePicker } from "./DatePicker/DatePicker";
1
2
  export { default as ErrorText } from "./ErrorText/ErrorText";
2
3
  export { default as HeaderOptionMenuItem } from "./HeaderOptionsMenuItem/HeaderOptionMenuItem";
3
4
  export { default as IconSettings } from "./IconSettings/IconSettings";
@@ -15,6 +15,7 @@
15
15
  * You should have received a copy of the GNU Affero General Public License
16
16
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
+ export { default as DatePicker } from './DatePicker/DatePicker';
18
19
  export { default as ErrorText } from './ErrorText/ErrorText';
19
20
  export { default as HeaderOptionMenuItem } from './HeaderOptionsMenuItem/HeaderOptionMenuItem';
20
21
  export { default as IconSettings } from './IconSettings/IconSettings';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/molecules/index.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAC,OAAO,IAAI,oBAAoB,EAAC,MAAM,8CAA8C,CAAC;AAC7F,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAC,OAAO,IAAI,gBAAgB,EAAC,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAC,OAAO,IAAI,WAAW,EAAC,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAC,OAAO,IAAI,mBAAmB,EAAC,MAAM,2CAA2C,CAAC;AACzF,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/molecules/index.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAC,OAAO,IAAI,UAAU,EAAC,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAC,OAAO,IAAI,oBAAoB,EAAC,MAAM,8CAA8C,CAAC;AAC7F,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAC,OAAO,IAAI,gBAAgB,EAAC,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAC,OAAO,IAAI,WAAW,EAAC,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAC,OAAO,IAAI,mBAAmB,EAAC,MAAM,2CAA2C,CAAC;AACzF,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { AnyAction } from '@reduxjs/toolkit';
2
+ interface AutoCompleteSearchInputProps {
3
+ title?: string;
4
+ objectList: any[];
5
+ value?: any;
6
+ searchField: string;
7
+ onChangeValue?: (any: any) => void;
8
+ onSelection?: () => void;
9
+ searchAPI?: ({ searchValue }: {
10
+ searchValue: string;
11
+ }) => AnyAction;
12
+ placeholder?: string;
13
+ style?: any;
14
+ required?: boolean;
15
+ }
16
+ declare const AutoCompleteSearchInput: ({ title, objectList, value, searchField, onChangeValue, onSelection, searchAPI, placeholder, style, required, }: AutoCompleteSearchInputProps) => JSX.Element;
17
+ export default AutoCompleteSearchInput;
@@ -0,0 +1,61 @@
1
+ /*
2
+ * Axelor Business Solutions
3
+ *
4
+ * Copyright (C) 2023 Axelor (<http://axelor.com>).
5
+ *
6
+ * This program is free software: you can redistribute it and/or modify
7
+ * it under the terms of the GNU Affero General Public License, version 3,
8
+ * as published by the Free Software Foundation.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ import React, { useCallback, useEffect, useMemo, useState } from 'react';
19
+ import { StyleSheet, View } from 'react-native';
20
+ import { AutoCompleteSearch, Text, useThemeColor, } from '@axelor/aos-mobile-ui';
21
+ import { stringNoAccent } from '../../../utils/string';
22
+ import { useDispatch } from '../../../redux/hooks';
23
+ const AutoCompleteSearchInput = ({ title, objectList, value = null, searchField, onChangeValue, onSelection, searchAPI, placeholder, style, required = false, }) => {
24
+ const Colors = useThemeColor();
25
+ const dispatch = useDispatch();
26
+ const [filteredList, setFilteredList] = useState(objectList);
27
+ const [searchValue, setSearchValue] = useState(null);
28
+ const styles = useMemo(() => getStyles(Colors), [Colors]);
29
+ const filterSearchList = useCallback(_searchValue => {
30
+ if (_searchValue == null || _searchValue === '') {
31
+ return [];
32
+ }
33
+ const objectFiltredList = objectList?.filter(item => stringNoAccent(item[searchField])
34
+ .toLowerCase()
35
+ .includes(stringNoAccent(_searchValue).toLowerCase())) || [];
36
+ if (objectFiltredList.length === 0 && searchAPI) {
37
+ dispatch(searchAPI({ searchValue: _searchValue }));
38
+ }
39
+ return objectFiltredList;
40
+ }, [dispatch, objectList, searchAPI, searchField]);
41
+ useEffect(() => {
42
+ setFilteredList(filterSearchList(searchValue));
43
+ }, [filterSearchList, searchValue]);
44
+ return (<View>
45
+ <Text style={styles.title}>{title}</Text>
46
+ <AutoCompleteSearch style={[
47
+ style,
48
+ value == null && required ? styles.requiredBorder : null,
49
+ ]} value={value} objectList={filteredList} onChangeValue={onChangeValue} onSelection={onSelection} fetchData={setSearchValue} placeholder={placeholder} displayValue={item => item[searchField]}/>
50
+ </View>);
51
+ };
52
+ const getStyles = (Colors) => StyleSheet.create({
53
+ title: {
54
+ marginHorizontal: 10,
55
+ },
56
+ requiredBorder: {
57
+ borderColor: Colors.errorColor.background,
58
+ },
59
+ });
60
+ export default AutoCompleteSearchInput;
61
+ //# sourceMappingURL=AutoCompleteSearchInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoCompleteSearchInput.js","sourceRoot":"","sources":["../../../../src/components/organisms/AutoCompleteSearchInput/AutoCompleteSearchInput.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ interface DateInputProps {
2
+ title: string;
3
+ defaultDate?: Date;
4
+ mode?: 'date' | 'datetime' | 'time';
5
+ nullable?: boolean;
6
+ onDateChange: (date: Date) => void;
7
+ style?: any;
8
+ readonly?: boolean;
9
+ }
10
+ declare const DateInput: ({ title, defaultDate, mode, nullable, onDateChange, style, readonly, }: DateInputProps) => JSX.Element;
11
+ export default DateInput;
@@ -0,0 +1,137 @@
1
+ /*
2
+ * Axelor Business Solutions
3
+ *
4
+ * Copyright (C) 2023 Axelor (<http://axelor.com>).
5
+ *
6
+ * This program is free software: you can redistribute it and/or modify
7
+ * it under the terms of the GNU Affero General Public License, version 3,
8
+ * as published by the Free Software Foundation.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
19
+ import { StyleSheet, View } from 'react-native';
20
+ import useTranslator from '../../../i18n/hooks/use-translator';
21
+ import { Card, getCommonStyles, Icon, RightIconButton, Text, useClickOutside, useThemeColor, OUTSIDE_INDICATOR, } from '@axelor/aos-mobile-ui';
22
+ import { DatePicker } from '../../molecules';
23
+ import DateInputUtils from './date-input.helper';
24
+ const ACTION_ICON_SIZE = 30;
25
+ const DateInput = ({ title, defaultDate, mode = 'datetime', nullable = false, onDateChange, style, readonly = false, }) => {
26
+ const Colors = useThemeColor();
27
+ const I18n = useTranslator();
28
+ const currentDate = useMemo(() => new Date(), []);
29
+ const [pickerWidth, setPickerWidth] = useState();
30
+ const [pickerIsOpen, setPickerIsOpen] = useState(false);
31
+ const [selectedDate, setSelectedDate] = useState(defaultDate);
32
+ const [isFocused, setIsFocused] = useState(false);
33
+ useEffect(() => {
34
+ if (defaultDate) {
35
+ setSelectedDate(defaultDate);
36
+ }
37
+ }, [defaultDate]);
38
+ const wrapperRef = useRef(null);
39
+ const clickOutside = useClickOutside({
40
+ wrapperRef,
41
+ visible: pickerIsOpen,
42
+ });
43
+ useEffect(() => {
44
+ if (clickOutside === OUTSIDE_INDICATOR && pickerIsOpen) {
45
+ setPickerIsOpen(false);
46
+ setIsFocused(false);
47
+ }
48
+ }, [clickOutside, pickerIsOpen]);
49
+ const togglePicker = () => {
50
+ if (!readonly) {
51
+ setPickerIsOpen(current => !current);
52
+ setIsFocused(current => !current);
53
+ }
54
+ };
55
+ const onCheckDate = useCallback(() => {
56
+ if (!selectedDate) {
57
+ setSelectedDate(currentDate);
58
+ onDateChange(currentDate);
59
+ setPickerIsOpen(false);
60
+ }
61
+ else {
62
+ onDateChange(selectedDate);
63
+ setPickerIsOpen(false);
64
+ }
65
+ }, [onDateChange, selectedDate, currentDate]);
66
+ const onClearDate = useCallback(() => {
67
+ setSelectedDate(null);
68
+ setPickerIsOpen(false);
69
+ }, []);
70
+ const commonStyles = useMemo(() => getCommonStyles(Colors), [Colors]);
71
+ const styles = useMemo(() => getStyles(Colors), [Colors]);
72
+ return (<View ref={wrapperRef} style={[styles.container, style]}>
73
+ <Text style={styles.title}>{title}</Text>
74
+ <RightIconButton onPress={togglePicker} icon={!readonly && (<Icon name={DateInputUtils.getIconName(mode)} color={Colors.secondaryColor_dark.background}/>)} title={selectedDate
75
+ ? DateInputUtils.formatDate(mode, selectedDate, I18n)
76
+ : DateInputUtils.getDateInputPlaceholder(mode)} styleText={styles.styleTextButton} style={[
77
+ commonStyles.filter,
78
+ commonStyles.filterSize,
79
+ commonStyles.filterAlign,
80
+ styles.rightIconButton,
81
+ isFocused && commonStyles.inputFocused,
82
+ ]}/>
83
+ <View>
84
+ {pickerIsOpen ? (<Card style={styles.selectionContainer}>
85
+ <View onLayout={event => {
86
+ const { width } = event.nativeEvent.layout;
87
+ setPickerWidth(width);
88
+ }} style={styles.datePickerContainer}>
89
+ <DatePicker defaultDate={selectedDate || currentDate} onDateChange={setSelectedDate} mode={mode} pickerWidth={pickerWidth}/>
90
+ </View>
91
+ <View style={styles.actionContainer}>
92
+ <Icon name="check-circle" color={Colors.primaryColor.background} size={ACTION_ICON_SIZE} touchable={true} FontAwesome5={false} onPress={onCheckDate} style={styles.actionButton}/>
93
+ {nullable && (<Icon name="times-circle" color={Colors.primaryColor.background} size={ACTION_ICON_SIZE} touchable={true} FontAwesome5={false} onPress={onClearDate} style={styles.actionButton}/>)}
94
+ </View>
95
+ </Card>) : null}
96
+ </View>
97
+ </View>);
98
+ };
99
+ const getStyles = Colors => StyleSheet.create({
100
+ actionButton: {
101
+ marginLeft: 10,
102
+ },
103
+ actionContainer: {
104
+ flexDirection: 'row',
105
+ justifyContent: 'flex-end',
106
+ alignItems: 'flex-end',
107
+ },
108
+ container: {
109
+ width: '100%',
110
+ },
111
+ datePickerContainer: {
112
+ flex: 1,
113
+ },
114
+ rightIconButton: {
115
+ borderColor: Colors.secondaryColor.background,
116
+ borderWidth: 1,
117
+ marginLeft: 0,
118
+ width: '100%',
119
+ },
120
+ selectionContainer: {
121
+ paddingHorizontal: 5,
122
+ paddingVertical: 10,
123
+ paddingRight: 10,
124
+ position: 'absolute',
125
+ height: 240,
126
+ width: '100%',
127
+ zIndex: 999,
128
+ },
129
+ styleTextButton: {
130
+ left: '-20%',
131
+ },
132
+ title: {
133
+ marginLeft: 5,
134
+ },
135
+ });
136
+ export default DateInput;
137
+ //# sourceMappingURL=DateInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateInput.js","sourceRoot":"","sources":["../../../../src/components/organisms/DateInput/DateInput.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { TranslatorProps } from '../../../i18n/hooks/use-translator';
2
+ declare class DateInputUtils {
3
+ static mode: {
4
+ Date: string;
5
+ DateTime: string;
6
+ Time: string;
7
+ };
8
+ static placeHolder: {
9
+ Date: string;
10
+ DateTime: string;
11
+ Time: string;
12
+ };
13
+ static getDateInputPlaceholder: (mode: string) => string;
14
+ static formatDate: (mode: string, date: Date, I18n: TranslatorProps) => string;
15
+ static getIconName: (mode: string) => string;
16
+ }
17
+ export default DateInputUtils;
@@ -0,0 +1,63 @@
1
+ /*
2
+ * Axelor Business Solutions
3
+ *
4
+ * Copyright (C) 2023 Axelor (<http://axelor.com>).
5
+ *
6
+ * This program is free software: you can redistribute it and/or modify
7
+ * it under the terms of the GNU Affero General Public License, version 3,
8
+ * as published by the Free Software Foundation.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ import { formatDate, formatDateTime } from '../../../utils/formatters';
19
+ import { formatTime } from '../../../utils/formatters';
20
+ class DateInputUtils {
21
+ static mode = {
22
+ Date: 'date',
23
+ DateTime: 'datetime',
24
+ Time: 'time',
25
+ };
26
+ static placeHolder = {
27
+ Date: '__/__/____',
28
+ DateTime: '__/__/____ __:__',
29
+ Time: '__:__',
30
+ };
31
+ static getDateInputPlaceholder = (mode) => {
32
+ switch (mode) {
33
+ case this.mode.Date:
34
+ return this.placeHolder.Date;
35
+ case this.mode.DateTime:
36
+ return this.placeHolder.DateTime;
37
+ case this.mode.Time:
38
+ return this.placeHolder.Time;
39
+ default:
40
+ console.warn(`Mode provided with value ${mode} is not supported by date input`);
41
+ return null;
42
+ }
43
+ };
44
+ static formatDate = (mode, date, I18n) => {
45
+ const _date = date.toISOString();
46
+ switch (mode) {
47
+ case this.mode.Date:
48
+ return formatDate(_date, I18n.t('Base_DateFormat'));
49
+ case this.mode.DateTime:
50
+ return formatDateTime(_date, I18n.t('Base_DateTimeFormat'));
51
+ case this.mode.Time:
52
+ return formatTime(_date, I18n.t('Base_TimeFormat'));
53
+ default:
54
+ console.warn(`Mode provided with value ${mode} is not supported by date input`);
55
+ return null;
56
+ }
57
+ };
58
+ static getIconName = (mode) => {
59
+ return mode === this.mode.Time ? 'clock' : 'calendar-alt';
60
+ };
61
+ }
62
+ export default DateInputUtils;
63
+ //# sourceMappingURL=date-input.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-input.helper.js","sourceRoot":"","sources":["../../../../src/components/organisms/DateInput/date-input.helper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAC,UAAU,EAAE,cAAc,EAAC,MAAM,2BAA2B,CAAC;AAErE,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAErD,MAAM,cAAc;IAClB,MAAM,CAAC,IAAI,GAAG;QACZ,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,UAAU;QACpB,IAAI,EAAE,MAAM;KACb,CAAC;IAEF,MAAM,CAAC,WAAW,GAAG;QACnB,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,kBAAkB;QAC5B,IAAI,EAAE,OAAO;KACd,CAAC;IAEF,MAAM,CAAC,uBAAuB,GAAG,CAAC,IAAY,EAAU,EAAE;QACxD,QAAQ,IAAI,EAAE;YACZ,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI;gBACjB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YAC/B,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ;gBACrB,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;YACnC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI;gBACjB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YAC/B;gBACE,OAAO,CAAC,IAAI,CACV,4BAA4B,IAAI,iCAAiC,CAClE,CAAC;gBACF,OAAO,IAAI,CAAC;SACf;IACH,CAAC,CAAC;IAEF,MAAM,CAAC,UAAU,GAAG,CAClB,IAAY,EACZ,IAAU,EACV,IAAqB,EACb,EAAE;QACV,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,QAAQ,IAAI,EAAE;YACZ,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI;gBACjB,OAAO,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACtD,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ;gBACrB,OAAO,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAC9D,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI;gBACjB,OAAO,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACtD;gBACE,OAAO,CAAC,IAAI,CACV,4BAA4B,IAAI,iCAAiC,CAClE,CAAC;gBACF,OAAO,IAAI,CAAC;SACf;IACH,CAAC,CAAC;IAEF,MAAM,CAAC,WAAW,GAAG,CAAC,IAAY,EAAU,EAAE;QAC5C,OAAO,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC;IAC5D,CAAC,CAAC;;AAEJ,eAAe,cAAc,CAAC"}