@1money/react-ui 1.15.3 → 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/Flex/Flex.d.ts +5 -0
- package/es/components/Flex/Flex.js +50 -0
- package/es/components/Flex/constants.d.ts +41 -0
- package/es/components/Flex/constants.js +45 -0
- package/es/components/Flex/index.d.ts +5 -0
- package/es/components/Flex/index.js +6 -0
- package/es/components/Flex/interface.d.ts +13 -0
- package/es/components/Flex/interface.js +2 -0
- package/es/components/Flex/style/Flex.css +1 -0
- package/es/components/Flex/style/Flex.scss +70 -0
- package/es/components/Flex/style/css.js +2 -0
- package/es/components/Flex/style/index.d.ts +1 -0
- package/es/components/Flex/style/index.js +2 -0
- 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/Grid/Col.d.ts +5 -0
- package/es/components/Grid/Col.js +97 -0
- package/es/components/Grid/Grid.d.ts +12 -0
- package/es/components/Grid/Grid.js +12 -0
- package/es/components/Grid/Row.d.ts +5 -0
- package/es/components/Grid/Row.js +48 -0
- package/es/components/Grid/constants.d.ts +55 -0
- package/es/components/Grid/constants.js +66 -0
- package/es/components/Grid/helper.d.ts +10 -0
- package/es/components/Grid/helper.js +44 -0
- package/es/components/Grid/index.d.ts +7 -0
- package/es/components/Grid/index.js +8 -0
- package/es/components/Grid/interface.d.ts +38 -0
- package/es/components/Grid/interface.js +2 -0
- package/es/components/Grid/style/Grid.css +1 -0
- package/es/components/Grid/style/Grid.scss +196 -0
- package/es/components/Grid/style/css.js +2 -0
- package/es/components/Grid/style/index.d.ts +1 -0
- package/es/components/Grid/style/index.js +2 -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/InputAmount/style/normal.css +1 -1
- package/es/components/InputAmount/style/normal.scss +2 -2
- package/es/components/InputAmount/style/primary.css +1 -1
- package/es/components/InputAmount/style/primary.scss +2 -2
- package/es/components/Message/style/Message.css +1 -1
- package/es/components/Message/style/Message.scss +3 -3
- 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/Sidebar.css +1 -1
- package/es/components/Sidebar/style/Sidebar.scss +1 -1
- package/es/components/Sidebar/style/SimplySidebar.css +1 -1
- package/es/components/Sidebar/style/SimplySidebar.scss +1 -1
- package/es/components/Sidebar/style/Stepper.css +1 -1
- package/es/components/Sidebar/style/Stepper.scss +11 -1
- package/es/components/Space/Space.d.ts +5 -0
- package/es/components/Space/Space.js +71 -0
- package/es/components/Space/constants.d.ts +33 -0
- package/es/components/Space/constants.js +37 -0
- package/es/components/Space/index.d.ts +5 -0
- package/es/components/Space/index.js +6 -0
- package/es/components/Space/interface.d.ts +12 -0
- package/es/components/Space/interface.js +2 -0
- package/es/components/Space/style/Space.css +1 -0
- package/es/components/Space/style/Space.scss +40 -0
- package/es/components/Space/style/css.js +2 -0
- package/es/components/Space/style/index.d.ts +1 -0
- package/es/components/Space/style/index.js +2 -0
- 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 +32 -2
- package/es/index.js +30 -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/Flex/Flex.d.ts +5 -0
- package/lib/components/Flex/Flex.js +60 -0
- package/lib/components/Flex/constants.d.ts +41 -0
- package/lib/components/Flex/constants.js +51 -0
- package/lib/components/Flex/index.d.ts +5 -0
- package/lib/components/Flex/index.js +60 -0
- package/lib/components/Flex/interface.d.ts +13 -0
- package/lib/components/Flex/interface.js +6 -0
- package/lib/components/Flex/style/Flex.css +1 -0
- package/lib/components/Flex/style/Flex.scss +70 -0
- package/lib/components/Flex/style/css.js +4 -0
- package/lib/components/Flex/style/index.d.ts +1 -0
- package/lib/components/Flex/style/index.js +4 -0
- 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/Grid/Col.d.ts +5 -0
- package/lib/components/Grid/Col.js +107 -0
- package/lib/components/Grid/Grid.d.ts +12 -0
- package/lib/components/Grid/Grid.js +18 -0
- package/lib/components/Grid/Row.d.ts +5 -0
- package/lib/components/Grid/Row.js +58 -0
- package/lib/components/Grid/constants.d.ts +55 -0
- package/lib/components/Grid/constants.js +72 -0
- package/lib/components/Grid/helper.d.ts +10 -0
- package/lib/components/Grid/helper.js +51 -0
- package/lib/components/Grid/index.d.ts +7 -0
- package/lib/components/Grid/index.js +62 -0
- package/lib/components/Grid/interface.d.ts +38 -0
- package/lib/components/Grid/interface.js +6 -0
- package/lib/components/Grid/style/Grid.css +1 -0
- package/lib/components/Grid/style/Grid.scss +196 -0
- package/lib/components/Grid/style/css.js +4 -0
- package/lib/components/Grid/style/index.d.ts +1 -0
- package/lib/components/Grid/style/index.js +4 -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/InputAmount/style/normal.css +1 -1
- package/lib/components/InputAmount/style/normal.scss +2 -2
- package/lib/components/InputAmount/style/primary.css +1 -1
- package/lib/components/InputAmount/style/primary.scss +2 -2
- package/lib/components/Message/style/Message.css +1 -1
- package/lib/components/Message/style/Message.scss +3 -3
- 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/Sidebar.css +1 -1
- package/lib/components/Sidebar/style/Sidebar.scss +1 -1
- package/lib/components/Sidebar/style/SimplySidebar.css +1 -1
- package/lib/components/Sidebar/style/SimplySidebar.scss +1 -1
- package/lib/components/Sidebar/style/Stepper.css +1 -1
- package/lib/components/Sidebar/style/Stepper.scss +11 -1
- package/lib/components/Space/Space.d.ts +5 -0
- package/lib/components/Space/Space.js +81 -0
- package/lib/components/Space/constants.d.ts +33 -0
- package/lib/components/Space/constants.js +43 -0
- package/lib/components/Space/index.d.ts +5 -0
- package/lib/components/Space/index.js +53 -0
- package/lib/components/Space/interface.d.ts +12 -0
- package/lib/components/Space/interface.js +6 -0
- package/lib/components/Space/style/Space.css +1 -0
- package/lib/components/Space/style/Space.scss +40 -0
- package/lib/components/Space/style/css.js +4 -0
- package/lib/components/Space/style/index.d.ts +1 -0
- package/lib/components/Space/style/index.js +4 -0
- 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 +32 -2
- package/lib/index.js +251 -1
- package/package.json +31 -1
|
@@ -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==
|