@homecode/ui 5.1.9 → 5.1.10
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/dist/esm/index.js +109 -2
- package/dist/esm/node_modules/style-inject/dist/style-inject.es.js +28 -2
- package/dist/esm/src/components/AssistiveText/AssistiveText.js +10 -2
- package/dist/esm/src/components/AssistiveText/AssistiveText.styl.js +7 -2
- package/dist/esm/src/components/Autocomplete/Autocomplete.js +429 -2
- package/dist/esm/src/components/Autocomplete/Autocomplete.styl.js +7 -2
- package/dist/esm/src/components/Button/Button.helpers.js +12 -2
- package/dist/esm/src/components/Button/Button.js +38 -2
- package/dist/esm/src/components/Button/Button.styl.js +7 -2
- package/dist/esm/src/components/ButtonGroup/ButtonGroup.js +10 -2
- package/dist/esm/src/components/ButtonGroup/ButtonGroup.styl.js +7 -2
- package/dist/esm/src/components/Calendar/Calendar.helpers.js +65 -2
- package/dist/esm/src/components/Calendar/Calendar.js +136 -2
- package/dist/esm/src/components/Calendar/Calendar.styl.js +7 -2
- package/dist/esm/src/components/Card/Card.js +55 -2
- package/dist/esm/src/components/Card/Card.styl.js +7 -2
- package/dist/esm/src/components/Checkbox/Checkbox.js +19 -2
- package/dist/esm/src/components/Checkbox/Checkbox.styl.js +7 -2
- package/dist/esm/src/components/Chip/Chip.js +16 -2
- package/dist/esm/src/components/Chip/Chip.styl.js +7 -2
- package/dist/esm/src/components/Container/Container.js +13 -2
- package/dist/esm/src/components/Container/Container.styl.js +7 -2
- package/dist/esm/src/components/DatePicker/DatePicker.helpers.js +33 -2
- package/dist/esm/src/components/DatePicker/DatePicker.js +47 -2
- package/dist/esm/src/components/DatePicker/DatePicker.styl.js +7 -2
- package/dist/esm/src/components/DatePickerInput/DatePickerInput.js +44 -2
- package/dist/esm/src/components/DatePickerInput/DatePickerInput.styl.js +7 -2
- package/dist/esm/src/components/DateTime/DateTime.js +17 -2
- package/dist/esm/src/components/Dialogue/Dialogue.js +107 -2
- package/dist/esm/src/components/Dialogue/Dialogue.styl.js +7 -2
- package/dist/esm/src/components/Draggable/Draggable.js +147 -2
- package/dist/esm/src/components/Draggable/Draggable.styl.js +7 -2
- package/dist/esm/src/components/DropZone/DropZone.js +112 -2
- package/dist/esm/src/components/DropZone/DropZone.styl.js +7 -2
- package/dist/esm/src/components/Expand/Expand.js +24 -2
- package/dist/esm/src/components/Expand/Expand.styl.js +7 -2
- package/dist/esm/src/components/Flex/Flex.js +24 -2
- package/dist/esm/src/components/Flex/Flex.styl.js +7 -2
- package/dist/esm/src/components/Form/Form.helpers.js +42 -2
- package/dist/esm/src/components/Form/Form.js +272 -2
- package/dist/esm/src/components/Form/Form.styl.js +7 -2
- package/dist/esm/src/components/Form/Form.types.js +0 -1
- package/dist/esm/src/components/Form/SubmitButtons/SubmitButtons.js +8 -2
- package/dist/esm/src/components/Form/SubmitButtons/SubmitButtons.styl.js +7 -2
- package/dist/esm/src/components/Form/Validator.js +24 -6
- package/dist/esm/src/components/Gallery/Dots/Dots.js +9 -2
- package/dist/esm/src/components/Gallery/Dots/Dots.styl.js +7 -2
- package/dist/esm/src/components/Gallery/Gallery.js +222 -2
- package/dist/esm/src/components/Gallery/Gallery.styl.js +7 -2
- package/dist/esm/src/components/Heading/Heading.js +37 -2
- package/dist/esm/src/components/Heading/Heading.styl.js +7 -2
- package/dist/esm/src/components/Icon/Icon.js +21 -2
- package/dist/esm/src/components/Icon/Icon.styl.js +7 -2
- package/dist/esm/src/components/Icon/icons/apple.svg.js +16 -2
- package/dist/esm/src/components/Icon/icons/arrowDown.svg.js +17 -2
- package/dist/esm/src/components/Icon/icons/arrowLeft.svg.js +17 -2
- package/dist/esm/src/components/Icon/icons/arrowRight.svg.js +17 -2
- package/dist/esm/src/components/Icon/icons/arrowUp.svg.js +17 -2
- package/dist/esm/src/components/Icon/icons/attach.svg.js +19 -2
- package/dist/esm/src/components/Icon/icons/avatar.svg.js +15 -2
- package/dist/esm/src/components/Icon/icons/bookmark.svg.js +17 -2
- package/dist/esm/src/components/Icon/icons/bookmarkAdd.svg.js +17 -2
- package/dist/esm/src/components/Icon/icons/brain.svg.js +22 -2
- package/dist/esm/src/components/Icon/icons/brokenImage.svg.js +15 -2
- package/dist/esm/src/components/Icon/icons/call.svg.js +17 -2
- package/dist/esm/src/components/Icon/icons/camera.svg.js +17 -2
- package/dist/esm/src/components/Icon/icons/chat.svg.js +17 -2
- package/dist/esm/src/components/Icon/icons/check.svg.js +19 -2
- package/dist/esm/src/components/Icon/icons/checkers.svg.js +18 -2
- package/dist/esm/src/components/Icon/icons/chevronDown.svg.js +20 -2
- package/dist/esm/src/components/Icon/icons/chevronLeft.svg.js +20 -2
- package/dist/esm/src/components/Icon/icons/chevronRight.svg.js +20 -2
- package/dist/esm/src/components/Icon/icons/chevronUp.svg.js +20 -2
- package/dist/esm/src/components/Icon/icons/clearAll.svg.js +17 -2
- package/dist/esm/src/components/Icon/icons/close.svg.js +15 -2
- package/dist/esm/src/components/Icon/icons/colors.svg.js +60 -2
- package/dist/esm/src/components/Icon/icons/compass.svg.js +56 -2
- package/dist/esm/src/components/Icon/icons/copy.svg.js +15 -2
- package/dist/esm/src/components/Icon/icons/cubes.svg.js +17 -2
- package/dist/esm/src/components/Icon/icons/delete.svg.js +15 -2
- package/dist/esm/src/components/Icon/icons/discord.svg.js +17 -2
- package/dist/esm/src/components/Icon/icons/draft.svg.js +15 -2
- package/dist/esm/src/components/Icon/icons/dragHandlerHorizontal.svg.js +15 -2
- package/dist/esm/src/components/Icon/icons/dragHandlerVertical.svg.js +15 -2
- package/dist/esm/src/components/Icon/icons/edit.svg.js +15 -2
- package/dist/esm/src/components/Icon/icons/email.svg.js +15 -2
- package/dist/esm/src/components/Icon/icons/externalLink.svg.js +15 -2
- package/dist/esm/src/components/Icon/icons/eye.svg.js +15 -2
- package/dist/esm/src/components/Icon/icons/flyover.svg.js +17 -2
- package/dist/esm/src/components/Icon/icons/folder.svg.js +17 -2
- package/dist/esm/src/components/Icon/icons/folderOpen.svg.js +17 -2
- package/dist/esm/src/components/Icon/icons/forward.svg.js +17 -2
- package/dist/esm/src/components/Icon/icons/fullscreen.svg.js +15 -2
- package/dist/esm/src/components/Icon/icons/fullscreenExit.svg.js +15 -2
- package/dist/esm/src/components/Icon/icons/function.svg.js +15 -2
- package/dist/esm/src/components/Icon/icons/gear.svg.js +21 -2
- package/dist/esm/src/components/Icon/icons/geolocation.svg.js +17 -2
- package/dist/esm/src/components/Icon/icons/github.svg.js +18 -2
- package/dist/esm/src/components/Icon/icons/globe.svg.js +17 -2
- package/dist/esm/src/components/Icon/icons/google.svg.js +42 -2
- package/dist/esm/src/components/Icon/icons/group.svg.js +15 -2
- package/dist/esm/src/components/Icon/icons/history.svg.js +17 -2
- package/dist/esm/src/components/Icon/icons/home.svg.js +19 -2
- package/dist/esm/src/components/Icon/icons/image.svg.js +17 -2
- package/dist/esm/src/components/Icon/icons/index.js +95 -2
- package/dist/esm/src/components/Icon/icons/instagram.svg.js +15 -2
- package/dist/esm/src/components/Icon/icons/layers.svg.js +17 -2
- package/dist/esm/src/components/Icon/icons/link.svg.js +15 -2
- package/dist/esm/src/components/Icon/icons/linkedin.svg.js +20 -2
- package/dist/esm/src/components/Icon/icons/loader.svg.js +45 -2
- package/dist/esm/src/components/Icon/icons/lock.svg.js +19 -2
- package/dist/esm/src/components/Icon/icons/lockOpen.svg.js +19 -2
- package/dist/esm/src/components/Icon/icons/map.svg.js +17 -2
- package/dist/esm/src/components/Icon/icons/menu.svg.js +18 -2
- package/dist/esm/src/components/Icon/icons/mic.svg.js +15 -2
- package/dist/esm/src/components/Icon/icons/micMuted.svg.js +27 -2
- package/dist/esm/src/components/Icon/icons/minus.svg.js +15 -2
- package/dist/esm/src/components/Icon/icons/moreHorizontal.svg.js +15 -2
- package/dist/esm/src/components/Icon/icons/moreVertical.svg.js +15 -2
- package/dist/esm/src/components/Icon/icons/output.svg.js +15 -2
- package/dist/esm/src/components/Icon/icons/pause.svg.js +15 -2
- package/dist/esm/src/components/Icon/icons/play.svg.js +20 -2
- package/dist/esm/src/components/Icon/icons/plus.svg.js +15 -2
- package/dist/esm/src/components/Icon/icons/redo.svg.js +15 -2
- package/dist/esm/src/components/Icon/icons/requiredStar.svg.js +15 -2
- package/dist/esm/src/components/Icon/icons/rewind.svg.js +17 -2
- package/dist/esm/src/components/Icon/icons/rocket.svg.js +22 -2
- package/dist/esm/src/components/Icon/icons/route.svg.js +17 -2
- package/dist/esm/src/components/Icon/icons/routeFrom.svg.js +31 -2
- package/dist/esm/src/components/Icon/icons/routeTo.svg.js +31 -2
- package/dist/esm/src/components/Icon/icons/save.svg.js +17 -2
- package/dist/esm/src/components/Icon/icons/search.svg.js +17 -2
- package/dist/esm/src/components/Icon/icons/send.svg.js +16 -2
- package/dist/esm/src/components/Icon/icons/settings.svg.js +52 -2
- package/dist/esm/src/components/Icon/icons/shoppingBag.svg.js +17 -2
- package/dist/esm/src/components/Icon/icons/smile.svg.js +30 -2
- package/dist/esm/src/components/Icon/icons/soundWave.svg.js +66 -2
- package/dist/esm/src/components/Icon/icons/sparks.svg.js +21 -2
- package/dist/esm/src/components/Icon/icons/star.svg.js +18 -2
- package/dist/esm/src/components/Icon/icons/stop.svg.js +22 -2
- package/dist/esm/src/components/Icon/icons/stopInCircle.svg.js +17 -2
- package/dist/esm/src/components/Icon/icons/syncArrows.svg.js +22 -2
- package/dist/esm/src/components/Icon/icons/table.svg.js +15 -2
- package/dist/esm/src/components/Icon/icons/telegram.svg.js +19 -2
- package/dist/esm/src/components/Icon/icons/tool.svg.js +17 -2
- package/dist/esm/src/components/Icon/icons/trafficLight.svg.js +49 -2
- package/dist/esm/src/components/Icon/icons/undo.svg.js +15 -2
- package/dist/esm/src/components/Icon/icons/usage.svg.js +25 -2
- package/dist/esm/src/components/Icon/icons/youtube.svg.js +20 -2
- package/dist/esm/src/components/Input/Input.js +281 -2
- package/dist/esm/src/components/Input/Input.styl.js +7 -2
- package/dist/esm/src/components/InputFile/InputFile.js +314 -2
- package/dist/esm/src/components/InputFile/InputFile.styl.js +7 -2
- package/dist/esm/src/components/InputFile/InputFile.types.js +0 -1
- package/dist/esm/src/components/InputFile/Item/Item.js +18 -2
- package/dist/esm/src/components/InputFile/Item/Item.styl.js +7 -2
- package/dist/esm/src/components/Label/Label.constants.json.js +8 -2
- package/dist/esm/src/components/Label/Label.helpers.js +35 -2
- package/dist/esm/src/components/Label/Label.js +58 -2
- package/dist/esm/src/components/Label/Label.styl.js +7 -2
- package/dist/esm/src/components/LangSelector/LangSelector.js +10 -2
- package/dist/esm/src/components/Lazy/Lazy.js +74 -2
- package/dist/esm/src/components/LightBox/LightBox.js +28 -2
- package/dist/esm/src/components/LightBox/LightBox.styl.js +7 -2
- package/dist/esm/src/components/Menu/Menu.js +27 -2
- package/dist/esm/src/components/Menu/Menu.styl.js +7 -2
- package/dist/esm/src/components/Notifications/Notifications.constants.json.js +6 -2
- package/dist/esm/src/components/Notifications/Notifications.js +67 -2
- package/dist/esm/src/components/Notifications/Notifications.styl.js +7 -2
- package/dist/esm/src/components/Notifications/store.js +72 -2
- package/dist/esm/src/components/Paranja/Paranja.js +14 -2
- package/dist/esm/src/components/Paranja/Paranja.styl.js +7 -2
- package/dist/esm/src/components/Popup/Popup.helpers.js +130 -2
- package/dist/esm/src/components/Popup/Popup.js +484 -2
- package/dist/esm/src/components/Popup/Popup.styl.js +7 -2
- package/dist/esm/src/components/PopupMenu/PopupMenu.js +15 -2
- package/dist/esm/src/components/PopupMenu/PopupMenu.styl.js +7 -2
- package/dist/esm/src/components/Portal/Portal.js +33 -2
- package/dist/esm/src/components/Progress/Progress.helpers.js +5 -2
- package/dist/esm/src/components/Progress/Progress.js +12 -2
- package/dist/esm/src/components/Progress/Progress.styl.js +7 -2
- package/dist/esm/src/components/ProgressCircular/ProgressCircular.js +23 -2
- package/dist/esm/src/components/ProgressCircular/ProgressCircular.styl.js +7 -2
- package/dist/esm/src/components/RadioButton/RadioButton.js +33 -2
- package/dist/esm/src/components/RadioButton/RadioButton.styl.js +7 -2
- package/dist/esm/src/components/RadioGroup/RadioGroup.js +31 -2
- package/dist/esm/src/components/RadioGroup/RadioGroup.styl.js +7 -2
- package/dist/esm/src/components/RadioGroup/RadioGroupContext.js +8 -2
- package/dist/esm/src/components/RequiredStar/RequiredStar.js +12 -2
- package/dist/esm/src/components/RequiredStar/RequiredStar.styl.js +7 -2
- package/dist/esm/src/components/Router/Link/Link.js +62 -2
- package/dist/esm/src/components/Router/Link/Link.styl.js +7 -2
- package/dist/esm/src/components/Router/Redirect.js +12 -2
- package/dist/esm/src/components/Router/Route.js +6 -2
- package/dist/esm/src/components/Router/Router.helpers.js +33 -2
- package/dist/esm/src/components/Router/Router.js +72 -2
- package/dist/esm/src/components/Router/context.js +5 -2
- package/dist/esm/src/components/Router/store.js +75 -2
- package/dist/esm/src/components/Scroll/Scroll.js +308 -2
- package/dist/esm/src/components/Scroll/Scroll.styl.js +7 -2
- package/dist/esm/src/components/Select/Select.helpers.js +37 -2
- package/dist/esm/src/components/Select/Select.js +601 -2
- package/dist/esm/src/components/Select/Select.styl.js +7 -2
- package/dist/esm/src/components/Select/Select2.js +334 -2
- package/dist/esm/src/components/Shimmer/Shimmer.js +7 -2
- package/dist/esm/src/components/Shimmer/Shimmer.styl.js +7 -2
- package/dist/esm/src/components/Spinner/Spinner.js +11 -2
- package/dist/esm/src/components/Spinner/Spinner.styl.js +7 -2
- package/dist/esm/src/components/Spinner/spinner.svg.js +24 -2
- package/dist/esm/src/components/Table/Table.js +24 -2
- package/dist/esm/src/components/Table/Table.styl.js +7 -2
- package/dist/esm/src/components/Tabs/Tabs.js +48 -2
- package/dist/esm/src/components/Tabs/Tabs.styl.js +7 -2
- package/dist/esm/src/components/Text/Text.js +44 -2
- package/dist/esm/src/components/Text/Text.styl.js +7 -2
- package/dist/esm/src/components/TextShimmer/TextShimmer.js +29 -0
- package/dist/esm/src/components/TextShimmer/TextShimmer.styl.js +7 -0
- package/dist/esm/src/components/Theme/Theme.defaults.js +53 -2
- package/dist/esm/src/components/Theme/Theme.helpers.js +67 -2
- package/dist/esm/src/components/Theme/Theme.js +15 -2
- package/dist/esm/src/components/Theme/ThemeProvider.js +50 -2
- package/dist/esm/src/components/Toggle/Toggle.js +18 -2
- package/dist/esm/src/components/Toggle/Toggle.styl.js +7 -2
- package/dist/esm/src/components/Tooltip/Tooltip.js +86 -2
- package/dist/esm/src/components/Tooltip/Tooltip.styl.js +7 -2
- package/dist/esm/src/components/VH/VH.js +33 -2
- package/dist/esm/src/components/Virtualized/List/List.js +136 -2
- package/dist/esm/src/components/Virtualized/List/List.styl.js +7 -2
- package/dist/esm/src/components/Virtualized/List/ListScroll.js +22 -2
- package/dist/esm/src/components/Virtualized/List/ListScroll.styl.js +7 -2
- package/dist/esm/src/components/Virtualized/Virtualized.helpers.js +14 -2
- package/dist/esm/src/components/Virtualized/Virtualized.js +218 -2
- package/dist/esm/src/components/Virtualized/Virtualized.styl.js +7 -2
- package/dist/esm/src/components/Virtualized/Virtualized.types.js +0 -1
- package/dist/esm/src/hooks/useDebounce.js +11 -2
- package/dist/esm/src/hooks/useEvent.js +27 -2
- package/dist/esm/src/hooks/useIsMounted.js +11 -2
- package/dist/esm/src/hooks/useListKeyboardControl.js +50 -2
- package/dist/esm/src/hooks/useResizeObserver.js +15 -2
- package/dist/esm/src/hooks/useThrottle.js +31 -2
- package/dist/esm/src/hooks/useToggleState.js +35 -2
- package/dist/esm/src/services/i18n.js +112 -2
- package/dist/esm/src/tools/array.js +60 -2
- package/dist/esm/src/tools/config.js +9 -2
- package/dist/esm/src/tools/date.js +11 -2
- package/dist/esm/src/tools/debounce.js +11 -2
- package/dist/esm/src/tools/dom.js +57 -2
- package/dist/esm/src/tools/env.js +3 -2
- package/dist/esm/src/tools/file.js +11 -2
- package/dist/esm/src/tools/localStorage.js +31 -2
- package/dist/esm/src/tools/number.js +27 -2
- package/dist/esm/src/tools/object.js +5 -2
- package/dist/esm/src/tools/queryParams.js +40 -2
- package/dist/esm/src/tools/rangeMap.js +3 -2
- package/dist/esm/src/tools/resizeObserver.js +68 -2
- package/dist/esm/src/tools/scroll.js +41 -2
- package/dist/esm/src/tools/string.js +7 -2
- package/dist/esm/src/tools/throttle.js +30 -2
- package/dist/esm/src/tools/uid.js +7 -2
- package/dist/esm/types/src/components/Notifications/Notifications.types.d.ts +4 -2
- package/dist/esm/types/src/components/TextShimmer/TextShimmer.d.ts +5 -0
- package/dist/esm/types/src/components/TextShimmer/TextShimmer.types.d.ts +9 -0
- package/dist/esm/types/src/components/TextShimmer/index.d.ts +2 -0
- package/dist/esm/types/src/components/index.d.ts +1 -0
- package/package.json +1 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/node_modules/style-inject/dist/style-inject.es.js.map +0 -1
- package/dist/esm/src/components/AssistiveText/AssistiveText.js.map +0 -1
- package/dist/esm/src/components/AssistiveText/AssistiveText.styl.js.map +0 -1
- package/dist/esm/src/components/Autocomplete/Autocomplete.js.map +0 -1
- package/dist/esm/src/components/Autocomplete/Autocomplete.styl.js.map +0 -1
- package/dist/esm/src/components/Button/Button.helpers.js.map +0 -1
- package/dist/esm/src/components/Button/Button.js.map +0 -1
- package/dist/esm/src/components/Button/Button.styl.js.map +0 -1
- package/dist/esm/src/components/ButtonGroup/ButtonGroup.js.map +0 -1
- package/dist/esm/src/components/ButtonGroup/ButtonGroup.styl.js.map +0 -1
- package/dist/esm/src/components/Calendar/Calendar.helpers.js.map +0 -1
- package/dist/esm/src/components/Calendar/Calendar.js.map +0 -1
- package/dist/esm/src/components/Calendar/Calendar.styl.js.map +0 -1
- package/dist/esm/src/components/Card/Card.js.map +0 -1
- package/dist/esm/src/components/Card/Card.styl.js.map +0 -1
- package/dist/esm/src/components/Checkbox/Checkbox.js.map +0 -1
- package/dist/esm/src/components/Checkbox/Checkbox.styl.js.map +0 -1
- package/dist/esm/src/components/Chip/Chip.js.map +0 -1
- package/dist/esm/src/components/Chip/Chip.styl.js.map +0 -1
- package/dist/esm/src/components/Container/Container.js.map +0 -1
- package/dist/esm/src/components/Container/Container.styl.js.map +0 -1
- package/dist/esm/src/components/DatePicker/DatePicker.helpers.js.map +0 -1
- package/dist/esm/src/components/DatePicker/DatePicker.js.map +0 -1
- package/dist/esm/src/components/DatePicker/DatePicker.styl.js.map +0 -1
- package/dist/esm/src/components/DatePickerInput/DatePickerInput.js.map +0 -1
- package/dist/esm/src/components/DatePickerInput/DatePickerInput.styl.js.map +0 -1
- package/dist/esm/src/components/DateTime/DateTime.js.map +0 -1
- package/dist/esm/src/components/Dialogue/Dialogue.js.map +0 -1
- package/dist/esm/src/components/Dialogue/Dialogue.styl.js.map +0 -1
- package/dist/esm/src/components/Draggable/Draggable.js.map +0 -1
- package/dist/esm/src/components/Draggable/Draggable.styl.js.map +0 -1
- package/dist/esm/src/components/DropZone/DropZone.js.map +0 -1
- package/dist/esm/src/components/DropZone/DropZone.styl.js.map +0 -1
- package/dist/esm/src/components/Expand/Expand.js.map +0 -1
- package/dist/esm/src/components/Expand/Expand.styl.js.map +0 -1
- package/dist/esm/src/components/Flex/Flex.js.map +0 -1
- package/dist/esm/src/components/Flex/Flex.styl.js.map +0 -1
- package/dist/esm/src/components/Form/Form.helpers.js.map +0 -1
- package/dist/esm/src/components/Form/Form.js.map +0 -1
- package/dist/esm/src/components/Form/Form.styl.js.map +0 -1
- package/dist/esm/src/components/Form/Form.types.js.map +0 -1
- package/dist/esm/src/components/Form/SubmitButtons/SubmitButtons.js.map +0 -1
- package/dist/esm/src/components/Form/SubmitButtons/SubmitButtons.styl.js.map +0 -1
- package/dist/esm/src/components/Form/Validator.js.map +0 -1
- package/dist/esm/src/components/Gallery/Dots/Dots.js.map +0 -1
- package/dist/esm/src/components/Gallery/Dots/Dots.styl.js.map +0 -1
- package/dist/esm/src/components/Gallery/Gallery.js.map +0 -1
- package/dist/esm/src/components/Gallery/Gallery.styl.js.map +0 -1
- package/dist/esm/src/components/Heading/Heading.js.map +0 -1
- package/dist/esm/src/components/Heading/Heading.styl.js.map +0 -1
- package/dist/esm/src/components/Icon/Icon.js.map +0 -1
- package/dist/esm/src/components/Icon/Icon.styl.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/apple.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/arrowDown.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/arrowLeft.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/arrowRight.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/arrowUp.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/attach.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/avatar.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/bookmark.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/bookmarkAdd.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/brain.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/brokenImage.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/call.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/camera.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/chat.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/check.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/checkers.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/chevronDown.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/chevronLeft.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/chevronRight.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/chevronUp.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/clearAll.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/close.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/colors.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/compass.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/copy.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/cubes.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/delete.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/discord.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/draft.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/dragHandlerHorizontal.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/dragHandlerVertical.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/edit.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/email.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/externalLink.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/eye.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/flyover.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/folder.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/folderOpen.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/forward.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/fullscreen.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/fullscreenExit.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/function.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/gear.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/geolocation.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/github.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/globe.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/google.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/group.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/history.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/home.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/image.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/index.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/instagram.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/layers.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/link.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/linkedin.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/loader.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/lock.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/lockOpen.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/map.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/menu.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/mic.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/micMuted.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/minus.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/moreHorizontal.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/moreVertical.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/output.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/pause.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/play.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/plus.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/redo.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/requiredStar.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/rewind.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/rocket.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/route.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/routeFrom.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/routeTo.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/save.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/search.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/send.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/settings.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/shoppingBag.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/smile.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/soundWave.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/sparks.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/star.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/stop.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/stopInCircle.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/syncArrows.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/table.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/telegram.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/tool.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/trafficLight.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/undo.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/usage.svg.js.map +0 -1
- package/dist/esm/src/components/Icon/icons/youtube.svg.js.map +0 -1
- package/dist/esm/src/components/Input/Input.js.map +0 -1
- package/dist/esm/src/components/Input/Input.styl.js.map +0 -1
- package/dist/esm/src/components/InputFile/InputFile.js.map +0 -1
- package/dist/esm/src/components/InputFile/InputFile.styl.js.map +0 -1
- package/dist/esm/src/components/InputFile/InputFile.types.js.map +0 -1
- package/dist/esm/src/components/InputFile/Item/Item.js.map +0 -1
- package/dist/esm/src/components/InputFile/Item/Item.styl.js.map +0 -1
- package/dist/esm/src/components/Label/Label.constants.json.js.map +0 -1
- package/dist/esm/src/components/Label/Label.helpers.js.map +0 -1
- package/dist/esm/src/components/Label/Label.js.map +0 -1
- package/dist/esm/src/components/Label/Label.styl.js.map +0 -1
- package/dist/esm/src/components/LangSelector/LangSelector.js.map +0 -1
- package/dist/esm/src/components/Lazy/Lazy.js.map +0 -1
- package/dist/esm/src/components/LightBox/LightBox.js.map +0 -1
- package/dist/esm/src/components/LightBox/LightBox.styl.js.map +0 -1
- package/dist/esm/src/components/Menu/Menu.js.map +0 -1
- package/dist/esm/src/components/Menu/Menu.styl.js.map +0 -1
- package/dist/esm/src/components/Notifications/Notifications.constants.json.js.map +0 -1
- package/dist/esm/src/components/Notifications/Notifications.js.map +0 -1
- package/dist/esm/src/components/Notifications/Notifications.styl.js.map +0 -1
- package/dist/esm/src/components/Notifications/store.js.map +0 -1
- package/dist/esm/src/components/Paranja/Paranja.js.map +0 -1
- package/dist/esm/src/components/Paranja/Paranja.styl.js.map +0 -1
- package/dist/esm/src/components/Popup/Popup.helpers.js.map +0 -1
- package/dist/esm/src/components/Popup/Popup.js.map +0 -1
- package/dist/esm/src/components/Popup/Popup.styl.js.map +0 -1
- package/dist/esm/src/components/PopupMenu/PopupMenu.js.map +0 -1
- package/dist/esm/src/components/PopupMenu/PopupMenu.styl.js.map +0 -1
- package/dist/esm/src/components/Portal/Portal.js.map +0 -1
- package/dist/esm/src/components/Progress/Progress.helpers.js.map +0 -1
- package/dist/esm/src/components/Progress/Progress.js.map +0 -1
- package/dist/esm/src/components/Progress/Progress.styl.js.map +0 -1
- package/dist/esm/src/components/ProgressCircular/ProgressCircular.js.map +0 -1
- package/dist/esm/src/components/ProgressCircular/ProgressCircular.styl.js.map +0 -1
- package/dist/esm/src/components/RadioButton/RadioButton.js.map +0 -1
- package/dist/esm/src/components/RadioButton/RadioButton.styl.js.map +0 -1
- package/dist/esm/src/components/RadioGroup/RadioGroup.js.map +0 -1
- package/dist/esm/src/components/RadioGroup/RadioGroup.styl.js.map +0 -1
- package/dist/esm/src/components/RadioGroup/RadioGroupContext.js.map +0 -1
- package/dist/esm/src/components/RequiredStar/RequiredStar.js.map +0 -1
- package/dist/esm/src/components/RequiredStar/RequiredStar.styl.js.map +0 -1
- package/dist/esm/src/components/Router/Link/Link.js.map +0 -1
- package/dist/esm/src/components/Router/Link/Link.styl.js.map +0 -1
- package/dist/esm/src/components/Router/Redirect.js.map +0 -1
- package/dist/esm/src/components/Router/Route.js.map +0 -1
- package/dist/esm/src/components/Router/Router.helpers.js.map +0 -1
- package/dist/esm/src/components/Router/Router.js.map +0 -1
- package/dist/esm/src/components/Router/context.js.map +0 -1
- package/dist/esm/src/components/Router/store.js.map +0 -1
- package/dist/esm/src/components/Scroll/Scroll.js.map +0 -1
- package/dist/esm/src/components/Scroll/Scroll.styl.js.map +0 -1
- package/dist/esm/src/components/Select/Select.helpers.js.map +0 -1
- package/dist/esm/src/components/Select/Select.js.map +0 -1
- package/dist/esm/src/components/Select/Select.styl.js.map +0 -1
- package/dist/esm/src/components/Select/Select2.js.map +0 -1
- package/dist/esm/src/components/Shimmer/Shimmer.js.map +0 -1
- package/dist/esm/src/components/Shimmer/Shimmer.styl.js.map +0 -1
- package/dist/esm/src/components/Spinner/Spinner.js.map +0 -1
- package/dist/esm/src/components/Spinner/Spinner.styl.js.map +0 -1
- package/dist/esm/src/components/Spinner/spinner.svg.js.map +0 -1
- package/dist/esm/src/components/Table/Table.js.map +0 -1
- package/dist/esm/src/components/Table/Table.styl.js.map +0 -1
- package/dist/esm/src/components/Tabs/Tabs.js.map +0 -1
- package/dist/esm/src/components/Tabs/Tabs.styl.js.map +0 -1
- package/dist/esm/src/components/Text/Text.js.map +0 -1
- package/dist/esm/src/components/Text/Text.styl.js.map +0 -1
- package/dist/esm/src/components/Theme/Theme.defaults.js.map +0 -1
- package/dist/esm/src/components/Theme/Theme.helpers.js.map +0 -1
- package/dist/esm/src/components/Theme/Theme.js.map +0 -1
- package/dist/esm/src/components/Theme/ThemeProvider.js.map +0 -1
- package/dist/esm/src/components/Toggle/Toggle.js.map +0 -1
- package/dist/esm/src/components/Toggle/Toggle.styl.js.map +0 -1
- package/dist/esm/src/components/Tooltip/Tooltip.js.map +0 -1
- package/dist/esm/src/components/Tooltip/Tooltip.styl.js.map +0 -1
- package/dist/esm/src/components/VH/VH.js.map +0 -1
- package/dist/esm/src/components/Virtualized/List/List.js.map +0 -1
- package/dist/esm/src/components/Virtualized/List/List.styl.js.map +0 -1
- package/dist/esm/src/components/Virtualized/List/ListScroll.js.map +0 -1
- package/dist/esm/src/components/Virtualized/List/ListScroll.styl.js.map +0 -1
- package/dist/esm/src/components/Virtualized/Virtualized.helpers.js.map +0 -1
- package/dist/esm/src/components/Virtualized/Virtualized.js.map +0 -1
- package/dist/esm/src/components/Virtualized/Virtualized.styl.js.map +0 -1
- package/dist/esm/src/components/Virtualized/Virtualized.types.js.map +0 -1
- package/dist/esm/src/hooks/useDebounce.js.map +0 -1
- package/dist/esm/src/hooks/useEvent.js.map +0 -1
- package/dist/esm/src/hooks/useIsMounted.js.map +0 -1
- package/dist/esm/src/hooks/useListKeyboardControl.js.map +0 -1
- package/dist/esm/src/hooks/useResizeObserver.js.map +0 -1
- package/dist/esm/src/hooks/useThrottle.js.map +0 -1
- package/dist/esm/src/hooks/useToggleState.js.map +0 -1
- package/dist/esm/src/services/i18n.js.map +0 -1
- package/dist/esm/src/tools/array.js.map +0 -1
- package/dist/esm/src/tools/config.js.map +0 -1
- package/dist/esm/src/tools/date.js.map +0 -1
- package/dist/esm/src/tools/debounce.js.map +0 -1
- package/dist/esm/src/tools/dom.js.map +0 -1
- package/dist/esm/src/tools/env.js.map +0 -1
- package/dist/esm/src/tools/file.js.map +0 -1
- package/dist/esm/src/tools/localStorage.js.map +0 -1
- package/dist/esm/src/tools/number.js.map +0 -1
- package/dist/esm/src/tools/object.js.map +0 -1
- package/dist/esm/src/tools/queryParams.js.map +0 -1
- package/dist/esm/src/tools/rangeMap.js.map +0 -1
- package/dist/esm/src/tools/resizeObserver.js.map +0 -1
- package/dist/esm/src/tools/scroll.js.map +0 -1
- package/dist/esm/src/tools/string.js.map +0 -1
- package/dist/esm/src/tools/throttle.js.map +0 -1
- package/dist/esm/src/tools/uid.js.map +0 -1
|
@@ -1,2 +1,218 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import { Component } from 'react';
|
|
2
|
+
import cn from 'classnames';
|
|
3
|
+
import pick from 'lodash.pick';
|
|
4
|
+
import compare from 'compareq';
|
|
5
|
+
import Time from 'timen';
|
|
6
|
+
import debounce from '../../tools/debounce.js';
|
|
7
|
+
import throttle from '../../tools/throttle.js';
|
|
8
|
+
import { getHeight, getIndexes } from './Virtualized.helpers.js';
|
|
9
|
+
import S from './Virtualized.styl.js';
|
|
10
|
+
|
|
11
|
+
class Virtualized extends Component {
|
|
12
|
+
clearUnfreezeTimer;
|
|
13
|
+
scrollTopInited = false;
|
|
14
|
+
scrollElem;
|
|
15
|
+
lastScrollEndIndex = 0;
|
|
16
|
+
onScrollThrottled;
|
|
17
|
+
onScrollDebounced;
|
|
18
|
+
static defaultProps = {
|
|
19
|
+
overlapCount: 10,
|
|
20
|
+
pageSize: 20,
|
|
21
|
+
};
|
|
22
|
+
constructor(props) {
|
|
23
|
+
super(props);
|
|
24
|
+
this.state = {
|
|
25
|
+
id: null,
|
|
26
|
+
height: getHeight(props),
|
|
27
|
+
first: 0,
|
|
28
|
+
last: 0,
|
|
29
|
+
isFreezed: false,
|
|
30
|
+
};
|
|
31
|
+
this.onScrollThrottled = throttle(this._onScroll, 150);
|
|
32
|
+
this.onScrollDebounced = debounce(this._onScroll, 150);
|
|
33
|
+
this.checkIfEnd = debounce(this.checkIfEnd, 200);
|
|
34
|
+
}
|
|
35
|
+
static getDerivedStateFromProps(props, { height }) {
|
|
36
|
+
const newHeight = getHeight(props);
|
|
37
|
+
if (newHeight !== height)
|
|
38
|
+
return { height: newHeight };
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
componentDidMount() {
|
|
42
|
+
const indexes = this.getIndexes();
|
|
43
|
+
this.setState(indexes); // eslint-disable-line
|
|
44
|
+
// });
|
|
45
|
+
// document.addEventListener('scroll', this.onScroll, true);
|
|
46
|
+
}
|
|
47
|
+
getSnapshotBeforeUpdate(prevProps) {
|
|
48
|
+
const { itemHeight, itemsCount } = this.props;
|
|
49
|
+
if (itemsCount === 0 && itemsCount !== prevProps.itemsCount)
|
|
50
|
+
return 0;
|
|
51
|
+
if (this.scrollElem) {
|
|
52
|
+
if (itemHeight !== prevProps.itemHeight)
|
|
53
|
+
return (itemHeight / prevProps.itemHeight) * this.scrollElem.scrollTop;
|
|
54
|
+
}
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
shouldComponentUpdate(nextProps, nextState) {
|
|
58
|
+
if (nextProps.id !== this.props.id)
|
|
59
|
+
return true;
|
|
60
|
+
if (nextProps.itemsCount !== this.props.itemsCount)
|
|
61
|
+
return true;
|
|
62
|
+
if (nextProps.wrapElem !== this.props.wrapElem)
|
|
63
|
+
return true;
|
|
64
|
+
if (nextProps.renderItem !== this.props.renderItem)
|
|
65
|
+
return true;
|
|
66
|
+
if (nextProps.totalCount !== this.props.totalCount)
|
|
67
|
+
return true;
|
|
68
|
+
if (nextProps.itemHeight !== this.props.itemHeight)
|
|
69
|
+
return true;
|
|
70
|
+
if (nextProps.overlapCount !== this.props.overlapCount)
|
|
71
|
+
return true;
|
|
72
|
+
if (nextProps.getItemProps !== this.props.getItemProps)
|
|
73
|
+
return true;
|
|
74
|
+
if (!compare(nextState, this.state))
|
|
75
|
+
return true;
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
componentDidUpdate(prevProps, prevState, snapshot) {
|
|
79
|
+
const state = {};
|
|
80
|
+
const scrollElemUpdated = this.scrollElem !== this.props.wrapElem;
|
|
81
|
+
if (scrollElemUpdated)
|
|
82
|
+
this.scrollElem = this.props.wrapElem;
|
|
83
|
+
if (this.scrollElem) {
|
|
84
|
+
const newScrollTop = this.getNewScrollTop(prevProps, snapshot);
|
|
85
|
+
if (typeof newScrollTop === 'number')
|
|
86
|
+
this.scrollElem.scrollTop = newScrollTop;
|
|
87
|
+
}
|
|
88
|
+
if (prevProps.id !== this.props.id)
|
|
89
|
+
state.id = this.props.id;
|
|
90
|
+
if (scrollElemUpdated || this.needUpdateIndexes(prevProps))
|
|
91
|
+
Object.assign(state, this.getIndexes());
|
|
92
|
+
if (this.needUpdateHeight(prevProps))
|
|
93
|
+
state.height = getHeight(this.props);
|
|
94
|
+
if (Object.keys(state).length)
|
|
95
|
+
this.setState(state);
|
|
96
|
+
}
|
|
97
|
+
componentWillUnmount() {
|
|
98
|
+
this.clearUnfreezeTimer?.();
|
|
99
|
+
}
|
|
100
|
+
needUpdateIndexes(prevProps) {
|
|
101
|
+
// const { wrapElem } = this.props;
|
|
102
|
+
// if (!prevProps.wrapElem && wrapElem) return true;
|
|
103
|
+
return ['id', 'itemsCount', 'totalCount', 'overlapCount'].some(key => prevProps[key] !== this.props[key]);
|
|
104
|
+
}
|
|
105
|
+
needUpdateHeight(prevProps) {
|
|
106
|
+
return ['totalCount', 'offsetAfter'].some(key => prevProps[key] !== this.props[key]);
|
|
107
|
+
}
|
|
108
|
+
getNewScrollTop(prevProps, snapshot) {
|
|
109
|
+
const { initialScrollTop, scrollTop, itemsCount } = this.props;
|
|
110
|
+
if (!this.scrollTopInited) {
|
|
111
|
+
const scrollValue = initialScrollTop ?? scrollTop;
|
|
112
|
+
if (scrollValue && prevProps.itemsCount && itemsCount) {
|
|
113
|
+
this.scrollTopInited = true;
|
|
114
|
+
return scrollValue;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (prevProps.initialScrollTop > 0 && initialScrollTop === 0)
|
|
118
|
+
return 0;
|
|
119
|
+
if (typeof scrollTop === 'number' && scrollTop !== prevProps.scrollTop)
|
|
120
|
+
return scrollTop;
|
|
121
|
+
if (typeof snapshot === 'number')
|
|
122
|
+
return snapshot;
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
getIndexes() {
|
|
126
|
+
// const { wrapElem } = this.props;
|
|
127
|
+
if (!this.scrollElem)
|
|
128
|
+
return null;
|
|
129
|
+
const { scrollTop, clientHeight } = this.scrollElem;
|
|
130
|
+
return getIndexes({
|
|
131
|
+
scrollTop,
|
|
132
|
+
clientHeight,
|
|
133
|
+
...pick(this.props, [
|
|
134
|
+
'itemsCount',
|
|
135
|
+
'totalCount',
|
|
136
|
+
'itemHeight',
|
|
137
|
+
'overlapCount',
|
|
138
|
+
]),
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
_onScroll = e => {
|
|
142
|
+
this.scrollElem = e.target;
|
|
143
|
+
const { onScroll } = this.props;
|
|
144
|
+
const indexes = this.getIndexes();
|
|
145
|
+
const { scrollTop } = this.scrollElem;
|
|
146
|
+
if (onScroll)
|
|
147
|
+
onScroll({ scrollTop, ...indexes });
|
|
148
|
+
this.checkIfEnd();
|
|
149
|
+
if (!compare(indexes, pick(this.state, ['first', 'last'])))
|
|
150
|
+
this.setState({ ...indexes });
|
|
151
|
+
this.unfreeze();
|
|
152
|
+
};
|
|
153
|
+
onScroll = (e) => {
|
|
154
|
+
this.onScrollThrottled(e);
|
|
155
|
+
this.onScrollDebounced(e);
|
|
156
|
+
};
|
|
157
|
+
checkIfEnd = () => {
|
|
158
|
+
const { itemsCount, totalCount, pageSize, onScrollEnd } = this.props;
|
|
159
|
+
if (itemsCount === totalCount)
|
|
160
|
+
return;
|
|
161
|
+
if (itemsCount < this.lastScrollEndIndex) {
|
|
162
|
+
this.lastScrollEndIndex = 0; // Reset when list shrinks (e.g. filter cleared)
|
|
163
|
+
}
|
|
164
|
+
this.lastScrollEndIndex = Math.min(itemsCount + pageSize, totalCount);
|
|
165
|
+
onScrollEnd?.();
|
|
166
|
+
};
|
|
167
|
+
unfreeze = () => {
|
|
168
|
+
this.clearUnfreezeTimer?.();
|
|
169
|
+
this.clearUnfreezeTimer = Time.after(200, () => {
|
|
170
|
+
this.setState({ isFreezed: false });
|
|
171
|
+
});
|
|
172
|
+
};
|
|
173
|
+
getItemProps = (index) => {
|
|
174
|
+
const { getItemProps, offsetBefore, offsetAfter } = this.props;
|
|
175
|
+
const props = {
|
|
176
|
+
className: S.item,
|
|
177
|
+
key: index,
|
|
178
|
+
};
|
|
179
|
+
if (getItemProps) {
|
|
180
|
+
const { className, ...rest } = getItemProps({
|
|
181
|
+
index,
|
|
182
|
+
offsetBefore,
|
|
183
|
+
offsetAfter,
|
|
184
|
+
});
|
|
185
|
+
props.className = cn(props.className, className);
|
|
186
|
+
Object.assign(props, rest);
|
|
187
|
+
}
|
|
188
|
+
return props;
|
|
189
|
+
};
|
|
190
|
+
renderItems() {
|
|
191
|
+
const { itemsCount, renderItem } = this.props;
|
|
192
|
+
const { first, last } = this.state;
|
|
193
|
+
const items = [];
|
|
194
|
+
if (itemsCount > 0) {
|
|
195
|
+
for (let i = first; i <= last; i++) {
|
|
196
|
+
items.push(renderItem(this.getItemProps(i)));
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
return items;
|
|
200
|
+
}
|
|
201
|
+
render() {
|
|
202
|
+
const { children, className, pageSize, ...rest } = this.props;
|
|
203
|
+
const { isFreezed } = this.state;
|
|
204
|
+
const state = {
|
|
205
|
+
...pick(this.state, ['first', 'last', 'height']),
|
|
206
|
+
...pick(this.props, ['offsetBefore', 'offsetAfter']),
|
|
207
|
+
};
|
|
208
|
+
return children({
|
|
209
|
+
...rest,
|
|
210
|
+
state,
|
|
211
|
+
className: cn(S.root, isFreezed && S.freezeClicks, className),
|
|
212
|
+
onScroll: this.onScroll,
|
|
213
|
+
items: this.renderItems(),
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
export { Virtualized as default };
|
|
@@ -1,2 +1,7 @@
|
|
|
1
|
-
import styleInject from
|
|
2
|
-
|
|
1
|
+
import styleInject from '../../../node_modules/style-inject/dist/style-inject.es.js';
|
|
2
|
+
|
|
3
|
+
var css_248z = ".Virtualized_root__SX71a{display:block;height:100%;max-height:100%;overflow-y:auto;position:relative}.Virtualized_item__1vSN0{animation:Virtualized_show__2WhkK .1s ease-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;transform:translateZ(0)}.Virtualized_freezeClicks__SCBdy .Virtualized_item__1vSN0{pointer-events:none}@keyframes Virtualized_show__2WhkK{0%{opacity:0}to{opacity:1}}";
|
|
4
|
+
var S = {"root":"Virtualized_root__SX71a","item":"Virtualized_item__1vSN0","show":"Virtualized_show__2WhkK","freezeClicks":"Virtualized_freezeClicks__SCBdy"};
|
|
5
|
+
styleInject(css_248z);
|
|
6
|
+
|
|
7
|
+
export { S as default };
|
|
@@ -1,2 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import { useCallback } from 'react';
|
|
2
|
+
import debounce from '../tools/debounce.js';
|
|
3
|
+
|
|
4
|
+
function useDebounce(fn, delay) {
|
|
5
|
+
return useCallback(debounce(fn, delay), [fn, delay]);
|
|
6
|
+
}
|
|
7
|
+
function useDebounceCallback(fn, delay, deps) {
|
|
8
|
+
return useCallback(debounce(fn, delay), deps);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { useDebounce, useDebounceCallback };
|
|
@@ -1,2 +1,27 @@
|
|
|
1
|
-
import{
|
|
2
|
-
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
|
|
3
|
+
function useEvent({ elem, event, callback, isActive = true, isCapture = false, }) {
|
|
4
|
+
useEffect(() => {
|
|
5
|
+
const events = Array.isArray(event) ? event : [event];
|
|
6
|
+
const elems = elem ? (Array.isArray(elem) ? elem : [elem]) : [document];
|
|
7
|
+
const getElem = (el) => el && ('current' in el ? el.current : el);
|
|
8
|
+
const each = (cb) => {
|
|
9
|
+
events.forEach(ev => {
|
|
10
|
+
elems.forEach(el => cb(getElem(el), ev));
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
const enable = () => {
|
|
14
|
+
each((el, ev) => el?.addEventListener(ev, callback, isCapture));
|
|
15
|
+
};
|
|
16
|
+
const disable = () => {
|
|
17
|
+
each((el, ev) => el?.removeEventListener(ev, callback));
|
|
18
|
+
};
|
|
19
|
+
if (isActive)
|
|
20
|
+
enable();
|
|
21
|
+
return () => {
|
|
22
|
+
disable();
|
|
23
|
+
};
|
|
24
|
+
}, [isActive, elem, callback]);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export { useEvent as default };
|
|
@@ -1,2 +1,11 @@
|
|
|
1
|
-
import{useRef,useEffect}from
|
|
2
|
-
|
|
1
|
+
import { useRef, useEffect } from 'react';
|
|
2
|
+
|
|
3
|
+
const useIsMounted = () => {
|
|
4
|
+
const isMounted = useRef(false);
|
|
5
|
+
useEffect(() => {
|
|
6
|
+
isMounted.current = true;
|
|
7
|
+
}, []);
|
|
8
|
+
return isMounted;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export { useIsMounted };
|
|
@@ -1,2 +1,50 @@
|
|
|
1
|
-
import{useState,useCallback,useEffect}
|
|
2
|
-
|
|
1
|
+
import { useState, useCallback, useEffect } from 'react';
|
|
2
|
+
import useEvent from './useEvent.js';
|
|
3
|
+
|
|
4
|
+
const useListKeyboardControl = ({ isActive, itemsCount, onSelect, }) => {
|
|
5
|
+
const [focusedIndex, setFocusedIndex] = useState(-1);
|
|
6
|
+
const handleKeyDown = useCallback((e) => {
|
|
7
|
+
let newIndex = focusedIndex;
|
|
8
|
+
const set = (index) => {
|
|
9
|
+
e.preventDefault();
|
|
10
|
+
e.stopPropagation();
|
|
11
|
+
setFocusedIndex(index);
|
|
12
|
+
return;
|
|
13
|
+
};
|
|
14
|
+
if (e.key === 'ArrowDown') {
|
|
15
|
+
newIndex++;
|
|
16
|
+
if (newIndex >= itemsCount)
|
|
17
|
+
newIndex = 0;
|
|
18
|
+
set(newIndex);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
if (e.key === 'ArrowUp') {
|
|
22
|
+
newIndex--;
|
|
23
|
+
if (newIndex < 0)
|
|
24
|
+
newIndex = itemsCount - 1;
|
|
25
|
+
set(newIndex);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
if (e.key === 'Enter') {
|
|
29
|
+
onSelect(newIndex);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
}, [focusedIndex, itemsCount, onSelect]);
|
|
33
|
+
useEvent({
|
|
34
|
+
elem: document,
|
|
35
|
+
event: 'keydown',
|
|
36
|
+
callback: handleKeyDown,
|
|
37
|
+
isActive,
|
|
38
|
+
});
|
|
39
|
+
useEffect(() => {
|
|
40
|
+
if (itemsCount < focusedIndex) {
|
|
41
|
+
setFocusedIndex(itemsCount - 1);
|
|
42
|
+
}
|
|
43
|
+
}, [itemsCount]);
|
|
44
|
+
return {
|
|
45
|
+
focusedIndex,
|
|
46
|
+
setFocusedIndex,
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
export { useListKeyboardControl };
|
|
@@ -1,2 +1,15 @@
|
|
|
1
|
-
import{
|
|
2
|
-
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
|
|
3
|
+
const useResizeObserver = (ref, callback) => {
|
|
4
|
+
useEffect(() => {
|
|
5
|
+
if (!ref.current)
|
|
6
|
+
return;
|
|
7
|
+
const observer = new ResizeObserver(entries => {
|
|
8
|
+
callback(entries[0]);
|
|
9
|
+
});
|
|
10
|
+
observer.observe(ref.current);
|
|
11
|
+
return () => observer.disconnect();
|
|
12
|
+
}, [ref, callback]);
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export { useResizeObserver };
|
|
@@ -1,2 +1,31 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import { useRef, useEffect, useCallback } from 'react';
|
|
2
|
+
|
|
3
|
+
function useThrottle(cb, limit, options = { trailing: false }, deps = []) {
|
|
4
|
+
const lastRun = useRef(0);
|
|
5
|
+
const timeoutId = useRef(null);
|
|
6
|
+
useEffect(() => {
|
|
7
|
+
return () => {
|
|
8
|
+
clearTimeout(timeoutId.current);
|
|
9
|
+
};
|
|
10
|
+
}, deps);
|
|
11
|
+
return useCallback((...args) => {
|
|
12
|
+
const now = Date.now();
|
|
13
|
+
const execute = () => {
|
|
14
|
+
cb(...args);
|
|
15
|
+
lastRun.current = now;
|
|
16
|
+
};
|
|
17
|
+
const remaining = limit - (now - lastRun.current);
|
|
18
|
+
if (remaining <= 0) {
|
|
19
|
+
clearTimeout(timeoutId.current);
|
|
20
|
+
execute();
|
|
21
|
+
}
|
|
22
|
+
else if (options.trailing && !timeoutId.current) {
|
|
23
|
+
timeoutId.current = setTimeout(execute, remaining);
|
|
24
|
+
}
|
|
25
|
+
}, [limit, options.trailing, ...deps]);
|
|
26
|
+
}
|
|
27
|
+
function useThrottleCallback(cb, limit, deps = []) {
|
|
28
|
+
return useCallback(useThrottle(cb, limit, { trailing: true }, deps), deps);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export { useThrottle, useThrottleCallback };
|
|
@@ -1,2 +1,35 @@
|
|
|
1
|
-
import{useState,useCallback}from
|
|
2
|
-
|
|
1
|
+
import { useState, useCallback } from 'react';
|
|
2
|
+
import { generateUID } from '../tools/uid.js';
|
|
3
|
+
|
|
4
|
+
function useToggleState(props = {}) {
|
|
5
|
+
const id = props.id || generateUID();
|
|
6
|
+
const [isActive, setIsActive] = useState(false);
|
|
7
|
+
const [isFocused, setIsFocused] = useState(false);
|
|
8
|
+
const onPointerDown = useCallback(() => {
|
|
9
|
+
setIsActive(true);
|
|
10
|
+
}, []);
|
|
11
|
+
const onPointerUp = useCallback(() => {
|
|
12
|
+
setIsActive(false);
|
|
13
|
+
}, []);
|
|
14
|
+
const onFocus = useCallback((e) => {
|
|
15
|
+
setIsFocused(true);
|
|
16
|
+
props.onFocus?.(e);
|
|
17
|
+
}, [props.onFocus]);
|
|
18
|
+
const onBlur = useCallback((e) => {
|
|
19
|
+
setIsFocused(false);
|
|
20
|
+
props.onBlur?.(e);
|
|
21
|
+
}, [props.onBlur]);
|
|
22
|
+
return {
|
|
23
|
+
id,
|
|
24
|
+
isActive,
|
|
25
|
+
isFocused,
|
|
26
|
+
handlers: {
|
|
27
|
+
onPointerDown,
|
|
28
|
+
onPointerUp,
|
|
29
|
+
onFocus,
|
|
30
|
+
onBlur,
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export { useToggleState };
|
|
@@ -1,2 +1,112 @@
|
|
|
1
|
-
import{jsx,Fragment}from
|
|
2
|
-
|
|
1
|
+
import { jsx, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import { memo } from 'react';
|
|
3
|
+
import { nanoid } from 'nanoid';
|
|
4
|
+
import { createStore, useStore } from 'justorm/react';
|
|
5
|
+
import _i18n from 'roddeh-i18n';
|
|
6
|
+
import LS from '../tools/localStorage.js';
|
|
7
|
+
import { queryParams } from '../tools/queryParams.js';
|
|
8
|
+
|
|
9
|
+
const DEFAULT_LANG = 'en';
|
|
10
|
+
const modules = {};
|
|
11
|
+
const queryLang = queryParams.lang;
|
|
12
|
+
if (queryLang)
|
|
13
|
+
LS.set('lang', queryLang);
|
|
14
|
+
const store = createStore('i18n', {
|
|
15
|
+
lang: LS.get('lang') ?? DEFAULT_LANG,
|
|
16
|
+
async changeLang(lang) {
|
|
17
|
+
// TODO: use WebWorker for requests?
|
|
18
|
+
const requests = modules[lang].map(loader => loader());
|
|
19
|
+
await Promise.all(requests);
|
|
20
|
+
modules[lang] = [];
|
|
21
|
+
this.lang = lang;
|
|
22
|
+
LS.set('lang', lang);
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
function init(config) {
|
|
26
|
+
const langs = Object.keys(config);
|
|
27
|
+
const texts = langs.reduce((acc, lang) => ({ ...acc, [lang]: _i18n.create({ values: {} }) }), {});
|
|
28
|
+
const _getText = (lang, key, props) => {
|
|
29
|
+
if (texts[lang]?.translator.data.values[key]) {
|
|
30
|
+
return texts[lang](key, ...props);
|
|
31
|
+
}
|
|
32
|
+
return null;
|
|
33
|
+
};
|
|
34
|
+
function getTrans(key, props) {
|
|
35
|
+
// Handle different prop formats according to roddeh-i18n
|
|
36
|
+
if (!props) {
|
|
37
|
+
return _getText(store.lang, key, []) || key;
|
|
38
|
+
}
|
|
39
|
+
// If props is a number, it's for pluralization
|
|
40
|
+
if (typeof props === 'number') {
|
|
41
|
+
return _getText(store.lang, key, [props]) || key;
|
|
42
|
+
}
|
|
43
|
+
// If props is an object, handle different cases
|
|
44
|
+
if (typeof props === 'object') {
|
|
45
|
+
const args = [];
|
|
46
|
+
// For plural forms with parameters
|
|
47
|
+
if ('plural' in props) {
|
|
48
|
+
args.push(props.plural);
|
|
49
|
+
}
|
|
50
|
+
// For parameters/formatting
|
|
51
|
+
if ('params' in props) {
|
|
52
|
+
args.push(props.params);
|
|
53
|
+
}
|
|
54
|
+
else if ('plural' in props && 'params' in props) ;
|
|
55
|
+
else if (!('plural' in props) && !('context' in props)) {
|
|
56
|
+
// If it's just a plain object without our special keys, treat it as params
|
|
57
|
+
args.push(props);
|
|
58
|
+
}
|
|
59
|
+
// Context comes last
|
|
60
|
+
if ('context' in props) {
|
|
61
|
+
// If we don't have params but have context, add empty params
|
|
62
|
+
if (!('params' in props) && !('plural' in props)) {
|
|
63
|
+
args.push({});
|
|
64
|
+
}
|
|
65
|
+
args.push(props.context);
|
|
66
|
+
}
|
|
67
|
+
return _getText(store.lang, key, args) || key;
|
|
68
|
+
}
|
|
69
|
+
// For backward compatibility with array format
|
|
70
|
+
if (Array.isArray(props)) {
|
|
71
|
+
return _getText(store.lang, key, props) || key;
|
|
72
|
+
}
|
|
73
|
+
return key;
|
|
74
|
+
}
|
|
75
|
+
const storeName = `i18n-${nanoid()}`;
|
|
76
|
+
const componentStore = createStore(storeName, { _updated: '' });
|
|
77
|
+
const callLoader = async (loader, lang) => {
|
|
78
|
+
const values = typeof loader === 'function' ? (await loader()).default : loader;
|
|
79
|
+
texts[lang].translator.add({ values });
|
|
80
|
+
componentStore._updated = nanoid();
|
|
81
|
+
};
|
|
82
|
+
Object.entries(config).forEach(([lang, loader]) => {
|
|
83
|
+
if (!modules[lang])
|
|
84
|
+
modules[lang] = [];
|
|
85
|
+
if (lang === store.lang)
|
|
86
|
+
return callLoader(loader, lang);
|
|
87
|
+
modules[lang].push(() => callLoader(loader, lang));
|
|
88
|
+
});
|
|
89
|
+
// TODO: bring back the ability to register modules
|
|
90
|
+
return {
|
|
91
|
+
storeName,
|
|
92
|
+
componentStore,
|
|
93
|
+
// hook (update when componentStore._updated changed)
|
|
94
|
+
withI18N: Component => props => {
|
|
95
|
+
useStore({ [storeName]: ['_updated'] });
|
|
96
|
+
return jsx(Component, { ...props });
|
|
97
|
+
},
|
|
98
|
+
i18n: (key, props) => getTrans(key, props),
|
|
99
|
+
I18N: memo(function I18N({ id, children, props }) {
|
|
100
|
+
useStore({
|
|
101
|
+
i18n: ['lang'],
|
|
102
|
+
[storeName]: ['_updated'], // explicitly subscribe to _updated
|
|
103
|
+
});
|
|
104
|
+
const key = id ?? children;
|
|
105
|
+
// @ts-ignore
|
|
106
|
+
return jsx(Fragment, { children: getTrans(key, props) });
|
|
107
|
+
}),
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
const useI18N = (fields = 'lang') => useStore({ i18n: [fields] }).i18n;
|
|
111
|
+
|
|
112
|
+
export { init, store, useI18N };
|
|
@@ -1,2 +1,60 @@
|
|
|
1
|
-
function indexWhere(
|
|
2
|
-
|
|
1
|
+
function indexWhere(arr, val, fieldName) {
|
|
2
|
+
if (!fieldName) {
|
|
3
|
+
return arr.indexOf(val);
|
|
4
|
+
}
|
|
5
|
+
const isValObj = typeof val === 'object';
|
|
6
|
+
let index = -1;
|
|
7
|
+
arr.some((d, i) => {
|
|
8
|
+
const dVal = isValObj ? val?.[fieldName] : val;
|
|
9
|
+
if (d?.[fieldName] === dVal) {
|
|
10
|
+
index = i;
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
return false;
|
|
14
|
+
});
|
|
15
|
+
return index;
|
|
16
|
+
}
|
|
17
|
+
function sliceWhere([...arr], val, fieldName) {
|
|
18
|
+
spliceWhere(arr, val, fieldName);
|
|
19
|
+
return arr;
|
|
20
|
+
}
|
|
21
|
+
function spliceWhere(arr, val, fieldName) {
|
|
22
|
+
const index = indexWhere(arr, val, fieldName);
|
|
23
|
+
if (index > -1)
|
|
24
|
+
arr.splice(index, 1);
|
|
25
|
+
}
|
|
26
|
+
function _addUniq({ arr, val, fieldName }, action) {
|
|
27
|
+
if (Array.isArray(val)) {
|
|
28
|
+
val.forEach(v => addUniq(arr, v, fieldName));
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const index = indexWhere(arr, val, fieldName);
|
|
32
|
+
if (index === -1)
|
|
33
|
+
action(val);
|
|
34
|
+
}
|
|
35
|
+
function addUniq(arr, val, fieldName) {
|
|
36
|
+
_addUniq({ arr, val, fieldName }, value => arr.push(value));
|
|
37
|
+
}
|
|
38
|
+
function unshiftUniq(arr, val, fieldName) {
|
|
39
|
+
_addUniq({ arr, val, fieldName }, value => arr.unshift(value));
|
|
40
|
+
}
|
|
41
|
+
function insert(baseArr, targetArr, startIndex) {
|
|
42
|
+
return [
|
|
43
|
+
...baseArr.slice(0, startIndex),
|
|
44
|
+
...targetArr,
|
|
45
|
+
...baseArr.slice(startIndex + targetArr.length),
|
|
46
|
+
];
|
|
47
|
+
}
|
|
48
|
+
function getIndexCircular(arr, index) {
|
|
49
|
+
const l = arr.length;
|
|
50
|
+
return arr[((index % l) + l) % l];
|
|
51
|
+
}
|
|
52
|
+
function circularSlice(arr, startIndex, count) {
|
|
53
|
+
const newArr = [];
|
|
54
|
+
for (let i = 0; i < count; i++) {
|
|
55
|
+
newArr.push(getIndexCircular(arr, startIndex + i));
|
|
56
|
+
}
|
|
57
|
+
return newArr;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export { addUniq, circularSlice, getIndexCircular, indexWhere, insert, sliceWhere, spliceWhere, unshiftUniq };
|
|
@@ -1,2 +1,9 @@
|
|
|
1
|
-
const config={
|
|
2
|
-
|
|
1
|
+
const config = {
|
|
2
|
+
appRootId: 'app-root',
|
|
3
|
+
appOverlayId: 'app-modal',
|
|
4
|
+
configure(params) {
|
|
5
|
+
Object.assign(this, params);
|
|
6
|
+
},
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export { config };
|
|
@@ -1,2 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Convert ISO 8601 format ("YYYY-MM-DD") to Date object
|
|
3
|
+
* @param str
|
|
4
|
+
* @returns Date
|
|
5
|
+
*/
|
|
6
|
+
const strToDate = (str) => {
|
|
7
|
+
const [year, month, day] = str.split('-').map(Number);
|
|
8
|
+
return new Date(year, month - 1, day);
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export { strToDate };
|