@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.
Files changed (129) hide show
  1. package/es/business/Dialog/ResultDialog/ResultDialog.d.ts +3 -0
  2. package/es/business/Dialog/ResultDialog/ResultDialog.js +126 -0
  3. package/es/business/Dialog/ResultDialog/constants.d.ts +27 -0
  4. package/es/business/Dialog/ResultDialog/constants.js +24 -0
  5. package/es/business/Dialog/ResultDialog/index.d.ts +3 -0
  6. package/es/business/Dialog/ResultDialog/index.js +4 -0
  7. package/es/business/Dialog/ResultDialog/interface.d.ts +95 -0
  8. package/es/business/Dialog/ResultDialog/interface.js +2 -0
  9. package/es/business/Dialog/ResultDialog/presets.d.ts +178 -0
  10. package/es/business/Dialog/ResultDialog/presets.js +139 -0
  11. package/es/business/Dialog/ResultDialog/style/ResultDialog.css +29 -0
  12. package/es/business/Dialog/ResultDialog/style/css.js +2 -0
  13. package/es/business/Dialog/ResultDialog/style/index.d.ts +1 -0
  14. package/es/business/Dialog/ResultDialog/style/index.js +2 -0
  15. package/es/business/Dialog/TransactionDialog/TransactionDialog.d.ts +3 -0
  16. package/es/business/Dialog/TransactionDialog/TransactionDialog.js +174 -0
  17. package/es/business/Dialog/TransactionDialog/constants.d.ts +34 -0
  18. package/es/business/Dialog/TransactionDialog/constants.js +33 -0
  19. package/es/business/Dialog/TransactionDialog/index.d.ts +3 -0
  20. package/es/business/Dialog/TransactionDialog/index.js +4 -0
  21. package/es/business/Dialog/TransactionDialog/interface.d.ts +116 -0
  22. package/es/business/Dialog/TransactionDialog/interface.js +2 -0
  23. package/es/business/Dialog/TransactionDialog/presets.d.ts +89 -0
  24. package/es/business/Dialog/TransactionDialog/presets.js +62 -0
  25. package/es/business/Dialog/TransactionDialog/style/TransactionDialog.css +36 -0
  26. package/es/business/Dialog/TransactionDialog/style/css.js +2 -0
  27. package/es/business/Dialog/TransactionDialog/style/index.d.ts +1 -0
  28. package/es/business/Dialog/TransactionDialog/style/index.js +2 -0
  29. package/es/business/Dialog/VerificationDialog/ResendRow.d.ts +14 -0
  30. package/es/business/Dialog/VerificationDialog/ResendRow.js +65 -0
  31. package/es/business/Dialog/VerificationDialog/VerificationDialog.d.ts +3 -0
  32. package/es/business/Dialog/VerificationDialog/VerificationDialog.js +116 -0
  33. package/es/business/Dialog/VerificationDialog/constants.d.ts +35 -0
  34. package/es/business/Dialog/VerificationDialog/constants.js +31 -0
  35. package/es/business/Dialog/VerificationDialog/hooks/index.d.ts +4 -0
  36. package/es/business/Dialog/VerificationDialog/hooks/index.js +3 -0
  37. package/es/business/Dialog/VerificationDialog/hooks/useOtpVerification.d.ts +50 -0
  38. package/es/business/Dialog/VerificationDialog/hooks/useOtpVerification.js +137 -0
  39. package/es/business/Dialog/VerificationDialog/hooks/useResendCountdown.d.ts +26 -0
  40. package/es/business/Dialog/VerificationDialog/hooks/useResendCountdown.js +103 -0
  41. package/es/business/Dialog/VerificationDialog/index.d.ts +3 -0
  42. package/es/business/Dialog/VerificationDialog/index.js +4 -0
  43. package/es/business/Dialog/VerificationDialog/interface.d.ts +124 -0
  44. package/es/business/Dialog/VerificationDialog/interface.js +2 -0
  45. package/es/business/Dialog/VerificationDialog/style/VerificationDialog.css +30 -0
  46. package/es/business/Dialog/VerificationDialog/style/css.js +2 -0
  47. package/es/business/Dialog/VerificationDialog/style/index.d.ts +1 -0
  48. package/es/business/Dialog/VerificationDialog/style/index.js +2 -0
  49. package/es/business/Dialog/index.d.ts +3 -0
  50. package/es/business/Dialog/index.js +4 -0
  51. package/es/business/index.d.ts +1 -0
  52. package/es/business/index.js +2 -1
  53. package/es/components/Button/Button.js +7 -3
  54. package/es/components/Button/constants.d.ts +1 -0
  55. package/es/components/Button/constants.js +2 -1
  56. package/es/components/Button/interface.d.ts +2 -0
  57. package/es/components/Button/style/Button.css +4 -0
  58. package/es/components/Dialog/Dialog.js +16 -7
  59. package/es/components/Dialog/constants.d.ts +1 -0
  60. package/es/components/Dialog/constants.js +3 -2
  61. package/es/components/Dialog/interface.d.ts +1 -0
  62. package/es/components/Dialog/style/Dialog.css +29 -0
  63. package/es/index.css +1 -1
  64. package/lib/business/Dialog/ResultDialog/ResultDialog.d.ts +3 -0
  65. package/lib/business/Dialog/ResultDialog/ResultDialog.js +132 -0
  66. package/lib/business/Dialog/ResultDialog/constants.d.ts +27 -0
  67. package/lib/business/Dialog/ResultDialog/constants.js +30 -0
  68. package/lib/business/Dialog/ResultDialog/index.d.ts +3 -0
  69. package/lib/business/Dialog/ResultDialog/index.js +40 -0
  70. package/lib/business/Dialog/ResultDialog/interface.d.ts +95 -0
  71. package/lib/business/Dialog/ResultDialog/interface.js +6 -0
  72. package/lib/business/Dialog/ResultDialog/presets.d.ts +178 -0
  73. package/lib/business/Dialog/ResultDialog/presets.js +145 -0
  74. package/lib/business/Dialog/ResultDialog/style/ResultDialog.css +29 -0
  75. package/lib/business/Dialog/ResultDialog/style/css.js +4 -0
  76. package/lib/business/Dialog/ResultDialog/style/index.d.ts +1 -0
  77. package/lib/business/Dialog/ResultDialog/style/index.js +4 -0
  78. package/lib/business/Dialog/TransactionDialog/TransactionDialog.d.ts +3 -0
  79. package/lib/business/Dialog/TransactionDialog/TransactionDialog.js +180 -0
  80. package/lib/business/Dialog/TransactionDialog/constants.d.ts +34 -0
  81. package/lib/business/Dialog/TransactionDialog/constants.js +39 -0
  82. package/lib/business/Dialog/TransactionDialog/index.d.ts +3 -0
  83. package/lib/business/Dialog/TransactionDialog/index.js +40 -0
  84. package/lib/business/Dialog/TransactionDialog/interface.d.ts +116 -0
  85. package/lib/business/Dialog/TransactionDialog/interface.js +6 -0
  86. package/lib/business/Dialog/TransactionDialog/presets.d.ts +89 -0
  87. package/lib/business/Dialog/TransactionDialog/presets.js +68 -0
  88. package/lib/business/Dialog/TransactionDialog/style/TransactionDialog.css +36 -0
  89. package/lib/business/Dialog/TransactionDialog/style/css.js +4 -0
  90. package/lib/business/Dialog/TransactionDialog/style/index.d.ts +1 -0
  91. package/lib/business/Dialog/TransactionDialog/style/index.js +4 -0
  92. package/lib/business/Dialog/VerificationDialog/ResendRow.d.ts +14 -0
  93. package/lib/business/Dialog/VerificationDialog/ResendRow.js +71 -0
  94. package/lib/business/Dialog/VerificationDialog/VerificationDialog.d.ts +3 -0
  95. package/lib/business/Dialog/VerificationDialog/VerificationDialog.js +122 -0
  96. package/lib/business/Dialog/VerificationDialog/constants.d.ts +35 -0
  97. package/lib/business/Dialog/VerificationDialog/constants.js +37 -0
  98. package/lib/business/Dialog/VerificationDialog/hooks/index.d.ts +4 -0
  99. package/lib/business/Dialog/VerificationDialog/hooks/index.js +20 -0
  100. package/lib/business/Dialog/VerificationDialog/hooks/useOtpVerification.d.ts +50 -0
  101. package/lib/business/Dialog/VerificationDialog/hooks/useOtpVerification.js +144 -0
  102. package/lib/business/Dialog/VerificationDialog/hooks/useResendCountdown.d.ts +26 -0
  103. package/lib/business/Dialog/VerificationDialog/hooks/useResendCountdown.js +110 -0
  104. package/lib/business/Dialog/VerificationDialog/index.d.ts +3 -0
  105. package/lib/business/Dialog/VerificationDialog/index.js +43 -0
  106. package/lib/business/Dialog/VerificationDialog/interface.d.ts +124 -0
  107. package/lib/business/Dialog/VerificationDialog/interface.js +6 -0
  108. package/lib/business/Dialog/VerificationDialog/style/VerificationDialog.css +30 -0
  109. package/lib/business/Dialog/VerificationDialog/style/css.js +4 -0
  110. package/lib/business/Dialog/VerificationDialog/style/index.d.ts +1 -0
  111. package/lib/business/Dialog/VerificationDialog/style/index.js +4 -0
  112. package/lib/business/Dialog/index.d.ts +3 -0
  113. package/lib/business/Dialog/index.js +39 -0
  114. package/lib/business/index.d.ts +1 -0
  115. package/lib/business/index.js +12 -1
  116. package/lib/components/Button/Button.js +7 -3
  117. package/lib/components/Button/constants.d.ts +1 -0
  118. package/lib/components/Button/constants.js +2 -1
  119. package/lib/components/Button/interface.d.ts +2 -0
  120. package/lib/components/Button/style/Button.css +4 -0
  121. package/lib/components/Dialog/Dialog.js +16 -7
  122. package/lib/components/Dialog/constants.d.ts +1 -0
  123. package/lib/components/Dialog/constants.js +3 -2
  124. package/lib/components/Dialog/interface.d.ts +1 -0
  125. package/lib/components/Dialog/style/Dialog.css +29 -0
  126. package/lib/index.css +1 -1
  127. package/package.json +21 -1
  128. package/scripts/mcp-server/examples.generated.json +18 -6
  129. 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0RpYWxvZy9WZXJpZmljYXRpb25EaWFsb2cvaG9va3MvdXNlUmVzZW5kQ291bnRkb3duLmpzIiwiYnVzaW5lc3MvRGlhbG9nL1ZlcmlmaWNhdGlvbkRpYWxvZy9zcmMvYnVzaW5lc3MvRGlhbG9nL1ZlcmlmaWNhdGlvbkRpYWxvZy9ob29rcy91c2VSZXNlbmRDb3VudGRvd24udHMiXSwibmFtZXMiOlsiX19hd2FpdGVyIiwidGhpc0FyZyIsIl9hcmd1bWVudHMiLCJQIiwiZ2VuZXJhdG9yIiwiYWRvcHQiLCJ2YWx1ZSIsInJlc29sdmUiLCJQcm9taXNlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwic3RlcCIsIm5leHQiLCJlIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJkb25lIiwidGhlbiIsImFwcGx5IiwidXNlRWZmZWN0IiwidXNlU3RhdGUiLCJ1c2VFdmVudENhbGxiYWNrIiwiREVGQVVMVF9DT09MRE9XTl9TRUNPTkRTIiwiU0VDT05EU19QRVJfTUlOVVRFIiwiVElDS19NUyIsInVzZVJlc2VuZENvdW50ZG93biIsIm9wdGlvbnMiLCJvblJlc2VuZCIsIl9vcHRpb25zJGNvb2xkb3duIiwiY29vbGRvd24iLCJfb3B0aW9ucyRhdXRvU3RhcnQiLCJhdXRvU3RhcnQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJyZW1haW5pbmciLCJzZXRSZW1haW5pbmciLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwidW5kZWZpbmVkIiwidGltZXIiLCJzZXRJbnRlcnZhbCIsInByZXYiLCJjbGVhckludGVydmFsIiwicmVzZW5kIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwid3JhcCIsIl9jb250ZXh0IiwiYWJydXB0IiwiZmluaXNoIiwic3RvcCIsIm1pbnV0ZXMiLCJNYXRoIiwiZmxvb3IiLCJzZWNvbmRzIiwiY2FuUmVzZW5kIiwiZm9ybWF0dGVk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QyxJQUFJLENBQUNDLEtBQUssQ0FBQ3RCLFNBQVMsR0FBR1osa0JBQWtCLENBQUM7RUFDMUQsSUFBTW1DLE9BQU8sR0FBR3ZCLFNBQVMsR0FBR1osa0JBQWtCO0VBRTlDLE9BQU87SUFDTFksU0FBUyxFQUFUQSxTQUFTO0lBQ1R3QixTQUFTLEVBQUV4QixTQUFTLElBQUksQ0FBQyxJQUFJLENBQUNJLE9BQU87SUFDckNBLE9BQU8sRUFBUEEsT0FBTztJQUNQcUIsU0FBUyxLQUFBQyxNQUFBLENBQUtOLE9BQU8sUUFBQU0sTUFBQSxDQUFLSCxPQUFPLE1BQUc7SUFDcENaLE1BQU0sRUFBTkE7RURqQkEsQ0NrQkQ7QUFDSCxDQUFDIiwiZmlsZSI6ImJ1c2luZXNzL0RpYWxvZy9WZXJpZmljYXRpb25EaWFsb2cvaG9va3MvdXNlUmVzZW5kQ291bnRkb3duLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlRXZlbnRDYWxsYmFjayB9IGZyb20gJ0AxbW9uZXkvaG9va3MnO1xuY29uc3QgREVGQVVMVF9DT09MRE9XTl9TRUNPTkRTID0gNjA7XG5jb25zdCBTRUNPTkRTX1BFUl9NSU5VVEUgPSA2MDtcbmNvbnN0IFRJQ0tfTVMgPSAxMDAwO1xuLyoqXG4gKiBIZWFkbGVzcyByZXNlbmQtd2l0aC1jb29sZG93biBsb2dpYyBwb3J0ZWQgZnJvbSB0aGUgcHJvZHVjdCdzIGBSZXNlbmRCdXR0b25gOlxuICogYSBwZXItc2Vjb25kIGNvdW50ZG93biwgYSBsb2NrIGR1cmluZyB0aGUgY29vbGRvd24gYW5kIHdoaWxlIHRoZSByZXNlbmRcbiAqIHJlcXVlc3QgaXMgaW4gZmxpZ2h0LCBhbmQgYW4gYG0gc2AgZm9ybWF0dGVyLlxuICovXG5leHBvcnQgY29uc3QgdXNlUmVzZW5kQ291bnRkb3duID0gKG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCB7IG9uUmVzZW5kLCBjb29sZG93biA9IERFRkFVTFRfQ09PTERPV05fU0VDT05EUywgYXV0b1N0YXJ0ID0gZmFsc2UgfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgW3JlbWFpbmluZywgc2V0UmVtYWluaW5nXSA9IHVzZVN0YXRlKGF1dG9TdGFydCA/IGNvb2xkb3duIDogMCk7XG4gICAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChyZW1haW5pbmcgPD0gMClcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHRpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgc2V0UmVtYWluaW5nKChwcmV2KSA9PiAocHJldiA8PSAxID8gMCA6IHByZXYgLSAxKSk7XG4gICAgICAgIH0sIFRJQ0tfTVMpO1xuICAgICAgICByZXR1cm4gKCkgPT4gY2xlYXJJbnRlcnZhbCh0aW1lcik7XG4gICAgfSwgW3JlbWFpbmluZ10pO1xuICAgIGNvbnN0IHJlc2VuZCA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGlmIChyZW1haW5pbmcgPiAwIHx8IGxvYWRpbmcpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHNldExvYWRpbmcodHJ1ZSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB5aWVsZCBvblJlc2VuZCgpO1xuICAgICAgICAgICAgc2V0UmVtYWluaW5nKGNvb2xkb3duKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHNldExvYWRpbmcoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfSkpO1xuICAgIGNvbnN0IG1pbnV0ZXMgPSBNYXRoLmZsb29yKHJlbWFpbmluZyAvIFNFQ09ORFNfUEVSX01JTlVURSk7XG4gICAgY29uc3Qgc2Vjb25kcyA9IHJlbWFpbmluZyAlIFNFQ09ORFNfUEVSX01JTlVURTtcbiAgICByZXR1cm4ge1xuICAgICAgICByZW1haW5pbmcsXG4gICAgICAgIGNhblJlc2VuZDogcmVtYWluaW5nIDw9IDAgJiYgIWxvYWRpbmcsXG4gICAgICAgIGxvYWRpbmcsXG4gICAgICAgIGZvcm1hdHRlZDogYCR7bWludXRlc31tICR7c2Vjb25kc31zYCxcbiAgICAgICAgcmVzZW5kLFxuICAgIH07XG59OyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -0,0 +1,3 @@
1
+ export { VerificationDialog } from './VerificationDialog';
2
+ export { useOtpVerification, useResendCountdown } from './hooks';
3
+ export * from './interface';
@@ -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,3 @@
1
+ export * from './ResultDialog';
2
+ export * from './TransactionDialog';
3
+ export * from './VerificationDialog';
@@ -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
@@ -1 +1,2 @@
1
+ export * from './Dialog';
1
2
  export * from './Select';
@@ -1,2 +1,3 @@
1
+ export * from './Dialog';
1
2
  export * from './Select';
2
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9idXNpbmVzcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFVBQVUiLCJmaWxlIjoiYnVzaW5lc3MvaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6W251bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
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=