rn-inputforge 0.5.0 → 0.5.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 +236 -0
- package/lib/commonjs/a11y/audit.js +72 -0
- package/lib/commonjs/a11y/audit.js.map +1 -0
- package/lib/commonjs/a11y/index.js +13 -0
- package/lib/commonjs/a11y/index.js.map +1 -0
- package/lib/commonjs/autofill/index.js +25 -0
- package/lib/commonjs/autofill/index.js.map +1 -0
- package/lib/commonjs/autofill/profiles.js +199 -0
- package/lib/commonjs/autofill/profiles.js.map +1 -0
- package/lib/commonjs/components/FieldFlowA11yAudit/FieldFlowA11yAudit.js +99 -0
- package/lib/commonjs/components/FieldFlowA11yAudit/FieldFlowA11yAudit.js.map +1 -0
- package/lib/commonjs/components/FieldFlowA11yAudit/index.js +13 -0
- package/lib/commonjs/components/FieldFlowA11yAudit/index.js.map +1 -0
- package/lib/commonjs/components/FieldFlowAuthActions/FieldFlowAuthActions.js +130 -0
- package/lib/commonjs/components/FieldFlowAuthActions/FieldFlowAuthActions.js.map +1 -0
- package/lib/commonjs/components/FieldFlowAuthActions/index.js +13 -0
- package/lib/commonjs/components/FieldFlowAuthActions/index.js.map +1 -0
- package/lib/commonjs/components/FieldFlowCompleteness/FieldFlowCompleteness.js +100 -0
- package/lib/commonjs/components/FieldFlowCompleteness/FieldFlowCompleteness.js.map +1 -0
- package/lib/commonjs/components/FieldFlowCompleteness/index.js +13 -0
- package/lib/commonjs/components/FieldFlowCompleteness/index.js.map +1 -0
- package/lib/commonjs/components/FieldFlowFormHeader/FieldFlowFormHeader.js +102 -0
- package/lib/commonjs/components/FieldFlowFormHeader/FieldFlowFormHeader.js.map +1 -0
- package/lib/commonjs/components/FieldFlowFormHeader/index.js +13 -0
- package/lib/commonjs/components/FieldFlowFormHeader/index.js.map +1 -0
- package/lib/commonjs/components/FieldFlowInfoTip/FieldFlowInfoTip.js +121 -0
- package/lib/commonjs/components/FieldFlowInfoTip/FieldFlowInfoTip.js.map +1 -0
- package/lib/commonjs/components/FieldFlowInfoTip/index.js +13 -0
- package/lib/commonjs/components/FieldFlowInfoTip/index.js.map +1 -0
- package/lib/commonjs/components/FieldFlowInlineAlert/FieldFlowInlineAlert.js +142 -0
- package/lib/commonjs/components/FieldFlowInlineAlert/FieldFlowInlineAlert.js.map +1 -0
- package/lib/commonjs/components/FieldFlowInlineAlert/index.js +13 -0
- package/lib/commonjs/components/FieldFlowInlineAlert/index.js.map +1 -0
- package/lib/commonjs/components/FieldFlowInput/FieldFlowInput.js +44 -18
- package/lib/commonjs/components/FieldFlowInput/FieldFlowInput.js.map +1 -1
- package/lib/commonjs/components/FieldFlowInput/styles.js +49 -13
- package/lib/commonjs/components/FieldFlowInput/styles.js.map +1 -1
- package/lib/commonjs/components/FieldFlowKeyboardToolbar/FieldFlowKeyboardToolbar.js +137 -0
- package/lib/commonjs/components/FieldFlowKeyboardToolbar/FieldFlowKeyboardToolbar.js.map +1 -0
- package/lib/commonjs/components/FieldFlowKeyboardToolbar/index.js +19 -0
- package/lib/commonjs/components/FieldFlowKeyboardToolbar/index.js.map +1 -0
- package/lib/commonjs/components/FieldFlowSkeleton/FieldFlowSkeleton.js +101 -0
- package/lib/commonjs/components/FieldFlowSkeleton/FieldFlowSkeleton.js.map +1 -0
- package/lib/commonjs/components/FieldFlowSkeleton/index.js +13 -0
- package/lib/commonjs/components/FieldFlowSkeleton/index.js.map +1 -0
- package/lib/commonjs/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.js +6 -4
- package/lib/commonjs/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.js.map +1 -1
- package/lib/commonjs/hooks/index.js +21 -0
- package/lib/commonjs/hooks/index.js.map +1 -1
- package/lib/commonjs/hooks/useFieldFlowCompleteness.js +46 -0
- package/lib/commonjs/hooks/useFieldFlowCompleteness.js.map +1 -0
- package/lib/commonjs/hooks/useFieldFlowSubmitQueue.js +145 -0
- package/lib/commonjs/hooks/useFieldFlowSubmitQueue.js.map +1 -0
- package/lib/commonjs/hooks/useKeyboardManager.js +15 -0
- package/lib/commonjs/hooks/useKeyboardManager.js.map +1 -1
- package/lib/commonjs/hooks/useSmartPaste.js +27 -0
- package/lib/commonjs/hooks/useSmartPaste.js.map +1 -0
- package/lib/commonjs/index.js +144 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/paste/index.js +19 -0
- package/lib/commonjs/paste/index.js.map +1 -0
- package/lib/commonjs/paste/smartPaste.js +113 -0
- package/lib/commonjs/paste/smartPaste.js.map +1 -0
- package/lib/commonjs/schema/FieldFlowSchemaForm.js +219 -0
- package/lib/commonjs/schema/FieldFlowSchemaForm.js.map +1 -0
- package/lib/commonjs/schema/index.js +13 -0
- package/lib/commonjs/schema/index.js.map +1 -0
- package/lib/commonjs/schema/types.js +6 -0
- package/lib/commonjs/schema/types.js.map +1 -0
- package/lib/commonjs/theme/ThemeProvider.js +65 -4
- package/lib/commonjs/theme/ThemeProvider.js.map +1 -1
- package/lib/commonjs/theme/appearance.js +93 -0
- package/lib/commonjs/theme/appearance.js.map +1 -0
- package/lib/commonjs/theme/defaultTheme.js +17 -2
- package/lib/commonjs/theme/defaultTheme.js.map +1 -1
- package/lib/commonjs/theme/index.js +19 -0
- package/lib/commonjs/theme/index.js.map +1 -1
- package/lib/commonjs/types/globals.d.js +2 -0
- package/lib/commonjs/types/globals.d.js.map +1 -0
- package/lib/module/a11y/audit.js +68 -0
- package/lib/module/a11y/audit.js.map +1 -0
- package/lib/module/a11y/index.js +4 -0
- package/lib/module/a11y/index.js.map +1 -0
- package/lib/module/autofill/index.js +4 -0
- package/lib/module/autofill/index.js.map +1 -0
- package/lib/module/autofill/profiles.js +193 -0
- package/lib/module/autofill/profiles.js.map +1 -0
- package/lib/module/components/FieldFlowA11yAudit/FieldFlowA11yAudit.js +94 -0
- package/lib/module/components/FieldFlowA11yAudit/FieldFlowA11yAudit.js.map +1 -0
- package/lib/module/components/FieldFlowA11yAudit/index.js +4 -0
- package/lib/module/components/FieldFlowA11yAudit/index.js.map +1 -0
- package/lib/module/components/FieldFlowAuthActions/FieldFlowAuthActions.js +125 -0
- package/lib/module/components/FieldFlowAuthActions/FieldFlowAuthActions.js.map +1 -0
- package/lib/module/components/FieldFlowAuthActions/index.js +4 -0
- package/lib/module/components/FieldFlowAuthActions/index.js.map +1 -0
- package/lib/module/components/FieldFlowCompleteness/FieldFlowCompleteness.js +95 -0
- package/lib/module/components/FieldFlowCompleteness/FieldFlowCompleteness.js.map +1 -0
- package/lib/module/components/FieldFlowCompleteness/index.js +4 -0
- package/lib/module/components/FieldFlowCompleteness/index.js.map +1 -0
- package/lib/module/components/FieldFlowFormHeader/FieldFlowFormHeader.js +97 -0
- package/lib/module/components/FieldFlowFormHeader/FieldFlowFormHeader.js.map +1 -0
- package/lib/module/components/FieldFlowFormHeader/index.js +4 -0
- package/lib/module/components/FieldFlowFormHeader/index.js.map +1 -0
- package/lib/module/components/FieldFlowInfoTip/FieldFlowInfoTip.js +116 -0
- package/lib/module/components/FieldFlowInfoTip/FieldFlowInfoTip.js.map +1 -0
- package/lib/module/components/FieldFlowInfoTip/index.js +4 -0
- package/lib/module/components/FieldFlowInfoTip/index.js.map +1 -0
- package/lib/module/components/FieldFlowInlineAlert/FieldFlowInlineAlert.js +137 -0
- package/lib/module/components/FieldFlowInlineAlert/FieldFlowInlineAlert.js.map +1 -0
- package/lib/module/components/FieldFlowInlineAlert/index.js +4 -0
- package/lib/module/components/FieldFlowInlineAlert/index.js.map +1 -0
- package/lib/module/components/FieldFlowInput/FieldFlowInput.js +44 -18
- package/lib/module/components/FieldFlowInput/FieldFlowInput.js.map +1 -1
- package/lib/module/components/FieldFlowInput/styles.js +49 -13
- package/lib/module/components/FieldFlowInput/styles.js.map +1 -1
- package/lib/module/components/FieldFlowKeyboardToolbar/FieldFlowKeyboardToolbar.js +131 -0
- package/lib/module/components/FieldFlowKeyboardToolbar/FieldFlowKeyboardToolbar.js.map +1 -0
- package/lib/module/components/FieldFlowKeyboardToolbar/index.js +4 -0
- package/lib/module/components/FieldFlowKeyboardToolbar/index.js.map +1 -0
- package/lib/module/components/FieldFlowSkeleton/FieldFlowSkeleton.js +96 -0
- package/lib/module/components/FieldFlowSkeleton/FieldFlowSkeleton.js.map +1 -0
- package/lib/module/components/FieldFlowSkeleton/index.js +4 -0
- package/lib/module/components/FieldFlowSkeleton/index.js.map +1 -0
- package/lib/module/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.js +5 -3
- package/lib/module/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.js.map +1 -1
- package/lib/module/hooks/index.js +3 -0
- package/lib/module/hooks/index.js.map +1 -1
- package/lib/module/hooks/useFieldFlowCompleteness.js +42 -0
- package/lib/module/hooks/useFieldFlowCompleteness.js.map +1 -0
- package/lib/module/hooks/useFieldFlowSubmitQueue.js +141 -0
- package/lib/module/hooks/useFieldFlowSubmitQueue.js.map +1 -0
- package/lib/module/hooks/useKeyboardManager.js +15 -0
- package/lib/module/hooks/useKeyboardManager.js.map +1 -1
- package/lib/module/hooks/useSmartPaste.js +23 -0
- package/lib/module/hooks/useSmartPaste.js.map +1 -0
- package/lib/module/index.js +17 -2
- package/lib/module/index.js.map +1 -1
- package/lib/module/paste/index.js +4 -0
- package/lib/module/paste/index.js.map +1 -0
- package/lib/module/paste/smartPaste.js +108 -0
- package/lib/module/paste/smartPaste.js.map +1 -0
- package/lib/module/schema/FieldFlowSchemaForm.js +214 -0
- package/lib/module/schema/FieldFlowSchemaForm.js.map +1 -0
- package/lib/module/schema/index.js +4 -0
- package/lib/module/schema/index.js.map +1 -0
- package/lib/module/schema/types.js +4 -0
- package/lib/module/schema/types.js.map +1 -0
- package/lib/module/theme/ThemeProvider.js +66 -5
- package/lib/module/theme/ThemeProvider.js.map +1 -1
- package/lib/module/theme/appearance.js +87 -0
- package/lib/module/theme/appearance.js.map +1 -0
- package/lib/module/theme/defaultTheme.js +17 -2
- package/lib/module/theme/defaultTheme.js.map +1 -1
- package/lib/module/theme/index.js +1 -0
- package/lib/module/theme/index.js.map +1 -1
- package/lib/module/types/globals.d.js +2 -0
- package/lib/module/types/globals.d.js.map +1 -0
- package/lib/typescript/a11y/audit.d.ts +32 -0
- package/lib/typescript/a11y/audit.d.ts.map +1 -0
- package/lib/typescript/a11y/index.d.ts +3 -0
- package/lib/typescript/a11y/index.d.ts.map +1 -0
- package/lib/typescript/autofill/index.d.ts +3 -0
- package/lib/typescript/autofill/index.d.ts.map +1 -0
- package/lib/typescript/autofill/profiles.d.ts +48 -0
- package/lib/typescript/autofill/profiles.d.ts.map +1 -0
- package/lib/typescript/components/FieldFlowA11yAudit/FieldFlowA11yAudit.d.ts +21 -0
- package/lib/typescript/components/FieldFlowA11yAudit/FieldFlowA11yAudit.d.ts.map +1 -0
- package/lib/typescript/components/FieldFlowA11yAudit/index.d.ts +3 -0
- package/lib/typescript/components/FieldFlowA11yAudit/index.d.ts.map +1 -0
- package/lib/typescript/components/FieldFlowAuthActions/FieldFlowAuthActions.d.ts +29 -0
- package/lib/typescript/components/FieldFlowAuthActions/FieldFlowAuthActions.d.ts.map +1 -0
- package/lib/typescript/components/FieldFlowAuthActions/index.d.ts +3 -0
- package/lib/typescript/components/FieldFlowAuthActions/index.d.ts.map +1 -0
- package/lib/typescript/components/FieldFlowCompleteness/FieldFlowCompleteness.d.ts +25 -0
- package/lib/typescript/components/FieldFlowCompleteness/FieldFlowCompleteness.d.ts.map +1 -0
- package/lib/typescript/components/FieldFlowCompleteness/index.d.ts +3 -0
- package/lib/typescript/components/FieldFlowCompleteness/index.d.ts.map +1 -0
- package/lib/typescript/components/FieldFlowFormHeader/FieldFlowFormHeader.d.ts +23 -0
- package/lib/typescript/components/FieldFlowFormHeader/FieldFlowFormHeader.d.ts.map +1 -0
- package/lib/typescript/components/FieldFlowFormHeader/index.d.ts +3 -0
- package/lib/typescript/components/FieldFlowFormHeader/index.d.ts.map +1 -0
- package/lib/typescript/components/FieldFlowInfoTip/FieldFlowInfoTip.d.ts +19 -0
- package/lib/typescript/components/FieldFlowInfoTip/FieldFlowInfoTip.d.ts.map +1 -0
- package/lib/typescript/components/FieldFlowInfoTip/index.d.ts +3 -0
- package/lib/typescript/components/FieldFlowInfoTip/index.d.ts.map +1 -0
- package/lib/typescript/components/FieldFlowInlineAlert/FieldFlowInlineAlert.d.ts +22 -0
- package/lib/typescript/components/FieldFlowInlineAlert/FieldFlowInlineAlert.d.ts.map +1 -0
- package/lib/typescript/components/FieldFlowInlineAlert/index.d.ts +3 -0
- package/lib/typescript/components/FieldFlowInlineAlert/index.d.ts.map +1 -0
- package/lib/typescript/components/FieldFlowInput/FieldFlowInput.d.ts.map +1 -1
- package/lib/typescript/components/FieldFlowInput/styles.d.ts +36 -1
- package/lib/typescript/components/FieldFlowInput/styles.d.ts.map +1 -1
- package/lib/typescript/components/FieldFlowInput/types.d.ts +18 -0
- package/lib/typescript/components/FieldFlowInput/types.d.ts.map +1 -1
- package/lib/typescript/components/FieldFlowKeyboardToolbar/FieldFlowKeyboardToolbar.d.ts +30 -0
- package/lib/typescript/components/FieldFlowKeyboardToolbar/FieldFlowKeyboardToolbar.d.ts.map +1 -0
- package/lib/typescript/components/FieldFlowKeyboardToolbar/index.d.ts +3 -0
- package/lib/typescript/components/FieldFlowKeyboardToolbar/index.d.ts.map +1 -0
- package/lib/typescript/components/FieldFlowSkeleton/FieldFlowSkeleton.d.ts +21 -0
- package/lib/typescript/components/FieldFlowSkeleton/FieldFlowSkeleton.d.ts.map +1 -0
- package/lib/typescript/components/FieldFlowSkeleton/index.d.ts +3 -0
- package/lib/typescript/components/FieldFlowSkeleton/index.d.ts.map +1 -0
- package/lib/typescript/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.d.ts +3 -2
- package/lib/typescript/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.d.ts.map +1 -1
- package/lib/typescript/hooks/index.d.ts +6 -0
- package/lib/typescript/hooks/index.d.ts.map +1 -1
- package/lib/typescript/hooks/useFieldFlowCompleteness.d.ts +28 -0
- package/lib/typescript/hooks/useFieldFlowCompleteness.d.ts.map +1 -0
- package/lib/typescript/hooks/useFieldFlowSubmitQueue.d.ts +45 -0
- package/lib/typescript/hooks/useFieldFlowSubmitQueue.d.ts.map +1 -0
- package/lib/typescript/hooks/useKeyboardManager.d.ts +6 -0
- package/lib/typescript/hooks/useKeyboardManager.d.ts.map +1 -1
- package/lib/typescript/hooks/useSmartPaste.d.ts +14 -0
- package/lib/typescript/hooks/useSmartPaste.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +28 -4
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/paste/index.d.ts +3 -0
- package/lib/typescript/paste/index.d.ts.map +1 -0
- package/lib/typescript/paste/smartPaste.d.ts +32 -0
- package/lib/typescript/paste/smartPaste.d.ts.map +1 -0
- package/lib/typescript/schema/FieldFlowSchemaForm.d.ts +28 -0
- package/lib/typescript/schema/FieldFlowSchemaForm.d.ts.map +1 -0
- package/lib/typescript/schema/index.d.ts +4 -0
- package/lib/typescript/schema/index.d.ts.map +1 -0
- package/lib/typescript/schema/types.d.ts +43 -0
- package/lib/typescript/schema/types.d.ts.map +1 -0
- package/lib/typescript/theme/ThemeProvider.d.ts +18 -4
- package/lib/typescript/theme/ThemeProvider.d.ts.map +1 -1
- package/lib/typescript/theme/appearance.d.ts +19 -0
- package/lib/typescript/theme/appearance.d.ts.map +1 -0
- package/lib/typescript/theme/defaultTheme.d.ts.map +1 -1
- package/lib/typescript/theme/index.d.ts +1 -0
- package/lib/typescript/theme/index.d.ts.map +1 -1
- package/lib/typescript/types/index.d.ts +26 -0
- package/lib/typescript/types/index.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/a11y/audit.ts +99 -0
- package/src/a11y/index.ts +7 -0
- package/src/autofill/index.ts +10 -0
- package/src/autofill/profiles.ts +224 -0
- package/src/components/FieldFlowA11yAudit/FieldFlowA11yAudit.tsx +112 -0
- package/src/components/FieldFlowA11yAudit/index.ts +2 -0
- package/src/components/FieldFlowAuthActions/FieldFlowAuthActions.tsx +146 -0
- package/src/components/FieldFlowAuthActions/index.ts +6 -0
- package/src/components/FieldFlowCompleteness/FieldFlowCompleteness.tsx +109 -0
- package/src/components/FieldFlowCompleteness/index.ts +2 -0
- package/src/components/FieldFlowFormHeader/FieldFlowFormHeader.tsx +106 -0
- package/src/components/FieldFlowFormHeader/index.ts +2 -0
- package/src/components/FieldFlowInfoTip/FieldFlowInfoTip.tsx +120 -0
- package/src/components/FieldFlowInfoTip/index.ts +2 -0
- package/src/components/FieldFlowInlineAlert/FieldFlowInlineAlert.tsx +134 -0
- package/src/components/FieldFlowInlineAlert/index.ts +2 -0
- package/src/components/FieldFlowInput/FieldFlowInput.tsx +71 -13
- package/src/components/FieldFlowInput/styles.ts +58 -16
- package/src/components/FieldFlowInput/types.ts +21 -0
- package/src/components/FieldFlowKeyboardToolbar/FieldFlowKeyboardToolbar.tsx +150 -0
- package/src/components/FieldFlowKeyboardToolbar/index.ts +5 -0
- package/src/components/FieldFlowSkeleton/FieldFlowSkeleton.tsx +105 -0
- package/src/components/FieldFlowSkeleton/index.ts +2 -0
- package/src/components/KeyboardAwareFormWrapper/KeyboardAwareFormWrapper.tsx +8 -4
- package/src/hooks/index.ts +17 -0
- package/src/hooks/useFieldFlowCompleteness.ts +69 -0
- package/src/hooks/useFieldFlowSubmitQueue.ts +206 -0
- package/src/hooks/useKeyboardManager.ts +26 -0
- package/src/hooks/useSmartPaste.ts +33 -0
- package/src/index.ts +90 -0
- package/src/paste/index.ts +7 -0
- package/src/paste/smartPaste.ts +132 -0
- package/src/schema/FieldFlowSchemaForm.tsx +274 -0
- package/src/schema/index.ts +8 -0
- package/src/schema/types.ts +63 -0
- package/src/theme/ThemeProvider.tsx +96 -7
- package/src/theme/appearance.ts +105 -0
- package/src/theme/defaultTheme.ts +11 -0
- package/src/theme/index.ts +1 -0
- package/src/types/globals.d.ts +2 -0
- package/src/types/index.ts +28 -0
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
4
|
+
function createId() {
|
|
5
|
+
return `ffq_${Date.now()}_${Math.random().toString(36).slice(2, 9)}`;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Offline-friendly submit queue — persist failed / offline form posts and retry.
|
|
10
|
+
*/
|
|
11
|
+
export function useFieldFlowSubmitQueue({
|
|
12
|
+
key,
|
|
13
|
+
storage,
|
|
14
|
+
submit,
|
|
15
|
+
maxAttempts = 5,
|
|
16
|
+
flushOnOnline = true,
|
|
17
|
+
onSuccess,
|
|
18
|
+
onGiveUp
|
|
19
|
+
}) {
|
|
20
|
+
const [queue, setQueue] = useState([]);
|
|
21
|
+
const [isFlushing, setIsFlushing] = useState(false);
|
|
22
|
+
const [isOnline, setIsOnline] = useState(true);
|
|
23
|
+
const queueRef = useRef(queue);
|
|
24
|
+
queueRef.current = queue;
|
|
25
|
+
const hydrated = useRef(false);
|
|
26
|
+
const persist = useCallback(async next => {
|
|
27
|
+
setQueue(next);
|
|
28
|
+
queueRef.current = next;
|
|
29
|
+
if (!storage) return;
|
|
30
|
+
if (next.length === 0) await storage.removeItem(key);else await storage.setItem(key, JSON.stringify(next));
|
|
31
|
+
}, [storage, key]);
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
let cancelled = false;
|
|
34
|
+
(async () => {
|
|
35
|
+
if (!storage) {
|
|
36
|
+
hydrated.current = true;
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
try {
|
|
40
|
+
const raw = await storage.getItem(key);
|
|
41
|
+
if (cancelled || !raw) {
|
|
42
|
+
hydrated.current = true;
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const parsed = JSON.parse(raw);
|
|
46
|
+
if (!cancelled && Array.isArray(parsed)) {
|
|
47
|
+
setQueue(parsed);
|
|
48
|
+
queueRef.current = parsed;
|
|
49
|
+
}
|
|
50
|
+
} catch {
|
|
51
|
+
/* ignore corrupt */
|
|
52
|
+
} finally {
|
|
53
|
+
hydrated.current = true;
|
|
54
|
+
}
|
|
55
|
+
})();
|
|
56
|
+
return () => {
|
|
57
|
+
cancelled = true;
|
|
58
|
+
};
|
|
59
|
+
}, [storage, key]);
|
|
60
|
+
useEffect(() => {
|
|
61
|
+
// NetInfo-free: use RN global if present, else assume online
|
|
62
|
+
|
|
63
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
64
|
+
const NetInfo = globalThis.NetInfo;
|
|
65
|
+
if (!NetInfo?.addEventListener) return;
|
|
66
|
+
const sub = NetInfo.addEventListener(state => {
|
|
67
|
+
const online = state.isConnected !== false;
|
|
68
|
+
setIsOnline(online);
|
|
69
|
+
});
|
|
70
|
+
NetInfo.fetch?.().then(s => setIsOnline(s.isConnected !== false)).catch(() => undefined);
|
|
71
|
+
return () => sub?.remove();
|
|
72
|
+
}, []);
|
|
73
|
+
const flush = useCallback(async () => {
|
|
74
|
+
if (isFlushing) return;
|
|
75
|
+
setIsFlushing(true);
|
|
76
|
+
try {
|
|
77
|
+
let next = [...queueRef.current];
|
|
78
|
+
while (next.length > 0) {
|
|
79
|
+
const job = next[0];
|
|
80
|
+
try {
|
|
81
|
+
const result = await submit(job.payload);
|
|
82
|
+
if (result === false) throw new Error('Submit returned false');
|
|
83
|
+
onSuccess?.(job);
|
|
84
|
+
next = next.slice(1);
|
|
85
|
+
await persist(next);
|
|
86
|
+
} catch (err) {
|
|
87
|
+
const message = err instanceof Error ? err.message : 'Submit failed';
|
|
88
|
+
const updated = {
|
|
89
|
+
...job,
|
|
90
|
+
attempts: job.attempts + 1,
|
|
91
|
+
lastError: message
|
|
92
|
+
};
|
|
93
|
+
if (updated.attempts >= maxAttempts) {
|
|
94
|
+
onGiveUp?.(updated);
|
|
95
|
+
next = next.slice(1);
|
|
96
|
+
} else {
|
|
97
|
+
next = [updated, ...next.slice(1)];
|
|
98
|
+
}
|
|
99
|
+
await persist(next);
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
} finally {
|
|
104
|
+
setIsFlushing(false);
|
|
105
|
+
}
|
|
106
|
+
}, [isFlushing, submit, persist, maxAttempts, onSuccess, onGiveUp]);
|
|
107
|
+
useEffect(() => {
|
|
108
|
+
if (!flushOnOnline || !isOnline || !hydrated.current) return;
|
|
109
|
+
if (queueRef.current.length === 0) return;
|
|
110
|
+
void flush();
|
|
111
|
+
}, [isOnline, flushOnOnline, flush]);
|
|
112
|
+
const enqueue = useCallback(async payload => {
|
|
113
|
+
const id = createId();
|
|
114
|
+
const job = {
|
|
115
|
+
id,
|
|
116
|
+
payload,
|
|
117
|
+
createdAt: Date.now(),
|
|
118
|
+
attempts: 0
|
|
119
|
+
};
|
|
120
|
+
await persist([...queueRef.current, job]);
|
|
121
|
+
if (isOnline) void flush();
|
|
122
|
+
return id;
|
|
123
|
+
}, [persist, isOnline, flush]);
|
|
124
|
+
const clear = useCallback(async () => {
|
|
125
|
+
await persist([]);
|
|
126
|
+
}, [persist]);
|
|
127
|
+
const remove = useCallback(async id => {
|
|
128
|
+
await persist(queueRef.current.filter(j => j.id !== id));
|
|
129
|
+
}, [persist]);
|
|
130
|
+
return {
|
|
131
|
+
queue,
|
|
132
|
+
pendingCount: queue.length,
|
|
133
|
+
isFlushing,
|
|
134
|
+
isOnline,
|
|
135
|
+
enqueue,
|
|
136
|
+
flush,
|
|
137
|
+
clear,
|
|
138
|
+
remove
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=useFieldFlowSubmitQueue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useRef","useState","createId","Date","now","Math","random","toString","slice","useFieldFlowSubmitQueue","key","storage","submit","maxAttempts","flushOnOnline","onSuccess","onGiveUp","queue","setQueue","isFlushing","setIsFlushing","isOnline","setIsOnline","queueRef","current","hydrated","persist","next","length","removeItem","setItem","JSON","stringify","cancelled","raw","getItem","parsed","parse","Array","isArray","NetInfo","globalThis","addEventListener","sub","state","online","isConnected","fetch","then","s","catch","undefined","remove","flush","job","result","payload","Error","err","message","updated","attempts","lastError","enqueue","id","createdAt","clear","filter","j","pendingCount"],"sourceRoot":"../../../src","sources":["hooks/useFieldFlowSubmitQueue.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -47,6 +47,17 @@ export function useKeyboardManager({
|
|
|
47
47
|
onSubmit?.();
|
|
48
48
|
}
|
|
49
49
|
}, [order, focusField, onSubmit]);
|
|
50
|
+
const focusPrevious = useCallback(id => {
|
|
51
|
+
const currentIndex = order.indexOf(id);
|
|
52
|
+
const prevId = order[currentIndex - 1];
|
|
53
|
+
if (prevId) focusField(prevId);
|
|
54
|
+
}, [order, focusField]);
|
|
55
|
+
const getFieldIndex = useCallback(id => order.indexOf(id), [order]);
|
|
56
|
+
const canGoPrevious = useCallback(id => order.indexOf(id) > 0, [order]);
|
|
57
|
+
const canGoNext = useCallback(id => {
|
|
58
|
+
const i = order.indexOf(id);
|
|
59
|
+
return i >= 0 && i < order.length - 1;
|
|
60
|
+
}, [order]);
|
|
50
61
|
const getReturnKeyType = useCallback(id => {
|
|
51
62
|
const isLast = order.indexOf(id) === order.length - 1;
|
|
52
63
|
return isLast ? 'done' : 'next';
|
|
@@ -55,7 +66,11 @@ export function useKeyboardManager({
|
|
|
55
66
|
registerField,
|
|
56
67
|
unregisterField,
|
|
57
68
|
focusNext,
|
|
69
|
+
focusPrevious,
|
|
58
70
|
focusField,
|
|
71
|
+
getFieldIndex,
|
|
72
|
+
canGoPrevious,
|
|
73
|
+
canGoNext,
|
|
59
74
|
scrollViewRef,
|
|
60
75
|
getReturnKeyType,
|
|
61
76
|
onSubmit: () => onSubmit?.()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useRef","useKeyboardManager","order","onSubmit","scrollOffset","fields","Map","scrollViewRef","registerField","id","ref","offsetY","current","set","unregisterField","delete","scrollToField","field","get","undefined","scrollTo","y","Math","max","animated","focusField","focus","focusNext","currentIndex","indexOf","nextId","blur","
|
|
1
|
+
{"version":3,"names":["useCallback","useRef","useKeyboardManager","order","onSubmit","scrollOffset","fields","Map","scrollViewRef","registerField","id","ref","offsetY","current","set","unregisterField","delete","scrollToField","field","get","undefined","scrollTo","y","Math","max","animated","focusField","focus","focusNext","currentIndex","indexOf","nextId","blur","focusPrevious","prevId","getFieldIndex","canGoPrevious","canGoNext","i","length","getReturnKeyType","isLast"],"sourceRoot":"../../../src","sources":["hooks/useKeyboardManager.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useCallback } from 'react';
|
|
4
|
+
import { applySmartPaste, routeSmartPaste } from '../paste/smartPaste';
|
|
5
|
+
/**
|
|
6
|
+
* Hook helper for smart paste — call `handlePaste(text)` from Clipboard or a paste event.
|
|
7
|
+
*/
|
|
8
|
+
export function useSmartPaste({
|
|
9
|
+
targets,
|
|
10
|
+
minConfidence = 0.7,
|
|
11
|
+
onRouted
|
|
12
|
+
}) {
|
|
13
|
+
const handlePaste = useCallback(text => {
|
|
14
|
+
const result = applySmartPaste(text, targets, minConfidence);
|
|
15
|
+
onRouted?.(result);
|
|
16
|
+
return result;
|
|
17
|
+
}, [targets, minConfidence, onRouted]);
|
|
18
|
+
return {
|
|
19
|
+
handlePaste,
|
|
20
|
+
routeSmartPaste
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=useSmartPaste.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useCallback","applySmartPaste","routeSmartPaste","useSmartPaste","targets","minConfidence","onRouted","handlePaste","text","result"],"sourceRoot":"../../../src","sources":["hooks/useSmartPaste.ts"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,OAAO;AACnC,SACEC,eAAe,EACfC,eAAe,QAGV,qBAAqB;AAQ5B;AACA;AACA;AACA,OAAO,SAASC,aAAaA,CAAC;EAC5BC,OAAO;EACPC,aAAa,GAAG,GAAG;EACnBC;AACoB,CAAC,EAAE;EACvB,MAAMC,WAAW,GAAGP,WAAW,CAC5BQ,IAAY,IAAK;IAChB,MAAMC,MAAM,GAAGR,eAAe,CAACO,IAAI,EAAEJ,OAAO,EAAEC,aAAa,CAAC;IAC5DC,QAAQ,GAAGG,MAAM,CAAC;IAClB,OAAOA,MAAM;EACf,CAAC,EACD,CAACL,OAAO,EAAEC,aAAa,EAAEC,QAAQ,CACnC,CAAC;EAED,OAAO;IAAEC,WAAW;IAAEL;EAAgB,CAAC;AACzC","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -27,14 +27,29 @@ export { FieldFlowSlider } from './components/FieldFlowSlider';
|
|
|
27
27
|
export { FieldFlowNumberStepper } from './components/FieldFlowNumberStepper';
|
|
28
28
|
export { FieldFlowCreditCard } from './components/FieldFlowCreditCard';
|
|
29
29
|
export { FieldFlowSignature } from './components/FieldFlowSignature';
|
|
30
|
+
export { FieldFlowCompleteness } from './components/FieldFlowCompleteness';
|
|
31
|
+
export { FieldFlowAuthActions } from './components/FieldFlowAuthActions';
|
|
32
|
+
export { FieldFlowKeyboardToolbar, FIELD_FLOW_KEYBOARD_TOOLBAR_ID } from './components/FieldFlowKeyboardToolbar';
|
|
33
|
+
export { FieldFlowA11yAudit } from './components/FieldFlowA11yAudit';
|
|
34
|
+
export { FieldFlowInlineAlert } from './components/FieldFlowInlineAlert';
|
|
35
|
+
export { FieldFlowSkeleton } from './components/FieldFlowSkeleton';
|
|
36
|
+
export { FieldFlowFormHeader } from './components/FieldFlowFormHeader';
|
|
37
|
+
export { FieldFlowInfoTip } from './components/FieldFlowInfoTip';
|
|
38
|
+
export { FieldFlowSchemaForm } from './schema';
|
|
30
39
|
// Adapters (optional peers: react-hook-form)
|
|
31
40
|
export { FieldFlowController, FieldFlowTagsController, mapRhfToFieldFlowProps } from './adapters';
|
|
32
41
|
// Theming
|
|
33
|
-
export { FieldFlowThemeProvider, useFieldFlowTheme, defaultTheme, darkTheme, themePresets, getThemePreset } from './theme';
|
|
42
|
+
export { FieldFlowThemeProvider, useFieldFlowTheme, defaultTheme, darkTheme, themePresets, getThemePreset, applyAppearance, defaultAppearance, surfaceShadow } from './theme';
|
|
34
43
|
// Motion
|
|
35
44
|
export { useFieldMotion, useReducedMotion } from './motion';
|
|
36
45
|
// Hooks
|
|
37
|
-
export { useFieldFlowForm, useKeyboardManager, useFieldState, useFormIntelligence, useFieldFlowArray, useFieldFlowDraft, useFieldFlowSteps, useFieldFlowDirtyGuard } from './hooks';
|
|
46
|
+
export { useFieldFlowForm, useKeyboardManager, useFieldState, useFormIntelligence, useFieldFlowArray, useFieldFlowDraft, useFieldFlowSteps, useFieldFlowDirtyGuard, useFieldFlowCompleteness, useFieldFlowSubmitQueue, useSmartPaste } from './hooks';
|
|
47
|
+
// Autofill
|
|
48
|
+
export { getAutofillProps, autofillRoleFromFieldType, autofillProfiles } from './autofill';
|
|
49
|
+
// Smart paste
|
|
50
|
+
export { routeSmartPaste, applySmartPaste } from './paste';
|
|
51
|
+
// A11y audit
|
|
52
|
+
export { runA11yAudit } from './a11y';
|
|
38
53
|
// i18n
|
|
39
54
|
export { validationMessageCatalogs, getValidationMessages, createValidationMessages } from './i18n';
|
|
40
55
|
// Phone helpers
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["FieldFlowInput","DescriptionField","ChatInput","KeyboardAwareFormWrapper","FieldFlowDropdown","FieldFlowOTP","FieldFlowMaskedInput","FieldFlowCheckbox","FieldFlowRadio","FieldFlowSwitch","FieldFlowDateTimePicker","FieldFlowAffordance","FieldFlowDraftBanner","FieldFlowTags","FieldFlowPasswordStrength","FieldFlowSection","FieldFlowSegmented","FieldFlowStepper","FieldFlowPhone","FieldFlowUpload","FieldFlowTypeahead","FieldFlowRating","FieldFlowSlider","FieldFlowNumberStepper","FieldFlowCreditCard","FieldFlowSignature","FieldFlowController","FieldFlowTagsController","mapRhfToFieldFlowProps","FieldFlowThemeProvider","useFieldFlowTheme","defaultTheme","darkTheme","themePresets","getThemePreset","useFieldMotion","useReducedMotion","useFieldFlowForm","useKeyboardManager","useFieldState","useFormIntelligence","useFieldFlowArray","useFieldFlowDraft","useFieldFlowSteps","useFieldFlowDirtyGuard","validationMessageCatalogs","getValidationMessages","createValidationMessages","DEFAULT_COUNTRY_DIALS","findCountryByCode","composeE164","useValidation","runRules","isValidEmail","isValidNumber","isValidPhone","requiredValidator","emailValidator","numberValidator","phoneValidator","minLengthValidator","maxLengthValidator","patternValidator","zodToFormErrors","zodFormValidate","createZodSubmitGuard","fieldRulesFromZodString","applyMask","applyPattern","formatMasked","unmask","digitsOnly","applyPhoneMask","applyCardMask","applyDateMask","applyCurrencyMask","applyEmailDomainSuggestion","applyPhoneDialSuggestion","applyCurrencySymbolSuggestion","applyAffordanceSuggestion","resolveAffordanceChips","emailDomainsToChips","affordanceKindFromFieldType","DEFAULT_EMAIL_DOMAINS","DEFAULT_PHONE_DIAL_CODES","DEFAULT_CURRENCY_SYMBOLS","evaluatePasswordStrength","DEFAULT_PASSWORD_RULES","PASSWORD_STRENGTH_COLORS","focusFirstError","announceForAccessibility","buildValidationAnnouncement","setAccessibilityFocus","FieldFlowIcon","renderFieldFlowIcon"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;AACA,SAASA,cAAc,QAAQ,6BAA6B;AAG5D,SAASC,gBAAgB,QAAQ,+BAA+B;AAGhE,SAASC,SAAS,QAAQ,wBAAwB;AAGlD,SAASC,wBAAwB,QAAQ,uCAAuC;AAGhF,SAASC,iBAAiB,QAAQ,gCAAgC;AAQlE,SAASC,YAAY,QAAQ,2BAA2B;AAGxD,SAASC,oBAAoB,QAAQ,mCAAmC;AAGxE,SAASC,iBAAiB,QAAQ,gCAAgC;AAGlE,SAASC,cAAc,QAAQ,6BAA6B;AAG5D,SAASC,eAAe,QAAQ,8BAA8B;AAG9D,SAASC,uBAAuB,QAAQ,sCAAsC;AAM9E,SAASC,mBAAmB,QAAQ,kCAAkC;AAGtE,SAASC,oBAAoB,QAAQ,mCAAmC;AAGxE,SAASC,aAAa,QAAQ,4BAA4B;AAG1D,SAASC,yBAAyB,QAAQ,wCAAwC;AAGlF,SAASC,gBAAgB,QAAQ,+BAA+B;AAGhE,SAASC,kBAAkB,QAAQ,iCAAiC;AAGpE,SAASC,gBAAgB,QAAQ,+BAA+B;AAGhE,SAASC,cAAc,QAAQ,6BAA6B;AAG5D,SAASC,eAAe,QAAQ,8BAA8B;AAO9D,SAASC,kBAAkB,QAAQ,iCAAiC;AAGpE,SAASC,eAAe,QAAQ,8BAA8B;AAG9D,SAASC,eAAe,QAAQ,8BAA8B;AAG9D,SAASC,sBAAsB,QAAQ,qCAAqC;AAG5E,SAASC,mBAAmB,QAAQ,kCAAkC;AAGtE,SAASC,kBAAkB,QAAQ,iCAAiC;AAQpE;AACA,SACEC,mBAAmB,EACnBC,uBAAuB,EACvBC,sBAAsB,QACjB,YAAY;AAMnB;AACA,SACEC,sBAAsB,EACtBC,iBAAiB,EACjBC,YAAY,EACZC,SAAS,EACTC,YAAY,EACZC,cAAc,
|
|
1
|
+
{"version":3,"names":["FieldFlowInput","DescriptionField","ChatInput","KeyboardAwareFormWrapper","FieldFlowDropdown","FieldFlowOTP","FieldFlowMaskedInput","FieldFlowCheckbox","FieldFlowRadio","FieldFlowSwitch","FieldFlowDateTimePicker","FieldFlowAffordance","FieldFlowDraftBanner","FieldFlowTags","FieldFlowPasswordStrength","FieldFlowSection","FieldFlowSegmented","FieldFlowStepper","FieldFlowPhone","FieldFlowUpload","FieldFlowTypeahead","FieldFlowRating","FieldFlowSlider","FieldFlowNumberStepper","FieldFlowCreditCard","FieldFlowSignature","FieldFlowCompleteness","FieldFlowAuthActions","FieldFlowKeyboardToolbar","FIELD_FLOW_KEYBOARD_TOOLBAR_ID","FieldFlowA11yAudit","FieldFlowInlineAlert","FieldFlowSkeleton","FieldFlowFormHeader","FieldFlowInfoTip","FieldFlowSchemaForm","FieldFlowController","FieldFlowTagsController","mapRhfToFieldFlowProps","FieldFlowThemeProvider","useFieldFlowTheme","defaultTheme","darkTheme","themePresets","getThemePreset","applyAppearance","defaultAppearance","surfaceShadow","useFieldMotion","useReducedMotion","useFieldFlowForm","useKeyboardManager","useFieldState","useFormIntelligence","useFieldFlowArray","useFieldFlowDraft","useFieldFlowSteps","useFieldFlowDirtyGuard","useFieldFlowCompleteness","useFieldFlowSubmitQueue","useSmartPaste","getAutofillProps","autofillRoleFromFieldType","autofillProfiles","routeSmartPaste","applySmartPaste","runA11yAudit","validationMessageCatalogs","getValidationMessages","createValidationMessages","DEFAULT_COUNTRY_DIALS","findCountryByCode","composeE164","useValidation","runRules","isValidEmail","isValidNumber","isValidPhone","requiredValidator","emailValidator","numberValidator","phoneValidator","minLengthValidator","maxLengthValidator","patternValidator","zodToFormErrors","zodFormValidate","createZodSubmitGuard","fieldRulesFromZodString","applyMask","applyPattern","formatMasked","unmask","digitsOnly","applyPhoneMask","applyCardMask","applyDateMask","applyCurrencyMask","applyEmailDomainSuggestion","applyPhoneDialSuggestion","applyCurrencySymbolSuggestion","applyAffordanceSuggestion","resolveAffordanceChips","emailDomainsToChips","affordanceKindFromFieldType","DEFAULT_EMAIL_DOMAINS","DEFAULT_PHONE_DIAL_CODES","DEFAULT_CURRENCY_SYMBOLS","evaluatePasswordStrength","DEFAULT_PASSWORD_RULES","PASSWORD_STRENGTH_COLORS","focusFirstError","announceForAccessibility","buildValidationAnnouncement","setAccessibilityFocus","FieldFlowIcon","renderFieldFlowIcon"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["routeSmartPaste","applySmartPaste"],"sourceRoot":"../../../src","sources":["paste/index.ts"],"mappings":";;AAAA,SAASA,eAAe,EAAEC,eAAe,QAAQ,cAAc","ignoreList":[]}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function digitsOnly(s) {
|
|
4
|
+
return s.replace(/\D/g, '');
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Classify clipboard / pasted text and extract a structured value.
|
|
9
|
+
* Pure — no Clipboard permission required; call from `onPaste` or after reading clipboard.
|
|
10
|
+
*/
|
|
11
|
+
export function routeSmartPaste(text) {
|
|
12
|
+
const trimmed = text.trim();
|
|
13
|
+
if (!trimmed) {
|
|
14
|
+
return {
|
|
15
|
+
kind: 'unknown',
|
|
16
|
+
value: '',
|
|
17
|
+
confidence: 0
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
const digits = digitsOnly(trimmed);
|
|
21
|
+
|
|
22
|
+
// OTP: 4–8 digits, little else
|
|
23
|
+
if (/^\d{4,8}$/.test(digits) && digits.length === trimmed.replace(/\s/g, '').length) {
|
|
24
|
+
return {
|
|
25
|
+
kind: 'otp',
|
|
26
|
+
value: digits,
|
|
27
|
+
raw: digits,
|
|
28
|
+
confidence: 0.95
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Card: 13–19 digits (spaces/dashes ok)
|
|
33
|
+
if (digits.length >= 13 && digits.length <= 19 && /^[\d\s-]+$/.test(trimmed)) {
|
|
34
|
+
return {
|
|
35
|
+
kind: 'card',
|
|
36
|
+
value: digits,
|
|
37
|
+
raw: digits,
|
|
38
|
+
confidence: 0.9
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Email
|
|
43
|
+
if (/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(trimmed)) {
|
|
44
|
+
return {
|
|
45
|
+
kind: 'email',
|
|
46
|
+
value: trimmed.toLowerCase(),
|
|
47
|
+
confidence: 0.98
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// URL
|
|
52
|
+
if (/^https?:\/\//i.test(trimmed) || /^www\./i.test(trimmed)) {
|
|
53
|
+
return {
|
|
54
|
+
kind: 'url',
|
|
55
|
+
value: trimmed.startsWith('http') ? trimmed : `https://${trimmed}`,
|
|
56
|
+
confidence: 0.9
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Phone: 7–15 digits with optional + and punctuation
|
|
61
|
+
if (digits.length >= 7 && digits.length <= 15 && /^[+]?[\d\s().-]{7,22}$/.test(trimmed) && !/[a-zA-Z]{3,}/.test(trimmed)) {
|
|
62
|
+
return {
|
|
63
|
+
kind: 'phone',
|
|
64
|
+
value: trimmed,
|
|
65
|
+
raw: digits,
|
|
66
|
+
confidence: 0.85
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Multi-line address-ish
|
|
71
|
+
const lines = trimmed.split(/\r?\n/).map(l => l.trim()).filter(Boolean);
|
|
72
|
+
if (lines.length >= 2) {
|
|
73
|
+
const postalMatch = trimmed.match(/\b([A-Z]{1,2}\d[A-Z\d]?\s*\d[A-Z]{2}|\d{5}(?:-\d{4})?)\b/i);
|
|
74
|
+
const address = {
|
|
75
|
+
street: lines[0],
|
|
76
|
+
city: lines[1]?.replace(/,.*$/, '').trim(),
|
|
77
|
+
state: lines[1]?.includes(',') ? lines[1].split(',')[1]?.trim().split(/\s+/)[0] : undefined,
|
|
78
|
+
postalCode: postalMatch?.[1],
|
|
79
|
+
raw: trimmed
|
|
80
|
+
};
|
|
81
|
+
return {
|
|
82
|
+
kind: 'address',
|
|
83
|
+
value: lines[0],
|
|
84
|
+
address,
|
|
85
|
+
confidence: 0.7
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
kind: 'unknown',
|
|
90
|
+
value: trimmed,
|
|
91
|
+
confidence: 0.2
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Route paste into field setters. Returns true if a handler ran with confidence ≥ minConfidence.
|
|
96
|
+
*/
|
|
97
|
+
export function applySmartPaste(text, targets, minConfidence = 0.7) {
|
|
98
|
+
const result = routeSmartPaste(text);
|
|
99
|
+
if (result.confidence < minConfidence) return result;
|
|
100
|
+
if (result.kind === 'address' && result.address && targets.addressFields) {
|
|
101
|
+
targets.addressFields(result.address);
|
|
102
|
+
return result;
|
|
103
|
+
}
|
|
104
|
+
const handler = targets[result.kind];
|
|
105
|
+
if (handler) handler(result);
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=smartPaste.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["digitsOnly","s","replace","routeSmartPaste","text","trimmed","trim","kind","value","confidence","digits","test","length","raw","toLowerCase","startsWith","lines","split","map","l","filter","Boolean","postalMatch","match","address","street","city","state","includes","undefined","postalCode","applySmartPaste","targets","minConfidence","result","addressFields","handler"],"sourceRoot":"../../../src","sources":["paste/smartPaste.ts"],"mappings":";;AA4BA,SAASA,UAAUA,CAACC,CAAS,EAAU;EACrC,OAAOA,CAAC,CAACC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAC7B;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASC,eAAeA,CAACC,IAAY,EAAwB;EAClE,MAAMC,OAAO,GAAGD,IAAI,CAACE,IAAI,CAAC,CAAC;EAC3B,IAAI,CAACD,OAAO,EAAE;IACZ,OAAO;MAAEE,IAAI,EAAE,SAAS;MAAEC,KAAK,EAAE,EAAE;MAAEC,UAAU,EAAE;IAAE,CAAC;EACtD;EAEA,MAAMC,MAAM,GAAGV,UAAU,CAACK,OAAO,CAAC;;EAElC;EACA,IAAI,WAAW,CAACM,IAAI,CAACD,MAAM,CAAC,IAAIA,MAAM,CAACE,MAAM,KAAKP,OAAO,CAACH,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAACU,MAAM,EAAE;IACnF,OAAO;MAAEL,IAAI,EAAE,KAAK;MAAEC,KAAK,EAAEE,MAAM;MAAEG,GAAG,EAAEH,MAAM;MAAED,UAAU,EAAE;IAAK,CAAC;EACtE;;EAEA;EACA,IAAIC,MAAM,CAACE,MAAM,IAAI,EAAE,IAAIF,MAAM,CAACE,MAAM,IAAI,EAAE,IAAI,YAAY,CAACD,IAAI,CAACN,OAAO,CAAC,EAAE;IAC5E,OAAO;MAAEE,IAAI,EAAE,MAAM;MAAEC,KAAK,EAAEE,MAAM;MAAEG,GAAG,EAAEH,MAAM;MAAED,UAAU,EAAE;IAAI,CAAC;EACtE;;EAEA;EACA,IAAI,4BAA4B,CAACE,IAAI,CAACN,OAAO,CAAC,EAAE;IAC9C,OAAO;MAAEE,IAAI,EAAE,OAAO;MAAEC,KAAK,EAAEH,OAAO,CAACS,WAAW,CAAC,CAAC;MAAEL,UAAU,EAAE;IAAK,CAAC;EAC1E;;EAEA;EACA,IAAI,eAAe,CAACE,IAAI,CAACN,OAAO,CAAC,IAAI,SAAS,CAACM,IAAI,CAACN,OAAO,CAAC,EAAE;IAC5D,OAAO;MACLE,IAAI,EAAE,KAAK;MACXC,KAAK,EAAEH,OAAO,CAACU,UAAU,CAAC,MAAM,CAAC,GAAGV,OAAO,GAAG,WAAWA,OAAO,EAAE;MAClEI,UAAU,EAAE;IACd,CAAC;EACH;;EAEA;EACA,IACEC,MAAM,CAACE,MAAM,IAAI,CAAC,IAClBF,MAAM,CAACE,MAAM,IAAI,EAAE,IACnB,wBAAwB,CAACD,IAAI,CAACN,OAAO,CAAC,IACtC,CAAC,cAAc,CAACM,IAAI,CAACN,OAAO,CAAC,EAC7B;IACA,OAAO;MAAEE,IAAI,EAAE,OAAO;MAAEC,KAAK,EAAEH,OAAO;MAAEQ,GAAG,EAAEH,MAAM;MAAED,UAAU,EAAE;IAAK,CAAC;EACzE;;EAEA;EACA,MAAMO,KAAK,GAAGX,OAAO,CAClBY,KAAK,CAAC,OAAO,CAAC,CACdC,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACb,IAAI,CAAC,CAAC,CAAC,CAClBc,MAAM,CAACC,OAAO,CAAC;EAClB,IAAIL,KAAK,CAACJ,MAAM,IAAI,CAAC,EAAE;IACrB,MAAMU,WAAW,GAAGjB,OAAO,CAACkB,KAAK,CAAC,2DAA2D,CAAC;IAC9F,MAAMC,OAA8B,GAAG;MACrCC,MAAM,EAAET,KAAK,CAAC,CAAC,CAAC;MAChBU,IAAI,EAAEV,KAAK,CAAC,CAAC,CAAC,EAAEd,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAACI,IAAI,CAAC,CAAC;MAC1CqB,KAAK,EAAEX,KAAK,CAAC,CAAC,CAAC,EAAEY,QAAQ,CAAC,GAAG,CAAC,GAC1BZ,KAAK,CAAC,CAAC,CAAC,CAACC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAEX,IAAI,CAAC,CAAC,CAACW,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAC9CY,SAAS;MACbC,UAAU,EAAER,WAAW,GAAG,CAAC,CAAC;MAC5BT,GAAG,EAAER;IACP,CAAC;IACD,OAAO;MACLE,IAAI,EAAE,SAAS;MACfC,KAAK,EAAEQ,KAAK,CAAC,CAAC,CAAC;MACfQ,OAAO;MACPf,UAAU,EAAE;IACd,CAAC;EACH;EAEA,OAAO;IAAEF,IAAI,EAAE,SAAS;IAAEC,KAAK,EAAEH,OAAO;IAAEI,UAAU,EAAE;EAAI,CAAC;AAC7D;AASA;AACA;AACA;AACA,OAAO,SAASsB,eAAeA,CAC7B3B,IAAY,EACZ4B,OAA8B,EAC9BC,aAAa,GAAG,GAAG,EACG;EACtB,MAAMC,MAAM,GAAG/B,eAAe,CAACC,IAAI,CAAC;EACpC,IAAI8B,MAAM,CAACzB,UAAU,GAAGwB,aAAa,EAAE,OAAOC,MAAM;EAEpD,IAAIA,MAAM,CAAC3B,IAAI,KAAK,SAAS,IAAI2B,MAAM,CAACV,OAAO,IAAIQ,OAAO,CAACG,aAAa,EAAE;IACxEH,OAAO,CAACG,aAAa,CAACD,MAAM,CAACV,OAAO,CAAC;IACrC,OAAOU,MAAM;EACf;EAEA,MAAME,OAAO,GAAGJ,OAAO,CAACE,MAAM,CAAC3B,IAAI,CAAC;EACpC,IAAI6B,OAAO,EAAEA,OAAO,CAACF,MAAM,CAAC;EAC5B,OAAOA,MAAM;AACf","ignoreList":[]}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { useMemo, useState } from 'react';
|
|
4
|
+
import { View } from 'react-native';
|
|
5
|
+
import { FieldFlowInput } from '../components/FieldFlowInput';
|
|
6
|
+
import { FieldFlowCheckbox } from '../components/FieldFlowCheckbox';
|
|
7
|
+
import { FieldFlowSwitch } from '../components/FieldFlowSwitch';
|
|
8
|
+
import { FieldFlowRadio } from '../components/FieldFlowRadio';
|
|
9
|
+
import { FieldFlowSegmented } from '../components/FieldFlowSegmented';
|
|
10
|
+
import { FieldFlowDropdown } from '../components/FieldFlowDropdown';
|
|
11
|
+
import { FieldFlowTags } from '../components/FieldFlowTags';
|
|
12
|
+
import { FieldFlowRating } from '../components/FieldFlowRating';
|
|
13
|
+
import { FieldFlowSlider } from '../components/FieldFlowSlider';
|
|
14
|
+
import { FieldFlowNumberStepper } from '../components/FieldFlowNumberStepper';
|
|
15
|
+
import { FieldFlowSection } from '../components/FieldFlowSection';
|
|
16
|
+
import { useFieldFlowForm } from '../hooks/useFieldFlowForm';
|
|
17
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
18
|
+
function buildInitial(schema) {
|
|
19
|
+
const base = {
|
|
20
|
+
...(schema.initialValues ?? {})
|
|
21
|
+
};
|
|
22
|
+
for (const field of schema.fields) {
|
|
23
|
+
if (base[field.name] === undefined) {
|
|
24
|
+
if (field.type === 'checkbox' || field.type === 'switch') base[field.name] = 'false';else if (field.type === 'rating' || field.type === 'slider' || field.type === 'stepper') {
|
|
25
|
+
base[field.name] = String(field.min ?? 0);
|
|
26
|
+
} else base[field.name] = '';
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return base;
|
|
30
|
+
}
|
|
31
|
+
function buildRules(schema) {
|
|
32
|
+
const rules = {};
|
|
33
|
+
for (const field of schema.fields) {
|
|
34
|
+
const r = {
|
|
35
|
+
...(field.rules ?? {})
|
|
36
|
+
};
|
|
37
|
+
if (field.required && !r.required) r.required = true;
|
|
38
|
+
if (field.type === 'email' && r.email === undefined) r.email = true;
|
|
39
|
+
if (Object.keys(r).length) rules[field.name] = r;
|
|
40
|
+
}
|
|
41
|
+
return rules;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Declarative form renderer — JSON / object schema → FieldFlow controls.
|
|
46
|
+
*/
|
|
47
|
+
export function FieldFlowSchemaForm({
|
|
48
|
+
schema,
|
|
49
|
+
showWhenFns,
|
|
50
|
+
locale,
|
|
51
|
+
onSubmit,
|
|
52
|
+
onMetaChange,
|
|
53
|
+
renderFooter,
|
|
54
|
+
containerStyle,
|
|
55
|
+
testID
|
|
56
|
+
}) {
|
|
57
|
+
const initialValues = useMemo(() => buildInitial(schema), [schema]);
|
|
58
|
+
const rules = useMemo(() => buildRules(schema), [schema]);
|
|
59
|
+
const form = useFieldFlowForm({
|
|
60
|
+
initialValues,
|
|
61
|
+
rules,
|
|
62
|
+
locale,
|
|
63
|
+
onSubmit
|
|
64
|
+
});
|
|
65
|
+
const [meta, setMeta] = useState({});
|
|
66
|
+
const patchMeta = (key, value) => {
|
|
67
|
+
setMeta(prev => {
|
|
68
|
+
const next = {
|
|
69
|
+
...prev,
|
|
70
|
+
[key]: value
|
|
71
|
+
};
|
|
72
|
+
onMetaChange?.(next);
|
|
73
|
+
return next;
|
|
74
|
+
});
|
|
75
|
+
};
|
|
76
|
+
const isVisible = field => {
|
|
77
|
+
if (!field.showWhen) return true;
|
|
78
|
+
const fn = showWhenFns?.[field.showWhen];
|
|
79
|
+
if (!fn) return true;
|
|
80
|
+
return fn(form.values);
|
|
81
|
+
};
|
|
82
|
+
const sections = schema.sections ?? [];
|
|
83
|
+
const bySection = useMemo(() => {
|
|
84
|
+
const map = new Map();
|
|
85
|
+
for (const field of schema.fields) {
|
|
86
|
+
const key = field.section ?? null;
|
|
87
|
+
const list = map.get(key) ?? [];
|
|
88
|
+
list.push(field);
|
|
89
|
+
map.set(key, list);
|
|
90
|
+
}
|
|
91
|
+
return map;
|
|
92
|
+
}, [schema.fields]);
|
|
93
|
+
const renderField = field => {
|
|
94
|
+
if (!isVisible(field)) return null;
|
|
95
|
+
const props = form.getInputProps(field.name);
|
|
96
|
+
if (!props && field.type !== 'checkbox' && field.type !== 'switch' && field.type !== 'rating' && field.type !== 'slider' && field.type !== 'stepper' && field.type !== 'tags' && field.type !== 'dropdown' && field.type !== 'radio' && field.type !== 'segmented') {
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
switch (field.type) {
|
|
100
|
+
case 'checkbox':
|
|
101
|
+
return /*#__PURE__*/_jsx(FieldFlowCheckbox, {
|
|
102
|
+
label: field.label,
|
|
103
|
+
value: form.values[field.name] === 'true',
|
|
104
|
+
onChange: v => form.handleChange(field.name)(v ? 'true' : 'false'),
|
|
105
|
+
required: field.required,
|
|
106
|
+
helperText: field.helperText
|
|
107
|
+
}, field.name);
|
|
108
|
+
case 'switch':
|
|
109
|
+
return /*#__PURE__*/_jsx(FieldFlowSwitch, {
|
|
110
|
+
label: field.label,
|
|
111
|
+
value: form.values[field.name] === 'true',
|
|
112
|
+
onChange: v => form.handleChange(field.name)(v ? 'true' : 'false'),
|
|
113
|
+
helperText: field.helperText
|
|
114
|
+
}, field.name);
|
|
115
|
+
case 'radio':
|
|
116
|
+
return /*#__PURE__*/_jsx(FieldFlowRadio, {
|
|
117
|
+
label: field.label,
|
|
118
|
+
value: form.values[field.name] || null,
|
|
119
|
+
onChange: v => form.handleChange(field.name)(v),
|
|
120
|
+
options: field.options ?? [],
|
|
121
|
+
required: field.required
|
|
122
|
+
}, field.name);
|
|
123
|
+
case 'segmented':
|
|
124
|
+
return /*#__PURE__*/_jsx(FieldFlowSegmented, {
|
|
125
|
+
label: field.label,
|
|
126
|
+
value: form.values[field.name] || null,
|
|
127
|
+
onChange: v => form.handleChange(field.name)(v),
|
|
128
|
+
options: field.options ?? [],
|
|
129
|
+
required: field.required
|
|
130
|
+
}, field.name);
|
|
131
|
+
case 'dropdown':
|
|
132
|
+
return /*#__PURE__*/_jsx(FieldFlowDropdown, {
|
|
133
|
+
label: field.label,
|
|
134
|
+
placeholder: field.placeholder,
|
|
135
|
+
options: field.options ?? [],
|
|
136
|
+
value: form.values[field.name] || null,
|
|
137
|
+
onChange: v => form.handleChange(field.name)(v ?? ''),
|
|
138
|
+
required: field.required,
|
|
139
|
+
helperText: field.helperText
|
|
140
|
+
}, field.name);
|
|
141
|
+
case 'tags':
|
|
142
|
+
return /*#__PURE__*/_jsx(FieldFlowTags, {
|
|
143
|
+
label: field.label,
|
|
144
|
+
value: meta[field.name] ?? [],
|
|
145
|
+
onChange: tags => patchMeta(field.name, tags),
|
|
146
|
+
placeholder: field.placeholder,
|
|
147
|
+
helperText: field.helperText
|
|
148
|
+
}, field.name);
|
|
149
|
+
case 'rating':
|
|
150
|
+
return /*#__PURE__*/_jsx(FieldFlowRating, {
|
|
151
|
+
label: field.label,
|
|
152
|
+
value: Number(form.values[field.name] || 0),
|
|
153
|
+
onChange: v => form.handleChange(field.name)(String(v)),
|
|
154
|
+
max: field.max ?? 5,
|
|
155
|
+
required: field.required
|
|
156
|
+
}, field.name);
|
|
157
|
+
case 'slider':
|
|
158
|
+
return /*#__PURE__*/_jsx(FieldFlowSlider, {
|
|
159
|
+
label: field.label,
|
|
160
|
+
value: Number(form.values[field.name] || field.min || 0),
|
|
161
|
+
onChange: v => form.handleChange(field.name)(String(v)),
|
|
162
|
+
min: field.min ?? 0,
|
|
163
|
+
max: field.max ?? 100,
|
|
164
|
+
step: field.step ?? 1
|
|
165
|
+
}, field.name);
|
|
166
|
+
case 'stepper':
|
|
167
|
+
return /*#__PURE__*/_jsx(FieldFlowNumberStepper, {
|
|
168
|
+
label: field.label,
|
|
169
|
+
value: Number(form.values[field.name] || field.min || 0),
|
|
170
|
+
onChange: v => form.handleChange(field.name)(String(v)),
|
|
171
|
+
min: field.min ?? 0,
|
|
172
|
+
max: field.max ?? 99,
|
|
173
|
+
step: field.step ?? 1
|
|
174
|
+
}, field.name);
|
|
175
|
+
default:
|
|
176
|
+
return /*#__PURE__*/_jsx(FieldFlowInput, {
|
|
177
|
+
type: field.type,
|
|
178
|
+
label: field.label,
|
|
179
|
+
placeholder: field.placeholder,
|
|
180
|
+
helperText: field.helperText,
|
|
181
|
+
variant: field.variant,
|
|
182
|
+
leftIcon: field.leftIcon,
|
|
183
|
+
autofill: field.autofill,
|
|
184
|
+
suggestions: field.suggestions,
|
|
185
|
+
showStrength: field.showStrength,
|
|
186
|
+
prefix: field.prefix,
|
|
187
|
+
suffix: field.suffix,
|
|
188
|
+
...props
|
|
189
|
+
}, field.name);
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
const unsectioned = bySection.get(null) ?? [];
|
|
193
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
194
|
+
style: containerStyle,
|
|
195
|
+
testID: testID,
|
|
196
|
+
children: [unsectioned.map(renderField), sections.map(section => {
|
|
197
|
+
const fields = bySection.get(section.id) ?? [];
|
|
198
|
+
if (!fields.length) return null;
|
|
199
|
+
return /*#__PURE__*/_jsx(FieldFlowSection, {
|
|
200
|
+
title: section.title,
|
|
201
|
+
description: section.description,
|
|
202
|
+
icon: section.icon,
|
|
203
|
+
collapsible: section.collapsible,
|
|
204
|
+
children: fields.map(renderField)
|
|
205
|
+
}, section.id);
|
|
206
|
+
}), renderFooter?.({
|
|
207
|
+
submit: form.submit,
|
|
208
|
+
values: form.values,
|
|
209
|
+
meta,
|
|
210
|
+
isSubmitting: form.isSubmitting
|
|
211
|
+
})]
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=FieldFlowSchemaForm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useMemo","useState","View","FieldFlowInput","FieldFlowCheckbox","FieldFlowSwitch","FieldFlowRadio","FieldFlowSegmented","FieldFlowDropdown","FieldFlowTags","FieldFlowRating","FieldFlowSlider","FieldFlowNumberStepper","FieldFlowSection","useFieldFlowForm","jsx","_jsx","jsxs","_jsxs","buildInitial","schema","base","initialValues","field","fields","name","undefined","type","String","min","buildRules","rules","r","required","email","Object","keys","length","FieldFlowSchemaForm","showWhenFns","locale","onSubmit","onMetaChange","renderFooter","containerStyle","testID","form","meta","setMeta","patchMeta","key","value","prev","next","isVisible","showWhen","fn","values","sections","bySection","map","Map","section","list","get","push","set","renderField","props","getInputProps","label","onChange","v","handleChange","helperText","options","placeholder","tags","Number","max","step","variant","leftIcon","autofill","suggestions","showStrength","prefix","suffix","unsectioned","style","children","id","title","description","icon","collapsible","submit","isSubmitting"],"sourceRoot":"../../../src","sources":["schema/FieldFlowSchemaForm.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,OAAO,EAAEC,QAAQ,QAAQ,OAAO;AAChD,SAASC,IAAI,QAAwB,cAAc;AACnD,SAASC,cAAc,QAAQ,8BAA8B;AAC7D,SAASC,iBAAiB,QAAQ,iCAAiC;AACnE,SAASC,eAAe,QAAQ,+BAA+B;AAC/D,SAASC,cAAc,QAAQ,8BAA8B;AAC7D,SAASC,kBAAkB,QAAQ,kCAAkC;AACrE,SAASC,iBAAiB,QAAQ,iCAAiC;AACnE,SAASC,aAAa,QAAQ,6BAA6B;AAC3D,SAASC,eAAe,QAAQ,+BAA+B;AAC/D,SAASC,eAAe,QAAQ,+BAA+B;AAC/D,SAASC,sBAAsB,QAAQ,sCAAsC;AAC7E,SAASC,gBAAgB,QAAQ,gCAAgC;AACjE,SAASC,gBAAgB,QAAQ,2BAA2B;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAyB7D,SAASC,YAAYA,CAACC,MAA2B,EAA0B;EACzE,MAAMC,IAA4B,GAAG;IAAE,IAAID,MAAM,CAACE,aAAa,IAAI,CAAC,CAAC;EAAE,CAAC;EACxE,KAAK,MAAMC,KAAK,IAAIH,MAAM,CAACI,MAAM,EAAE;IACjC,IAAIH,IAAI,CAACE,KAAK,CAACE,IAAI,CAAC,KAAKC,SAAS,EAAE;MAClC,IAAIH,KAAK,CAACI,IAAI,KAAK,UAAU,IAAIJ,KAAK,CAACI,IAAI,KAAK,QAAQ,EAAEN,IAAI,CAACE,KAAK,CAACE,IAAI,CAAC,GAAG,OAAO,CAAC,KAChF,IAAIF,KAAK,CAACI,IAAI,KAAK,QAAQ,IAAIJ,KAAK,CAACI,IAAI,KAAK,QAAQ,IAAIJ,KAAK,CAACI,IAAI,KAAK,SAAS,EAAE;QACvFN,IAAI,CAACE,KAAK,CAACE,IAAI,CAAC,GAAGG,MAAM,CAACL,KAAK,CAACM,GAAG,IAAI,CAAC,CAAC;MAC3C,CAAC,MAAMR,IAAI,CAACE,KAAK,CAACE,IAAI,CAAC,GAAG,EAAE;IAC9B;EACF;EACA,OAAOJ,IAAI;AACb;AAEA,SAASS,UAAUA,CAACV,MAA2B,EAAE;EAC/C,MAAMW,KAAoD,GAAG,CAAC,CAAC;EAC/D,KAAK,MAAMR,KAAK,IAAIH,MAAM,CAACI,MAAM,EAAE;IACjC,MAAMQ,CAAC,GAAG;MAAE,IAAIT,KAAK,CAACQ,KAAK,IAAI,CAAC,CAAC;IAAE,CAAC;IACpC,IAAIR,KAAK,CAACU,QAAQ,IAAI,CAACD,CAAC,CAACC,QAAQ,EAAED,CAAC,CAACC,QAAQ,GAAG,IAAI;IACpD,IAAIV,KAAK,CAACI,IAAI,KAAK,OAAO,IAAIK,CAAC,CAACE,KAAK,KAAKR,SAAS,EAAEM,CAAC,CAACE,KAAK,GAAG,IAAI;IACnE,IAAIC,MAAM,CAACC,IAAI,CAACJ,CAAC,CAAC,CAACK,MAAM,EAAEN,KAAK,CAACR,KAAK,CAACE,IAAI,CAAC,GAAGO,CAAC;EAClD;EACA,OAAOD,KAAK;AACd;;AAEA;AACA;AACA;AACA,OAAO,SAASO,mBAAmBA,CAAC;EAClClB,MAAM;EACNmB,WAAW;EACXC,MAAM;EACNC,QAAQ;EACRC,YAAY;EACZC,YAAY;EACZC,cAAc;EACdC;AACwB,CAAC,EAAE;EAC3B,MAAMvB,aAAa,GAAGtB,OAAO,CAAC,MAAMmB,YAAY,CAACC,MAAM,CAAC,EAAE,CAACA,MAAM,CAAC,CAAC;EACnE,MAAMW,KAAK,GAAG/B,OAAO,CAAC,MAAM8B,UAAU,CAACV,MAAM,CAAC,EAAE,CAACA,MAAM,CAAC,CAAC;EAEzD,MAAM0B,IAAI,GAAGhC,gBAAgB,CAAC;IAC5BQ,aAAa;IACbS,KAAK;IACLS,MAAM;IACNC;EACF,CAAC,CAAC;EAEF,MAAM,CAACM,IAAI,EAAEC,OAAO,CAAC,GAAG/C,QAAQ,CAA0B,CAAC,CAAC,CAAC;EAE7D,MAAMgD,SAAS,GAAGA,CAACC,GAAW,EAAEC,KAAc,KAAK;IACjDH,OAAO,CAACI,IAAI,IAAI;MACd,MAAMC,IAAI,GAAG;QAAE,GAAGD,IAAI;QAAE,CAACF,GAAG,GAAGC;MAAM,CAAC;MACtCT,YAAY,GAAGW,IAAI,CAAC;MACpB,OAAOA,IAAI;IACb,CAAC,CAAC;EACJ,CAAC;EAED,MAAMC,SAAS,GAAI/B,KAA2B,IAAK;IACjD,IAAI,CAACA,KAAK,CAACgC,QAAQ,EAAE,OAAO,IAAI;IAChC,MAAMC,EAAE,GAAGjB,WAAW,GAAGhB,KAAK,CAACgC,QAAQ,CAAC;IACxC,IAAI,CAACC,EAAE,EAAE,OAAO,IAAI;IACpB,OAAOA,EAAE,CAACV,IAAI,CAACW,MAAM,CAAC;EACxB,CAAC;EAED,MAAMC,QAAQ,GAAGtC,MAAM,CAACsC,QAAQ,IAAI,EAAE;EACtC,MAAMC,SAAS,GAAG3D,OAAO,CAAC,MAAM;IAC9B,MAAM4D,GAAG,GAAG,IAAIC,GAAG,CAAwC,CAAC;IAC5D,KAAK,MAAMtC,KAAK,IAAIH,MAAM,CAACI,MAAM,EAAE;MACjC,MAAM0B,GAAG,GAAG3B,KAAK,CAACuC,OAAO,IAAI,IAAI;MACjC,MAAMC,IAAI,GAAGH,GAAG,CAACI,GAAG,CAACd,GAAG,CAAC,IAAI,EAAE;MAC/Ba,IAAI,CAACE,IAAI,CAAC1C,KAAK,CAAC;MAChBqC,GAAG,CAACM,GAAG,CAAChB,GAAG,EAAEa,IAAI,CAAC;IACpB;IACA,OAAOH,GAAG;EACZ,CAAC,EAAE,CAACxC,MAAM,CAACI,MAAM,CAAC,CAAC;EAEnB,MAAM2C,WAAW,GAAI5C,KAA2B,IAAK;IACnD,IAAI,CAAC+B,SAAS,CAAC/B,KAAK,CAAC,EAAE,OAAO,IAAI;IAClC,MAAM6C,KAAK,GAAGtB,IAAI,CAACuB,aAAa,CAAC9C,KAAK,CAACE,IAAI,CAAC;IAC5C,IAAI,CAAC2C,KAAK,IAAI7C,KAAK,CAACI,IAAI,KAAK,UAAU,IAAIJ,KAAK,CAACI,IAAI,KAAK,QAAQ,IAAIJ,KAAK,CAACI,IAAI,KAAK,QAAQ,IAAIJ,KAAK,CAACI,IAAI,KAAK,QAAQ,IAAIJ,KAAK,CAACI,IAAI,KAAK,SAAS,IAAIJ,KAAK,CAACI,IAAI,KAAK,MAAM,IAAIJ,KAAK,CAACI,IAAI,KAAK,UAAU,IAAIJ,KAAK,CAACI,IAAI,KAAK,OAAO,IAAIJ,KAAK,CAACI,IAAI,KAAK,WAAW,EAAE;MAClQ,OAAO,IAAI;IACb;IAEA,QAAQJ,KAAK,CAACI,IAAI;MAChB,KAAK,UAAU;QACb,oBACEX,IAAA,CAACZ,iBAAiB;UAEhBkE,KAAK,EAAE/C,KAAK,CAAC+C,KAAM;UACnBnB,KAAK,EAAEL,IAAI,CAACW,MAAM,CAAClC,KAAK,CAACE,IAAI,CAAC,KAAK,MAAO;UAC1C8C,QAAQ,EAAEC,CAAC,IAAI1B,IAAI,CAAC2B,YAAY,CAAClD,KAAK,CAACE,IAAI,CAAC,CAAC+C,CAAC,GAAG,MAAM,GAAG,OAAO,CAAE;UACnEvC,QAAQ,EAAEV,KAAK,CAACU,QAAS;UACzByC,UAAU,EAAEnD,KAAK,CAACmD;QAAW,GALxBnD,KAAK,CAACE,IAMZ,CAAC;MAEN,KAAK,QAAQ;QACX,oBACET,IAAA,CAACX,eAAe;UAEdiE,KAAK,EAAE/C,KAAK,CAAC+C,KAAM;UACnBnB,KAAK,EAAEL,IAAI,CAACW,MAAM,CAAClC,KAAK,CAACE,IAAI,CAAC,KAAK,MAAO;UAC1C8C,QAAQ,EAAEC,CAAC,IAAI1B,IAAI,CAAC2B,YAAY,CAAClD,KAAK,CAACE,IAAI,CAAC,CAAC+C,CAAC,GAAG,MAAM,GAAG,OAAO,CAAE;UACnEE,UAAU,EAAEnD,KAAK,CAACmD;QAAW,GAJxBnD,KAAK,CAACE,IAKZ,CAAC;MAEN,KAAK,OAAO;QACV,oBACET,IAAA,CAACV,cAAc;UAEbgE,KAAK,EAAE/C,KAAK,CAAC+C,KAAM;UACnBnB,KAAK,EAAEL,IAAI,CAACW,MAAM,CAAClC,KAAK,CAACE,IAAI,CAAC,IAAI,IAAK;UACvC8C,QAAQ,EAAEC,CAAC,IAAI1B,IAAI,CAAC2B,YAAY,CAAClD,KAAK,CAACE,IAAI,CAAC,CAAC+C,CAAC,CAAE;UAChDG,OAAO,EAAEpD,KAAK,CAACoD,OAAO,IAAI,EAAG;UAC7B1C,QAAQ,EAAEV,KAAK,CAACU;QAAS,GALpBV,KAAK,CAACE,IAMZ,CAAC;MAEN,KAAK,WAAW;QACd,oBACET,IAAA,CAACT,kBAAkB;UAEjB+D,KAAK,EAAE/C,KAAK,CAAC+C,KAAM;UACnBnB,KAAK,EAAEL,IAAI,CAACW,MAAM,CAAClC,KAAK,CAACE,IAAI,CAAC,IAAI,IAAK;UACvC8C,QAAQ,EAAEC,CAAC,IAAI1B,IAAI,CAAC2B,YAAY,CAAClD,KAAK,CAACE,IAAI,CAAC,CAAC+C,CAAC,CAAE;UAChDG,OAAO,EAAEpD,KAAK,CAACoD,OAAO,IAAI,EAAG;UAC7B1C,QAAQ,EAAEV,KAAK,CAACU;QAAS,GALpBV,KAAK,CAACE,IAMZ,CAAC;MAEN,KAAK,UAAU;QACb,oBACET,IAAA,CAACR,iBAAiB;UAEhB8D,KAAK,EAAE/C,KAAK,CAAC+C,KAAM;UACnBM,WAAW,EAAErD,KAAK,CAACqD,WAAY;UAC/BD,OAAO,EAAEpD,KAAK,CAACoD,OAAO,IAAI,EAAG;UAC7BxB,KAAK,EAAEL,IAAI,CAACW,MAAM,CAAClC,KAAK,CAACE,IAAI,CAAC,IAAI,IAAK;UACvC8C,QAAQ,EAAEC,CAAC,IAAI1B,IAAI,CAAC2B,YAAY,CAAClD,KAAK,CAACE,IAAI,CAAC,CAAC+C,CAAC,IAAI,EAAE,CAAE;UACtDvC,QAAQ,EAAEV,KAAK,CAACU,QAAS;UACzByC,UAAU,EAAEnD,KAAK,CAACmD;QAAW,GAPxBnD,KAAK,CAACE,IAQZ,CAAC;MAEN,KAAK,MAAM;QACT,oBACET,IAAA,CAACP,aAAa;UAEZ6D,KAAK,EAAE/C,KAAK,CAAC+C,KAAM;UACnBnB,KAAK,EAAGJ,IAAI,CAACxB,KAAK,CAACE,IAAI,CAAC,IAAiB,EAAG;UAC5C8C,QAAQ,EAAEM,IAAI,IAAI5B,SAAS,CAAC1B,KAAK,CAACE,IAAI,EAAEoD,IAAI,CAAE;UAC9CD,WAAW,EAAErD,KAAK,CAACqD,WAAY;UAC/BF,UAAU,EAAEnD,KAAK,CAACmD;QAAW,GALxBnD,KAAK,CAACE,IAMZ,CAAC;MAEN,KAAK,QAAQ;QACX,oBACET,IAAA,CAACN,eAAe;UAEd4D,KAAK,EAAE/C,KAAK,CAAC+C,KAAM;UACnBnB,KAAK,EAAE2B,MAAM,CAAChC,IAAI,CAACW,MAAM,CAAClC,KAAK,CAACE,IAAI,CAAC,IAAI,CAAC,CAAE;UAC5C8C,QAAQ,EAAEC,CAAC,IAAI1B,IAAI,CAAC2B,YAAY,CAAClD,KAAK,CAACE,IAAI,CAAC,CAACG,MAAM,CAAC4C,CAAC,CAAC,CAAE;UACxDO,GAAG,EAAExD,KAAK,CAACwD,GAAG,IAAI,CAAE;UACpB9C,QAAQ,EAAEV,KAAK,CAACU;QAAS,GALpBV,KAAK,CAACE,IAMZ,CAAC;MAEN,KAAK,QAAQ;QACX,oBACET,IAAA,CAACL,eAAe;UAEd2D,KAAK,EAAE/C,KAAK,CAAC+C,KAAM;UACnBnB,KAAK,EAAE2B,MAAM,CAAChC,IAAI,CAACW,MAAM,CAAClC,KAAK,CAACE,IAAI,CAAC,IAAIF,KAAK,CAACM,GAAG,IAAI,CAAC,CAAE;UACzD0C,QAAQ,EAAEC,CAAC,IAAI1B,IAAI,CAAC2B,YAAY,CAAClD,KAAK,CAACE,IAAI,CAAC,CAACG,MAAM,CAAC4C,CAAC,CAAC,CAAE;UACxD3C,GAAG,EAAEN,KAAK,CAACM,GAAG,IAAI,CAAE;UACpBkD,GAAG,EAAExD,KAAK,CAACwD,GAAG,IAAI,GAAI;UACtBC,IAAI,EAAEzD,KAAK,CAACyD,IAAI,IAAI;QAAE,GANjBzD,KAAK,CAACE,IAOZ,CAAC;MAEN,KAAK,SAAS;QACZ,oBACET,IAAA,CAACJ,sBAAsB;UAErB0D,KAAK,EAAE/C,KAAK,CAAC+C,KAAM;UACnBnB,KAAK,EAAE2B,MAAM,CAAChC,IAAI,CAACW,MAAM,CAAClC,KAAK,CAACE,IAAI,CAAC,IAAIF,KAAK,CAACM,GAAG,IAAI,CAAC,CAAE;UACzD0C,QAAQ,EAAEC,CAAC,IAAI1B,IAAI,CAAC2B,YAAY,CAAClD,KAAK,CAACE,IAAI,CAAC,CAACG,MAAM,CAAC4C,CAAC,CAAC,CAAE;UACxD3C,GAAG,EAAEN,KAAK,CAACM,GAAG,IAAI,CAAE;UACpBkD,GAAG,EAAExD,KAAK,CAACwD,GAAG,IAAI,EAAG;UACrBC,IAAI,EAAEzD,KAAK,CAACyD,IAAI,IAAI;QAAE,GANjBzD,KAAK,CAACE,IAOZ,CAAC;MAEN;QACE,oBACET,IAAA,CAACb,cAAc;UAEbwB,IAAI,EAAEJ,KAAK,CAACI,IAAe;UAC3B2C,KAAK,EAAE/C,KAAK,CAAC+C,KAAM;UACnBM,WAAW,EAAErD,KAAK,CAACqD,WAAY;UAC/BF,UAAU,EAAEnD,KAAK,CAACmD,UAAW;UAC7BO,OAAO,EAAE1D,KAAK,CAAC0D,OAAQ;UACvBC,QAAQ,EAAE3D,KAAK,CAAC2D,QAAS;UACzBC,QAAQ,EAAE5D,KAAK,CAAC4D,QAAS;UACzBC,WAAW,EAAE7D,KAAK,CAAC6D,WAAY;UAC/BC,YAAY,EAAE9D,KAAK,CAAC8D,YAAa;UACjCC,MAAM,EAAE/D,KAAK,CAAC+D,MAAO;UACrBC,MAAM,EAAEhE,KAAK,CAACgE,MAAO;UAAA,GACjBnB;QAAK,GAZJ7C,KAAK,CAACE,IAaZ,CAAC;IAER;EACF,CAAC;EAED,MAAM+D,WAAW,GAAG7B,SAAS,CAACK,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;EAE7C,oBACE9C,KAAA,CAAChB,IAAI;IAACuF,KAAK,EAAE7C,cAAe;IAACC,MAAM,EAAEA,MAAO;IAAA6C,QAAA,GACzCF,WAAW,CAAC5B,GAAG,CAACO,WAAW,CAAC,EAC5BT,QAAQ,CAACE,GAAG,CAACE,OAAO,IAAI;MACvB,MAAMtC,MAAM,GAAGmC,SAAS,CAACK,GAAG,CAACF,OAAO,CAAC6B,EAAE,CAAC,IAAI,EAAE;MAC9C,IAAI,CAACnE,MAAM,CAACa,MAAM,EAAE,OAAO,IAAI;MAC/B,oBACErB,IAAA,CAACH,gBAAgB;QAEf+E,KAAK,EAAE9B,OAAO,CAAC8B,KAAM;QACrBC,WAAW,EAAE/B,OAAO,CAAC+B,WAAY;QACjCC,IAAI,EAAEhC,OAAO,CAACgC,IAAK;QACnBC,WAAW,EAAEjC,OAAO,CAACiC,WAAY;QAAAL,QAAA,EAEhClE,MAAM,CAACoC,GAAG,CAACO,WAAW;MAAC,GANnBL,OAAO,CAAC6B,EAOG,CAAC;IAEvB,CAAC,CAAC,EACDhD,YAAY,GAAG;MACdqD,MAAM,EAAElD,IAAI,CAACkD,MAAM;MACnBvC,MAAM,EAAEX,IAAI,CAACW,MAAM;MACnBV,IAAI;MACJkD,YAAY,EAAEnD,IAAI,CAACmD;IACrB,CAAC,CAAC;EAAA,CACE,CAAC;AAEX","ignoreList":[]}
|