@1money/react-ui 1.16.0 → 1.17.0
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/AGENTS.md +393 -0
- package/es/components/CheckboxGroup/CheckboxGroup.d.ts +3 -3
- package/es/components/CheckboxGroup/CheckboxGroup.js +94 -91
- package/es/components/CheckboxGroup/interface.d.ts +21 -15
- package/es/components/CheckboxGroup/style/CheckboxGroup.scss +0 -7
- package/es/components/Form/Form.d.ts +29 -0
- package/es/components/Form/Form.js +188 -0
- package/es/components/Form/FormItem.d.ts +4 -0
- package/es/components/Form/FormItem.js +165 -0
- package/es/components/Form/FormItemContent.d.ts +18 -0
- package/es/components/Form/FormItemContent.js +146 -0
- package/es/components/Form/constants.d.ts +46 -0
- package/es/components/Form/constants.js +65 -0
- package/es/components/Form/helper.d.ts +120 -0
- package/es/components/Form/helper.js +284 -0
- package/es/components/Form/index.d.ts +20 -0
- package/es/components/Form/index.js +21 -0
- package/es/components/Form/interface.d.ts +238 -0
- package/es/components/Form/interface.js +2 -0
- package/es/components/Form/style/Form.css +1 -0
- package/es/components/Form/style/Form.scss +167 -0
- package/es/components/Form/style/css.js +2 -0
- package/es/components/Form/style/index.d.ts +1 -0
- package/es/components/Form/style/index.js +2 -0
- package/es/components/Form/useFormItemContext.d.ts +32 -0
- package/es/components/Form/useFormItemContext.js +55 -0
- package/es/components/Form/useFormItemWatch.d.ts +51 -0
- package/es/components/Form/useFormItemWatch.js +69 -0
- package/es/components/Form/useValidationTrigger.d.ts +40 -0
- package/es/components/Form/useValidationTrigger.js +74 -0
- package/es/components/Input/Input.js +72 -74
- package/es/components/Input/interface.d.ts +9 -9
- package/es/components/InputAmount/InputAmount.js +228 -276
- package/es/components/InputAmount/helper.d.ts +46 -0
- package/es/components/InputAmount/helper.js +115 -0
- package/es/components/ProForm/ProForm.d.ts +33 -0
- package/es/components/ProForm/ProForm.js +208 -0
- package/es/components/ProForm/ProFormDependency.d.ts +12 -0
- package/es/components/ProForm/ProFormDependency.js +61 -0
- package/es/components/ProForm/ProFormList.d.ts +19 -0
- package/es/components/ProForm/ProFormList.js +348 -0
- package/es/components/ProForm/Submitter.d.ts +21 -0
- package/es/components/ProForm/Submitter.js +76 -0
- package/es/components/ProForm/constants.d.ts +34 -0
- package/es/components/ProForm/constants.js +40 -0
- package/es/components/ProForm/fields/ProFormCheckbox.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormCheckbox.js +11 -0
- package/es/components/ProForm/fields/ProFormCheckboxGroup.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormCheckboxGroup.js +46 -0
- package/es/components/ProForm/fields/ProFormDigit.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormDigit.js +15 -0
- package/es/components/ProForm/fields/ProFormMoney.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormMoney.js +10 -0
- package/es/components/ProForm/fields/ProFormMultiSelect.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormMultiSelect.js +27 -0
- package/es/components/ProForm/fields/ProFormPassword.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormPassword.js +16 -0
- package/es/components/ProForm/fields/ProFormRadio.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormRadio.js +13 -0
- package/es/components/ProForm/fields/ProFormSelect.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormSelect.js +13 -0
- package/es/components/ProForm/fields/ProFormSwitch.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormSwitch.js +11 -0
- package/es/components/ProForm/fields/ProFormText.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormText.js +15 -0
- package/es/components/ProForm/fields/ProFormTextArea.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormTextArea.js +16 -0
- package/es/components/ProForm/fields/createProFormField.d.ts +43 -0
- package/es/components/ProForm/fields/createProFormField.js +200 -0
- package/es/components/ProForm/fields/index.d.ts +12 -0
- package/es/components/ProForm/fields/index.js +13 -0
- package/es/components/ProForm/index.d.ts +7 -0
- package/es/components/ProForm/index.js +7 -0
- package/es/components/ProForm/interface.d.ts +306 -0
- package/es/components/ProForm/interface.js +2 -0
- package/es/components/ProForm/layouts/DrawerForm.d.ts +16 -0
- package/es/components/ProForm/layouts/DrawerForm.js +79 -0
- package/es/components/ProForm/layouts/ModalForm.d.ts +16 -0
- package/es/components/ProForm/layouts/ModalForm.js +89 -0
- package/es/components/ProForm/layouts/QueryFilter.d.ts +21 -0
- package/es/components/ProForm/layouts/QueryFilter.js +132 -0
- package/es/components/ProForm/layouts/StepsForm.d.ts +13 -0
- package/es/components/ProForm/layouts/StepsForm.js +295 -0
- package/es/components/ProForm/layouts/index.d.ts +4 -0
- package/es/components/ProForm/layouts/index.js +5 -0
- package/es/components/ProForm/layouts/useOverlayForm.d.ts +53 -0
- package/es/components/ProForm/layouts/useOverlayForm.js +143 -0
- package/es/components/ProForm/style/ProForm.module.css +1 -0
- package/es/components/ProForm/style/ProForm.module.scss +59 -0
- package/es/components/ProForm/style/css.js +3 -0
- package/es/components/ProForm/style/index.d.ts +1 -0
- package/es/components/ProForm/style/index.js +3 -0
- package/es/components/ProForm/utils.d.ts +72 -0
- package/es/components/ProForm/utils.js +206 -0
- package/es/components/RadioGroup/RadioGroup.js +46 -23
- package/es/components/RadioGroup/interface.d.ts +3 -1
- package/es/components/Select/Select.d.ts +1 -1
- package/es/components/Select/Select.js +113 -106
- package/es/components/Select/constants.d.ts +18 -0
- package/es/components/Select/constants.js +19 -0
- package/es/components/Sidebar/Sidebar.js +21 -23
- package/es/components/Sidebar/SidebarLogo.d.ts +7 -0
- package/es/components/Sidebar/SidebarLogo.js +33 -0
- package/es/components/Sidebar/SimplySidebar.d.ts +2 -2
- package/es/components/Sidebar/SimplySidebar.js +18 -22
- package/es/components/Sidebar/Stepper.js +14 -14
- package/es/components/Sidebar/constants.d.ts +16 -0
- package/es/components/Sidebar/constants.js +17 -0
- package/es/components/Sidebar/style/Stepper.css +1 -1
- package/es/components/Sidebar/style/Stepper.scss +11 -1
- package/es/components/Switch/Switch.js +28 -25
- package/es/components/Switch/interface.d.ts +9 -4
- package/es/components/useControlledState/index.d.ts +14 -0
- package/es/components/useControlledState/index.js +32 -0
- package/es/components/useEventCallback/index.d.ts +11 -0
- package/es/components/useEventCallback/index.js +17 -0
- package/es/components/useLayoutEffect/index.d.ts +11 -0
- package/es/components/useLayoutEffect/index.js +17 -0
- package/es/components/useLayoutState/index.d.ts +13 -0
- package/es/components/useLayoutState/index.js +71 -0
- package/es/components/useMemoizedFn/index.d.ts +12 -0
- package/es/components/useMemoizedFn/index.js +27 -0
- package/es/components/usePrevious/index.d.ts +11 -0
- package/es/components/usePrevious/index.js +19 -0
- package/es/components/useSafeState/index.d.ts +12 -0
- package/es/components/useSafeState/index.js +24 -0
- package/es/components/useSyncState/index.d.ts +14 -0
- package/es/components/useSyncState/index.js +37 -0
- package/es/components/useUpdateEffect/index.d.ts +9 -0
- package/es/components/useUpdateEffect/index.js +19 -0
- package/es/index.css +1 -1
- package/es/index.d.ts +21 -2
- package/es/index.js +19 -1
- package/jest.setup.d.ts +1 -0
- package/jest.setup.ts +1 -0
- package/lib/components/CheckboxGroup/CheckboxGroup.d.ts +3 -3
- package/lib/components/CheckboxGroup/CheckboxGroup.js +92 -89
- package/lib/components/CheckboxGroup/interface.d.ts +21 -15
- package/lib/components/CheckboxGroup/style/CheckboxGroup.scss +0 -7
- package/lib/components/Form/Form.d.ts +29 -0
- package/lib/components/Form/Form.js +199 -0
- package/lib/components/Form/FormItem.d.ts +4 -0
- package/lib/components/Form/FormItem.js +176 -0
- package/lib/components/Form/FormItemContent.d.ts +18 -0
- package/lib/components/Form/FormItemContent.js +156 -0
- package/lib/components/Form/constants.d.ts +46 -0
- package/lib/components/Form/constants.js +71 -0
- package/lib/components/Form/helper.d.ts +120 -0
- package/lib/components/Form/helper.js +290 -0
- package/lib/components/Form/index.d.ts +20 -0
- package/lib/components/Form/index.js +45 -0
- package/lib/components/Form/interface.d.ts +238 -0
- package/lib/components/Form/interface.js +6 -0
- package/lib/components/Form/style/Form.css +1 -0
- package/lib/components/Form/style/Form.scss +167 -0
- package/lib/components/Form/style/css.js +4 -0
- package/lib/components/Form/style/index.d.ts +1 -0
- package/lib/components/Form/style/index.js +4 -0
- package/lib/components/Form/useFormItemContext.d.ts +32 -0
- package/lib/components/Form/useFormItemContext.js +62 -0
- package/lib/components/Form/useFormItemWatch.d.ts +51 -0
- package/lib/components/Form/useFormItemWatch.js +76 -0
- package/lib/components/Form/useValidationTrigger.d.ts +40 -0
- package/lib/components/Form/useValidationTrigger.js +81 -0
- package/lib/components/Input/Input.js +71 -73
- package/lib/components/Input/interface.d.ts +9 -9
- package/lib/components/InputAmount/InputAmount.js +230 -278
- package/lib/components/InputAmount/helper.d.ts +46 -0
- package/lib/components/InputAmount/helper.js +122 -0
- package/lib/components/ProForm/ProForm.d.ts +33 -0
- package/lib/components/ProForm/ProForm.js +216 -0
- package/lib/components/ProForm/ProFormDependency.d.ts +12 -0
- package/lib/components/ProForm/ProFormDependency.js +67 -0
- package/lib/components/ProForm/ProFormList.d.ts +19 -0
- package/lib/components/ProForm/ProFormList.js +355 -0
- package/lib/components/ProForm/Submitter.d.ts +21 -0
- package/lib/components/ProForm/Submitter.js +83 -0
- package/lib/components/ProForm/constants.d.ts +34 -0
- package/lib/components/ProForm/constants.js +46 -0
- package/lib/components/ProForm/fields/ProFormCheckbox.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormCheckbox.js +18 -0
- package/lib/components/ProForm/fields/ProFormCheckboxGroup.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormCheckboxGroup.js +53 -0
- package/lib/components/ProForm/fields/ProFormDigit.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormDigit.js +22 -0
- package/lib/components/ProForm/fields/ProFormMoney.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormMoney.js +17 -0
- package/lib/components/ProForm/fields/ProFormMultiSelect.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormMultiSelect.js +34 -0
- package/lib/components/ProForm/fields/ProFormPassword.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormPassword.js +23 -0
- package/lib/components/ProForm/fields/ProFormRadio.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormRadio.js +20 -0
- package/lib/components/ProForm/fields/ProFormSelect.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormSelect.js +20 -0
- package/lib/components/ProForm/fields/ProFormSwitch.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormSwitch.js +18 -0
- package/lib/components/ProForm/fields/ProFormText.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormText.js +22 -0
- package/lib/components/ProForm/fields/ProFormTextArea.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormTextArea.js +23 -0
- package/lib/components/ProForm/fields/createProFormField.d.ts +43 -0
- package/lib/components/ProForm/fields/createProFormField.js +208 -0
- package/lib/components/ProForm/fields/index.d.ts +12 -0
- package/lib/components/ProForm/fields/index.js +90 -0
- package/lib/components/ProForm/index.d.ts +7 -0
- package/lib/components/ProForm/index.js +73 -0
- package/lib/components/ProForm/interface.d.ts +306 -0
- package/lib/components/ProForm/interface.js +6 -0
- package/lib/components/ProForm/layouts/DrawerForm.d.ts +16 -0
- package/lib/components/ProForm/layouts/DrawerForm.js +86 -0
- package/lib/components/ProForm/layouts/ModalForm.d.ts +16 -0
- package/lib/components/ProForm/layouts/ModalForm.js +96 -0
- package/lib/components/ProForm/layouts/QueryFilter.d.ts +21 -0
- package/lib/components/ProForm/layouts/QueryFilter.js +139 -0
- package/lib/components/ProForm/layouts/StepsForm.d.ts +13 -0
- package/lib/components/ProForm/layouts/StepsForm.js +302 -0
- package/lib/components/ProForm/layouts/index.d.ts +4 -0
- package/lib/components/ProForm/layouts/index.js +40 -0
- package/lib/components/ProForm/layouts/useOverlayForm.d.ts +53 -0
- package/lib/components/ProForm/layouts/useOverlayForm.js +150 -0
- package/lib/components/ProForm/style/ProForm.module.css +1 -0
- package/lib/components/ProForm/style/ProForm.module.scss +59 -0
- package/lib/components/ProForm/style/css.js +4 -0
- package/lib/components/ProForm/style/index.d.ts +1 -0
- package/lib/components/ProForm/style/index.js +4 -0
- package/lib/components/ProForm/utils.d.ts +72 -0
- package/lib/components/ProForm/utils.js +213 -0
- package/lib/components/RadioGroup/RadioGroup.js +45 -22
- package/lib/components/RadioGroup/interface.d.ts +3 -1
- package/lib/components/Select/Select.d.ts +1 -1
- package/lib/components/Select/Select.js +114 -107
- package/lib/components/Select/constants.d.ts +18 -0
- package/lib/components/Select/constants.js +25 -0
- package/lib/components/Sidebar/Sidebar.js +21 -23
- package/lib/components/Sidebar/SidebarLogo.d.ts +7 -0
- package/lib/components/Sidebar/SidebarLogo.js +39 -0
- package/lib/components/Sidebar/SimplySidebar.d.ts +2 -2
- package/lib/components/Sidebar/SimplySidebar.js +17 -21
- package/lib/components/Sidebar/Stepper.js +14 -14
- package/lib/components/Sidebar/constants.d.ts +16 -0
- package/lib/components/Sidebar/constants.js +23 -0
- package/lib/components/Sidebar/style/Stepper.css +1 -1
- package/lib/components/Sidebar/style/Stepper.scss +11 -1
- package/lib/components/Switch/Switch.js +27 -24
- package/lib/components/Switch/interface.d.ts +9 -4
- package/lib/components/useControlledState/index.d.ts +14 -0
- package/lib/components/useControlledState/index.js +39 -0
- package/lib/components/useEventCallback/index.d.ts +11 -0
- package/lib/components/useEventCallback/index.js +24 -0
- package/lib/components/useLayoutEffect/index.d.ts +11 -0
- package/lib/components/useLayoutEffect/index.js +23 -0
- package/lib/components/useLayoutState/index.d.ts +13 -0
- package/lib/components/useLayoutState/index.js +79 -0
- package/lib/components/useMemoizedFn/index.d.ts +12 -0
- package/lib/components/useMemoizedFn/index.js +33 -0
- package/lib/components/usePrevious/index.d.ts +11 -0
- package/lib/components/usePrevious/index.js +25 -0
- package/lib/components/useSafeState/index.d.ts +12 -0
- package/lib/components/useSafeState/index.js +31 -0
- package/lib/components/useSyncState/index.d.ts +14 -0
- package/lib/components/useSyncState/index.js +44 -0
- package/lib/components/useUpdateEffect/index.d.ts +9 -0
- package/lib/components/useUpdateEffect/index.js +25 -0
- package/lib/index.css +1 -1
- package/lib/index.d.ts +21 -2
- package/lib/index.js +213 -1
- package/package.json +16 -1
|
@@ -12,6 +12,8 @@ var _react = require("react");
|
|
|
12
12
|
var _inputswitch = require("primereact/inputswitch");
|
|
13
13
|
var _togglebutton = require("primereact/togglebutton");
|
|
14
14
|
var _classnames = _interopRequireWildcard(require("../../utils/classnames"));
|
|
15
|
+
var _useControlledState3 = _interopRequireDefault(require("../useControlledState"));
|
|
16
|
+
var _useEventCallback = _interopRequireDefault(require("../useEventCallback"));
|
|
15
17
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
16
18
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
17
19
|
var __rest = void 0 && (void 0).__rest || function (s, e) {
|
|
@@ -24,35 +26,36 @@ var __rest = void 0 && (void 0).__rest || function (s, e) {
|
|
|
24
26
|
};
|
|
25
27
|
var Switch = exports.Switch = function Switch(props) {
|
|
26
28
|
var type = props.type,
|
|
27
|
-
|
|
29
|
+
checkedProp = props.checked,
|
|
30
|
+
_props$defaultChecked = props.defaultChecked,
|
|
31
|
+
defaultChecked = _props$defaultChecked === void 0 ? false : _props$defaultChecked,
|
|
28
32
|
className = props.className,
|
|
29
|
-
|
|
33
|
+
onChange = props.onChange,
|
|
30
34
|
_props$prefixCls = props.prefixCls,
|
|
31
35
|
prefixCls = _props$prefixCls === void 0 ? 'switch' : _props$prefixCls,
|
|
32
|
-
rest = __rest(props, ["type", "defaultChecked", "className", "onChange", "prefixCls"]);
|
|
36
|
+
rest = __rest(props, ["type", "checked", "defaultChecked", "className", "onChange", "prefixCls"]);
|
|
33
37
|
var classes = (0, _classnames["default"])(prefixCls);
|
|
34
|
-
var
|
|
35
|
-
|
|
36
|
-
checked =
|
|
37
|
-
setChecked =
|
|
38
|
-
var
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
38
|
+
var _useControlledState = (0, _useControlledState3["default"])(defaultChecked, checkedProp),
|
|
39
|
+
_useControlledState2 = (0, _slicedToArray2["default"])(_useControlledState, 2),
|
|
40
|
+
checked = _useControlledState2[0],
|
|
41
|
+
setChecked = _useControlledState2[1];
|
|
42
|
+
var handleChange = (0, _useEventCallback["default"])(function (e) {
|
|
43
|
+
setChecked(e.value);
|
|
44
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(e);
|
|
45
|
+
});
|
|
46
|
+
var cls = classes(undefined, (0, _classnames.joinCls)(classes(type), className));
|
|
47
|
+
if (type === 'button') {
|
|
48
|
+
return (0, _jsxRuntime.jsx)(_togglebutton.ToggleButton, Object.assign({}, rest, {
|
|
49
|
+
className: cls,
|
|
50
|
+
checked: checked,
|
|
51
|
+
onChange: handleChange
|
|
52
|
+
}));
|
|
53
|
+
}
|
|
54
|
+
return (0, _jsxRuntime.jsx)(_inputswitch.InputSwitch, Object.assign({}, rest, {
|
|
55
|
+
className: cls,
|
|
50
56
|
checked: checked,
|
|
51
|
-
onChange:
|
|
52
|
-
setChecked(e.value);
|
|
53
|
-
_onChange === null || _onChange === void 0 ? void 0 : _onChange(e);
|
|
54
|
-
}
|
|
57
|
+
onChange: handleChange
|
|
55
58
|
}));
|
|
56
59
|
};
|
|
57
60
|
var _default = exports["default"] = /*#__PURE__*/(0, _react.memo)(Switch);
|
|
58
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvU3dpdGNoL1N3aXRjaC5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvU3dpdGNoL1N3aXRjaC50c3giXSwibmFtZXMiOlsiX2pzeFJ1bnRpbWUiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2lucHV0c3dpdGNoIiwiX3RvZ2dsZWJ1dHRvbiIsIl9jbGFzc25hbWVzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfdXNlQ29udHJvbGxlZFN0YXRlMyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdXNlRXZlbnRDYWxsYmFjayIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9fcmVzdCIsInMiLCJwIiwicHJvdG90eXBlIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiU3dpdGNoIiwiZXhwb3J0cyIsInByb3BzIiwidHlwZSIsImNoZWNrZWRQcm9wIiwiY2hlY2tlZCIsIl9wcm9wcyRkZWZhdWx0Q2hlY2tlZCIsImRlZmF1bHRDaGVja2VkIiwiY2xhc3NOYW1lIiwib25DaGFuZ2UiLCJfcHJvcHMkcHJlZml4Q2xzIiwicHJlZml4Q2xzIiwicmVzdCIsImNsYXNzZXMiLCJjbGFzc25hbWVzIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZSIsInVzZUNvbnRyb2xsZWRTdGF0ZSIsIl91c2VDb250cm9sbGVkU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwic2V0Q2hlY2tlZCIsImhhbmRsZUNoYW5nZSIsInVzZUV2ZW50Q2FsbGJhY2siLCJ2YWx1ZSIsImNscyIsInVuZGVmaW5lZCIsImpvaW5DbHMiLCJfanN4IiwiVG9nZ2xlQnV0dG9uIiwiYXNzaWduIiwiSW5wdXRTd2l0Y2giLCJfZGVmYXVsdCIsIm1lbW8iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVdBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQ1hBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFlBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLGFBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFdBQUEsR0FBQUMsdUJBQUEsQ0FBQUwsT0FBQTtBQUNBLElBQUFNLG9CQUFBLEdBQUFDLHNCQUFBLENBQUFQLE9BQUE7QUFDQSxJQUFBUSxpQkFBQSxHQUFBRCxzQkFBQSxDQUFBUCxPQUFBO0FBQW1ELFNBQUFTLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBTCx3QkFBQUssQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLGdCQUFBSyxPQUFBLENBQUFMLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENBQUEsVUFBQUcsQ0FBQSxDQUFBSSxHQUFBLENBQUFQLENBQUEsT0FBQVEsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsQ0FBQSxJQUFBZCxDQUFBLG9CQUFBYyxDQUFBLE9BQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBaEIsQ0FBQSxFQUFBYyxDQUFBLFNBQUFHLENBQUEsR0FBQVAsQ0FBQSxHQUFBQyxNQUFBLENBQUFFLHdCQUFBLENBQUFiLENBQUEsRUFBQWMsQ0FBQSxVQUFBRyxDQUFBLEtBQUFBLENBQUEsQ0FBQVYsR0FBQSxJQUFBVSxDQUFBLENBQUFDLEdBQUEsSUFBQVAsTUFBQSxDQUFBQyxjQUFBLENBQUFKLENBQUEsRUFBQU0sQ0FBQSxFQUFBRyxDQUFBLElBQUFULENBQUEsQ0FBQU0sQ0FBQSxJQUFBZCxDQUFBLENBQUFjLENBQUEsWUFBQU4sQ0FBQSxjQUFBUixDQUFBLEVBQUFHLENBQUEsSUFBQUEsQ0FBQSxDQUFBZSxHQUFBLENBQUFsQixDQUFBLEVBQUFRLENBQUEsR0FBQUEsQ0FBQTtBRExuRCxJQUFJVyxNQUFNLEdBQUksVUFBUSxTQUFLQSxNQUFNLElBQUssVUFBVUMsQ0FBQyxFQUFFcEIsQ0FBQyxFQUFFO0VBQ2xELElBQUlHLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDVixLQUFLLElBQUlrQixDQUFDLElBQUlELENBQUMsRUFBRSxJQUFJVCxNQUFNLENBQUNXLFNBQVMsQ0FBQ1AsY0FBYyxDQUFDQyxJQUFJLENBQUNJLENBQUMsRUFBRUMsQ0FBQyxDQUFDLElBQUlyQixDQUFDLENBQUN1QixPQUFPLENBQUNGLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFDL0VsQixDQUFDLENBQUNrQixDQUFDLENBQUMsR0FBR0QsQ0FBQyxDQUFDQyxDQUFDLENBQUM7RUFDZixJQUFJRCxDQUFDLElBQUksSUFBSSxJQUFJLE9BQU9ULE1BQU0sQ0FBQ2EscUJBQXFCLEtBQUssVUFBVSxFQUMvRCxLQUFLLElBQUlQLENBQUMsR0FBRyxDQUFDLEVBQUVJLENBQUMsR0FBR1YsTUFBTSxDQUFDYSxxQkFBcUIsQ0FBQ0osQ0FBQyxDQUFDLEVBQUVILENBQUMsR0FBR0ksQ0FBQyxDQUFDSSxNQUFNLEVBQUVSLENBQUMsRUFBRSxFQUFFO0lBQ3BFLElBQUlqQixDQUFDLENBQUN1QixPQUFPLENBQUNGLENBQUMsQ0FBQ0osQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUlOLE1BQU0sQ0FBQ1csU0FBUyxDQUFDSSxvQkFBb0IsQ0FBQ1YsSUFBSSxDQUFDSSxDQUFDLEVBQUVDLENBQUMsQ0FBQ0osQ0FBQyxDQUFDLENBQUMsRUFDMUVkLENBQUMsQ0FBQ2tCLENBQUMsQ0FBQ0osQ0FBQyxDQUFDLENBQUMsR0FBR0csQ0FBQyxDQUFDQyxDQUFDLENBQUNKLENBQUMsQ0FBQyxDQUFDO0VBQ3pCO0VBQ0osT0FBT2QsQ0FBQztBQUNaLENBQUM7QUNBTSxJQUFNd0IsTUFBTSxHQUFBQyxPQUFBLENBQUFELE1BQUEsR0FBdUMsU0FBN0NBLE1BQU1BLENBQXVDRSxLQUFLLEVBQUc7RUFDaEUsSUFBUUMsSUFBSSxHQUF1R0QsS0FBSyxDQUFoSEMsSUFBSTtJQUFXQyxXQUFXLEdBQWlGRixLQUFLLENBQTFHRyxPQUFPO0lBQUFDLHFCQUFBLEdBQThGSixLQUFLLENBQXBGSyxjQUFjO0lBQWRBLGNBQWMsR0FBQUQscUJBQUEsY0FBRyxLQUFLLEdBQUFBLHFCQUFBO0lBQUVFLFNBQVMsR0FBOENOLEtBQUssQ0FBNURNLFNBQVM7SUFBRUMsUUFBUSxHQUFvQ1AsS0FBSyxDQUFqRE8sUUFBUTtJQUFBQyxnQkFBQSxHQUFvQ1IsS0FBSyxDQUF2Q1MsU0FBUztJQUFUQSxTQUFTLEdBQUFELGdCQUFBLGNBQUcsUUFBUSxHQUFBQSxnQkFBQTtJQUFLRSxJQUFJLEdBQUFwQixNQUFBLENBQUtVLEtBQUssRUFBbEgsQ0FBQSxNQUFBLEVBQUEsU0FBQSxFQUFBLGdCQUFBLEVBQUEsV0FBQSxFQUFBLFVBQUEsRUFBQSxXQUFBLENBQTBHLENBQVE7RUFDeEgsSUFBTVcsT0FBTyxHQUFHLElBQUFDLHNCQUFVLEVBQUNILFNBQVMsQ0FBQztFQUNyQyxJQUFBSSxtQkFBQSxHQUE4QixJQUFBQywrQkFBa0IsRUFBQ1QsY0FBYyxFQUFFSCxXQUFXLENBQUM7SUFBQWEsb0JBQUEsT0FBQUMsZUFBQSxhQUFBSCxtQkFBQTtJQUF0RVYsT0FBTyxHQUFBWSxvQkFBQTtJQUFFRSxVQUFVLEdBQUFGLG9CQUFBO0VBRTFCLElBQU1HLFlBQVksR0FBRyxJQUFBQyw0QkFBZ0IsRUFBQyxVQUFDaEQsQ0FBb0IsRUFBSTtJQUM3RDhDLFVBQVUsQ0FBQzlDLENBQUMsQ0FBQ2lELEtBQUssQ0FBQztJQUNuQmIsUUFBUSxLQUFBLElBQUEsSUFBUkEsUUFBUSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFSQSxRQUFRLENBQUdwQyxDQUFDLENBQUM7RUFDZixDQUFDLENBQUM7RUFFRixJQUFNa0QsR0FBRyxHQUFHVixPQUFPLENBQUNXLFNBQVMsRUFBRSxJQUFBQyxtQkFBTyxFQUFDWixPQUFPLENBQUNWLElBQUksQ0FBQyxFQUFFSyxTQUFTLENBQUMsQ0FBQztFQUVqRSxJQUFJTCxJQUFJLEtBQUssUUFBUSxFQUFFO0lBQ3JCLE9BQU8sSUFBQXVCLGVBQUEsRUFBQ0MsMEJBQVksRUFBQTNDLE1BQUEsQ0FBQTRDLE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFBS2hCLElBQUksRUFBQTtNQUFFSixTQUFTLEVBQUVlLEdBQUc7TUFBRWxCLE9BQU8sRUFBRUEsT0FBTztNQUFFSSxRQUFRLEVBQUVXO0lBQVksQ0FBQSxDQUFBLENBQUk7RUFDN0Y7RUFFQSxPQUFPLElBQUFNLGVBQUEsRUFBQ0csd0JBQVcsRUFBQTdDLE1BQUEsQ0FBQTRDLE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFBS2hCLElBQUksRUFBQTtJQUFFSixTQUFTLEVBQUVlLEdBQUc7SUFBRWxCLE9BQU8sRUFBRUEsT0FBTztJQUFFSSxRQUFRLEVBQUVXO0VBQVksQ0FBQSxDQUFBLENBQUk7QUFDNUYsQ0FBQztBQUFDLElBQUFVLFFBQUEsR0FBQTdCLE9BQUEsMkJBRWEsSUFBQThCLFdBQUksRUFBQy9CLE1BQU0sQ0FBQyIsImZpbGUiOiJjb21wb25lbnRzL1N3aXRjaC9Td2l0Y2guanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgbWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IElucHV0U3dpdGNoIH0gZnJvbSAncHJpbWVyZWFjdC9pbnB1dHN3aXRjaCc7XG5pbXBvcnQgeyBUb2dnbGVCdXR0b24gfSBmcm9tICdwcmltZXJlYWN0L3RvZ2dsZWJ1dHRvbic7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMsIGpvaW5DbHMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB1c2VDb250cm9sbGVkU3RhdGUgZnJvbSAnLi4vdXNlQ29udHJvbGxlZFN0YXRlJztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJy4uL3VzZUV2ZW50Q2FsbGJhY2snO1xuZXhwb3J0IGNvbnN0IFN3aXRjaCA9IHByb3BzID0+IHtcbiAgICBjb25zdCB7IHR5cGUsIGNoZWNrZWQ6IGNoZWNrZWRQcm9wLCBkZWZhdWx0Q2hlY2tlZCA9IGZhbHNlLCBjbGFzc05hbWUsIG9uQ2hhbmdlLCBwcmVmaXhDbHMgPSAnc3dpdGNoJyB9ID0gcHJvcHMsIHJlc3QgPSBfX3Jlc3QocHJvcHMsIFtcInR5cGVcIiwgXCJjaGVja2VkXCIsIFwiZGVmYXVsdENoZWNrZWRcIiwgXCJjbGFzc05hbWVcIiwgXCJvbkNoYW5nZVwiLCBcInByZWZpeENsc1wiXSk7XG4gICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMocHJlZml4Q2xzKTtcbiAgICBjb25zdCBbY2hlY2tlZCwgc2V0Q2hlY2tlZF0gPSB1c2VDb250cm9sbGVkU3RhdGUoZGVmYXVsdENoZWNrZWQsIGNoZWNrZWRQcm9wKTtcbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VFdmVudENhbGxiYWNrKChlKSA9PiB7XG4gICAgICAgIHNldENoZWNrZWQoZS52YWx1ZSk7XG4gICAgICAgIG9uQ2hhbmdlID09PSBudWxsIHx8IG9uQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNoYW5nZShlKTtcbiAgICB9KTtcbiAgICBjb25zdCBjbHMgPSBjbGFzc2VzKHVuZGVmaW5lZCwgam9pbkNscyhjbGFzc2VzKHR5cGUpLCBjbGFzc05hbWUpKTtcbiAgICBpZiAodHlwZSA9PT0gJ2J1dHRvbicpIHtcbiAgICAgICAgcmV0dXJuIF9qc3goVG9nZ2xlQnV0dG9uLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IGNsYXNzTmFtZTogY2xzLCBjaGVja2VkOiBjaGVja2VkLCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlIH0pKTtcbiAgICB9XG4gICAgcmV0dXJuIF9qc3goSW5wdXRTd2l0Y2gsIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHsgY2xhc3NOYW1lOiBjbHMsIGNoZWNrZWQ6IGNoZWNrZWQsIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UgfSkpO1xufTtcbmV4cG9ydCBkZWZhdWx0IG1lbW8oU3dpdGNoKTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
@@ -1,12 +1,17 @@
|
|
|
1
|
-
import type { InputSwitchProps } from 'primereact/inputswitch';
|
|
2
|
-
import type { ToggleButtonProps } from 'primereact/togglebutton';
|
|
1
|
+
import type { InputSwitchChangeEvent, InputSwitchProps } from 'primereact/inputswitch';
|
|
2
|
+
import type { ToggleButtonChangeEvent, ToggleButtonProps } from 'primereact/togglebutton';
|
|
3
|
+
export type SwitchChangeEvent = InputSwitchChangeEvent | ToggleButtonChangeEvent;
|
|
4
|
+
type OmitKeys = 'checked' | 'onChange';
|
|
3
5
|
interface SwitchBaseProps {
|
|
4
6
|
prefixCls?: string;
|
|
7
|
+
checked?: boolean;
|
|
8
|
+
defaultChecked?: boolean;
|
|
9
|
+
onChange?(event: SwitchChangeEvent): void;
|
|
5
10
|
}
|
|
6
|
-
interface NormalSwitchProps extends Omit<InputSwitchProps,
|
|
11
|
+
interface NormalSwitchProps extends Omit<InputSwitchProps, OmitKeys>, SwitchBaseProps {
|
|
7
12
|
type?: 'normal';
|
|
8
13
|
}
|
|
9
|
-
interface ButtonSwitchProps extends Omit<ToggleButtonProps,
|
|
14
|
+
interface ButtonSwitchProps extends Omit<ToggleButtonProps, OmitKeys>, SwitchBaseProps {
|
|
10
15
|
type: 'button';
|
|
11
16
|
}
|
|
12
17
|
export type SwitchProps = NormalSwitchProps | ButtonSwitchProps;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
type Updater<T> = (updater: T | ((origin: T) => T)) => void;
|
|
2
|
+
/**
|
|
3
|
+
* Similar to `useState` but will use props value if provided.
|
|
4
|
+
* From React 18, we do not need safe `useState` since it will not throw for unmounted update.
|
|
5
|
+
* This hook removes the `onChange` & `postState` logic since we only need basic merged state logic.
|
|
6
|
+
*
|
|
7
|
+
* The `mergedValue` return already reflects the latest controlled `value` without
|
|
8
|
+
* the layout effect. The effect exists to sync `innerValue` for the edge case where
|
|
9
|
+
* the component starts in uncontrolled mode (calling `setInnerValue` directly) and
|
|
10
|
+
* then transitions to controlled mode (parent starts providing `value`). Without this
|
|
11
|
+
* sync, reverting back to uncontrolled mode would show the stale `innerValue`.
|
|
12
|
+
*/
|
|
13
|
+
export default function useControlledState<T>(defaultStateValue: T | (() => T), value?: T): [T, Updater<T>];
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports["default"] = useControlledState;
|
|
8
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
|
+
var _react = require("react");
|
|
10
|
+
var _useLayoutEffect = _interopRequireDefault(require("../useLayoutEffect"));
|
|
11
|
+
/**
|
|
12
|
+
* Similar to `useState` but will use props value if provided.
|
|
13
|
+
* From React 18, we do not need safe `useState` since it will not throw for unmounted update.
|
|
14
|
+
* This hook removes the `onChange` & `postState` logic since we only need basic merged state logic.
|
|
15
|
+
*
|
|
16
|
+
* The `mergedValue` return already reflects the latest controlled `value` without
|
|
17
|
+
* the layout effect. The effect exists to sync `innerValue` for the edge case where
|
|
18
|
+
* the component starts in uncontrolled mode (calling `setInnerValue` directly) and
|
|
19
|
+
* then transitions to controlled mode (parent starts providing `value`). Without this
|
|
20
|
+
* sync, reverting back to uncontrolled mode would show the stale `innerValue`.
|
|
21
|
+
*/
|
|
22
|
+
function useControlledState(defaultStateValue, value) {
|
|
23
|
+
var _useState = (0, _react.useState)(defaultStateValue),
|
|
24
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
25
|
+
innerValue = _useState2[0],
|
|
26
|
+
setInnerValue = _useState2[1];
|
|
27
|
+
var mergedValue = value !== undefined ? value : innerValue;
|
|
28
|
+
(0, _useLayoutEffect["default"])(function (mount) {
|
|
29
|
+
if (!mount && value !== undefined) {
|
|
30
|
+
setInnerValue(value);
|
|
31
|
+
}
|
|
32
|
+
}, [value]);
|
|
33
|
+
return [
|
|
34
|
+
// Value
|
|
35
|
+
mergedValue,
|
|
36
|
+
// Update function
|
|
37
|
+
setInnerValue];
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvdXNlQ29udHJvbGxlZFN0YXRlL2luZGV4LnRzIiwiY29tcG9uZW50cy91c2VDb250cm9sbGVkU3RhdGUvaW5kZXguanMiXSwibmFtZXMiOlsiX3JlYWN0IiwicmVxdWlyZSIsIl91c2VMYXlvdXRFZmZlY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwidXNlQ29udHJvbGxlZFN0YXRlIiwiZGVmYXVsdFN0YXRlVmFsdWUiLCJ2YWx1ZSIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsImlubmVyVmFsdWUiLCJzZXRJbm5lclZhbHVlIiwibWVyZ2VkVmFsdWUiLCJ1bmRlZmluZWQiLCJ1c2VMYXlvdXRFZmZlY3QiLCJtb3VudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxnQkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBSUE7QUNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBREljLFNBQVVHLGtCQUFrQkEsQ0FDeENDLGlCQUFnQyxFQUNoQ0MsS0FBUyxFQUFBO0VBRVQsSUFBQUMsU0FBQSxHQUFvQyxJQUFBQyxlQUFRLEVBQUlILGlCQUFpQixDQUFDO0lBQUFJLFVBQUEsT0FBQUMsZUFBQSxhQUFBSCxTQUFBO0lBQTNESSxVQUFVLEdBQUFGLFVBQUE7SUFBRUcsYUFBYSxHQUFBSCxVQUFBO0VBRWhDLElBQU1JLFdBQVcsR0FBR1AsS0FBSyxLQUFLUSxTQUFTLEdBQUdSLEtBQUssR0FBR0ssVUFBVTtFQUU1RCxJQUFBSSwyQkFBZSxFQUNiLFVBQUFDLEtBQUssRUFBRztJQUNOLElBQUksQ0FBQ0EsS0FBSyxJQUFJVixLQUFLLEtBQUtRLFNBQVMsRUFBRTtNQUNqQ0YsYUFBYSxDQUFDTixLQUFLLENBQUM7SUFDdEI7RUFDRixDQUFDLEVBQ0QsQ0FBQ0EsS0FBSyxDQUFDLENBQ1I7RUFFRCxPQUFPO0VBQ0w7RUFDQU8sV0FBVztFQUNYO0VBQ0FELGFBQWEsQ0FDZDtBQUNIIiwiZmlsZSI6ImNvbXBvbmVudHMvdXNlQ29udHJvbGxlZFN0YXRlL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJpbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VMYXlvdXRFZmZlY3QgZnJvbSAnLi4vdXNlTGF5b3V0RWZmZWN0Jztcbi8qKlxuICogU2ltaWxhciB0byBgdXNlU3RhdGVgIGJ1dCB3aWxsIHVzZSBwcm9wcyB2YWx1ZSBpZiBwcm92aWRlZC5cbiAqIEZyb20gUmVhY3QgMTgsIHdlIGRvIG5vdCBuZWVkIHNhZmUgYHVzZVN0YXRlYCBzaW5jZSBpdCB3aWxsIG5vdCB0aHJvdyBmb3IgdW5tb3VudGVkIHVwZGF0ZS5cbiAqIFRoaXMgaG9vayByZW1vdmVzIHRoZSBgb25DaGFuZ2VgICYgYHBvc3RTdGF0ZWAgbG9naWMgc2luY2Ugd2Ugb25seSBuZWVkIGJhc2ljIG1lcmdlZCBzdGF0ZSBsb2dpYy5cbiAqXG4gKiBUaGUgYG1lcmdlZFZhbHVlYCByZXR1cm4gYWxyZWFkeSByZWZsZWN0cyB0aGUgbGF0ZXN0IGNvbnRyb2xsZWQgYHZhbHVlYCB3aXRob3V0XG4gKiB0aGUgbGF5b3V0IGVmZmVjdC4gVGhlIGVmZmVjdCBleGlzdHMgdG8gc3luYyBgaW5uZXJWYWx1ZWAgZm9yIHRoZSBlZGdlIGNhc2Ugd2hlcmVcbiAqIHRoZSBjb21wb25lbnQgc3RhcnRzIGluIHVuY29udHJvbGxlZCBtb2RlIChjYWxsaW5nIGBzZXRJbm5lclZhbHVlYCBkaXJlY3RseSkgYW5kXG4gKiB0aGVuIHRyYW5zaXRpb25zIHRvIGNvbnRyb2xsZWQgbW9kZSAocGFyZW50IHN0YXJ0cyBwcm92aWRpbmcgYHZhbHVlYCkuIFdpdGhvdXQgdGhpc1xuICogc3luYywgcmV2ZXJ0aW5nIGJhY2sgdG8gdW5jb250cm9sbGVkIG1vZGUgd291bGQgc2hvdyB0aGUgc3RhbGUgYGlubmVyVmFsdWVgLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VDb250cm9sbGVkU3RhdGUoZGVmYXVsdFN0YXRlVmFsdWUsIHZhbHVlKSB7XG4gICAgY29uc3QgW2lubmVyVmFsdWUsIHNldElubmVyVmFsdWVdID0gdXNlU3RhdGUoZGVmYXVsdFN0YXRlVmFsdWUpO1xuICAgIGNvbnN0IG1lcmdlZFZhbHVlID0gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDogaW5uZXJWYWx1ZTtcbiAgICB1c2VMYXlvdXRFZmZlY3QobW91bnQgPT4ge1xuICAgICAgICBpZiAoIW1vdW50ICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHNldElubmVyVmFsdWUodmFsdWUpO1xuICAgICAgICB9XG4gICAgfSwgW3ZhbHVlXSk7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgLy8gVmFsdWVcbiAgICAgICAgbWVyZ2VkVmFsdWUsXG4gICAgICAgIC8vIFVwZGF0ZSBmdW5jdGlvblxuICAgICAgICBzZXRJbm5lclZhbHVlLFxuICAgIF07XG59Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
type Fn<T extends unknown[], R> = (...args: T) => R;
|
|
2
|
+
/**
|
|
3
|
+
* A hook that returns a stable callback reference that always invokes
|
|
4
|
+
* the latest version of the provided function. Similar to the React
|
|
5
|
+
* useEvent RFC proposal.
|
|
6
|
+
*
|
|
7
|
+
* @param fn The function to wrap
|
|
8
|
+
* @returns A stable callback that always calls the latest fn
|
|
9
|
+
*/
|
|
10
|
+
export default function useEventCallback<T extends unknown[], R>(fn: Fn<T, R>): Fn<T, R>;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports["default"] = useEventCallback;
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
var _useLatest = _interopRequireDefault(require("../useLatest"));
|
|
10
|
+
/**
|
|
11
|
+
* A hook that returns a stable callback reference that always invokes
|
|
12
|
+
* the latest version of the provided function. Similar to the React
|
|
13
|
+
* useEvent RFC proposal.
|
|
14
|
+
*
|
|
15
|
+
* @param fn The function to wrap
|
|
16
|
+
* @returns A stable callback that always calls the latest fn
|
|
17
|
+
*/
|
|
18
|
+
function useEventCallback(fn) {
|
|
19
|
+
var fnRef = (0, _useLatest["default"])(fn);
|
|
20
|
+
return (0, _react.useCallback)(function () {
|
|
21
|
+
return fnRef.current.apply(fnRef, arguments);
|
|
22
|
+
}, []);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvdXNlRXZlbnRDYWxsYmFjay9pbmRleC50cyIsImNvbXBvbmVudHMvdXNlRXZlbnRDYWxsYmFjay9pbmRleC5qcyJdLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX3VzZUxhdGVzdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJ1c2VFdmVudENhbGxiYWNrIiwiZm4iLCJmblJlZiIsInVzZUxhdGVzdCIsInVzZUNhbGxiYWNrIiwiY3VycmVudCIsImFwcGx5IiwiYXJndW1lbnRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBSUE7QUNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBREljLFNBQVVHLGdCQUFnQkEsQ0FBeUJDLEVBQVksRUFBQTtFQUMzRSxJQUFNQyxLQUFLLEdBQUcsSUFBQUMscUJBQVMsRUFBQ0YsRUFBRSxDQUFDO0VBRTNCLE9BQU8sSUFBQUcsa0JBQVcsRUFBQyxZQUFlO0lBQ2hDLE9BQU9GLEtBQUssQ0FBQ0csT0FBTyxDQUFBQyxLQUFBLENBQWJKLEtBQUssRUFBQUssU0FBZ0IsQ0FBQztFQUMvQixDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ1IiLCJmaWxlIjoiY29tcG9uZW50cy91c2VFdmVudENhbGxiYWNrL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJpbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VMYXRlc3QgZnJvbSAnLi4vdXNlTGF0ZXN0Jztcbi8qKlxuICogQSBob29rIHRoYXQgcmV0dXJucyBhIHN0YWJsZSBjYWxsYmFjayByZWZlcmVuY2UgdGhhdCBhbHdheXMgaW52b2tlc1xuICogdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBwcm92aWRlZCBmdW5jdGlvbi4gU2ltaWxhciB0byB0aGUgUmVhY3RcbiAqIHVzZUV2ZW50IFJGQyBwcm9wb3NhbC5cbiAqXG4gKiBAcGFyYW0gZm4gVGhlIGZ1bmN0aW9uIHRvIHdyYXBcbiAqIEByZXR1cm5zIEEgc3RhYmxlIGNhbGxiYWNrIHRoYXQgYWx3YXlzIGNhbGxzIHRoZSBsYXRlc3QgZm5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlRXZlbnRDYWxsYmFjayhmbikge1xuICAgIGNvbnN0IGZuUmVmID0gdXNlTGF0ZXN0KGZuKTtcbiAgICByZXR1cm4gdXNlQ2FsbGJhY2soKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgcmV0dXJuIGZuUmVmLmN1cnJlbnQoLi4uYXJncyk7XG4gICAgfSwgW10pO1xufSJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type DependencyList } from 'react';
|
|
2
|
+
type EffectCallback = (mount: boolean) => void | (() => void);
|
|
3
|
+
/**
|
|
4
|
+
* A custom `useLayoutEffect` that passes a boolean indicating whether
|
|
5
|
+
* it's the initial mount (`true`) or a subsequent update (`false`).
|
|
6
|
+
*
|
|
7
|
+
* @param effect The effect callback that receives a `mount` parameter
|
|
8
|
+
* @param deps The dependency array
|
|
9
|
+
*/
|
|
10
|
+
export default function useLayoutEffect(effect: EffectCallback, deps?: DependencyList): void;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = useLayoutEffect;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
/**
|
|
9
|
+
* A custom `useLayoutEffect` that passes a boolean indicating whether
|
|
10
|
+
* it's the initial mount (`true`) or a subsequent update (`false`).
|
|
11
|
+
*
|
|
12
|
+
* @param effect The effect callback that receives a `mount` parameter
|
|
13
|
+
* @param deps The dependency array
|
|
14
|
+
*/
|
|
15
|
+
function useLayoutEffect(effect, deps) {
|
|
16
|
+
var isMounted = (0, _react.useRef)(false);
|
|
17
|
+
(0, _react.useLayoutEffect)(function () {
|
|
18
|
+
var mount = !isMounted.current;
|
|
19
|
+
isMounted.current = true;
|
|
20
|
+
return effect(mount);
|
|
21
|
+
}, deps);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvdXNlTGF5b3V0RWZmZWN0L2luZGV4LnRzIiwiY29tcG9uZW50cy91c2VMYXlvdXRFZmZlY3QvaW5kZXguanMiXSwibmFtZXMiOlsiX3JlYWN0IiwicmVxdWlyZSIsInVzZUxheW91dEVmZmVjdCIsImVmZmVjdCIsImRlcHMiLCJpc01vdW50ZWQiLCJ1c2VSZWYiLCJyZWFjdFVzZUxheW91dEVmZmVjdCIsIm1vdW50IiwiY3VycmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBUUE7QUNOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QURRYyxTQUFVQyxlQUFlQSxDQUFDQyxNQUFzQixFQUFFQyxJQUFxQixFQUFBO0VBQ25GLElBQU1DLFNBQVMsR0FBRyxJQUFBQyxhQUFNLEVBQUMsS0FBSyxDQUFDO0VBRS9CLElBQUFDLHNCQUFvQixFQUFDLFlBQUs7SUFDeEIsSUFBTUMsS0FBSyxHQUFHLENBQUNILFNBQVMsQ0FBQ0ksT0FBTztJQUNoQ0osU0FBUyxDQUFDSSxPQUFPLEdBQUcsSUFBSTtJQUN4QixPQUFPTixNQUFNLENBQUNLLEtBQUssQ0FBQztFQUN0QixDQUFDLEVBQUVKLElBQUksQ0FBQztBQUNWIiwiZmlsZSI6ImNvbXBvbmVudHMvdXNlTGF5b3V0RWZmZWN0L2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJpbXBvcnQgeyB1c2VMYXlvdXRFZmZlY3QgYXMgcmVhY3RVc2VMYXlvdXRFZmZlY3QsIHVzZVJlZiwgfSBmcm9tICdyZWFjdCc7XG4vKipcbiAqIEEgY3VzdG9tIGB1c2VMYXlvdXRFZmZlY3RgIHRoYXQgcGFzc2VzIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXJcbiAqIGl0J3MgdGhlIGluaXRpYWwgbW91bnQgKGB0cnVlYCkgb3IgYSBzdWJzZXF1ZW50IHVwZGF0ZSAoYGZhbHNlYCkuXG4gKlxuICogQHBhcmFtIGVmZmVjdCBUaGUgZWZmZWN0IGNhbGxiYWNrIHRoYXQgcmVjZWl2ZXMgYSBgbW91bnRgIHBhcmFtZXRlclxuICogQHBhcmFtIGRlcHMgVGhlIGRlcGVuZGVuY3kgYXJyYXlcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlTGF5b3V0RWZmZWN0KGVmZmVjdCwgZGVwcykge1xuICAgIGNvbnN0IGlzTW91bnRlZCA9IHVzZVJlZihmYWxzZSk7XG4gICAgcmVhY3RVc2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgICBjb25zdCBtb3VudCA9ICFpc01vdW50ZWQuY3VycmVudDtcbiAgICAgICAgaXNNb3VudGVkLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gZWZmZWN0KG1vdW50KTtcbiAgICB9LCBkZXBzKTtcbn0iXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type Updater<State> = (prev: State) => State;
|
|
2
|
+
/**
|
|
3
|
+
* Execute code before next frame but async.
|
|
4
|
+
*
|
|
5
|
+
* Batches multiple state updates into a single microtask (via `Promise.resolve`),
|
|
6
|
+
* reducing unnecessary re-renders when multiple updates happen synchronously.
|
|
7
|
+
*
|
|
8
|
+
* @param defaultState The initial state value
|
|
9
|
+
* @returns A tuple of `[state, setFrameState]`
|
|
10
|
+
*/
|
|
11
|
+
export default function useLayoutState<State>(defaultState: State): [State, (updater: Updater<State>) => void];
|
|
12
|
+
/** Lock frame, when frame pass reset the lock. */
|
|
13
|
+
export declare function useTimeoutLock<State>(defaultState?: State): [(state: State) => void, () => State | null];
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports["default"] = useLayoutState;
|
|
8
|
+
exports.useTimeoutLock = useTimeoutLock;
|
|
9
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
+
var _react = require("react");
|
|
11
|
+
/**
|
|
12
|
+
* Execute code before next frame but async.
|
|
13
|
+
*
|
|
14
|
+
* Batches multiple state updates into a single microtask (via `Promise.resolve`),
|
|
15
|
+
* reducing unnecessary re-renders when multiple updates happen synchronously.
|
|
16
|
+
*
|
|
17
|
+
* @param defaultState The initial state value
|
|
18
|
+
* @returns A tuple of `[state, setFrameState]`
|
|
19
|
+
*/
|
|
20
|
+
function useLayoutState(defaultState) {
|
|
21
|
+
var stateRef = (0, _react.useRef)(defaultState);
|
|
22
|
+
var _useState = (0, _react.useState)({}),
|
|
23
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
24
|
+
forceUpdate = _useState2[1];
|
|
25
|
+
var lastPromiseRef = (0, _react.useRef)(null);
|
|
26
|
+
var updateBatchRef = (0, _react.useRef)([]);
|
|
27
|
+
var setFrameState = (0, _react.useCallback)(function (updater) {
|
|
28
|
+
updateBatchRef.current.push(updater);
|
|
29
|
+
var promise = Promise.resolve();
|
|
30
|
+
lastPromiseRef.current = promise;
|
|
31
|
+
promise.then(function () {
|
|
32
|
+
if (lastPromiseRef.current === promise) {
|
|
33
|
+
var prevBatch = updateBatchRef.current;
|
|
34
|
+
var prevState = stateRef.current;
|
|
35
|
+
updateBatchRef.current = [];
|
|
36
|
+
prevBatch.forEach(function (batchUpdater) {
|
|
37
|
+
stateRef.current = batchUpdater(stateRef.current);
|
|
38
|
+
});
|
|
39
|
+
lastPromiseRef.current = null;
|
|
40
|
+
if (prevState !== stateRef.current) {
|
|
41
|
+
forceUpdate({});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
}, []);
|
|
46
|
+
(0, _react.useEffect)(function () {
|
|
47
|
+
return function () {
|
|
48
|
+
lastPromiseRef.current = null;
|
|
49
|
+
};
|
|
50
|
+
}, []);
|
|
51
|
+
return [stateRef.current, setFrameState];
|
|
52
|
+
}
|
|
53
|
+
/** Lock frame, when frame pass reset the lock. */
|
|
54
|
+
function useTimeoutLock(defaultState) {
|
|
55
|
+
var frameRef = (0, _react.useRef)(defaultState !== null && defaultState !== void 0 ? defaultState : null);
|
|
56
|
+
var timeoutRef = (0, _react.useRef)(null);
|
|
57
|
+
function cleanUp() {
|
|
58
|
+
if (timeoutRef.current != null) {
|
|
59
|
+
clearTimeout(timeoutRef.current);
|
|
60
|
+
timeoutRef.current = null;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function setState(newState) {
|
|
64
|
+
frameRef.current = newState;
|
|
65
|
+
cleanUp();
|
|
66
|
+
timeoutRef.current = setTimeout(function () {
|
|
67
|
+
frameRef.current = null;
|
|
68
|
+
timeoutRef.current = null;
|
|
69
|
+
}, 100);
|
|
70
|
+
}
|
|
71
|
+
function getState() {
|
|
72
|
+
return frameRef.current;
|
|
73
|
+
}
|
|
74
|
+
(0, _react.useEffect)(function () {
|
|
75
|
+
return cleanUp;
|
|
76
|
+
}, []);
|
|
77
|
+
return [setState, getState];
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvdXNlTGF5b3V0U3RhdGUvaW5kZXgudHMiLCJjb21wb25lbnRzL3VzZUxheW91dFN0YXRlL2luZGV4LmpzIl0sIm5hbWVzIjpbIl9yZWFjdCIsInJlcXVpcmUiLCJ1c2VMYXlvdXRTdGF0ZSIsImRlZmF1bHRTdGF0ZSIsInN0YXRlUmVmIiwidXNlUmVmIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiZm9yY2VVcGRhdGUiLCJsYXN0UHJvbWlzZVJlZiIsInVwZGF0ZUJhdGNoUmVmIiwic2V0RnJhbWVTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXBkYXRlciIsImN1cnJlbnQiLCJwdXNoIiwicHJvbWlzZSIsIlByb21pc2UiLCJyZXNvbHZlIiwidGhlbiIsInByZXZCYXRjaCIsInByZXZTdGF0ZSIsImZvckVhY2giLCJiYXRjaFVwZGF0ZXIiLCJ1c2VFZmZlY3QiLCJ1c2VUaW1lb3V0TG9jayIsImZyYW1lUmVmIiwidGltZW91dFJlZiIsImNsZWFuVXAiLCJjbGVhclRpbWVvdXQiLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwic2V0VGltZW91dCIsImdldFN0YXRlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFJQTtBQ0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QURJYyxTQUFVQyxjQUFjQSxDQUNwQ0MsWUFBbUIsRUFBQTtFQUVuQixJQUFNQyxRQUFRLEdBQUcsSUFBQUMsYUFBTSxFQUFDRixZQUFZLENBQUM7RUFDckMsSUFBQUcsU0FBQSxHQUF3QixJQUFBQyxlQUFRLEVBQUMsQ0FBQSxDQUFFLENBQUM7SUFBQUMsVUFBQSxPQUFBQyxlQUFBLGFBQUFILFNBQUE7SUFBM0JJLFdBQVcsR0FBQUYsVUFBQTtFQUVwQixJQUFNRyxjQUFjLEdBQUcsSUFBQU4sYUFBTSxFQUF1QixJQUFJLENBQUM7RUFDekQsSUFBTU8sY0FBYyxHQUFHLElBQUFQLGFBQU0sRUFBbUIsRUFBRSxDQUFDO0VBRW5ELElBQU1RLGFBQWEsR0FBRyxJQUFBQyxrQkFBVyxFQUFDLFVBQUNDLE9BQXVCLEVBQUk7SUFDNURILGNBQWMsQ0FBQ0ksT0FBTyxDQUFDQyxJQUFJLENBQUNGLE9BQU8sQ0FBQztJQUVwQyxJQUFNRyxPQUFPLEdBQUdDLE9BQU8sQ0FBQ0MsT0FBTyxDQUFBLENBQUU7SUFDakNULGNBQWMsQ0FBQ0ssT0FBTyxHQUFHRSxPQUFPO0lBRWhDQSxPQUFPLENBQUNHLElBQUksQ0FBQyxZQUFLO01BQ2hCLElBQUlWLGNBQWMsQ0FBQ0ssT0FBTyxLQUFLRSxPQUFPLEVBQUU7UUFDdEMsSUFBTUksU0FBUyxHQUFHVixjQUFjLENBQUNJLE9BQU87UUFDeEMsSUFBTU8sU0FBUyxHQUFHbkIsUUFBUSxDQUFDWSxPQUFPO1FBQ2xDSixjQUFjLENBQUNJLE9BQU8sR0FBRyxFQUFFO1FBRTNCTSxTQUFTLENBQUNFLE9BQU8sQ0FBQyxVQUFBQyxZQUFZLEVBQUc7VUFDL0JyQixRQUFRLENBQUNZLE9BQU8sR0FBR1MsWUFBWSxDQUFDckIsUUFBUSxDQUFDWSxPQUFPLENBQUM7UUFDbkQsQ0FBQyxDQUFDO1FBRUZMLGNBQWMsQ0FBQ0ssT0FBTyxHQUFHLElBQUk7UUFFN0IsSUFBSU8sU0FBUyxLQUFLbkIsUUFBUSxDQUFDWSxPQUFPLEVBQUU7VUFDbENOLFdBQVcsQ0FBQyxDQUFBLENBQUUsQ0FBQztRQUNqQjtNQUNGO0lBQ0YsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUVOLElBQUFnQixnQkFBUyxFQUNQO0lBQUEsT0FBTSxZQUFLO01BQ1RmLGNBQWMsQ0FBQ0ssT0FBTyxHQUFHLElBQUk7SUFDL0IsQ0FBQztFQUFBLEdBQ0QsRUFBRSxDQUNIO0VBRUQsT0FBTyxDQUFDWixRQUFRLENBQUNZLE9BQU8sRUFBRUgsYUFBYSxDQUFDO0FBQzFDO0FBRUE7QUFDTSxTQUFVYyxjQUFjQSxDQUM1QnhCLFlBQW9CLEVBQUE7RUFFcEIsSUFBTXlCLFFBQVEsR0FBRyxJQUFBdkIsYUFBTSxFQUFlRixZQUFZLEtBQUEsSUFBQSxJQUFaQSxZQUFZLEtBQUEsS0FBQSxDQUFBLEdBQVpBLFlBQVksR0FBSSxJQUFJLENBQUM7RUFDM0QsSUFBTTBCLFVBQVUsR0FBRyxJQUFBeEIsYUFBTSxFQUF1QyxJQUFJLENBQUM7RUFFckUsU0FBU3lCLE9BQU9BLENBQUEsRUFBQTtJQUNkLElBQUlELFVBQVUsQ0FBQ2IsT0FBTyxJQUFJLElBQUksRUFBRTtNQUM5QmUsWUFBWSxDQUFDRixVQUFVLENBQUNiLE9BQU8sQ0FBQztNQUNoQ2EsVUFBVSxDQUFDYixPQUFPLEdBQUcsSUFBSTtJQUMzQjtFQUNGO0VBRUEsU0FBU2dCLFFBQVFBLENBQUNDLFFBQWUsRUFBQTtJQUMvQkwsUUFBUSxDQUFDWixPQUFPLEdBQUdpQixRQUFRO0lBQzNCSCxPQUFPLENBQUEsQ0FBRTtJQUVURCxVQUFVLENBQUNiLE9BQU8sR0FBR2tCLFVBQVUsQ0FBQyxZQUFLO01BQ25DTixRQUFRLENBQUNaLE9BQU8sR0FBRyxJQUFJO01BQ3ZCYSxVQUFVLENBQUNiLE9BQU8sR0FBRyxJQUFJO0lBQzNCLENBQUMsRUFBRSxHQUFHLENBQUM7RUFDVDtFQUVBLFNBQVNtQixRQUFRQSxDQUFBLEVBQUE7SUFDZixPQUFPUCxRQUFRLENBQUNaLE9BQU87RUFDekI7RUFFQSxJQUFBVSxnQkFBUyxFQUFDO0lBQUEsT0FBTUksT0FBTztFQUFBLEdBQUUsRUFBRSxDQUFDO0VBRTVCLE9BQU8sQ0FBQ0UsUUFBUSxFQUFFRyxRQUFRLENBQUM7QUFDN0IiLCJmaWxlIjoiY29tcG9uZW50cy91c2VMYXlvdXRTdGF0ZS9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiaW1wb3J0IHsgdXNlUmVmLCB1c2VTdGF0ZSwgdXNlRWZmZWN0LCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0Jztcbi8qKlxuICogRXhlY3V0ZSBjb2RlIGJlZm9yZSBuZXh0IGZyYW1lIGJ1dCBhc3luYy5cbiAqXG4gKiBCYXRjaGVzIG11bHRpcGxlIHN0YXRlIHVwZGF0ZXMgaW50byBhIHNpbmdsZSBtaWNyb3Rhc2sgKHZpYSBgUHJvbWlzZS5yZXNvbHZlYCksXG4gKiByZWR1Y2luZyB1bm5lY2Vzc2FyeSByZS1yZW5kZXJzIHdoZW4gbXVsdGlwbGUgdXBkYXRlcyBoYXBwZW4gc3luY2hyb25vdXNseS5cbiAqXG4gKiBAcGFyYW0gZGVmYXVsdFN0YXRlIFRoZSBpbml0aWFsIHN0YXRlIHZhbHVlXG4gKiBAcmV0dXJucyBBIHR1cGxlIG9mIGBbc3RhdGUsIHNldEZyYW1lU3RhdGVdYFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VMYXlvdXRTdGF0ZShkZWZhdWx0U3RhdGUpIHtcbiAgICBjb25zdCBzdGF0ZVJlZiA9IHVzZVJlZihkZWZhdWx0U3RhdGUpO1xuICAgIGNvbnN0IFssIGZvcmNlVXBkYXRlXSA9IHVzZVN0YXRlKHt9KTtcbiAgICBjb25zdCBsYXN0UHJvbWlzZVJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCB1cGRhdGVCYXRjaFJlZiA9IHVzZVJlZihbXSk7XG4gICAgY29uc3Qgc2V0RnJhbWVTdGF0ZSA9IHVzZUNhbGxiYWNrKCh1cGRhdGVyKSA9PiB7XG4gICAgICAgIHVwZGF0ZUJhdGNoUmVmLmN1cnJlbnQucHVzaCh1cGRhdGVyKTtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICBsYXN0UHJvbWlzZVJlZi5jdXJyZW50ID0gcHJvbWlzZTtcbiAgICAgICAgcHJvbWlzZS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGlmIChsYXN0UHJvbWlzZVJlZi5jdXJyZW50ID09PSBwcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldkJhdGNoID0gdXBkYXRlQmF0Y2hSZWYuY3VycmVudDtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2U3RhdGUgPSBzdGF0ZVJlZi5jdXJyZW50O1xuICAgICAgICAgICAgICAgIHVwZGF0ZUJhdGNoUmVmLmN1cnJlbnQgPSBbXTtcbiAgICAgICAgICAgICAgICBwcmV2QmF0Y2guZm9yRWFjaChiYXRjaFVwZGF0ZXIgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZVJlZi5jdXJyZW50ID0gYmF0Y2hVcGRhdGVyKHN0YXRlUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGxhc3RQcm9taXNlUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChwcmV2U3RhdGUgIT09IHN0YXRlUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yY2VVcGRhdGUoe30pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSwgW10pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiAoKSA9PiB7XG4gICAgICAgIGxhc3RQcm9taXNlUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gW3N0YXRlUmVmLmN1cnJlbnQsIHNldEZyYW1lU3RhdGVdO1xufVxuLyoqIExvY2sgZnJhbWUsIHdoZW4gZnJhbWUgcGFzcyByZXNldCB0aGUgbG9jay4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VUaW1lb3V0TG9jayhkZWZhdWx0U3RhdGUpIHtcbiAgICBjb25zdCBmcmFtZVJlZiA9IHVzZVJlZihkZWZhdWx0U3RhdGUgIT09IG51bGwgJiYgZGVmYXVsdFN0YXRlICE9PSB2b2lkIDAgPyBkZWZhdWx0U3RhdGUgOiBudWxsKTtcbiAgICBjb25zdCB0aW1lb3V0UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGZ1bmN0aW9uIGNsZWFuVXAoKSB7XG4gICAgICAgIGlmICh0aW1lb3V0UmVmLmN1cnJlbnQgIT0gbnVsbCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRSZWYuY3VycmVudCk7XG4gICAgICAgICAgICB0aW1lb3V0UmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNldFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgICAgIGZyYW1lUmVmLmN1cnJlbnQgPSBuZXdTdGF0ZTtcbiAgICAgICAgY2xlYW5VcCgpO1xuICAgICAgICB0aW1lb3V0UmVmLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGZyYW1lUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgICAgdGltZW91dFJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgfSwgMTAwKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0U3RhdGUoKSB7XG4gICAgICAgIHJldHVybiBmcmFtZVJlZi5jdXJyZW50O1xuICAgIH1cbiAgICB1c2VFZmZlY3QoKCkgPT4gY2xlYW5VcCwgW10pO1xuICAgIHJldHVybiBbc2V0U3RhdGUsIGdldFN0YXRlXTtcbn0iXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
type Fn<T extends unknown[], R> = (...args: T) => R;
|
|
2
|
+
/**
|
|
3
|
+
* A hook that returns a memoized version of a callback function.
|
|
4
|
+
* Unlike `useCallback`, it maintains referential equality across renders
|
|
5
|
+
* without requiring a dependency array, while always calling the latest
|
|
6
|
+
* version of the function.
|
|
7
|
+
*
|
|
8
|
+
* @param fn The function to memoize
|
|
9
|
+
* @returns A memoized function with stable reference
|
|
10
|
+
*/
|
|
11
|
+
export default function useMemoizedFn<T extends unknown[], R>(fn: Fn<T, R>): Fn<T, R>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = useMemoizedFn;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
/**
|
|
9
|
+
* A hook that returns a memoized version of a callback function.
|
|
10
|
+
* Unlike `useCallback`, it maintains referential equality across renders
|
|
11
|
+
* without requiring a dependency array, while always calling the latest
|
|
12
|
+
* version of the function.
|
|
13
|
+
*
|
|
14
|
+
* @param fn The function to memoize
|
|
15
|
+
* @returns A memoized function with stable reference
|
|
16
|
+
*/
|
|
17
|
+
function useMemoizedFn(fn) {
|
|
18
|
+
var fnRef = (0, _react.useRef)(fn);
|
|
19
|
+
fnRef.current = (0, _react.useMemo)(function () {
|
|
20
|
+
return fn;
|
|
21
|
+
}, [fn]);
|
|
22
|
+
var memoizedFn = (0, _react.useRef)(undefined);
|
|
23
|
+
if (!memoizedFn.current) {
|
|
24
|
+
memoizedFn.current = function () {
|
|
25
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
26
|
+
args[_key] = arguments[_key];
|
|
27
|
+
}
|
|
28
|
+
return fnRef.current.apply(this, args);
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
return memoizedFn.current;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvdXNlTWVtb2l6ZWRGbi9pbmRleC50cyIsImNvbXBvbmVudHMvdXNlTWVtb2l6ZWRGbi9pbmRleC5qcyJdLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwidXNlTWVtb2l6ZWRGbiIsImZuIiwiZm5SZWYiLCJ1c2VSZWYiLCJjdXJyZW50IiwidXNlTWVtbyIsIm1lbW9pemVkRm4iLCJ1bmRlZmluZWQiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImFwcGx5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFJQTtBQ0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QURJYyxTQUFVQyxhQUFhQSxDQUF5QkMsRUFBWSxFQUFBO0VBQ3hFLElBQU1DLEtBQUssR0FBRyxJQUFBQyxhQUFNLEVBQUNGLEVBQUUsQ0FBQztFQUN4QkMsS0FBSyxDQUFDRSxPQUFPLEdBQUcsSUFBQUMsY0FBTyxFQUFDO0lBQUEsT0FBTUosRUFBRTtFQUFBLEdBQUUsQ0FBQ0EsRUFBRSxDQUFDLENBQUM7RUFFdkMsSUFBTUssVUFBVSxHQUFHLElBQUFILGFBQU0sRUFBdUJJLFNBQVMsQ0FBQztFQUMxRCxJQUFJLENBQUNELFVBQVUsQ0FBQ0YsT0FBTyxFQUFFO0lBQ3ZCRSxVQUFVLENBQUNGLE9BQU8sR0FBRyxZQUFtQztNQUFBLFNBQUFJLElBQUEsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLEVBQVBDLElBQU8sT0FBQUMsS0FBQSxDQUFBSixJQUFBLEdBQUFLLElBQUEsTUFBQUEsSUFBQSxHQUFBTCxJQUFBLEVBQUFLLElBQUE7UUFBUEYsSUFBTyxDQUFBRSxJQUFBLElBQUFKLFNBQUEsQ0FBQUksSUFBQTtNQUFBO01BQ3RELE9BQU9YLEtBQUssQ0FBQ0UsT0FBTyxDQUFDVSxLQUFLLENBQUMsSUFBSSxFQUFFSCxJQUFJLENBQUM7SUFDeEMsQ0FBQztFQUNIO0VBRUEsT0FBT0wsVUFBVSxDQUFDRixPQUFtQjtBQUN2QyIsImZpbGUiOiJjb21wb25lbnRzL3VzZU1lbW9pemVkRm4vaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImltcG9ydCB7IHVzZU1lbW8sIHVzZVJlZiB9IGZyb20gJ3JlYWN0Jztcbi8qKlxuICogQSBob29rIHRoYXQgcmV0dXJucyBhIG1lbW9pemVkIHZlcnNpb24gb2YgYSBjYWxsYmFjayBmdW5jdGlvbi5cbiAqIFVubGlrZSBgdXNlQ2FsbGJhY2tgLCBpdCBtYWludGFpbnMgcmVmZXJlbnRpYWwgZXF1YWxpdHkgYWNyb3NzIHJlbmRlcnNcbiAqIHdpdGhvdXQgcmVxdWlyaW5nIGEgZGVwZW5kZW5jeSBhcnJheSwgd2hpbGUgYWx3YXlzIGNhbGxpbmcgdGhlIGxhdGVzdFxuICogdmVyc2lvbiBvZiB0aGUgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIGZuIFRoZSBmdW5jdGlvbiB0byBtZW1vaXplXG4gKiBAcmV0dXJucyBBIG1lbW9pemVkIGZ1bmN0aW9uIHdpdGggc3RhYmxlIHJlZmVyZW5jZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VNZW1vaXplZEZuKGZuKSB7XG4gICAgY29uc3QgZm5SZWYgPSB1c2VSZWYoZm4pO1xuICAgIGZuUmVmLmN1cnJlbnQgPSB1c2VNZW1vKCgpID0+IGZuLCBbZm5dKTtcbiAgICBjb25zdCBtZW1vaXplZEZuID0gdXNlUmVmKHVuZGVmaW5lZCk7XG4gICAgaWYgKCFtZW1vaXplZEZuLmN1cnJlbnQpIHtcbiAgICAgICAgbWVtb2l6ZWRGbi5jdXJyZW50ID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiBmblJlZi5jdXJyZW50LmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbWVtb2l6ZWRGbi5jdXJyZW50O1xufSJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns the last distinct value observed before the current `value`.
|
|
3
|
+
*
|
|
4
|
+
* Because the internal effect depends on `[value]`, the ref is only updated
|
|
5
|
+
* when `value` changes. That means this hook tracks the previous value on
|
|
6
|
+
* value-change boundaries (not every render).
|
|
7
|
+
*
|
|
8
|
+
* @param value The value to track
|
|
9
|
+
* @returns The previous distinct value, or `undefined` until one exists
|
|
10
|
+
*/
|
|
11
|
+
export default function usePrevious<T>(value: T): T | undefined;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = usePrevious;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
/**
|
|
9
|
+
* Returns the last distinct value observed before the current `value`.
|
|
10
|
+
*
|
|
11
|
+
* Because the internal effect depends on `[value]`, the ref is only updated
|
|
12
|
+
* when `value` changes. That means this hook tracks the previous value on
|
|
13
|
+
* value-change boundaries (not every render).
|
|
14
|
+
*
|
|
15
|
+
* @param value The value to track
|
|
16
|
+
* @returns The previous distinct value, or `undefined` until one exists
|
|
17
|
+
*/
|
|
18
|
+
function usePrevious(value) {
|
|
19
|
+
var ref = (0, _react.useRef)(undefined);
|
|
20
|
+
(0, _react.useEffect)(function () {
|
|
21
|
+
ref.current = value;
|
|
22
|
+
}, [value]);
|
|
23
|
+
return ref.current;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvdXNlUHJldmlvdXMvaW5kZXgudHMiLCJjb21wb25lbnRzL3VzZVByZXZpb3VzL2luZGV4LmpzIl0sIm5hbWVzIjpbIl9yZWFjdCIsInJlcXVpcmUiLCJ1c2VQcmV2aW91cyIsInZhbHVlIiwicmVmIiwidXNlUmVmIiwidW5kZWZpbmVkIiwidXNlRWZmZWN0IiwiY3VycmVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBRUE7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QURFYyxTQUFVQyxXQUFXQSxDQUFJQyxLQUFRLEVBQUE7RUFDN0MsSUFBTUMsR0FBRyxHQUFHLElBQUFDLGFBQU0sRUFBZ0JDLFNBQVMsQ0FBQztFQUU1QyxJQUFBQyxnQkFBUyxFQUFDLFlBQUs7SUFDYkgsR0FBRyxDQUFDSSxPQUFPLEdBQUdMLEtBQUs7RUFDckIsQ0FBQyxFQUFFLENBQUNBLEtBQUssQ0FBQyxDQUFDO0VBRVgsT0FBT0MsR0FBRyxDQUFDSSxPQUFPO0FBQ3BCIiwiZmlsZSI6ImNvbXBvbmVudHMvdXNlUHJldmlvdXMvaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuLyoqXG4gKiBSZXR1cm5zIHRoZSBsYXN0IGRpc3RpbmN0IHZhbHVlIG9ic2VydmVkIGJlZm9yZSB0aGUgY3VycmVudCBgdmFsdWVgLlxuICpcbiAqIEJlY2F1c2UgdGhlIGludGVybmFsIGVmZmVjdCBkZXBlbmRzIG9uIGBbdmFsdWVdYCwgdGhlIHJlZiBpcyBvbmx5IHVwZGF0ZWRcbiAqIHdoZW4gYHZhbHVlYCBjaGFuZ2VzLiBUaGF0IG1lYW5zIHRoaXMgaG9vayB0cmFja3MgdGhlIHByZXZpb3VzIHZhbHVlIG9uXG4gKiB2YWx1ZS1jaGFuZ2UgYm91bmRhcmllcyAobm90IGV2ZXJ5IHJlbmRlcikuXG4gKlxuICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byB0cmFja1xuICogQHJldHVybnMgVGhlIHByZXZpb3VzIGRpc3RpbmN0IHZhbHVlLCBvciBgdW5kZWZpbmVkYCB1bnRpbCBvbmUgZXhpc3RzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZVByZXZpb3VzKHZhbHVlKSB7XG4gICAgY29uc3QgcmVmID0gdXNlUmVmKHVuZGVmaW5lZCk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgICB9LCBbdmFsdWVdKTtcbiAgICByZXR1cm4gcmVmLmN1cnJlbnQ7XG59Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type Dispatch, type SetStateAction } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* It is exactly the same as `React.useState`, but after the component is unmounted,
|
|
4
|
+
* the setState in the asynchronous callback will no longer be executed to avoid
|
|
5
|
+
* memory leakage caused by updating the state after the component is unmounted.
|
|
6
|
+
*
|
|
7
|
+
* @param initialState The initial state value or initializer function
|
|
8
|
+
* @returns A tuple of [state, setSafeState] similar to useState
|
|
9
|
+
*/
|
|
10
|
+
declare function useSafeState<S>(initialState: S | (() => S)): [S, Dispatch<SetStateAction<S>>];
|
|
11
|
+
declare function useSafeState<S = undefined>(): [S | undefined, Dispatch<SetStateAction<S | undefined>>];
|
|
12
|
+
export default useSafeState;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports["default"] = void 0;
|
|
8
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
|
+
var _react = require("react");
|
|
10
|
+
// eslint-disable-next-line no-redeclare
|
|
11
|
+
function useSafeState(initialState) {
|
|
12
|
+
var isMountedRef = (0, _react.useRef)(true);
|
|
13
|
+
var _useState = (0, _react.useState)(initialState),
|
|
14
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
15
|
+
state = _useState2[0],
|
|
16
|
+
setState = _useState2[1];
|
|
17
|
+
(0, _react.useEffect)(function () {
|
|
18
|
+
isMountedRef.current = true;
|
|
19
|
+
return function () {
|
|
20
|
+
isMountedRef.current = false;
|
|
21
|
+
};
|
|
22
|
+
}, []);
|
|
23
|
+
var setSafeState = (0, _react.useCallback)(function (value) {
|
|
24
|
+
if (isMountedRef.current) {
|
|
25
|
+
setState(value);
|
|
26
|
+
}
|
|
27
|
+
}, []);
|
|
28
|
+
return [state, setSafeState];
|
|
29
|
+
}
|
|
30
|
+
var _default = exports["default"] = useSafeState;
|
|
31
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvdXNlU2FmZVN0YXRlL2luZGV4LnRzIl0sIm5hbWVzIjpbIl9yZWFjdCIsInJlcXVpcmUiLCJ1c2VTYWZlU3RhdGUiLCJpbml0aWFsU3RhdGUiLCJpc01vdW50ZWRSZWYiLCJ1c2VSZWYiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJzdGF0ZSIsInNldFN0YXRlIiwidXNlRWZmZWN0IiwiY3VycmVudCIsInNldFNhZmVTdGF0ZSIsInVzZUNhbGxiYWNrIiwidmFsdWUiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBYUE7QUFDQSxTQUFTQyxZQUFZQSxDQUNuQkMsWUFBNEIsRUFBQTtFQUU1QixJQUFNQyxZQUFZLEdBQUcsSUFBQUMsYUFBTSxFQUFDLElBQUksQ0FBQztFQUNqQyxJQUFBQyxTQUFBLEdBQTBCLElBQUFDLGVBQVEsRUFBZ0JKLFlBQXlDLENBQUM7SUFBQUssVUFBQSxPQUFBQyxlQUFBLGFBQUFILFNBQUE7SUFBckZJLEtBQUssR0FBQUYsVUFBQTtJQUFFRyxRQUFRLEdBQUFILFVBQUE7RUFFdEIsSUFBQUksZ0JBQVMsRUFBQyxZQUFLO0lBQ2JSLFlBQVksQ0FBQ1MsT0FBTyxHQUFHLElBQUk7SUFDM0IsT0FBTyxZQUFLO01BQ1ZULFlBQVksQ0FBQ1MsT0FBTyxHQUFHLEtBQUs7SUFDOUIsQ0FBQztFQUNILENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixJQUFNQyxZQUFZLEdBQUcsSUFBQUMsa0JBQVcsRUFBMEMsVUFBQUMsS0FBSyxFQUFHO0lBQ2hGLElBQUlaLFlBQVksQ0FBQ1MsT0FBTyxFQUFFO01BQ3hCRixRQUFRLENBQUNLLEtBQUssQ0FBQztJQUNqQjtFQUNGLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixPQUFPLENBQUNOLEtBQUssRUFBRUksWUFBWSxDQUFDO0FBQzlCO0FBQUMsSUFBQUcsUUFBQSxHQUFBQyxPQUFBLGNBRWNoQixZQUFZIiwiZmlsZSI6ImNvbXBvbmVudHMvdXNlU2FmZVN0YXRlL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type SetStateAction } from 'react';
|
|
2
|
+
type GetState<T> = () => T;
|
|
3
|
+
type SetState<T> = (value: SetStateAction<T>) => void;
|
|
4
|
+
/**
|
|
5
|
+
* Same as `React.useState` but will always get the latest state.
|
|
6
|
+
* This is useful when React merges multiple state updates into one.
|
|
7
|
+
* e.g. `onTransitionEnd` triggers multiple events at once that will be merged
|
|
8
|
+
* into a single state update in React.
|
|
9
|
+
*
|
|
10
|
+
* @param initialState The initial state value or initializer function
|
|
11
|
+
* @returns A tuple of [getState, setState] where getState always returns the latest value
|
|
12
|
+
*/
|
|
13
|
+
export default function useSyncState<T>(initialState: T | (() => T)): [GetState<T>, SetState<T>];
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports["default"] = useSyncState;
|
|
8
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
|
+
var _react = require("react");
|
|
10
|
+
var _useEventCallback = _interopRequireDefault(require("../useEventCallback"));
|
|
11
|
+
/** Sentinel value distinguishing "not yet initialized" from any valid state, including `null`. */
|
|
12
|
+
var UNINITIALIZED = Symbol('useSyncState.uninitialized');
|
|
13
|
+
/**
|
|
14
|
+
* Same as `React.useState` but will always get the latest state.
|
|
15
|
+
* This is useful when React merges multiple state updates into one.
|
|
16
|
+
* e.g. `onTransitionEnd` triggers multiple events at once that will be merged
|
|
17
|
+
* into a single state update in React.
|
|
18
|
+
*
|
|
19
|
+
* @param initialState The initial state value or initializer function
|
|
20
|
+
* @returns A tuple of [getState, setState] where getState always returns the latest value
|
|
21
|
+
*/
|
|
22
|
+
function useSyncState(initialState) {
|
|
23
|
+
var stateRef = (0, _react.useRef)(UNINITIALIZED);
|
|
24
|
+
// Initialize ref on first render
|
|
25
|
+
if (stateRef.current === UNINITIALIZED) {
|
|
26
|
+
stateRef.current = typeof initialState === 'function' ? initialState() : initialState;
|
|
27
|
+
}
|
|
28
|
+
var _useState = (0, _react.useState)({}),
|
|
29
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
30
|
+
forceUpdate = _useState2[1];
|
|
31
|
+
var getState = (0, _useEventCallback["default"])(function () {
|
|
32
|
+
return stateRef.current;
|
|
33
|
+
});
|
|
34
|
+
var setState = (0, _useEventCallback["default"])(function (value) {
|
|
35
|
+
var prevState = stateRef.current;
|
|
36
|
+
var nextState = typeof value === 'function' ? value(prevState) : value;
|
|
37
|
+
if (!Object.is(prevState, nextState)) {
|
|
38
|
+
stateRef.current = nextState;
|
|
39
|
+
forceUpdate({});
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
return [getState, setState];
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvdXNlU3luY1N0YXRlL2luZGV4LnRzIiwiY29tcG9uZW50cy91c2VTeW5jU3RhdGUvaW5kZXguanMiXSwibmFtZXMiOlsiX3JlYWN0IiwicmVxdWlyZSIsIl91c2VFdmVudENhbGxiYWNrIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIlVOSU5JVElBTElaRUQiLCJTeW1ib2wiLCJ1c2VTeW5jU3RhdGUiLCJpbml0aWFsU3RhdGUiLCJzdGF0ZVJlZiIsInVzZVJlZiIsImN1cnJlbnQiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJmb3JjZVVwZGF0ZSIsImdldFN0YXRlIiwidXNlRXZlbnRDYWxsYmFjayIsInNldFN0YXRlIiwidmFsdWUiLCJwcmV2U3RhdGUiLCJuZXh0U3RhdGUiLCJPYmplY3QiLCJpcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBS0E7QUFDQSxJQUFNRyxhQUFhLEdBQUdDLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQztBQUUxRDtBQ0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QURNYyxTQUFVQyxZQUFZQSxDQUFJQyxZQUEyQixFQUFBO0VBQ2pFLElBQU1DLFFBQVEsR0FBRyxJQUFBQyxhQUFNLEVBQTJCTCxhQUFhLENBQUM7RUFFaEU7RUFDQSxJQUFJSSxRQUFRLENBQUNFLE9BQU8sS0FBS04sYUFBYSxFQUFFO0lBQ3RDSSxRQUFRLENBQUNFLE9BQU8sR0FDZCxPQUFPSCxZQUFZLEtBQUssVUFBVSxHQUFJQSxZQUF3QixDQUFBLENBQUUsR0FBR0EsWUFBWTtFQUNuRjtFQUVBLElBQUFJLFNBQUEsR0FBd0IsSUFBQUMsZUFBUSxFQUFDLENBQUEsQ0FBRSxDQUFDO0lBQUFDLFVBQUEsT0FBQUMsZUFBQSxhQUFBSCxTQUFBO0lBQTNCSSxXQUFXLEdBQUFGLFVBQUE7RUFFcEIsSUFBTUcsUUFBUSxHQUFHLElBQUFDLDRCQUFnQixFQUFRO0lBQUEsT0FBTVQsUUFBUSxDQUFDRSxPQUFZO0VBQUEsRUFBQztFQUVyRSxJQUFNUSxRQUFRLEdBQUcsSUFBQUQsNEJBQWdCLEVBQTRCLFVBQUFFLEtBQUssRUFBRztJQUNuRSxJQUFNQyxTQUFTLEdBQUdaLFFBQVEsQ0FBQ0UsT0FBWTtJQUN2QyxJQUFNVyxTQUFTLEdBQUcsT0FBT0YsS0FBSyxLQUFLLFVBQVUsR0FBSUEsS0FBd0IsQ0FBQ0MsU0FBUyxDQUFDLEdBQUdELEtBQUs7SUFFNUYsSUFBSSxDQUFDRyxNQUFNLENBQUNDLEVBQUUsQ0FBQ0gsU0FBUyxFQUFFQyxTQUFTLENBQUMsRUFBRTtNQUNwQ2IsUUFBUSxDQUFDRSxPQUFPLEdBQUdXLFNBQVM7TUFDNUJOLFdBQVcsQ0FBQyxDQUFBLENBQUUsQ0FBQztJQUNqQjtFQUNGLENBQUMsQ0FBQztFQUVGLE9BQU8sQ0FBQ0MsUUFBUSxFQUFFRSxRQUFRLENBQUM7QUFDN0IiLCJmaWxlIjoiY29tcG9uZW50cy91c2VTeW5jU3RhdGUvaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImltcG9ydCB7IHVzZVN0YXRlLCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICcuLi91c2VFdmVudENhbGxiYWNrJztcbi8qKiBTZW50aW5lbCB2YWx1ZSBkaXN0aW5ndWlzaGluZyBcIm5vdCB5ZXQgaW5pdGlhbGl6ZWRcIiBmcm9tIGFueSB2YWxpZCBzdGF0ZSwgaW5jbHVkaW5nIGBudWxsYC4gKi9cbmNvbnN0IFVOSU5JVElBTElaRUQgPSBTeW1ib2woJ3VzZVN5bmNTdGF0ZS51bmluaXRpYWxpemVkJyk7XG4vKipcbiAqIFNhbWUgYXMgYFJlYWN0LnVzZVN0YXRlYCBidXQgd2lsbCBhbHdheXMgZ2V0IHRoZSBsYXRlc3Qgc3RhdGUuXG4gKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIFJlYWN0IG1lcmdlcyBtdWx0aXBsZSBzdGF0ZSB1cGRhdGVzIGludG8gb25lLlxuICogZS5nLiBgb25UcmFuc2l0aW9uRW5kYCB0cmlnZ2VycyBtdWx0aXBsZSBldmVudHMgYXQgb25jZSB0aGF0IHdpbGwgYmUgbWVyZ2VkXG4gKiBpbnRvIGEgc2luZ2xlIHN0YXRlIHVwZGF0ZSBpbiBSZWFjdC5cbiAqXG4gKiBAcGFyYW0gaW5pdGlhbFN0YXRlIFRoZSBpbml0aWFsIHN0YXRlIHZhbHVlIG9yIGluaXRpYWxpemVyIGZ1bmN0aW9uXG4gKiBAcmV0dXJucyBBIHR1cGxlIG9mIFtnZXRTdGF0ZSwgc2V0U3RhdGVdIHdoZXJlIGdldFN0YXRlIGFsd2F5cyByZXR1cm5zIHRoZSBsYXRlc3QgdmFsdWVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlU3luY1N0YXRlKGluaXRpYWxTdGF0ZSkge1xuICAgIGNvbnN0IHN0YXRlUmVmID0gdXNlUmVmKFVOSU5JVElBTElaRUQpO1xuICAgIC8vIEluaXRpYWxpemUgcmVmIG9uIGZpcnN0IHJlbmRlclxuICAgIGlmIChzdGF0ZVJlZi5jdXJyZW50ID09PSBVTklOSVRJQUxJWkVEKSB7XG4gICAgICAgIHN0YXRlUmVmLmN1cnJlbnQgPVxuICAgICAgICAgICAgdHlwZW9mIGluaXRpYWxTdGF0ZSA9PT0gJ2Z1bmN0aW9uJyA/IGluaXRpYWxTdGF0ZSgpIDogaW5pdGlhbFN0YXRlO1xuICAgIH1cbiAgICBjb25zdCBbLCBmb3JjZVVwZGF0ZV0gPSB1c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgZ2V0U3RhdGUgPSB1c2VFdmVudENhbGxiYWNrKCgpID0+IHN0YXRlUmVmLmN1cnJlbnQpO1xuICAgIGNvbnN0IHNldFN0YXRlID0gdXNlRXZlbnRDYWxsYmFjayh2YWx1ZSA9PiB7XG4gICAgICAgIGNvbnN0IHByZXZTdGF0ZSA9IHN0YXRlUmVmLmN1cnJlbnQ7XG4gICAgICAgIGNvbnN0IG5leHRTdGF0ZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHZhbHVlKHByZXZTdGF0ZSkgOiB2YWx1ZTtcbiAgICAgICAgaWYgKCFPYmplY3QuaXMocHJldlN0YXRlLCBuZXh0U3RhdGUpKSB7XG4gICAgICAgICAgICBzdGF0ZVJlZi5jdXJyZW50ID0gbmV4dFN0YXRlO1xuICAgICAgICAgICAgZm9yY2VVcGRhdGUoe30pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIFtnZXRTdGF0ZSwgc2V0U3RhdGVdO1xufSJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type DependencyList, type EffectCallback } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* A hook identical to `useEffect`, but it skips the effect on the initial mount
|
|
4
|
+
* and only runs on subsequent updates.
|
|
5
|
+
*
|
|
6
|
+
* @param effect The effect callback to run on updates
|
|
7
|
+
* @param deps The dependency array
|
|
8
|
+
*/
|
|
9
|
+
export default function useUpdateEffect(effect: EffectCallback, deps?: DependencyList): void;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = useUpdateEffect;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
/**
|
|
9
|
+
* A hook identical to `useEffect`, but it skips the effect on the initial mount
|
|
10
|
+
* and only runs on subsequent updates.
|
|
11
|
+
*
|
|
12
|
+
* @param effect The effect callback to run on updates
|
|
13
|
+
* @param deps The dependency array
|
|
14
|
+
*/
|
|
15
|
+
function useUpdateEffect(effect, deps) {
|
|
16
|
+
var isMounted = (0, _react.useRef)(false);
|
|
17
|
+
(0, _react.useEffect)(function () {
|
|
18
|
+
if (!isMounted.current) {
|
|
19
|
+
isMounted.current = true;
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
return effect();
|
|
23
|
+
}, deps);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvdXNlVXBkYXRlRWZmZWN0L2luZGV4LnRzIiwiY29tcG9uZW50cy91c2VVcGRhdGVFZmZlY3QvaW5kZXguanMiXSwibmFtZXMiOlsiX3JlYWN0IiwicmVxdWlyZSIsInVzZVVwZGF0ZUVmZmVjdCIsImVmZmVjdCIsImRlcHMiLCJpc01vdW50ZWQiLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJjdXJyZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFFQTtBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBREVjLFNBQVVDLGVBQWVBLENBQUNDLE1BQXNCLEVBQUVDLElBQXFCLEVBQUE7RUFDbkYsSUFBTUMsU0FBUyxHQUFHLElBQUFDLGFBQU0sRUFBQyxLQUFLLENBQUM7RUFFL0IsSUFBQUMsZ0JBQVMsRUFBQyxZQUFLO0lBQ2IsSUFBSSxDQUFDRixTQUFTLENBQUNHLE9BQU8sRUFBRTtNQUN0QkgsU0FBUyxDQUFDRyxPQUFPLEdBQUcsSUFBSTtNQUN4QjtJQUNGO0lBQ0EsT0FBT0wsTUFBTSxDQUFBLENBQUU7RUFDakIsQ0FBQyxFQUFFQyxJQUFJLENBQUM7QUFDViIsImZpbGUiOiJjb21wb25lbnRzL3VzZVVwZGF0ZUVmZmVjdC9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG4vKipcbiAqIEEgaG9vayBpZGVudGljYWwgdG8gYHVzZUVmZmVjdGAsIGJ1dCBpdCBza2lwcyB0aGUgZWZmZWN0IG9uIHRoZSBpbml0aWFsIG1vdW50XG4gKiBhbmQgb25seSBydW5zIG9uIHN1YnNlcXVlbnQgdXBkYXRlcy5cbiAqXG4gKiBAcGFyYW0gZWZmZWN0IFRoZSBlZmZlY3QgY2FsbGJhY2sgdG8gcnVuIG9uIHVwZGF0ZXNcbiAqIEBwYXJhbSBkZXBzIFRoZSBkZXBlbmRlbmN5IGFycmF5XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZVVwZGF0ZUVmZmVjdChlZmZlY3QsIGRlcHMpIHtcbiAgICBjb25zdCBpc01vdW50ZWQgPSB1c2VSZWYoZmFsc2UpO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghaXNNb3VudGVkLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGlzTW91bnRlZC5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZWZmZWN0KCk7XG4gICAgfSwgZGVwcyk7XG59Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|