@1money/component-ui 0.0.66 → 0.0.67
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/ResultDialog/ResultDialog.d.ts +3 -0
- package/es/business/Dialog/ResultDialog/ResultDialog.js +126 -0
- package/es/business/Dialog/ResultDialog/constants.d.ts +27 -0
- package/es/business/Dialog/ResultDialog/constants.js +24 -0
- package/es/business/Dialog/ResultDialog/index.d.ts +3 -0
- package/es/business/Dialog/ResultDialog/index.js +4 -0
- package/es/business/Dialog/ResultDialog/interface.d.ts +95 -0
- package/es/business/Dialog/ResultDialog/interface.js +2 -0
- package/es/business/Dialog/ResultDialog/presets.d.ts +178 -0
- package/es/business/Dialog/ResultDialog/presets.js +139 -0
- package/es/business/Dialog/ResultDialog/style/ResultDialog.css +29 -0
- package/es/business/Dialog/ResultDialog/style/css.js +2 -0
- package/es/business/Dialog/ResultDialog/style/index.d.ts +1 -0
- package/es/business/Dialog/ResultDialog/style/index.js +2 -0
- package/es/business/Dialog/TransactionDialog/TransactionDialog.d.ts +3 -0
- package/es/business/Dialog/TransactionDialog/TransactionDialog.js +174 -0
- package/es/business/Dialog/TransactionDialog/constants.d.ts +34 -0
- package/es/business/Dialog/TransactionDialog/constants.js +33 -0
- package/es/business/Dialog/TransactionDialog/index.d.ts +3 -0
- package/es/business/Dialog/TransactionDialog/index.js +4 -0
- package/es/business/Dialog/TransactionDialog/interface.d.ts +116 -0
- package/es/business/Dialog/TransactionDialog/interface.js +2 -0
- package/es/business/Dialog/TransactionDialog/presets.d.ts +89 -0
- package/es/business/Dialog/TransactionDialog/presets.js +62 -0
- package/es/business/Dialog/TransactionDialog/style/TransactionDialog.css +36 -0
- package/es/business/Dialog/TransactionDialog/style/css.js +2 -0
- package/es/business/Dialog/TransactionDialog/style/index.d.ts +1 -0
- package/es/business/Dialog/TransactionDialog/style/index.js +2 -0
- package/es/business/Dialog/VerificationDialog/ResendRow.d.ts +14 -0
- package/es/business/Dialog/VerificationDialog/ResendRow.js +65 -0
- package/es/business/Dialog/VerificationDialog/VerificationDialog.d.ts +3 -0
- package/es/business/Dialog/VerificationDialog/VerificationDialog.js +116 -0
- package/es/business/Dialog/VerificationDialog/constants.d.ts +35 -0
- package/es/business/Dialog/VerificationDialog/constants.js +31 -0
- package/es/business/Dialog/VerificationDialog/hooks/index.d.ts +4 -0
- package/es/business/Dialog/VerificationDialog/hooks/index.js +3 -0
- package/es/business/Dialog/VerificationDialog/hooks/useOtpVerification.d.ts +50 -0
- package/es/business/Dialog/VerificationDialog/hooks/useOtpVerification.js +137 -0
- package/es/business/Dialog/VerificationDialog/hooks/useResendCountdown.d.ts +26 -0
- package/es/business/Dialog/VerificationDialog/hooks/useResendCountdown.js +103 -0
- package/es/business/Dialog/VerificationDialog/index.d.ts +3 -0
- package/es/business/Dialog/VerificationDialog/index.js +4 -0
- package/es/business/Dialog/VerificationDialog/interface.d.ts +124 -0
- package/es/business/Dialog/VerificationDialog/interface.js +2 -0
- package/es/business/Dialog/VerificationDialog/style/VerificationDialog.css +30 -0
- package/es/business/Dialog/VerificationDialog/style/css.js +2 -0
- package/es/business/Dialog/VerificationDialog/style/index.d.ts +1 -0
- package/es/business/Dialog/VerificationDialog/style/index.js +2 -0
- package/es/business/Dialog/index.d.ts +3 -0
- package/es/business/Dialog/index.js +4 -0
- package/es/business/index.d.ts +1 -0
- package/es/business/index.js +2 -1
- package/es/components/Button/Button.js +7 -3
- package/es/components/Button/constants.d.ts +1 -0
- package/es/components/Button/constants.js +2 -1
- package/es/components/Button/interface.d.ts +2 -0
- package/es/components/Button/style/Button.css +4 -0
- package/es/components/Dialog/Dialog.js +16 -7
- package/es/components/Dialog/constants.d.ts +1 -0
- package/es/components/Dialog/constants.js +3 -2
- package/es/components/Dialog/interface.d.ts +1 -0
- package/es/components/Dialog/style/Dialog.css +29 -0
- package/es/index.css +1 -1
- package/lib/business/Dialog/ResultDialog/ResultDialog.d.ts +3 -0
- package/lib/business/Dialog/ResultDialog/ResultDialog.js +132 -0
- package/lib/business/Dialog/ResultDialog/constants.d.ts +27 -0
- package/lib/business/Dialog/ResultDialog/constants.js +30 -0
- package/lib/business/Dialog/ResultDialog/index.d.ts +3 -0
- package/lib/business/Dialog/ResultDialog/index.js +40 -0
- package/lib/business/Dialog/ResultDialog/interface.d.ts +95 -0
- package/lib/business/Dialog/ResultDialog/interface.js +6 -0
- package/lib/business/Dialog/ResultDialog/presets.d.ts +178 -0
- package/lib/business/Dialog/ResultDialog/presets.js +145 -0
- package/lib/business/Dialog/ResultDialog/style/ResultDialog.css +29 -0
- package/lib/business/Dialog/ResultDialog/style/css.js +4 -0
- package/lib/business/Dialog/ResultDialog/style/index.d.ts +1 -0
- package/lib/business/Dialog/ResultDialog/style/index.js +4 -0
- package/lib/business/Dialog/TransactionDialog/TransactionDialog.d.ts +3 -0
- package/lib/business/Dialog/TransactionDialog/TransactionDialog.js +180 -0
- package/lib/business/Dialog/TransactionDialog/constants.d.ts +34 -0
- package/lib/business/Dialog/TransactionDialog/constants.js +39 -0
- package/lib/business/Dialog/TransactionDialog/index.d.ts +3 -0
- package/lib/business/Dialog/TransactionDialog/index.js +40 -0
- package/lib/business/Dialog/TransactionDialog/interface.d.ts +116 -0
- package/lib/business/Dialog/TransactionDialog/interface.js +6 -0
- package/lib/business/Dialog/TransactionDialog/presets.d.ts +89 -0
- package/lib/business/Dialog/TransactionDialog/presets.js +68 -0
- package/lib/business/Dialog/TransactionDialog/style/TransactionDialog.css +36 -0
- package/lib/business/Dialog/TransactionDialog/style/css.js +4 -0
- package/lib/business/Dialog/TransactionDialog/style/index.d.ts +1 -0
- package/lib/business/Dialog/TransactionDialog/style/index.js +4 -0
- package/lib/business/Dialog/VerificationDialog/ResendRow.d.ts +14 -0
- package/lib/business/Dialog/VerificationDialog/ResendRow.js +71 -0
- package/lib/business/Dialog/VerificationDialog/VerificationDialog.d.ts +3 -0
- package/lib/business/Dialog/VerificationDialog/VerificationDialog.js +122 -0
- package/lib/business/Dialog/VerificationDialog/constants.d.ts +35 -0
- package/lib/business/Dialog/VerificationDialog/constants.js +37 -0
- package/lib/business/Dialog/VerificationDialog/hooks/index.d.ts +4 -0
- package/lib/business/Dialog/VerificationDialog/hooks/index.js +20 -0
- package/lib/business/Dialog/VerificationDialog/hooks/useOtpVerification.d.ts +50 -0
- package/lib/business/Dialog/VerificationDialog/hooks/useOtpVerification.js +144 -0
- package/lib/business/Dialog/VerificationDialog/hooks/useResendCountdown.d.ts +26 -0
- package/lib/business/Dialog/VerificationDialog/hooks/useResendCountdown.js +110 -0
- package/lib/business/Dialog/VerificationDialog/index.d.ts +3 -0
- package/lib/business/Dialog/VerificationDialog/index.js +43 -0
- package/lib/business/Dialog/VerificationDialog/interface.d.ts +124 -0
- package/lib/business/Dialog/VerificationDialog/interface.js +6 -0
- package/lib/business/Dialog/VerificationDialog/style/VerificationDialog.css +30 -0
- package/lib/business/Dialog/VerificationDialog/style/css.js +4 -0
- package/lib/business/Dialog/VerificationDialog/style/index.d.ts +1 -0
- package/lib/business/Dialog/VerificationDialog/style/index.js +4 -0
- package/lib/business/Dialog/index.d.ts +3 -0
- package/lib/business/Dialog/index.js +39 -0
- package/lib/business/index.d.ts +1 -0
- package/lib/business/index.js +12 -1
- package/lib/components/Button/Button.js +7 -3
- package/lib/components/Button/constants.d.ts +1 -0
- package/lib/components/Button/constants.js +2 -1
- package/lib/components/Button/interface.d.ts +2 -0
- package/lib/components/Button/style/Button.css +4 -0
- package/lib/components/Dialog/Dialog.js +16 -7
- package/lib/components/Dialog/constants.d.ts +1 -0
- package/lib/components/Dialog/constants.js +3 -2
- package/lib/components/Dialog/interface.d.ts +1 -0
- package/lib/components/Dialog/style/Dialog.css +29 -0
- package/lib/index.css +1 -1
- package/package.json +21 -1
- package/scripts/mcp-server/examples.generated.json +18 -6
- package/scripts/mcp-server/index.generated.json +25 -1
|
@@ -0,0 +1,137 @@
|
|
|
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, useEventCallback } from '@1money/hooks';
|
|
32
|
+
var OTP_LENGTH = 6;
|
|
33
|
+
var DEFAULT_ERROR_MESSAGE = 'Incorrect code, please try again.';
|
|
34
|
+
var STATUS_ERROR = 'error';
|
|
35
|
+
var STATUS_DEFAULT = 'default';
|
|
36
|
+
/**
|
|
37
|
+
* Headless OTP verification logic shared by `VerificationDialog` and any other
|
|
38
|
+
* shell (popup, inline form, multi-step flow). Owns the value (controlled or
|
|
39
|
+
* uncontrolled), auto-submit on completion, loading state, and clear-on-error.
|
|
40
|
+
*/
|
|
41
|
+
export var useOtpVerification = function useOtpVerification(options) {
|
|
42
|
+
var onVerify = options.onVerify,
|
|
43
|
+
value = options.value,
|
|
44
|
+
_options$defaultValue = options.defaultValue,
|
|
45
|
+
defaultValue = _options$defaultValue === void 0 ? '' : _options$defaultValue,
|
|
46
|
+
_options$autoSubmit = options.autoSubmit,
|
|
47
|
+
autoSubmit = _options$autoSubmit === void 0 ? true : _options$autoSubmit,
|
|
48
|
+
onChange = options.onChange;
|
|
49
|
+
var _useControlledState = useControlledState(defaultValue, value),
|
|
50
|
+
_useControlledState2 = _slicedToArray(_useControlledState, 2),
|
|
51
|
+
innerValue = _useControlledState2[0],
|
|
52
|
+
setInnerValue = _useControlledState2[1];
|
|
53
|
+
var _useState = useState(false),
|
|
54
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
55
|
+
submitting = _useState2[0],
|
|
56
|
+
setSubmitting = _useState2[1];
|
|
57
|
+
var _useState3 = useState(''),
|
|
58
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
59
|
+
error = _useState4[0],
|
|
60
|
+
setError = _useState4[1];
|
|
61
|
+
// `submitting` drives the UI; `submittingRef` is the synchronous re-entry
|
|
62
|
+
// guard — auto-submit fires inside `onChange`, which would otherwise double-
|
|
63
|
+
// fire before the `submitting` state update has flushed.
|
|
64
|
+
var submittingRef = useRef(false);
|
|
65
|
+
var runVerify = useEventCallback(function (code) {
|
|
66
|
+
return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
67
|
+
var result, _t;
|
|
68
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
69
|
+
while (1) switch (_context.prev = _context.next) {
|
|
70
|
+
case 0:
|
|
71
|
+
if (!submittingRef.current) {
|
|
72
|
+
_context.next = 1;
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
return _context.abrupt("return");
|
|
76
|
+
case 1:
|
|
77
|
+
submittingRef.current = true;
|
|
78
|
+
setSubmitting(true);
|
|
79
|
+
_context.prev = 2;
|
|
80
|
+
_context.next = 3;
|
|
81
|
+
return onVerify(code);
|
|
82
|
+
case 3:
|
|
83
|
+
result = _context.sent;
|
|
84
|
+
if (result !== true) {
|
|
85
|
+
setError(typeof result === 'string' && result ? result : DEFAULT_ERROR_MESSAGE);
|
|
86
|
+
setInnerValue('');
|
|
87
|
+
}
|
|
88
|
+
_context.next = 5;
|
|
89
|
+
break;
|
|
90
|
+
case 4:
|
|
91
|
+
_context.prev = 4;
|
|
92
|
+
_t = _context["catch"](2);
|
|
93
|
+
setError(_t instanceof Error && _t.message ? _t.message : DEFAULT_ERROR_MESSAGE);
|
|
94
|
+
setInnerValue('');
|
|
95
|
+
case 5:
|
|
96
|
+
_context.prev = 5;
|
|
97
|
+
submittingRef.current = false;
|
|
98
|
+
setSubmitting(false);
|
|
99
|
+
return _context.finish(5);
|
|
100
|
+
case 6:
|
|
101
|
+
case "end":
|
|
102
|
+
return _context.stop();
|
|
103
|
+
}
|
|
104
|
+
}, _callee, null, [[2, 4, 5, 6]]);
|
|
105
|
+
}));
|
|
106
|
+
});
|
|
107
|
+
var handleChange = useEventCallback(function (next) {
|
|
108
|
+
if (error) setError('');
|
|
109
|
+
setInnerValue(next);
|
|
110
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(next);
|
|
111
|
+
if (autoSubmit && next.length === OTP_LENGTH && !submittingRef.current) {
|
|
112
|
+
runVerify(next);
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
var submit = useEventCallback(function () {
|
|
116
|
+
return runVerify(innerValue);
|
|
117
|
+
});
|
|
118
|
+
var clearError = useEventCallback(function () {
|
|
119
|
+
return setError('');
|
|
120
|
+
});
|
|
121
|
+
var reset = useEventCallback(function () {
|
|
122
|
+
setError('');
|
|
123
|
+
setInnerValue('');
|
|
124
|
+
});
|
|
125
|
+
return {
|
|
126
|
+
value: innerValue,
|
|
127
|
+
status: error ? STATUS_ERROR : STATUS_DEFAULT,
|
|
128
|
+
feedback: error || undefined,
|
|
129
|
+
submitting: submitting,
|
|
130
|
+
valid: innerValue.length === OTP_LENGTH,
|
|
131
|
+
onChange: handleChange,
|
|
132
|
+
submit: submit,
|
|
133
|
+
clearError: clearError,
|
|
134
|
+
reset: reset
|
|
135
|
+
};
|
|
136
|
+
};
|
|
137
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9WZXJpZmljYXRpb25EaWFsb2cvaG9va3MvdXNlT3RwVmVyaWZpY2F0aW9uLmpzIiwiYnVzaW5lc3MvRGlhbG9nL1ZlcmlmaWNhdGlvbkRpYWxvZy9zcmMvYnVzaW5lc3MvRGlhbG9nL1ZlcmlmaWNhdGlvbkRpYWxvZy9ob29rcy91c2VPdHBWZXJpZmljYXRpb24udHMiXSwibmFtZXMiOlsiX19hd2FpdGVyIiwidGhpc0FyZyIsIl9hcmd1bWVudHMiLCJQIiwiZ2VuZXJhdG9yIiwiYWRvcHQiLCJ2YWx1ZSIsInJlc29sdmUiLCJQcm9taXNlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwic3RlcCIsIm5leHQiLCJlIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJkb25lIiwidGhlbiIsImFwcGx5IiwidXNlUmVmIiwidXNlU3RhdGUiLCJ1c2VDb250cm9sbGVkU3RhdGUiLCJ1c2VFdmVudENhbGxiYWNrIiwiT1RQX0xFTkdUSCIsIkRFRkFVTFRfRVJST1JfTUVTU0FHRSIsIlNUQVRVU19FUlJPUiIsIlNUQVRVU19ERUZBVUxUIiwidXNlT3RwVmVyaWZpY2F0aW9uIiwib3B0aW9ucyIsIm9uVmVyaWZ5IiwiX29wdGlvbnMkZGVmYXVsdFZhbHVlIiwiZGVmYXVsdFZhbHVlIiwiX29wdGlvbnMkYXV0b1N1Ym1pdCIsImF1dG9TdWJtaXQiLCJvbkNoYW5nZSIsIl91c2VDb250cm9sbGVkU3RhdGUiLCJfdXNlQ29udHJvbGxlZFN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiaW5uZXJWYWx1ZSIsInNldElubmVyVmFsdWUiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwic3VibWl0dGluZyIsInNldFN1Ym1pdHRpbmciLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImVycm9yIiwic2V0RXJyb3IiLCJzdWJtaXR0aW5nUmVmIiwicnVuVmVyaWZ5IiwiY29kZSIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsImN1cnJlbnQiLCJhYnJ1cHQiLCJzZW50IiwiRXJyb3IiLCJtZXNzYWdlIiwiZmluaXNoIiwic3RvcCIsImhhbmRsZUNoYW5nZSIsImxlbmd0aCIsInN1Ym1pdCIsImNsZWFyRXJyb3IiLCJyZXNldCIsInN0YXR1cyIsImZlZWRiYWNrIiwidW5kZWZpbmVkIiwidmFsaWQiXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBSUEsU0FBUyxHQUFJLElBQUksSUFBSSxJQUFJLENBQUNBLFNBQVMsSUFBSyxVQUFVQyxPQUFPLEVBQUVDLFVBQVUsRUFBRUMsQ0FBQyxFQUFFQyxTQUFTLEVBQUU7RUFDckYsU0FBU0MsS0FBS0EsQ0FBQ0MsS0FBSyxFQUFFO0lBQUUsT0FBT0EsS0FBSyxZQUFZSCxDQUFDLEdBQUdHLEtBQUssR0FBRyxJQUFJSCxDQUFDLENBQUMsVUFBVUksT0FBTyxFQUFFO01BQUVBLE9BQU8sQ0FBQ0QsS0FBSyxDQUFDO0lBQUUsQ0FBQyxDQUFDO0VBQUU7RUFDM0csT0FBTyxLQUFLSCxDQUFDLEtBQUtBLENBQUMsR0FBR0ssT0FBTyxDQUFDLEVBQUUsVUFBVUQsT0FBTyxFQUFFRSxNQUFNLEVBQUU7SUFDdkQsU0FBU0MsU0FBU0EsQ0FBQ0osS0FBSyxFQUFFO01BQUUsSUFBSTtRQUFFSyxJQUFJLENBQUNQLFNBQVMsQ0FBQ1EsSUFBSSxDQUFDTixLQUFLLENBQUMsQ0FBQztNQUFFLENBQUMsQ0FBQyxPQUFPTyxDQUFDLEVBQUU7UUFBRUosTUFBTSxDQUFDSSxDQUFDLENBQUM7TUFBRTtJQUFFO0lBQzFGLFNBQVNDLFFBQVFBLENBQUNSLEtBQUssRUFBRTtNQUFFLElBQUk7UUFBRUssSUFBSSxDQUFDUCxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUNFLEtBQUssQ0FBQyxDQUFDO01BQUUsQ0FBQyxDQUFDLE9BQU9PLENBQUMsRUFBRTtRQUFFSixNQUFNLENBQUNJLENBQUMsQ0FBQztNQUFFO0lBQUU7SUFDN0YsU0FBU0YsSUFBSUEsQ0FBQ0ksTUFBTSxFQUFFO01B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QUFDckMsSUFBSSxDQUFDO0lBQ2pCO0VBQ0YsQ0FBQyxDQUFDO0VBRUYsSUFBTXVELE1BQU0sR0FBRzdDLGdCQUFnQixDQUFDO0lBQUEsT0FBTTJCLFNBQVMsQ0FBQ1gsVUFBVSxDQUFDO0VBQUEsRUFBQztFQUM1RCxJQUFNOEIsVUFBVSxHQUFHOUMsZ0JBQWdCLENBQUM7SUFBQSxPQUFNeUIsUUFBUSxDQUFDLEVBQUUsQ0FBQztFQUFBLEVBQUM7RUFDdkQsSUFBTXNCLEtBQUssR0FBRy9DLGdCQUFnQixDQUFDLFlBQUs7SUFDbEN5QixRQUFRLENBQUMsRUFBRSxDQUFDO0lBQ1pSLGFBQWEsQ0FBQyxFQUFFLENBQUM7RUFDbkIsQ0FBQyxDQUFDO0VBRUYsT0FBTztJQUNMakMsS0FBSyxFQUFFZ0MsVUFBVTtJQUNqQmdDLE1BQU0sRUFBRXhCLEtBQUssR0FBR3JCLFlBQVksR0FBR0MsY0FBYztJQUM3QzZDLFFBQVEsRUFBRXpCLEtBQUssSUFBSTBCLFNBQVM7SUFDNUI5QixVQUFVLEVBQVZBLFVBQVU7SUFDVitCLEtBQUssRUFBRW5DLFVBQVUsQ0FBQzRCLE1BQU0sS0FBSzNDLFVBQVU7SUFDdkNXLFFBQVEsRUFBRStCLFlBQVk7SUFDdEJFLE1BQU0sRUFBTkEsTUFBTTtJQUNOQyxVQUFVLEVBQVZBLFVBQVU7SUFDVkMsS0FBSyxFQUFMQTtFRDFDQSxDQzJDRDtBQUNILENBQUMiLCJmaWxlIjoiYnVzaW5lc3MvRGlhbG9nL1ZlcmlmaWNhdGlvbkRpYWxvZy9ob29rcy91c2VPdHBWZXJpZmljYXRpb24uanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCB7IHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb250cm9sbGVkU3RhdGUsIHVzZUV2ZW50Q2FsbGJhY2sgfSBmcm9tICdAMW1vbmV5L2hvb2tzJztcbmNvbnN0IE9UUF9MRU5HVEggPSA2O1xuY29uc3QgREVGQVVMVF9FUlJPUl9NRVNTQUdFID0gJ0luY29ycmVjdCBjb2RlLCBwbGVhc2UgdHJ5IGFnYWluLic7XG5jb25zdCBTVEFUVVNfRVJST1IgPSAnZXJyb3InO1xuY29uc3QgU1RBVFVTX0RFRkFVTFQgPSAnZGVmYXVsdCc7XG4vKipcbiAqIEhlYWRsZXNzIE9UUCB2ZXJpZmljYXRpb24gbG9naWMgc2hhcmVkIGJ5IGBWZXJpZmljYXRpb25EaWFsb2dgIGFuZCBhbnkgb3RoZXJcbiAqIHNoZWxsIChwb3B1cCwgaW5saW5lIGZvcm0sIG11bHRpLXN0ZXAgZmxvdykuIE93bnMgdGhlIHZhbHVlIChjb250cm9sbGVkIG9yXG4gKiB1bmNvbnRyb2xsZWQpLCBhdXRvLXN1Ym1pdCBvbiBjb21wbGV0aW9uLCBsb2FkaW5nIHN0YXRlLCBhbmQgY2xlYXItb24tZXJyb3IuXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VPdHBWZXJpZmljYXRpb24gPSAob3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IHsgb25WZXJpZnksIHZhbHVlLCBkZWZhdWx0VmFsdWUgPSAnJywgYXV0b1N1Ym1pdCA9IHRydWUsIG9uQ2hhbmdlIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IFtpbm5lclZhbHVlLCBzZXRJbm5lclZhbHVlXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShkZWZhdWx0VmFsdWUsIHZhbHVlKTtcbiAgICBjb25zdCBbc3VibWl0dGluZywgc2V0U3VibWl0dGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZSgnJyk7XG4gICAgLy8gYHN1Ym1pdHRpbmdgIGRyaXZlcyB0aGUgVUk7IGBzdWJtaXR0aW5nUmVmYCBpcyB0aGUgc3luY2hyb25vdXMgcmUtZW50cnlcbiAgICAvLyBndWFyZCDigJQgYXV0by1zdWJtaXQgZmlyZXMgaW5zaWRlIGBvbkNoYW5nZWAsIHdoaWNoIHdvdWxkIG90aGVyd2lzZSBkb3VibGUtXG4gICAgLy8gZmlyZSBiZWZvcmUgdGhlIGBzdWJtaXR0aW5nYCBzdGF0ZSB1cGRhdGUgaGFzIGZsdXNoZWQuXG4gICAgY29uc3Qgc3VibWl0dGluZ1JlZiA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgcnVuVmVyaWZ5ID0gdXNlRXZlbnRDYWxsYmFjaygoY29kZSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGlmIChzdWJtaXR0aW5nUmVmLmN1cnJlbnQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHN1Ym1pdHRpbmdSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgIHNldFN1Ym1pdHRpbmcodHJ1ZSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB5aWVsZCBvblZlcmlmeShjb2RlKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBzZXRFcnJvcih0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJyAmJiByZXN1bHQgPyByZXN1bHQgOiBERUZBVUxUX0VSUk9SX01FU1NBR0UpO1xuICAgICAgICAgICAgICAgIHNldElubmVyVmFsdWUoJycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICBzZXRFcnJvcihlIGluc3RhbmNlb2YgRXJyb3IgJiYgZS5tZXNzYWdlID8gZS5tZXNzYWdlIDogREVGQVVMVF9FUlJPUl9NRVNTQUdFKTtcbiAgICAgICAgICAgIHNldElubmVyVmFsdWUoJycpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgc3VibWl0dGluZ1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICBzZXRTdWJtaXR0aW5nKGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH0pKTtcbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VFdmVudENhbGxiYWNrKChuZXh0KSA9PiB7XG4gICAgICAgIGlmIChlcnJvcilcbiAgICAgICAgICAgIHNldEVycm9yKCcnKTtcbiAgICAgICAgc2V0SW5uZXJWYWx1ZShuZXh0KTtcbiAgICAgICAgb25DaGFuZ2UgPT09IG51bGwgfHwgb25DaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2hhbmdlKG5leHQpO1xuICAgICAgICBpZiAoYXV0b1N1Ym1pdCAmJiBuZXh0Lmxlbmd0aCA9PT0gT1RQX0xFTkdUSCAmJiAhc3VibWl0dGluZ1JlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBydW5WZXJpZnkobmV4dCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBzdWJtaXQgPSB1c2VFdmVudENhbGxiYWNrKCgpID0+IHJ1blZlcmlmeShpbm5lclZhbHVlKSk7XG4gICAgY29uc3QgY2xlYXJFcnJvciA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4gc2V0RXJyb3IoJycpKTtcbiAgICBjb25zdCByZXNldCA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4ge1xuICAgICAgICBzZXRFcnJvcignJyk7XG4gICAgICAgIHNldElubmVyVmFsdWUoJycpO1xuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlOiBpbm5lclZhbHVlLFxuICAgICAgICBzdGF0dXM6IGVycm9yID8gU1RBVFVTX0VSUk9SIDogU1RBVFVTX0RFRkFVTFQsXG4gICAgICAgIGZlZWRiYWNrOiBlcnJvciB8fCB1bmRlZmluZWQsXG4gICAgICAgIHN1Ym1pdHRpbmcsXG4gICAgICAgIHZhbGlkOiBpbm5lclZhbHVlLmxlbmd0aCA9PT0gT1RQX0xFTkdUSCxcbiAgICAgICAgb25DaGFuZ2U6IGhhbmRsZUNoYW5nZSxcbiAgICAgICAgc3VibWl0LFxuICAgICAgICBjbGVhckVycm9yLFxuICAgICAgICByZXNldCxcbiAgICB9O1xufTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
@@ -0,0 +1,26 @@
|
|
|
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;
|
|
@@ -0,0 +1,103 @@
|
|
|
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';
|
|
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9WZXJpZmljYXRpb25EaWFsb2cvaG9va3MvdXNlUmVzZW5kQ291bnRkb3duLmpzIiwiYnVzaW5lc3MvRGlhbG9nL1ZlcmlmaWNhdGlvbkRpYWxvZy9zcmMvYnVzaW5lc3MvRGlhbG9nL1ZlcmlmaWNhdGlvbkRpYWxvZy9ob29rcy91c2VSZXNlbmRDb3VudGRvd24udHMiXSwibmFtZXMiOlsiX19hd2FpdGVyIiwidGhpc0FyZyIsIl9hcmd1bWVudHMiLCJQIiwiZ2VuZXJhdG9yIiwiYWRvcHQiLCJ2YWx1ZSIsInJlc29sdmUiLCJQcm9taXNlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwic3RlcCIsIm5leHQiLCJlIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJkb25lIiwidGhlbiIsImFwcGx5IiwidXNlRWZmZWN0IiwidXNlU3RhdGUiLCJ1c2VFdmVudENhbGxiYWNrIiwiREVGQVVMVF9DT09MRE9XTl9TRUNPTkRTIiwiU0VDT05EU19QRVJfTUlOVVRFIiwiVElDS19NUyIsInVzZVJlc2VuZENvdW50ZG93biIsIm9wdGlvbnMiLCJvblJlc2VuZCIsIl9vcHRpb25zJGNvb2xkb3duIiwiY29vbGRvd24iLCJfb3B0aW9ucyRhdXRvU3RhcnQiLCJhdXRvU3RhcnQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJyZW1haW5pbmciLCJzZXRSZW1haW5pbmciLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwidW5kZWZpbmVkIiwidGltZXIiLCJzZXRJbnRlcnZhbCIsInByZXYiLCJjbGVhckludGVydmFsIiwicmVzZW5kIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwid3JhcCIsIl9jb250ZXh0IiwiYWJydXB0IiwiZmluaXNoIiwic3RvcCIsIm1pbnV0ZXMiLCJNYXRoIiwiZmxvb3IiLCJzZWNvbmRzIiwiY2FuUmVzZW5kIiwiZm9ybWF0dGVkIiwiY29uY2F0Il0sIm1hcHBpbmdzIjoiOztBQUFBLElBQUlBLFNBQVMsR0FBSSxJQUFJLElBQUksSUFBSSxDQUFDQSxTQUFTLElBQUssVUFBVUMsT0FBTyxFQUFFQyxVQUFVLEVBQUVDLENBQUMsRUFBRUMsU0FBUyxFQUFFO0VBQ3JGLFNBQVNDLEtBQUtBLENBQUNDLEtBQUssRUFBRTtJQUFFLE9BQU9BLEtBQUssWUFBWUgsQ0FBQyxHQUFHRyxLQUFLLEdBQUcsSUFBSUgsQ0FBQyxDQUFDLFVBQVVJLE9BQU8sRUFBRTtNQUFFQSxPQUFPLENBQUNELEtBQUssQ0FBQztJQUFFLENBQUMsQ0FBQztFQUFFO0VBQzNHLE9BQU8sS0FBS0gsQ0FBQyxLQUFLQSxDQUFDLEdBQUdLLE9BQU8sQ0FBQyxFQUFFLFVBQVVELE9BQU8sRUFBRUUsTUFBTSxFQUFFO0lBQ3ZELFNBQVNDLFNBQVNBLENBQUNKLEtBQUssRUFBRTtNQUFFLElBQUk7UUFBRUssSUFBSSxDQUFDUCxTQUFTLENBQUNRLElBQUksQ0FBQ04sS0FBSyxDQUFDLENBQUM7TUFBRSxDQUFDLENBQUMsT0FBT08sQ0FBQyxFQUFFO1FBQUVKLE1BQU0sQ0FBQ0ksQ0FBQyxDQUFDO01BQUU7SUFBRTtJQUMxRixTQUFTQyxRQUFRQSxDQUFDUixLQUFLLEVBQUU7TUFBRSxJQUFJO1FBQUVLLElBQUksQ0FBQ1AsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDRSxLQUFLLENBQUMsQ0FBQztNQUFFLENBQUMsQ0FBQyxPQUFPTyxDQUFDLEVBQUU7UUFBRUosTUFBTSxDQUFDSSxDQUFDLENBQUM7TUFBRTtJQUFFO0lBQzdGLFNBQVNGLElBQUlBLENBQUNJLE1BQU0sRUFBRTtNQUFFQSxNQUFNLENBQUNDLElBQUksR0FBR1QsT0FBTyxDQUFDUSxNQUFNLENBQUNULEtBQUssQ0FBQyxHQUFHRCxLQUFLLENBQUNVLE1BQU0sQ0FBQ1QsS0FBSyxDQUFDLENBQUNXLElBQUksQ0FBQ1AsU0FBUyxFQUFFSSxRQUFRLENBQUM7SUFBRTtJQUM3R0gsSUFBSSxDQUFDLENBQUNQLFNBQVMsR0FBR0EsU0FBUyxDQUFDYyxLQUFLLENBQUNqQixPQUFPLEVBQUVDLFVBQVUsSUFBSSxFQUFFLENBQUMsRUFBRVUsSUFBSSxDQUFDLENBQUMsQ0FBQztFQUN6RSxDQUFDLENBQUM7QUFDTixDQUFDO0FDUkQsU0FBU08sU0FBUyxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUMzQyxTQUFTQyxnQkFBZ0IsUUFBUSxlQUFlO0FBRWhELElBQU1DLHdCQUF3QixHQUFHLEVBQUU7QUFDbkMsSUFBTUMsa0JBQWtCLEdBQUcsRUFBRTtBQUM3QixJQUFNQyxPQUFPLEdBQUcsSUFBSTtBQXdCcEI7QURkQTtBQUNBO0FBQ0E7QUFDQTtBQ2dCQSxPQUFPLElBQU1DLGtCQUFrQixHQUFHLFNBQXJCQSxrQkFBa0JBLENBQzdCQyxPQUFrQyxFQUNOO0VBQzVCLElBQVFDLFFBQVEsR0FBNkRELE9BQU8sQ0FBNUVDLFFBQVE7SUFBQUMsaUJBQUEsR0FBNkRGLE9BQU8sQ0FBbEVHLFFBQVE7SUFBUkEsUUFBUSxHQUFBRCxpQkFBQSxjQUFHTix3QkFBd0IsR0FBQU0saUJBQUE7SUFBQUUsa0JBQUEsR0FBd0JKLE9BQU8sQ0FBN0JLLFNBQVM7SUFBVEEsU0FBUyxHQUFBRCxrQkFBQSxjQUFHLEtBQUssR0FBQUEsa0JBQUE7RUFDeEUsSUFBQUUsU0FBQSxHQUFrQ1osUUFBUSxDQUFDVyxTQUFTLEdBQUdGLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFBQUksVUFBQSxHQUFBQyxjQUFBLENBQUFGLFNBQUE7SUFBN0RHLFNBQVMsR0FBQUYsVUFBQTtJQUFFRyxZQUFZLEdBQUFILFVBQUE7RUFDOUIsSUFBQUksVUFBQSxHQUE4QmpCLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFBQWtCLFVBQUEsR0FBQUosY0FBQSxDQUFBRyxVQUFBO0lBQXRDRSxPQUFPLEdBQUFELFVBQUE7SUFBRUUsVUFBVSxHQUFBRixVQUFBO0VBRTFCbkIsU0FBUyxDQUFDLFlBQUs7SUFDYixJQUFJZ0IsU0FBUyxJQUFJLENBQUMsRUFBRSxPQUFPTSxTQUFTO0lBQ3BDLElBQU1DLEtBQUssR0FBR0MsV0FBVyxDQUFDLFlBQUs7TUFDN0JQLFlBQVksQ0FBQyxVQUFDUSxJQUFJO1FBQUEsT0FBTUEsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUdBLElBQUksR0FBRyxDQUFDO01BQUEsQ0FBQyxDQUFDO0lBQ3BELENBQUMsRUFBRXBCLE9BQU8sQ0FBQztJQUNYLE9BQU87TUFBQSxPQUFNcUIsYUFBYSxDQUFDSCxLQUFLLENBQUM7SUFBQTtFQUNuQyxDQUFDLEVBQUUsQ0FBQ1AsU0FBUyxDQUFDLENBQUM7RUFFZixJQUFNVyxNQUFNLEdBQUd6QixnQkFBZ0IsQ0FBQztJQUFBLE9BQVdyQixTQUFBLENBQUEsS0FBQSxDQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsS0FBQSxDQUFBLGVBQUErQyxtQkFBQSxDQUFBQyxJQUFBLENBQUEsU0FBQUMsUUFBQTtNQUFBLE9BQUFGLG1CQUFBLENBQUFHLElBQUEsV0FBQUMsUUFBQTtRQUFBLGtCQUFBQSxRQUFBLENBQUFQLElBQUEsR0FBQU8sUUFBQSxDQUFBdkMsSUFBQTtVQUFBO1lBQUEsTUFDckN1QixTQUFTLEdBQUcsQ0FBQyxJQUFJSSxPQUFPO2NBQUFZLFFBQUEsQ0FBQXZDLElBQUE7Y0FBQTtZQUFBO1lBQUEsT0FBQXVDLFFBQUEsQ0FBQUMsTUFBQTtVQUFBO1lBQzVCWixVQUFVLENBQUMsSUFBSSxDQUFDO1lBQUNXLFFBQUEsQ0FBQVAsSUFBQTtZQUFBTyxRQUFBLENBQUF2QyxJQUFBO1lBRWYsT0FBTWUsUUFBUSxDQUFBLENBQUU7VUFBQTtZQUNoQlMsWUFBWSxDQUFDUCxRQUFRLENBQUM7VUFBQztZQUFBc0IsUUFBQSxDQUFBUCxJQUFBO1lBRXZCSixVQUFVLENBQUMsS0FBSyxDQUFDO1lBQUMsT0FBQVcsUUFBQSxDQUFBRSxNQUFBO1VBQUE7VUFBQTtZQUFBLE9BQUFGLFFBQUEsQ0FBQUcsSUFBQTtRQUFBO01BQUEsR0FBQUwsT0FBQTtJQUFBLENBRXJCLEVBQUE7RUFBQSxFQUFDO0VBRUYsSUFBTU0sT0FBTyxHQUFHQyxJQUFJLENBQUNDLEtBQUssQ0FBQ3RCLFNBQVMsR0FBR1osa0JBQWtCLENBQUM7RUFDMUQsSUFBTW1DLE9BQU8sR0FBR3ZCLFNBQVMsR0FBR1osa0JBQWtCO0VBRTlDLE9BQU87SUFDTFksU0FBUyxFQUFUQSxTQUFTO0lBQ1R3QixTQUFTLEVBQUV4QixTQUFTLElBQUksQ0FBQyxJQUFJLENBQUNJLE9BQU87SUFDckNBLE9BQU8sRUFBUEEsT0FBTztJQUNQcUIsU0FBUyxLQUFBQyxNQUFBLENBQUtOLE9BQU8sUUFBQU0sTUFBQSxDQUFLSCxPQUFPLE1BQUc7SUFDcENaLE1BQU0sRUFBTkE7RURqQkEsQ0NrQkQ7QUFDSCxDQUFDIiwiZmlsZSI6ImJ1c2luZXNzL0RpYWxvZy9WZXJpZmljYXRpb25EaWFsb2cvaG9va3MvdXNlUmVzZW5kQ291bnRkb3duLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlRXZlbnRDYWxsYmFjayB9IGZyb20gJ0AxbW9uZXkvaG9va3MnO1xuY29uc3QgREVGQVVMVF9DT09MRE9XTl9TRUNPTkRTID0gNjA7XG5jb25zdCBTRUNPTkRTX1BFUl9NSU5VVEUgPSA2MDtcbmNvbnN0IFRJQ0tfTVMgPSAxMDAwO1xuLyoqXG4gKiBIZWFkbGVzcyByZXNlbmQtd2l0aC1jb29sZG93biBsb2dpYyBwb3J0ZWQgZnJvbSB0aGUgcHJvZHVjdCdzIGBSZXNlbmRCdXR0b25gOlxuICogYSBwZXItc2Vjb25kIGNvdW50ZG93biwgYSBsb2NrIGR1cmluZyB0aGUgY29vbGRvd24gYW5kIHdoaWxlIHRoZSByZXNlbmRcbiAqIHJlcXVlc3QgaXMgaW4gZmxpZ2h0LCBhbmQgYW4gYG0gc2AgZm9ybWF0dGVyLlxuICovXG5leHBvcnQgY29uc3QgdXNlUmVzZW5kQ291bnRkb3duID0gKG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCB7IG9uUmVzZW5kLCBjb29sZG93biA9IERFRkFVTFRfQ09PTERPV05fU0VDT05EUywgYXV0b1N0YXJ0ID0gZmFsc2UgfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgW3JlbWFpbmluZywgc2V0UmVtYWluaW5nXSA9IHVzZVN0YXRlKGF1dG9TdGFydCA/IGNvb2xkb3duIDogMCk7XG4gICAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChyZW1haW5pbmcgPD0gMClcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHRpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgc2V0UmVtYWluaW5nKChwcmV2KSA9PiAocHJldiA8PSAxID8gMCA6IHByZXYgLSAxKSk7XG4gICAgICAgIH0sIFRJQ0tfTVMpO1xuICAgICAgICByZXR1cm4gKCkgPT4gY2xlYXJJbnRlcnZhbCh0aW1lcik7XG4gICAgfSwgW3JlbWFpbmluZ10pO1xuICAgIGNvbnN0IHJlc2VuZCA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGlmIChyZW1haW5pbmcgPiAwIHx8IGxvYWRpbmcpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHNldExvYWRpbmcodHJ1ZSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB5aWVsZCBvblJlc2VuZCgpO1xuICAgICAgICAgICAgc2V0UmVtYWluaW5nKGNvb2xkb3duKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHNldExvYWRpbmcoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfSkpO1xuICAgIGNvbnN0IG1pbnV0ZXMgPSBNYXRoLmZsb29yKHJlbWFpbmluZyAvIFNFQ09ORFNfUEVSX01JTlVURSk7XG4gICAgY29uc3Qgc2Vjb25kcyA9IHJlbWFpbmluZyAlIFNFQ09ORFNfUEVSX01JTlVURTtcbiAgICByZXR1cm4ge1xuICAgICAgICByZW1haW5pbmcsXG4gICAgICAgIGNhblJlc2VuZDogcmVtYWluaW5nIDw9IDAgJiYgIWxvYWRpbmcsXG4gICAgICAgIGxvYWRpbmcsXG4gICAgICAgIGZvcm1hdHRlZDogYCR7bWludXRlc31tICR7c2Vjb25kc31zYCxcbiAgICAgICAgcmVzZW5kLFxuICAgIH07XG59OyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { VerificationDialog } from './VerificationDialog';
|
|
2
|
+
export { useOtpVerification, useResendCountdown } from './hooks';
|
|
3
|
+
export * from './interface';
|
|
4
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9zcmMvYnVzaW5lc3MvRGlhbG9nL1ZlcmlmaWNhdGlvbkRpYWxvZy9pbmRleC50cyJdLCJuYW1lcyI6WyJWZXJpZmljYXRpb25EaWFsb2ciLCJ1c2VPdHBWZXJpZmljYXRpb24iLCJ1c2VSZXNlbmRDb3VudGRvd24iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLGtCQUFrQixRQUFRLHNCQUFzQjtBQUN6RCxTQUFTQyxrQkFBa0IsRUFBRUMsa0JBQWtCLFFBQVEsU0FBUztBQUNoRSxjQUFjLGFBQWEiLCJmaWxlIjoiYnVzaW5lc3MvRGlhbG9nL1ZlcmlmaWNhdGlvbkRpYWxvZy9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { ButtonColor } from "../../../components/Button";
|
|
3
|
+
import type { DialogProps } from "../../../components/Dialog";
|
|
4
|
+
import type { InputStatus } from "../../../components/Input";
|
|
5
|
+
import type { OtpVerifyResult } from './hooks';
|
|
6
|
+
export type { OtpVerifyResult, UseOtpVerificationOptions, UseOtpVerificationResult, UseResendCountdownOptions, UseResendCountdownResult, } from './hooks';
|
|
7
|
+
/** Visual status forwarded to the inner `Input.OTP`. */
|
|
8
|
+
export type VerificationDialogStatus = InputStatus;
|
|
9
|
+
/**
|
|
10
|
+
* Optional secondary button (e.g. "Cancel" / "Back") rendered to the left of
|
|
11
|
+
* the primary submit button. When omitted, the submit button spans the full
|
|
12
|
+
* width; when present, the two split the row evenly.
|
|
13
|
+
*/
|
|
14
|
+
export interface VerificationDialogSecondaryAction {
|
|
15
|
+
/** Button label. */
|
|
16
|
+
label: ReactNode;
|
|
17
|
+
/** Click handler. */
|
|
18
|
+
onClick?: () => void;
|
|
19
|
+
/** Disable the button. */
|
|
20
|
+
disabled?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Color tone.
|
|
23
|
+
* @default 'grey'
|
|
24
|
+
*/
|
|
25
|
+
color?: ButtonColor;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Optional "Haven't received the code? Resend" row below a divider in the
|
|
29
|
+
* footer. Resending is rate-limited by an internal countdown.
|
|
30
|
+
*/
|
|
31
|
+
export interface VerificationDialogResend {
|
|
32
|
+
/** Muted prompt text, e.g. `"Haven't received the code?"`. */
|
|
33
|
+
promptText?: ReactNode;
|
|
34
|
+
/**
|
|
35
|
+
* Trailing brand-colored action text.
|
|
36
|
+
* @default 'Resend code'
|
|
37
|
+
*/
|
|
38
|
+
actionText?: ReactNode;
|
|
39
|
+
/** Fires when the user triggers a resend (in-app action like re-sending an email). */
|
|
40
|
+
onResend: () => void | Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Cooldown length in seconds before resending is allowed again. While
|
|
43
|
+
* counting down, the label is muted and shows the remaining time.
|
|
44
|
+
* @default 60
|
|
45
|
+
*/
|
|
46
|
+
cooldown?: number;
|
|
47
|
+
}
|
|
48
|
+
export interface VerificationDialogProps extends Pick<DialogProps, 'open' | 'size' | 'maskClosable' | 'showCloseIcon' | 'showBackIcon' | 'onBack' | 'className'> {
|
|
49
|
+
/** Dialog heading, e.g. `"Two-factor authenticator"` / `"Email Verification"`. */
|
|
50
|
+
title: ReactNode;
|
|
51
|
+
/** Supporting copy under the title explaining what code to enter and why. */
|
|
52
|
+
description?: ReactNode;
|
|
53
|
+
/** Controlled OTP value. */
|
|
54
|
+
value?: string;
|
|
55
|
+
/** Initial OTP value when uncontrolled. */
|
|
56
|
+
defaultValue?: string;
|
|
57
|
+
/** Helper subtext shown directly under the OTP boxes, e.g. `"e.g. 123 456"`. Hidden while an error is showing. */
|
|
58
|
+
otpHint?: ReactNode;
|
|
59
|
+
/**
|
|
60
|
+
* Auto-focus the first OTP box when the dialog opens.
|
|
61
|
+
* @default false
|
|
62
|
+
*/
|
|
63
|
+
autoFocus?: boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Mask the entered digits as dots (•), like a password field, instead of
|
|
66
|
+
* showing them in plain text. This is **display only** — `value`, `onChange`,
|
|
67
|
+
* and the code passed to `onVerify` are always the real digits. Use it when
|
|
68
|
+
* the screen may be visible to others (e.g. shared/public devices).
|
|
69
|
+
* @default false
|
|
70
|
+
*/
|
|
71
|
+
mask?: boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Disable OTP entry.
|
|
74
|
+
* @default false
|
|
75
|
+
*/
|
|
76
|
+
disabled?: boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Verify automatically once all digits are entered (in addition to the
|
|
79
|
+
* submit button).
|
|
80
|
+
* @default true
|
|
81
|
+
*/
|
|
82
|
+
autoSubmit?: boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Verify the entered code. Resolve `true` on success; resolve (or return) a
|
|
85
|
+
* string to show it as the error message under the boxes. On any non-`true`
|
|
86
|
+
* result (or a thrown error) the boxes are cleared. Drives the submit
|
|
87
|
+
* button's loading state and auto-submit.
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```tsx
|
|
91
|
+
* <VerificationDialog
|
|
92
|
+
* open={open}
|
|
93
|
+
* title="Email Verification"
|
|
94
|
+
* description="Enter the 6-digit code sent to ema...@gmail.com"
|
|
95
|
+
* otpHint="e.g. 123 456"
|
|
96
|
+
* submitText="Continue"
|
|
97
|
+
* onVerify={async (code) => {
|
|
98
|
+
* const res = await api.verify(code);
|
|
99
|
+
* return res.ok ? true : 'That code is incorrect.';
|
|
100
|
+
* }}
|
|
101
|
+
* secondaryAction={{ label: 'Cancel', onClick: () => setOpen(false) }}
|
|
102
|
+
* resend={{ promptText: "Haven't received the code?", onResend: api.resend, cooldown: 60 }}
|
|
103
|
+
* onClose={() => setOpen(false)}
|
|
104
|
+
* />
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
onVerify: (code: string) => Promise<OtpVerifyResult> | OtpVerifyResult;
|
|
108
|
+
/** Fires on every OTP change with the current value. */
|
|
109
|
+
onChange?: (value: string) => void;
|
|
110
|
+
/**
|
|
111
|
+
* Primary (submit) button label.
|
|
112
|
+
* @default 'Submit'
|
|
113
|
+
*/
|
|
114
|
+
submitText?: ReactNode;
|
|
115
|
+
/** Optional secondary button (e.g. "Cancel") shown beside the submit button. */
|
|
116
|
+
secondaryAction?: VerificationDialogSecondaryAction;
|
|
117
|
+
/** Optional resend prompt + link with built-in cooldown, below a divider. */
|
|
118
|
+
resend?: VerificationDialogResend;
|
|
119
|
+
/**
|
|
120
|
+
* Fires from the close icon, mask click, and Escape key. Set your `open`
|
|
121
|
+
* state to `false` here.
|
|
122
|
+
*/
|
|
123
|
+
onClose?: () => void;
|
|
124
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVzaW5lc3MvRGlhbG9nL1ZlcmlmaWNhdGlvbkRpYWxvZy9pbnRlcmZhY2UuanMiLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMiLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9WZXJpZmljYXRpb25EaWFsb2cvaW50ZXJmYWNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7fTsiXSwibWFwcGluZ3MiOiJBQUFBIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Retrieves the spacing value for a given token key.
|
|
3
|
+
*
|
|
4
|
+
* @param {string} $key - The spacing token key (e.g., '100', '200').
|
|
5
|
+
* @return {length|null} The computed spacing value or null if the key is invalid.
|
|
6
|
+
* @example
|
|
7
|
+
* .element {
|
|
8
|
+
* padding: om-spacing-token('200'); // Returns 8px if $om-sys-spacing-unit is 4px
|
|
9
|
+
* }
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Computes the spacing value based on a token key or a direct length value.
|
|
13
|
+
*
|
|
14
|
+
* @param {string|length} $value - The spacing token key (e.g., '100') or a direct length value (e.g., '16px').
|
|
15
|
+
* @return {length} The computed spacing value.
|
|
16
|
+
* @example
|
|
17
|
+
* .element {
|
|
18
|
+
* margin: om-spacing-value('300'); // Returns 12px if $om-sys-spacing-unit is 4px
|
|
19
|
+
* padding: om-spacing-value(16px); // Returns 16px
|
|
20
|
+
* gap: om-spacing-value(2); // Returns 8px if $om-sys-spacing-unit is 4px
|
|
21
|
+
* }
|
|
22
|
+
*/
|
|
23
|
+
.om-verification-dialog-actions > button {
|
|
24
|
+
flex: 1 1 0;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.om-verification-dialog-recovery-text.is-clickable,
|
|
28
|
+
.om-verification-dialog-resend.is-clickable {
|
|
29
|
+
cursor: pointer;
|
|
30
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import './VerificationDialog.css';
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9WZXJpZmljYXRpb25EaWFsb2cvc3JjL2J1c2luZXNzL0RpYWxvZy9WZXJpZmljYXRpb25EaWFsb2cvc3R5bGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTywyQkFBMkIiLCJmaWxlIjoiYnVzaW5lc3MvRGlhbG9nL1ZlcmlmaWNhdGlvbkRpYWxvZy9zdHlsZS9jc3MuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import './VerificationDialog.css';
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import './VerificationDialog.css';
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9WZXJpZmljYXRpb25EaWFsb2cvc3JjL2J1c2luZXNzL0RpYWxvZy9WZXJpZmljYXRpb25EaWFsb2cvc3R5bGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTywyQkFBMkIiLCJmaWxlIjoiYnVzaW5lc3MvRGlhbG9nL1ZlcmlmaWNhdGlvbkRpYWxvZy9zdHlsZS9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './ResultDialog';
|
|
2
|
+
export * from './TransactionDialog';
|
|
3
|
+
export * from './VerificationDialog';
|
|
4
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL3NyYy9idXNpbmVzcy9EaWFsb2cvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQkFBZ0I7QUFDOUIsY0FBYyxxQkFBcUI7QUFDbkMsY0FBYyxzQkFBc0IiLCJmaWxlIjoiYnVzaW5lc3MvRGlhbG9nL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
package/es/business/index.d.ts
CHANGED
package/es/business/index.js
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
export * from './Dialog';
|
|
1
2
|
export * from './Select';
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9idXNpbmVzcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFVBQVU7QUFDeEIsY0FBYyxVQUFVIiwiZmlsZSI6ImJ1c2luZXNzL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
@@ -36,10 +36,11 @@ var getButtonClassName = function getButtonClassName(_ref) {
|
|
|
36
36
|
color = _ref.color,
|
|
37
37
|
size = _ref.size,
|
|
38
38
|
rounded = _ref.rounded,
|
|
39
|
+
block = _ref.block,
|
|
39
40
|
disabled = _ref.disabled,
|
|
40
41
|
loading = _ref.loading,
|
|
41
42
|
className = _ref.className;
|
|
42
|
-
return classes(undefined, joinCls(getToneClassName(classes, variant, color), classes(size), rounded && classes(BUTTON_MODIFIER.rounded), disabled && classes(BUTTON_MODIFIER.disabled), loading && classes(BUTTON_MODIFIER.loading), className));
|
|
43
|
+
return classes(undefined, joinCls(getToneClassName(classes, variant, color), classes(size), rounded && classes(BUTTON_MODIFIER.rounded), block && classes(BUTTON_MODIFIER.block), disabled && classes(BUTTON_MODIFIER.disabled), loading && classes(BUTTON_MODIFIER.loading), className));
|
|
43
44
|
};
|
|
44
45
|
/**
|
|
45
46
|
* Auto-fill default `color` and `size` on icon adornments (iconStart / iconEnd).
|
|
@@ -88,13 +89,15 @@ var ButtonBase = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
|
88
89
|
loading = _props$loading === void 0 ? false : _props$loading,
|
|
89
90
|
_props$rounded = props.rounded,
|
|
90
91
|
rounded = _props$rounded === void 0 ? false : _props$rounded,
|
|
92
|
+
_props$block = props.block,
|
|
93
|
+
block = _props$block === void 0 ? false : _props$block,
|
|
91
94
|
iconStart = props.iconStart,
|
|
92
95
|
iconEnd = props.iconEnd,
|
|
93
96
|
_props$disabled = props.disabled,
|
|
94
97
|
disabled = _props$disabled === void 0 ? false : _props$disabled,
|
|
95
98
|
_props$type = props.type,
|
|
96
99
|
type = _props$type === void 0 ? BUTTON_DEFAULT_HTML_TYPE : _props$type,
|
|
97
|
-
rest = __rest(props, ["children", "className", "prefixCls", "variant", "color", "size", "loading", "rounded", "iconStart", "iconEnd", "disabled", "type"]);
|
|
100
|
+
rest = __rest(props, ["children", "className", "prefixCls", "variant", "color", "size", "loading", "rounded", "block", "iconStart", "iconEnd", "disabled", "type"]);
|
|
98
101
|
var classes = classnames(prefixCls);
|
|
99
102
|
// Loading implicitly disables the button to prevent duplicate submissions
|
|
100
103
|
var isDisabled = disabled || loading;
|
|
@@ -116,6 +119,7 @@ var ButtonBase = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
|
116
119
|
color: color,
|
|
117
120
|
size: size,
|
|
118
121
|
rounded: rounded,
|
|
122
|
+
block: block,
|
|
119
123
|
disabled: isDisabled,
|
|
120
124
|
loading: loading,
|
|
121
125
|
className: className
|
|
@@ -146,4 +150,4 @@ ButtonBase.displayName = BUTTON_COMPONENT_NAME;
|
|
|
146
150
|
export var Button = /*#__PURE__*/memo(ButtonBase);
|
|
147
151
|
Button.displayName = BUTTON_COMPONENT_NAME;
|
|
148
152
|
export default Button;
|
|
149
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvQnV0dG9uL0J1dHRvbi5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvQnV0dG9uL0J1dHRvbi50c3giXSwibmFtZXMiOlsiX19yZXN0IiwicyIsImUiLCJ0IiwicCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJpIiwibGVuZ3RoIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiY2xvbmVFbGVtZW50IiwiZm9yd2FyZFJlZiIsImlzVmFsaWRFbGVtZW50IiwibWVtbyIsIlNwaW5uZXIiLCJUeXBvZ3JhcGh5Qm9keSIsIlR5cG9ncmFwaHlIZWFkbGluZSIsImRlZmF1bHQiLCJjbGFzc25hbWVzIiwiam9pbkNscyIsIkJVVFRPTl9DT01QT05FTlRfTkFNRSIsIkJVVFRPTl9ERUZBVUxUX0NPTE9SIiwiQlVUVE9OX0RFRkFVTFRfSFRNTF9UWVBFIiwiQlVUVE9OX0RFRkFVTFRfUFJFRklYIiwiQlVUVE9OX0RFRkFVTFRfU0laRSIsIkJVVFRPTl9ERUZBVUxUX1ZBUklBTlQiLCJCVVRUT05fSUNPTl9JTkhFUklUX0NPTE9SIiwiQlVUVE9OX0lDT05fU0laRV9CWV9TSVpFIiwiQlVUVE9OX0xPQURJTkdfSUNPTl9TSVpFX0JZX1NJWkUiLCJCVVRUT05fTU9ESUZJRVIiLCJCVVRUT05fU0xPVCIsIkJVVFRPTl9UWVBPR1JBUEhZX01BUCIsIkJVVFRPTl9WQVJJQU5UIiwiZ2V0VG9uZUNsYXNzTmFtZSIsImNsYXNzZXMiLCJ2YXJpYW50IiwiY29sb3IiLCJ0ZXh0IiwiY29uY2F0IiwiZ2V0TG9hZGluZ0ljb25DbGFzc05hbWUiLCJzaXplIiwibG9hZGluZ0ljb24iLCJnZXRCdXR0b25DbGFzc05hbWUiLCJfcmVmIiwicm91bmRlZCIsImRpc2FibGVkIiwibG9hZGluZyIsImNsYXNzTmFtZSIsInVuZGVmaW5lZCIsIm5vcm1hbGl6ZUFkb3JubWVudCIsImFkb3JubWVudCIsImFkb3JubWVudFByb3BzIiwicHJvcHMiLCJuZXh0UHJvcHMiLCJ3aWR0aCIsImhlaWdodCIsImtleXMiLCJCdXR0b25CYXNlIiwicmVmIiwiY2hpbGRyZW4iLCJfcHJvcHMkY2xhc3NOYW1lIiwiX3Byb3BzJHByZWZpeENscyIsInByZWZpeENscyIsIl9wcm9wcyR2YXJpYW50IiwiX3Byb3BzJGNvbG9yIiwiX3Byb3BzJHNpemUiLCJfcHJvcHMkbG9hZGluZyIsIl9wcm9wcyRyb3VuZGVkIiwiaWNvblN0YXJ0IiwiaWNvbkVuZCIsIl9wcm9wcyRkaXNhYmxlZCIsIl9wcm9wcyR0eXBlIiwidHlwZSIsInJlc3QiLCJpc0Rpc2FibGVkIiwibm9ybWFsaXplZEljb25TdGFydCIsIm5vcm1hbGl6ZWRJY29uRW5kIiwic3RhcnRBZG9ybm1lbnQiLCJhc3NpZ24iLCJ0eXBvIiwic3Ryb25nIiwiZGlzcGxheU5hbWUiLCJCdXR0b24iXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLE1BQU0sR0FBSSxJQUFJLElBQUksSUFBSSxDQUFDQSxNQUFNLElBQUssVUFBVUMsQ0FBQyxFQUFFQyxDQUFDLEVBQUU7RUFDbEQsSUFBSUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUNWLEtBQUssSUFBSUMsQ0FBQyxJQUFJSCxDQUFDLEVBQUUsSUFBSUksTUFBTSxDQUFDQyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDUCxDQUFDLEVBQUVHLENBQUMsQ0FBQyxJQUFJRixDQUFDLENBQUNPLE9BQU8sQ0FBQ0wsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUMvRUQsQ0FBQyxDQUFDQyxDQUFDLENBQUMsR0FBR0gsQ0FBQyxDQUFDRyxDQUFDLENBQUM7RUFDZixJQUFJSCxDQUFDLElBQUksSUFBSSxJQUFJLE9BQU9JLE1BQU0sQ0FBQ0sscUJBQXFCLEtBQUssVUFBVSxFQUMvRCxLQUFLLElBQUlDLENBQUMsR0FBRyxDQUFDLEVBQUVQLENBQUMsR0FB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QUFNIiwiZmlsZSI6ImNvbXBvbmVudHMvQnV0dG9uL0J1dHRvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBjbG9uZUVsZW1lbnQsIGZvcndhcmRSZWYsIGlzVmFsaWRFbGVtZW50LCBtZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFNwaW5uZXIgZnJvbSAnLi4vU3Bpbm5lcic7XG5pbXBvcnQgeyBUeXBvZ3JhcGh5Qm9keSwgVHlwb2dyYXBoeUhlYWRsaW5lIH0gZnJvbSAnLi4vVHlwb2dyYXBoeSc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMsIGpvaW5DbHMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCAnLi9zdHlsZSc7XG5pbXBvcnQgeyBCVVRUT05fQ09NUE9ORU5UX05BTUUsIEJVVFRPTl9ERUZBVUxUX0NPTE9SLCBCVVRUT05fREVGQVVMVF9IVE1MX1RZUEUsIEJVVFRPTl9ERUZBVUxUX1BSRUZJWCwgQlVUVE9OX0RFRkFVTFRfU0laRSwgQlVUVE9OX0RFRkFVTFRfVkFSSUFOVCwgQlVUVE9OX0lDT05fSU5IRVJJVF9DT0xPUiwgQlVUVE9OX0lDT05fU0laRV9CWV9TSVpFLCBCVVRUT05fTE9BRElOR19JQ09OX1NJWkVfQllfU0laRSwgQlVUVE9OX01PRElGSUVSLCBCVVRUT05fU0xPVCwgQlVUVE9OX1RZUE9HUkFQSFlfTUFQLCBCVVRUT05fVkFSSUFOVCwgfSBmcm9tICcuL2NvbnN0YW50cyc7XG4vKipcbiAqIFJlc29sdmUgdGhlIGNvbG9yL3RvbmUgY2xhc3MgbmFtZSBiYXNlZCBvbiB2YXJpYW50LlxuICogLSBDb250YWluZWQgYnV0dG9uczogYXBwbHkgdGhlIGNvbG9yIGNsYXNzIGRpcmVjdGx5IChlLmcuIGAtLXByaW1hcnlgKS5cbiAqIC0gVGV4dCBidXR0b25zOiBhbHdheXMgYXBwbHkgdGhlIGAtLXRleHRgIG1vZGlmaWVyLCBhbmQgYXBwZW5kIGFcbiAqICAgY29sb3Itc3BlY2lmaWMgbW9kaWZpZXIgb25seSB3aGVuIHRoZSBjb2xvciBkaWZmZXJzIGZyb20gdGhlIGRlZmF1bHQuXG4gKi9cbmNvbnN0IGdldFRvbmVDbGFzc05hbWUgPSAoY2xhc3NlcywgdmFyaWFudCwgY29sb3IpID0+IHtcbiAgICBpZiAodmFyaWFudCAhPT0gQlVUVE9OX1ZBUklBTlQudGV4dCkge1xuICAgICAgICByZXR1cm4gY2xhc3Nlcyhjb2xvcik7XG4gICAgfVxuICAgIHJldHVybiBqb2luQ2xzKGNsYXNzZXMoQlVUVE9OX01PRElGSUVSLnRleHQpLCBjb2xvciAhPT0gQlVUVE9OX0RFRkFVTFRfQ09MT1IgJiYgY2xhc3NlcyhgJHtCVVRUT05fTU9ESUZJRVIudGV4dH0tJHtjb2xvcn1gKSk7XG59O1xuLyoqIEJ1aWxkIGNsYXNzIG5hbWVzIGZvciB0aGUgbG9hZGluZyBzcGlubmVyLCBjb21iaW5pbmcgYmFzZSArIHNpemUtc3BlY2lmaWMgY2xhc3Nlcy4gKi9cbmNvbnN0IGdldExvYWRpbmdJY29uQ2xhc3NOYW1lID0gKGNsYXNzZXMsIHNpemUpID0+IGpvaW5DbHMoY2xhc3NlcyhCVVRUT05fU0xPVC5sb2FkaW5nSWNvbiksIGNsYXNzZXMoYCR7QlVUVE9OX1NMT1QubG9hZGluZ0ljb259LSR7c2l6ZX1gKSk7XG4vKiogQ29tcG9zZSB0aGUgZnVsbCBidXR0b24gY2xhc3MgbmFtZSBmcm9tIHZhcmlhbnQsIGNvbG9yLCBzaXplLCBhbmQgc3RhdGUgbW9kaWZpZXJzLiAqL1xuY29uc3QgZ2V0QnV0dG9uQ2xhc3NOYW1lID0gKHsgY2xhc3NlcywgdmFyaWFudCwgY29sb3IsIHNpemUsIHJvdW5kZWQsIGRpc2FibGVkLCBsb2FkaW5nLCBjbGFzc05hbWUsIH0pID0+IGNsYXNzZXModW5kZWZpbmVkLCBqb2luQ2xzKGdldFRvbmVDbGFzc05hbWUoY2xhc3NlcywgdmFyaWFudCwgY29sb3IpLCBjbGFzc2VzKHNpemUpLCByb3VuZGVkICYmIGNsYXNzZXMoQlVUVE9OX01PRElGSUVSLnJvdW5kZWQpLCBkaXNhYmxlZCAmJiBjbGFzc2VzKEJVVFRPTl9NT0RJRklFUi5kaXNhYmxlZCksIGxvYWRpbmcgJiYgY2xhc3NlcyhCVVRUT05fTU9ESUZJRVIubG9hZGluZyksIGNsYXNzTmFtZSkpO1xuLyoqXG4gKiBBdXRvLWZpbGwgZGVmYXVsdCBgY29sb3JgIGFuZCBgc2l6ZWAgb24gaWNvbiBhZG9ybm1lbnRzIChpY29uU3RhcnQgLyBpY29uRW5kKS5cbiAqXG4gKiAtIElmIHRoZSBpY29uIGhhcyBubyBgY29sb3JgLCBpbmhlcml0IGZyb20gdGhlIGJ1dHRvbiB2aWEgYGN1cnJlbnRDb2xvcmAuXG4gKiAtIElmIHRoZSBpY29uIGhhcyBubyBleHBsaWNpdCBkaW1lbnNpb25zIChgc2l6ZWAgLyBgd2lkdGhgIC8gYGhlaWdodGApLFxuICogICBhcHBseSB0aGUgc2l6ZSB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBjdXJyZW50IGJ1dHRvbiBzaXplLlxuICogLSBOb24tZWxlbWVudCBub2RlcyAoc3RyaW5ncywgbnVtYmVycywgbnVsbCkgYXJlIHJldHVybmVkIGFzLWlzLlxuICovXG5jb25zdCBub3JtYWxpemVBZG9ybm1lbnQgPSAoYWRvcm5tZW50LCBzaXplKSA9PiB7XG4gICAgaWYgKCFpc1ZhbGlkRWxlbWVudChhZG9ybm1lbnQpKSB7XG4gICAgICAgIHJldHVybiBhZG9ybm1lbnQ7XG4gICAgfVxuICAgIGNvbnN0IGFkb3JubWVudFByb3BzID0gYWRvcm5tZW50LnByb3BzO1xuICAgIGNvbnN0IG5leHRQcm9wcyA9IHt9O1xuICAgIGlmIChhZG9ybm1lbnRQcm9wcy5jb2xvciA9PSBudWxsKSB7XG4gICAgICAgIG5leHRQcm9wcy5jb2xvciA9IEJVVFRPTl9JQ09OX0lOSEVSSVRfQ09MT1I7XG4gICAgfVxuICAgIGlmIChhZG9ybm1lbnRQcm9wcy5zaXplID09IG51bGwgJiZcbiAgICAgICAgYWRvcm5tZW50UHJvcHMud2lkdGggPT0gbnVsbCAmJlxuICAgICAgICBhZG9ybm1lbnRQcm9wcy5oZWlnaHQgPT0gbnVsbCkge1xuICAgICAgICBuZXh0UHJvcHMuc2l6ZSA9IEJVVFRPTl9JQ09OX1NJWkVfQllfU0laRVtzaXplXTtcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG5leHRQcm9wcykubGVuZ3RoID4gMFxuICAgICAgICA/IGNsb25lRWxlbWVudChhZG9ybm1lbnQsIG5leHRQcm9wcylcbiAgICAgICAgOiBhZG9ybm1lbnQ7XG59O1xuLyoqXG4gKiBDb3JlIGJ1dHRvbiBjb21wb25lbnQuXG4gKlxuICogU3VwcG9ydHMgdHdvIHZhcmlhbnRzIChgY29udGFpbmVkYCB8IGB0ZXh0YCksIGVpZ2h0IGNvbG9yIHRvbmVzLCB0aHJlZSBzaXplcyxcbiAqIG9wdGlvbmFsIHN0YXJ0L2VuZCBpY29uIGFkb3JubWVudHMsIGEgbG9hZGluZyBzdGF0ZSAocmVwbGFjZXMgc3RhcnQgaWNvbiB3aXRoXG4gKiBhIHNwaW5uZXIpLCBhbmQgcm91bmRlZCBtb2RlLlxuICpcbiAqIFR5cG9ncmFwaHkgaXMgYXV0b21hdGljYWxseSBzZWxlY3RlZCBwZXIgdmFyaWFudCArIHNpemUgdmlhIGBCVVRUT05fVFlQT0dSQVBIWV9NQVBgLlxuICovXG5jb25zdCBCdXR0b25CYXNlID0gZm9yd2FyZFJlZigocHJvcHMsIHJlZikgPT4ge1xuICAgIGNvbnN0IHsgY2hpbGRyZW4sIGNsYXNzTmFtZSA9ICcnLCBwcmVmaXhDbHMgPSBCVVRUT05fREVGQVVMVF9QUkVGSVgsIHZhcmlhbnQgPSBCVVRUT05fREVGQVVMVF9WQVJJQU5ULCBjb2xvciA9IEJVVFRPTl9ERUZBVUxUX0NPTE9SLCBzaXplID0gQlVUVE9OX0RFRkFVTFRfU0laRSwgbG9hZGluZyA9IGZhbHNlLCByb3VuZGVkID0gZmFsc2UsIGljb25TdGFydCwgaWNvbkVuZCwgZGlzYWJsZWQgPSBmYWxzZSwgdHlwZSA9IEJVVFRPTl9ERUZBVUxUX0hUTUxfVFlQRSB9ID0gcHJvcHMsIHJlc3QgPSBfX3Jlc3QocHJvcHMsIFtcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwicHJlZml4Q2xzXCIsIFwidmFyaWFudFwiLCBcImNvbG9yXCIsIFwic2l6ZVwiLCBcImxvYWRpbmdcIiwgXCJyb3VuZGVkXCIsIFwiaWNvblN0YXJ0XCIsIFwiaWNvbkVuZFwiLCBcImRpc2FibGVkXCIsIFwidHlwZVwiXSk7XG4gICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMocHJlZml4Q2xzKTtcbiAgICAvLyBMb2FkaW5nIGltcGxpY2l0bHkgZGlzYWJsZXMgdGhlIGJ1dHRvbiB0byBwcmV2ZW50IGR1cGxpY2F0ZSBzdWJtaXNzaW9uc1xuICAgIGNvbnN0IGlzRGlzYWJsZWQgPSBkaXNhYmxlZCB8fCBsb2FkaW5nO1xuICAgIC8vIEF1dG8tZmlsbCBjb2xvciAmIHNpemUgb24gaWNvbiBhZG9ybm1lbnRzIHNvIGNvbnN1bWVycyBkb24ndCBoYXZlIHRvXG4gICAgY29uc3Qgbm9ybWFsaXplZEljb25TdGFydCA9IG5vcm1hbGl6ZUFkb3JubWVudChpY29uU3RhcnQsIHNpemUpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRJY29uRW5kID0gbm9ybWFsaXplQWRvcm5tZW50KGljb25FbmQsIHNpemUpO1xuICAgIC8vIFdoZW4gbG9hZGluZywgcmVwbGFjZSB0aGUgc3RhcnQgaWNvbiB3aXRoIGEgc3Bpbm5lclxuICAgIGNvbnN0IHN0YXJ0QWRvcm5tZW50ID0gbG9hZGluZyA/IChfanN4KFNwaW5uZXIsIHsgY2xhc3NOYW1lOiBnZXRMb2FkaW5nSWNvbkNsYXNzTmFtZShjbGFzc2VzLCBzaXplKSwgc2l6ZTogQlVUVE9OX0xPQURJTkdfSUNPTl9TSVpFX0JZX1NJWkVbc2l6ZV0gfSkpIDogbm9ybWFsaXplZEljb25TdGFydDtcbiAgICByZXR1cm4gKF9qc3hzKFwiYnV0dG9uXCIsIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgcmVmOiByZWYsIHR5cGU6IHR5cGUsIGRpc2FibGVkOiBpc0Rpc2FibGVkLCBjbGFzc05hbWU6IGdldEJ1dHRvbkNsYXNzTmFtZSh7XG4gICAgICAgICAgICBjbGFzc2VzLFxuICAgICAgICAgICAgdmFyaWFudCxcbiAgICAgICAgICAgIGNvbG9yLFxuICAgICAgICAgICAgc2l6ZSxcbiAgICAgICAgICAgIHJvdW5kZWQsXG4gICAgICAgICAgICBkaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgICAgIGxvYWRpbmcsXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgIH0pLCBjaGlsZHJlbjogW3N0YXJ0QWRvcm5tZW50ICYmIF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKEJVVFRPTl9TTE9ULmljb25TdGFydCksIGNoaWxkcmVuOiBzdGFydEFkb3JubWVudCB9KSwgY2hpbGRyZW4gIT0gbnVsbCAmJiAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHR5cG8gPSBCVVRUT05fVFlQT0dSQVBIWV9NQVBbdmFyaWFudF1bc2l6ZV07XG4gICAgICAgICAgICAgICAgaWYgKHR5cG8udmFyaWFudCA9PT0gJ2hlYWRsaW5lJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2pzeChUeXBvZ3JhcGh5SGVhZGxpbmUsIHsgc2l6ZTogdHlwby5zaXplLCBjaGlsZHJlbjogY2hpbGRyZW4gfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBfanN4KFR5cG9ncmFwaHlCb2R5LCB7IHNpemU6IHR5cG8uc2l6ZSwgc3Ryb25nOiB0eXBvLnN0cm9uZywgY2hpbGRyZW46IGNoaWxkcmVuIH0pO1xuICAgICAgICAgICAgfSkoKSwgbm9ybWFsaXplZEljb25FbmQgJiYgX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoQlVUVE9OX1NMT1QuaWNvbkVuZCksIGNoaWxkcmVuOiBub3JtYWxpemVkSWNvbkVuZCB9KV0gfSkpKTtcbn0pO1xuQnV0dG9uQmFzZS5kaXNwbGF5TmFtZSA9IEJVVFRPTl9DT01QT05FTlRfTkFNRTtcbmV4cG9ydCBjb25zdCBCdXR0b24gPSBtZW1vKEJ1dHRvbkJhc2UpO1xuQnV0dG9uLmRpc3BsYXlOYW1lID0gQlVUVE9OX0NPTVBPTkVOVF9OQU1FO1xuZXhwb3J0IGRlZmF1bHQgQnV0dG9uOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
153
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvQnV0dG9uL0J1dHRvbi5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvQnV0dG9uL0J1dHRvbi50c3giXSwibmFtZXMiOlsiX19yZXN0IiwicyIsImUiLCJ0IiwicCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJpIiwibGVuZ3RoIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiY2xvbmVFbGVtZW50IiwiZm9yd2FyZFJlZiIsImlzVmFsaWRFbGVtZW50IiwibWVtbyIsIlNwaW5uZXIiLCJUeXBvZ3JhcGh5Qm9keSIsIlR5cG9ncmFwaHlIZWFkbGluZSIsImRlZmF1bHQiLCJjbGFzc25hbWVzIiwiam9pbkNscyIsIkJVVFRPTl9DT01QT05FTlRfTkFNRSIsIkJVVFRPTl9ERUZBVUxUX0NPTE9SIiwiQlVUVE9OX0RFRkFVTFRfSFRNTF9UWVBFIiwiQlVUVE9OX0RFRkFVTFRfUFJFRklYIiwiQlVUVE9OX0RFRkFVTFRfU0laRSIsIkJVVFRPTl9ERUZBVUxUX1ZBUklBTlQiLCJCVVRUT05fSUNPTl9JTkhFUklUX0NPTE9SIiwiQlVUVE9OX0lDT05fU0laRV9CWV9TSVpFIiwiQlVUVE9OX0xPQURJTkdfSUNPTl9TSVpFX0JZX1NJWkUiLCJCVVRUT05fTU9ESUZJRVIiLCJCVVRUT05fU0xPVCIsIkJVVFRPTl9UWVBPR1JBUEhZX01BUCIsIkJVVFRPTl9WQVJJQU5UIiwiZ2V0VG9uZUNsYXNzTmFtZSIsImNsYXNzZXMiLCJ2YXJpYW50IiwiY29sb3IiLCJ0ZXh0IiwiY29uY2F0IiwiZ2V0TG9hZGluZ0ljb25DbGFzc05hbWUiLCJzaXplIiwibG9hZGluZ0ljb24iLCJnZXRCdXR0b25DbGFzc05hbWUiLCJfcmVmIiwicm91bmRlZCIsImJsb2NrIiwiZGlzYWJsZWQiLCJsb2FkaW5nIiwiY2xhc3NOYW1lIiwidW5kZWZpbmVkIiwibm9ybWFsaXplQWRvcm5tZW50IiwiYWRvcm5tZW50IiwiYWRvcm5tZW50UHJvcHMiLCJwcm9wcyIsIm5leHRQcm9wcyIsIndpZHRoIiwiaGVpZ2h0Iiwia2V5cyIsIkJ1dHRvbkJhc2UiLCJyZWYiLCJjaGlsZHJlbiIsIl9wcm9wcyRjbGFzc05hbWUiLCJfcHJvcHMkcHJlZml4Q2xzIiwicHJlZml4Q2xzIiwiX3Byb3BzJHZhcmlhbnQiLCJfcHJvcHMkY29sb3IiLCJfcHJvcHMkc2l6ZSIsIl9wcm9wcyRsb2FkaW5nIiwiX3Byb3BzJHJvdW5kZWQiLCJfcHJvcHMkYmxvY2siLCJpY29uU3RhcnQiLCJpY29uRW5kIiwiX3Byb3BzJGRpc2FibGVkIiwiX3Byb3BzJHR5cGUiLCJ0eXBlIiwicmVzdCIsImlzRGlzYWJsZWQiLCJub3JtYWxpemVkSWNvblN0YXJ0Iiwibm9ybWFsaXplZEljb25FbmQiLCJzdGFydEFkb3JubWVudCIsImFzc2lnbiIsInR5cG8iLCJzdHJvbmciLCJkaXNwbGF5TmFtZSIsIkJ1dHRvbiJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsTUFBTSxHQUFJLElBQUksSUFBSSxJQUFJLENBQUNBLE1BQU0sSUFBSyxVQUFVQyxDQUFDLEVBQUVDLENBQUMsRUFBRTtFQUNsRCxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0VBQ1YsS0FBSyxJQUFJQyxDQUFDLElBQUlILENBQUMsRUFBRSxJQUFJSSxNQUFNLENBQUNDLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUNQLENBQUMsRUFBRUcsQ0FBQyxDQUFDLElBQUlGLENBQUMsQ0FBQ08sT0FBTyxDQUFDTCxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQy9FRCxDQUFDLENBQUNDLENBQUMsQ0FBQyxHQUFHSCxDQUFDLENBQUNHLENBQUMsQ0FBQztFQUNmLElBQUlILENBQUMsSUFBSSxJQUFJLElBQUksT0FBT0ksTUFBTSxDQUFDSyxxQkFBcUIsS0FBSyxVQUFVLEVBQy9ELEtBQUssSUFBSUMsQ0FBQyxH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LENBQUM7TUFBQVgsUUFBQSxFQUFHa0I7SUFBaUIsQ0FBQSxDQUFRO0VBQUEsQ0FBQSxDQUFBLENBQ3hGO0FBRWIsQ0FBQyxDQUFDO0FBRUZwQixVQUFVLENBQUN5QixXQUFXLEdBQUcvRCxxQkFBcUI7QUFFOUMsT0FBTyxJQUFNZ0UsTUFBTSxnQkFBR3ZFLElBQUksQ0FBQzZDLFVBQVUsQ0FBQztBQUV0QzBCLE1BQU0sQ0FBQ0QsV0FBVyxHQUFHL0QscUJBQXFCO0FBRTFDLGVBQWVnRSxNQUFNIiwiZmlsZSI6ImNvbXBvbmVudHMvQnV0dG9uL0J1dHRvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBjbG9uZUVsZW1lbnQsIGZvcndhcmRSZWYsIGlzVmFsaWRFbGVtZW50LCBtZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFNwaW5uZXIgZnJvbSAnLi4vU3Bpbm5lcic7XG5pbXBvcnQgeyBUeXBvZ3JhcGh5Qm9keSwgVHlwb2dyYXBoeUhlYWRsaW5lIH0gZnJvbSAnLi4vVHlwb2dyYXBoeSc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMsIGpvaW5DbHMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCAnLi9zdHlsZSc7XG5pbXBvcnQgeyBCVVRUT05fQ09NUE9ORU5UX05BTUUsIEJVVFRPTl9ERUZBVUxUX0NPTE9SLCBCVVRUT05fREVGQVVMVF9IVE1MX1RZUEUsIEJVVFRPTl9ERUZBVUxUX1BSRUZJWCwgQlVUVE9OX0RFRkFVTFRfU0laRSwgQlVUVE9OX0RFRkFVTFRfVkFSSUFOVCwgQlVUVE9OX0lDT05fSU5IRVJJVF9DT0xPUiwgQlVUVE9OX0lDT05fU0laRV9CWV9TSVpFLCBCVVRUT05fTE9BRElOR19JQ09OX1NJWkVfQllfU0laRSwgQlVUVE9OX01PRElGSUVSLCBCVVRUT05fU0xPVCwgQlVUVE9OX1RZUE9HUkFQSFlfTUFQLCBCVVRUT05fVkFSSUFOVCwgfSBmcm9tICcuL2NvbnN0YW50cyc7XG4vKipcbiAqIFJlc29sdmUgdGhlIGNvbG9yL3RvbmUgY2xhc3MgbmFtZSBiYXNlZCBvbiB2YXJpYW50LlxuICogLSBDb250YWluZWQgYnV0dG9uczogYXBwbHkgdGhlIGNvbG9yIGNsYXNzIGRpcmVjdGx5IChlLmcuIGAtLXByaW1hcnlgKS5cbiAqIC0gVGV4dCBidXR0b25zOiBhbHdheXMgYXBwbHkgdGhlIGAtLXRleHRgIG1vZGlmaWVyLCBhbmQgYXBwZW5kIGFcbiAqICAgY29sb3Itc3BlY2lmaWMgbW9kaWZpZXIgb25seSB3aGVuIHRoZSBjb2xvciBkaWZmZXJzIGZyb20gdGhlIGRlZmF1bHQuXG4gKi9cbmNvbnN0IGdldFRvbmVDbGFzc05hbWUgPSAoY2xhc3NlcywgdmFyaWFudCwgY29sb3IpID0+IHtcbiAgICBpZiAodmFyaWFudCAhPT0gQlVUVE9OX1ZBUklBTlQudGV4dCkge1xuICAgICAgICByZXR1cm4gY2xhc3Nlcyhjb2xvcik7XG4gICAgfVxuICAgIHJldHVybiBqb2luQ2xzKGNsYXNzZXMoQlVUVE9OX01PRElGSUVSLnRleHQpLCBjb2xvciAhPT0gQlVUVE9OX0RFRkFVTFRfQ09MT1IgJiYgY2xhc3NlcyhgJHtCVVRUT05fTU9ESUZJRVIudGV4dH0tJHtjb2xvcn1gKSk7XG59O1xuLyoqIEJ1aWxkIGNsYXNzIG5hbWVzIGZvciB0aGUgbG9hZGluZyBzcGlubmVyLCBjb21iaW5pbmcgYmFzZSArIHNpemUtc3BlY2lmaWMgY2xhc3Nlcy4gKi9cbmNvbnN0IGdldExvYWRpbmdJY29uQ2xhc3NOYW1lID0gKGNsYXNzZXMsIHNpemUpID0+IGpvaW5DbHMoY2xhc3NlcyhCVVRUT05fU0xPVC5sb2FkaW5nSWNvbiksIGNsYXNzZXMoYCR7QlVUVE9OX1NMT1QubG9hZGluZ0ljb259LSR7c2l6ZX1gKSk7XG4vKiogQ29tcG9zZSB0aGUgZnVsbCBidXR0b24gY2xhc3MgbmFtZSBmcm9tIHZhcmlhbnQsIGNvbG9yLCBzaXplLCBhbmQgc3RhdGUgbW9kaWZpZXJzLiAqL1xuY29uc3QgZ2V0QnV0dG9uQ2xhc3NOYW1lID0gKHsgY2xhc3NlcywgdmFyaWFudCwgY29sb3IsIHNpemUsIHJvdW5kZWQsIGJsb2NrLCBkaXNhYmxlZCwgbG9hZGluZywgY2xhc3NOYW1lLCB9KSA9PiBjbGFzc2VzKHVuZGVmaW5lZCwgam9pbkNscyhnZXRUb25lQ2xhc3NOYW1lKGNsYXNzZXMsIHZhcmlhbnQsIGNvbG9yKSwgY2xhc3NlcyhzaXplKSwgcm91bmRlZCAmJiBjbGFzc2VzKEJVVFRPTl9NT0RJRklFUi5yb3VuZGVkKSwgYmxvY2sgJiYgY2xhc3NlcyhCVVRUT05fTU9ESUZJRVIuYmxvY2spLCBkaXNhYmxlZCAmJiBjbGFzc2VzKEJVVFRPTl9NT0RJRklFUi5kaXNhYmxlZCksIGxvYWRpbmcgJiYgY2xhc3NlcyhCVVRUT05fTU9ESUZJRVIubG9hZGluZyksIGNsYXNzTmFtZSkpO1xuLyoqXG4gKiBBdXRvLWZpbGwgZGVmYXVsdCBgY29sb3JgIGFuZCBgc2l6ZWAgb24gaWNvbiBhZG9ybm1lbnRzIChpY29uU3RhcnQgLyBpY29uRW5kKS5cbiAqXG4gKiAtIElmIHRoZSBpY29uIGhhcyBubyBgY29sb3JgLCBpbmhlcml0IGZyb20gdGhlIGJ1dHRvbiB2aWEgYGN1cnJlbnRDb2xvcmAuXG4gKiAtIElmIHRoZSBpY29uIGhhcyBubyBleHBsaWNpdCBkaW1lbnNpb25zIChgc2l6ZWAgLyBgd2lkdGhgIC8gYGhlaWdodGApLFxuICogICBhcHBseSB0aGUgc2l6ZSB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBjdXJyZW50IGJ1dHRvbiBzaXplLlxuICogLSBOb24tZWxlbWVudCBub2RlcyAoc3RyaW5ncywgbnVtYmVycywgbnVsbCkgYXJlIHJldHVybmVkIGFzLWlzLlxuICovXG5jb25zdCBub3JtYWxpemVBZG9ybm1lbnQgPSAoYWRvcm5tZW50LCBzaXplKSA9PiB7XG4gICAgaWYgKCFpc1ZhbGlkRWxlbWVudChhZG9ybm1lbnQpKSB7XG4gICAgICAgIHJldHVybiBhZG9ybm1lbnQ7XG4gICAgfVxuICAgIGNvbnN0IGFkb3JubWVudFByb3BzID0gYWRvcm5tZW50LnByb3BzO1xuICAgIGNvbnN0IG5leHRQcm9wcyA9IHt9O1xuICAgIGlmIChhZG9ybm1lbnRQcm9wcy5jb2xvciA9PSBudWxsKSB7XG4gICAgICAgIG5leHRQcm9wcy5jb2xvciA9IEJVVFRPTl9JQ09OX0lOSEVSSVRfQ09MT1I7XG4gICAgfVxuICAgIGlmIChhZG9ybm1lbnRQcm9wcy5zaXplID09IG51bGwgJiZcbiAgICAgICAgYWRvcm5tZW50UHJvcHMud2lkdGggPT0gbnVsbCAmJlxuICAgICAgICBhZG9ybm1lbnRQcm9wcy5oZWlnaHQgPT0gbnVsbCkge1xuICAgICAgICBuZXh0UHJvcHMuc2l6ZSA9IEJVVFRPTl9JQ09OX1NJWkVfQllfU0laRVtzaXplXTtcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG5leHRQcm9wcykubGVuZ3RoID4gMFxuICAgICAgICA/IGNsb25lRWxlbWVudChhZG9ybm1lbnQsIG5leHRQcm9wcylcbiAgICAgICAgOiBhZG9ybm1lbnQ7XG59O1xuLyoqXG4gKiBDb3JlIGJ1dHRvbiBjb21wb25lbnQuXG4gKlxuICogU3VwcG9ydHMgdHdvIHZhcmlhbnRzIChgY29udGFpbmVkYCB8IGB0ZXh0YCksIGVpZ2h0IGNvbG9yIHRvbmVzLCB0aHJlZSBzaXplcyxcbiAqIG9wdGlvbmFsIHN0YXJ0L2VuZCBpY29uIGFkb3JubWVudHMsIGEgbG9hZGluZyBzdGF0ZSAocmVwbGFjZXMgc3RhcnQgaWNvbiB3aXRoXG4gKiBhIHNwaW5uZXIpLCBhbmQgcm91bmRlZCBtb2RlLlxuICpcbiAqIFR5cG9ncmFwaHkgaXMgYXV0b21hdGljYWxseSBzZWxlY3RlZCBwZXIgdmFyaWFudCArIHNpemUgdmlhIGBCVVRUT05fVFlQT0dSQVBIWV9NQVBgLlxuICovXG5jb25zdCBCdXR0b25CYXNlID0gZm9yd2FyZFJlZigocHJvcHMsIHJlZikgPT4ge1xuICAgIGNvbnN0IHsgY2hpbGRyZW4sIGNsYXNzTmFtZSA9ICcnLCBwcmVmaXhDbHMgPSBCVVRUT05fREVGQVVMVF9QUkVGSVgsIHZhcmlhbnQgPSBCVVRUT05fREVGQVVMVF9WQVJJQU5ULCBjb2xvciA9IEJVVFRPTl9ERUZBVUxUX0NPTE9SLCBzaXplID0gQlVUVE9OX0RFRkFVTFRfU0laRSwgbG9hZGluZyA9IGZhbHNlLCByb3VuZGVkID0gZmFsc2UsIGJsb2NrID0gZmFsc2UsIGljb25TdGFydCwgaWNvbkVuZCwgZGlzYWJsZWQgPSBmYWxzZSwgdHlwZSA9IEJVVFRPTl9ERUZBVUxUX0hUTUxfVFlQRSB9ID0gcHJvcHMsIHJlc3QgPSBfX3Jlc3QocHJvcHMsIFtcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwicHJlZml4Q2xzXCIsIFwidmFyaWFudFwiLCBcImNvbG9yXCIsIFwic2l6ZVwiLCBcImxvYWRpbmdcIiwgXCJyb3VuZGVkXCIsIFwiYmxvY2tcIiwgXCJpY29uU3RhcnRcIiwgXCJpY29uRW5kXCIsIFwiZGlzYWJsZWRcIiwgXCJ0eXBlXCJdKTtcbiAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhwcmVmaXhDbHMpO1xuICAgIC8vIExvYWRpbmcgaW1wbGljaXRseSBkaXNhYmxlcyB0aGUgYnV0dG9uIHRvIHByZXZlbnQgZHVwbGljYXRlIHN1Ym1pc3Npb25zXG4gICAgY29uc3QgaXNEaXNhYmxlZCA9IGRpc2FibGVkIHx8IGxvYWRpbmc7XG4gICAgLy8gQXV0by1maWxsIGNvbG9yICYgc2l6ZSBvbiBpY29uIGFkb3JubWVudHMgc28gY29uc3VtZXJzIGRvbid0IGhhdmUgdG9cbiAgICBjb25zdCBub3JtYWxpemVkSWNvblN0YXJ0ID0gbm9ybWFsaXplQWRvcm5tZW50KGljb25TdGFydCwgc2l6ZSk7XG4gICAgY29uc3Qgbm9ybWFsaXplZEljb25FbmQgPSBub3JtYWxpemVBZG9ybm1lbnQoaWNvbkVuZCwgc2l6ZSk7XG4gICAgLy8gV2hlbiBsb2FkaW5nLCByZXBsYWNlIHRoZSBzdGFydCBpY29uIHdpdGggYSBzcGlubmVyXG4gICAgY29uc3Qgc3RhcnRBZG9ybm1lbnQgPSBsb2FkaW5nID8gKF9qc3goU3Bpbm5lciwgeyBjbGFzc05hbWU6IGdldExvYWRpbmdJY29uQ2xhc3NOYW1lKGNsYXNzZXMsIHNpemUpLCBzaXplOiBCVVRUT05fTE9BRElOR19JQ09OX1NJWkVfQllfU0laRVtzaXplXSB9KSkgOiBub3JtYWxpemVkSWNvblN0YXJ0O1xuICAgIHJldHVybiAoX2pzeHMoXCJidXR0b25cIiwgT2JqZWN0LmFzc2lnbih7fSwgcmVzdCwgeyByZWY6IHJlZiwgdHlwZTogdHlwZSwgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsIGNsYXNzTmFtZTogZ2V0QnV0dG9uQ2xhc3NOYW1lKHtcbiAgICAgICAgICAgIGNsYXNzZXMsXG4gICAgICAgICAgICB2YXJpYW50LFxuICAgICAgICAgICAgY29sb3IsXG4gICAgICAgICAgICBzaXplLFxuICAgICAgICAgICAgcm91bmRlZCxcbiAgICAgICAgICAgIGJsb2NrLFxuICAgICAgICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgICAgICBsb2FkaW5nLFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICB9KSwgY2hpbGRyZW46IFtzdGFydEFkb3JubWVudCAmJiBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcyhCVVRUT05fU0xPVC5pY29uU3RhcnQpLCBjaGlsZHJlbjogc3RhcnRBZG9ybm1lbnQgfSksIGNoaWxkcmVuICE9IG51bGwgJiYgKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0eXBvID0gQlVUVE9OX1RZUE9HUkFQSFlfTUFQW3ZhcmlhbnRdW3NpemVdO1xuICAgICAgICAgICAgICAgIGlmICh0eXBvLnZhcmlhbnQgPT09ICdoZWFkbGluZScpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9qc3goVHlwb2dyYXBoeUhlYWRsaW5lLCB7IHNpemU6IHR5cG8uc2l6ZSwgY2hpbGRyZW46IGNoaWxkcmVuIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gX2pzeChUeXBvZ3JhcGh5Qm9keSwgeyBzaXplOiB0eXBvLnNpemUsIHN0cm9uZzogdHlwby5zdHJvbmcsIGNoaWxkcmVuOiBjaGlsZHJlbiB9KTtcbiAgICAgICAgICAgIH0pKCksIG5vcm1hbGl6ZWRJY29uRW5kICYmIF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKEJVVFRPTl9TTE9ULmljb25FbmQpLCBjaGlsZHJlbjogbm9ybWFsaXplZEljb25FbmQgfSldIH0pKSk7XG59KTtcbkJ1dHRvbkJhc2UuZGlzcGxheU5hbWUgPSBCVVRUT05fQ09NUE9ORU5UX05BTUU7XG5leHBvcnQgY29uc3QgQnV0dG9uID0gbWVtbyhCdXR0b25CYXNlKTtcbkJ1dHRvbi5kaXNwbGF5TmFtZSA9IEJVVFRPTl9DT01QT05FTlRfTkFNRTtcbmV4cG9ydCBkZWZhdWx0IEJ1dHRvbjsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|