@1money/component-ui 0.0.90 → 0.0.91
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/es/business/Dialog/BaseDialog/BaseDialog.d.ts +3 -0
- package/es/business/Dialog/BaseDialog/BaseDialog.js +131 -0
- package/es/business/Dialog/BaseDialog/constants.d.ts +12 -0
- package/es/business/Dialog/BaseDialog/constants.js +13 -0
- package/es/business/Dialog/BaseDialog/index.d.ts +4 -0
- package/es/business/Dialog/BaseDialog/index.js +5 -0
- package/es/business/Dialog/BaseDialog/interface.d.ts +69 -0
- package/es/business/Dialog/BaseDialog/interface.js +2 -0
- package/es/business/Dialog/BaseDialog/style/BaseDialog.css +72 -0
- package/es/business/Dialog/BaseDialog/style/css.js +2 -0
- package/es/business/Dialog/BaseDialog/style/index.d.ts +1 -0
- package/es/business/Dialog/BaseDialog/style/index.js +2 -0
- package/es/business/Dialog/Descriptions/Descriptions.d.ts +3 -0
- package/es/business/Dialog/Descriptions/Descriptions.js +102 -0
- package/es/business/Dialog/Descriptions/constants.d.ts +16 -0
- package/es/business/Dialog/Descriptions/constants.js +24 -0
- package/es/business/Dialog/Descriptions/index.d.ts +4 -0
- package/es/business/Dialog/Descriptions/index.js +5 -0
- package/es/business/Dialog/Descriptions/interface.d.ts +58 -0
- package/es/business/Dialog/{ResultDialog → Descriptions}/interface.js +1 -1
- package/es/business/Dialog/Descriptions/style/Descriptions.css +60 -0
- package/es/business/Dialog/{ResultDialog → Descriptions}/style/css.js +2 -2
- package/es/business/Dialog/Descriptions/style/index.d.ts +1 -0
- package/es/business/Dialog/{ResultDialog → Descriptions}/style/index.js +2 -2
- package/es/business/Dialog/DetailsDialog/DetailsDialog.d.ts +3 -0
- package/es/business/Dialog/DetailsDialog/DetailsDialog.js +101 -0
- package/es/business/Dialog/DetailsDialog/index.d.ts +4 -0
- package/es/business/Dialog/DetailsDialog/index.js +5 -0
- package/es/business/Dialog/DetailsDialog/interface.d.ts +31 -0
- package/es/business/Dialog/DetailsDialog/interface.js +2 -0
- package/es/business/Dialog/DetailsDialog/style/DetailsDialog.css +43 -0
- package/es/business/Dialog/DetailsDialog/style/css.js +2 -0
- package/es/business/Dialog/DetailsDialog/style/index.d.ts +1 -0
- package/es/business/Dialog/DetailsDialog/style/index.js +2 -0
- package/es/business/Dialog/FormDialog/FormDialog.d.ts +5 -0
- package/es/business/Dialog/FormDialog/FormDialog.js +121 -0
- package/es/business/Dialog/FormDialog/index.d.ts +6 -0
- package/es/business/Dialog/FormDialog/index.js +6 -0
- package/es/business/Dialog/FormDialog/interface.d.ts +53 -0
- package/es/business/Dialog/FormDialog/interface.js +2 -0
- package/{lib/business/Dialog/TransactionDialog/style/TransactionDialog.css → es/business/Dialog/FormDialog/style/FormDialog.css} +11 -11
- package/es/business/Dialog/FormDialog/style/css.js +2 -0
- package/es/business/Dialog/FormDialog/style/index.d.ts +1 -0
- package/es/business/Dialog/FormDialog/style/index.js +2 -0
- package/es/business/Dialog/VerificationDialog/VerificationDialog.js +249 -95
- package/es/business/Dialog/VerificationDialog/constants.d.ts +8 -35
- package/es/business/Dialog/VerificationDialog/constants.js +8 -30
- package/es/business/Dialog/VerificationDialog/index.d.ts +2 -1
- package/es/business/Dialog/VerificationDialog/index.js +3 -2
- package/es/business/Dialog/VerificationDialog/interface.d.ts +42 -106
- package/es/business/Dialog/VerificationDialog/style/VerificationDialog.css +17 -6
- package/es/business/Dialog/index.d.ts +5 -2
- package/es/business/Dialog/index.js +8 -3
- package/es/business/Dialog/variants/DeleteDialog.d.ts +3 -0
- package/es/business/Dialog/variants/DeleteDialog.js +20 -0
- package/es/business/Dialog/variants/FailureDialog.d.ts +3 -0
- package/es/business/Dialog/variants/FailureDialog.js +20 -0
- package/es/business/Dialog/variants/LoadingDialog.d.ts +33 -0
- package/es/business/Dialog/variants/LoadingDialog.js +189 -0
- package/es/business/Dialog/variants/PendingDialog.d.ts +3 -0
- package/es/business/Dialog/variants/PendingDialog.js +19 -0
- package/es/business/Dialog/variants/SuccessDialog.d.ts +3 -0
- package/es/business/Dialog/variants/SuccessDialog.js +19 -0
- package/es/business/Dialog/variants/index.d.ts +10 -0
- package/es/business/Dialog/variants/index.js +9 -0
- package/es/business/Dialog/variants/style/LoadingDialog.css +62 -0
- package/es/business/Dialog/variants/style/css.js +2 -0
- package/es/business/Dialog/variants/style/index.d.ts +1 -0
- package/es/business/Dialog/variants/style/index.js +2 -0
- package/es/business/FieldList/index.d.ts +30 -0
- package/es/business/FieldList/index.js +59 -0
- package/es/business/FieldList/style/FieldList.css +89 -0
- package/es/business/FieldList/style/css.js +2 -0
- package/es/business/FieldList/style/index.d.ts +1 -0
- package/es/business/FieldList/style/index.js +2 -0
- package/es/business/FormPage/FormPage.d.ts +4 -0
- package/es/business/FormPage/FormPage.js +92 -0
- package/es/business/FormPage/index.d.ts +4 -0
- package/es/business/FormPage/index.js +5 -0
- package/es/business/FormPage/interface.d.ts +53 -0
- package/es/business/FormPage/interface.js +2 -0
- package/es/business/Select/Asset/AssetSelect.js +5 -1
- package/es/business/Select/Country/CountrySelect.js +5 -1
- package/es/business/Select/Currency/CurrencySelect.js +5 -1
- package/es/business/Select/Network/NetworkSelect.js +5 -1
- package/es/business/Select/PaymentMethod/PaymentMethodSelect.js +5 -1
- package/es/business/index.d.ts +3 -0
- package/es/business/index.js +3 -1
- package/es/business/shared/formCore/BaseProForm.d.ts +40 -0
- package/es/business/shared/formCore/BaseProForm.js +87 -0
- package/es/business/shared/formCore/useRelayedFormRef.d.ts +16 -0
- package/es/business/shared/formCore/useRelayedFormRef.js +43 -0
- package/es/business/shared/formCore/useSubmitAction.d.ts +11 -0
- package/es/business/shared/formCore/useSubmitAction.js +92 -0
- package/es/components/ActionBar/ActionBar.d.ts +3 -0
- package/es/components/ActionBar/ActionBar.js +115 -0
- package/es/components/ActionBar/constants.d.ts +29 -0
- package/es/components/ActionBar/constants.js +30 -0
- package/es/components/ActionBar/index.d.ts +4 -0
- package/es/components/ActionBar/index.js +5 -0
- package/es/components/ActionBar/interface.d.ts +82 -0
- package/es/components/ActionBar/interface.js +2 -0
- package/es/components/ActionBar/style/ActionBar.css +44 -0
- package/es/components/ActionBar/style/css.js +2 -0
- package/es/components/ActionBar/style/index.d.ts +1 -0
- package/es/components/ActionBar/style/index.js +2 -0
- package/es/components/Dialog/Dialog.js +13 -8
- package/es/components/Dialog/interface.d.ts +11 -0
- package/es/components/Dialog/style/Dialog.css +7 -4
- package/es/{business/Dialog/ResultDialog/style/ResultDialog.css → components/Dialog/style/DialogBare.css} +10 -5
- package/es/components/Dialog/style/css.js +2 -1
- package/es/components/Dialog/style/index.d.ts +1 -0
- package/es/components/Dialog/style/index.js +2 -1
- package/es/components/FormLayout/FormLayout.d.ts +25 -0
- package/es/components/FormLayout/FormLayout.js +128 -0
- package/es/components/FormLayout/config.d.ts +96 -0
- package/es/components/FormLayout/config.js +93 -0
- package/es/components/FormLayout/context.d.ts +9 -0
- package/es/components/FormLayout/context.js +13 -0
- package/es/components/FormLayout/index.d.ts +7 -0
- package/es/components/FormLayout/index.js +7 -0
- package/es/components/FormLayout/interface.d.ts +51 -0
- package/es/components/FormLayout/interface.js +2 -0
- package/es/components/FormLayout/style/FormLayout.css +110 -0
- package/es/components/FormLayout/style/css.js +2 -0
- package/es/components/FormLayout/style/index.d.ts +1 -0
- package/es/components/FormLayout/style/index.js +2 -0
- package/es/components/Grid/Col.d.ts +1 -0
- package/es/components/Grid/Col.js +2 -1
- package/es/components/Grid/Row.d.ts +1 -0
- package/es/components/Grid/Row.js +2 -1
- package/es/components/Input/Input/Input.css +1 -1
- package/es/components/Input/Input/Input.js +16 -4
- package/es/components/Input/Mask/Mask.js +3 -2
- package/es/components/Input/interface.d.ts +5 -0
- package/es/components/ProForm/ProForm.js +24 -13
- package/es/components/ProForm/ProFormItem.js +2 -1
- package/es/components/ProForm/core/constants.d.ts +1 -1
- package/es/components/ProForm/core/constants.js +5 -2
- package/es/components/ProForm/style/ProForm.css +1 -1
- package/es/components/Select/Select.js +8 -3
- package/es/index.css +1 -1
- package/es/index.d.ts +5 -1
- package/es/index.js +3 -1
- package/lib/business/Dialog/BaseDialog/BaseDialog.d.ts +3 -0
- package/lib/business/Dialog/BaseDialog/BaseDialog.js +140 -0
- package/lib/business/Dialog/BaseDialog/constants.d.ts +12 -0
- package/lib/business/Dialog/BaseDialog/constants.js +19 -0
- package/lib/business/Dialog/BaseDialog/index.d.ts +4 -0
- package/lib/business/Dialog/BaseDialog/index.js +30 -0
- package/lib/business/Dialog/BaseDialog/interface.d.ts +69 -0
- package/lib/business/Dialog/BaseDialog/interface.js +6 -0
- package/lib/business/Dialog/BaseDialog/style/BaseDialog.css +72 -0
- package/lib/business/Dialog/BaseDialog/style/css.js +4 -0
- package/lib/business/Dialog/BaseDialog/style/index.d.ts +1 -0
- package/lib/business/Dialog/BaseDialog/style/index.js +4 -0
- package/lib/business/Dialog/Descriptions/Descriptions.d.ts +3 -0
- package/lib/business/Dialog/Descriptions/Descriptions.js +112 -0
- package/lib/business/Dialog/Descriptions/constants.d.ts +16 -0
- package/lib/business/Dialog/Descriptions/constants.js +30 -0
- package/lib/business/Dialog/Descriptions/index.d.ts +4 -0
- package/lib/business/Dialog/Descriptions/index.js +30 -0
- package/lib/business/Dialog/Descriptions/interface.d.ts +58 -0
- package/lib/business/Dialog/{ResultDialog → Descriptions}/interface.js +1 -1
- package/lib/business/Dialog/Descriptions/style/Descriptions.css +60 -0
- package/lib/business/Dialog/{ResultDialog → Descriptions}/style/css.js +2 -2
- package/lib/business/Dialog/Descriptions/style/index.d.ts +1 -0
- package/lib/business/Dialog/{ResultDialog → Descriptions}/style/index.js +2 -2
- package/lib/business/Dialog/DetailsDialog/DetailsDialog.d.ts +3 -0
- package/lib/business/Dialog/DetailsDialog/DetailsDialog.js +111 -0
- package/lib/business/Dialog/DetailsDialog/index.d.ts +4 -0
- package/lib/business/Dialog/DetailsDialog/index.js +30 -0
- package/lib/business/Dialog/DetailsDialog/interface.d.ts +31 -0
- package/lib/business/Dialog/DetailsDialog/interface.js +6 -0
- package/lib/business/Dialog/DetailsDialog/style/DetailsDialog.css +43 -0
- package/lib/business/Dialog/DetailsDialog/style/css.js +4 -0
- package/lib/business/Dialog/DetailsDialog/style/index.d.ts +1 -0
- package/lib/business/Dialog/DetailsDialog/style/index.js +4 -0
- package/lib/business/Dialog/FormDialog/FormDialog.d.ts +5 -0
- package/lib/business/Dialog/FormDialog/FormDialog.js +130 -0
- package/lib/business/Dialog/FormDialog/index.d.ts +6 -0
- package/lib/business/Dialog/FormDialog/index.js +52 -0
- package/lib/business/Dialog/FormDialog/interface.d.ts +53 -0
- package/lib/business/Dialog/FormDialog/interface.js +6 -0
- package/{es/business/Dialog/TransactionDialog/style/TransactionDialog.css → lib/business/Dialog/FormDialog/style/FormDialog.css} +11 -11
- package/lib/business/Dialog/FormDialog/style/css.js +4 -0
- package/lib/business/Dialog/FormDialog/style/index.d.ts +1 -0
- package/lib/business/Dialog/FormDialog/style/index.js +4 -0
- package/lib/business/Dialog/VerificationDialog/VerificationDialog.js +250 -92
- package/lib/business/Dialog/VerificationDialog/constants.d.ts +8 -35
- package/lib/business/Dialog/VerificationDialog/constants.js +9 -31
- package/lib/business/Dialog/VerificationDialog/index.d.ts +2 -1
- package/lib/business/Dialog/VerificationDialog/index.js +4 -17
- package/lib/business/Dialog/VerificationDialog/interface.d.ts +42 -106
- package/lib/business/Dialog/VerificationDialog/style/VerificationDialog.css +17 -6
- package/lib/business/Dialog/index.d.ts +5 -2
- package/lib/business/Dialog/index.js +31 -9
- package/lib/business/Dialog/variants/DeleteDialog.d.ts +3 -0
- package/lib/business/Dialog/variants/DeleteDialog.js +26 -0
- package/lib/business/Dialog/variants/FailureDialog.d.ts +3 -0
- package/lib/business/Dialog/variants/FailureDialog.js +26 -0
- package/lib/business/Dialog/variants/LoadingDialog.d.ts +33 -0
- package/lib/business/Dialog/variants/LoadingDialog.js +199 -0
- package/lib/business/Dialog/variants/PendingDialog.d.ts +3 -0
- package/lib/business/Dialog/variants/PendingDialog.js +25 -0
- package/lib/business/Dialog/variants/SuccessDialog.d.ts +3 -0
- package/lib/business/Dialog/variants/SuccessDialog.js +25 -0
- package/lib/business/Dialog/variants/index.d.ts +10 -0
- package/lib/business/Dialog/variants/index.js +41 -0
- package/lib/business/Dialog/variants/style/LoadingDialog.css +62 -0
- package/lib/business/Dialog/variants/style/css.js +4 -0
- package/lib/business/Dialog/variants/style/index.d.ts +1 -0
- package/lib/business/Dialog/variants/style/index.js +4 -0
- package/lib/business/FieldList/index.d.ts +30 -0
- package/lib/business/FieldList/index.js +67 -0
- package/lib/business/FieldList/style/FieldList.css +89 -0
- package/lib/business/FieldList/style/css.js +4 -0
- package/lib/business/FieldList/style/index.d.ts +1 -0
- package/lib/business/FieldList/style/index.js +4 -0
- package/lib/business/FormPage/FormPage.d.ts +4 -0
- package/lib/business/FormPage/FormPage.js +98 -0
- package/lib/business/FormPage/index.d.ts +4 -0
- package/lib/business/FormPage/index.js +30 -0
- package/lib/business/FormPage/interface.d.ts +53 -0
- package/lib/business/FormPage/interface.js +6 -0
- package/lib/business/Select/Asset/AssetSelect.js +5 -1
- package/lib/business/Select/Country/CountrySelect.js +5 -1
- package/lib/business/Select/Currency/CurrencySelect.js +5 -1
- package/lib/business/Select/Network/NetworkSelect.js +5 -1
- package/lib/business/Select/PaymentMethod/PaymentMethodSelect.js +5 -1
- package/lib/business/index.d.ts +3 -0
- package/lib/business/index.js +27 -1
- package/lib/business/shared/formCore/BaseProForm.d.ts +40 -0
- package/lib/business/shared/formCore/BaseProForm.js +93 -0
- package/lib/business/shared/formCore/useRelayedFormRef.d.ts +16 -0
- package/lib/business/shared/formCore/useRelayedFormRef.js +49 -0
- package/lib/business/shared/formCore/useSubmitAction.d.ts +11 -0
- package/lib/business/shared/formCore/useSubmitAction.js +99 -0
- package/lib/components/ActionBar/ActionBar.d.ts +3 -0
- package/lib/components/ActionBar/ActionBar.js +124 -0
- package/lib/components/ActionBar/constants.d.ts +29 -0
- package/lib/components/ActionBar/constants.js +36 -0
- package/lib/components/ActionBar/index.d.ts +4 -0
- package/lib/components/ActionBar/index.js +30 -0
- package/lib/components/ActionBar/interface.d.ts +82 -0
- package/lib/components/ActionBar/interface.js +6 -0
- package/lib/components/ActionBar/style/ActionBar.css +44 -0
- package/lib/components/ActionBar/style/css.js +4 -0
- package/lib/components/ActionBar/style/index.d.ts +1 -0
- package/lib/components/ActionBar/style/index.js +4 -0
- package/lib/components/Dialog/Dialog.js +13 -8
- package/lib/components/Dialog/interface.d.ts +11 -0
- package/lib/components/Dialog/style/Dialog.css +7 -4
- package/lib/{business/Dialog/ResultDialog/style/ResultDialog.css → components/Dialog/style/DialogBare.css} +10 -5
- package/lib/components/Dialog/style/css.js +2 -1
- package/lib/components/Dialog/style/index.d.ts +1 -0
- package/lib/components/Dialog/style/index.js +2 -1
- package/lib/components/FormLayout/FormLayout.d.ts +25 -0
- package/lib/components/FormLayout/FormLayout.js +138 -0
- package/lib/components/FormLayout/config.d.ts +96 -0
- package/lib/components/FormLayout/config.js +99 -0
- package/lib/components/FormLayout/context.d.ts +9 -0
- package/lib/components/FormLayout/context.js +19 -0
- package/lib/components/FormLayout/index.d.ts +7 -0
- package/lib/components/FormLayout/index.js +102 -0
- package/lib/components/FormLayout/interface.d.ts +51 -0
- package/lib/components/FormLayout/interface.js +6 -0
- package/lib/components/FormLayout/style/FormLayout.css +110 -0
- package/lib/components/FormLayout/style/css.js +4 -0
- package/lib/components/FormLayout/style/index.d.ts +1 -0
- package/lib/components/FormLayout/style/index.js +4 -0
- package/lib/components/Grid/Col.d.ts +1 -0
- package/lib/components/Grid/Col.js +2 -1
- package/lib/components/Grid/Row.d.ts +1 -0
- package/lib/components/Grid/Row.js +2 -1
- package/lib/components/Input/Input/Input.css +1 -1
- package/lib/components/Input/Input/Input.js +16 -4
- package/lib/components/Input/Mask/Mask.js +3 -2
- package/lib/components/Input/interface.d.ts +5 -0
- package/lib/components/ProForm/ProForm.js +27 -16
- package/lib/components/ProForm/ProFormItem.js +2 -1
- package/lib/components/ProForm/core/constants.d.ts +1 -1
- package/lib/components/ProForm/core/constants.js +5 -2
- package/lib/components/ProForm/style/ProForm.css +1 -1
- package/lib/components/Select/Select.js +8 -3
- package/lib/index.css +1 -1
- package/lib/index.d.ts +5 -1
- package/lib/index.js +33 -1
- package/package.json +39 -9
- package/scripts/mcp-server/examples.generated.json +84 -0
- package/scripts/mcp-server/index.generated.json +743 -152
- package/es/business/Dialog/ResultDialog/ResultDialog.d.ts +0 -3
- package/es/business/Dialog/ResultDialog/ResultDialog.js +0 -126
- package/es/business/Dialog/ResultDialog/constants.d.ts +0 -27
- package/es/business/Dialog/ResultDialog/constants.js +0 -24
- package/es/business/Dialog/ResultDialog/index.d.ts +0 -3
- package/es/business/Dialog/ResultDialog/index.js +0 -4
- package/es/business/Dialog/ResultDialog/interface.d.ts +0 -95
- package/es/business/Dialog/ResultDialog/presets.d.ts +0 -178
- package/es/business/Dialog/ResultDialog/presets.js +0 -139
- package/es/business/Dialog/ResultDialog/style/index.d.ts +0 -1
- package/es/business/Dialog/TransactionDialog/TransactionDialog.d.ts +0 -3
- package/es/business/Dialog/TransactionDialog/TransactionDialog.js +0 -174
- package/es/business/Dialog/TransactionDialog/constants.d.ts +0 -34
- package/es/business/Dialog/TransactionDialog/constants.js +0 -33
- package/es/business/Dialog/TransactionDialog/index.d.ts +0 -3
- package/es/business/Dialog/TransactionDialog/index.js +0 -4
- package/es/business/Dialog/TransactionDialog/interface.d.ts +0 -116
- package/es/business/Dialog/TransactionDialog/interface.js +0 -2
- package/es/business/Dialog/TransactionDialog/presets.d.ts +0 -89
- package/es/business/Dialog/TransactionDialog/presets.js +0 -62
- package/es/business/Dialog/TransactionDialog/style/css.js +0 -2
- package/es/business/Dialog/TransactionDialog/style/index.d.ts +0 -1
- package/es/business/Dialog/TransactionDialog/style/index.js +0 -2
- package/es/business/Dialog/VerificationDialog/ResendRow.d.ts +0 -14
- package/es/business/Dialog/VerificationDialog/ResendRow.js +0 -65
- package/es/business/Dialog/VerificationDialog/hooks/index.d.ts +0 -4
- package/es/business/Dialog/VerificationDialog/hooks/index.js +0 -3
- package/es/business/Dialog/VerificationDialog/hooks/useOtpVerification.d.ts +0 -50
- package/es/business/Dialog/VerificationDialog/hooks/useOtpVerification.js +0 -138
- package/es/business/Dialog/VerificationDialog/hooks/useResendCountdown.d.ts +0 -26
- package/es/business/Dialog/VerificationDialog/hooks/useResendCountdown.js +0 -103
- package/lib/business/Dialog/ResultDialog/ResultDialog.d.ts +0 -3
- package/lib/business/Dialog/ResultDialog/ResultDialog.js +0 -132
- package/lib/business/Dialog/ResultDialog/constants.d.ts +0 -27
- package/lib/business/Dialog/ResultDialog/constants.js +0 -30
- package/lib/business/Dialog/ResultDialog/index.d.ts +0 -3
- package/lib/business/Dialog/ResultDialog/index.js +0 -40
- package/lib/business/Dialog/ResultDialog/interface.d.ts +0 -95
- package/lib/business/Dialog/ResultDialog/presets.d.ts +0 -178
- package/lib/business/Dialog/ResultDialog/presets.js +0 -145
- package/lib/business/Dialog/ResultDialog/style/index.d.ts +0 -1
- package/lib/business/Dialog/TransactionDialog/TransactionDialog.d.ts +0 -3
- package/lib/business/Dialog/TransactionDialog/TransactionDialog.js +0 -180
- package/lib/business/Dialog/TransactionDialog/constants.d.ts +0 -34
- package/lib/business/Dialog/TransactionDialog/constants.js +0 -39
- package/lib/business/Dialog/TransactionDialog/index.d.ts +0 -3
- package/lib/business/Dialog/TransactionDialog/index.js +0 -40
- package/lib/business/Dialog/TransactionDialog/interface.d.ts +0 -116
- package/lib/business/Dialog/TransactionDialog/interface.js +0 -6
- package/lib/business/Dialog/TransactionDialog/presets.d.ts +0 -89
- package/lib/business/Dialog/TransactionDialog/presets.js +0 -68
- package/lib/business/Dialog/TransactionDialog/style/css.js +0 -4
- package/lib/business/Dialog/TransactionDialog/style/index.d.ts +0 -1
- package/lib/business/Dialog/TransactionDialog/style/index.js +0 -4
- package/lib/business/Dialog/VerificationDialog/ResendRow.d.ts +0 -14
- package/lib/business/Dialog/VerificationDialog/ResendRow.js +0 -71
- package/lib/business/Dialog/VerificationDialog/hooks/index.d.ts +0 -4
- package/lib/business/Dialog/VerificationDialog/hooks/index.js +0 -20
- package/lib/business/Dialog/VerificationDialog/hooks/useOtpVerification.d.ts +0 -50
- package/lib/business/Dialog/VerificationDialog/hooks/useOtpVerification.js +0 -145
- package/lib/business/Dialog/VerificationDialog/hooks/useResendCountdown.d.ts +0 -26
- package/lib/business/Dialog/VerificationDialog/hooks/useResendCountdown.js +0 -110
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import type { ReactNode } from 'react';
|
|
2
|
-
import type { IconName } from "../../../components/Icons";
|
|
3
|
-
/** Default copy for the optional help row. */
|
|
4
|
-
export interface TransactionDialogPresetHelp {
|
|
5
|
-
/** Muted prompt text. */
|
|
6
|
-
promptText?: ReactNode;
|
|
7
|
-
/** Trailing brand-colored action text. */
|
|
8
|
-
actionText?: ReactNode;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Pre-canned config for a transaction-status scenario. A preset fills the
|
|
12
|
-
* dialog's illustration, title, description, close icon, the primary action
|
|
13
|
-
* label, and the help row; the consumer wires the handlers and supplies the
|
|
14
|
-
* dynamic `details` rows. Any explicit prop overrides the preset.
|
|
15
|
-
*/
|
|
16
|
-
export interface TransactionDialogPresetCopy {
|
|
17
|
-
/** Left-aligned 74px illustration. */
|
|
18
|
-
illustration: IconName;
|
|
19
|
-
/** Dialog heading. */
|
|
20
|
-
title: ReactNode;
|
|
21
|
-
/** Supporting copy under the title. */
|
|
22
|
-
description: ReactNode;
|
|
23
|
-
/** Default label for the primary action, when one is rendered. */
|
|
24
|
-
primaryLabel?: ReactNode;
|
|
25
|
-
/**
|
|
26
|
-
* Whether the close (X) icon shows by default.
|
|
27
|
-
* @default true
|
|
28
|
-
*/
|
|
29
|
-
showCloseIcon?: boolean;
|
|
30
|
-
/** Default help-row copy below the actions. */
|
|
31
|
-
help?: TransactionDialogPresetHelp;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Canonical transaction-status scenarios. Pass a leaf straight to
|
|
35
|
-
* `TransactionDialog`'s `preset` prop — there is no string key to remember; the
|
|
36
|
-
* IDE navigates and type-checks it.
|
|
37
|
-
*
|
|
38
|
-
* Copy is taken from the Figma "Transaction completed" frame and the scp-ui Send
|
|
39
|
-
* result statuses (`INIT` → `initiated`, `FAILURE` → `failed`, `PENDING` →
|
|
40
|
-
* `pending`).
|
|
41
|
-
*
|
|
42
|
-
* @example
|
|
43
|
-
* ```tsx
|
|
44
|
-
* import { TRANSACTION_DIALOG_PRESETS } from '@1money/component-ui/business/Dialog/TransactionDialog';
|
|
45
|
-
*
|
|
46
|
-
* <TransactionDialog
|
|
47
|
-
* open={open}
|
|
48
|
-
* preset={TRANSACTION_DIALOG_PRESETS.failed}
|
|
49
|
-
* details={details}
|
|
50
|
-
* primaryAction={{ onClick: retry }}
|
|
51
|
-
* secondaryAction={{ label: 'Close', onClick: close }}
|
|
52
|
-
* help={{ onClick: openSupport }}
|
|
53
|
-
* onClose={close}
|
|
54
|
-
* />;
|
|
55
|
-
* ```
|
|
56
|
-
*/
|
|
57
|
-
export declare const TRANSACTION_DIALOG_PRESETS: {
|
|
58
|
-
readonly completed: {
|
|
59
|
-
readonly illustration: "illusChecked";
|
|
60
|
-
readonly title: "Transaction completed";
|
|
61
|
-
readonly description: "Your funds have been sent successfully.";
|
|
62
|
-
readonly primaryLabel: "View in transaction history";
|
|
63
|
-
readonly showCloseIcon: true;
|
|
64
|
-
readonly help: TransactionDialogPresetHelp;
|
|
65
|
-
};
|
|
66
|
-
readonly initiated: {
|
|
67
|
-
readonly illustration: "illusChecked";
|
|
68
|
-
readonly title: "Your transaction initiated";
|
|
69
|
-
readonly description: "We will send you an email when the transaction is completed.";
|
|
70
|
-
readonly primaryLabel: "View in transaction history";
|
|
71
|
-
readonly showCloseIcon: true;
|
|
72
|
-
};
|
|
73
|
-
readonly failed: {
|
|
74
|
-
readonly illustration: "illusError";
|
|
75
|
-
readonly title: "Your transaction failed";
|
|
76
|
-
readonly description: "Please try again or contact support for assistance.";
|
|
77
|
-
readonly primaryLabel: "Try again";
|
|
78
|
-
readonly showCloseIcon: true;
|
|
79
|
-
readonly help: TransactionDialogPresetHelp;
|
|
80
|
-
};
|
|
81
|
-
readonly pending: {
|
|
82
|
-
readonly illustration: "illusPending";
|
|
83
|
-
readonly title: "Your Transaction is Under Review";
|
|
84
|
-
readonly description: "Please wait for the transaction to be completed.";
|
|
85
|
-
readonly primaryLabel: "View in transaction history";
|
|
86
|
-
readonly showCloseIcon: true;
|
|
87
|
-
readonly help: TransactionDialogPresetHelp;
|
|
88
|
-
};
|
|
89
|
-
};
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
var SUPPORT_HELP = {
|
|
2
|
-
promptText: 'Trouble with your transaction?',
|
|
3
|
-
actionText: 'Let us help!'
|
|
4
|
-
};
|
|
5
|
-
/**
|
|
6
|
-
* Canonical transaction-status scenarios. Pass a leaf straight to
|
|
7
|
-
* `TransactionDialog`'s `preset` prop — there is no string key to remember; the
|
|
8
|
-
* IDE navigates and type-checks it.
|
|
9
|
-
*
|
|
10
|
-
* Copy is taken from the Figma "Transaction completed" frame and the scp-ui Send
|
|
11
|
-
* result statuses (`INIT` → `initiated`, `FAILURE` → `failed`, `PENDING` →
|
|
12
|
-
* `pending`).
|
|
13
|
-
*
|
|
14
|
-
* @example
|
|
15
|
-
* ```tsx
|
|
16
|
-
* import { TRANSACTION_DIALOG_PRESETS } from '@1money/component-ui/business/Dialog/TransactionDialog';
|
|
17
|
-
*
|
|
18
|
-
* <TransactionDialog
|
|
19
|
-
* open={open}
|
|
20
|
-
* preset={TRANSACTION_DIALOG_PRESETS.failed}
|
|
21
|
-
* details={details}
|
|
22
|
-
* primaryAction={{ onClick: retry }}
|
|
23
|
-
* secondaryAction={{ label: 'Close', onClick: close }}
|
|
24
|
-
* help={{ onClick: openSupport }}
|
|
25
|
-
* onClose={close}
|
|
26
|
-
* />;
|
|
27
|
-
* ```
|
|
28
|
-
*/
|
|
29
|
-
export var TRANSACTION_DIALOG_PRESETS = {
|
|
30
|
-
completed: {
|
|
31
|
-
illustration: 'illusChecked',
|
|
32
|
-
title: 'Transaction completed',
|
|
33
|
-
description: 'Your funds have been sent successfully.',
|
|
34
|
-
primaryLabel: 'View in transaction history',
|
|
35
|
-
showCloseIcon: true,
|
|
36
|
-
help: SUPPORT_HELP
|
|
37
|
-
},
|
|
38
|
-
initiated: {
|
|
39
|
-
illustration: 'illusChecked',
|
|
40
|
-
title: 'Your transaction initiated',
|
|
41
|
-
description: 'We will send you an email when the transaction is completed.',
|
|
42
|
-
primaryLabel: 'View in transaction history',
|
|
43
|
-
showCloseIcon: true
|
|
44
|
-
},
|
|
45
|
-
failed: {
|
|
46
|
-
illustration: 'illusError',
|
|
47
|
-
title: 'Your transaction failed',
|
|
48
|
-
description: 'Please try again or contact support for assistance.',
|
|
49
|
-
primaryLabel: 'Try again',
|
|
50
|
-
showCloseIcon: true,
|
|
51
|
-
help: SUPPORT_HELP
|
|
52
|
-
},
|
|
53
|
-
pending: {
|
|
54
|
-
illustration: 'illusPending',
|
|
55
|
-
title: 'Your Transaction is Under Review',
|
|
56
|
-
description: 'Please wait for the transaction to be completed.',
|
|
57
|
-
primaryLabel: 'View in transaction history',
|
|
58
|
-
showCloseIcon: true,
|
|
59
|
-
help: SUPPORT_HELP
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9zcmMvYnVzaW5lc3MvRGlhbG9nL1RyYW5zYWN0aW9uRGlhbG9nL3ByZXNldHMudHMiLCJidXNpbmVzcy9EaWFsb2cvVHJhbnNhY3Rpb25EaWFsb2cvcHJlc2V0cy5qcyJdLCJuYW1lcyI6WyJTVVBQT1JUX0hFTFAiLCJwcm9tcHRUZXh0IiwiYWN0aW9uVGV4dCIsIlRSQU5TQUNUSU9OX0RJQUxPR19QUkVTRVRTIiwiY29tcGxldGVkIiwiaWxsdXN0cmF0aW9uIiwidGl0bGUiLCJkZXNjcmlwdGlvbiIsInByaW1hcnlMYWJlbCIsInNob3dDbG9zZUljb24iLCJoZWxwIiwiaW5pdGlhdGVkIiwiZmFpbGVkIiwicGVuZGluZyJdLCJtYXBwaW5ncyI6IkFBbUNBLElBQU1BLFlBQVksR0FBZ0M7RUFDaERDLFVBQVUsRUFBRSxnQ0FBZ0M7RUFDNUNDLFVBQVUsRUFBRTtBQ2xDZCxDRG1DQztBQUVEO0FDbkNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QURxQ0EsT0FBTyxJQUFNQywwQkFBMEIsR0FBRztFQUN4Q0MsU0FBUyxFQUFFO0lBQ1RDLFlBQVksRUFBRSxjQUFjO0lBQzVCQyxLQUFLLEVBQUUsdUJBQXVCO0lBQzlCQyxXQUFXLEVBQUUseUNBQXlDO0lBQ3REQyxZQUFZLEVBQUUsNkJBQTZCO0lBQzNDQyxhQUFhLEVBQUUsSUFBSTtJQUNuQkMsSUFBSSxFQUFFVjtFQ25DTixDRG9DRDtFQUNEVyxTQUFTLEVBQUU7SUFDVE4sWUFBWSxFQUFFLGNBQWM7SUFDNUJDLEtBQUssRUFBRSw0QkFBNEI7SUFDbkNDLFdBQVcsRUFBRSw4REFBOEQ7SUFDM0VDLFlBQVksRUFBRSw2QkFBNkI7SUFDM0NDLGFBQWEsRUFBRTtFQ25DZixDRG9DRDtFQUNERyxNQUFNLEVBQUU7SUFDTlAsWUFBWSxFQUFFLFlBQVk7SUFDMUJDLEtBQUssRUFBRSx5QkFBeUI7SUFDaENDLFdBQVcsRUFBRSxxREFBcUQ7SUFDbEVDLFlBQVksRUFBRSxXQUFXO0lBQ3pCQyxhQUFhLEVBQUUsSUFBSTtJQUNuQkMsSUFBSSxFQUFFVjtFQ25DTixDRG9DRDtFQUNEYSxPQUFPLEVBQUU7SUFDUFIsWUFBWSxFQUFFLGNBQWM7SUFDNUJDLEtBQUssRUFBRSxrQ0FBa0M7SUFDekNDLFdBQVcsRUFBRSxrREFBa0Q7SUFDL0RDLFlBQVksRUFBRSw2QkFBNkI7SUFDM0NDLGFBQWEsRUFBRSxJQUFJO0lBQ25CQyxJQUFJLEVBQUVWO0VDbkNOO0FBQ0osQ0RvQ2dFIiwiZmlsZSI6ImJ1c2luZXNzL0RpYWxvZy9UcmFuc2FjdGlvbkRpYWxvZy9wcmVzZXRzLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJjb25zdCBTVVBQT1JUX0hFTFAgPSB7XG4gICAgcHJvbXB0VGV4dDogJ1Ryb3VibGUgd2l0aCB5b3VyIHRyYW5zYWN0aW9uPycsXG4gICAgYWN0aW9uVGV4dDogJ0xldCB1cyBoZWxwIScsXG59O1xuLyoqXG4gKiBDYW5vbmljYWwgdHJhbnNhY3Rpb24tc3RhdHVzIHNjZW5hcmlvcy4gUGFzcyBhIGxlYWYgc3RyYWlnaHQgdG9cbiAqIGBUcmFuc2FjdGlvbkRpYWxvZ2AncyBgcHJlc2V0YCBwcm9wIOKAlCB0aGVyZSBpcyBubyBzdHJpbmcga2V5IHRvIHJlbWVtYmVyOyB0aGVcbiAqIElERSBuYXZpZ2F0ZXMgYW5kIHR5cGUtY2hlY2tzIGl0LlxuICpcbiAqIENvcHkgaXMgdGFrZW4gZnJvbSB0aGUgRmlnbWEgXCJUcmFuc2FjdGlvbiBjb21wbGV0ZWRcIiBmcmFtZSBhbmQgdGhlIHNjcC11aSBTZW5kXG4gKiByZXN1bHQgc3RhdHVzZXMgKGBJTklUYCDihpIgYGluaXRpYXRlZGAsIGBGQUlMVVJFYCDihpIgYGZhaWxlZGAsIGBQRU5ESU5HYCDihpJcbiAqIGBwZW5kaW5nYCkuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogaW1wb3J0IHsgVFJBTlNBQ1RJT05fRElBTE9HX1BSRVNFVFMgfSBmcm9tICdAMW1vbmV5L2NvbXBvbmVudC11aS9idXNpbmVzcy9EaWFsb2cvVHJhbnNhY3Rpb25EaWFsb2cnO1xuICpcbiAqIDxUcmFuc2FjdGlvbkRpYWxvZ1xuICogICBvcGVuPXtvcGVufVxuICogICBwcmVzZXQ9e1RSQU5TQUNUSU9OX0RJQUxPR19QUkVTRVRTLmZhaWxlZH1cbiAqICAgZGV0YWlscz17ZGV0YWlsc31cbiAqICAgcHJpbWFyeUFjdGlvbj17eyBvbkNsaWNrOiByZXRyeSB9fVxuICogICBzZWNvbmRhcnlBY3Rpb249e3sgbGFiZWw6ICdDbG9zZScsIG9uQ2xpY2s6IGNsb3NlIH19XG4gKiAgIGhlbHA9e3sgb25DbGljazogb3BlblN1cHBvcnQgfX1cbiAqICAgb25DbG9zZT17Y2xvc2V9XG4gKiAvPjtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgVFJBTlNBQ1RJT05fRElBTE9HX1BSRVNFVFMgPSB7XG4gICAgY29tcGxldGVkOiB7XG4gICAgICAgIGlsbHVzdHJhdGlvbjogJ2lsbHVzQ2hlY2tlZCcsXG4gICAgICAgIHRpdGxlOiAnVHJhbnNhY3Rpb24gY29tcGxldGVkJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdZb3VyIGZ1bmRzIGhhdmUgYmVlbiBzZW50IHN1Y2Nlc3NmdWxseS4nLFxuICAgICAgICBwcmltYXJ5TGFiZWw6ICdWaWV3IGluIHRyYW5zYWN0aW9uIGhpc3RvcnknLFxuICAgICAgICBzaG93Q2xvc2VJY29uOiB0cnVlLFxuICAgICAgICBoZWxwOiBTVVBQT1JUX0hFTFAsXG4gICAgfSxcbiAgICBpbml0aWF0ZWQ6IHtcbiAgICAgICAgaWxsdXN0cmF0aW9uOiAnaWxsdXNDaGVja2VkJyxcbiAgICAgICAgdGl0bGU6ICdZb3VyIHRyYW5zYWN0aW9uIGluaXRpYXRlZCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnV2Ugd2lsbCBzZW5kIHlvdSBhbiBlbWFpbCB3aGVuIHRoZSB0cmFuc2FjdGlvbiBpcyBjb21wbGV0ZWQuJyxcbiAgICAgICAgcHJpbWFyeUxhYmVsOiAnVmlldyBpbiB0cmFuc2FjdGlvbiBoaXN0b3J5JyxcbiAgICAgICAgc2hvd0Nsb3NlSWNvbjogdHJ1ZSxcbiAgICB9LFxuICAgIGZhaWxlZDoge1xuICAgICAgICBpbGx1c3RyYXRpb246ICdpbGx1c0Vycm9yJyxcbiAgICAgICAgdGl0bGU6ICdZb3VyIHRyYW5zYWN0aW9uIGZhaWxlZCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnUGxlYXNlIHRyeSBhZ2FpbiBvciBjb250YWN0IHN1cHBvcnQgZm9yIGFzc2lzdGFuY2UuJyxcbiAgICAgICAgcHJpbWFyeUxhYmVsOiAnVHJ5IGFnYWluJyxcbiAgICAgICAgc2hvd0Nsb3NlSWNvbjogdHJ1ZSxcbiAgICAgICAgaGVscDogU1VQUE9SVF9IRUxQLFxuICAgIH0sXG4gICAgcGVuZGluZzoge1xuICAgICAgICBpbGx1c3RyYXRpb246ICdpbGx1c1BlbmRpbmcnLFxuICAgICAgICB0aXRsZTogJ1lvdXIgVHJhbnNhY3Rpb24gaXMgVW5kZXIgUmV2aWV3JyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdQbGVhc2Ugd2FpdCBmb3IgdGhlIHRyYW5zYWN0aW9uIHRvIGJlIGNvbXBsZXRlZC4nLFxuICAgICAgICBwcmltYXJ5TGFiZWw6ICdWaWV3IGluIHRyYW5zYWN0aW9uIGhpc3RvcnknLFxuICAgICAgICBzaG93Q2xvc2VJY29uOiB0cnVlLFxuICAgICAgICBoZWxwOiBTVVBQT1JUX0hFTFAsXG4gICAgfSxcbn07Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import './TransactionDialog.css';
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9UcmFuc2FjdGlvbkRpYWxvZy9zcmMvYnVzaW5lc3MvRGlhbG9nL1RyYW5zYWN0aW9uRGlhbG9nL3N0eWxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sMEJBQTBCIiwiZmlsZSI6ImJ1c2luZXNzL0RpYWxvZy9UcmFuc2FjdGlvbkRpYWxvZy9zdHlsZS9jc3MuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import './TransactionDialog.css';
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import './TransactionDialog.css';
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9UcmFuc2FjdGlvbkRpYWxvZy9zcmMvYnVzaW5lc3MvRGlhbG9nL1RyYW5zYWN0aW9uRGlhbG9nL3N0eWxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sMEJBQTBCIiwiZmlsZSI6ImJ1c2luZXNzL0RpYWxvZy9UcmFuc2FjdGlvbkRpYWxvZy9zdHlsZS9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { FC } from 'react';
|
|
2
|
-
import type { VerificationDialogResend } from './interface';
|
|
3
|
-
export interface ResendRowProps {
|
|
4
|
-
resend: VerificationDialogResend;
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* The "Haven't received the code? Resend" row below the footer divider. Owns its
|
|
8
|
-
* own cooldown: while counting down (or while a resend is in flight) the row is
|
|
9
|
-
* inert — muted, non-clickable, default cursor — and shows the remaining time.
|
|
10
|
-
* When resending is allowed, both the prompt text and the link trigger it and
|
|
11
|
-
* show a pointer cursor. Rendered only when a `resend` config is provided, so
|
|
12
|
-
* the countdown hook never runs for dialogs without resend.
|
|
13
|
-
*/
|
|
14
|
-
export declare const ResendRow: FC<ResendRowProps>;
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { Divider } from '../../../components/Divider';
|
|
3
|
-
import { Flex } from '../../../components/Flex';
|
|
4
|
-
import { Typography } from '../../../components/Typography';
|
|
5
|
-
import { joinCls } from '../../../utils/classnames';
|
|
6
|
-
import { VERIFICATION_DIALOG } from './constants';
|
|
7
|
-
import { useResendCountdown } from './hooks';
|
|
8
|
-
/**
|
|
9
|
-
* The "Haven't received the code? Resend" row below the footer divider. Owns its
|
|
10
|
-
* own cooldown: while counting down (or while a resend is in flight) the row is
|
|
11
|
-
* inert — muted, non-clickable, default cursor — and shows the remaining time.
|
|
12
|
-
* When resending is allowed, both the prompt text and the link trigger it and
|
|
13
|
-
* show a pointer cursor. Rendered only when a `resend` config is provided, so
|
|
14
|
-
* the countdown hook never runs for dialogs without resend.
|
|
15
|
-
*/
|
|
16
|
-
export var ResendRow = function ResendRow(_ref) {
|
|
17
|
-
var resend = _ref.resend;
|
|
18
|
-
var promptText = resend.promptText,
|
|
19
|
-
_resend$actionText = resend.actionText,
|
|
20
|
-
actionText = _resend$actionText === void 0 ? VERIFICATION_DIALOG.defaults.resendLabel : _resend$actionText,
|
|
21
|
-
onResend = resend.onResend,
|
|
22
|
-
cooldown = resend.cooldown;
|
|
23
|
-
var _useResendCountdown = useResendCountdown({
|
|
24
|
-
onResend: onResend,
|
|
25
|
-
cooldown: cooldown
|
|
26
|
-
}),
|
|
27
|
-
canResend = _useResendCountdown.canResend,
|
|
28
|
-
remaining = _useResendCountdown.remaining,
|
|
29
|
-
formatted = _useResendCountdown.formatted,
|
|
30
|
-
triggerResend = _useResendCountdown.resend;
|
|
31
|
-
var handleClick = function handleClick() {
|
|
32
|
-
if (canResend) triggerResend();
|
|
33
|
-
};
|
|
34
|
-
var handleKeyDown = function handleKeyDown(event) {
|
|
35
|
-
if (!canResend || !VERIFICATION_DIALOG.activationKeys.includes(event.key)) return;
|
|
36
|
-
event.preventDefault();
|
|
37
|
-
triggerResend();
|
|
38
|
-
};
|
|
39
|
-
return _jsxs(_Fragment, {
|
|
40
|
-
children: [_jsx(Divider, {}), _jsxs(Flex, {
|
|
41
|
-
align: 'center',
|
|
42
|
-
justify: 'space-between',
|
|
43
|
-
className: VERIFICATION_DIALOG.cls.recovery,
|
|
44
|
-
children: [promptText && _jsx(Typography.Body, {
|
|
45
|
-
size: 'md',
|
|
46
|
-
strong: true,
|
|
47
|
-
color: 'default-tertiary',
|
|
48
|
-
className: joinCls(VERIFICATION_DIALOG.cls.recoveryText, canResend && VERIFICATION_DIALOG.mod.clickable),
|
|
49
|
-
onClick: canResend ? handleClick : undefined,
|
|
50
|
-
children: promptText
|
|
51
|
-
}), _jsxs(Typography.Link, {
|
|
52
|
-
size: 'md',
|
|
53
|
-
role: 'button',
|
|
54
|
-
tabIndex: 0,
|
|
55
|
-
disabled: !canResend,
|
|
56
|
-
color: canResend ? 'brand' : 'default-tertiary',
|
|
57
|
-
className: joinCls(VERIFICATION_DIALOG.cls.resend, canResend && VERIFICATION_DIALOG.mod.clickable),
|
|
58
|
-
onClick: handleClick,
|
|
59
|
-
onKeyDown: handleKeyDown,
|
|
60
|
-
children: [actionText, remaining > 0 ? " (".concat(formatted, ")") : '']
|
|
61
|
-
})]
|
|
62
|
-
})]
|
|
63
|
-
});
|
|
64
|
-
};
|
|
65
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9WZXJpZmljYXRpb25EaWFsb2cvUmVzZW5kUm93LmpzIiwiYnVzaW5lc3MvRGlhbG9nL3NyYy9idXNpbmVzcy9EaWFsb2cvVmVyaWZpY2F0aW9uRGlhbG9nL1Jlc2VuZFJvdy50c3giXSwibmFtZXMiOlsianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiRGl2aWRlciIsIkZsZXgiLCJUeXBvZ3JhcGh5Iiwiam9pbkNscyIsIlZFUklGSUNBVElPTl9ESUFMT0ciLCJ1c2VSZXNlbmRDb3VudGRvd24iLCJSZXNlbmRSb3ciLCJfcmVmIiwicmVzZW5kIiwicHJvbXB0VGV4dCIsIl9yZXNlbmQkYWN0aW9uVGV4dCIsImFjdGlvblRleHQiLCJkZWZhdWx0cyIsInJlc2VuZExhYmVsIiwib25SZXNlbmQiLCJjb29sZG93biIsIl91c2VSZXNlbmRDb3VudGRvd24iLCJjYW5SZXNlbmQiLCJyZW1haW5pbmciLCJmb3JtYXR0ZWQiLCJ0cmlnZ2VyUmVzZW5kIiwiaGFuZGxlQ2xpY2siLCJoYW5kbGVLZXlEb3duIiwiZXZlbnQiLCJhY3RpdmF0aW9uS2V5cyIsImluY2x1ZGVzIiwia2V5IiwicHJldmVudERlZmF1bHQiLCJjaGlsZHJlbiIsImFsaWduIiwianVzdGlmeSIsImNsYXNzTmFtZSIsImNscyIsInJlY292ZXJ5IiwiQm9keSIsInNpemUiLCJzdHJvbmciLCJjb2xvciIsInJlY292ZXJ5VGV4dCIsIm1vZCIsImNsaWNrYWJsZSIsIm9uQ2xpY2siLCJ1bmRlZmluZWQiLCJMaW5rIiwicm9sZSIsInRhYkluZGV4IiwiZGlzYWJsZWQiLCJvbktleURvd24iLCJjb25jYXQiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLEdBQUcsSUFBSUMsSUFBSSxFQUFFQyxJQUFJLElBQUlDLEtBQUssRUFBRUMsUUFBUSxJQUFJQyxTQUFTLFFBQVEsbUJBQW1CO0FDQXJGLFNBQVNDLE9BQU8sUUFBUSw2QkFBNkI7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QU0sRUFDOUJTLFNBQVMsSUFBSWIsbUJBQW1CLENBQUNtQyxHQUFHLENBQUNDLFNBQVMsQ0FDL0M7UUFDREMsT0FBTyxFQUFFcEIsV0FBVztRQUNwQjBCLFNBQVMsRUFBRXpCLGFBQWE7UUFBQU0sUUFBQSxFQUFBLENBRXZCakIsVUFBVSxFQUNWTyxTQUFTLEdBQUcsQ0FBQyxRQUFBOEIsTUFBQSxDQUFRN0IsU0FBUyxTQUFNLEVBQUU7TUFBQSxDQUFBLENBQ3ZCO0lBQUEsQ0FBQSxDQUNiO0VBQUEsQ0FBQSxDQUNOO0FBRVAsQ0FBQyIsImZpbGUiOiJidXNpbmVzcy9EaWFsb2cvVmVyaWZpY2F0aW9uRGlhbG9nL1Jlc2VuZFJvdy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzLCBGcmFnbWVudCBhcyBfRnJhZ21lbnQgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IERpdmlkZXIgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL0RpdmlkZXInO1xuaW1wb3J0IHsgRmxleCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvRmxleCc7XG5pbXBvcnQgeyBUeXBvZ3JhcGh5IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9UeXBvZ3JhcGh5JztcbmltcG9ydCB7IGpvaW5DbHMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IFZFUklGSUNBVElPTl9ESUFMT0cgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyB1c2VSZXNlbmRDb3VudGRvd24gfSBmcm9tICcuL2hvb2tzJztcbi8qKlxuICogVGhlIFwiSGF2ZW4ndCByZWNlaXZlZCB0aGUgY29kZT8gUmVzZW5kXCIgcm93IGJlbG93IHRoZSBmb290ZXIgZGl2aWRlci4gT3ducyBpdHNcbiAqIG93biBjb29sZG93bjogd2hpbGUgY291bnRpbmcgZG93biAob3Igd2hpbGUgYSByZXNlbmQgaXMgaW4gZmxpZ2h0KSB0aGUgcm93IGlzXG4gKiBpbmVydCDigJQgbXV0ZWQsIG5vbi1jbGlja2FibGUsIGRlZmF1bHQgY3Vyc29yIOKAlCBhbmQgc2hvd3MgdGhlIHJlbWFpbmluZyB0aW1lLlxuICogV2hlbiByZXNlbmRpbmcgaXMgYWxsb3dlZCwgYm90aCB0aGUgcHJvbXB0IHRleHQgYW5kIHRoZSBsaW5rIHRyaWdnZXIgaXQgYW5kXG4gKiBzaG93IGEgcG9pbnRlciBjdXJzb3IuIFJlbmRlcmVkIG9ubHkgd2hlbiBhIGByZXNlbmRgIGNvbmZpZyBpcyBwcm92aWRlZCwgc29cbiAqIHRoZSBjb3VudGRvd24gaG9vayBuZXZlciBydW5zIGZvciBkaWFsb2dzIHdpdGhvdXQgcmVzZW5kLlxuICovXG5leHBvcnQgY29uc3QgUmVzZW5kUm93ID0gKHsgcmVzZW5kIH0pID0+IHtcbiAgICBjb25zdCB7IHByb21wdFRleHQsIGFjdGlvblRleHQgPSBWRVJJRklDQVRJT05fRElBTE9HLmRlZmF1bHRzLnJlc2VuZExhYmVsLCBvblJlc2VuZCwgY29vbGRvd24sIH0gPSByZXNlbmQ7XG4gICAgY29uc3QgeyBjYW5SZXNlbmQsIHJlbWFpbmluZywgZm9ybWF0dGVkLCByZXNlbmQ6IHRyaWdnZXJSZXNlbmQgfSA9IHVzZVJlc2VuZENvdW50ZG93bih7XG4gICAgICAgIG9uUmVzZW5kLFxuICAgICAgICBjb29sZG93bixcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVDbGljayA9ICgpID0+IHtcbiAgICAgICAgaWYgKGNhblJlc2VuZClcbiAgICAgICAgICAgIHRyaWdnZXJSZXNlbmQoKTtcbiAgICB9O1xuICAgIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCFjYW5SZXNlbmQgfHwgIVZFUklGSUNBVElPTl9ESUFMT0cuYWN0aXZhdGlvbktleXMuaW5jbHVkZXMoZXZlbnQua2V5KSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdHJpZ2dlclJlc2VuZCgpO1xuICAgIH07XG4gICAgcmV0dXJuIChfanN4cyhfRnJhZ21lbnQsIHsgY2hpbGRyZW46IFtfanN4KERpdmlkZXIsIHt9KSwgX2pzeHMoRmxleCwgeyBhbGlnbjogJ2NlbnRlcicsIGp1c3RpZnk6ICdzcGFjZS1iZXR3ZWVuJywgY2xhc3NOYW1lOiBWRVJJRklDQVRJT05fRElBTE9HLmNscy5yZWNvdmVyeSwgY2hpbGRyZW46IFtwcm9tcHRUZXh0ICYmIChfanN4KFR5cG9ncmFwaHkuQm9keSwgeyBzaXplOiAnbWQnLCBzdHJvbmc6IHRydWUsIGNvbG9yOiAnZGVmYXVsdC10ZXJ0aWFyeScsIGNsYXNzTmFtZTogam9pbkNscyhWRVJJRklDQVRJT05fRElBTE9HLmNscy5yZWNvdmVyeVRleHQsIGNhblJlc2VuZCAmJiBWRVJJRklDQVRJT05fRElBTE9HLm1vZC5jbGlja2FibGUpLCBvbkNsaWNrOiBjYW5SZXNlbmQgPyBoYW5kbGVDbGljayA6IHVuZGVmaW5lZCwgY2hpbGRyZW46IHByb21wdFRleHQgfSkpLCBfanN4cyhUeXBvZ3JhcGh5LkxpbmssIHsgc2l6ZTogJ21kJywgcm9sZTogJ2J1dHRvbicsIHRhYkluZGV4OiAwLCBkaXNhYmxlZDogIWNhblJlc2VuZCwgY29sb3I6IGNhblJlc2VuZCA/ICdicmFuZCcgOiAnZGVmYXVsdC10ZXJ0aWFyeScsIGNsYXNzTmFtZTogam9pbkNscyhWRVJJRklDQVRJT05fRElBTE9HLmNscy5yZXNlbmQsIGNhblJlc2VuZCAmJiBWRVJJRklDQVRJT05fRElBTE9HLm1vZC5jbGlja2FibGUpLCBvbkNsaWNrOiBoYW5kbGVDbGljaywgb25LZXlEb3duOiBoYW5kbGVLZXlEb3duLCBjaGlsZHJlbjogW2FjdGlvblRleHQsIHJlbWFpbmluZyA+IDAgPyBgICgke2Zvcm1hdHRlZH0pYCA6ICcnXSB9KV0gfSldIH0pKTtcbn07IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export { useOtpVerification } from './useOtpVerification';
|
|
2
|
-
export { useResendCountdown } from './useResendCountdown';
|
|
3
|
-
export type { OtpVerifyResult, UseOtpVerificationOptions, UseOtpVerificationResult, } from './useOtpVerification';
|
|
4
|
-
export type { UseResendCountdownOptions, UseResendCountdownResult, } from './useResendCountdown';
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export { useOtpVerification } from './useOtpVerification';
|
|
2
|
-
export { useResendCountdown } from './useResendCountdown';
|
|
3
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9WZXJpZmljYXRpb25EaWFsb2cvc3JjL2J1c2luZXNzL0RpYWxvZy9WZXJpZmljYXRpb25EaWFsb2cvaG9va3MvaW5kZXgudHMiXSwibmFtZXMiOlsidXNlT3RwVmVyaWZpY2F0aW9uIiwidXNlUmVzZW5kQ291bnRkb3duIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxrQkFBa0IsUUFBUSxzQkFBc0I7QUFDekQsU0FBU0Msa0JBQWtCLFFBQVEsc0JBQXNCIiwiZmlsZSI6ImJ1c2luZXNzL0RpYWxvZy9WZXJpZmljYXRpb25EaWFsb2cvaG9va3MvaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6W251bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import type { ReactNode } from 'react';
|
|
2
|
-
import type { InputStatus } from "../../../../components/Input";
|
|
3
|
-
/**
|
|
4
|
-
* Result of an `onVerify` call: `true` for success, or an error-message string
|
|
5
|
-
* to display under the OTP boxes. Anything other than `true` is treated as a
|
|
6
|
-
* failure and clears the entered code.
|
|
7
|
-
*/
|
|
8
|
-
export type OtpVerifyResult = boolean | string;
|
|
9
|
-
export interface UseOtpVerificationOptions {
|
|
10
|
-
/**
|
|
11
|
-
* Async verifier. Resolve `true` on success; resolve (or return) a string to
|
|
12
|
-
* show it as the error message. A thrown error uses its `message`, falling
|
|
13
|
-
* back to a generic message.
|
|
14
|
-
*/
|
|
15
|
-
onVerify: (code: string) => Promise<OtpVerifyResult> | OtpVerifyResult;
|
|
16
|
-
/** Controlled OTP value. */
|
|
17
|
-
value?: string;
|
|
18
|
-
/** Initial OTP value when uncontrolled. */
|
|
19
|
-
defaultValue?: string;
|
|
20
|
-
/** Verify automatically once all digits are entered. @default true */
|
|
21
|
-
autoSubmit?: boolean;
|
|
22
|
-
/** Fires on every OTP change with the current value. */
|
|
23
|
-
onChange?: (value: string) => void;
|
|
24
|
-
}
|
|
25
|
-
export interface UseOtpVerificationResult {
|
|
26
|
-
/** Current OTP value. */
|
|
27
|
-
value: string;
|
|
28
|
-
/** `'error'` while an error message is showing, otherwise `'default'`. */
|
|
29
|
-
status: InputStatus;
|
|
30
|
-
/** Error message to render under the boxes, or `undefined` when clear. */
|
|
31
|
-
feedback: ReactNode;
|
|
32
|
-
/** `true` while `onVerify` is in flight. */
|
|
33
|
-
submitting: boolean;
|
|
34
|
-
/** `true` once all digits are entered. */
|
|
35
|
-
valid: boolean;
|
|
36
|
-
/** Wire to the OTP field's `onChange`. */
|
|
37
|
-
onChange: (value: string) => void;
|
|
38
|
-
/** Manually trigger verification with the current value. */
|
|
39
|
-
submit: () => void;
|
|
40
|
-
/** Clear the current error message. */
|
|
41
|
-
clearError: () => void;
|
|
42
|
-
/** Clear both the value and any error. */
|
|
43
|
-
reset: () => void;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Headless OTP verification logic shared by `VerificationDialog` and any other
|
|
47
|
-
* shell (popup, inline form, multi-step flow). Owns the value (controlled or
|
|
48
|
-
* uncontrolled), auto-submit on completion, loading state, and clear-on-error.
|
|
49
|
-
*/
|
|
50
|
-
export declare const useOtpVerification: (options: UseOtpVerificationOptions) => UseOtpVerificationResult;
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
|
-
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
3
|
-
var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {
|
|
4
|
-
function adopt(value) {
|
|
5
|
-
return value instanceof P ? value : new P(function (resolve) {
|
|
6
|
-
resolve(value);
|
|
7
|
-
});
|
|
8
|
-
}
|
|
9
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
10
|
-
function fulfilled(value) {
|
|
11
|
-
try {
|
|
12
|
-
step(generator.next(value));
|
|
13
|
-
} catch (e) {
|
|
14
|
-
reject(e);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
function rejected(value) {
|
|
18
|
-
try {
|
|
19
|
-
step(generator["throw"](value));
|
|
20
|
-
} catch (e) {
|
|
21
|
-
reject(e);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
function step(result) {
|
|
25
|
-
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
|
26
|
-
}
|
|
27
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
28
|
-
});
|
|
29
|
-
};
|
|
30
|
-
import { useRef, useState } from 'react';
|
|
31
|
-
import useControlledState from '@1money/hooks/useControlledState';
|
|
32
|
-
import useEventCallback from '@1money/hooks/useEventCallback';
|
|
33
|
-
var OTP_LENGTH = 6;
|
|
34
|
-
var DEFAULT_ERROR_MESSAGE = 'Incorrect code, please try again.';
|
|
35
|
-
var STATUS_ERROR = 'error';
|
|
36
|
-
var STATUS_DEFAULT = 'default';
|
|
37
|
-
/**
|
|
38
|
-
* Headless OTP verification logic shared by `VerificationDialog` and any other
|
|
39
|
-
* shell (popup, inline form, multi-step flow). Owns the value (controlled or
|
|
40
|
-
* uncontrolled), auto-submit on completion, loading state, and clear-on-error.
|
|
41
|
-
*/
|
|
42
|
-
export var useOtpVerification = function useOtpVerification(options) {
|
|
43
|
-
var onVerify = options.onVerify,
|
|
44
|
-
value = options.value,
|
|
45
|
-
_options$defaultValue = options.defaultValue,
|
|
46
|
-
defaultValue = _options$defaultValue === void 0 ? '' : _options$defaultValue,
|
|
47
|
-
_options$autoSubmit = options.autoSubmit,
|
|
48
|
-
autoSubmit = _options$autoSubmit === void 0 ? true : _options$autoSubmit,
|
|
49
|
-
onChange = options.onChange;
|
|
50
|
-
var _useControlledState = useControlledState(defaultValue, value),
|
|
51
|
-
_useControlledState2 = _slicedToArray(_useControlledState, 2),
|
|
52
|
-
innerValue = _useControlledState2[0],
|
|
53
|
-
setInnerValue = _useControlledState2[1];
|
|
54
|
-
var _useState = useState(false),
|
|
55
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
56
|
-
submitting = _useState2[0],
|
|
57
|
-
setSubmitting = _useState2[1];
|
|
58
|
-
var _useState3 = useState(''),
|
|
59
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
60
|
-
error = _useState4[0],
|
|
61
|
-
setError = _useState4[1];
|
|
62
|
-
// `submitting` drives the UI; `submittingRef` is the synchronous re-entry
|
|
63
|
-
// guard — auto-submit fires inside `onChange`, which would otherwise double-
|
|
64
|
-
// fire before the `submitting` state update has flushed.
|
|
65
|
-
var submittingRef = useRef(false);
|
|
66
|
-
var runVerify = useEventCallback(function (code) {
|
|
67
|
-
return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
68
|
-
var result, _t;
|
|
69
|
-
return _regeneratorRuntime.wrap(function (_context) {
|
|
70
|
-
while (1) switch (_context.prev = _context.next) {
|
|
71
|
-
case 0:
|
|
72
|
-
if (!submittingRef.current) {
|
|
73
|
-
_context.next = 1;
|
|
74
|
-
break;
|
|
75
|
-
}
|
|
76
|
-
return _context.abrupt("return");
|
|
77
|
-
case 1:
|
|
78
|
-
submittingRef.current = true;
|
|
79
|
-
setSubmitting(true);
|
|
80
|
-
_context.prev = 2;
|
|
81
|
-
_context.next = 3;
|
|
82
|
-
return onVerify(code);
|
|
83
|
-
case 3:
|
|
84
|
-
result = _context.sent;
|
|
85
|
-
if (result !== true) {
|
|
86
|
-
setError(typeof result === 'string' && result ? result : DEFAULT_ERROR_MESSAGE);
|
|
87
|
-
setInnerValue('');
|
|
88
|
-
}
|
|
89
|
-
_context.next = 5;
|
|
90
|
-
break;
|
|
91
|
-
case 4:
|
|
92
|
-
_context.prev = 4;
|
|
93
|
-
_t = _context["catch"](2);
|
|
94
|
-
setError(_t instanceof Error && _t.message ? _t.message : DEFAULT_ERROR_MESSAGE);
|
|
95
|
-
setInnerValue('');
|
|
96
|
-
case 5:
|
|
97
|
-
_context.prev = 5;
|
|
98
|
-
submittingRef.current = false;
|
|
99
|
-
setSubmitting(false);
|
|
100
|
-
return _context.finish(5);
|
|
101
|
-
case 6:
|
|
102
|
-
case "end":
|
|
103
|
-
return _context.stop();
|
|
104
|
-
}
|
|
105
|
-
}, _callee, null, [[2, 4, 5, 6]]);
|
|
106
|
-
}));
|
|
107
|
-
});
|
|
108
|
-
var handleChange = useEventCallback(function (next) {
|
|
109
|
-
if (error) setError('');
|
|
110
|
-
setInnerValue(next);
|
|
111
|
-
onChange === null || onChange === void 0 ? void 0 : onChange(next);
|
|
112
|
-
if (autoSubmit && next.length === OTP_LENGTH && !submittingRef.current) {
|
|
113
|
-
runVerify(next);
|
|
114
|
-
}
|
|
115
|
-
});
|
|
116
|
-
var submit = useEventCallback(function () {
|
|
117
|
-
return runVerify(innerValue);
|
|
118
|
-
});
|
|
119
|
-
var clearError = useEventCallback(function () {
|
|
120
|
-
return setError('');
|
|
121
|
-
});
|
|
122
|
-
var reset = useEventCallback(function () {
|
|
123
|
-
setError('');
|
|
124
|
-
setInnerValue('');
|
|
125
|
-
});
|
|
126
|
-
return {
|
|
127
|
-
value: innerValue,
|
|
128
|
-
status: error ? STATUS_ERROR : STATUS_DEFAULT,
|
|
129
|
-
feedback: error || undefined,
|
|
130
|
-
submitting: submitting,
|
|
131
|
-
valid: innerValue.length === OTP_LENGTH,
|
|
132
|
-
onChange: handleChange,
|
|
133
|
-
submit: submit,
|
|
134
|
-
clearError: clearError,
|
|
135
|
-
reset: reset
|
|
136
|
-
};
|
|
137
|
-
};
|
|
138
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9WZXJpZmljYXRpb25EaWFsb2cvaG9va3MvdXNlT3RwVmVyaWZpY2F0aW9uLmpzIiwiYnVzaW5lc3MvRGlhbG9nL1ZlcmlmaWNhdGlvbkRpYWxvZy9zcmMvYnVzaW5lc3MvRGlhbG9nL1ZlcmlmaWNhdGlvbkRpYWxvZy9ob29rcy91c2VPdHBWZXJpZmljYXRpb24udHMiXSwibmFtZXMiOlsiX19hd2FpdGVyIiwidGhpc0FyZyIsIl9hcmd1bWVudHMiLCJQIiwiZ2VuZXJhdG9yIiwiYWRvcHQiLCJ2YWx1ZSIsInJlc29sdmUiLCJQcm9taXNlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwic3RlcCIsIm5leHQiLCJlIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJkb25lIiwidGhlbiIsImFwcGx5IiwidXNlUmVmIiwidXNlU3RhdGUiLCJ1c2VDb250cm9sbGVkU3RhdGUiLCJ1c2VFdmVudENhbGxiYWNrIiwiT1RQX0xFTkdUSCIsIkRFRkFVTFRfRVJST1JfTUVTU0FHRSIsIlNUQVRVU19FUlJPUiIsIlNUQVRVU19ERUZBVUxUIiwidXNlT3RwVmVyaWZpY2F0aW9uIiwib3B0aW9ucyIsIm9uVmVyaWZ5IiwiX29wdGlvbnMkZGVmYXVsdFZhbHVlIiwiZGVmYXVsdFZhbHVlIiwiX29wdGlvbnMkYXV0b1N1Ym1pdCIsImF1dG9TdWJtaXQiLCJvbkNoYW5nZSIsIl91c2VDb250cm9sbGVkU3RhdGUiLCJfdXNlQ29udHJvbGxlZFN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiaW5uZXJWYWx1ZSIsInNldElubmVyVmFsdWUiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwic3VibWl0dGluZyIsInNldFN1Ym1pdHRpbmciLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImVycm9yIiwic2V0RXJyb3IiLCJzdWJtaXR0aW5nUmVmIiwicnVuVmVyaWZ5IiwiY29kZSIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsImN1cnJlbnQiLCJhYnJ1cHQiLCJzZW50IiwiRXJyb3IiLCJtZXNzYWdlIiwiZmluaXNoIiwic3RvcCIsImhhbmRsZUNoYW5nZSIsImxlbmd0aCIsInN1Ym1pdCIsImNsZWFyRXJyb3IiLCJyZXNldCIsInN0YXR1cyIsImZlZWRiYWNrIiwidW5kZWZpbmVkIiwidmFsaWQiXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBSUEsU0FBUyxHQUFJLElBQUksSUFBSSxJQUFJLENBQUNBLFNBQVMsSUFBSyxVQUFVQyxPQUFPLEVBQUVDLFVBQVUsRUFBRUMsQ0FBQyxFQUFFQyxTQUFTLEVBQUU7RUFDckYsU0FBU0MsS0FBS0EsQ0FBQ0MsS0FBSyxFQUFFO0lBQUUsT0FBT0EsS0FBSyxZQUFZSCxDQUFDLEdBQUdHLEtBQUssR0FBRyxJQUFJSCxDQUFDLENBQUMsVUFBVUksT0FBTyxFQUFFO01BQUVBLE9BQU8sQ0FBQ0QsS0FBSyxDQUFDO0lBQUUsQ0FBQyxDQUFDO0VBQUU7RUFDM0csT0FBTyxLQUFLSCxDQUFDLEtBQUtBLENBQUMsR0FBR0ssT0FBTyxDQUFDLEVBQUUsVUFBVUQsT0FBTyxFQUFFRSxNQUFNLEVBQUU7SUFDdkQsU0FBU0MsU0FBU0EsQ0FBQ0osS0FBSyxFQUFFO01BQUUsSUFBSTtRQUFFSyxJQUFJLENBQUNQLFNBQVMsQ0FBQ1EsSUFBSSxDQUFDTixLQUFLLENBQUMsQ0FBQztNQUFFLENBQUMsQ0FBQyxPQUFPTyxDQUFDLEVBQUU7UUFBRUosTUFBTSxDQUFDSSxDQUFDLENBQUM7TUFBRTtJQUFFO0lBQzFGLFNBQVNDLFFBQVFBLENBQUNSLEtBQUssRUFBRTtNQUFFLElBQUk7UUFBRUssSUFBSSxDQUFDUCxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUNFLEtBQUssQ0FBQyxDQUFDO01BQUUsQ0FBQyxDQUFDLE9BQU9PLENBQUMsRUFBRTtRQUFFSixNQUFNLENBQUNJLENBQUMsQ0FBQztNQUFFO0lBQUU7SUFDN0YsU0FBU0YsSUFBSUEsQ0FBQ0ksTUFBTSxFQUFFO01B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TyxFQUFFO01BQ3RFVCxTQUFTLENBQUNyQyxJQUFJLENBQUM7SUFDakI7RUFDRixDQUFDLENBQUM7RUFFRixJQUFNdUQsTUFBTSxHQUFHN0MsZ0JBQWdCLENBQUM7SUFBQSxPQUFNMkIsU0FBUyxDQUFDWCxVQUFVLENBQUM7RUFBQSxFQUFDO0VBQzVELElBQU04QixVQUFVLEdBQUc5QyxnQkFBZ0IsQ0FBQztJQUFBLE9BQU15QixRQUFRLENBQUMsRUFBRSxDQUFDO0VBQUEsRUFBQztFQUN2RCxJQUFNc0IsS0FBSyxHQUFHL0MsZ0JBQWdCLENBQUMsWUFBSztJQUNsQ3lCLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFDWlIsYUFBYSxDQUFDLEVBQUUsQ0FBQztFQUNuQixDQUFDLENBQUM7RUFFRixPQUFPO0lBQ0xqQyxLQUFLLEVBQUVnQyxVQUFVO0lBQ2pCZ0MsTUFBTSxFQUFFeEIsS0FBSyxHQUFHckIsWUFBWSxHQUFHQyxjQUFjO0lBQzdDNkMsUUFBUSxFQUFFekIsS0FBSyxJQUFJMEIsU0FBUztJQUM1QjlCLFVBQVUsRUFBVkEsVUFBVTtJQUNWK0IsS0FBSyxFQUFFbkMsVUFBVSxDQUFDNEIsTUFBTSxLQUFLM0MsVUFBVTtJQUN2Q1csUUFBUSxFQUFFK0IsWUFBWTtJQUN0QkUsTUFBTSxFQUFOQSxNQUFNO0lBQ05DLFVBQVUsRUFBVkEsVUFBVTtJQUNWQyxLQUFLLEVBQUxBO0VEMUNBLENDMkNEO0FBQ0gsQ0FBQyIsImZpbGUiOiJidXNpbmVzcy9EaWFsb2cvVmVyaWZpY2F0aW9uRGlhbG9nL2hvb2tzL3VzZU90cFZlcmlmaWNhdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0IHsgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VDb250cm9sbGVkU3RhdGUgZnJvbSAnQDFtb25leS9ob29rcy91c2VDb250cm9sbGVkU3RhdGUnO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQDFtb25leS9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmNvbnN0IE9UUF9MRU5HVEggPSA2O1xuY29uc3QgREVGQVVMVF9FUlJPUl9NRVNTQUdFID0gJ0luY29ycmVjdCBjb2RlLCBwbGVhc2UgdHJ5IGFnYWluLic7XG5jb25zdCBTVEFUVVNfRVJST1IgPSAnZXJyb3InO1xuY29uc3QgU1RBVFVTX0RFRkFVTFQgPSAnZGVmYXVsdCc7XG4vKipcbiAqIEhlYWRsZXNzIE9UUCB2ZXJpZmljYXRpb24gbG9naWMgc2hhcmVkIGJ5IGBWZXJpZmljYXRpb25EaWFsb2dgIGFuZCBhbnkgb3RoZXJcbiAqIHNoZWxsIChwb3B1cCwgaW5saW5lIGZvcm0sIG11bHRpLXN0ZXAgZmxvdykuIE93bnMgdGhlIHZhbHVlIChjb250cm9sbGVkIG9yXG4gKiB1bmNvbnRyb2xsZWQpLCBhdXRvLXN1Ym1pdCBvbiBjb21wbGV0aW9uLCBsb2FkaW5nIHN0YXRlLCBhbmQgY2xlYXItb24tZXJyb3IuXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VPdHBWZXJpZmljYXRpb24gPSAob3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IHsgb25WZXJpZnksIHZhbHVlLCBkZWZhdWx0VmFsdWUgPSAnJywgYXV0b1N1Ym1pdCA9IHRydWUsIG9uQ2hhbmdlIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IFtpbm5lclZhbHVlLCBzZXRJbm5lclZhbHVlXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShkZWZhdWx0VmFsdWUsIHZhbHVlKTtcbiAgICBjb25zdCBbc3VibWl0dGluZywgc2V0U3VibWl0dGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZSgnJyk7XG4gICAgLy8gYHN1Ym1pdHRpbmdgIGRyaXZlcyB0aGUgVUk7IGBzdWJtaXR0aW5nUmVmYCBpcyB0aGUgc3luY2hyb25vdXMgcmUtZW50cnlcbiAgICAvLyBndWFyZCDigJQgYXV0by1zdWJtaXQgZmlyZXMgaW5zaWRlIGBvbkNoYW5nZWAsIHdoaWNoIHdvdWxkIG90aGVyd2lzZSBkb3VibGUtXG4gICAgLy8gZmlyZSBiZWZvcmUgdGhlIGBzdWJtaXR0aW5nYCBzdGF0ZSB1cGRhdGUgaGFzIGZsdXNoZWQuXG4gICAgY29uc3Qgc3VibWl0dGluZ1JlZiA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgcnVuVmVyaWZ5ID0gdXNlRXZlbnRDYWxsYmFjaygoY29kZSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGlmIChzdWJtaXR0aW5nUmVmLmN1cnJlbnQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHN1Ym1pdHRpbmdSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgIHNldFN1Ym1pdHRpbmcodHJ1ZSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB5aWVsZCBvblZlcmlmeShjb2RlKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBzZXRFcnJvcih0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJyAmJiByZXN1bHQgPyByZXN1bHQgOiBERUZBVUxUX0VSUk9SX01FU1NBR0UpO1xuICAgICAgICAgICAgICAgIHNldElubmVyVmFsdWUoJycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICBzZXRFcnJvcihlIGluc3RhbmNlb2YgRXJyb3IgJiYgZS5tZXNzYWdlID8gZS5tZXNzYWdlIDogREVGQVVMVF9FUlJPUl9NRVNTQUdFKTtcbiAgICAgICAgICAgIHNldElubmVyVmFsdWUoJycpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgc3VibWl0dGluZ1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICBzZXRTdWJtaXR0aW5nKGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH0pKTtcbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VFdmVudENhbGxiYWNrKChuZXh0KSA9PiB7XG4gICAgICAgIGlmIChlcnJvcilcbiAgICAgICAgICAgIHNldEVycm9yKCcnKTtcbiAgICAgICAgc2V0SW5uZXJWYWx1ZShuZXh0KTtcbiAgICAgICAgb25DaGFuZ2UgPT09IG51bGwgfHwgb25DaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2hhbmdlKG5leHQpO1xuICAgICAgICBpZiAoYXV0b1N1Ym1pdCAmJiBuZXh0Lmxlbmd0aCA9PT0gT1RQX0xFTkdUSCAmJiAhc3VibWl0dGluZ1JlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBydW5WZXJpZnkobmV4dCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBzdWJtaXQgPSB1c2VFdmVudENhbGxiYWNrKCgpID0+IHJ1blZlcmlmeShpbm5lclZhbHVlKSk7XG4gICAgY29uc3QgY2xlYXJFcnJvciA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4gc2V0RXJyb3IoJycpKTtcbiAgICBjb25zdCByZXNldCA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4ge1xuICAgICAgICBzZXRFcnJvcignJyk7XG4gICAgICAgIHNldElubmVyVmFsdWUoJycpO1xuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlOiBpbm5lclZhbHVlLFxuICAgICAgICBzdGF0dXM6IGVycm9yID8gU1RBVFVTX0VSUk9SIDogU1RBVFVTX0RFRkFVTFQsXG4gICAgICAgIGZlZWRiYWNrOiBlcnJvciB8fCB1bmRlZmluZWQsXG4gICAgICAgIHN1Ym1pdHRpbmcsXG4gICAgICAgIHZhbGlkOiBpbm5lclZhbHVlLmxlbmd0aCA9PT0gT1RQX0xFTkdUSCxcbiAgICAgICAgb25DaGFuZ2U6IGhhbmRsZUNoYW5nZSxcbiAgICAgICAgc3VibWl0LFxuICAgICAgICBjbGVhckVycm9yLFxuICAgICAgICByZXNldCxcbiAgICB9O1xufTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
export interface UseResendCountdownOptions {
|
|
2
|
-
/** Fires when the user triggers a resend. */
|
|
3
|
-
onResend: () => void | Promise<void>;
|
|
4
|
-
/** Cooldown length in seconds before resending is allowed again. @default 60 */
|
|
5
|
-
cooldown?: number;
|
|
6
|
-
/** Start the cooldown immediately on mount. @default false */
|
|
7
|
-
autoStart?: boolean;
|
|
8
|
-
}
|
|
9
|
-
export interface UseResendCountdownResult {
|
|
10
|
-
/** Seconds left in the current cooldown (`0` when resending is allowed). */
|
|
11
|
-
remaining: number;
|
|
12
|
-
/** `true` when a resend can be triggered (no cooldown, not loading). */
|
|
13
|
-
canResend: boolean;
|
|
14
|
-
/** `true` while `onResend` is in flight. */
|
|
15
|
-
loading: boolean;
|
|
16
|
-
/** Human-readable countdown, e.g. `"1m 0s"`. */
|
|
17
|
-
formatted: string;
|
|
18
|
-
/** Trigger a resend (no-op during cooldown or while loading). */
|
|
19
|
-
resend: () => void;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Headless resend-with-cooldown logic ported from the product's `ResendButton`:
|
|
23
|
-
* a per-second countdown, a lock during the cooldown and while the resend
|
|
24
|
-
* request is in flight, and an `m s` formatter.
|
|
25
|
-
*/
|
|
26
|
-
export declare const useResendCountdown: (options: UseResendCountdownOptions) => UseResendCountdownResult;
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
|
-
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
3
|
-
var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {
|
|
4
|
-
function adopt(value) {
|
|
5
|
-
return value instanceof P ? value : new P(function (resolve) {
|
|
6
|
-
resolve(value);
|
|
7
|
-
});
|
|
8
|
-
}
|
|
9
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
10
|
-
function fulfilled(value) {
|
|
11
|
-
try {
|
|
12
|
-
step(generator.next(value));
|
|
13
|
-
} catch (e) {
|
|
14
|
-
reject(e);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
function rejected(value) {
|
|
18
|
-
try {
|
|
19
|
-
step(generator["throw"](value));
|
|
20
|
-
} catch (e) {
|
|
21
|
-
reject(e);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
function step(result) {
|
|
25
|
-
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
|
26
|
-
}
|
|
27
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
28
|
-
});
|
|
29
|
-
};
|
|
30
|
-
import { useEffect, useState } from 'react';
|
|
31
|
-
import useEventCallback from '@1money/hooks/useEventCallback';
|
|
32
|
-
var DEFAULT_COOLDOWN_SECONDS = 60;
|
|
33
|
-
var SECONDS_PER_MINUTE = 60;
|
|
34
|
-
var TICK_MS = 1000;
|
|
35
|
-
/**
|
|
36
|
-
* Headless resend-with-cooldown logic ported from the product's `ResendButton`:
|
|
37
|
-
* a per-second countdown, a lock during the cooldown and while the resend
|
|
38
|
-
* request is in flight, and an `m s` formatter.
|
|
39
|
-
*/
|
|
40
|
-
export var useResendCountdown = function useResendCountdown(options) {
|
|
41
|
-
var onResend = options.onResend,
|
|
42
|
-
_options$cooldown = options.cooldown,
|
|
43
|
-
cooldown = _options$cooldown === void 0 ? DEFAULT_COOLDOWN_SECONDS : _options$cooldown,
|
|
44
|
-
_options$autoStart = options.autoStart,
|
|
45
|
-
autoStart = _options$autoStart === void 0 ? false : _options$autoStart;
|
|
46
|
-
var _useState = useState(autoStart ? cooldown : 0),
|
|
47
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
48
|
-
remaining = _useState2[0],
|
|
49
|
-
setRemaining = _useState2[1];
|
|
50
|
-
var _useState3 = useState(false),
|
|
51
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
52
|
-
loading = _useState4[0],
|
|
53
|
-
setLoading = _useState4[1];
|
|
54
|
-
useEffect(function () {
|
|
55
|
-
if (remaining <= 0) return undefined;
|
|
56
|
-
var timer = setInterval(function () {
|
|
57
|
-
setRemaining(function (prev) {
|
|
58
|
-
return prev <= 1 ? 0 : prev - 1;
|
|
59
|
-
});
|
|
60
|
-
}, TICK_MS);
|
|
61
|
-
return function () {
|
|
62
|
-
return clearInterval(timer);
|
|
63
|
-
};
|
|
64
|
-
}, [remaining]);
|
|
65
|
-
var resend = useEventCallback(function () {
|
|
66
|
-
return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
67
|
-
return _regeneratorRuntime.wrap(function (_context) {
|
|
68
|
-
while (1) switch (_context.prev = _context.next) {
|
|
69
|
-
case 0:
|
|
70
|
-
if (!(remaining > 0 || loading)) {
|
|
71
|
-
_context.next = 1;
|
|
72
|
-
break;
|
|
73
|
-
}
|
|
74
|
-
return _context.abrupt("return");
|
|
75
|
-
case 1:
|
|
76
|
-
setLoading(true);
|
|
77
|
-
_context.prev = 2;
|
|
78
|
-
_context.next = 3;
|
|
79
|
-
return onResend();
|
|
80
|
-
case 3:
|
|
81
|
-
setRemaining(cooldown);
|
|
82
|
-
case 4:
|
|
83
|
-
_context.prev = 4;
|
|
84
|
-
setLoading(false);
|
|
85
|
-
return _context.finish(4);
|
|
86
|
-
case 5:
|
|
87
|
-
case "end":
|
|
88
|
-
return _context.stop();
|
|
89
|
-
}
|
|
90
|
-
}, _callee, null, [[2,, 4, 5]]);
|
|
91
|
-
}));
|
|
92
|
-
});
|
|
93
|
-
var minutes = Math.floor(remaining / SECONDS_PER_MINUTE);
|
|
94
|
-
var seconds = remaining % SECONDS_PER_MINUTE;
|
|
95
|
-
return {
|
|
96
|
-
remaining: remaining,
|
|
97
|
-
canResend: remaining <= 0 && !loading,
|
|
98
|
-
loading: loading,
|
|
99
|
-
formatted: "".concat(minutes, "m ").concat(seconds, "s"),
|
|
100
|
-
resend: resend
|
|
101
|
-
};
|
|
102
|
-
};
|
|
103
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9WZXJpZmljYXRpb25EaWFsb2cvaG9va3MvdXNlUmVzZW5kQ291bnRkb3duLmpzIiwiYnVzaW5lc3MvRGlhbG9nL1ZlcmlmaWNhdGlvbkRpYWxvZy9zcmMvYnVzaW5lc3MvRGlhbG9nL1ZlcmlmaWNhdGlvbkRpYWxvZy9ob29rcy91c2VSZXNlbmRDb3VudGRvd24udHMiXSwibmFtZXMiOlsiX19hd2FpdGVyIiwidGhpc0FyZyIsIl9hcmd1bWVudHMiLCJQIiwiZ2VuZXJhdG9yIiwiYWRvcHQiLCJ2YWx1ZSIsInJlc29sdmUiLCJQcm9taXNlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwic3RlcCIsIm5leHQiLCJlIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJkb25lIiwidGhlbiIsImFwcGx5IiwidXNlRWZmZWN0IiwidXNlU3RhdGUiLCJ1c2VFdmVudENhbGxiYWNrIiwiREVGQVVMVF9DT09MRE9XTl9TRUNPTkRTIiwiU0VDT05EU19QRVJfTUlOVVRFIiwiVElDS19NUyIsInVzZVJlc2VuZENvdW50ZG93biIsIm9wdGlvbnMiLCJvblJlc2VuZCIsIl9vcHRpb25zJGNvb2xkb3duIiwiY29vbGRvd24iLCJfb3B0aW9ucyRhdXRvU3RhcnQiLCJhdXRvU3RhcnQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJyZW1haW5pbmciLCJzZXRSZW1haW5pbmciLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwidW5kZWZpbmVkIiwidGltZXIiLCJzZXRJbnRlcnZhbCIsInByZXYiLCJjbGVhckludGVydmFsIiwicmVzZW5kIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwid3JhcCIsIl9jb250ZXh0IiwiYWJydXB0IiwiZmluaXNoIiwic3RvcCIsIm1pbnV0ZXMiLCJNYXRoIiwiZmxvb3IiLCJzZWNvbmRzIiwiY2FuUmVzZW5kIiwiZm9ybWF0dGVk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QUdDLElBQUksQ0FBQ0MsS0FBSyxDQUFDdEIsU0FBUyxHQUFHWixrQkFBa0IsQ0FBQztFQUMxRCxJQUFNbUMsT0FBTyxHQUFHdkIsU0FBUyxHQUFHWixrQkFBa0I7RUFFOUMsT0FBTztJQUNMWSxTQUFTLEVBQVRBLFNBQVM7SUFDVHdCLFNBQVMsRUFBRXhCLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQ0ksT0FBTztJQUNyQ0EsT0FBTyxFQUFQQSxPQUFPO0lBQ1BxQixTQUFTLEtBQUFDLE1BQUEsQ0FBS04sT0FBTyxRQUFBTSxNQUFBLENBQUtILE9BQU8sTUFBRztJQUNwQ1osTUFBTSxFQUFOQTtFRGpCQSxDQ2tCRDtBQUNILENBQUMiLCJmaWxlIjoiYnVzaW5lc3MvRGlhbG9nL1ZlcmlmaWNhdGlvbkRpYWxvZy9ob29rcy91c2VSZXNlbmRDb3VudGRvd24uanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuY29uc3QgREVGQVVMVF9DT09MRE9XTl9TRUNPTkRTID0gNjA7XG5jb25zdCBTRUNPTkRTX1BFUl9NSU5VVEUgPSA2MDtcbmNvbnN0IFRJQ0tfTVMgPSAxMDAwO1xuLyoqXG4gKiBIZWFkbGVzcyByZXNlbmQtd2l0aC1jb29sZG93biBsb2dpYyBwb3J0ZWQgZnJvbSB0aGUgcHJvZHVjdCdzIGBSZXNlbmRCdXR0b25gOlxuICogYSBwZXItc2Vjb25kIGNvdW50ZG93biwgYSBsb2NrIGR1cmluZyB0aGUgY29vbGRvd24gYW5kIHdoaWxlIHRoZSByZXNlbmRcbiAqIHJlcXVlc3QgaXMgaW4gZmxpZ2h0LCBhbmQgYW4gYG0gc2AgZm9ybWF0dGVyLlxuICovXG5leHBvcnQgY29uc3QgdXNlUmVzZW5kQ291bnRkb3duID0gKG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCB7IG9uUmVzZW5kLCBjb29sZG93biA9IERFRkFVTFRfQ09PTERPV05fU0VDT05EUywgYXV0b1N0YXJ0ID0gZmFsc2UgfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgW3JlbWFpbmluZywgc2V0UmVtYWluaW5nXSA9IHVzZVN0YXRlKGF1dG9TdGFydCA/IGNvb2xkb3duIDogMCk7XG4gICAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChyZW1haW5pbmcgPD0gMClcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHRpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgc2V0UmVtYWluaW5nKChwcmV2KSA9PiAocHJldiA8PSAxID8gMCA6IHByZXYgLSAxKSk7XG4gICAgICAgIH0sIFRJQ0tfTVMpO1xuICAgICAgICByZXR1cm4gKCkgPT4gY2xlYXJJbnRlcnZhbCh0aW1lcik7XG4gICAgfSwgW3JlbWFpbmluZ10pO1xuICAgIGNvbnN0IHJlc2VuZCA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGlmIChyZW1haW5pbmcgPiAwIHx8IGxvYWRpbmcpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHNldExvYWRpbmcodHJ1ZSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB5aWVsZCBvblJlc2VuZCgpO1xuICAgICAgICAgICAgc2V0UmVtYWluaW5nKGNvb2xkb3duKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHNldExvYWRpbmcoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfSkpO1xuICAgIGNvbnN0IG1pbnV0ZXMgPSBNYXRoLmZsb29yKHJlbWFpbmluZyAvIFNFQ09ORFNfUEVSX01JTlVURSk7XG4gICAgY29uc3Qgc2Vjb25kcyA9IHJlbWFpbmluZyAlIFNFQ09ORFNfUEVSX01JTlVURTtcbiAgICByZXR1cm4ge1xuICAgICAgICByZW1haW5pbmcsXG4gICAgICAgIGNhblJlc2VuZDogcmVtYWluaW5nIDw9IDAgJiYgIWxvYWRpbmcsXG4gICAgICAgIGxvYWRpbmcsXG4gICAgICAgIGZvcm1hdHRlZDogYCR7bWludXRlc31tICR7c2Vjb25kc31zYCxcbiAgICAgICAgcmVzZW5kLFxuICAgIH07XG59OyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|