@wecareu/input-text 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -0
- package/lib/commonjs/InputText.js +350 -0
- package/lib/commonjs/InputText.js.map +1 -0
- package/lib/commonjs/InputText.types.js +6 -0
- package/lib/commonjs/InputText.types.js.map +1 -0
- package/lib/commonjs/InputTextErrorMessage.js +32 -0
- package/lib/commonjs/InputTextErrorMessage.js.map +1 -0
- package/lib/commonjs/InputTextIcon.js +65 -0
- package/lib/commonjs/InputTextIcon.js.map +1 -0
- package/lib/commonjs/animations/shake.js +45 -0
- package/lib/commonjs/animations/shake.js.map +1 -0
- package/lib/commonjs/index.js +13 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/index.stories.js +409 -0
- package/lib/commonjs/index.stories.js.map +1 -0
- package/lib/module/InputText.js +343 -0
- package/lib/module/InputText.js.map +1 -0
- package/lib/module/InputText.types.js +2 -0
- package/lib/module/InputText.types.js.map +1 -0
- package/lib/module/InputTextErrorMessage.js +25 -0
- package/lib/module/InputTextErrorMessage.js.map +1 -0
- package/lib/module/InputTextIcon.js +58 -0
- package/lib/module/InputTextIcon.js.map +1 -0
- package/lib/module/animations/shake.js +39 -0
- package/lib/module/animations/shake.js.map +1 -0
- package/lib/module/index.js +2 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/index.stories.js +402 -0
- package/lib/module/index.stories.js.map +1 -0
- package/lib/typescript/src/InputText.d.ts +5 -0
- package/lib/typescript/src/InputText.d.ts.map +1 -0
- package/lib/typescript/src/InputText.types.d.ts +146 -0
- package/lib/typescript/src/InputText.types.d.ts.map +1 -0
- package/lib/typescript/src/InputTextErrorMessage.d.ts +3 -0
- package/lib/typescript/src/InputTextErrorMessage.d.ts.map +1 -0
- package/lib/typescript/src/InputTextIcon.d.ts +3 -0
- package/lib/typescript/src/InputTextIcon.d.ts.map +1 -0
- package/lib/typescript/src/animations/shake.d.ts +32 -0
- package/lib/typescript/src/animations/shake.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +3 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/package.json +66 -0
- package/src/InputText.tsx +451 -0
- package/src/InputText.types.ts +153 -0
- package/src/InputTextErrorMessage.tsx +31 -0
- package/src/InputTextIcon.tsx +65 -0
- package/src/animations/shake.ts +76 -0
- package/src/index.stories.tsx +387 -0
- package/src/index.tsx +2 -0
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Animated, StyleSheet, TextInput, View } from 'react-native';
|
|
4
|
+
import { useTheme } from '@wecareu/theme';
|
|
5
|
+
import { InputTextErrorMessage } from './InputTextErrorMessage';
|
|
6
|
+
import { InputTextIcon } from './InputTextIcon';
|
|
7
|
+
import { useShakeAnimation } from './animations/shake';
|
|
8
|
+
export const InputText = /*#__PURE__*/React.forwardRef(function InputText({
|
|
9
|
+
accessibilityRole,
|
|
10
|
+
accessibilityState,
|
|
11
|
+
accessibilityValue: accessibilityValueProp,
|
|
12
|
+
disabled = false,
|
|
13
|
+
errorMessage,
|
|
14
|
+
formatter,
|
|
15
|
+
inputError = false,
|
|
16
|
+
inputStyle,
|
|
17
|
+
leftIcon,
|
|
18
|
+
locale = 'pt',
|
|
19
|
+
maskNumber = false,
|
|
20
|
+
maxLength = 255,
|
|
21
|
+
minLength = 3,
|
|
22
|
+
nextInputRef,
|
|
23
|
+
onChangeText,
|
|
24
|
+
onSubmitEditing,
|
|
25
|
+
onValidation,
|
|
26
|
+
parser,
|
|
27
|
+
placeholder,
|
|
28
|
+
readonly = false,
|
|
29
|
+
rightIcon,
|
|
30
|
+
style,
|
|
31
|
+
testID,
|
|
32
|
+
type = 'text',
|
|
33
|
+
validateOnBlur = true,
|
|
34
|
+
validationMessage,
|
|
35
|
+
validator,
|
|
36
|
+
validatorMessage,
|
|
37
|
+
value,
|
|
38
|
+
...rest
|
|
39
|
+
}, ref) {
|
|
40
|
+
const theme = useTheme();
|
|
41
|
+
const styles = React.useMemo(() => createStyles(theme), [theme]);
|
|
42
|
+
const isEditable = !(disabled || readonly);
|
|
43
|
+
const placeholderColor = theme.colors.text.tertiary;
|
|
44
|
+
const {
|
|
45
|
+
animatedStyle,
|
|
46
|
+
triggerShake
|
|
47
|
+
} = useShakeAnimation({
|
|
48
|
+
distance: theme.spacing.sm
|
|
49
|
+
});
|
|
50
|
+
const [touched, setTouched] = React.useState(false);
|
|
51
|
+
const autoConfig = React.useMemo(() => getAutoConfig({
|
|
52
|
+
locale,
|
|
53
|
+
maskNumber,
|
|
54
|
+
type
|
|
55
|
+
}), [locale, maskNumber, type]);
|
|
56
|
+
const appliedFormatter = formatter ?? autoConfig.formatter;
|
|
57
|
+
const appliedParser = parser ?? autoConfig.parser;
|
|
58
|
+
const appliedValidator = validator ?? autoConfig.validator;
|
|
59
|
+
const {
|
|
60
|
+
keyboardType: propKeyboardType,
|
|
61
|
+
secureTextEntry: propSecureTextEntry,
|
|
62
|
+
textContentType: propTextContentType,
|
|
63
|
+
onBlur: textInputOnBlur,
|
|
64
|
+
onEndEditing: textInputOnEndEditing,
|
|
65
|
+
...textInputProps
|
|
66
|
+
} = rest;
|
|
67
|
+
const appliedKeyboardType = propKeyboardType ?? autoConfig.keyboardType;
|
|
68
|
+
const appliedTextContentType = propTextContentType ?? autoConfig.textContentType;
|
|
69
|
+
const appliedSecureTextEntry = propSecureTextEntry ?? autoConfig.secureTextEntry ?? false;
|
|
70
|
+
const displayValue = React.useMemo(() => appliedFormatter ? appliedFormatter(value) : value, [appliedFormatter, value]);
|
|
71
|
+
const lengthInvalid = value.length < minLength || value.length > maxLength;
|
|
72
|
+
const validatorInvalid = appliedValidator ? !appliedValidator(value) : false;
|
|
73
|
+
const internalHasError = touched && validateOnBlur && isEditable && (lengthInvalid || validatorInvalid);
|
|
74
|
+
const shouldShowError = inputError || internalHasError;
|
|
75
|
+
const effectiveErrorMessage = inputError ? errorMessage : internalHasError ? validatorInvalid ? validatorMessage : lengthInvalid ? validationMessage : undefined : undefined;
|
|
76
|
+
const previousErrorRef = React.useRef(false);
|
|
77
|
+
React.useEffect(() => {
|
|
78
|
+
if (!validateOnBlur || !isEditable) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
if (!touched) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
onValidation?.(!internalHasError);
|
|
85
|
+
}, [internalHasError, isEditable, onValidation, touched, validateOnBlur]);
|
|
86
|
+
React.useEffect(() => {
|
|
87
|
+
if (shouldShowError && !previousErrorRef.current) {
|
|
88
|
+
triggerShake();
|
|
89
|
+
}
|
|
90
|
+
previousErrorRef.current = shouldShowError;
|
|
91
|
+
}, [shouldShowError, triggerShake]);
|
|
92
|
+
const handleChangeText = React.useCallback(text => {
|
|
93
|
+
if (!isEditable) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const parsedValue = appliedParser ? appliedParser(text) : text;
|
|
97
|
+
onChangeText(parsedValue);
|
|
98
|
+
}, [appliedParser, isEditable, onChangeText]);
|
|
99
|
+
const notifyValidIfDisabled = React.useCallback(() => {
|
|
100
|
+
if (!validateOnBlur) {
|
|
101
|
+
onValidation?.(true);
|
|
102
|
+
}
|
|
103
|
+
}, [onValidation, validateOnBlur]);
|
|
104
|
+
const handleBlur = React.useCallback(event => {
|
|
105
|
+
setTouched(true);
|
|
106
|
+
notifyValidIfDisabled();
|
|
107
|
+
textInputOnBlur?.(event);
|
|
108
|
+
}, [notifyValidIfDisabled, textInputOnBlur]);
|
|
109
|
+
const handleEndEditing = React.useCallback(event => {
|
|
110
|
+
setTouched(true);
|
|
111
|
+
notifyValidIfDisabled();
|
|
112
|
+
textInputOnEndEditing?.(event);
|
|
113
|
+
}, [notifyValidIfDisabled, textInputOnEndEditing]);
|
|
114
|
+
const handleSubmitEditing = React.useCallback(event => {
|
|
115
|
+
setTouched(true);
|
|
116
|
+
notifyValidIfDisabled();
|
|
117
|
+
onSubmitEditing?.(event);
|
|
118
|
+
if (nextInputRef?.current) {
|
|
119
|
+
nextInputRef.current.focus();
|
|
120
|
+
}
|
|
121
|
+
}, [nextInputRef, notifyValidIfDisabled, onSubmitEditing]);
|
|
122
|
+
const mergedAccessibilityState = React.useMemo(() => ({
|
|
123
|
+
...accessibilityState,
|
|
124
|
+
disabled: !isEditable,
|
|
125
|
+
invalid: shouldShowError
|
|
126
|
+
}), [accessibilityState, isEditable, shouldShowError]);
|
|
127
|
+
const mergedAccessibilityValue = React.useMemo(() => ({
|
|
128
|
+
...accessibilityValueProp,
|
|
129
|
+
max: maxLength,
|
|
130
|
+
min: minLength,
|
|
131
|
+
now: value.length
|
|
132
|
+
}), [accessibilityValueProp, maxLength, minLength, value]);
|
|
133
|
+
const role = accessibilityRole ?? 'text';
|
|
134
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
135
|
+
style: styles.wrapper
|
|
136
|
+
}, /*#__PURE__*/React.createElement(Animated.View, {
|
|
137
|
+
accessible: false,
|
|
138
|
+
style: [styles.container, !isEditable && styles.containerDisabled, shouldShowError && styles.containerError, animatedStyle, style],
|
|
139
|
+
testID: testID
|
|
140
|
+
}, leftIcon ? /*#__PURE__*/React.createElement(View, {
|
|
141
|
+
style: styles.iconLeft
|
|
142
|
+
}, /*#__PURE__*/React.createElement(InputTextIcon, leftIcon)) : null, /*#__PURE__*/React.createElement(TextInput, _extends({}, textInputProps, {
|
|
143
|
+
accessibilityRole: role,
|
|
144
|
+
accessibilityState: mergedAccessibilityState,
|
|
145
|
+
accessibilityValue: mergedAccessibilityValue,
|
|
146
|
+
editable: isEditable,
|
|
147
|
+
keyboardType: appliedKeyboardType,
|
|
148
|
+
maxLength: maxLength,
|
|
149
|
+
onBlur: handleBlur,
|
|
150
|
+
onChangeText: handleChangeText,
|
|
151
|
+
onEndEditing: handleEndEditing,
|
|
152
|
+
onSubmitEditing: handleSubmitEditing,
|
|
153
|
+
placeholder: placeholder,
|
|
154
|
+
placeholderTextColor: placeholderColor,
|
|
155
|
+
ref: ref,
|
|
156
|
+
secureTextEntry: appliedSecureTextEntry,
|
|
157
|
+
selectionColor: theme.colors.brand.primary,
|
|
158
|
+
style: [styles.input, !isEditable && styles.inputDisabled, inputStyle],
|
|
159
|
+
textContentType: appliedTextContentType,
|
|
160
|
+
value: displayValue
|
|
161
|
+
})), rightIcon ? /*#__PURE__*/React.createElement(View, {
|
|
162
|
+
style: styles.iconRight
|
|
163
|
+
}, /*#__PURE__*/React.createElement(InputTextIcon, rightIcon)) : null), /*#__PURE__*/React.createElement(InputTextErrorMessage, {
|
|
164
|
+
message: shouldShowError ? effectiveErrorMessage : undefined,
|
|
165
|
+
testID: effectiveErrorMessage ? `${testID ?? 'input-text'}-error` : undefined
|
|
166
|
+
}));
|
|
167
|
+
});
|
|
168
|
+
function createStyles(theme) {
|
|
169
|
+
return StyleSheet.create({
|
|
170
|
+
container: {
|
|
171
|
+
alignItems: 'center',
|
|
172
|
+
backgroundColor: 'transparent',
|
|
173
|
+
borderColor: theme.colors.brand.primary,
|
|
174
|
+
borderRadius: theme.radius.xxl,
|
|
175
|
+
borderWidth: 1,
|
|
176
|
+
flexDirection: 'row',
|
|
177
|
+
paddingHorizontal: theme.spacing.md,
|
|
178
|
+
paddingVertical: theme.spacing.sm,
|
|
179
|
+
width: '100%'
|
|
180
|
+
},
|
|
181
|
+
containerDisabled: {
|
|
182
|
+
backgroundColor: theme.colors.surface.disabled,
|
|
183
|
+
borderColor: theme.colors.border.disabled
|
|
184
|
+
},
|
|
185
|
+
containerError: {
|
|
186
|
+
borderColor: theme.colors.status.error
|
|
187
|
+
},
|
|
188
|
+
iconLeft: {
|
|
189
|
+
marginRight: theme.spacing.xs
|
|
190
|
+
},
|
|
191
|
+
iconRight: {
|
|
192
|
+
marginLeft: theme.spacing.xs
|
|
193
|
+
},
|
|
194
|
+
input: {
|
|
195
|
+
color: theme.colors.text.primary,
|
|
196
|
+
flex: 1,
|
|
197
|
+
fontFamily: theme.typography.fontFamily.body,
|
|
198
|
+
fontSize: theme.typography.fontSize.md,
|
|
199
|
+
lineHeight: theme.typography.lineHeight.bodySmall,
|
|
200
|
+
textAlign: 'center'
|
|
201
|
+
},
|
|
202
|
+
inputDisabled: {
|
|
203
|
+
color: theme.colors.text.disabled
|
|
204
|
+
},
|
|
205
|
+
wrapper: {
|
|
206
|
+
width: '100%'
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
function getAutoConfig({
|
|
211
|
+
locale,
|
|
212
|
+
maskNumber,
|
|
213
|
+
type
|
|
214
|
+
}) {
|
|
215
|
+
switch (type) {
|
|
216
|
+
case 'email':
|
|
217
|
+
return {
|
|
218
|
+
keyboardType: 'email-address',
|
|
219
|
+
textContentType: 'emailAddress',
|
|
220
|
+
validator: validateEmail
|
|
221
|
+
};
|
|
222
|
+
case 'password':
|
|
223
|
+
return {
|
|
224
|
+
secureTextEntry: true,
|
|
225
|
+
textContentType: 'password'
|
|
226
|
+
};
|
|
227
|
+
case 'number':
|
|
228
|
+
return {
|
|
229
|
+
formatter: maskNumber ? value => formatNumber(value, locale) : undefined,
|
|
230
|
+
keyboardType: 'numeric',
|
|
231
|
+
parser: maskNumber ? input => parseNumberInput(input) : input => sanitizeDigits(input)
|
|
232
|
+
};
|
|
233
|
+
case 'url':
|
|
234
|
+
return {
|
|
235
|
+
keyboardType: 'url',
|
|
236
|
+
textContentType: 'URL',
|
|
237
|
+
validator: validateUrl
|
|
238
|
+
};
|
|
239
|
+
case 'tel':
|
|
240
|
+
return {
|
|
241
|
+
formatter: value => formatTel(value, locale),
|
|
242
|
+
keyboardType: 'phone-pad',
|
|
243
|
+
parser: input => parseTelInput(input, locale),
|
|
244
|
+
textContentType: 'telephoneNumber',
|
|
245
|
+
validator: value => validateTel(value, locale)
|
|
246
|
+
};
|
|
247
|
+
default:
|
|
248
|
+
return {};
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
function sanitizeDigits(value) {
|
|
252
|
+
return value.replace(/\D/g, '');
|
|
253
|
+
}
|
|
254
|
+
function formatNumber(value, locale) {
|
|
255
|
+
const digits = sanitizeDigits(value);
|
|
256
|
+
if (!digits) {
|
|
257
|
+
return '';
|
|
258
|
+
}
|
|
259
|
+
const reversed = digits.split('').reverse();
|
|
260
|
+
const groups = [];
|
|
261
|
+
for (let i = 0; i < reversed.length; i += 3) {
|
|
262
|
+
groups.push(reversed.slice(i, i + 3).reverse().join(''));
|
|
263
|
+
}
|
|
264
|
+
const separator = locale === 'pt' ? '.' : ',';
|
|
265
|
+
return groups.reverse().join(separator);
|
|
266
|
+
}
|
|
267
|
+
function parseNumberInput(input) {
|
|
268
|
+
return sanitizeDigits(input);
|
|
269
|
+
}
|
|
270
|
+
function formatTel(value, locale) {
|
|
271
|
+
const digits = sanitizeDigits(value);
|
|
272
|
+
if (!digits) {
|
|
273
|
+
return '';
|
|
274
|
+
}
|
|
275
|
+
if (locale === 'en') {
|
|
276
|
+
const cc = digits.slice(0, 1);
|
|
277
|
+
const area = digits.slice(1, 4);
|
|
278
|
+
const first = digits.slice(4, 7);
|
|
279
|
+
const last = digits.slice(7, 11);
|
|
280
|
+
let result = cc ? `+${cc}` : '+';
|
|
281
|
+
if (area) {
|
|
282
|
+
result += ` (${area}`;
|
|
283
|
+
if (area.length === 3) {
|
|
284
|
+
result += ')';
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
if (first) {
|
|
288
|
+
result += area.length < 3 ? ')' : '';
|
|
289
|
+
result += ` ${first}`;
|
|
290
|
+
}
|
|
291
|
+
if (last) {
|
|
292
|
+
result += `-${last}`;
|
|
293
|
+
}
|
|
294
|
+
return result.trim();
|
|
295
|
+
}
|
|
296
|
+
const cc = digits.slice(0, 2);
|
|
297
|
+
const area = digits.slice(2, 4);
|
|
298
|
+
const withoutArea = digits.slice(4);
|
|
299
|
+
let result = cc ? `+${cc}` : '+';
|
|
300
|
+
if (area) {
|
|
301
|
+
result += ` (${area}`;
|
|
302
|
+
if (area.length === 2) {
|
|
303
|
+
result += ')';
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
if (withoutArea.length >= 5) {
|
|
307
|
+
result += area.length < 2 ? ')' : '';
|
|
308
|
+
const firstBlock = withoutArea.slice(0, withoutArea.length - 4);
|
|
309
|
+
const lastBlock = withoutArea.slice(-4);
|
|
310
|
+
result += ` ${firstBlock}-${lastBlock}`;
|
|
311
|
+
} else if (withoutArea) {
|
|
312
|
+
result += area.length < 2 ? ')' : '';
|
|
313
|
+
result += ` ${withoutArea}`;
|
|
314
|
+
}
|
|
315
|
+
return result.trim();
|
|
316
|
+
}
|
|
317
|
+
function parseTelInput(input, locale) {
|
|
318
|
+
const digits = sanitizeDigits(input);
|
|
319
|
+
const limit = locale === 'en' ? 11 : 13;
|
|
320
|
+
return digits.slice(0, limit);
|
|
321
|
+
}
|
|
322
|
+
function validateEmail(value) {
|
|
323
|
+
if (!value) {
|
|
324
|
+
return false;
|
|
325
|
+
}
|
|
326
|
+
const regex = /.+@.+\..+/;
|
|
327
|
+
return regex.test(value);
|
|
328
|
+
}
|
|
329
|
+
function validateUrl(value) {
|
|
330
|
+
if (!value) {
|
|
331
|
+
return false;
|
|
332
|
+
}
|
|
333
|
+
const regex = /^(https?:\/\/).+/i;
|
|
334
|
+
return regex.test(value);
|
|
335
|
+
}
|
|
336
|
+
function validateTel(value, locale) {
|
|
337
|
+
const digits = sanitizeDigits(value);
|
|
338
|
+
if (locale === 'en') {
|
|
339
|
+
return digits.length === 11;
|
|
340
|
+
}
|
|
341
|
+
return digits.length >= 12 && digits.length <= 13;
|
|
342
|
+
}
|
|
343
|
+
//# sourceMappingURL=InputText.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Animated","StyleSheet","TextInput","View","useTheme","InputTextErrorMessage","InputTextIcon","useShakeAnimation","InputText","forwardRef","accessibilityRole","accessibilityState","accessibilityValue","accessibilityValueProp","disabled","errorMessage","formatter","inputError","inputStyle","leftIcon","locale","maskNumber","maxLength","minLength","nextInputRef","onChangeText","onSubmitEditing","onValidation","parser","placeholder","readonly","rightIcon","style","testID","type","validateOnBlur","validationMessage","validator","validatorMessage","value","rest","ref","theme","styles","useMemo","createStyles","isEditable","placeholderColor","colors","text","tertiary","animatedStyle","triggerShake","distance","spacing","sm","touched","setTouched","useState","autoConfig","getAutoConfig","appliedFormatter","appliedParser","appliedValidator","keyboardType","propKeyboardType","secureTextEntry","propSecureTextEntry","textContentType","propTextContentType","onBlur","textInputOnBlur","onEndEditing","textInputOnEndEditing","textInputProps","appliedKeyboardType","appliedTextContentType","appliedSecureTextEntry","displayValue","lengthInvalid","length","validatorInvalid","internalHasError","shouldShowError","effectiveErrorMessage","undefined","previousErrorRef","useRef","useEffect","current","handleChangeText","useCallback","parsedValue","notifyValidIfDisabled","handleBlur","event","handleEndEditing","handleSubmitEditing","focus","mergedAccessibilityState","invalid","mergedAccessibilityValue","max","min","now","role","createElement","wrapper","accessible","container","containerDisabled","containerError","iconLeft","_extends","editable","placeholderTextColor","selectionColor","brand","primary","input","inputDisabled","iconRight","message","create","alignItems","backgroundColor","borderColor","borderRadius","radius","xxl","borderWidth","flexDirection","paddingHorizontal","md","paddingVertical","width","surface","border","status","error","marginRight","xs","marginLeft","color","flex","fontFamily","typography","body","fontSize","lineHeight","bodySmall","textAlign","validateEmail","formatNumber","parseNumberInput","sanitizeDigits","validateUrl","formatTel","parseTelInput","validateTel","replace","digits","reversed","split","reverse","groups","i","push","slice","join","separator","cc","area","first","last","result","trim","withoutArea","firstBlock","lastBlock","limit","regex","test"],"sourceRoot":"..\\..\\src","sources":["InputText.tsx"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,QAAQ,EAAEC,UAAU,EAAEC,SAAS,EAAEC,IAAI,QAAQ,cAAc;AAGpE,SAASC,QAAQ,QAAQ,gBAAgB;AAIzC,SAASC,qBAAqB,QAAQ,yBAAyB;AAC/D,SAASC,aAAa,QAAQ,iBAAiB;AAC/C,SAASC,iBAAiB,QAAQ,oBAAoB;AAWtD,OAAO,MAAMC,SAAS,gBAAGT,KAAK,CAACU,UAAU,CAA4B,SAASD,SAASA,CACrF;EACEE,iBAAiB;EACjBC,kBAAkB;EAClBC,kBAAkB,EAAEC,sBAAsB;EAC1CC,QAAQ,GAAG,KAAK;EAChBC,YAAY;EACZC,SAAS;EACTC,UAAU,GAAG,KAAK;EAClBC,UAAU;EACVC,QAAQ;EACRC,MAAM,GAAG,IAAI;EACbC,UAAU,GAAG,KAAK;EAClBC,SAAS,GAAG,GAAG;EACfC,SAAS,GAAG,CAAC;EACbC,YAAY;EACZC,YAAY;EACZC,eAAe;EACfC,YAAY;EACZC,MAAM;EACNC,WAAW;EACXC,QAAQ,GAAG,KAAK;EAChBC,SAAS;EACTC,KAAK;EACLC,MAAM;EACNC,IAAI,GAAG,MAAM;EACbC,cAAc,GAAG,IAAI;EACrBC,iBAAiB;EACjBC,SAAS;EACTC,gBAAgB;EAChBC,KAAK;EACL,GAAGC;AACW,CAAC,EACjBC,GAAG,EACH;EACA,MAAMC,KAAK,GAAGtC,QAAQ,CAAC,CAAC;EACxB,MAAMuC,MAAM,GAAG5C,KAAK,CAAC6C,OAAO,CAAC,MAAMC,YAAY,CAACH,KAAK,CAAC,EAAE,CAACA,KAAK,CAAC,CAAC;EAChE,MAAMI,UAAU,GAAG,EAAEhC,QAAQ,IAAIgB,QAAQ,CAAC;EAC1C,MAAMiB,gBAAgB,GAAGL,KAAK,CAACM,MAAM,CAACC,IAAI,CAACC,QAAQ;EACnD,MAAM;IAAEC,aAAa;IAAEC;EAAa,CAAC,GAAG7C,iBAAiB,CAAC;IACxD8C,QAAQ,EAAEX,KAAK,CAACY,OAAO,CAACC;EAC1B,CAAC,CAAC;EACF,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAG1D,KAAK,CAAC2D,QAAQ,CAAC,KAAK,CAAC;EAEnD,MAAMC,UAAU,GAAG5D,KAAK,CAAC6C,OAAO,CAAC,MAAMgB,aAAa,CAAC;IAAExC,MAAM;IAAEC,UAAU;IAAEa;EAAK,CAAC,CAAC,EAAE,CAACd,MAAM,EAAEC,UAAU,EAAEa,IAAI,CAAC,CAAC;EAE/G,MAAM2B,gBAAgB,GAAG7C,SAAS,IAAI2C,UAAU,CAAC3C,SAAS;EAC1D,MAAM8C,aAAa,GAAGlC,MAAM,IAAI+B,UAAU,CAAC/B,MAAM;EACjD,MAAMmC,gBAAgB,GAAG1B,SAAS,IAAIsB,UAAU,CAACtB,SAAS;EAE1D,MAAM;IACJ2B,YAAY,EAAEC,gBAAgB;IAC9BC,eAAe,EAAEC,mBAAmB;IACpCC,eAAe,EAAEC,mBAAmB;IACpCC,MAAM,EAAEC,eAAe;IACvBC,YAAY,EAAEC,qBAAqB;IACnC,GAAGC;EACL,CAAC,GAAGlC,IAAsB;EAE1B,MAAMmC,mBAAmB,GAAGV,gBAAgB,IAAIN,UAAU,CAACK,YAAY;EACvE,MAAMY,sBAAsB,GAAGP,mBAAmB,IAAIV,UAAU,CAACS,eAAe;EAChF,MAAMS,sBAAsB,GAAGV,mBAAmB,IAAIR,UAAU,CAACO,eAAe,IAAI,KAAK;EAEzF,MAAMY,YAAY,GAAG/E,KAAK,CAAC6C,OAAO,CAChC,MAAOiB,gBAAgB,GAAGA,gBAAgB,CAACtB,KAAK,CAAC,GAAGA,KAAM,EAC1D,CAACsB,gBAAgB,EAAEtB,KAAK,CAC1B,CAAC;EAED,MAAMwC,aAAa,GAAGxC,KAAK,CAACyC,MAAM,GAAGzD,SAAS,IAAIgB,KAAK,CAACyC,MAAM,GAAG1D,SAAS;EAC1E,MAAM2D,gBAAgB,GAAGlB,gBAAgB,GAAG,CAACA,gBAAgB,CAACxB,KAAK,CAAC,GAAG,KAAK;EAC5E,MAAM2C,gBAAgB,GAAG1B,OAAO,IAAIrB,cAAc,IAAIW,UAAU,KAAKiC,aAAa,IAAIE,gBAAgB,CAAC;EAEvG,MAAME,eAAe,GAAGlE,UAAU,IAAIiE,gBAAgB;EACtD,MAAME,qBAAqB,GAAGnE,UAAU,GACpCF,YAAY,GACZmE,gBAAgB,GACdD,gBAAgB,GACd3C,gBAAgB,GAChByC,aAAa,GACX3C,iBAAiB,GACjBiD,SAAS,GACbA,SAAS;EAEf,MAAMC,gBAAgB,GAAGvF,KAAK,CAACwF,MAAM,CAAC,KAAK,CAAC;EAE5CxF,KAAK,CAACyF,SAAS,CAAC,MAAM;IACpB,IAAI,CAACrD,cAAc,IAAI,CAACW,UAAU,EAAE;MAClC;IACF;IACA,IAAI,CAACU,OAAO,EAAE;MACZ;IACF;IACA7B,YAAY,GAAG,CAACuD,gBAAgB,CAAC;EACnC,CAAC,EAAE,CAACA,gBAAgB,EAAEpC,UAAU,EAAEnB,YAAY,EAAE6B,OAAO,EAAErB,cAAc,CAAC,CAAC;EAEzEpC,KAAK,CAACyF,SAAS,CAAC,MAAM;IACpB,IAAIL,eAAe,IAAI,CAACG,gBAAgB,CAACG,OAAO,EAAE;MAChDrC,YAAY,CAAC,CAAC;IAChB;IACAkC,gBAAgB,CAACG,OAAO,GAAGN,eAAe;EAC5C,CAAC,EAAE,CAACA,eAAe,EAAE/B,YAAY,CAAC,CAAC;EAEnC,MAAMsC,gBAAgB,GAAG3F,KAAK,CAAC4F,WAAW,CACvC1C,IAAY,IAAK;IAChB,IAAI,CAACH,UAAU,EAAE;MACf;IACF;IAEA,MAAM8C,WAAW,GAAG9B,aAAa,GAAGA,aAAa,CAACb,IAAI,CAAC,GAAGA,IAAI;IAC9DxB,YAAY,CAACmE,WAAW,CAAC;EAC3B,CAAC,EACD,CAAC9B,aAAa,EAAEhB,UAAU,EAAErB,YAAY,CAC1C,CAAC;EAED,MAAMoE,qBAAqB,GAAG9F,KAAK,CAAC4F,WAAW,CAAC,MAAM;IACpD,IAAI,CAACxD,cAAc,EAAE;MACnBR,YAAY,GAAG,IAAI,CAAC;IACtB;EACF,CAAC,EAAE,CAACA,YAAY,EAAEQ,cAAc,CAAC,CAAC;EAElC,MAAM2D,UAAU,GAAG/F,KAAK,CAAC4F,WAAW,CACjCI,KAA2D,IAAK;IAC/DtC,UAAU,CAAC,IAAI,CAAC;IAChBoC,qBAAqB,CAAC,CAAC;IACvBtB,eAAe,GAAGwB,KAAK,CAAC;EAC1B,CAAC,EACD,CAACF,qBAAqB,EAAEtB,eAAe,CACzC,CAAC;EAED,MAAMyB,gBAAgB,GAAGjG,KAAK,CAAC4F,WAAW,CACvCI,KAAiE,IAAK;IACrEtC,UAAU,CAAC,IAAI,CAAC;IAChBoC,qBAAqB,CAAC,CAAC;IACvBpB,qBAAqB,GAAGsB,KAAK,CAAC;EAChC,CAAC,EACD,CAACF,qBAAqB,EAAEpB,qBAAqB,CAC/C,CAAC;EAED,MAAMwB,mBAAmB,GAAGlG,KAAK,CAAC4F,WAAW,CAC1CI,KAAyD,IAAK;IAC7DtC,UAAU,CAAC,IAAI,CAAC;IAChBoC,qBAAqB,CAAC,CAAC;IAEvBnE,eAAe,GAAGqE,KAAK,CAAC;IAExB,IAAIvE,YAAY,EAAEiE,OAAO,EAAE;MACzBjE,YAAY,CAACiE,OAAO,CAACS,KAAK,CAAC,CAAC;IAC9B;EACF,CAAC,EACD,CAAC1E,YAAY,EAAEqE,qBAAqB,EAAEnE,eAAe,CACvD,CAAC;EAED,MAAMyE,wBAAwB,GAAGpG,KAAK,CAAC6C,OAAO,CAC5C,OAAO;IACL,GAAGjC,kBAAkB;IACrBG,QAAQ,EAAE,CAACgC,UAAU;IACrBsD,OAAO,EAAEjB;EACX,CAAC,CAAC,EACF,CAACxE,kBAAkB,EAAEmC,UAAU,EAAEqC,eAAe,CAClD,CAAC;EAED,MAAMkB,wBAAwB,GAAGtG,KAAK,CAAC6C,OAAO,CAC5C,OAAO;IACL,GAAG/B,sBAAsB;IACzByF,GAAG,EAAEhF,SAAS;IACdiF,GAAG,EAAEhF,SAAS;IACdiF,GAAG,EAAEjE,KAAK,CAACyC;EACb,CAAC,CAAC,EACF,CAACnE,sBAAsB,EAAES,SAAS,EAAEC,SAAS,EAAEgB,KAAK,CACtD,CAAC;EAED,MAAMkE,IAAI,GAAG/F,iBAAiB,IAAI,MAAM;EAExC,oBACEX,KAAA,CAAA2G,aAAA,CAACvG,IAAI;IAAC6B,KAAK,EAAEW,MAAM,CAACgE;EAAQ,gBAC1B5G,KAAA,CAAA2G,aAAA,CAAC1G,QAAQ,CAACG,IAAI;IACZyG,UAAU,EAAE,KAAM;IAClB5E,KAAK,EAAE,CACLW,MAAM,CAACkE,SAAS,EAChB,CAAC/D,UAAU,IAAIH,MAAM,CAACmE,iBAAiB,EACvC3B,eAAe,IAAIxC,MAAM,CAACoE,cAAc,EACxC5D,aAAa,EACbnB,KAAK,CACL;IACFC,MAAM,EAAEA;EAAO,GAEdd,QAAQ,gBACPpB,KAAA,CAAA2G,aAAA,CAACvG,IAAI;IAAC6B,KAAK,EAAEW,MAAM,CAACqE;EAAS,gBAC3BjH,KAAA,CAAA2G,aAAA,CAACpG,aAAa,EAAKa,QAAW,CAC1B,CAAC,GACL,IAAI,eAERpB,KAAA,CAAA2G,aAAA,CAACxG,SAAS,EAAA+G,QAAA,KACJvC,cAAc;IAClBhE,iBAAiB,EAAE+F,IAAK;IACxB9F,kBAAkB,EAAEwF,wBAAyB;IAC7CvF,kBAAkB,EAAEyF,wBAAyB;IAC7Ca,QAAQ,EAAEpE,UAAW;IACrBkB,YAAY,EAAEW,mBAAoB;IAClCrD,SAAS,EAAEA,SAAU;IACrBgD,MAAM,EAAEwB,UAAW;IACnBrE,YAAY,EAAEiE,gBAAiB;IAC/BlB,YAAY,EAAEwB,gBAAiB;IAC/BtE,eAAe,EAAEuE,mBAAoB;IACrCpE,WAAW,EAAEA,WAAY;IACzBsF,oBAAoB,EAAEpE,gBAAiB;IACvCN,GAAG,EAAEA,GAAI;IACTyB,eAAe,EAAEW,sBAAuB;IACxCuC,cAAc,EAAE1E,KAAK,CAACM,MAAM,CAACqE,KAAK,CAACC,OAAQ;IAC3CtF,KAAK,EAAE,CAACW,MAAM,CAAC4E,KAAK,EAAE,CAACzE,UAAU,IAAIH,MAAM,CAAC6E,aAAa,EAAEtG,UAAU,CAAE;IACvEkD,eAAe,EAAEQ,sBAAuB;IACxCrC,KAAK,EAAEuC;EAAa,EACrB,CAAC,EAED/C,SAAS,gBACRhC,KAAA,CAAA2G,aAAA,CAACvG,IAAI;IAAC6B,KAAK,EAAEW,MAAM,CAAC8E;EAAU,gBAC5B1H,KAAA,CAAA2G,aAAA,CAACpG,aAAa,EAAKyB,SAAY,CAC3B,CAAC,GACL,IACS,CAAC,eAEhBhC,KAAA,CAAA2G,aAAA,CAACrG,qBAAqB;IACpBqH,OAAO,EAAEvC,eAAe,GAAGC,qBAAqB,GAAGC,SAAU;IAC7DpD,MAAM,EAAEmD,qBAAqB,GAAG,GAAGnD,MAAM,IAAI,YAAY,QAAQ,GAAGoD;EAAU,CAC/E,CACG,CAAC;AAEX,CAAC,CAAC;AAEF,SAASxC,YAAYA,CAACH,KAAY,EAAE;EAClC,OAAOzC,UAAU,CAAC0H,MAAM,CAAC;IACvBd,SAAS,EAAE;MACTe,UAAU,EAAE,QAAQ;MACpBC,eAAe,EAAE,aAAa;MAC9BC,WAAW,EAAEpF,KAAK,CAACM,MAAM,CAACqE,KAAK,CAACC,OAAO;MACvCS,YAAY,EAAErF,KAAK,CAACsF,MAAM,CAACC,GAAG;MAC9BC,WAAW,EAAE,CAAC;MACdC,aAAa,EAAE,KAAK;MACpBC,iBAAiB,EAAE1F,KAAK,CAACY,OAAO,CAAC+E,EAAE;MACnCC,eAAe,EAAE5F,KAAK,CAACY,OAAO,CAACC,EAAE;MACjCgF,KAAK,EAAE;IACT,CAAC;IACDzB,iBAAiB,EAAE;MACjBe,eAAe,EAAEnF,KAAK,CAACM,MAAM,CAACwF,OAAO,CAAC1H,QAAQ;MAC9CgH,WAAW,EAAEpF,KAAK,CAACM,MAAM,CAACyF,MAAM,CAAC3H;IACnC,CAAC;IACDiG,cAAc,EAAE;MACde,WAAW,EAAEpF,KAAK,CAACM,MAAM,CAAC0F,MAAM,CAACC;IACnC,CAAC;IACD3B,QAAQ,EAAE;MACR4B,WAAW,EAAElG,KAAK,CAACY,OAAO,CAACuF;IAC7B,CAAC;IACDpB,SAAS,EAAE;MACTqB,UAAU,EAAEpG,KAAK,CAACY,OAAO,CAACuF;IAC5B,CAAC;IACDtB,KAAK,EAAE;MACLwB,KAAK,EAAErG,KAAK,CAACM,MAAM,CAACC,IAAI,CAACqE,OAAO;MAChC0B,IAAI,EAAE,CAAC;MACPC,UAAU,EAAEvG,KAAK,CAACwG,UAAU,CAACD,UAAU,CAACE,IAAI;MAC5CC,QAAQ,EAAE1G,KAAK,CAACwG,UAAU,CAACE,QAAQ,CAACf,EAAE;MACtCgB,UAAU,EAAE3G,KAAK,CAACwG,UAAU,CAACG,UAAU,CAACC,SAAS;MACjDC,SAAS,EAAE;IACb,CAAC;IACD/B,aAAa,EAAE;MACbuB,KAAK,EAAErG,KAAK,CAACM,MAAM,CAACC,IAAI,CAACnC;IAC3B,CAAC;IACD6F,OAAO,EAAE;MACP4B,KAAK,EAAE;IACT;EACF,CAAC,CAAC;AACJ;AAQA,SAAS3E,aAAaA,CAAC;EAAExC,MAAM;EAAEC,UAAU;EAAEa;AAAwB,CAAC,EAAc;EAClF,QAAQA,IAAI;IACV,KAAK,OAAO;MACV,OAAO;QACL8B,YAAY,EAAE,eAAe;QAC7BI,eAAe,EAAE,cAAc;QAC/B/B,SAAS,EAAEmH;MACb,CAAC;IACH,KAAK,UAAU;MACb,OAAO;QACLtF,eAAe,EAAE,IAAI;QACrBE,eAAe,EAAE;MACnB,CAAC;IACH,KAAK,QAAQ;MACX,OAAO;QACLpD,SAAS,EAAEK,UAAU,GAAGkB,KAAK,IAAIkH,YAAY,CAAClH,KAAK,EAAEnB,MAAM,CAAC,GAAGiE,SAAS;QACxErB,YAAY,EAAE,SAAS;QACvBpC,MAAM,EAAEP,UAAU,GAAGkG,KAAK,IAAImC,gBAAgB,CAACnC,KAAK,CAAC,GAAGA,KAAK,IAAIoC,cAAc,CAACpC,KAAK;MACvF,CAAC;IACH,KAAK,KAAK;MACR,OAAO;QACLvD,YAAY,EAAE,KAAK;QACnBI,eAAe,EAAE,KAAK;QACtB/B,SAAS,EAAEuH;MACb,CAAC;IACH,KAAK,KAAK;MACR,OAAO;QACL5I,SAAS,EAAEuB,KAAK,IAAIsH,SAAS,CAACtH,KAAK,EAAEnB,MAAM,CAAC;QAC5C4C,YAAY,EAAE,WAAW;QACzBpC,MAAM,EAAE2F,KAAK,IAAIuC,aAAa,CAACvC,KAAK,EAAEnG,MAAM,CAAC;QAC7CgD,eAAe,EAAE,iBAAiB;QAClC/B,SAAS,EAAEE,KAAK,IAAIwH,WAAW,CAACxH,KAAK,EAAEnB,MAAM;MAC/C,CAAC;IACH;MACE,OAAO,CAAC,CAAC;EACb;AACF;AAEA,SAASuI,cAAcA,CAACpH,KAAa,EAAU;EAC7C,OAAOA,KAAK,CAACyH,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AACjC;AAEA,SAASP,YAAYA,CAAClH,KAAa,EAAEnB,MAAuB,EAAU;EACpE,MAAM6I,MAAM,GAAGN,cAAc,CAACpH,KAAK,CAAC;EACpC,IAAI,CAAC0H,MAAM,EAAE;IACX,OAAO,EAAE;EACX;EAEA,MAAMC,QAAQ,GAAGD,MAAM,CAACE,KAAK,CAAC,EAAE,CAAC,CAACC,OAAO,CAAC,CAAC;EAC3C,MAAMC,MAAgB,GAAG,EAAE;EAE3B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,QAAQ,CAAClF,MAAM,EAAEsF,CAAC,IAAI,CAAC,EAAE;IAC3CD,MAAM,CAACE,IAAI,CACTL,QAAQ,CACLM,KAAK,CAACF,CAAC,EAAEA,CAAC,GAAG,CAAC,CAAC,CACfF,OAAO,CAAC,CAAC,CACTK,IAAI,CAAC,EAAE,CACZ,CAAC;EACH;EAEA,MAAMC,SAAS,GAAGtJ,MAAM,KAAK,IAAI,GAAG,GAAG,GAAG,GAAG;EAC7C,OAAOiJ,MAAM,CAACD,OAAO,CAAC,CAAC,CAACK,IAAI,CAACC,SAAS,CAAC;AACzC;AAEA,SAAShB,gBAAgBA,CAACnC,KAAa,EAAU;EAC/C,OAAOoC,cAAc,CAACpC,KAAK,CAAC;AAC9B;AAEA,SAASsC,SAASA,CAACtH,KAAa,EAAEnB,MAAuB,EAAU;EACjE,MAAM6I,MAAM,GAAGN,cAAc,CAACpH,KAAK,CAAC;EACpC,IAAI,CAAC0H,MAAM,EAAE;IACX,OAAO,EAAE;EACX;EAEA,IAAI7I,MAAM,KAAK,IAAI,EAAE;IACnB,MAAMuJ,EAAE,GAAGV,MAAM,CAACO,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7B,MAAMI,IAAI,GAAGX,MAAM,CAACO,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAC/B,MAAMK,KAAK,GAAGZ,MAAM,CAACO,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAChC,MAAMM,IAAI,GAAGb,MAAM,CAACO,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;IAEhC,IAAIO,MAAM,GAAGJ,EAAE,GAAG,IAAIA,EAAE,EAAE,GAAG,GAAG;IAChC,IAAIC,IAAI,EAAE;MACRG,MAAM,IAAI,KAAKH,IAAI,EAAE;MACrB,IAAIA,IAAI,CAAC5F,MAAM,KAAK,CAAC,EAAE;QACrB+F,MAAM,IAAI,GAAG;MACf;IACF;IACA,IAAIF,KAAK,EAAE;MACTE,MAAM,IAAIH,IAAI,CAAC5F,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE;MACpC+F,MAAM,IAAI,IAAIF,KAAK,EAAE;IACvB;IACA,IAAIC,IAAI,EAAE;MACRC,MAAM,IAAI,IAAID,IAAI,EAAE;IACtB;IACA,OAAOC,MAAM,CAACC,IAAI,CAAC,CAAC;EACtB;EAEA,MAAML,EAAE,GAAGV,MAAM,CAACO,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;EAC7B,MAAMI,IAAI,GAAGX,MAAM,CAACO,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;EAC/B,MAAMS,WAAW,GAAGhB,MAAM,CAACO,KAAK,CAAC,CAAC,CAAC;EAEnC,IAAIO,MAAM,GAAGJ,EAAE,GAAG,IAAIA,EAAE,EAAE,GAAG,GAAG;EAChC,IAAIC,IAAI,EAAE;IACRG,MAAM,IAAI,KAAKH,IAAI,EAAE;IACrB,IAAIA,IAAI,CAAC5F,MAAM,KAAK,CAAC,EAAE;MACrB+F,MAAM,IAAI,GAAG;IACf;EACF;EAEA,IAAIE,WAAW,CAACjG,MAAM,IAAI,CAAC,EAAE;IAC3B+F,MAAM,IAAIH,IAAI,CAAC5F,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE;IACpC,MAAMkG,UAAU,GAAGD,WAAW,CAACT,KAAK,CAAC,CAAC,EAAES,WAAW,CAACjG,MAAM,GAAG,CAAC,CAAC;IAC/D,MAAMmG,SAAS,GAAGF,WAAW,CAACT,KAAK,CAAC,CAAC,CAAC,CAAC;IACvCO,MAAM,IAAI,IAAIG,UAAU,IAAIC,SAAS,EAAE;EACzC,CAAC,MAAM,IAAIF,WAAW,EAAE;IACtBF,MAAM,IAAIH,IAAI,CAAC5F,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE;IACpC+F,MAAM,IAAI,IAAIE,WAAW,EAAE;EAC7B;EAEA,OAAOF,MAAM,CAACC,IAAI,CAAC,CAAC;AACtB;AAEA,SAASlB,aAAaA,CAACvC,KAAa,EAAEnG,MAAuB,EAAU;EACrE,MAAM6I,MAAM,GAAGN,cAAc,CAACpC,KAAK,CAAC;EACpC,MAAM6D,KAAK,GAAGhK,MAAM,KAAK,IAAI,GAAG,EAAE,GAAG,EAAE;EACvC,OAAO6I,MAAM,CAACO,KAAK,CAAC,CAAC,EAAEY,KAAK,CAAC;AAC/B;AAEA,SAAS5B,aAAaA,CAACjH,KAAa,EAAW;EAC7C,IAAI,CAACA,KAAK,EAAE;IACV,OAAO,KAAK;EACd;EACA,MAAM8I,KAAK,GAAG,WAAW;EACzB,OAAOA,KAAK,CAACC,IAAI,CAAC/I,KAAK,CAAC;AAC1B;AAEA,SAASqH,WAAWA,CAACrH,KAAa,EAAW;EAC3C,IAAI,CAACA,KAAK,EAAE;IACV,OAAO,KAAK;EACd;EACA,MAAM8I,KAAK,GAAG,mBAAmB;EACjC,OAAOA,KAAK,CAACC,IAAI,CAAC/I,KAAK,CAAC;AAC1B;AAEA,SAASwH,WAAWA,CAACxH,KAAa,EAAEnB,MAAuB,EAAW;EACpE,MAAM6I,MAAM,GAAGN,cAAc,CAACpH,KAAK,CAAC;EACpC,IAAInB,MAAM,KAAK,IAAI,EAAE;IACnB,OAAO6I,MAAM,CAACjF,MAAM,KAAK,EAAE;EAC7B;EACA,OAAOiF,MAAM,CAACjF,MAAM,IAAI,EAAE,IAAIiF,MAAM,CAACjF,MAAM,IAAI,EAAE;AACnD","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"..\\..\\src","sources":["InputText.types.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Text } from 'react-native';
|
|
3
|
+
import { useTheme } from '@wecareu/theme';
|
|
4
|
+
export function InputTextErrorMessage({
|
|
5
|
+
message,
|
|
6
|
+
testID
|
|
7
|
+
}) {
|
|
8
|
+
const theme = useTheme();
|
|
9
|
+
const errorTextStyle = React.useMemo(() => ({
|
|
10
|
+
color: theme.colors.status.error,
|
|
11
|
+
fontFamily: theme.typography.fontFamily.caption,
|
|
12
|
+
fontSize: theme.typography.fontSize.sm,
|
|
13
|
+
lineHeight: theme.typography.lineHeight.labelMedium,
|
|
14
|
+
marginTop: theme.spacing.xs
|
|
15
|
+
}), [theme]);
|
|
16
|
+
if (!message) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
return /*#__PURE__*/React.createElement(Text, {
|
|
20
|
+
accessibilityLiveRegion: "polite",
|
|
21
|
+
style: errorTextStyle,
|
|
22
|
+
testID: testID
|
|
23
|
+
}, message);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=InputTextErrorMessage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Text","useTheme","InputTextErrorMessage","message","testID","theme","errorTextStyle","useMemo","color","colors","status","error","fontFamily","typography","caption","fontSize","sm","lineHeight","labelMedium","marginTop","spacing","xs","createElement","accessibilityLiveRegion","style"],"sourceRoot":"..\\..\\src","sources":["InputTextErrorMessage.tsx"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,IAAI,QAAQ,cAAc;AAEnC,SAASC,QAAQ,QAAQ,gBAAgB;AAIzC,OAAO,SAASC,qBAAqBA,CAAC;EAAEC,OAAO;EAAEC;AAAmC,CAAC,EAAsB;EACzG,MAAMC,KAAK,GAAGJ,QAAQ,CAAC,CAAC;EACxB,MAAMK,cAAc,GAAGP,KAAK,CAACQ,OAAO,CAClC,OAAO;IACLC,KAAK,EAAEH,KAAK,CAACI,MAAM,CAACC,MAAM,CAACC,KAAK;IAChCC,UAAU,EAAEP,KAAK,CAACQ,UAAU,CAACD,UAAU,CAACE,OAAO;IAC/CC,QAAQ,EAAEV,KAAK,CAACQ,UAAU,CAACE,QAAQ,CAACC,EAAE;IACtCC,UAAU,EAAEZ,KAAK,CAACQ,UAAU,CAACI,UAAU,CAACC,WAAW;IACnDC,SAAS,EAAEd,KAAK,CAACe,OAAO,CAACC;EAC3B,CAAC,CAAC,EACF,CAAChB,KAAK,CACR,CAAC;EAED,IAAI,CAACF,OAAO,EAAE;IACZ,OAAO,IAAI;EACb;EAEA,oBACEJ,KAAA,CAAAuB,aAAA,CAACtB,IAAI;IAACuB,uBAAuB,EAAC,QAAQ;IAACC,KAAK,EAAElB,cAAe;IAACF,MAAM,EAAEA;EAAO,GAC1ED,OACG,CAAC;AAEX","ignoreList":[]}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Pressable, StyleSheet, TouchableOpacity, View } from 'react-native';
|
|
3
|
+
import { Icon } from '@wecareu/icons';
|
|
4
|
+
import { useTheme } from '@wecareu/theme';
|
|
5
|
+
export function InputTextIcon({
|
|
6
|
+
accessibilityLabel,
|
|
7
|
+
color,
|
|
8
|
+
name,
|
|
9
|
+
onPress,
|
|
10
|
+
size,
|
|
11
|
+
testID
|
|
12
|
+
}) {
|
|
13
|
+
const theme = useTheme();
|
|
14
|
+
const iconColor = color ?? theme.colors.text.tertiary;
|
|
15
|
+
const iconSize = size ?? theme.spacing.lg;
|
|
16
|
+
const hitSlop = React.useMemo(() => ({
|
|
17
|
+
bottom: theme.spacing.xs,
|
|
18
|
+
left: theme.spacing.xs,
|
|
19
|
+
right: theme.spacing.xs,
|
|
20
|
+
top: theme.spacing.xs
|
|
21
|
+
}), [theme.spacing.xs]);
|
|
22
|
+
if (onPress) {
|
|
23
|
+
const InteractiveComponent = Pressable ?? TouchableOpacity;
|
|
24
|
+
return /*#__PURE__*/React.createElement(InteractiveComponent, {
|
|
25
|
+
accessibilityLabel: accessibilityLabel ?? name,
|
|
26
|
+
accessibilityRole: "button",
|
|
27
|
+
hitSlop: hitSlop,
|
|
28
|
+
onPress: onPress,
|
|
29
|
+
style: styles.iconPressable,
|
|
30
|
+
testID: testID
|
|
31
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
32
|
+
color: iconColor,
|
|
33
|
+
name: name,
|
|
34
|
+
size: iconSize
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
38
|
+
accessible: false,
|
|
39
|
+
style: styles.iconWrapper,
|
|
40
|
+
testID: testID
|
|
41
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
42
|
+
accessibilityLabel: accessibilityLabel,
|
|
43
|
+
color: iconColor,
|
|
44
|
+
name: name,
|
|
45
|
+
size: iconSize
|
|
46
|
+
}));
|
|
47
|
+
}
|
|
48
|
+
const styles = StyleSheet.create({
|
|
49
|
+
iconPressable: {
|
|
50
|
+
alignItems: 'center',
|
|
51
|
+
justifyContent: 'center'
|
|
52
|
+
},
|
|
53
|
+
iconWrapper: {
|
|
54
|
+
alignItems: 'center',
|
|
55
|
+
justifyContent: 'center'
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
//# sourceMappingURL=InputTextIcon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Pressable","StyleSheet","TouchableOpacity","View","Icon","useTheme","InputTextIcon","accessibilityLabel","color","name","onPress","size","testID","theme","iconColor","colors","text","tertiary","iconSize","spacing","lg","hitSlop","useMemo","bottom","xs","left","right","top","InteractiveComponent","createElement","accessibilityRole","style","styles","iconPressable","accessible","iconWrapper","create","alignItems","justifyContent"],"sourceRoot":"..\\..\\src","sources":["InputTextIcon.tsx"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,SAAS,EAAEC,UAAU,EAAEC,gBAAgB,EAAEC,IAAI,QAAQ,cAAc;AAE5E,SAASC,IAAI,QAAQ,gBAAgB;AACrC,SAASC,QAAQ,QAAQ,gBAAgB;AAIzC,OAAO,SAASC,aAAaA,CAAC;EAC5BC,kBAAkB;EAClBC,KAAK;EACLC,IAAI;EACJC,OAAO;EACPC,IAAI;EACJC;AACkB,CAAC,EAAe;EAClC,MAAMC,KAAK,GAAGR,QAAQ,CAAC,CAAC;EAExB,MAAMS,SAAS,GAAGN,KAAK,IAAIK,KAAK,CAACE,MAAM,CAACC,IAAI,CAACC,QAAQ;EACrD,MAAMC,QAAQ,GAAGP,IAAI,IAAIE,KAAK,CAACM,OAAO,CAACC,EAAE;EACzC,MAAMC,OAAO,GAAGtB,KAAK,CAACuB,OAAO,CAC3B,OAAO;IACLC,MAAM,EAAEV,KAAK,CAACM,OAAO,CAACK,EAAE;IACxBC,IAAI,EAAEZ,KAAK,CAACM,OAAO,CAACK,EAAE;IACtBE,KAAK,EAAEb,KAAK,CAACM,OAAO,CAACK,EAAE;IACvBG,GAAG,EAAEd,KAAK,CAACM,OAAO,CAACK;EACrB,CAAC,CAAC,EACF,CAACX,KAAK,CAACM,OAAO,CAACK,EAAE,CACnB,CAAC;EAED,IAAId,OAAO,EAAE;IACX,MAAMkB,oBAAoB,GAAG5B,SAAS,IAAIE,gBAAgB;IAE1D,oBACEH,KAAA,CAAA8B,aAAA,CAACD,oBAAoB;MACnBrB,kBAAkB,EAAEA,kBAAkB,IAAIE,IAAK;MAC/CqB,iBAAiB,EAAC,QAAQ;MAC1BT,OAAO,EAAEA,OAAQ;MACjBX,OAAO,EAAEA,OAAQ;MACjBqB,KAAK,EAAEC,MAAM,CAACC,aAAc;MAC5BrB,MAAM,EAAEA;IAAO,gBAEfb,KAAA,CAAA8B,aAAA,CAACzB,IAAI;MAACI,KAAK,EAAEM,SAAU;MAACL,IAAI,EAAEA,IAAK;MAACE,IAAI,EAAEO;IAAS,CAAE,CACjC,CAAC;EAE3B;EAEA,oBACEnB,KAAA,CAAA8B,aAAA,CAAC1B,IAAI;IAAC+B,UAAU,EAAE,KAAM;IAACH,KAAK,EAAEC,MAAM,CAACG,WAAY;IAACvB,MAAM,EAAEA;EAAO,gBACjEb,KAAA,CAAA8B,aAAA,CAACzB,IAAI;IAACG,kBAAkB,EAAEA,kBAAmB;IAACC,KAAK,EAAEM,SAAU;IAACL,IAAI,EAAEA,IAAK;IAACE,IAAI,EAAEO;EAAS,CAAE,CACzF,CAAC;AAEX;AAEA,MAAMc,MAAM,GAAG/B,UAAU,CAACmC,MAAM,CAAC;EAC/BH,aAAa,EAAE;IACbI,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB,CAAC;EACDH,WAAW,EAAE;IACXE,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { useCallback, useMemo, useRef } from 'react';
|
|
2
|
+
import { Animated } from 'react-native';
|
|
3
|
+
export function useShakeAnimation({
|
|
4
|
+
distance = 6,
|
|
5
|
+
duration = 60,
|
|
6
|
+
iterations = 2
|
|
7
|
+
} = {}) {
|
|
8
|
+
const translation = useRef(new Animated.Value(0)).current;
|
|
9
|
+
const animatedStyle = useMemo(() => ({
|
|
10
|
+
transform: [{
|
|
11
|
+
translateX: translation.interpolate({
|
|
12
|
+
inputRange: [-1, -0.5, 0, 0.5, 1],
|
|
13
|
+
outputRange: [-distance, -distance / 2, 0, distance / 2, distance]
|
|
14
|
+
})
|
|
15
|
+
}]
|
|
16
|
+
}), [distance, translation]);
|
|
17
|
+
const triggerShake = useCallback(() => {
|
|
18
|
+
translation.setValue(0);
|
|
19
|
+
const animation = Animated.sequence([Animated.timing(translation, {
|
|
20
|
+
duration,
|
|
21
|
+
toValue: 1,
|
|
22
|
+
useNativeDriver: true
|
|
23
|
+
}), Animated.timing(translation, {
|
|
24
|
+
duration,
|
|
25
|
+
toValue: -1,
|
|
26
|
+
useNativeDriver: true
|
|
27
|
+
})]);
|
|
28
|
+
Animated.loop(animation, {
|
|
29
|
+
iterations
|
|
30
|
+
}).start(() => {
|
|
31
|
+
translation.setValue(0);
|
|
32
|
+
});
|
|
33
|
+
}, [duration, iterations, translation]);
|
|
34
|
+
return {
|
|
35
|
+
animatedStyle,
|
|
36
|
+
triggerShake
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=shake.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useCallback","useMemo","useRef","Animated","useShakeAnimation","distance","duration","iterations","translation","Value","current","animatedStyle","transform","translateX","interpolate","inputRange","outputRange","triggerShake","setValue","animation","sequence","timing","toValue","useNativeDriver","loop","start"],"sourceRoot":"..\\..\\..\\src","sources":["animations/shake.ts"],"mappings":"AAAA,SAASA,WAAW,EAAEC,OAAO,EAAEC,MAAM,QAAQ,OAAO;AAEpD,SAASC,QAAQ,QAAQ,cAAc;AA8BvC,OAAO,SAASC,iBAAiBA,CAAC;EAChCC,QAAQ,GAAG,CAAC;EACZC,QAAQ,GAAG,EAAE;EACbC,UAAU,GAAG;AACU,CAAC,GAAG,CAAC,CAAC,EAA2B;EACxD,MAAMC,WAAW,GAAGN,MAAM,CAAC,IAAIC,QAAQ,CAACM,KAAK,CAAC,CAAC,CAAC,CAAC,CAACC,OAAO;EAEzD,MAAMC,aAAa,GAAGV,OAAO,CAC3B,OAAO;IACLW,SAAS,EAAE,CACT;MACEC,UAAU,EAAEL,WAAW,CAACM,WAAW,CAAC;QAClCC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QACjCC,WAAW,EAAE,CAAC,CAACX,QAAQ,EAAE,CAACA,QAAQ,GAAG,CAAC,EAAE,CAAC,EAAEA,QAAQ,GAAG,CAAC,EAAEA,QAAQ;MACnE,CAAC;IACH,CAAC;EAEL,CAAC,CAAC,EACF,CAACA,QAAQ,EAAEG,WAAW,CACxB,CAAC;EAED,MAAMS,YAAY,GAAGjB,WAAW,CAAC,MAAM;IACrCQ,WAAW,CAACU,QAAQ,CAAC,CAAC,CAAC;IAEvB,MAAMC,SAAS,GAAGhB,QAAQ,CAACiB,QAAQ,CAAC,CAClCjB,QAAQ,CAACkB,MAAM,CAACb,WAAW,EAAE;MAC3BF,QAAQ;MACRgB,OAAO,EAAE,CAAC;MACVC,eAAe,EAAE;IACnB,CAAC,CAAC,EACFpB,QAAQ,CAACkB,MAAM,CAACb,WAAW,EAAE;MAC3BF,QAAQ;MACRgB,OAAO,EAAE,CAAC,CAAC;MACXC,eAAe,EAAE;IACnB,CAAC,CAAC,CACH,CAAC;IAEFpB,QAAQ,CAACqB,IAAI,CAACL,SAAS,EAAE;MAAEZ;IAAW,CAAC,CAAC,CAACkB,KAAK,CAAC,MAAM;MACnDjB,WAAW,CAACU,QAAQ,CAAC,CAAC,CAAC;IACzB,CAAC,CAAC;EACJ,CAAC,EAAE,CAACZ,QAAQ,EAAEC,UAAU,EAAEC,WAAW,CAAC,CAAC;EAEvC,OAAO;IAAEG,aAAa;IAAEM;EAAa,CAAC;AACxC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["InputText"],"sourceRoot":"..\\..\\src","sources":["index.tsx"],"mappings":"AAAA,SAASA,SAAS,QAAQ,aAAa","ignoreList":[]}
|