@helpwave/hightide 0.1.45 → 0.1.47
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/README.md +1 -1
- package/dist/index.d.mts +1990 -0
- package/dist/index.d.ts +1990 -113
- package/dist/index.js +1514 -1353
- package/dist/index.js.map +1 -1
- package/dist/{components/index.js → index.mjs} +728 -18
- package/dist/index.mjs.map +1 -0
- package/package.json +5 -12
- package/dist/coloring/index.cjs +0 -85
- package/dist/coloring/index.cjs.map +0 -1
- package/dist/coloring/index.d.cts +0 -2
- package/dist/coloring/index.d.ts +0 -2
- package/dist/coloring/index.js +0 -48
- package/dist/coloring/index.js.map +0 -1
- package/dist/coloring/shading.cjs +0 -81
- package/dist/coloring/shading.cjs.map +0 -1
- package/dist/coloring/shading.d.cts +0 -5
- package/dist/coloring/shading.d.ts +0 -5
- package/dist/coloring/shading.js +0 -47
- package/dist/coloring/shading.js.map +0 -1
- package/dist/coloring/types.cjs +0 -30
- package/dist/coloring/types.cjs.map +0 -1
- package/dist/coloring/types.d.cts +0 -13
- package/dist/coloring/types.d.ts +0 -13
- package/dist/coloring/types.js +0 -6
- package/dist/coloring/types.js.map +0 -1
- package/dist/components/branding/HelpwaveBadge.cjs +0 -140
- package/dist/components/branding/HelpwaveBadge.cjs.map +0 -1
- package/dist/components/branding/HelpwaveBadge.d.cts +0 -13
- package/dist/components/branding/HelpwaveBadge.d.ts +0 -13
- package/dist/components/branding/HelpwaveBadge.js +0 -104
- package/dist/components/branding/HelpwaveBadge.js.map +0 -1
- package/dist/components/branding/index.cjs +0 -140
- package/dist/components/branding/index.cjs.map +0 -1
- package/dist/components/branding/index.d.cts +0 -3
- package/dist/components/branding/index.d.ts +0 -3
- package/dist/components/branding/index.js +0 -104
- package/dist/components/branding/index.js.map +0 -1
- package/dist/components/date/DatePicker.cjs +0 -1318
- package/dist/components/date/DatePicker.cjs.map +0 -1
- package/dist/components/date/DatePicker.d.cts +0 -26
- package/dist/components/date/DatePicker.d.ts +0 -26
- package/dist/components/date/DatePicker.js +0 -1283
- package/dist/components/date/DatePicker.js.map +0 -1
- package/dist/components/date/DayPicker.cjs +0 -261
- package/dist/components/date/DayPicker.cjs.map +0 -1
- package/dist/components/date/DayPicker.d.cts +0 -20
- package/dist/components/date/DayPicker.d.ts +0 -20
- package/dist/components/date/DayPicker.js +0 -224
- package/dist/components/date/DayPicker.js.map +0 -1
- package/dist/components/date/TimeDisplay.cjs +0 -638
- package/dist/components/date/TimeDisplay.cjs.map +0 -1
- package/dist/components/date/TimeDisplay.d.cts +0 -13
- package/dist/components/date/TimeDisplay.d.ts +0 -13
- package/dist/components/date/TimeDisplay.js +0 -612
- package/dist/components/date/TimeDisplay.js.map +0 -1
- package/dist/components/date/TimePicker.cjs +0 -237
- package/dist/components/date/TimePicker.cjs.map +0 -1
- package/dist/components/date/TimePicker.d.cts +0 -15
- package/dist/components/date/TimePicker.d.ts +0 -15
- package/dist/components/date/TimePicker.js +0 -202
- package/dist/components/date/TimePicker.js.map +0 -1
- package/dist/components/date/YearMonthPicker.cjs +0 -536
- package/dist/components/date/YearMonthPicker.cjs.map +0 -1
- package/dist/components/date/YearMonthPicker.d.cts +0 -15
- package/dist/components/date/YearMonthPicker.d.ts +0 -15
- package/dist/components/date/YearMonthPicker.js +0 -501
- package/dist/components/date/YearMonthPicker.js.map +0 -1
- package/dist/components/date/index.cjs +0 -1556
- package/dist/components/date/index.cjs.map +0 -1
- package/dist/components/date/index.d.cts +0 -7
- package/dist/components/date/index.d.ts +0 -7
- package/dist/components/date/index.js +0 -1512
- package/dist/components/date/index.js.map +0 -1
- package/dist/components/dialog/ConfirmDialog.cjs +0 -1165
- package/dist/components/dialog/ConfirmDialog.cjs.map +0 -1
- package/dist/components/dialog/ConfirmDialog.d.cts +0 -29
- package/dist/components/dialog/ConfirmDialog.d.ts +0 -29
- package/dist/components/dialog/ConfirmDialog.js +0 -1129
- package/dist/components/dialog/ConfirmDialog.js.map +0 -1
- package/dist/components/dialog/Dialog.cjs +0 -1108
- package/dist/components/dialog/Dialog.cjs.map +0 -1
- package/dist/components/dialog/Dialog.d.cts +0 -27
- package/dist/components/dialog/Dialog.d.ts +0 -27
- package/dist/components/dialog/Dialog.js +0 -1075
- package/dist/components/dialog/Dialog.js.map +0 -1
- package/dist/components/dialog/DiscardChangesDialog.cjs +0 -1192
- package/dist/components/dialog/DiscardChangesDialog.cjs.map +0 -1
- package/dist/components/dialog/DiscardChangesDialog.d.cts +0 -18
- package/dist/components/dialog/DiscardChangesDialog.d.ts +0 -18
- package/dist/components/dialog/DiscardChangesDialog.js +0 -1156
- package/dist/components/dialog/DiscardChangesDialog.js.map +0 -1
- package/dist/components/dialog/InputDialog.cjs +0 -1369
- package/dist/components/dialog/InputDialog.cjs.map +0 -1
- package/dist/components/dialog/InputDialog.d.cts +0 -17
- package/dist/components/dialog/InputDialog.d.ts +0 -17
- package/dist/components/dialog/InputDialog.js +0 -1333
- package/dist/components/dialog/InputDialog.js.map +0 -1
- package/dist/components/dialog/LanguageDialog.cjs +0 -2149
- package/dist/components/dialog/LanguageDialog.cjs.map +0 -1
- package/dist/components/dialog/LanguageDialog.d.cts +0 -16
- package/dist/components/dialog/LanguageDialog.d.ts +0 -16
- package/dist/components/dialog/LanguageDialog.js +0 -2124
- package/dist/components/dialog/LanguageDialog.js.map +0 -1
- package/dist/components/dialog/ThemeDialog.cjs +0 -2188
- package/dist/components/dialog/ThemeDialog.cjs.map +0 -1
- package/dist/components/dialog/ThemeDialog.d.cts +0 -16
- package/dist/components/dialog/ThemeDialog.d.ts +0 -16
- package/dist/components/dialog/ThemeDialog.js +0 -2163
- package/dist/components/dialog/ThemeDialog.js.map +0 -1
- package/dist/components/dialog/index.cjs +0 -2516
- package/dist/components/dialog/index.cjs.map +0 -1
- package/dist/components/dialog/index.d.cts +0 -11
- package/dist/components/dialog/index.d.ts +0 -11
- package/dist/components/dialog/index.js +0 -2486
- package/dist/components/dialog/index.js.map +0 -1
- package/dist/components/form/FormElementWrapper.cjs +0 -167
- package/dist/components/form/FormElementWrapper.cjs.map +0 -1
- package/dist/components/form/FormElementWrapper.d.cts +0 -35
- package/dist/components/form/FormElementWrapper.d.ts +0 -35
- package/dist/components/form/FormElementWrapper.js +0 -133
- package/dist/components/form/FormElementWrapper.js.map +0 -1
- package/dist/components/form/index.cjs +0 -169
- package/dist/components/form/index.cjs.map +0 -1
- package/dist/components/form/index.d.cts +0 -5
- package/dist/components/form/index.d.ts +0 -5
- package/dist/components/form/index.js +0 -133
- package/dist/components/form/index.js.map +0 -1
- package/dist/components/icons-and-geometry/Avatar.cjs +0 -670
- package/dist/components/icons-and-geometry/Avatar.cjs.map +0 -1
- package/dist/components/icons-and-geometry/Avatar.d.cts +0 -36
- package/dist/components/icons-and-geometry/Avatar.d.ts +0 -36
- package/dist/components/icons-and-geometry/Avatar.js +0 -663
- package/dist/components/icons-and-geometry/Avatar.js.map +0 -1
- package/dist/components/icons-and-geometry/Circle.cjs +0 -61
- package/dist/components/icons-and-geometry/Circle.cjs.map +0 -1
- package/dist/components/icons-and-geometry/Circle.d.cts +0 -10
- package/dist/components/icons-and-geometry/Circle.d.ts +0 -10
- package/dist/components/icons-and-geometry/Circle.js +0 -27
- package/dist/components/icons-and-geometry/Circle.js.map +0 -1
- package/dist/components/icons-and-geometry/HelpwaveLogo.cjs +0 -98
- package/dist/components/icons-and-geometry/HelpwaveLogo.cjs.map +0 -1
- package/dist/components/icons-and-geometry/HelpwaveLogo.d.cts +0 -14
- package/dist/components/icons-and-geometry/HelpwaveLogo.d.ts +0 -14
- package/dist/components/icons-and-geometry/HelpwaveLogo.js +0 -74
- package/dist/components/icons-and-geometry/HelpwaveLogo.js.map +0 -1
- package/dist/components/icons-and-geometry/Ring.cjs +0 -333
- package/dist/components/icons-and-geometry/Ring.cjs.map +0 -1
- package/dist/components/icons-and-geometry/Ring.d.cts +0 -35
- package/dist/components/icons-and-geometry/Ring.d.ts +0 -35
- package/dist/components/icons-and-geometry/Ring.js +0 -296
- package/dist/components/icons-and-geometry/Ring.js.map +0 -1
- package/dist/components/icons-and-geometry/Tag.cjs +0 -2945
- package/dist/components/icons-and-geometry/Tag.cjs.map +0 -1
- package/dist/components/icons-and-geometry/Tag.d.cts +0 -16
- package/dist/components/icons-and-geometry/Tag.d.ts +0 -16
- package/dist/components/icons-and-geometry/Tag.js +0 -2940
- package/dist/components/icons-and-geometry/Tag.js.map +0 -1
- package/dist/components/icons-and-geometry/index.cjs +0 -3950
- package/dist/components/icons-and-geometry/index.cjs.map +0 -1
- package/dist/components/icons-and-geometry/index.d.cts +0 -7
- package/dist/components/icons-and-geometry/index.d.ts +0 -7
- package/dist/components/icons-and-geometry/index.js +0 -3934
- package/dist/components/icons-and-geometry/index.js.map +0 -1
- package/dist/components/index.cjs +0 -15692
- package/dist/components/index.cjs.map +0 -1
- package/dist/components/index.d.cts +0 -78
- package/dist/components/index.d.ts +0 -78
- package/dist/components/index.js.map +0 -1
- package/dist/components/layout/Carousel.cjs +0 -1128
- package/dist/components/layout/Carousel.cjs.map +0 -1
- package/dist/components/layout/Carousel.d.cts +0 -35
- package/dist/components/layout/Carousel.d.ts +0 -35
- package/dist/components/layout/Carousel.js +0 -1103
- package/dist/components/layout/Carousel.js.map +0 -1
- package/dist/components/layout/Chip.cjs +0 -123
- package/dist/components/layout/Chip.cjs.map +0 -1
- package/dist/components/layout/Chip.d.cts +0 -31
- package/dist/components/layout/Chip.d.ts +0 -31
- package/dist/components/layout/Chip.js +0 -87
- package/dist/components/layout/Chip.js.map +0 -1
- package/dist/components/layout/DividerInserter.cjs +0 -59
- package/dist/components/layout/DividerInserter.cjs.map +0 -1
- package/dist/components/layout/DividerInserter.d.cts +0 -15
- package/dist/components/layout/DividerInserter.d.ts +0 -15
- package/dist/components/layout/DividerInserter.js +0 -25
- package/dist/components/layout/DividerInserter.js.map +0 -1
- package/dist/components/layout/Expandable.cjs +0 -171
- package/dist/components/layout/Expandable.cjs.map +0 -1
- package/dist/components/layout/Expandable.d.cts +0 -67
- package/dist/components/layout/Expandable.d.ts +0 -67
- package/dist/components/layout/Expandable.js +0 -135
- package/dist/components/layout/Expandable.js.map +0 -1
- package/dist/components/layout/FAQSection.cjs +0 -421
- package/dist/components/layout/FAQSection.cjs.map +0 -1
- package/dist/components/layout/FAQSection.d.cts +0 -26
- package/dist/components/layout/FAQSection.d.ts +0 -26
- package/dist/components/layout/FAQSection.js +0 -387
- package/dist/components/layout/FAQSection.js.map +0 -1
- package/dist/components/layout/FloatingContainer.cjs +0 -220
- package/dist/components/layout/FloatingContainer.cjs.map +0 -1
- package/dist/components/layout/FloatingContainer.d.cts +0 -38
- package/dist/components/layout/FloatingContainer.d.ts +0 -38
- package/dist/components/layout/FloatingContainer.js +0 -196
- package/dist/components/layout/FloatingContainer.js.map +0 -1
- package/dist/components/layout/ListBox.cjs +0 -339
- package/dist/components/layout/ListBox.cjs.map +0 -1
- package/dist/components/layout/ListBox.d.cts +0 -44
- package/dist/components/layout/ListBox.d.ts +0 -44
- package/dist/components/layout/ListBox.js +0 -300
- package/dist/components/layout/ListBox.js.map +0 -1
- package/dist/components/layout/MarkdownInterpreter.cjs +0 -260
- package/dist/components/layout/MarkdownInterpreter.cjs.map +0 -1
- package/dist/components/layout/MarkdownInterpreter.d.cts +0 -28
- package/dist/components/layout/MarkdownInterpreter.d.ts +0 -28
- package/dist/components/layout/MarkdownInterpreter.js +0 -235
- package/dist/components/layout/MarkdownInterpreter.js.map +0 -1
- package/dist/components/layout/ScrollArea.cjs +0 -1252
- package/dist/components/layout/ScrollArea.cjs.map +0 -1
- package/dist/components/layout/ScrollArea.d.cts +0 -15
- package/dist/components/layout/ScrollArea.d.ts +0 -15
- package/dist/components/layout/ScrollArea.js +0 -1216
- package/dist/components/layout/ScrollArea.js.map +0 -1
- package/dist/components/layout/TextImage.cjs +0 -657
- package/dist/components/layout/TextImage.cjs.map +0 -1
- package/dist/components/layout/TextImage.d.cts +0 -19
- package/dist/components/layout/TextImage.d.ts +0 -19
- package/dist/components/layout/TextImage.js +0 -623
- package/dist/components/layout/TextImage.js.map +0 -1
- package/dist/components/layout/VerticalDivider.cjs +0 -80
- package/dist/components/layout/VerticalDivider.cjs.map +0 -1
- package/dist/components/layout/VerticalDivider.d.cts +0 -15
- package/dist/components/layout/VerticalDivider.d.ts +0 -15
- package/dist/components/layout/VerticalDivider.js +0 -56
- package/dist/components/layout/VerticalDivider.js.map +0 -1
- package/dist/components/layout/index.cjs +0 -3434
- package/dist/components/layout/index.cjs.map +0 -1
- package/dist/components/layout/index.d.cts +0 -15
- package/dist/components/layout/index.d.ts +0 -15
- package/dist/components/layout/index.js +0 -3387
- package/dist/components/layout/index.js.map +0 -1
- package/dist/components/loading-states/ErrorComponent.cjs +0 -622
- package/dist/components/loading-states/ErrorComponent.cjs.map +0 -1
- package/dist/components/loading-states/ErrorComponent.d.cts +0 -12
- package/dist/components/loading-states/ErrorComponent.d.ts +0 -12
- package/dist/components/loading-states/ErrorComponent.js +0 -588
- package/dist/components/loading-states/ErrorComponent.js.map +0 -1
- package/dist/components/loading-states/LoadingAndErrorComponent.cjs +0 -67
- package/dist/components/loading-states/LoadingAndErrorComponent.cjs.map +0 -1
- package/dist/components/loading-states/LoadingAndErrorComponent.d.cts +0 -20
- package/dist/components/loading-states/LoadingAndErrorComponent.d.ts +0 -20
- package/dist/components/loading-states/LoadingAndErrorComponent.js +0 -43
- package/dist/components/loading-states/LoadingAndErrorComponent.js.map +0 -1
- package/dist/components/loading-states/LoadingAnimation.cjs +0 -694
- package/dist/components/loading-states/LoadingAnimation.cjs.map +0 -1
- package/dist/components/loading-states/LoadingAnimation.d.cts +0 -12
- package/dist/components/loading-states/LoadingAnimation.d.ts +0 -12
- package/dist/components/loading-states/LoadingAnimation.js +0 -658
- package/dist/components/loading-states/LoadingAnimation.js.map +0 -1
- package/dist/components/loading-states/LoadingButton.cjs +0 -257
- package/dist/components/loading-states/LoadingButton.cjs.map +0 -1
- package/dist/components/loading-states/LoadingButton.d.cts +0 -10
- package/dist/components/loading-states/LoadingButton.d.ts +0 -10
- package/dist/components/loading-states/LoadingButton.js +0 -223
- package/dist/components/loading-states/LoadingButton.js.map +0 -1
- package/dist/components/loading-states/LoadingContainer.cjs +0 -34
- package/dist/components/loading-states/LoadingContainer.cjs.map +0 -1
- package/dist/components/loading-states/LoadingContainer.d.cts +0 -8
- package/dist/components/loading-states/LoadingContainer.d.ts +0 -8
- package/dist/components/loading-states/LoadingContainer.js +0 -10
- package/dist/components/loading-states/LoadingContainer.js.map +0 -1
- package/dist/components/loading-states/ProgressIndicator.cjs +0 -83
- package/dist/components/loading-states/ProgressIndicator.cjs.map +0 -1
- package/dist/components/loading-states/ProgressIndicator.d.cts +0 -24
- package/dist/components/loading-states/ProgressIndicator.d.ts +0 -24
- package/dist/components/loading-states/ProgressIndicator.js +0 -59
- package/dist/components/loading-states/ProgressIndicator.js.map +0 -1
- package/dist/components/loading-states/index.cjs +0 -966
- package/dist/components/loading-states/index.cjs.map +0 -1
- package/dist/components/loading-states/index.d.cts +0 -9
- package/dist/components/loading-states/index.d.ts +0 -9
- package/dist/components/loading-states/index.js +0 -925
- package/dist/components/loading-states/index.js.map +0 -1
- package/dist/components/navigation/BreadCrumb.cjs +0 -3516
- package/dist/components/navigation/BreadCrumb.cjs.map +0 -1
- package/dist/components/navigation/BreadCrumb.d.cts +0 -20
- package/dist/components/navigation/BreadCrumb.d.ts +0 -20
- package/dist/components/navigation/BreadCrumb.js +0 -3511
- package/dist/components/navigation/BreadCrumb.js.map +0 -1
- package/dist/components/navigation/Navigation.cjs +0 -4041
- package/dist/components/navigation/Navigation.cjs.map +0 -1
- package/dist/components/navigation/Navigation.d.cts +0 -21
- package/dist/components/navigation/Navigation.d.ts +0 -21
- package/dist/components/navigation/Navigation.js +0 -4035
- package/dist/components/navigation/Navigation.js.map +0 -1
- package/dist/components/navigation/Pagination.cjs +0 -1007
- package/dist/components/navigation/Pagination.cjs.map +0 -1
- package/dist/components/navigation/Pagination.d.cts +0 -16
- package/dist/components/navigation/Pagination.d.ts +0 -16
- package/dist/components/navigation/Pagination.js +0 -973
- package/dist/components/navigation/Pagination.js.map +0 -1
- package/dist/components/navigation/StepperBar.cjs +0 -903
- package/dist/components/navigation/StepperBar.cjs.map +0 -1
- package/dist/components/navigation/StepperBar.d.cts +0 -23
- package/dist/components/navigation/StepperBar.d.ts +0 -23
- package/dist/components/navigation/StepperBar.js +0 -868
- package/dist/components/navigation/StepperBar.js.map +0 -1
- package/dist/components/navigation/index.cjs +0 -5035
- package/dist/components/navigation/index.cjs.map +0 -1
- package/dist/components/navigation/index.d.cts +0 -6
- package/dist/components/navigation/index.d.ts +0 -6
- package/dist/components/navigation/index.js +0 -5023
- package/dist/components/navigation/index.js.map +0 -1
- package/dist/components/properties/CheckboxProperty.cjs +0 -1736
- package/dist/components/properties/CheckboxProperty.cjs.map +0 -1
- package/dist/components/properties/CheckboxProperty.d.cts +0 -14
- package/dist/components/properties/CheckboxProperty.d.ts +0 -14
- package/dist/components/properties/CheckboxProperty.js +0 -1702
- package/dist/components/properties/CheckboxProperty.js.map +0 -1
- package/dist/components/properties/DateProperty.cjs +0 -1119
- package/dist/components/properties/DateProperty.cjs.map +0 -1
- package/dist/components/properties/DateProperty.d.cts +0 -16
- package/dist/components/properties/DateProperty.d.ts +0 -16
- package/dist/components/properties/DateProperty.js +0 -1085
- package/dist/components/properties/DateProperty.js.map +0 -1
- package/dist/components/properties/MultiSelectProperty.cjs +0 -2058
- package/dist/components/properties/MultiSelectProperty.cjs.map +0 -1
- package/dist/components/properties/MultiSelectProperty.d.cts +0 -14
- package/dist/components/properties/MultiSelectProperty.d.ts +0 -14
- package/dist/components/properties/MultiSelectProperty.js +0 -2035
- package/dist/components/properties/MultiSelectProperty.js.map +0 -1
- package/dist/components/properties/NumberProperty.cjs +0 -1125
- package/dist/components/properties/NumberProperty.cjs.map +0 -1
- package/dist/components/properties/NumberProperty.d.cts +0 -16
- package/dist/components/properties/NumberProperty.d.ts +0 -16
- package/dist/components/properties/NumberProperty.js +0 -1091
- package/dist/components/properties/NumberProperty.js.map +0 -1
- package/dist/components/properties/PropertyBase.cjs +0 -875
- package/dist/components/properties/PropertyBase.cjs.map +0 -1
- package/dist/components/properties/PropertyBase.d.cts +0 -22
- package/dist/components/properties/PropertyBase.d.ts +0 -22
- package/dist/components/properties/PropertyBase.js +0 -841
- package/dist/components/properties/PropertyBase.js.map +0 -1
- package/dist/components/properties/SelectProperty.cjs +0 -2058
- package/dist/components/properties/SelectProperty.cjs.map +0 -1
- package/dist/components/properties/SelectProperty.d.cts +0 -16
- package/dist/components/properties/SelectProperty.d.ts +0 -16
- package/dist/components/properties/SelectProperty.js +0 -2035
- package/dist/components/properties/SelectProperty.js.map +0 -1
- package/dist/components/properties/TextProperty.cjs +0 -1033
- package/dist/components/properties/TextProperty.cjs.map +0 -1
- package/dist/components/properties/TextProperty.d.cts +0 -15
- package/dist/components/properties/TextProperty.d.ts +0 -15
- package/dist/components/properties/TextProperty.js +0 -999
- package/dist/components/properties/TextProperty.js.map +0 -1
- package/dist/components/properties/index.cjs +0 -3383
- package/dist/components/properties/index.cjs.map +0 -1
- package/dist/components/properties/index.d.cts +0 -9
- package/dist/components/properties/index.d.ts +0 -9
- package/dist/components/properties/index.js +0 -3352
- package/dist/components/properties/index.js.map +0 -1
- package/dist/components/table/FillerRowElement.cjs +0 -36
- package/dist/components/table/FillerRowElement.cjs.map +0 -1
- package/dist/components/table/FillerRowElement.d.cts +0 -8
- package/dist/components/table/FillerRowElement.d.ts +0 -8
- package/dist/components/table/FillerRowElement.js +0 -12
- package/dist/components/table/FillerRowElement.js.map +0 -1
- package/dist/components/table/Filter.cjs +0 -41
- package/dist/components/table/Filter.cjs.map +0 -1
- package/dist/components/table/Filter.d.cts +0 -5
- package/dist/components/table/Filter.d.ts +0 -5
- package/dist/components/table/Filter.js +0 -17
- package/dist/components/table/Filter.js.map +0 -1
- package/dist/components/table/Table.cjs +0 -2678
- package/dist/components/table/Table.cjs.map +0 -1
- package/dist/components/table/Table.d.cts +0 -42
- package/dist/components/table/Table.d.ts +0 -42
- package/dist/components/table/Table.js +0 -2649
- package/dist/components/table/Table.js.map +0 -1
- package/dist/components/table/TableCell.cjs +0 -37
- package/dist/components/table/TableCell.cjs.map +0 -1
- package/dist/components/table/TableCell.d.cts +0 -9
- package/dist/components/table/TableCell.d.ts +0 -9
- package/dist/components/table/TableCell.js +0 -13
- package/dist/components/table/TableCell.js.map +0 -1
- package/dist/components/table/TableFilterButton.cjs +0 -1269
- package/dist/components/table/TableFilterButton.cjs.map +0 -1
- package/dist/components/table/TableFilterButton.d.cts +0 -11
- package/dist/components/table/TableFilterButton.d.ts +0 -11
- package/dist/components/table/TableFilterButton.js +0 -1233
- package/dist/components/table/TableFilterButton.js.map +0 -1
- package/dist/components/table/TableSortButton.cjs +0 -206
- package/dist/components/table/TableSortButton.cjs.map +0 -1
- package/dist/components/table/TableSortButton.d.cts +0 -15
- package/dist/components/table/TableSortButton.d.ts +0 -15
- package/dist/components/table/TableSortButton.js +0 -172
- package/dist/components/table/TableSortButton.js.map +0 -1
- package/dist/components/table/index.cjs +0 -2690
- package/dist/components/table/index.cjs.map +0 -1
- package/dist/components/table/index.d.cts +0 -10
- package/dist/components/table/index.d.ts +0 -10
- package/dist/components/table/index.js +0 -2654
- package/dist/components/table/index.js.map +0 -1
- package/dist/components/user-action/Button.cjs +0 -308
- package/dist/components/user-action/Button.cjs.map +0 -1
- package/dist/components/user-action/Button.d.cts +0 -104
- package/dist/components/user-action/Button.d.ts +0 -104
- package/dist/components/user-action/Button.js +0 -268
- package/dist/components/user-action/Button.js.map +0 -1
- package/dist/components/user-action/Checkbox.cjs +0 -878
- package/dist/components/user-action/Checkbox.cjs.map +0 -1
- package/dist/components/user-action/Checkbox.d.cts +0 -25
- package/dist/components/user-action/Checkbox.d.ts +0 -25
- package/dist/components/user-action/Checkbox.js +0 -843
- package/dist/components/user-action/Checkbox.js.map +0 -1
- package/dist/components/user-action/CopyToClipboardWrapper.cjs +0 -695
- package/dist/components/user-action/CopyToClipboardWrapper.cjs.map +0 -1
- package/dist/components/user-action/CopyToClipboardWrapper.d.cts +0 -30
- package/dist/components/user-action/CopyToClipboardWrapper.d.ts +0 -30
- package/dist/components/user-action/CopyToClipboardWrapper.js +0 -671
- package/dist/components/user-action/CopyToClipboardWrapper.js.map +0 -1
- package/dist/components/user-action/DateAndTimePicker.cjs +0 -1492
- package/dist/components/user-action/DateAndTimePicker.cjs.map +0 -1
- package/dist/components/user-action/DateAndTimePicker.d.cts +0 -25
- package/dist/components/user-action/DateAndTimePicker.d.ts +0 -25
- package/dist/components/user-action/DateAndTimePicker.js +0 -1458
- package/dist/components/user-action/DateAndTimePicker.js.map +0 -1
- package/dist/components/user-action/Label.cjs +0 -53
- package/dist/components/user-action/Label.cjs.map +0 -1
- package/dist/components/user-action/Label.d.cts +0 -14
- package/dist/components/user-action/Label.d.ts +0 -14
- package/dist/components/user-action/Label.js +0 -19
- package/dist/components/user-action/Label.js.map +0 -1
- package/dist/components/user-action/Menu.cjs +0 -282
- package/dist/components/user-action/Menu.cjs.map +0 -1
- package/dist/components/user-action/Menu.d.cts +0 -35
- package/dist/components/user-action/Menu.d.ts +0 -35
- package/dist/components/user-action/Menu.js +0 -247
- package/dist/components/user-action/Menu.js.map +0 -1
- package/dist/components/user-action/ScrollPicker.cjs +0 -301
- package/dist/components/user-action/ScrollPicker.cjs.map +0 -1
- package/dist/components/user-action/ScrollPicker.d.cts +0 -15
- package/dist/components/user-action/ScrollPicker.d.ts +0 -15
- package/dist/components/user-action/ScrollPicker.js +0 -267
- package/dist/components/user-action/ScrollPicker.js.map +0 -1
- package/dist/components/user-action/SearchBar.cjs +0 -956
- package/dist/components/user-action/SearchBar.cjs.map +0 -1
- package/dist/components/user-action/SearchBar.d.cts +0 -13
- package/dist/components/user-action/SearchBar.d.ts +0 -13
- package/dist/components/user-action/SearchBar.js +0 -920
- package/dist/components/user-action/SearchBar.js.map +0 -1
- package/dist/components/user-action/Textarea.cjs +0 -231
- package/dist/components/user-action/Textarea.cjs.map +0 -1
- package/dist/components/user-action/Textarea.d.cts +0 -41
- package/dist/components/user-action/Textarea.d.ts +0 -41
- package/dist/components/user-action/Textarea.js +0 -195
- package/dist/components/user-action/Textarea.js.map +0 -1
- package/dist/components/user-action/Tooltip.cjs +0 -139
- package/dist/components/user-action/Tooltip.cjs.map +0 -1
- package/dist/components/user-action/Tooltip.d.cts +0 -37
- package/dist/components/user-action/Tooltip.d.ts +0 -37
- package/dist/components/user-action/Tooltip.js +0 -113
- package/dist/components/user-action/Tooltip.js.map +0 -1
- package/dist/components/user-action/index.cjs +0 -4564
- package/dist/components/user-action/index.cjs.map +0 -1
- package/dist/components/user-action/index.d.cts +0 -26
- package/dist/components/user-action/index.d.ts +0 -26
- package/dist/components/user-action/index.js +0 -4503
- package/dist/components/user-action/index.js.map +0 -1
- package/dist/components/user-action/input/Input.cjs +0 -260
- package/dist/components/user-action/input/Input.cjs.map +0 -1
- package/dist/components/user-action/input/Input.d.cts +0 -37
- package/dist/components/user-action/input/Input.d.ts +0 -37
- package/dist/components/user-action/input/Input.js +0 -225
- package/dist/components/user-action/input/Input.js.map +0 -1
- package/dist/components/user-action/input/InsideLabelInput.cjs +0 -312
- package/dist/components/user-action/input/InsideLabelInput.cjs.map +0 -1
- package/dist/components/user-action/input/InsideLabelInput.d.cts +0 -20
- package/dist/components/user-action/input/InsideLabelInput.d.ts +0 -20
- package/dist/components/user-action/input/InsideLabelInput.js +0 -277
- package/dist/components/user-action/input/InsideLabelInput.js.map +0 -1
- package/dist/components/user-action/input/ToggleableInput.cjs +0 -315
- package/dist/components/user-action/input/ToggleableInput.cjs.map +0 -1
- package/dist/components/user-action/input/ToggleableInput.d.cts +0 -22
- package/dist/components/user-action/input/ToggleableInput.d.ts +0 -22
- package/dist/components/user-action/input/ToggleableInput.js +0 -280
- package/dist/components/user-action/input/ToggleableInput.js.map +0 -1
- package/dist/components/user-action/input/index.cjs +0 -403
- package/dist/components/user-action/input/index.cjs.map +0 -1
- package/dist/components/user-action/input/index.d.cts +0 -6
- package/dist/components/user-action/input/index.d.ts +0 -6
- package/dist/components/user-action/input/index.js +0 -362
- package/dist/components/user-action/input/index.js.map +0 -1
- package/dist/components/user-action/select/Select.cjs +0 -1970
- package/dist/components/user-action/select/Select.cjs.map +0 -1
- package/dist/components/user-action/select/Select.d.cts +0 -104
- package/dist/components/user-action/select/Select.d.ts +0 -104
- package/dist/components/user-action/select/Select.js +0 -1937
- package/dist/components/user-action/select/Select.js.map +0 -1
- package/dist/components/user-action/select/index.cjs +0 -1972
- package/dist/components/user-action/select/index.cjs.map +0 -1
- package/dist/components/user-action/select/index.d.cts +0 -4
- package/dist/components/user-action/select/index.d.ts +0 -4
- package/dist/components/user-action/select/index.js +0 -1937
- package/dist/components/user-action/select/index.js.map +0 -1
- package/dist/components/utils/FocusTrap.cjs +0 -252
- package/dist/components/utils/FocusTrap.cjs.map +0 -1
- package/dist/components/utils/FocusTrap.d.cts +0 -28
- package/dist/components/utils/FocusTrap.d.ts +0 -28
- package/dist/components/utils/FocusTrap.js +0 -229
- package/dist/components/utils/FocusTrap.js.map +0 -1
- package/dist/components/utils/Transition.cjs +0 -74
- package/dist/components/utils/Transition.cjs.map +0 -1
- package/dist/components/utils/Transition.d.cts +0 -26
- package/dist/components/utils/Transition.d.ts +0 -26
- package/dist/components/utils/Transition.js +0 -50
- package/dist/components/utils/Transition.js.map +0 -1
- package/dist/components/utils/index.cjs +0 -302
- package/dist/components/utils/index.cjs.map +0 -1
- package/dist/components/utils/index.d.cts +0 -4
- package/dist/components/utils/index.d.ts +0 -4
- package/dist/components/utils/index.js +0 -275
- package/dist/components/utils/index.js.map +0 -1
- package/dist/hooks/focus/index.cjs +0 -379
- package/dist/hooks/focus/index.cjs.map +0 -1
- package/dist/hooks/focus/index.d.cts +0 -6
- package/dist/hooks/focus/index.d.ts +0 -6
- package/dist/hooks/focus/index.js +0 -339
- package/dist/hooks/focus/index.js.map +0 -1
- package/dist/hooks/focus/useFocusGuards.cjs +0 -74
- package/dist/hooks/focus/useFocusGuards.cjs.map +0 -1
- package/dist/hooks/focus/useFocusGuards.d.cts +0 -3
- package/dist/hooks/focus/useFocusGuards.d.ts +0 -3
- package/dist/hooks/focus/useFocusGuards.js +0 -50
- package/dist/hooks/focus/useFocusGuards.js.map +0 -1
- package/dist/hooks/focus/useFocusManagement.cjs +0 -84
- package/dist/hooks/focus/useFocusManagement.cjs.map +0 -1
- package/dist/hooks/focus/useFocusManagement.d.cts +0 -9
- package/dist/hooks/focus/useFocusManagement.d.ts +0 -9
- package/dist/hooks/focus/useFocusManagement.js +0 -60
- package/dist/hooks/focus/useFocusManagement.js.map +0 -1
- package/dist/hooks/focus/useFocusOnceVisible.cjs +0 -60
- package/dist/hooks/focus/useFocusOnceVisible.cjs.map +0 -1
- package/dist/hooks/focus/useFocusOnceVisible.d.cts +0 -5
- package/dist/hooks/focus/useFocusOnceVisible.d.ts +0 -5
- package/dist/hooks/focus/useFocusOnceVisible.js +0 -26
- package/dist/hooks/focus/useFocusOnceVisible.js.map +0 -1
- package/dist/hooks/focus/useFocusTrap.cjs +0 -233
- package/dist/hooks/focus/useFocusTrap.cjs.map +0 -1
- package/dist/hooks/focus/useFocusTrap.d.cts +0 -16
- package/dist/hooks/focus/useFocusTrap.d.ts +0 -16
- package/dist/hooks/focus/useFocusTrap.js +0 -210
- package/dist/hooks/focus/useFocusTrap.js.map +0 -1
- package/dist/hooks/focus/useIsMounted.cjs +0 -43
- package/dist/hooks/focus/useIsMounted.cjs.map +0 -1
- package/dist/hooks/focus/useIsMounted.d.cts +0 -3
- package/dist/hooks/focus/useIsMounted.d.ts +0 -3
- package/dist/hooks/focus/useIsMounted.js +0 -20
- package/dist/hooks/focus/useIsMounted.js.map +0 -1
- package/dist/hooks/index.cjs +0 -1530
- package/dist/hooks/index.cjs.map +0 -1
- package/dist/hooks/index.d.cts +0 -18
- package/dist/hooks/index.d.ts +0 -18
- package/dist/hooks/index.js +0 -1477
- package/dist/hooks/index.js.map +0 -1
- package/dist/hooks/useDelay.cjs +0 -67
- package/dist/hooks/useDelay.cjs.map +0 -1
- package/dist/hooks/useDelay.d.cts +0 -12
- package/dist/hooks/useDelay.d.ts +0 -12
- package/dist/hooks/useDelay.js +0 -43
- package/dist/hooks/useDelay.js.map +0 -1
- package/dist/hooks/useFloatingElement.cjs +0 -162
- package/dist/hooks/useFloatingElement.cjs.map +0 -1
- package/dist/hooks/useFloatingElement.d.cts +0 -22
- package/dist/hooks/useFloatingElement.d.ts +0 -22
- package/dist/hooks/useFloatingElement.js +0 -139
- package/dist/hooks/useFloatingElement.js.map +0 -1
- package/dist/hooks/useHoverState.cjs +0 -71
- package/dist/hooks/useHoverState.cjs.map +0 -1
- package/dist/hooks/useHoverState.d.cts +0 -42
- package/dist/hooks/useHoverState.d.ts +0 -42
- package/dist/hooks/useHoverState.js +0 -47
- package/dist/hooks/useHoverState.js.map +0 -1
- package/dist/hooks/useLocalStorage.cjs +0 -97
- package/dist/hooks/useLocalStorage.cjs.map +0 -1
- package/dist/hooks/useLocalStorage.d.cts +0 -17
- package/dist/hooks/useLocalStorage.d.ts +0 -17
- package/dist/hooks/useLocalStorage.js +0 -74
- package/dist/hooks/useLocalStorage.js.map +0 -1
- package/dist/hooks/useLogOnce.cjs +0 -53
- package/dist/hooks/useLogOnce.cjs.map +0 -1
- package/dist/hooks/useLogOnce.d.cts +0 -7
- package/dist/hooks/useLogOnce.d.ts +0 -7
- package/dist/hooks/useLogOnce.js +0 -29
- package/dist/hooks/useLogOnce.js.map +0 -1
- package/dist/hooks/useOutsideClick.cjs +0 -47
- package/dist/hooks/useOutsideClick.cjs.map +0 -1
- package/dist/hooks/useOutsideClick.d.cts +0 -5
- package/dist/hooks/useOutsideClick.d.ts +0 -5
- package/dist/hooks/useOutsideClick.js +0 -23
- package/dist/hooks/useOutsideClick.js.map +0 -1
- package/dist/hooks/useOverwritableState.cjs +0 -49
- package/dist/hooks/useOverwritableState.cjs.map +0 -1
- package/dist/hooks/useOverwritableState.d.cts +0 -5
- package/dist/hooks/useOverwritableState.d.ts +0 -5
- package/dist/hooks/useOverwritableState.js +0 -25
- package/dist/hooks/useOverwritableState.js.map +0 -1
- package/dist/hooks/usePopoverPosition.cjs +0 -81
- package/dist/hooks/usePopoverPosition.cjs.map +0 -1
- package/dist/hooks/usePopoverPosition.d.cts +0 -15
- package/dist/hooks/usePopoverPosition.d.ts +0 -15
- package/dist/hooks/usePopoverPosition.js +0 -57
- package/dist/hooks/usePopoverPosition.js.map +0 -1
- package/dist/hooks/useRerender.cjs +0 -33
- package/dist/hooks/useRerender.cjs.map +0 -1
- package/dist/hooks/useRerender.d.cts +0 -5
- package/dist/hooks/useRerender.d.ts +0 -5
- package/dist/hooks/useRerender.js +0 -9
- package/dist/hooks/useRerender.js.map +0 -1
- package/dist/hooks/useResizeCallbackWrapper.cjs +0 -38
- package/dist/hooks/useResizeCallbackWrapper.cjs.map +0 -1
- package/dist/hooks/useResizeCallbackWrapper.d.cts +0 -11
- package/dist/hooks/useResizeCallbackWrapper.d.ts +0 -11
- package/dist/hooks/useResizeCallbackWrapper.js +0 -14
- package/dist/hooks/useResizeCallbackWrapper.js.map +0 -1
- package/dist/hooks/useSearch.cjs +0 -95
- package/dist/hooks/useSearch.cjs.map +0 -1
- package/dist/hooks/useSearch.d.cts +0 -22
- package/dist/hooks/useSearch.d.ts +0 -22
- package/dist/hooks/useSearch.js +0 -71
- package/dist/hooks/useSearch.js.map +0 -1
- package/dist/hooks/useValidators.cjs +0 -687
- package/dist/hooks/useValidators.cjs.map +0 -1
- package/dist/hooks/useValidators.d.cts +0 -16
- package/dist/hooks/useValidators.d.ts +0 -16
- package/dist/hooks/useValidators.js +0 -660
- package/dist/hooks/useValidators.js.map +0 -1
- package/dist/i18n/LocaleProvider.cjs +0 -202
- package/dist/i18n/LocaleProvider.cjs.map +0 -1
- package/dist/i18n/LocaleProvider.d.cts +0 -23
- package/dist/i18n/LocaleProvider.d.ts +0 -23
- package/dist/i18n/LocaleProvider.js +0 -175
- package/dist/i18n/LocaleProvider.js.map +0 -1
- package/dist/i18n/index.cjs +0 -761
- package/dist/i18n/index.cjs.map +0 -1
- package/dist/i18n/index.d.cts +0 -8
- package/dist/i18n/index.d.ts +0 -8
- package/dist/i18n/index.js +0 -727
- package/dist/i18n/index.js.map +0 -1
- package/dist/i18n/translations.cjs +0 -507
- package/dist/i18n/translations.cjs.map +0 -1
- package/dist/i18n/translations.d.cts +0 -189
- package/dist/i18n/translations.d.ts +0 -189
- package/dist/i18n/translations.js +0 -482
- package/dist/i18n/translations.js.map +0 -1
- package/dist/i18n/useHightideTranslation.cjs +0 -618
- package/dist/i18n/useHightideTranslation.cjs.map +0 -1
- package/dist/i18n/useHightideTranslation.d.cts +0 -21
- package/dist/i18n/useHightideTranslation.d.ts +0 -21
- package/dist/i18n/useHightideTranslation.js +0 -591
- package/dist/i18n/useHightideTranslation.js.map +0 -1
- package/dist/i18n/util.cjs +0 -49
- package/dist/i18n/util.cjs.map +0 -1
- package/dist/i18n/util.d.cts +0 -15
- package/dist/i18n/util.d.ts +0 -15
- package/dist/i18n/util.js +0 -23
- package/dist/i18n/util.js.map +0 -1
- package/dist/index.cjs +0 -16470
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -113
- package/dist/storybook/helper.cjs +0 -61
- package/dist/storybook/helper.cjs.map +0 -1
- package/dist/storybook/helper.d.cts +0 -17
- package/dist/storybook/helper.d.ts +0 -17
- package/dist/storybook/helper.js +0 -37
- package/dist/storybook/helper.js.map +0 -1
- package/dist/theming/index.cjs +0 -190
- package/dist/theming/index.cjs.map +0 -1
- package/dist/theming/index.d.cts +0 -3
- package/dist/theming/index.d.ts +0 -3
- package/dist/theming/index.js +0 -161
- package/dist/theming/index.js.map +0 -1
- package/dist/theming/useTheme.cjs +0 -188
- package/dist/theming/useTheme.cjs.map +0 -1
- package/dist/theming/useTheme.d.cts +0 -26
- package/dist/theming/useTheme.d.ts +0 -26
- package/dist/theming/useTheme.js +0 -161
- package/dist/theming/useTheme.js.map +0 -1
- package/dist/utils/array.cjs +0 -172
- package/dist/utils/array.cjs.map +0 -1
- package/dist/utils/array.d.cts +0 -34
- package/dist/utils/array.d.ts +0 -34
- package/dist/utils/array.js +0 -142
- package/dist/utils/array.js.map +0 -1
- package/dist/utils/bagFunctions.cjs +0 -38
- package/dist/utils/bagFunctions.cjs.map +0 -1
- package/dist/utils/bagFunctions.d.cts +0 -15
- package/dist/utils/bagFunctions.d.ts +0 -15
- package/dist/utils/bagFunctions.js +0 -14
- package/dist/utils/bagFunctions.js.map +0 -1
- package/dist/utils/builder.cjs +0 -33
- package/dist/utils/builder.cjs.map +0 -1
- package/dist/utils/builder.d.cts +0 -8
- package/dist/utils/builder.d.ts +0 -8
- package/dist/utils/builder.js +0 -9
- package/dist/utils/builder.js.map +0 -1
- package/dist/utils/date.cjs +0 -193
- package/dist/utils/date.cjs.map +0 -1
- package/dist/utils/date.d.cts +0 -30
- package/dist/utils/date.d.ts +0 -30
- package/dist/utils/date.js +0 -156
- package/dist/utils/date.js.map +0 -1
- package/dist/utils/easeFunctions.cjs +0 -63
- package/dist/utils/easeFunctions.cjs.map +0 -1
- package/dist/utils/easeFunctions.d.cts +0 -11
- package/dist/utils/easeFunctions.d.ts +0 -11
- package/dist/utils/easeFunctions.js +0 -37
- package/dist/utils/easeFunctions.js.map +0 -1
- package/dist/utils/emailValidation.cjs +0 -32
- package/dist/utils/emailValidation.cjs.map +0 -1
- package/dist/utils/emailValidation.d.cts +0 -3
- package/dist/utils/emailValidation.d.ts +0 -3
- package/dist/utils/emailValidation.js +0 -8
- package/dist/utils/emailValidation.js.map +0 -1
- package/dist/utils/index.cjs +0 -562
- package/dist/utils/index.cjs.map +0 -1
- package/dist/utils/index.d.cts +0 -16
- package/dist/utils/index.d.ts +0 -16
- package/dist/utils/index.js +0 -502
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/loopingArray.cjs +0 -96
- package/dist/utils/loopingArray.cjs.map +0 -1
- package/dist/utils/loopingArray.d.cts +0 -25
- package/dist/utils/loopingArray.d.ts +0 -25
- package/dist/utils/loopingArray.js +0 -72
- package/dist/utils/loopingArray.js.map +0 -1
- package/dist/utils/match.cjs +0 -32
- package/dist/utils/match.cjs.map +0 -1
- package/dist/utils/match.d.cts +0 -3
- package/dist/utils/match.d.ts +0 -3
- package/dist/utils/match.js +0 -8
- package/dist/utils/match.js.map +0 -1
- package/dist/utils/math.cjs +0 -33
- package/dist/utils/math.cjs.map +0 -1
- package/dist/utils/math.d.cts +0 -3
- package/dist/utils/math.d.ts +0 -3
- package/dist/utils/math.js +0 -9
- package/dist/utils/math.js.map +0 -1
- package/dist/utils/noop.cjs +0 -30
- package/dist/utils/noop.cjs.map +0 -1
- package/dist/utils/noop.d.cts +0 -3
- package/dist/utils/noop.d.ts +0 -3
- package/dist/utils/noop.js +0 -6
- package/dist/utils/noop.js.map +0 -1
- package/dist/utils/resolveSetState.cjs +0 -32
- package/dist/utils/resolveSetState.cjs.map +0 -1
- package/dist/utils/resolveSetState.d.cts +0 -5
- package/dist/utils/resolveSetState.d.ts +0 -5
- package/dist/utils/resolveSetState.js +0 -8
- package/dist/utils/resolveSetState.js.map +0 -1
- package/dist/utils/simpleSearch.cjs +0 -59
- package/dist/utils/simpleSearch.cjs.map +0 -1
- package/dist/utils/simpleSearch.d.cts +0 -50
- package/dist/utils/simpleSearch.d.ts +0 -50
- package/dist/utils/simpleSearch.js +0 -32
- package/dist/utils/simpleSearch.js.map +0 -1
- package/dist/utils/storage.cjs +0 -63
- package/dist/utils/storage.cjs.map +0 -1
- package/dist/utils/storage.d.cts +0 -16
- package/dist/utils/storage.d.ts +0 -16
- package/dist/utils/storage.js +0 -38
- package/dist/utils/storage.js.map +0 -1
- package/dist/utils/typing.cjs +0 -18
- package/dist/utils/typing.cjs.map +0 -1
- package/dist/utils/typing.d.cts +0 -8
- package/dist/utils/typing.d.ts +0 -8
- package/dist/utils/typing.js +0 -1
- package/dist/utils/typing.js.map +0 -1
- package/dist/utils/writeToClipboard.cjs +0 -33
- package/dist/utils/writeToClipboard.cjs.map +0 -1
- package/dist/utils/writeToClipboard.d.cts +0 -3
- package/dist/utils/writeToClipboard.d.ts +0 -3
- package/dist/utils/writeToClipboard.js +0 -10
- package/dist/utils/writeToClipboard.js.map +0 -1
package/dist/hooks/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/focus/useFocusGuards.ts","../../src/hooks/focus/useFocusManagement.ts","../../src/hooks/focus/useFocusOnceVisible.ts","../../src/hooks/focus/useFocusTrap.ts","../../src/hooks/focus/useIsMounted.ts","../../src/hooks/useDelay.ts","../../src/hooks/useFloatingElement.ts","../../src/utils/math.ts","../../src/hooks/useHoverState.ts","../../src/hooks/useLocalStorage.ts","../../src/utils/storage.ts","../../src/utils/resolveSetState.ts","../../src/hooks/useLogOnce.ts","../../src/hooks/useOutsideClick.ts","../../src/hooks/useOverwritableState.ts","../../src/hooks/usePopoverPosition.ts","../../src/hooks/useRerender.ts","../../src/hooks/useResizeCallbackWrapper.ts","../../src/hooks/useSearch.ts","../../src/utils/simpleSearch.ts","../../src/utils/emailValidation.ts","../../src/i18n/LocaleProvider.tsx","../../src/i18n/translations.ts","../../src/i18n/util.ts","../../src/i18n/useHightideTranslation.ts","../../src/utils/array.ts","../../src/hooks/useValidators.ts"],"sourcesContent":["import { useEffect } from 'react'\n\nconst selectorName = 'data-hw-focus-guard'\n\nfunction FocusGuard() {\n const element = document.createElement('div')\n element.setAttribute(selectorName, '')\n element.tabIndex = 0\n element.style.border = 'none'\n element.style.outline = 'none'\n element.style.boxShadow = 'none'\n element.style.opacity = '0'\n element.style.position = 'fixed'\n element.style.pointerEvents = 'none'\n return element\n}\n\nclass FocusGuardsService {\n private count: number = 0\n\n private static instance: FocusGuardsService\n\n private constructor() {}\n\n static getInstance(): FocusGuardsService {\n if (!FocusGuardsService.instance) {\n FocusGuardsService.instance = new FocusGuardsService()\n }\n return FocusGuardsService.instance\n }\n\n add() {\n const edgeGuards = document.querySelectorAll(`[${selectorName}]`)\n document.body.insertAdjacentElement('afterbegin', edgeGuards[0] ?? FocusGuard())\n document.body.insertAdjacentElement('beforeend', edgeGuards[1] ?? FocusGuard())\n this.count++\n }\n\n remove() {\n if (this.count === 1) {\n document.querySelectorAll(`[${selectorName}]`)\n .forEach((node) => node.remove())\n }\n this.count--\n }\n}\n\nexport const useFocusGuards = () => {\n useEffect(() => {\n FocusGuardsService.getInstance().add()\n return () => {\n FocusGuardsService.getInstance().remove()\n }\n }, [])\n}","import { useCallback } from 'react'\n\nexport function useFocusManagement() {\n const getFocusableElements = useCallback((): HTMLElement[] => {\n return Array.from(\n document.querySelectorAll(\n 'input, button, select, textarea, a[href], [tabindex]:not([tabindex=\"-1\"])'\n )\n ).filter(\n (el): el is HTMLElement =>\n el instanceof HTMLElement &&\n !el.hasAttribute('disabled') &&\n !el.hasAttribute('hidden') &&\n el.tabIndex !== -1\n )\n }, [])\n\n const getNextFocusElement = useCallback((): HTMLElement | undefined => {\n const elements = getFocusableElements()\n if(elements.length === 0) {\n return undefined\n }\n let nextElement = elements[0]\n if(document.activeElement instanceof HTMLElement) {\n const currentIndex = elements.indexOf(document.activeElement)\n nextElement = elements[(currentIndex + 1) % elements.length]\n }\n return nextElement\n }, [getFocusableElements])\n\n const focusNext = useCallback(() => {\n const nextElement = getNextFocusElement()\n nextElement?.focus()\n }, [getNextFocusElement])\n\n const getPreviousFocusElement = useCallback((): HTMLElement | undefined => {\n const elements = getFocusableElements()\n if(elements.length === 0) {\n return undefined\n }\n let previousElement = elements[0]\n if(document.activeElement instanceof HTMLElement) {\n const currentIndex = elements.indexOf(document.activeElement)\n if(currentIndex === 0) {\n previousElement = elements[elements.length - 1]\n } else {\n previousElement = elements[currentIndex - 1]\n }\n }\n return previousElement\n }, [getFocusableElements])\n\n const focusPrevious = useCallback(() => {\n const previousElement = getPreviousFocusElement()\n if (previousElement) previousElement.focus()\n }, [getPreviousFocusElement])\n\n return {\n getFocusableElements,\n getNextFocusElement,\n getPreviousFocusElement,\n focusNext,\n focusPrevious,\n }\n}","import type { MutableRefObject } from 'react'\nimport React, { useEffect } from 'react'\n\nexport const useFocusOnceVisible = (\n ref: MutableRefObject<HTMLElement>,\n disable: boolean = false\n) => {\n const [hasUsedFocus, setHasUsedFocus] = React.useState(false)\n\n useEffect(() => {\n if (disable || hasUsedFocus) {\n return\n }\n const observer = new IntersectionObserver(([entry]) => {\n if (entry.isIntersecting && !hasUsedFocus) {\n ref.current?.focus()\n setHasUsedFocus(hasUsedFocus)\n }\n }, {\n threshold: 0.1,\n })\n\n if (ref.current) {\n observer.observe(ref.current)\n }\n\n return () => observer.disconnect()\n }, [disable, hasUsedFocus, ref])\n}","'use client'\n\nimport type { MutableRefObject } from 'react'\nimport { useCallback, useEffect, useId, useRef, useState } from 'react'\nimport { useIsMounted } from '@/src/hooks/focus/useIsMounted'\n\nconst createFocusGuard = () => {\n const div = document.createElement('div')\n Object.assign(div.style, {\n opacity: '0',\n outline: 'none',\n boxShadow: 'none',\n position: 'fixed',\n pointerEvents: 'none',\n touchAction: 'none',\n })\n div.tabIndex = 0\n div.setAttribute('data-hw-focus-guard', '')\n document.body.appendChild(div)\n return div\n}\n\nfunction getContainedFocusableElements(element: HTMLElement) {\n return element?.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])')\n}\n\ntype ListenerType = {\n id: string,\n pause: () => void,\n unpause: () => void,\n focus: () => void,\n focusLast: () => void,\n container: MutableRefObject<HTMLElement>,\n initialFocusElement: MutableRefObject<HTMLElement>,\n}\n\nclass FocusTrapService {\n // The last entry is always the active one\n private listeners: ListenerType[] = []\n\n public getActive(): ListenerType | undefined {\n if (this.listeners.length === 0) return undefined\n return this.listeners[this.listeners.length - 1]\n }\n\n private focusElement() {\n const active = this.getActive()\n if(!active) return\n const { container, initialFocusElement } = active\n const containerElement = container.current\n // Try in the following order\n // 1. Focus the initial element\n // 2. Focus the first focusable element in the container\n // 3. Focus the container\n if (initialFocusElement?.current) {\n initialFocusElement.current.focus()\n } else {\n const elements = getContainedFocusableElements(containerElement)\n if (elements && elements.length > 0) {\n const first = elements.item(0) as HTMLElement\n first.focus()\n } else {\n containerElement.focus()\n }\n }\n }\n\n private onFocusIn = (event: FocusEvent) => {\n const active = this.getActive()\n if(!active || !active.container.current) return\n const { container } = active\n if (!container.current.contains(event.target as HTMLElement)) {\n this.focusElement()\n }\n }\n\n private removeGuards() {\n document.querySelectorAll('[data-hw-focus-guard]').forEach((node) => node.remove())\n }\n\n private addGuards() {\n document.body.insertAdjacentElement('afterbegin', createFocusGuard())\n document.body.insertAdjacentElement('beforeend', createFocusGuard())\n }\n\n private activate() {\n document.addEventListener('focusin', this.onFocusIn)\n this.addGuards()\n }\n\n private deactivate() {\n document.removeEventListener('focusin', this.onFocusIn)\n this.removeGuards()\n }\n\n register(listener: ListenerType) {\n this.listeners.push(listener)\n if (this.listeners.length === 1) {\n this.activate()\n }\n const active = listener\n this.listeners.forEach((listener) => {\n const { focus, pause } = listener\n if (listener === active) {\n focus()\n } else {\n pause()\n }\n })\n }\n\n unregister(id: string) {\n const index = this.listeners.findIndex(trap => trap.id === id)\n if (index !== -1) {\n const isActive = index === this.listeners.length - 1\n const listener = this.listeners[index]\n this.listeners = this.listeners.filter(listener => listener.id !== id)\n if (isActive) {\n // Deactivate all focus traps\n this.deactivate()\n // Focus last element in previous focus context\n listener.focusLast()\n // Activate and pause remaining focus traps\n const active = this.getActive()\n this.listeners.forEach((listener) => {\n const { pause, unpause } = listener\n if (listener === active) {\n unpause()\n } else {\n pause()\n }\n })\n // Reactivate\n if (this.listeners.length > 0) {\n this.activate()\n }\n }\n } else {\n console.warn(`Unable to unregister id ${id}: not found`)\n }\n }\n}\n\nconst service = new FocusTrapService()\n\nexport type UseFocusTrapProps = {\n container: MutableRefObject<HTMLElement>,\n active?: boolean,\n initialFocus?: MutableRefObject<HTMLElement>,\n /**\n * Whether to focus the first element when the initialFocus isn't provided\n *\n * Focuses the container instead\n */\n focusFirst?: boolean,\n}\n\nexport const useFocusTrap = ({\n container,\n active = true,\n initialFocus,\n focusFirst = true,\n }: UseFocusTrapProps) => {\n const lastFocusRef = useRef<HTMLElement | null>(null)\n const [paused, setPaused] = useState(false)\n const isMounted = useIsMounted()\n const id = useId()\n\n const focusElement = useCallback(() => {\n const containerElement = container.current\n // Try in the following order\n // 1. Focus the initial element\n // 2. Focus the first focusable element in the container\n // 3. Focus the container\n if (initialFocus?.current) {\n initialFocus.current.focus()\n } else {\n const elements = getContainedFocusableElements(containerElement)\n if (elements && elements.length > 0) {\n const first = elements.item(0) as HTMLElement\n first.focus()\n } else {\n containerElement.focus()\n }\n }\n }, [container, initialFocus])\n\n useEffect(() => {\n if (active && isMounted) {\n if (!lastFocusRef.current) {\n lastFocusRef.current = document.activeElement as HTMLElement\n }\n\n function pause() {\n setPaused(true)\n }\n\n function unpause() {\n setPaused(false)\n if (!container.current.contains(document.activeElement as HTMLElement)) {\n focusElement()\n }\n }\n\n function focus() {\n focusElement()\n setPaused(false)\n }\n\n function focusLast() {\n lastFocusRef.current?.focus()\n }\n\n service.register({ id, pause, focus, focusLast, unpause, container, initialFocusElement: initialFocus })\n return () => {\n service.unregister(id)\n lastFocusRef.current = undefined\n }\n }\n }, [active, container, focusElement, id, initialFocus, isMounted])\n\n useEffect(() => {\n if (active && !paused && isMounted) {\n const containerElement = container.current\n\n function onKeyDown(event: KeyboardEvent) {\n const key = event.key\n const elements = getContainedFocusableElements(containerElement)\n const active = document.activeElement as HTMLElement\n const index = [...elements].findIndex(value => value === active)\n if (index === -1 || event.altKey || event.ctrlKey || event.metaKey) {\n return\n }\n if (key === 'Tab') {\n const next = event.shiftKey ? -1 : 1\n const nextIndex = (index + next + elements.length) % elements.length\n const nextElement = elements[nextIndex] as HTMLElement\n nextElement.focus()\n event.preventDefault()\n }\n }\n\n // Register and unregister the listeners\n containerElement.addEventListener('keydown', onKeyDown)\n return () => {\n containerElement.removeEventListener('keydown', onKeyDown)\n }\n }\n }, [active, paused, isMounted, container, initialFocus, focusFirst, focusElement])\n}","'use client'\n\nimport { useEffect, useLayoutEffect, useState } from 'react'\n\nconst isClient = typeof window !== 'undefined' && typeof document !== 'undefined'\nconst useIsomorphicEffect = isClient ? useLayoutEffect : useEffect\n\nexport const useIsMounted = () => {\n const [isMounted, setIsMounted] = useState(false)\n\n useIsomorphicEffect(() => {\n setIsMounted(true)\n return () => {\n setIsMounted(false)\n }\n }, [])\n return isMounted\n}","import { useEffect, useState } from 'react'\n\nexport type UseDelayOptionsResolved = {\n delay: number,\n disabled: boolean,\n}\n\nexport type UseDelayOptions = Partial<UseDelayOptionsResolved>\n\nconst defaultOptions: UseDelayOptionsResolved = {\n delay: 3000,\n disabled: false,\n}\n\nexport function useDelay(options?: UseDelayOptions) {\n const [timer, setTimer] = useState<NodeJS.Timeout | undefined>(undefined)\n const { delay, disabled }: UseDelayOptionsResolved = {\n ...defaultOptions,\n ...options\n }\n\n const clearTimer = () => {\n clearTimeout(timer)\n setTimer(undefined)\n }\n\n const restartTimer = (onDelayFinish: () => void) => {\n if(disabled) {\n return\n }\n clearTimeout(timer)\n setTimer(setTimeout(() => {\n onDelayFinish()\n setTimer(undefined)\n }, delay))\n }\n\n useEffect(() => {\n return () => {\n clearTimeout(timer)\n }\n }, [timer])\n\n useEffect(() => {\n if(disabled){\n clearTimeout(timer)\n setTimer(undefined)\n }\n }, [disabled, timer])\n\n return { restartTimer, clearTimer, hasActiveTimer: !!timer }\n}","'use client'\n\nimport type { CSSProperties, MutableRefObject } from 'react'\nimport { useCallback, useEffect, useState } from 'react'\nimport { clamp } from '@/src/utils/math'\nimport { useIsMounted } from '@/src/hooks/focus/useIsMounted'\n\nexport type FloatingElementAlignment = 'beforeStart' | 'afterStart' | 'center' | 'beforeEnd' | 'afterEnd'\n\ntype RectangleBounds = {\n top: number,\n right: number,\n bottom: number,\n left: number,\n width: number,\n height: number,\n}\n\ntype CalculatePositionOptions = {\n verticalAlignment?: FloatingElementAlignment,\n horizontalAlignment?: FloatingElementAlignment,\n screenPadding?: number,\n gap?: number,\n}\n\ntype CalculatePositionProps = {\n windowRect: RectangleBounds,\n containerRect: RectangleBounds,\n anchorRect: RectangleBounds,\n options: CalculatePositionOptions,\n}\n\ntype UseFloatingElementStyle = {\n left: number,\n top: number,\n maxWidth: number,\n maxHeight: number,\n}\n\nfunction calculatePosition({\n windowRect,\n containerRect,\n anchorRect,\n options,\n }: CalculatePositionProps): UseFloatingElementStyle {\n const { verticalAlignment, horizontalAlignment, gap, screenPadding } = options\n const windowWidth = windowRect.width\n const windowHeight = windowRect.height\n\n const maxWidth = windowWidth - 2 * screenPadding\n const maxHeight = windowHeight - 2 * screenPadding\n\n const width = Math.min(containerRect.width, maxWidth)\n const height = Math.min(containerRect.height, maxHeight)\n\n const leftSuggestion = {\n beforeStart: anchorRect.left - width - gap,\n afterStart: anchorRect.left,\n center: anchorRect.left + anchorRect.width / 2 - width / 2,\n beforeEnd: anchorRect.right - width,\n afterEnd: anchorRect.right + gap,\n }[horizontalAlignment]\n\n const topSuggestion = {\n beforeStart: anchorRect.top - height - gap,\n afterStart: anchorRect.top,\n center: anchorRect.top + anchorRect.height / 2 - height / 2,\n beforeEnd: anchorRect.bottom - height,\n afterEnd: anchorRect.bottom + gap,\n }[verticalAlignment]\n\n const left = clamp(leftSuggestion, [\n screenPadding,\n windowWidth - screenPadding - width,\n ])\n\n const top = clamp(topSuggestion, [\n screenPadding,\n windowHeight - screenPadding - height,\n ])\n\n return {\n left,\n top,\n maxWidth,\n maxHeight,\n }\n}\n\nexport type UseFloatingElementOptions = CalculatePositionOptions & {\n isPolling?: boolean,\n pollingInterval?: number,\n}\n\nexport type UseFloatingElementProps = UseFloatingElementOptions & {\n containerRef: MutableRefObject<HTMLElement>,\n anchorRef: MutableRefObject<HTMLElement>,\n windowRef?: MutableRefObject<HTMLElement>,\n active?: boolean,\n}\n\nexport function useFloatingElement({\n active = true,\n windowRef,\n anchorRef,\n containerRef,\n isPolling = false,\n pollingInterval = 100,\n verticalAlignment = 'afterEnd',\n horizontalAlignment = 'afterStart',\n screenPadding = 16,\n gap = 4,\n }: UseFloatingElementProps) {\n const [style, setStyle] = useState<CSSProperties>()\n const isMounted = useIsMounted()\n\n const calculate = useCallback(() => {\n const containerRect = containerRef.current.getBoundingClientRect()\n const windowRect: RectangleBounds = windowRef?.current.getBoundingClientRect() ?? {\n top: 0,\n bottom: window.innerHeight,\n left: 0,\n right: window.innerWidth,\n width: window.innerWidth,\n height: window.innerHeight,\n }\n const anchorElement = anchorRef?.current\n if (anchorRef && !anchorElement) {\n console.warn('FloatingContainer anchor provided, but its value is undefined')\n }\n const anchorRect: RectangleBounds = anchorElement?.getBoundingClientRect() ?? windowRect\n\n const calculateProps: CalculatePositionProps = {\n windowRect,\n anchorRect,\n containerRect,\n options: {\n horizontalAlignment,\n verticalAlignment,\n screenPadding,\n gap,\n }\n }\n setStyle(calculatePosition(calculateProps))\n }, [anchorRef, containerRef, gap, horizontalAlignment, screenPadding, verticalAlignment, windowRef])\n\n\n const height = containerRef.current?.getBoundingClientRect().height\n const width = containerRef.current?.getBoundingClientRect().width\n useEffect(() => {\n if (active && isMounted) {\n calculate()\n } else {\n setStyle(undefined)\n }\n }, [calculate, active, isMounted, height, width])\n\n useEffect(() => {\n window.addEventListener('resize', calculate)\n let timeout: NodeJS.Timeout\n if (isPolling) {\n timeout = setInterval(calculate, pollingInterval)\n }\n return () => {\n window.removeEventListener('resize', calculate)\n if (timeout) {\n clearInterval(timeout)\n }\n }\n }, [calculate, isPolling, pollingInterval])\n\n return style\n}","export const clamp = (value: number, range: [number, number] = [0, 1]): number => {\n const [min, max] = range\n return Math.min(Math.max(value, min), max)\n}\n","import type { Dispatch, SetStateAction } from 'react'\nimport { useEffect, useState } from 'react'\n\ntype UseHoverStateProps = {\n /**\n * The delay after which the menu is closed in milliseconds\n *\n * default: 200ms\n */\n closingDelay: number,\n /**\n * Whether the hover state management should be disabled\n *\n * default: false\n */\n isDisabled: boolean,\n}\n\ntype UseHoverStateReturnType = {\n /**\n * Whether the element is hovered\n */\n isHovered: boolean,\n /**\n * Function to change the current hover status\n */\n setIsHovered: Dispatch<SetStateAction<boolean>>,\n /**\n * Handlers to pass on to the component that should be hovered\n */\n handlers: {\n onMouseEnter: () => void,\n onMouseLeave: () => void,\n },\n}\n\nconst defaultUseHoverStateProps: UseHoverStateProps = {\n closingDelay: 200,\n isDisabled: false,\n}\n\n/**\n * @param props See UseHoverStateProps\n *\n * A react hook for managing the hover state of a component. The handlers provided should be\n * forwarded to the component which should be hovered over\n */\nexport const useHoverState = (props: Partial<UseHoverStateProps> | undefined = undefined): UseHoverStateReturnType => {\n const { closingDelay, isDisabled } = { ...defaultUseHoverStateProps, ...props }\n\n const [isHovered, setIsHovered] = useState(false)\n const [timer, setTimer] = useState<NodeJS.Timeout>()\n\n const onMouseEnter = () => {\n if (isDisabled) {\n return\n }\n clearTimeout(timer)\n setIsHovered(true)\n }\n\n const onMouseLeave = () => {\n if (isDisabled) {\n return\n }\n setTimer(setTimeout(() => {\n setIsHovered(false)\n }, closingDelay))\n }\n\n useEffect(() => {\n if (timer) {\n return () => {\n clearTimeout(timer)\n }\n }\n })\n\n useEffect(() => {\n if (timer) {\n clearTimeout(timer)\n }\n }, [isDisabled]) // eslint-disable-line react-hooks/exhaustive-deps\n\n return {\n isHovered, setIsHovered, handlers: { onMouseEnter, onMouseLeave }\n }\n}\n","'use client'\n\nimport type { Dispatch, SetStateAction } from 'react'\nimport { useCallback, useState } from 'react'\nimport { LocalStorageService } from '@/src/utils/storage'\nimport { resolveSetState } from '@/src/utils/resolveSetState'\n\ntype SetValue<T> = Dispatch<SetStateAction<T>>\n\ntype UseLocalStorageResult<T> = {\n value: T,\n setValue: SetValue<T>,\n deleteValue: () => void,\n}\n\n/**\n * @param key Key under which to save the data\n * @param backupValue Used if the storage is unavailable or no value is present\n *\n * The backup value will never be saved to the storage unless you explicitly\n */\nexport const useLocalStorage = <T>(key: string, backupValue: T): UseLocalStorageResult<T> => {\n const get = useCallback((): T => {\n if (typeof window === 'undefined') {\n return backupValue\n }\n const storageService = new LocalStorageService()\n try {\n const value = storageService.get<T>(key)\n return value || backupValue\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (_) {\n console.warn('useLocalStorage: Error while reading the stored value. Make sure your typing is correct.')\n storageService.delete(key)\n console.info(`useLocalStorage: deleted erroneous value for key: ${key}`)\n return backupValue\n }\n }, [backupValue, key])\n\n const [storedValue, setStoredValue] = useState<T>(get)\n\n const setValue: SetValue<T> = useCallback(action => {\n const newValue = resolveSetState(action, storedValue)\n const storageService = new LocalStorageService()\n storageService.set(key, newValue)\n\n setStoredValue(newValue)\n }, [storedValue, setStoredValue, key])\n\n const deleteValue = () => {\n const storageService = new LocalStorageService()\n storageService.delete(key)\n setStoredValue(backupValue)\n }\n\n return { value: storedValue, setValue, deleteValue }\n}","class StorageService {\n // this seems to be a bug in eslint as 'paramter-properties' is a special syntax of typescript\n\n constructor(private storage: Storage) {\n }\n\n public get<T>(key: string): T | null {\n const value = this.storage.getItem(key)\n if (value === null) {\n return null\n }\n return JSON.parse(value)\n }\n\n public set<T>(key: string, value: T) {\n this.storage.setItem(key, JSON.stringify(value))\n }\n\n public delete(key: string) {\n this.storage.removeItem(key)\n }\n\n public deleteAll() {\n this.storage.clear()\n }\n}\n\nexport class LocalStorageService extends StorageService {\n constructor() {\n super(window.localStorage)\n }\n}\n\nexport class SessionStorageService extends StorageService {\n constructor() {\n super(window.sessionStorage)\n }\n}\n","import type { SetStateAction } from 'react'\n\nexport function resolveSetState<T>(action: SetStateAction<T>, prev: T): T {\n return typeof action === 'function' ? (action as (prev: T) => T)(prev) : action\n}","import { useEffect, useState } from 'react'\n\ntype OptionsResolved = {\n type?: 'info' | 'error' | 'warning',\n}\n\nconst defaultOptions: OptionsResolved = {\n type: 'warning',\n}\n\ntype Options = Partial<OptionsResolved>\n\nexport const useLogOnce = (\n message: string,\n condition: boolean,\n options?: Options\n) => {\n const [hasLogged, setHasLogged] = useState<boolean>(false)\n const { type } = { ...defaultOptions, ...options }\n\n useEffect(() => {\n if (!hasLogged && condition) {\n switch (type) {\n case 'info':\n console.info(message)\n break\n case 'error':\n console.error(message)\n break\n case 'warning':\n console.warn(message)\n break\n }\n setHasLogged(true)\n }\n }, [condition]) // eslint-disable-line react-hooks/exhaustive-deps\n}","import type { RefObject } from 'react'\nimport { useEffect } from 'react'\n\nexport const useOutsideClick = <Ts extends RefObject<HTMLElement>[]>(refs: Ts, handler: () => void) => {\n useEffect(() => {\n const listener = (event: MouseEvent | TouchEvent) => {\n // returning means not \"not clicking outside\"\n\n // if no target exists, return\n if (event.target === null) return\n // if the target is a ref's element or descendent thereof, return\n if (refs.some((ref) => !ref.current || ref.current.contains(event.target as Node))) {\n return\n }\n\n handler()\n }\n document.addEventListener('mousedown', listener)\n document.addEventListener('touchstart', listener)\n return () => {\n document.removeEventListener('mousedown', listener)\n document.removeEventListener('touchstart', listener)\n }\n }, [refs, handler])\n}\n","import type React from 'react'\nimport { useEffect, useState } from 'react'\nimport { resolveSetState } from '@/src/utils/resolveSetState'\n\nexport const useOverwritableState = <T>(initialValue?: T, onChange?: (value: T) => void): [T, React.Dispatch<React.SetStateAction<T>>] => {\n const [state, setState] = useState<T>(initialValue)\n\n useEffect(() => {\n setState(initialValue)\n }, [initialValue])\n\n const onChangeWrapper: React.Dispatch<React.SetStateAction<T>> = (action) => {\n const resolved = resolveSetState(action, state)\n setState(resolved)\n onChange?.(state)\n }\n\n return [state, onChangeWrapper]\n}","import type { CSSProperties } from 'react'\n\nexport type PopoverHorizontalAlignment = 'leftOutside' | 'leftInside' | 'rightOutside' | 'rightInside' | 'center'\nexport type PopoverVerticalAlignment = 'topOutside' | 'topInside' | 'bottomOutside' | 'bottomInside' | 'center'\n\ntype PopoverPositionOptionsResolved = {\n edgePadding: number,\n outerGap: number,\n verticalAlignment: PopoverVerticalAlignment,\n horizontalAlignment: PopoverHorizontalAlignment,\n disabled: boolean,\n}\n\ntype PopoverPositionOptions = Partial<PopoverPositionOptionsResolved>\n\nconst defaultPopoverPositionOptions: PopoverPositionOptionsResolved = {\n edgePadding: 16,\n outerGap: 4,\n horizontalAlignment: 'leftInside',\n verticalAlignment: 'bottomOutside',\n disabled: false,\n}\n\nexport const usePopoverPosition = (trigger?: DOMRect, options?: PopoverPositionOptions): CSSProperties => {\n const {\n edgePadding,\n outerGap,\n verticalAlignment,\n horizontalAlignment,\n disabled\n }: PopoverPositionOptionsResolved = { ...defaultPopoverPositionOptions, ...options }\n\n if (disabled || !trigger) {\n return {}\n }\n\n const left: number = {\n leftOutside: trigger.left - outerGap,\n leftInside: trigger.left,\n rightOutside: trigger.right + outerGap,\n rightInside: trigger.right,\n center: trigger.left + trigger.width / 2,\n }[horizontalAlignment]\n\n const top: number = {\n topOutside: trigger.top - outerGap,\n topInside: trigger.top,\n bottomOutside: trigger.bottom + outerGap,\n bottomInside: trigger.bottom,\n center: trigger.top + trigger.height / 2,\n }[verticalAlignment]\n\n const translateX: string | undefined = {\n leftOutside: '-100%',\n leftInside: undefined,\n rightOutside: undefined,\n rightInside: '-100%',\n center: '-50%',\n }[horizontalAlignment]\n\n const translateY: string | undefined = {\n topOutside: '-100%',\n topInside: undefined,\n bottomOutside: undefined,\n bottomInside: '-100%',\n center: '-50%',\n }[verticalAlignment]\n\n return {\n left: Math.max(left, edgePadding),\n top: Math.max(top, edgePadding),\n translate: [translateX ?? '0', translateY ?? '0'].join(' ')\n }\n}","import { useReducer } from 'react'\n\nexport const useRerender = () => {\n return useReducer(() => ({}), {})[1]\n}","import { useEffect } from 'react'\n\n/**\n * A hook that wraps the event listener attachment\n *\n * Make sure your callback is stable (doesn't change every render)\n * This can easily be achieved by wrapping it in a useCallback() and using it inside the useResizeCallbackWrapper\n *\n * @param callback Called when the window resizes\n */\nexport const useResizeCallbackWrapper = (callback: (event: UIEvent) => void) => {\n useEffect(() => {\n window.addEventListener('resize', callback)\n\n return () => {\n window.removeEventListener('resize', callback)\n }\n }, [callback])\n}","import { useCallback, useEffect, useMemo, useState } from 'react'\nimport { MultiSubjectSearchWithMapping } from '@/src/utils/simpleSearch'\n\nexport type UseSearchProps<T> = {\n list: T[],\n searchMapping: (item: T) => string[],\n initialSearch?: string,\n additionalSearchTags?: string[],\n isSearchInstant?: boolean,\n sortingFunction?: (a: T, b: T) => number,\n filter?: (item: T) => boolean,\n disabled?: boolean,\n}\n\nexport const useSearch = <T>({\n list,\n initialSearch,\n searchMapping,\n additionalSearchTags,\n isSearchInstant = true,\n sortingFunction,\n filter,\n disabled = false,\n }: UseSearchProps<T>) => {\n const [search, setSearch] = useState<string>(initialSearch ?? '')\n const [result, setResult] = useState<T[]>(list)\n const searchTags = useMemo(() => additionalSearchTags ?? [], [additionalSearchTags])\n\n const updateSearch = useCallback((newSearch?: string) => {\n const usedSearch = newSearch ?? search\n if (newSearch) {\n setSearch(search)\n }\n setResult(MultiSubjectSearchWithMapping([usedSearch, ...searchTags], list, searchMapping))\n }, [searchTags, list, search, searchMapping])\n\n useEffect(() => {\n if (isSearchInstant) {\n setResult(MultiSubjectSearchWithMapping([search, ...searchTags], list, searchMapping))\n }\n }, [searchTags, isSearchInstant, list, search, searchMapping, additionalSearchTags])\n\n const filteredResult: T[] = useMemo(() => {\n if (!filter) {\n return result\n }\n return result.filter(filter)\n }, [result, filter])\n\n const sortedAndFilteredResult: T[] = useMemo(() => {\n if (!sortingFunction) {\n return filteredResult\n }\n return filteredResult.sort(sortingFunction)\n }, [filteredResult, sortingFunction])\n\n const usedResult = useMemo(() => {\n if (!disabled) {\n return sortedAndFilteredResult\n }\n return list\n }, [disabled, list, sortedAndFilteredResult])\n\n return {\n result: usedResult,\n hasResult: usedResult.length > 0,\n allItems: list,\n updateSearch,\n search,\n setSearch,\n }\n}","/**\n * Finds all values matching the search values by first mapping the values to a string array and then checking each entry for matches.\n * Returns the list of all matches.\n *\n * @param search The list of search strings e.g. `[name, type]`\n *\n * @param objects The list of objects to be searched in\n *\n * @param mapping The mapping of objects to the string properties they fulfil\n *\n * @return The list of objects that match all search strings\n */\nexport const MultiSubjectSearchWithMapping = <T>(search: string[], objects: T[], mapping: (value: T) => (string[] | undefined)) => {\n return objects.filter(object => {\n const mappedSearchKeywords = mapping(object)?.map(value => value.toLowerCase().trim())\n if(!mappedSearchKeywords) {\n return true\n }\n return search.every(searchValue => !!mappedSearchKeywords.find(value => !!value && value.includes(searchValue.toLowerCase().trim())))\n })\n}\n\n/**\n * Finds all values matching the search value by first mapping the values to a string array and then checking each entry for matches.\n * Returns the list of all matches.\n *\n * @param search The search string e.g `name`\n *\n * @param objects The list of objects to be searched in\n *\n * @param mapping The mapping of objects to the string properties they fulfil, if undefined it is always fulfilled\n *\n * @return The list of objects that match the search string\n */\nexport const MultiSearchWithMapping = <T>(search: string, objects: T[], mapping: (value: T) => (string[] | undefined)) => {\n return objects.filter(object => {\n const mappedSearchKeywords = mapping(object)?.map(value => value.toLowerCase().trim())\n if(!mappedSearchKeywords) {\n return true\n }\n return !!mappedSearchKeywords.find(value => value.includes(search.toLowerCase().trim()))\n })\n}\n\n/**\n * Finds all values matching the search value by first mapping the values to a string and returns the list of all matches.\n *\n * @param search The search string e.g `name`\n *\n * @param objects The list of objects to be searched in\n *\n * @param mapping The mapping of objects to a string that is compared to the search\n *\n * @return The list of objects that match the search string\n */\nexport const SimpleSearchWithMapping = <T>(search: string, objects: T[], mapping: (value: T) => string) => {\n return MultiSearchWithMapping(search, objects, value => [mapping(value)])\n}\n\n/**\n * Finds all values matching the search value and returns the list of all matches.\n *\n * @param search The search string e.g `name`\n *\n * @param objects The list of objects to be searched in\n *\n * @return The list of objects that match the search string\n */\nexport const SimpleSearch = (search: string, objects: string[]) => {\n return SimpleSearchWithMapping(search, objects, value => value)\n}\n","export const validateEmail = (email: string): boolean => {\n return /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}$/i.test(email)\n}\n","import type { Dispatch, PropsWithChildren, SetStateAction } from 'react'\nimport { createContext, useContext, useEffect, useMemo, useState } from 'react'\nimport { useLocalStorage } from '../hooks/useLocalStorage'\nimport { LocalizationUtil } from './util'\nimport type { HightideTranslationLocales } from '@/src/i18n/translations'\n\nexport type LocaleContextValue = {\n locale: HightideTranslationLocales,\n setLocale: Dispatch<SetStateAction<HightideTranslationLocales>>,\n}\n\nexport const LocaleContext = createContext<LocaleContextValue>({\n locale: LocalizationUtil.DEFAULT_LOCALE,\n setLocale: (v) => v\n})\n\ntype LocaleWithSystem = HightideTranslationLocales | 'system'\n\ntype LocaleProviderProps = {\n locale?: LocaleWithSystem,\n onChangedLocale?: (locale: HightideTranslationLocales) => void,\n}\n\nexport const LocaleProvider = ({ children, locale, onChangedLocale }: PropsWithChildren<LocaleProviderProps>) => {\n const {\n value: storedLocale,\n setValue: setStoredLocale,\n deleteValue: deleteStoredLocale,\n } = useLocalStorage<LocaleWithSystem>('locale', 'system')\n const [localePreference, setLocalePreference] = useState<LocaleWithSystem>('system')\n\n const resolvedLocale = useMemo(() => {\n if (locale && locale !== 'system') {\n return locale\n }\n if (storedLocale && storedLocale !== 'system') {\n return storedLocale\n }\n if (localePreference !== 'system') {\n return localePreference\n }\n return LocalizationUtil.DEFAULT_LOCALE\n }, [locale, localePreference, storedLocale])\n\n useEffect(() => {\n if(!locale) return\n if (locale === 'system') {\n deleteStoredLocale()\n } else {\n setStoredLocale(locale)\n }\n }, [locale]) // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n onChangedLocale?.(resolvedLocale)\n }, [resolvedLocale]) // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n const localesToTestAgainst = Object.values(LocalizationUtil.locals)\n\n const detectLanguage = () => {\n const matchingBrowserLanguage = window.navigator.languages\n .map(locale =>\n localesToTestAgainst.find(\n (test) => locale === test || locale.split('-')[0] === LocalizationUtil.localToLanguage(test)\n ))\n .filter((entry): entry is HightideTranslationLocales => entry !== undefined)\n\n if (matchingBrowserLanguage.length === 0) return\n\n const firstMatch = matchingBrowserLanguage[0]\n setLocalePreference(firstMatch)\n }\n detectLanguage()\n\n window.addEventListener('languagechange', detectLanguage)\n return () => {\n window.removeEventListener('languagechange', detectLanguage)\n }\n }, [])\n\n return (\n <LocaleContext.Provider value={{\n locale: resolvedLocale,\n setLocale: (newLocale) => {\n if (locale !== 'system') {\n console.warn('LocaleProvider: Attempting to change the ' +\n \"locale while setting a fixed locale won't have any effect. \" +\n 'Change the locale provided to the LocaleProvider instead.')\n }\n setStoredLocale(newLocale)\n }\n }}>\n {children}\n </LocaleContext.Provider>\n )\n}\n\nexport const useLocale = () => {\n const context = useContext(LocaleContext)\n if (!context) {\n throw new Error('useLocale must be used within LocaleContext. Try adding a LocaleProvider around your app.')\n }\n return context\n}\n\nexport const useLanguage = () => {\n const context = useContext(LocaleContext)\n if (!context) {\n throw new Error('useLanguage must be used within LocaleContext. Try adding a LocaleProvider around your app.')\n }\n return { language: LocalizationUtil.localToLanguage(context.locale) }\n}\n","// AUTO-GENERATED. DO NOT EDIT.\n/* eslint-disable @stylistic/quote-props */\n/* eslint-disable no-useless-escape */\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport type { Translation } from '@helpwave/internationalization'\nimport { TranslationGen } from '@helpwave/internationalization'\n\nexport const hightideTranslationLocales = ['de-DE', 'en-US'] as const\n\nexport type HightideTranslationLocales = typeof hightideTranslationLocales[number]\n\nexport type HightideTranslationEntries = {\n 'add': string,\n 'age': string,\n 'all': string,\n 'apply': string,\n 'back': string,\n 'cancel': string,\n 'carousel': string,\n 'change': string,\n 'chooseLanguage': string,\n 'chooseSlide': string,\n 'chooseTheme': string,\n 'clear': string,\n 'click': string,\n 'clickToCopy': string,\n 'clickToSelect': string,\n 'close': string,\n 'confirm': string,\n 'copied': string,\n 'copy': string,\n 'create': string,\n 'decline': string,\n 'delete': string,\n 'discard': string,\n 'discardChanges': string,\n 'done': string,\n 'edit': string,\n 'endDate': string,\n 'enterText': string,\n 'entryDate': string,\n 'error': string,\n 'errorOccurred': string,\n 'exit': string,\n 'fieldRequiredError': string,\n 'filter': string,\n 'gender': (values: { gender: string }) => string,\n 'goodToSeeYou': string,\n 'identifier': string,\n 'invalidEmail': string,\n 'invalidEmailError': string,\n 'language': string,\n 'less': string,\n 'loading': string,\n 'locale': string,\n 'max': string,\n 'maxLengthError': string,\n 'min': string,\n 'minLengthError': string,\n 'more': string,\n 'name': string,\n 'next': string,\n 'no': string,\n 'none': string,\n 'notEmpty': string,\n 'nothingFound': string,\n 'of': string,\n 'optional': string,\n 'outOfRangeNumber': (values: { min: number, max: number }) => string,\n 'outOfRangeSelectionItems': (values: { min: number, max: number }) => string,\n 'outOfRangeString': (values: { min: number, max: number }) => string,\n 'pleaseWait': string,\n 'previous': string,\n 'remove': string,\n 'required': string,\n 'reset': string,\n 'save': string,\n 'saved': string,\n 'search': string,\n 'select': string,\n 'selectOption': string,\n 'show': string,\n 'showLess': string,\n 'showMore': string,\n 'showSlide': (values: { index: number }) => string,\n 'slide': string,\n 'slideNavigation': string,\n 'slideOf': (values: { index: number, length: number }) => string,\n 'startDate': string,\n 'street': string,\n 'submit': string,\n 'success': string,\n 'text': string,\n 'themeMode': (values: { theme: string }) => string,\n 'themes': (values: { count: number }) => string,\n 'time.ago': string,\n 'time.agoDays': (values: { days: number }) => string,\n 'time.april': string,\n 'time.august': string,\n 'time.century': (values: { count: number }) => string,\n 'time.day': (values: { count: number }) => string,\n 'time.decade': (values: { count: number }) => string,\n 'time.december': string,\n 'time.february': string,\n 'time.hour': (values: { count: number }) => string,\n 'time.in': string,\n 'time.inDays': (values: { days: number }) => string,\n 'time.january': string,\n 'time.july': string,\n 'time.june': string,\n 'time.march': string,\n 'time.may': string,\n 'time.microsecond': (values: { count: number }) => string,\n 'time.millisecond': (values: { count: number }) => string,\n 'time.minute': (values: { count: number }) => string,\n 'time.month': (values: { count: number }) => string,\n 'time.monthName': (values: { month: string }) => string,\n 'time.nanosecond': (values: { count: number }) => string,\n 'time.november': string,\n 'time.october': string,\n 'time.second': (values: { count: number }) => string,\n 'time.september': string,\n 'time.today': string,\n 'time.tomorrow': string,\n 'time.year': (values: { count: number }) => string,\n 'time.yesterday': string,\n 'tooFewSelectionItems': (values: { min: number }) => string,\n 'tooLong': (values: { max: number }) => string,\n 'tooManySelectionItems': (values: { max: number }) => string,\n 'tooShort': (values: { min: number }) => string,\n 'unsavedChanges': string,\n 'unsavedChangesSaveQuestion': string,\n 'update': string,\n 'value': string,\n 'welcome': string,\n 'yes': string,\n}\n\nexport const hightideTranslation: Translation<HightideTranslationLocales, Partial<HightideTranslationEntries>> = {\n 'de-DE': {\n 'add': `Hinzufügen`,\n 'age': `Alter`,\n 'all': `Alle`,\n 'apply': `Anwenden`,\n 'back': `Zurück`,\n 'cancel': `Abbrechen`,\n 'carousel': `Karussell`,\n 'change': `Ändern`,\n 'chooseLanguage': `Wähle deine bevorzugte Sprache`,\n 'chooseSlide': `Wähle die angezeigte Slide aus`,\n 'chooseTheme': `Wähle dein bevorzugtes Farbschema.`,\n 'clear': `Löschen`,\n 'click': `Klicken`,\n 'clickToCopy': `Zum kopieren klicken`,\n 'clickToSelect': `Zum Auswählen drücken`,\n 'close': `Schließen`,\n 'confirm': `Bestätigen`,\n 'copied': `Kopiert`,\n 'copy': `Kopieren`,\n 'create': `Erstellen`,\n 'decline': `Ablehnen`,\n 'delete': `Löschen`,\n 'discard': `Verwerfen`,\n 'discardChanges': `Änderungen Verwerfen`,\n 'done': `Fertig`,\n 'edit': `Bearbeiten`,\n 'endDate': `Ende`,\n 'enterText': `Text hier eingeben`,\n 'entryDate': `Eintragsdatum`,\n 'error': `Fehler`,\n 'errorOccurred': `Ein Fehler ist aufgetreten`,\n 'exit': `Beenden`,\n 'fieldRequiredError': `Dieses Feld ist erforderlich.`,\n 'filter': `Filter`,\n 'gender': ({ gender }): string => {\n return TranslationGen.resolveSelect(gender, {\n 'male': `Männlich`,\n 'female': `Weiblich`,\n 'other': `Divers`,\n })\n },\n 'goodToSeeYou': `Schön dich zu sehen`,\n 'identifier': `Identifikator`,\n 'invalidEmail': `Die E-Mail ist ungültig.`,\n 'invalidEmailError': `Bitte geben Sie eine gültige E-Mail-Adresse ein.`,\n 'language': `Sprache`,\n 'less': `Weniger`,\n 'loading': `Lädt`,\n 'locale': `Locale`,\n 'max': `Max`,\n 'maxLengthError': `Maximale Länge überschritten.`,\n 'min': `Min`,\n 'minLengthError': `Mindestlänge nicht erreicht.`,\n 'more': `Mehr`,\n 'name': `Name`,\n 'next': `Weiter`,\n 'no': `Nein`,\n 'none': `Nichts`,\n 'notEmpty': `Das Feld darf nicht leer sein.`,\n 'nothingFound': `Nichts gefunden`,\n 'of': `von`,\n 'optional': `Optional`,\n 'outOfRangeNumber': ({ min, max }): string => {\n return `Der Wert muss zwischen ${min} und ${max} liegen.`\n },\n 'outOfRangeSelectionItems': ({ min, max }): string => {\n return `Es müssen zwischen ${min} und ${max} Elemente ausgewählt werden.`\n },\n 'outOfRangeString': ({ min, max }): string => {\n return `Der Wert muss zwischen ${min} und ${max} Zeichen lang sein.`\n },\n 'pleaseWait': `Bitte warten...`,\n 'previous': `Vorherige`,\n 'remove': `Entfernen`,\n 'required': `Erforderlich`,\n 'reset': `Zurücksetzen`,\n 'save': `Speichern`,\n 'saved': `Gespeichert`,\n 'search': `Suche`,\n 'select': `Select`,\n 'selectOption': `Option auswählen`,\n 'show': `Anzeigen`,\n 'showLess': `Weniger anzeigen`,\n 'showMore': `Mehr anzeigen`,\n 'showSlide': ({ index }): string => {\n return `Zeige Slide ${index}`\n },\n 'slide': `Slide`,\n 'slideNavigation': `Slide Navigation`,\n 'slideOf': ({ index, length }): string => {\n return `Slide ${index} von ${length} slides`\n },\n 'startDate': `Start`,\n 'street': `Straße`,\n 'submit': `Abschicken`,\n 'success': `Erfolg`,\n 'text': `Text`,\n 'themeMode': ({ theme }): string => {\n return TranslationGen.resolveSelect(theme, {\n 'dark': `Dunkel`,\n 'light': `Hell`,\n 'system': `System`,\n })\n },\n 'themes': ({ count }): string => {\n return TranslationGen.resolveSelect(count, {\n '=1': `Farbschema`,\n 'other': `Farbschemas`,\n })\n },\n 'time.ago': `vor`,\n 'time.agoDays': ({ days }): string => {\n return `var ${days} Tagen`\n },\n 'time.april': `April`,\n 'time.august': `August`,\n 'time.century': ({ count }): string => {\n return TranslationGen.resolveSelect(count, {\n '=1': `Jahrhundert`,\n 'other': `Jahrhunderte`,\n })\n },\n 'time.day': ({ count }): string => {\n return TranslationGen.resolveSelect(count, {\n '=1': `Tag`,\n 'other': `Tage`,\n })\n },\n 'time.decade': ({ count }): string => {\n return TranslationGen.resolveSelect(count, {\n '=1': `Jahrzehnt`,\n 'other': `Jahrzehnte`,\n })\n },\n 'time.december': `December`,\n 'time.february': `Febuar`,\n 'time.hour': ({ count }): string => {\n return TranslationGen.resolveSelect(count, {\n '=1': `Stunde`,\n 'other': `Stunden`,\n })\n },\n 'time.in': `in`,\n 'time.inDays': ({ days }): string => {\n return `in ${days} Tagen`\n },\n 'time.january': `Januar`,\n 'time.july': `Juli`,\n 'time.june': `Juni`,\n 'time.march': `März`,\n 'time.may': `Mai`,\n 'time.microsecond': ({ count }): string => {\n return TranslationGen.resolveSelect(count, {\n '=1': `Mikrosekunde`,\n 'other': `Mikrosekunden`,\n })\n },\n 'time.millisecond': ({ count }): string => {\n return TranslationGen.resolveSelect(count, {\n '=1': `Millisekunde`,\n 'other': `Millisekunden`,\n })\n },\n 'time.minute': ({ count }): string => {\n return TranslationGen.resolveSelect(count, {\n '=1': `Minute`,\n 'other': `Minuten`,\n })\n },\n 'time.month': ({ count }): string => {\n return TranslationGen.resolveSelect(count, {\n '=1': `Monat`,\n 'other': `Monate`,\n })\n },\n 'time.monthName': ({ month }): string => {\n return TranslationGen.resolveSelect(month, {\n 'january': `Januar`,\n 'february': `Februar`,\n 'march': `März`,\n 'april': `April`,\n 'may': `Mai`,\n 'june': `Juni`,\n 'july': `Juli`,\n 'august': `August`,\n 'september': `September`,\n 'october': `Oktober`,\n 'november': `November`,\n 'december': `Dezember`,\n 'other': `Unbekannter Monat`,\n })\n },\n 'time.nanosecond': ({ count }): string => {\n return TranslationGen.resolveSelect(count, {\n '=1': `Nanosekunde`,\n 'other': `Nanosekunden`,\n })\n },\n 'time.november': `November`,\n 'time.october': `October`,\n 'time.second': ({ count }): string => {\n return TranslationGen.resolveSelect(count, {\n '=1': `Sekunde`,\n 'other': `Sekunden`,\n })\n },\n 'time.september': `September`,\n 'time.today': `Heute`,\n 'time.tomorrow': `Morgen`,\n 'time.year': ({ count }): string => {\n return TranslationGen.resolveSelect(count, {\n '=1': `Jahr`,\n 'other': `Jahre`,\n })\n },\n 'time.yesterday': `Gestern`,\n 'tooFewSelectionItems': ({ min }): string => {\n return `Es müssen mindestens ${min} Elemente ausgewählt werden.`\n },\n 'tooLong': ({ max }): string => {\n return `Der Wert darf höchstens ${max} Zeichen enthalten.`\n },\n 'tooManySelectionItems': ({ max }): string => {\n return `Es müssen maximal ${max} Elemente ausgewählt werden.`\n },\n 'tooShort': ({ min }): string => {\n return `Der Wert muss mindestens ${min} Zeichen enthalten.`\n },\n 'unsavedChanges': `Ungespeicherte Änderungen`,\n 'unsavedChangesSaveQuestion': `Möchtest du die Änderungen speichern?`,\n 'update': `Update`,\n 'value': `Wert`,\n 'welcome': `Willkommen`,\n 'yes': `Ja`\n },\n 'en-US': {\n 'add': `Add`,\n 'age': `Age`,\n 'all': `All`,\n 'apply': `Apply`,\n 'back': `Back`,\n 'cancel': `Cancel`,\n 'carousel': `Carousel`,\n 'change': `Change`,\n 'chooseLanguage': `Choose your language`,\n 'chooseSlide': `Choose slide to display`,\n 'chooseTheme': `Choose your preferred color theme.`,\n 'clear': `Clear`,\n 'click': `Click`,\n 'clickToCopy': `Click to Copy`,\n 'clickToSelect': `Click to select`,\n 'close': `Close`,\n 'confirm': `Confirm`,\n 'copied': `Copied`,\n 'copy': `Copy`,\n 'create': `Create`,\n 'decline': `Decline`,\n 'delete': `Delete`,\n 'discard': `Discard`,\n 'discardChanges': `Discard Changes`,\n 'done': `Done`,\n 'edit': `Edit`,\n 'endDate': `End`,\n 'enterText': `Enter text here`,\n 'entryDate': `Entry Date`,\n 'error': `Error`,\n 'errorOccurred': `An error occurred`,\n 'exit': `Exit`,\n 'fieldRequiredError': `This field is required.`,\n 'filter': `Filter`,\n 'gender': ({ gender }): string => {\n return TranslationGen.resolveSelect(gender, {\n 'male': `Male`,\n 'female': `Female`,\n 'other': `Other`,\n })\n },\n 'goodToSeeYou': `Good to see you`,\n 'identifier': `Identifier`,\n 'invalidEmail': `The email is not valid.`,\n 'invalidEmailError': `Please enter a valid email address.`,\n 'language': `Language`,\n 'less': `Less`,\n 'loading': `Loading`,\n 'locale': `Locale`,\n 'max': `Max`,\n 'maxLengthError': `Maximum length exceeded.`,\n 'min': `Min`,\n 'minLengthError': `Minimum length not met.`,\n 'more': `More`,\n 'name': `Name`,\n 'next': `Next`,\n 'no': `No`,\n 'none': `None`,\n 'notEmpty': `The field cannot be empty.`,\n 'nothingFound': `Nothing found`,\n 'of': `of`,\n 'optional': `Optional`,\n 'outOfRangeNumber': ({ min, max }): string => {\n return `The value must be between ${min} and ${max}.`\n },\n 'outOfRangeSelectionItems': ({ min, max }): string => {\n return `Between ${min} and ${max} items must be selected.`\n },\n 'outOfRangeString': ({ min, max }): string => {\n return `The value needs to have between ${min} and ${max} characters.`\n },\n 'pleaseWait': `Please wait...`,\n 'previous': `Previous`,\n 'remove': `Remove`,\n 'required': `Required`,\n 'reset': `Reset`,\n 'save': `Save`,\n 'saved': `Saved`,\n 'search': `Search`,\n 'select': `Select`,\n 'selectOption': `Select an option`,\n 'show': `Show`,\n 'showLess': `Show less`,\n 'showMore': `Show more`,\n 'showSlide': ({ index }): string => {\n return `Show Slide ${index}`\n },\n 'slide': `Slide`,\n 'slideNavigation': `Slide navigation`,\n 'slideOf': ({ index, length }): string => {\n return `Slide ${index} of ${length} slides`\n },\n 'startDate': `Start`,\n 'street': `Street`,\n 'submit': `Submit`,\n 'success': `Success`,\n 'text': `Text`,\n 'themeMode': ({ theme }): string => {\n return TranslationGen.resolveSelect(theme, {\n 'dark': `Dark`,\n 'light': `Light`,\n 'system': `System`,\n })\n },\n 'themes': ({ count }): string => {\n return TranslationGen.resolveSelect(count, {\n '=1': `Theme`,\n 'other': `Themes`,\n })\n },\n 'time.ago': `ago`,\n 'time.agoDays': ({ days }): string => {\n return `days ${days} ago`\n },\n 'time.april': `April`,\n 'time.august': `August`,\n 'time.century': ({ count }): string => {\n return TranslationGen.resolveSelect(count, {\n '=1': `Century`,\n 'other': `Centuries`,\n })\n },\n 'time.day': ({ count }): string => {\n return TranslationGen.resolveSelect(count, {\n '=1': `Day`,\n 'other': `Days`,\n })\n },\n 'time.decade': ({ count }): string => {\n return TranslationGen.resolveSelect(count, {\n '=1': `Decade`,\n 'other': `Decades`,\n })\n },\n 'time.december': `December`,\n 'time.february': `Febuary`,\n 'time.hour': ({ count }): string => {\n return TranslationGen.resolveSelect(count, {\n '=1': `Hour`,\n 'other': `Hours`,\n })\n },\n 'time.in': `in`,\n 'time.inDays': ({ days }): string => {\n return `in ${days} days`\n },\n 'time.january': `January`,\n 'time.july': `July`,\n 'time.june': `June`,\n 'time.march': `March`,\n 'time.may': `May`,\n 'time.microsecond': ({ count }): string => {\n return TranslationGen.resolveSelect(count, {\n '=1': `Microsecond`,\n 'other': `Microseconds`,\n })\n },\n 'time.millisecond': ({ count }): string => {\n return TranslationGen.resolveSelect(count, {\n '=1': `Millisecond`,\n 'other': `Milliseconds`,\n })\n },\n 'time.minute': ({ count }): string => {\n return TranslationGen.resolveSelect(count, {\n '=1': `Minute`,\n 'other': `Minutes`,\n })\n },\n 'time.month': ({ count }): string => {\n return TranslationGen.resolveSelect(count, {\n '=1': `Month`,\n 'other': `Months`,\n })\n },\n 'time.monthName': ({ month }): string => {\n return TranslationGen.resolveSelect(month, {\n 'january': `January`,\n 'february': `February`,\n 'march': `March`,\n 'april': `April`,\n 'may': `May`,\n 'june': `June`,\n 'july': `July`,\n 'august': `August`,\n 'september': `September`,\n 'october': `October`,\n 'november': `November`,\n 'december': `December`,\n 'other': `Unknown Month`,\n })\n },\n 'time.nanosecond': ({ count }): string => {\n return TranslationGen.resolveSelect(count, {\n '=1': `Nanosecond`,\n 'other': `Nanoseconds`,\n })\n },\n 'time.november': `November`,\n 'time.october': `October`,\n 'time.second': ({ count }): string => {\n return TranslationGen.resolveSelect(count, {\n '=1': `Second`,\n 'other': `Seconds`,\n })\n },\n 'time.september': `September`,\n 'time.today': `Today`,\n 'time.tomorrow': `Tomorrow`,\n 'time.year': ({ count }): string => {\n return TranslationGen.resolveSelect(count, {\n '=1': `Year`,\n 'other': `Years`,\n })\n },\n 'time.yesterday': `Yesterday`,\n 'tooFewSelectionItems': ({ min }): string => {\n return `Select at least ${min} items.`\n },\n 'tooLong': ({ max }): string => {\n return `The value requires less than ${max} characters.`\n },\n 'tooManySelectionItems': ({ max }): string => {\n return `Select at most ${max} items.`\n },\n 'tooShort': ({ min }): string => {\n return `The value requires at least ${min} characters.`\n },\n 'unsavedChanges': `Unsaved Changes`,\n 'unsavedChangesSaveQuestion': `Do you want to save your changes?`,\n 'update': `Update`,\n 'value': `Value`,\n 'welcome': `Welcome`,\n 'yes': `Yes`\n }\n}\n\n","import type { HightideTranslationLocales } from '@/src/i18n/translations'\nimport { hightideTranslationLocales } from '@/src/i18n/translations'\n\n/**\n * The supported locales' names in their respective language\n */\nconst localsNames: Record<HightideTranslationLocales, string> = {\n 'en-US': 'English (US)',\n 'de-DE': 'Deutsch',\n}\n\n/**\n * The default locale\n */\nconst DEFAULT_LOCALE: HightideTranslationLocales = 'en-US'\n\nfunction localeToLanguage(locale: HightideTranslationLocales) {\n return locale.split('-')[0]\n}\n\n/**\n * A constant definition for holding data regarding languages\n */\nexport const LocalizationUtil = {\n locals: hightideTranslationLocales,\n localToLanguage: localeToLanguage,\n DEFAULT_LOCALE,\n languagesLocalNames: localsNames,\n}\n","import { useLocale } from '@/src/i18n/LocaleProvider'\nimport type {\n PartialTranslationExtension,\n Translation,\n TranslationEntries\n} from '@helpwave/internationalization'\nimport { combineTranslation, ICUUtil } from '@helpwave/internationalization'\nimport { ArrayUtil } from '@/src/utils/array'\nimport type { SingleOrArray } from '@/src/utils/typing'\nimport type { HightideTranslationEntries, HightideTranslationLocales } from '@/src/i18n/translations'\nimport { hightideTranslation } from '@/src/i18n/translations'\n\n/**\n * Use for translations where you know that all values are ICU strings.\n *\n * This most likely is the case for Translations provided by a backend,\n * for more dynamic and typesafe translation use useTranslation instead\n */\nexport function useICUTranslation<L extends string, T extends Record<string, string>>(\n translations: Translation<L, T>[] | Translation<L, T>,\n locale: L\n) {\n translations = Array.isArray(translations) ? translations : [translations]\n\n return function translate(\n key: string,\n values?: Record<string, object>\n ): string {\n try {\n for (let i = 0; i < translations.length; i++) {\n const localizedTranslation = translations[i][locale]\n if (!localizedTranslation) continue\n\n const msg = localizedTranslation[key]\n if (typeof msg === 'string') {\n return ICUUtil.interpret(msg, values)\n }\n }\n console.warn(`useTranslation: No translation for key \"${key}\" found.`)\n } catch (e) {\n console.error(`useTranslation: Error translating key \"${String(key)}\"`, e)\n }\n\n return `{{${String(locale)}:${String(key)}}}`\n }\n}\n\ntype UseHidetideTranslationOverwrites = {\n locale?: HightideTranslationLocales,\n}\n\ntype HidetideTranslationExtension<L extends string, T extends TranslationEntries>\n = PartialTranslationExtension<L, HightideTranslationLocales, T, HightideTranslationEntries>\n/**\n * A wrapper for the useHightideTranslation to load and specify the translations for the library\n */\nexport function useHightideTranslation<L extends string, T extends TranslationEntries>(\n extensions?: SingleOrArray<HidetideTranslationExtension<L,T>>,\n overwrites?: UseHidetideTranslationOverwrites\n) {\n const { locale: inferredLocale } = useLocale()\n const locale = overwrites?.locale ?? inferredLocale\n const translationExtensions = ArrayUtil.resolveSingleOrArray(extensions)\n\n return combineTranslation<L | HightideTranslationLocales, T & HightideTranslationEntries>([\n ...translationExtensions,\n hightideTranslation as HidetideTranslationExtension<L,T>\n ], locale)\n}\n","export const equalSizeGroups = <T>(array: T[], groupSize: number): T[][] => {\n if (groupSize <= 0) {\n console.warn(`group size should be greater than 0: groupSize = ${groupSize}`)\n return [[...array]]\n }\n\n const groups = []\n for (let i = 0; i < array.length; i += groupSize) {\n groups.push(array.slice(i, Math.min(i + groupSize, array.length)))\n }\n return groups\n}\n\nexport type RangeOptions = {\n /** Whether the range can be defined empty via end < start without a warning */\n allowEmptyRange: boolean,\n stepSize: number,\n exclusiveStart: boolean,\n exclusiveEnd: boolean,\n}\n\nconst defaultRangeOptions: RangeOptions = {\n allowEmptyRange: false,\n stepSize: 1,\n exclusiveStart: false,\n exclusiveEnd: true,\n}\n\n/**\n * @param endOrRange The end value or a range [start, end], end is exclusive\n * @param options the options for defining the range\n */\nexport const range = (endOrRange: number | [number, number], options?: Partial<RangeOptions>): number[] => {\n const { allowEmptyRange, stepSize, exclusiveStart, exclusiveEnd } = { ...defaultRangeOptions, ...options }\n let start = 0\n let end: number\n if (typeof endOrRange === 'number') {\n end = endOrRange\n } else {\n start = endOrRange[0]\n end = endOrRange[1]\n }\n if (!exclusiveEnd) {\n end -= 1\n }\n if (exclusiveStart) {\n start += 1\n }\n\n if (end - 1 < start) {\n if (!allowEmptyRange) {\n console.warn(`range: end (${end}) < start (${start}) should be allowed explicitly, set options.allowEmptyRange to true`)\n }\n return []\n }\n return Array.from({ length: end - start }, (_, index) => index * stepSize + start)\n}\n\n/** Finds the closest match\n * @param list The list of all possible matches\n * @param firstCloser Return whether item1 is closer than item2\n */\nexport const closestMatch = <T>(list: T[], firstCloser: (item1: T, item2: T) => boolean) => {\n return list.reduce((item1, item2) => {\n return firstCloser(item1, item2) ? item1 : item2\n })\n}\n\n/**\n * returns the item in middle of a list and its neighbours before and after\n * e.g. [1,2,3,4,5,6] for item = 1 would return [5,6,1,2,3]\n */\nexport const getNeighbours = <T>(list: T[], item: T, neighbourDistance: number = 2) => {\n const index = list.indexOf(item)\n const totalItems = neighbourDistance * 2 + 1\n if (list.length < totalItems) {\n console.warn('List is to short')\n return list\n }\n\n if (index === -1) {\n console.error('item not found in list')\n return list.splice(0, totalItems)\n }\n\n let start = index - neighbourDistance\n if (start < 0) {\n start += list.length\n }\n const end = (index + neighbourDistance + 1) % list.length\n\n const result: T[] = []\n let ignoreOnce = list.length === totalItems\n for (let i = start; i !== end || ignoreOnce; i = (i + 1) % list.length) {\n result.push(list[i]!)\n if (end === i && ignoreOnce) {\n ignoreOnce = false\n }\n }\n return result\n}\n\nexport const createLoopingListWithIndex = <T>(list: T[], startIndex: number = 0, length: number = 0, forwards: boolean = true) => {\n if (length < 0) {\n console.warn(`createLoopingList: length must be >= 0, given ${length}`)\n } else if (length === 0) {\n length = list.length\n }\n\n const returnList: [number, T][] = []\n\n if (forwards) {\n for (let i = startIndex; returnList.length < length; i = (i + 1) % list.length) {\n returnList.push([i, list[i]!])\n }\n } else {\n for (let i = startIndex; returnList.length < length; i = i === 0 ? i = list.length - 1 : i - 1) {\n returnList.push([i, list[i]!])\n }\n }\n\n return returnList\n}\n\nexport const createLoopingList = <T>(list: T[], startIndex: number = 0, length: number = 0, forwards: boolean = true) => {\n return createLoopingListWithIndex(list, startIndex, length, forwards).map(([_, item]) => item)\n}\n\n/**\n * @param list The list to be changed\n * @param move The shifting applied to the array (can be negative)\n */\nconst moveItems = <T>(list: T[], move: number = 0) => {\n const result = []\n let start = move\n if (start < 0) {\n start = list.length - move\n }\n start = start % list.length\n for (let i = 0; i < list.length; i++) {\n result[i] = list[(i + start) % list.length]\n }\n return result\n}\n\nfunction resolveSingleOrArray<T>(value: T | T[]): T[] {\n if (Array.isArray(value)) {\n return value\n } else if (value) {\n return [value]\n }\n return []\n}\n\nexport const ArrayUtil = {\n unique: <T>(list: T[]): T[] => {\n const seen = new Set<T>()\n return list.filter((item) => {\n if (seen.has(item)) {\n return false\n }\n seen.add(item)\n return true\n })\n },\n difference: <T>(list: T[], removeList: T[]): T[] => {\n const remove = new Set<T>(removeList)\n return list.filter((item) => !remove.has(item))\n },\n moveItems,\n resolveSingleOrArray\n}\n","import { validateEmail } from '@/src/utils/emailValidation'\nimport { useHightideTranslation } from '@/src/i18n/useHightideTranslation'\n\nexport type ValidatorError =\n 'notEmpty'\n | 'invalidEmail'\n | 'tooLong'\n | 'tooShort'\n | 'outOfRangeString'\n | 'outOfRangeNumber'\n | 'outOfRangeSelectionItems'\n | 'tooFewSelectionItems'\n | 'tooManySelectionItems'\nexport type ValidatorResult = ValidatorError | undefined\n\nconst notEmpty = (value: unknown): ValidatorResult => {\n if (!value) {\n return 'notEmpty'\n }\n}\n\ntype BoundsValidatorResult = 'lower' | 'upper' | 'range' | 'none'\nconst boundsValidator = (length: number | undefined, bounds: [number | undefined, number | undefined]): BoundsValidatorResult => {\n const [min, max] = bounds\n\n if (min !== undefined && max !== undefined && (length === undefined || length < min || length > max)) {\n return 'range'\n }\n\n if (min !== undefined && (length === undefined || length < min)) {\n return 'lower'\n }\n\n if (max !== undefined && length !== undefined && length > max) {\n return 'upper'\n }\n\n return 'none'\n}\n\nconst lengthValidator = (value: string | undefined, bounds: [number | undefined, number | undefined]): ValidatorResult => {\n const mapping: Record<BoundsValidatorResult, ValidatorResult> = {\n range: 'outOfRangeString',\n lower: 'tooShort',\n upper: 'tooLong',\n none: undefined\n }\n return mapping[boundsValidator(value?.length, bounds)]\n}\n\nconst selectionValidator = (value: unknown[], bounds: [number | undefined, number | undefined]): ValidatorResult => {\n const mapping: Record<BoundsValidatorResult, ValidatorResult> = {\n range: 'outOfRangeSelectionItems',\n lower: 'tooFewSelectionItems',\n upper: 'tooManySelectionItems',\n none: undefined\n }\n return mapping[boundsValidator(value?.length, bounds)]\n}\n\nconst emailValidator = (value: string | undefined) => {\n if (!value || !validateEmail(value)) {\n return 'invalidEmail'\n }\n}\n\n\nexport const UseValidators = {\n notEmpty: notEmpty,\n length: lengthValidator,\n email: emailValidator,\n selection: selectionValidator,\n}\n\nexport const useTranslatedValidators = () => {\n const translation = useHightideTranslation()\n\n return {\n notEmpty: (value: unknown) => {\n const result = notEmpty(value)\n if (result) {\n return translation(result)\n }\n },\n length: (value: string | undefined, length: [number | undefined, number | undefined]) => {\n const [min, max] = length\n const result = lengthValidator(value, length)\n if (result) {\n return translation(result as 'outOfRangeString' | 'tooShort' | 'tooLong', { min, max })\n }\n },\n email: (value: string) => {\n const result = emailValidator(value)\n if (result) {\n return translation(result as 'invalidEmail')\n }\n },\n selection: (value: unknown[] | undefined, length: [number | undefined, number | undefined]) => {\n const [min, max] = length\n const result = selectionValidator(value, length)\n if (result) {\n return translation(result as\n 'outOfRangeSelectionItems' | 'tooFewSelectionItems' | 'tooManySelectionItems',\n { min, max })\n }\n }\n }\n}"],"mappings":"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","names":["useEffect","useCallback","useEffect","useState","useEffect","listener","useState","useCallback","useEffect","active","useEffect","useState","useCallback","useEffect","useState","useState","useCallback","useEffect","useEffect","useState","useCallback","useState","useCallback","useState","useEffect","useState","defaultOptions","useEffect","useEffect","useState","useState","useEffect","useEffect","useCallback","useEffect","useState","useState","useCallback","useEffect","useEffect","useMemo","useState"]}
|
package/dist/hooks/useDelay.cjs
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __export = (target, all) => {
|
|
6
|
-
for (var name in all)
|
|
7
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
-
};
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
-
|
|
19
|
-
// src/hooks/useDelay.ts
|
|
20
|
-
var useDelay_exports = {};
|
|
21
|
-
__export(useDelay_exports, {
|
|
22
|
-
useDelay: () => useDelay
|
|
23
|
-
});
|
|
24
|
-
module.exports = __toCommonJS(useDelay_exports);
|
|
25
|
-
var import_react = require("react");
|
|
26
|
-
var defaultOptions = {
|
|
27
|
-
delay: 3e3,
|
|
28
|
-
disabled: false
|
|
29
|
-
};
|
|
30
|
-
function useDelay(options) {
|
|
31
|
-
const [timer, setTimer] = (0, import_react.useState)(void 0);
|
|
32
|
-
const { delay, disabled } = {
|
|
33
|
-
...defaultOptions,
|
|
34
|
-
...options
|
|
35
|
-
};
|
|
36
|
-
const clearTimer = () => {
|
|
37
|
-
clearTimeout(timer);
|
|
38
|
-
setTimer(void 0);
|
|
39
|
-
};
|
|
40
|
-
const restartTimer = (onDelayFinish) => {
|
|
41
|
-
if (disabled) {
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
clearTimeout(timer);
|
|
45
|
-
setTimer(setTimeout(() => {
|
|
46
|
-
onDelayFinish();
|
|
47
|
-
setTimer(void 0);
|
|
48
|
-
}, delay));
|
|
49
|
-
};
|
|
50
|
-
(0, import_react.useEffect)(() => {
|
|
51
|
-
return () => {
|
|
52
|
-
clearTimeout(timer);
|
|
53
|
-
};
|
|
54
|
-
}, [timer]);
|
|
55
|
-
(0, import_react.useEffect)(() => {
|
|
56
|
-
if (disabled) {
|
|
57
|
-
clearTimeout(timer);
|
|
58
|
-
setTimer(void 0);
|
|
59
|
-
}
|
|
60
|
-
}, [disabled, timer]);
|
|
61
|
-
return { restartTimer, clearTimer, hasActiveTimer: !!timer };
|
|
62
|
-
}
|
|
63
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
64
|
-
0 && (module.exports = {
|
|
65
|
-
useDelay
|
|
66
|
-
});
|
|
67
|
-
//# sourceMappingURL=useDelay.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/useDelay.ts"],"sourcesContent":["import { useEffect, useState } from 'react'\n\nexport type UseDelayOptionsResolved = {\n delay: number,\n disabled: boolean,\n}\n\nexport type UseDelayOptions = Partial<UseDelayOptionsResolved>\n\nconst defaultOptions: UseDelayOptionsResolved = {\n delay: 3000,\n disabled: false,\n}\n\nexport function useDelay(options?: UseDelayOptions) {\n const [timer, setTimer] = useState<NodeJS.Timeout | undefined>(undefined)\n const { delay, disabled }: UseDelayOptionsResolved = {\n ...defaultOptions,\n ...options\n }\n\n const clearTimer = () => {\n clearTimeout(timer)\n setTimer(undefined)\n }\n\n const restartTimer = (onDelayFinish: () => void) => {\n if(disabled) {\n return\n }\n clearTimeout(timer)\n setTimer(setTimeout(() => {\n onDelayFinish()\n setTimer(undefined)\n }, delay))\n }\n\n useEffect(() => {\n return () => {\n clearTimeout(timer)\n }\n }, [timer])\n\n useEffect(() => {\n if(disabled){\n clearTimeout(timer)\n setTimer(undefined)\n }\n }, [disabled, timer])\n\n return { restartTimer, clearTimer, hasActiveTimer: !!timer }\n}"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAoC;AASpC,IAAM,iBAA0C;AAAA,EAC9C,OAAO;AAAA,EACP,UAAU;AACZ;AAEO,SAAS,SAAS,SAA2B;AAClD,QAAM,CAAC,OAAO,QAAQ,QAAI,uBAAqC,MAAS;AACxE,QAAM,EAAE,OAAO,SAAS,IAA6B;AAAA,IACnD,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAEA,QAAM,aAAa,MAAM;AACvB,iBAAa,KAAK;AAClB,aAAS,MAAS;AAAA,EACpB;AAEA,QAAM,eAAe,CAAC,kBAA8B;AAClD,QAAG,UAAU;AACX;AAAA,IACF;AACA,iBAAa,KAAK;AAClB,aAAS,WAAW,MAAM;AACxB,oBAAc;AACd,eAAS,MAAS;AAAA,IACpB,GAAG,KAAK,CAAC;AAAA,EACX;AAEA,8BAAU,MAAM;AACd,WAAO,MAAM;AACX,mBAAa,KAAK;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAEV,8BAAU,MAAM;AACd,QAAG,UAAS;AACV,mBAAa,KAAK;AAClB,eAAS,MAAS;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,UAAU,KAAK,CAAC;AAEpB,SAAO,EAAE,cAAc,YAAY,gBAAgB,CAAC,CAAC,MAAM;AAC7D;","names":[]}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
type UseDelayOptionsResolved = {
|
|
2
|
-
delay: number;
|
|
3
|
-
disabled: boolean;
|
|
4
|
-
};
|
|
5
|
-
type UseDelayOptions = Partial<UseDelayOptionsResolved>;
|
|
6
|
-
declare function useDelay(options?: UseDelayOptions): {
|
|
7
|
-
restartTimer: (onDelayFinish: () => void) => void;
|
|
8
|
-
clearTimer: () => void;
|
|
9
|
-
hasActiveTimer: boolean;
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
export { type UseDelayOptions, type UseDelayOptionsResolved, useDelay };
|
package/dist/hooks/useDelay.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
type UseDelayOptionsResolved = {
|
|
2
|
-
delay: number;
|
|
3
|
-
disabled: boolean;
|
|
4
|
-
};
|
|
5
|
-
type UseDelayOptions = Partial<UseDelayOptionsResolved>;
|
|
6
|
-
declare function useDelay(options?: UseDelayOptions): {
|
|
7
|
-
restartTimer: (onDelayFinish: () => void) => void;
|
|
8
|
-
clearTimer: () => void;
|
|
9
|
-
hasActiveTimer: boolean;
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
export { type UseDelayOptions, type UseDelayOptionsResolved, useDelay };
|
package/dist/hooks/useDelay.js
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
// src/hooks/useDelay.ts
|
|
2
|
-
import { useEffect, useState } from "react";
|
|
3
|
-
var defaultOptions = {
|
|
4
|
-
delay: 3e3,
|
|
5
|
-
disabled: false
|
|
6
|
-
};
|
|
7
|
-
function useDelay(options) {
|
|
8
|
-
const [timer, setTimer] = useState(void 0);
|
|
9
|
-
const { delay, disabled } = {
|
|
10
|
-
...defaultOptions,
|
|
11
|
-
...options
|
|
12
|
-
};
|
|
13
|
-
const clearTimer = () => {
|
|
14
|
-
clearTimeout(timer);
|
|
15
|
-
setTimer(void 0);
|
|
16
|
-
};
|
|
17
|
-
const restartTimer = (onDelayFinish) => {
|
|
18
|
-
if (disabled) {
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
clearTimeout(timer);
|
|
22
|
-
setTimer(setTimeout(() => {
|
|
23
|
-
onDelayFinish();
|
|
24
|
-
setTimer(void 0);
|
|
25
|
-
}, delay));
|
|
26
|
-
};
|
|
27
|
-
useEffect(() => {
|
|
28
|
-
return () => {
|
|
29
|
-
clearTimeout(timer);
|
|
30
|
-
};
|
|
31
|
-
}, [timer]);
|
|
32
|
-
useEffect(() => {
|
|
33
|
-
if (disabled) {
|
|
34
|
-
clearTimeout(timer);
|
|
35
|
-
setTimer(void 0);
|
|
36
|
-
}
|
|
37
|
-
}, [disabled, timer]);
|
|
38
|
-
return { restartTimer, clearTimer, hasActiveTimer: !!timer };
|
|
39
|
-
}
|
|
40
|
-
export {
|
|
41
|
-
useDelay
|
|
42
|
-
};
|
|
43
|
-
//# sourceMappingURL=useDelay.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/useDelay.ts"],"sourcesContent":["import { useEffect, useState } from 'react'\n\nexport type UseDelayOptionsResolved = {\n delay: number,\n disabled: boolean,\n}\n\nexport type UseDelayOptions = Partial<UseDelayOptionsResolved>\n\nconst defaultOptions: UseDelayOptionsResolved = {\n delay: 3000,\n disabled: false,\n}\n\nexport function useDelay(options?: UseDelayOptions) {\n const [timer, setTimer] = useState<NodeJS.Timeout | undefined>(undefined)\n const { delay, disabled }: UseDelayOptionsResolved = {\n ...defaultOptions,\n ...options\n }\n\n const clearTimer = () => {\n clearTimeout(timer)\n setTimer(undefined)\n }\n\n const restartTimer = (onDelayFinish: () => void) => {\n if(disabled) {\n return\n }\n clearTimeout(timer)\n setTimer(setTimeout(() => {\n onDelayFinish()\n setTimer(undefined)\n }, delay))\n }\n\n useEffect(() => {\n return () => {\n clearTimeout(timer)\n }\n }, [timer])\n\n useEffect(() => {\n if(disabled){\n clearTimeout(timer)\n setTimer(undefined)\n }\n }, [disabled, timer])\n\n return { restartTimer, clearTimer, hasActiveTimer: !!timer }\n}"],"mappings":";AAAA,SAAS,WAAW,gBAAgB;AASpC,IAAM,iBAA0C;AAAA,EAC9C,OAAO;AAAA,EACP,UAAU;AACZ;AAEO,SAAS,SAAS,SAA2B;AAClD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAqC,MAAS;AACxE,QAAM,EAAE,OAAO,SAAS,IAA6B;AAAA,IACnD,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAEA,QAAM,aAAa,MAAM;AACvB,iBAAa,KAAK;AAClB,aAAS,MAAS;AAAA,EACpB;AAEA,QAAM,eAAe,CAAC,kBAA8B;AAClD,QAAG,UAAU;AACX;AAAA,IACF;AACA,iBAAa,KAAK;AAClB,aAAS,WAAW,MAAM;AACxB,oBAAc;AACd,eAAS,MAAS;AAAA,IACpB,GAAG,KAAK,CAAC;AAAA,EACX;AAEA,YAAU,MAAM;AACd,WAAO,MAAM;AACX,mBAAa,KAAK;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAEV,YAAU,MAAM;AACd,QAAG,UAAS;AACV,mBAAa,KAAK;AAClB,eAAS,MAAS;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,UAAU,KAAK,CAAC;AAEpB,SAAO,EAAE,cAAc,YAAY,gBAAgB,CAAC,CAAC,MAAM;AAC7D;","names":[]}
|
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
|
-
// src/hooks/useFloatingElement.ts
|
|
21
|
-
var useFloatingElement_exports = {};
|
|
22
|
-
__export(useFloatingElement_exports, {
|
|
23
|
-
useFloatingElement: () => useFloatingElement
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(useFloatingElement_exports);
|
|
26
|
-
var import_react2 = require("react");
|
|
27
|
-
|
|
28
|
-
// src/utils/math.ts
|
|
29
|
-
var clamp = (value, range = [0, 1]) => {
|
|
30
|
-
const [min, max] = range;
|
|
31
|
-
return Math.min(Math.max(value, min), max);
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
// src/hooks/focus/useIsMounted.ts
|
|
35
|
-
var import_react = require("react");
|
|
36
|
-
var isClient = typeof window !== "undefined" && typeof document !== "undefined";
|
|
37
|
-
var useIsomorphicEffect = isClient ? import_react.useLayoutEffect : import_react.useEffect;
|
|
38
|
-
var useIsMounted = () => {
|
|
39
|
-
const [isMounted, setIsMounted] = (0, import_react.useState)(false);
|
|
40
|
-
useIsomorphicEffect(() => {
|
|
41
|
-
setIsMounted(true);
|
|
42
|
-
return () => {
|
|
43
|
-
setIsMounted(false);
|
|
44
|
-
};
|
|
45
|
-
}, []);
|
|
46
|
-
return isMounted;
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
// src/hooks/useFloatingElement.ts
|
|
50
|
-
function calculatePosition({
|
|
51
|
-
windowRect,
|
|
52
|
-
containerRect,
|
|
53
|
-
anchorRect,
|
|
54
|
-
options
|
|
55
|
-
}) {
|
|
56
|
-
const { verticalAlignment, horizontalAlignment, gap, screenPadding } = options;
|
|
57
|
-
const windowWidth = windowRect.width;
|
|
58
|
-
const windowHeight = windowRect.height;
|
|
59
|
-
const maxWidth = windowWidth - 2 * screenPadding;
|
|
60
|
-
const maxHeight = windowHeight - 2 * screenPadding;
|
|
61
|
-
const width = Math.min(containerRect.width, maxWidth);
|
|
62
|
-
const height = Math.min(containerRect.height, maxHeight);
|
|
63
|
-
const leftSuggestion = {
|
|
64
|
-
beforeStart: anchorRect.left - width - gap,
|
|
65
|
-
afterStart: anchorRect.left,
|
|
66
|
-
center: anchorRect.left + anchorRect.width / 2 - width / 2,
|
|
67
|
-
beforeEnd: anchorRect.right - width,
|
|
68
|
-
afterEnd: anchorRect.right + gap
|
|
69
|
-
}[horizontalAlignment];
|
|
70
|
-
const topSuggestion = {
|
|
71
|
-
beforeStart: anchorRect.top - height - gap,
|
|
72
|
-
afterStart: anchorRect.top,
|
|
73
|
-
center: anchorRect.top + anchorRect.height / 2 - height / 2,
|
|
74
|
-
beforeEnd: anchorRect.bottom - height,
|
|
75
|
-
afterEnd: anchorRect.bottom + gap
|
|
76
|
-
}[verticalAlignment];
|
|
77
|
-
const left = clamp(leftSuggestion, [
|
|
78
|
-
screenPadding,
|
|
79
|
-
windowWidth - screenPadding - width
|
|
80
|
-
]);
|
|
81
|
-
const top = clamp(topSuggestion, [
|
|
82
|
-
screenPadding,
|
|
83
|
-
windowHeight - screenPadding - height
|
|
84
|
-
]);
|
|
85
|
-
return {
|
|
86
|
-
left,
|
|
87
|
-
top,
|
|
88
|
-
maxWidth,
|
|
89
|
-
maxHeight
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
function useFloatingElement({
|
|
93
|
-
active = true,
|
|
94
|
-
windowRef,
|
|
95
|
-
anchorRef,
|
|
96
|
-
containerRef,
|
|
97
|
-
isPolling = false,
|
|
98
|
-
pollingInterval = 100,
|
|
99
|
-
verticalAlignment = "afterEnd",
|
|
100
|
-
horizontalAlignment = "afterStart",
|
|
101
|
-
screenPadding = 16,
|
|
102
|
-
gap = 4
|
|
103
|
-
}) {
|
|
104
|
-
const [style, setStyle] = (0, import_react2.useState)();
|
|
105
|
-
const isMounted = useIsMounted();
|
|
106
|
-
const calculate = (0, import_react2.useCallback)(() => {
|
|
107
|
-
const containerRect = containerRef.current.getBoundingClientRect();
|
|
108
|
-
const windowRect = windowRef?.current.getBoundingClientRect() ?? {
|
|
109
|
-
top: 0,
|
|
110
|
-
bottom: window.innerHeight,
|
|
111
|
-
left: 0,
|
|
112
|
-
right: window.innerWidth,
|
|
113
|
-
width: window.innerWidth,
|
|
114
|
-
height: window.innerHeight
|
|
115
|
-
};
|
|
116
|
-
const anchorElement = anchorRef?.current;
|
|
117
|
-
if (anchorRef && !anchorElement) {
|
|
118
|
-
console.warn("FloatingContainer anchor provided, but its value is undefined");
|
|
119
|
-
}
|
|
120
|
-
const anchorRect = anchorElement?.getBoundingClientRect() ?? windowRect;
|
|
121
|
-
const calculateProps = {
|
|
122
|
-
windowRect,
|
|
123
|
-
anchorRect,
|
|
124
|
-
containerRect,
|
|
125
|
-
options: {
|
|
126
|
-
horizontalAlignment,
|
|
127
|
-
verticalAlignment,
|
|
128
|
-
screenPadding,
|
|
129
|
-
gap
|
|
130
|
-
}
|
|
131
|
-
};
|
|
132
|
-
setStyle(calculatePosition(calculateProps));
|
|
133
|
-
}, [anchorRef, containerRef, gap, horizontalAlignment, screenPadding, verticalAlignment, windowRef]);
|
|
134
|
-
const height = containerRef.current?.getBoundingClientRect().height;
|
|
135
|
-
const width = containerRef.current?.getBoundingClientRect().width;
|
|
136
|
-
(0, import_react2.useEffect)(() => {
|
|
137
|
-
if (active && isMounted) {
|
|
138
|
-
calculate();
|
|
139
|
-
} else {
|
|
140
|
-
setStyle(void 0);
|
|
141
|
-
}
|
|
142
|
-
}, [calculate, active, isMounted, height, width]);
|
|
143
|
-
(0, import_react2.useEffect)(() => {
|
|
144
|
-
window.addEventListener("resize", calculate);
|
|
145
|
-
let timeout;
|
|
146
|
-
if (isPolling) {
|
|
147
|
-
timeout = setInterval(calculate, pollingInterval);
|
|
148
|
-
}
|
|
149
|
-
return () => {
|
|
150
|
-
window.removeEventListener("resize", calculate);
|
|
151
|
-
if (timeout) {
|
|
152
|
-
clearInterval(timeout);
|
|
153
|
-
}
|
|
154
|
-
};
|
|
155
|
-
}, [calculate, isPolling, pollingInterval]);
|
|
156
|
-
return style;
|
|
157
|
-
}
|
|
158
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
159
|
-
0 && (module.exports = {
|
|
160
|
-
useFloatingElement
|
|
161
|
-
});
|
|
162
|
-
//# sourceMappingURL=useFloatingElement.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/useFloatingElement.ts","../../src/utils/math.ts","../../src/hooks/focus/useIsMounted.ts"],"sourcesContent":["'use client'\n\nimport type { CSSProperties, MutableRefObject } from 'react'\nimport { useCallback, useEffect, useState } from 'react'\nimport { clamp } from '@/src/utils/math'\nimport { useIsMounted } from '@/src/hooks/focus/useIsMounted'\n\nexport type FloatingElementAlignment = 'beforeStart' | 'afterStart' | 'center' | 'beforeEnd' | 'afterEnd'\n\ntype RectangleBounds = {\n top: number,\n right: number,\n bottom: number,\n left: number,\n width: number,\n height: number,\n}\n\ntype CalculatePositionOptions = {\n verticalAlignment?: FloatingElementAlignment,\n horizontalAlignment?: FloatingElementAlignment,\n screenPadding?: number,\n gap?: number,\n}\n\ntype CalculatePositionProps = {\n windowRect: RectangleBounds,\n containerRect: RectangleBounds,\n anchorRect: RectangleBounds,\n options: CalculatePositionOptions,\n}\n\ntype UseFloatingElementStyle = {\n left: number,\n top: number,\n maxWidth: number,\n maxHeight: number,\n}\n\nfunction calculatePosition({\n windowRect,\n containerRect,\n anchorRect,\n options,\n }: CalculatePositionProps): UseFloatingElementStyle {\n const { verticalAlignment, horizontalAlignment, gap, screenPadding } = options\n const windowWidth = windowRect.width\n const windowHeight = windowRect.height\n\n const maxWidth = windowWidth - 2 * screenPadding\n const maxHeight = windowHeight - 2 * screenPadding\n\n const width = Math.min(containerRect.width, maxWidth)\n const height = Math.min(containerRect.height, maxHeight)\n\n const leftSuggestion = {\n beforeStart: anchorRect.left - width - gap,\n afterStart: anchorRect.left,\n center: anchorRect.left + anchorRect.width / 2 - width / 2,\n beforeEnd: anchorRect.right - width,\n afterEnd: anchorRect.right + gap,\n }[horizontalAlignment]\n\n const topSuggestion = {\n beforeStart: anchorRect.top - height - gap,\n afterStart: anchorRect.top,\n center: anchorRect.top + anchorRect.height / 2 - height / 2,\n beforeEnd: anchorRect.bottom - height,\n afterEnd: anchorRect.bottom + gap,\n }[verticalAlignment]\n\n const left = clamp(leftSuggestion, [\n screenPadding,\n windowWidth - screenPadding - width,\n ])\n\n const top = clamp(topSuggestion, [\n screenPadding,\n windowHeight - screenPadding - height,\n ])\n\n return {\n left,\n top,\n maxWidth,\n maxHeight,\n }\n}\n\nexport type UseFloatingElementOptions = CalculatePositionOptions & {\n isPolling?: boolean,\n pollingInterval?: number,\n}\n\nexport type UseFloatingElementProps = UseFloatingElementOptions & {\n containerRef: MutableRefObject<HTMLElement>,\n anchorRef: MutableRefObject<HTMLElement>,\n windowRef?: MutableRefObject<HTMLElement>,\n active?: boolean,\n}\n\nexport function useFloatingElement({\n active = true,\n windowRef,\n anchorRef,\n containerRef,\n isPolling = false,\n pollingInterval = 100,\n verticalAlignment = 'afterEnd',\n horizontalAlignment = 'afterStart',\n screenPadding = 16,\n gap = 4,\n }: UseFloatingElementProps) {\n const [style, setStyle] = useState<CSSProperties>()\n const isMounted = useIsMounted()\n\n const calculate = useCallback(() => {\n const containerRect = containerRef.current.getBoundingClientRect()\n const windowRect: RectangleBounds = windowRef?.current.getBoundingClientRect() ?? {\n top: 0,\n bottom: window.innerHeight,\n left: 0,\n right: window.innerWidth,\n width: window.innerWidth,\n height: window.innerHeight,\n }\n const anchorElement = anchorRef?.current\n if (anchorRef && !anchorElement) {\n console.warn('FloatingContainer anchor provided, but its value is undefined')\n }\n const anchorRect: RectangleBounds = anchorElement?.getBoundingClientRect() ?? windowRect\n\n const calculateProps: CalculatePositionProps = {\n windowRect,\n anchorRect,\n containerRect,\n options: {\n horizontalAlignment,\n verticalAlignment,\n screenPadding,\n gap,\n }\n }\n setStyle(calculatePosition(calculateProps))\n }, [anchorRef, containerRef, gap, horizontalAlignment, screenPadding, verticalAlignment, windowRef])\n\n\n const height = containerRef.current?.getBoundingClientRect().height\n const width = containerRef.current?.getBoundingClientRect().width\n useEffect(() => {\n if (active && isMounted) {\n calculate()\n } else {\n setStyle(undefined)\n }\n }, [calculate, active, isMounted, height, width])\n\n useEffect(() => {\n window.addEventListener('resize', calculate)\n let timeout: NodeJS.Timeout\n if (isPolling) {\n timeout = setInterval(calculate, pollingInterval)\n }\n return () => {\n window.removeEventListener('resize', calculate)\n if (timeout) {\n clearInterval(timeout)\n }\n }\n }, [calculate, isPolling, pollingInterval])\n\n return style\n}","export const clamp = (value: number, range: [number, number] = [0, 1]): number => {\n const [min, max] = range\n return Math.min(Math.max(value, min), max)\n}\n","'use client'\n\nimport { useEffect, useLayoutEffect, useState } from 'react'\n\nconst isClient = typeof window !== 'undefined' && typeof document !== 'undefined'\nconst useIsomorphicEffect = isClient ? useLayoutEffect : useEffect\n\nexport const useIsMounted = () => {\n const [isMounted, setIsMounted] = useState(false)\n\n useIsomorphicEffect(() => {\n setIsMounted(true)\n return () => {\n setIsMounted(false)\n }\n }, [])\n return isMounted\n}"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,IAAAA,gBAAiD;;;ACH1C,IAAM,QAAQ,CAAC,OAAe,QAA0B,CAAC,GAAG,CAAC,MAAc;AAChF,QAAM,CAAC,KAAK,GAAG,IAAI;AACnB,SAAO,KAAK,IAAI,KAAK,IAAI,OAAO,GAAG,GAAG,GAAG;AAC3C;;;ACDA,mBAAqD;AAErD,IAAM,WAAW,OAAO,WAAW,eAAe,OAAO,aAAa;AACtE,IAAM,sBAAsB,WAAW,+BAAkB;AAElD,IAAM,eAAe,MAAM;AAChC,QAAM,CAAC,WAAW,YAAY,QAAI,uBAAS,KAAK;AAEhD,sBAAoB,MAAM;AACxB,iBAAa,IAAI;AACjB,WAAO,MAAM;AACX,mBAAa,KAAK;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,CAAC;AACL,SAAO;AACT;;;AFsBA,SAAS,kBAAkB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAoD;AAC7E,QAAM,EAAE,mBAAmB,qBAAqB,KAAK,cAAc,IAAI;AACvE,QAAM,cAAc,WAAW;AAC/B,QAAM,eAAe,WAAW;AAEhC,QAAM,WAAW,cAAc,IAAI;AACnC,QAAM,YAAY,eAAe,IAAI;AAErC,QAAM,QAAQ,KAAK,IAAI,cAAc,OAAO,QAAQ;AACpD,QAAM,SAAS,KAAK,IAAI,cAAc,QAAQ,SAAS;AAEvD,QAAM,iBAAiB;AAAA,IACrB,aAAa,WAAW,OAAO,QAAQ;AAAA,IACvC,YAAY,WAAW;AAAA,IACvB,QAAQ,WAAW,OAAO,WAAW,QAAQ,IAAI,QAAQ;AAAA,IACzD,WAAW,WAAW,QAAQ;AAAA,IAC9B,UAAU,WAAW,QAAQ;AAAA,EAC/B,EAAE,mBAAmB;AAErB,QAAM,gBAAgB;AAAA,IACpB,aAAa,WAAW,MAAM,SAAS;AAAA,IACvC,YAAY,WAAW;AAAA,IACvB,QAAQ,WAAW,MAAM,WAAW,SAAS,IAAI,SAAS;AAAA,IAC1D,WAAW,WAAW,SAAS;AAAA,IAC/B,UAAU,WAAW,SAAS;AAAA,EAChC,EAAE,iBAAiB;AAEnB,QAAM,OAAO,MAAM,gBAAgB;AAAA,IACjC;AAAA,IACA,cAAc,gBAAgB;AAAA,EAChC,CAAC;AAED,QAAM,MAAM,MAAM,eAAe;AAAA,IAC/B;AAAA,IACA,eAAe,gBAAgB;AAAA,EACjC,CAAC;AAED,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAcO,SAAS,mBAAmB;AAAA,EACE,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,kBAAkB;AAAA,EAClB,oBAAoB;AAAA,EACpB,sBAAsB;AAAA,EACtB,gBAAgB;AAAA,EAChB,MAAM;AACR,GAA4B;AAC7D,QAAM,CAAC,OAAO,QAAQ,QAAI,wBAAwB;AAClD,QAAM,YAAY,aAAa;AAE/B,QAAM,gBAAY,2BAAY,MAAM;AAClC,UAAM,gBAAgB,aAAa,QAAQ,sBAAsB;AACjE,UAAM,aAA8B,WAAW,QAAQ,sBAAsB,KAAK;AAAA,MAChF,KAAK;AAAA,MACL,QAAQ,OAAO;AAAA,MACf,MAAM;AAAA,MACN,OAAO,OAAO;AAAA,MACd,OAAO,OAAO;AAAA,MACd,QAAQ,OAAO;AAAA,IACjB;AACA,UAAM,gBAAgB,WAAW;AACjC,QAAI,aAAa,CAAC,eAAe;AAC/B,cAAQ,KAAK,+DAA+D;AAAA,IAC9E;AACA,UAAM,aAA8B,eAAe,sBAAsB,KAAK;AAE9E,UAAM,iBAAyC;AAAA,MAC7C;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AACA,aAAS,kBAAkB,cAAc,CAAC;AAAA,EAC5C,GAAG,CAAC,WAAW,cAAc,KAAK,qBAAqB,eAAe,mBAAmB,SAAS,CAAC;AAGnG,QAAM,SAAS,aAAa,SAAS,sBAAsB,EAAE;AAC7D,QAAM,QAAQ,aAAa,SAAS,sBAAsB,EAAE;AAC5D,+BAAU,MAAM;AACd,QAAI,UAAU,WAAW;AACvB,gBAAU;AAAA,IACZ,OAAO;AACL,eAAS,MAAS;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,WAAW,QAAQ,WAAW,QAAQ,KAAK,CAAC;AAEhD,+BAAU,MAAM;AACd,WAAO,iBAAiB,UAAU,SAAS;AAC3C,QAAI;AACJ,QAAI,WAAW;AACb,gBAAU,YAAY,WAAW,eAAe;AAAA,IAClD;AACA,WAAO,MAAM;AACX,aAAO,oBAAoB,UAAU,SAAS;AAC9C,UAAI,SAAS;AACX,sBAAc,OAAO;AAAA,MACvB;AAAA,IACF;AAAA,EACF,GAAG,CAAC,WAAW,WAAW,eAAe,CAAC;AAE1C,SAAO;AACT;","names":["import_react"]}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { MutableRefObject, CSSProperties } from 'react';
|
|
2
|
-
|
|
3
|
-
type FloatingElementAlignment = 'beforeStart' | 'afterStart' | 'center' | 'beforeEnd' | 'afterEnd';
|
|
4
|
-
type CalculatePositionOptions = {
|
|
5
|
-
verticalAlignment?: FloatingElementAlignment;
|
|
6
|
-
horizontalAlignment?: FloatingElementAlignment;
|
|
7
|
-
screenPadding?: number;
|
|
8
|
-
gap?: number;
|
|
9
|
-
};
|
|
10
|
-
type UseFloatingElementOptions = CalculatePositionOptions & {
|
|
11
|
-
isPolling?: boolean;
|
|
12
|
-
pollingInterval?: number;
|
|
13
|
-
};
|
|
14
|
-
type UseFloatingElementProps = UseFloatingElementOptions & {
|
|
15
|
-
containerRef: MutableRefObject<HTMLElement>;
|
|
16
|
-
anchorRef: MutableRefObject<HTMLElement>;
|
|
17
|
-
windowRef?: MutableRefObject<HTMLElement>;
|
|
18
|
-
active?: boolean;
|
|
19
|
-
};
|
|
20
|
-
declare function useFloatingElement({ active, windowRef, anchorRef, containerRef, isPolling, pollingInterval, verticalAlignment, horizontalAlignment, screenPadding, gap, }: UseFloatingElementProps): CSSProperties;
|
|
21
|
-
|
|
22
|
-
export { type FloatingElementAlignment, type UseFloatingElementOptions, type UseFloatingElementProps, useFloatingElement };
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { MutableRefObject, CSSProperties } from 'react';
|
|
2
|
-
|
|
3
|
-
type FloatingElementAlignment = 'beforeStart' | 'afterStart' | 'center' | 'beforeEnd' | 'afterEnd';
|
|
4
|
-
type CalculatePositionOptions = {
|
|
5
|
-
verticalAlignment?: FloatingElementAlignment;
|
|
6
|
-
horizontalAlignment?: FloatingElementAlignment;
|
|
7
|
-
screenPadding?: number;
|
|
8
|
-
gap?: number;
|
|
9
|
-
};
|
|
10
|
-
type UseFloatingElementOptions = CalculatePositionOptions & {
|
|
11
|
-
isPolling?: boolean;
|
|
12
|
-
pollingInterval?: number;
|
|
13
|
-
};
|
|
14
|
-
type UseFloatingElementProps = UseFloatingElementOptions & {
|
|
15
|
-
containerRef: MutableRefObject<HTMLElement>;
|
|
16
|
-
anchorRef: MutableRefObject<HTMLElement>;
|
|
17
|
-
windowRef?: MutableRefObject<HTMLElement>;
|
|
18
|
-
active?: boolean;
|
|
19
|
-
};
|
|
20
|
-
declare function useFloatingElement({ active, windowRef, anchorRef, containerRef, isPolling, pollingInterval, verticalAlignment, horizontalAlignment, screenPadding, gap, }: UseFloatingElementProps): CSSProperties;
|
|
21
|
-
|
|
22
|
-
export { type FloatingElementAlignment, type UseFloatingElementOptions, type UseFloatingElementProps, useFloatingElement };
|