@amboss/design-system 1.9.1 → 1.9.5
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/build/cjs/build-tokens/_breakpoints.json.js +7 -0
- package/build/cjs/build-tokens/_icon_sizes_map.json.js +5 -0
- package/build/cjs/build-tokens/assets/icons.json.js +76 -0
- package/build/cjs/build-tokens/assets/icons16.json.js +80 -0
- package/build/cjs/build-tokens/assets/logo.json.js +7 -0
- package/build/cjs/build-tokens/visualConfig.js +1464 -0
- package/build/cjs/src/components/Badge/Badge.js +62 -0
- package/build/cjs/src/components/Box/Box.js +88 -0
- package/build/cjs/src/components/Button/Button.js +246 -0
- package/build/cjs/src/components/Callout/Callout.js +86 -0
- package/build/cjs/src/components/Card/Card.js +68 -0
- package/build/cjs/src/components/Card/CardBox.js +22 -0
- package/build/cjs/src/components/Card/CardHeader/CardHeader.js +59 -0
- package/build/cjs/src/components/Collapsible/Collapsible.js +115 -0
- package/build/cjs/src/components/Column/Columns.js +145 -0
- package/build/cjs/src/components/Container/Container.js +55 -0
- package/build/cjs/src/components/Divider/Divider.js +67 -0
- package/build/cjs/src/components/DropdownMenu/DropdownMenu.js +226 -0
- package/build/cjs/src/components/DropdownMenu/MenuItem.js +102 -0
- package/build/cjs/src/components/Form/Checkbox/Checkbox.js +146 -0
- package/build/cjs/src/components/Form/FormErrorMessages/FormErrorMessages.js +26 -0
- package/build/cjs/src/components/Form/FormField/FormField.js +56 -0
- package/build/cjs/src/components/Form/FormFieldGroup/FormFieldGroup.js +54 -0
- package/build/cjs/src/components/Form/FormLabelText/FormLabelText.js +41 -0
- package/build/cjs/src/components/Form/Input/Input.js +181 -0
- package/build/cjs/src/components/Form/PasswordInput/PasswordInput.js +224 -0
- package/build/cjs/src/components/Form/Radio/Radio.js +137 -0
- package/build/cjs/src/components/Form/RadioButton/RadioButton.js +137 -0
- package/build/cjs/src/components/Form/Select/Select.js +287 -0
- package/build/cjs/src/components/Form/Textarea/Textarea.js +89 -0
- package/build/cjs/src/components/Form/Toggle/Toggle.js +178 -0
- package/build/cjs/src/components/Form/ToggleButton/ToggleButton.js +142 -0
- package/build/cjs/src/components/Icon/Icon.js +91 -0
- package/build/cjs/src/components/Inline/Inline.js +110 -0
- package/build/cjs/src/components/Link/Link.js +78 -0
- package/build/cjs/src/components/Logo/Logo.js +43 -0
- package/build/cjs/src/components/MediaItem/MediaItem.js +124 -0
- package/build/cjs/src/components/MediaViewerBar/MediaViewerBar.js +72 -0
- package/build/cjs/src/components/Notification/Notification.js +106 -0
- package/build/cjs/src/components/Patterns/ButtonGroup/ButtonGroup.js +43 -0
- package/build/cjs/src/components/Patterns/Modal/Modal.js +220 -0
- package/build/cjs/src/components/PictogramButton/PictogramButton.js +118 -0
- package/build/cjs/src/components/Portal/Portal.js +22 -0
- package/build/cjs/src/components/ProgressBar/ProgressBar.js +38 -0
- package/build/cjs/src/components/RoundButton/RoundButton.js +116 -0
- package/build/cjs/src/components/SearchResult/SearchResult.js +177 -0
- package/build/cjs/src/components/SegmentedProgressBar/SegmentedProgressBar.js +107 -0
- package/build/cjs/src/components/SegmentedProgressBar/SegmentedProgressBarUtil.js +42 -0
- package/build/cjs/src/components/Stack/Stack.js +77 -0
- package/build/cjs/src/components/SubThemeProvider/SubThemeProvider.js +54 -0
- package/build/cjs/src/components/Tabs/Tabs.js +132 -0
- package/build/cjs/src/components/Typography/Header/Header.js +114 -0
- package/build/cjs/src/components/Typography/StyledText/StyledText.js +167 -0
- package/build/cjs/src/components/Typography/Text/Text.js +61 -0
- package/build/cjs/src/components/Typography/TextClamped/TextClamped.js +53 -0
- package/build/cjs/src/components/VirtualScrollList/VirtualScrollList.js +115 -0
- package/build/cjs/src/components/VirtualScrollList/VirtualScrollListReducer.js +131 -0
- package/build/cjs/src/index.js +120 -0
- package/build/cjs/src/shared/flattenChildren.js +33 -0
- package/build/cjs/src/shared/informDeprecation.js +12 -0
- package/build/cjs/src/shared/mediaQueries.js +68 -0
- package/build/cjs/src/shared/useAutoPosition.js +42 -0
- package/build/cjs/src/shared/useDocument.js +7 -0
- package/build/cjs/src/shared/useHover.js +26 -0
- package/build/cjs/src/shared/useKeyboard.js +43 -0
- package/build/cjs/src/shared/useOnEscapePress.js +52 -0
- package/build/cjs/src/shared/useOutsideClick.js +33 -0
- package/build/cjs/src/shared/useWindow.js +7 -0
- package/build/esm/build-tokens/_breakpoints.json.js +4 -0
- package/build/esm/build-tokens/_breakpoints.json.js.map +1 -0
- package/build/esm/build-tokens/_icon_sizes_map.json.js +4 -0
- package/build/esm/build-tokens/_icon_sizes_map.json.js.map +1 -0
- package/build/esm/build-tokens/assets/icons.json.js +4 -0
- package/build/esm/build-tokens/assets/icons.json.js.map +1 -0
- package/build/esm/build-tokens/assets/icons16.json.js +4 -0
- package/build/esm/build-tokens/assets/icons16.json.js.map +1 -0
- package/build/esm/build-tokens/assets/logo.json.js +4 -0
- package/build/esm/build-tokens/assets/logo.json.js.map +1 -0
- package/build/esm/build-tokens/visualConfig.js +1463 -0
- package/build/esm/build-tokens/visualConfig.js.map +1 -0
- package/build/esm/src/components/Badge/Badge.js +56 -0
- package/build/esm/src/components/Badge/Badge.js.map +1 -0
- package/build/esm/src/components/Box/Box.js +81 -0
- package/build/esm/src/components/Box/Box.js.map +1 -0
- package/build/esm/src/components/Button/Button.js +238 -0
- package/build/esm/src/components/Button/Button.js.map +1 -0
- package/build/esm/src/components/Callout/Callout.js +80 -0
- package/build/esm/src/components/Callout/Callout.js.map +1 -0
- package/build/esm/src/components/Card/Card.js +62 -0
- package/build/esm/src/components/Card/Card.js.map +1 -0
- package/build/esm/src/components/Card/CardBox.js +17 -0
- package/build/esm/src/components/Card/CardBox.js.map +1 -0
- package/build/esm/src/components/Card/CardHeader/CardHeader.js +52 -0
- package/build/esm/src/components/Card/CardHeader/CardHeader.js.map +1 -0
- package/build/esm/src/components/Collapsible/Collapsible.js +107 -0
- package/build/esm/src/components/Collapsible/Collapsible.js.map +1 -0
- package/build/esm/src/components/Column/Columns.js +139 -0
- package/build/esm/src/components/Column/Columns.js.map +1 -0
- package/build/esm/src/components/Container/Container.js +49 -0
- package/build/esm/src/components/Container/Container.js.map +1 -0
- package/build/esm/src/components/Divider/Divider.js +61 -0
- package/build/esm/src/components/Divider/Divider.js.map +1 -0
- package/build/esm/src/components/DropdownMenu/DropdownMenu.js +220 -0
- package/build/esm/src/components/DropdownMenu/DropdownMenu.js.map +1 -0
- package/build/esm/src/components/DropdownMenu/MenuItem.js +96 -0
- package/build/esm/src/components/DropdownMenu/MenuItem.js.map +1 -0
- package/build/esm/src/components/Form/Checkbox/Checkbox.js +139 -0
- package/build/esm/src/components/Form/Checkbox/Checkbox.js.map +1 -0
- package/build/esm/src/components/Form/FormErrorMessages/FormErrorMessages.js +21 -0
- package/build/esm/src/components/Form/FormErrorMessages/FormErrorMessages.js.map +1 -0
- package/build/esm/src/components/Form/FormField/FormField.js +50 -0
- package/build/esm/src/components/Form/FormField/FormField.js.map +1 -0
- package/build/esm/src/components/Form/FormFieldGroup/FormFieldGroup.js +48 -0
- package/build/esm/src/components/Form/FormFieldGroup/FormFieldGroup.js.map +1 -0
- package/build/esm/src/components/Form/FormLabelText/FormLabelText.js +35 -0
- package/build/esm/src/components/Form/FormLabelText/FormLabelText.js.map +1 -0
- package/build/esm/src/components/Form/Input/Input.js +174 -0
- package/build/esm/src/components/Form/Input/Input.js.map +1 -0
- package/build/esm/src/components/Form/PasswordInput/PasswordInput.js +217 -0
- package/build/esm/src/components/Form/PasswordInput/PasswordInput.js.map +1 -0
- package/build/esm/src/components/Form/Radio/Radio.js +130 -0
- package/build/esm/src/components/Form/Radio/Radio.js.map +1 -0
- package/build/esm/src/components/Form/RadioButton/RadioButton.js +130 -0
- package/build/esm/src/components/Form/RadioButton/RadioButton.js.map +1 -0
- package/build/esm/src/components/Form/Select/Select.js +281 -0
- package/build/esm/src/components/Form/Select/Select.js.map +1 -0
- package/build/esm/src/components/Form/Textarea/Textarea.js +83 -0
- package/build/esm/src/components/Form/Textarea/Textarea.js.map +1 -0
- package/build/esm/src/components/Form/Toggle/Toggle.js +171 -0
- package/build/esm/src/components/Form/Toggle/Toggle.js.map +1 -0
- package/build/esm/src/components/Form/ToggleButton/ToggleButton.js +135 -0
- package/build/esm/src/components/Form/ToggleButton/ToggleButton.js.map +1 -0
- package/build/esm/src/components/Icon/Icon.js +85 -0
- package/build/esm/src/components/Icon/Icon.js.map +1 -0
- package/build/esm/src/components/Inline/Inline.js +104 -0
- package/build/esm/src/components/Inline/Inline.js.map +1 -0
- package/build/esm/src/components/Link/Link.js +71 -0
- package/build/esm/src/components/Link/Link.js.map +1 -0
- package/build/esm/src/components/Logo/Logo.js +37 -0
- package/build/esm/src/components/Logo/Logo.js.map +1 -0
- package/build/esm/src/components/MediaItem/MediaItem.js +118 -0
- package/build/esm/src/components/MediaItem/MediaItem.js.map +1 -0
- package/build/esm/src/components/MediaViewerBar/MediaViewerBar.js +66 -0
- package/build/esm/src/components/MediaViewerBar/MediaViewerBar.js.map +1 -0
- package/build/esm/src/components/Notification/Notification.js +100 -0
- package/build/esm/src/components/Notification/Notification.js.map +1 -0
- package/build/esm/src/components/Patterns/ButtonGroup/ButtonGroup.js +38 -0
- package/build/esm/src/components/Patterns/ButtonGroup/ButtonGroup.js.map +1 -0
- package/build/esm/src/components/Patterns/Modal/Modal.js +213 -0
- package/build/esm/src/components/Patterns/Modal/Modal.js.map +1 -0
- package/build/esm/src/components/PictogramButton/PictogramButton.js +111 -0
- package/build/esm/src/components/PictogramButton/PictogramButton.js.map +1 -0
- package/build/esm/src/components/Portal/Portal.js +16 -0
- package/build/esm/src/components/Portal/Portal.js.map +1 -0
- package/build/esm/src/components/ProgressBar/ProgressBar.js +33 -0
- package/build/esm/src/components/ProgressBar/ProgressBar.js.map +1 -0
- package/build/esm/src/components/RoundButton/RoundButton.js +109 -0
- package/build/esm/src/components/RoundButton/RoundButton.js.map +1 -0
- package/build/esm/src/components/SearchResult/SearchResult.js +171 -0
- package/build/esm/src/components/SearchResult/SearchResult.js.map +1 -0
- package/build/esm/src/components/SegmentedProgressBar/SegmentedProgressBar.js +101 -0
- package/build/esm/src/components/SegmentedProgressBar/SegmentedProgressBar.js.map +1 -0
- package/build/esm/src/components/SegmentedProgressBar/SegmentedProgressBarUtil.js +40 -0
- package/build/esm/src/components/SegmentedProgressBar/SegmentedProgressBarUtil.js.map +1 -0
- package/build/esm/src/components/Stack/Stack.js +71 -0
- package/build/esm/src/components/Stack/Stack.js.map +1 -0
- package/build/esm/src/components/SubThemeProvider/SubThemeProvider.js +49 -0
- package/build/esm/src/components/SubThemeProvider/SubThemeProvider.js.map +1 -0
- package/build/esm/src/components/Tabs/Tabs.js +125 -0
- package/build/esm/src/components/Tabs/Tabs.js.map +1 -0
- package/build/esm/src/components/Typography/Header/Header.js +104 -0
- package/build/esm/src/components/Typography/Header/Header.js.map +1 -0
- package/build/esm/src/components/Typography/StyledText/StyledText.js +160 -0
- package/build/esm/src/components/Typography/StyledText/StyledText.js.map +1 -0
- package/build/esm/src/components/Typography/Text/Text.js +55 -0
- package/build/esm/src/components/Typography/Text/Text.js.map +1 -0
- package/build/esm/src/components/Typography/TextClamped/TextClamped.js +46 -0
- package/build/esm/src/components/Typography/TextClamped/TextClamped.js.map +1 -0
- package/build/esm/src/components/VirtualScrollList/VirtualScrollList.js +109 -0
- package/build/esm/src/components/VirtualScrollList/VirtualScrollList.js.map +1 -0
- package/build/esm/src/components/VirtualScrollList/VirtualScrollListReducer.js +130 -0
- package/build/esm/src/components/VirtualScrollList/VirtualScrollListReducer.js.map +1 -0
- package/build/esm/src/index.js +53 -0
- package/build/esm/src/index.js.map +1 -0
- package/build/esm/src/shared/flattenChildren.d.ts +11 -0
- package/build/esm/src/shared/flattenChildren.js +32 -0
- package/build/esm/src/shared/flattenChildren.js.map +1 -0
- package/build/esm/src/shared/informDeprecation.js +11 -0
- package/build/esm/src/shared/informDeprecation.js.map +1 -0
- package/build/esm/src/shared/mediaQueries.js +66 -0
- package/build/esm/src/shared/mediaQueries.js.map +1 -0
- package/build/esm/src/shared/useAutoPosition.js +41 -0
- package/build/esm/src/shared/useAutoPosition.js.map +1 -0
- package/build/esm/src/shared/useDocument.js +6 -0
- package/build/esm/src/shared/useDocument.js.map +1 -0
- package/build/esm/src/shared/useHover.js +25 -0
- package/build/esm/src/shared/useHover.js.map +1 -0
- package/build/esm/src/shared/useKeyboard.js +42 -0
- package/build/esm/src/shared/useKeyboard.js.map +1 -0
- package/build/esm/src/shared/useOnEscapePress.js +51 -0
- package/build/esm/src/shared/useOnEscapePress.js.map +1 -0
- package/build/esm/src/shared/useOutsideClick.js +32 -0
- package/build/esm/src/shared/useOutsideClick.js.map +1 -0
- package/build/esm/src/shared/useWindow.js +6 -0
- package/build/esm/src/shared/useWindow.js.map +1 -0
- package/package.json +27 -9
- package/build/build-tokens/assets/icons.json +0 -131
- package/build/build-tokens/assets/icons16.json +0 -142
- package/build/build-tokens/assets/logo.json +0 -3
- package/build/index.js +0 -3
- package/build/index.js.LICENSE.txt +0 -8
- package/build/index.js.map +0 -1
- /package/build/{build-tokens → esm/build-tokens}/_subThemeType.d.ts +0 -0
- /package/build/{build-tokens → esm/build-tokens}/visualConfig.d.ts +0 -0
- /package/build/{src → esm/src}/components/Badge/Badge.d.ts +0 -0
- /package/build/{src → esm/src}/components/Box/Box.d.ts +0 -0
- /package/build/{src → esm/src}/components/Button/Button.d.ts +0 -0
- /package/build/{src → esm/src}/components/Callout/Callout.d.ts +0 -0
- /package/build/{src → esm/src}/components/Card/Card.d.ts +0 -0
- /package/build/{src → esm/src}/components/Card/CardBox.d.ts +0 -0
- /package/build/{src → esm/src}/components/Card/CardHeader/CardHeader.d.ts +0 -0
- /package/build/{src → esm/src}/components/Collapsible/Collapsible.d.ts +0 -0
- /package/build/{src → esm/src}/components/Column/Columns.d.ts +0 -0
- /package/build/{src → esm/src}/components/Container/Container.d.ts +0 -0
- /package/build/{src → esm/src}/components/Divider/Divider.d.ts +0 -0
- /package/build/{src → esm/src}/components/DropdownMenu/DropdownMenu.d.ts +0 -0
- /package/build/{src → esm/src}/components/DropdownMenu/MenuItem.d.ts +0 -0
- /package/build/{src → esm/src}/components/Form/Checkbox/Checkbox.d.ts +0 -0
- /package/build/{src → esm/src}/components/Form/FormErrorMessages/FormErrorMessages.d.ts +0 -0
- /package/build/{src → esm/src}/components/Form/FormField/FormField.d.ts +0 -0
- /package/build/{src → esm/src}/components/Form/FormFieldGroup/FormFieldGroup.d.ts +0 -0
- /package/build/{src → esm/src}/components/Form/FormLabelText/FormLabelText.d.ts +0 -0
- /package/build/{src → esm/src}/components/Form/Input/Input.d.ts +0 -0
- /package/build/{src → esm/src}/components/Form/PasswordInput/PasswordInput.d.ts +0 -0
- /package/build/{src → esm/src}/components/Form/Radio/Radio.d.ts +0 -0
- /package/build/{src → esm/src}/components/Form/RadioButton/RadioButton.d.ts +0 -0
- /package/build/{src → esm/src}/components/Form/Select/Select.d.ts +0 -0
- /package/build/{src → esm/src}/components/Form/Textarea/Textarea.d.ts +0 -0
- /package/build/{src → esm/src}/components/Form/Toggle/Toggle.d.ts +0 -0
- /package/build/{src → esm/src}/components/Form/ToggleButton/ToggleButton.d.ts +0 -0
- /package/build/{src → esm/src}/components/Icon/Icon.d.ts +0 -0
- /package/build/{src → esm/src}/components/Inline/Inline.d.ts +0 -0
- /package/build/{src → esm/src}/components/Link/Link.d.ts +0 -0
- /package/build/{src → esm/src}/components/Logo/Logo.d.ts +0 -0
- /package/build/{src → esm/src}/components/MediaItem/MediaItem.d.ts +0 -0
- /package/build/{src → esm/src}/components/MediaViewerBar/MediaViewerBar.d.ts +0 -0
- /package/build/{src → esm/src}/components/Notification/ExpandedContent.d.ts +0 -0
- /package/build/{src → esm/src}/components/Notification/Notification.d.ts +0 -0
- /package/build/{src → esm/src}/components/Patterns/ButtonGroup/ButtonGroup.d.ts +0 -0
- /package/build/{src → esm/src}/components/Patterns/Modal/Modal.d.ts +0 -0
- /package/build/{src → esm/src}/components/PictogramButton/PictogramButton.d.ts +0 -0
- /package/build/{src → esm/src}/components/Portal/Portal.d.ts +0 -0
- /package/build/{src → esm/src}/components/ProgressBar/ProgressBar.d.ts +0 -0
- /package/build/{src → esm/src}/components/RoundButton/RoundButton.d.ts +0 -0
- /package/build/{src → esm/src}/components/SearchResult/SearchResult.d.ts +0 -0
- /package/build/{src → esm/src}/components/SegmentedProgressBar/SegmentedProgressBar.d.ts +0 -0
- /package/build/{src → esm/src}/components/SegmentedProgressBar/SegmentedProgressBarUtil.d.ts +0 -0
- /package/build/{src → esm/src}/components/ShadowWebComponent/ShadowWebComponent.d.ts +0 -0
- /package/build/{src → esm/src}/components/Stack/Stack.d.ts +0 -0
- /package/build/{src → esm/src}/components/SubThemeProvider/SubThemeProvider.d.ts +0 -0
- /package/build/{src → esm/src}/components/Tabs/Tabs.d.ts +0 -0
- /package/build/{src → esm/src}/components/Typography/Header/Header.d.ts +0 -0
- /package/build/{src → esm/src}/components/Typography/StyledText/StyledText.d.ts +0 -0
- /package/build/{src → esm/src}/components/Typography/Text/Text.d.ts +0 -0
- /package/build/{src → esm/src}/components/Typography/TextClamped/TextClamped.d.ts +0 -0
- /package/build/{src → esm/src}/components/VirtualScrollList/VirtualScrollList.d.ts +0 -0
- /package/build/{src → esm/src}/components/VirtualScrollList/VirtualScrollListReducer.d.ts +0 -0
- /package/build/{src → esm/src}/index.d.ts +0 -0
- /package/build/{src → esm/src}/shared/informDeprecation.d.ts +0 -0
- /package/build/{src → esm/src}/shared/mediaQueries.d.ts +0 -0
- /package/build/{src → esm/src}/shared/replaceDeprecated.d.ts +0 -0
- /package/build/{src → esm/src}/shared/useAutoPosition.d.ts +0 -0
- /package/build/{src → esm/src}/shared/useDocument.d.ts +0 -0
- /package/build/{src → esm/src}/shared/useHover.d.ts +0 -0
- /package/build/{src → esm/src}/shared/useKeyboard.d.ts +0 -0
- /package/build/{src → esm/src}/shared/useOnEscapePress.d.ts +0 -0
- /package/build/{src → esm/src}/shared/useOutsideClick.d.ts +0 -0
- /package/build/{src → esm/src}/shared/useWindow.d.ts +0 -0
- /package/build/{src → esm/src}/types/index.d.ts +0 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _styled = require('@emotion/styled/base');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var VirtualScrollListReducer = require('./VirtualScrollListReducer.js');
|
|
6
|
+
|
|
7
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
8
|
+
|
|
9
|
+
var _styled__default = /*#__PURE__*/_interopDefault(_styled);
|
|
10
|
+
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
11
|
+
|
|
12
|
+
const StyledContainer = /*#__PURE__*/_styled__default.default("div", process.env.NODE_ENV === "production" ? {
|
|
13
|
+
target: "ebr5g6s1"
|
|
14
|
+
} : {
|
|
15
|
+
target: "ebr5g6s1",
|
|
16
|
+
label: "StyledContainer"
|
|
17
|
+
})(_ref => {
|
|
18
|
+
let {
|
|
19
|
+
maxHeight
|
|
20
|
+
} = _ref;
|
|
21
|
+
return {
|
|
22
|
+
overflow: "auto",
|
|
23
|
+
width: "100%",
|
|
24
|
+
height: "100%",
|
|
25
|
+
maxHeight
|
|
26
|
+
};
|
|
27
|
+
}, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlZpcnR1YWxTY3JvbGxMaXN0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLd0IiLCJmaWxlIjoiVmlydHVhbFNjcm9sbExpc3QudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQgUmVhY3QsIHsgdXNlUmVmLCB1c2VSZWR1Y2VyLCB1c2VMYXlvdXRFZmZlY3QsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBWaXJ0dWFsU2Nyb2xsUmVkdWNlciB9IGZyb20gXCIuL1ZpcnR1YWxTY3JvbGxMaXN0UmVkdWNlclwiO1xuXG5jb25zdCBTdHlsZWRDb250YWluZXIgPSBzdHlsZWQuZGl2PFBhcnRpYWw8VmlydHVhbFNjcm9sbExpc3RQcm9wcz4+KFxuICAoeyBtYXhIZWlnaHQgfSkgPT4gKHtcbiAgICBvdmVyZmxvdzogXCJhdXRvXCIsXG4gICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgIGhlaWdodDogXCIxMDAlXCIsXG4gICAgbWF4SGVpZ2h0LFxuICB9KVxuKTtcblxuY29uc3QgU3R5bGVkU2Nyb2xsYWJsZUNvbnRlbnQgPSBzdHlsZWQuZGl2PHsgbWF4Q29udGVudEhlaWdodDogbnVtYmVyIH0+KFxuICAoeyBtYXhDb250ZW50SGVpZ2h0IH0pID0+ICh7XG4gICAgb3ZlcmZsb3c6IFwiaGlkZGVuXCIsXG4gICAgYm94U2l6aW5nOiBcImJvcmRlci1ib3hcIixcbiAgICBoZWlnaHQ6IG1heENvbnRlbnRIZWlnaHQsXG4gIH0pXG4pO1xuXG5leHBvcnQgdHlwZSBWaXJ0dWFsU2Nyb2xsTGlzdFByb3BzID0ge1xuICBcImRhdGEtZTJlLXRlc3QtaWRcIj86IHN0cmluZztcbiAgbWF4SGVpZ2h0OiBudW1iZXI7XG4gIGl0ZW1IZWlnaHQ6IG51bWJlcjtcbiAgaXRlbUFtb3VudDogbnVtYmVyO1xuICBlbXB0eVN0YXRlOiAoKSA9PiBSZWFjdC5SZWFjdE5vZGU7XG4gIGl0ZW1JblZpZXc6IG51bWJlcjtcbiAgaXRlbVRlbXBsYXRlOiAoaW5kZXg6IG51bWJlcikgPT4gUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuY29uc3Qgb3ZlcnNjYW4gPSAxMDtcblxuZXhwb3J0IGZ1bmN0aW9uIFZpcnR1YWxTY3JvbGxMaXN0KHtcbiAgbWF4SGVpZ2h0LFxuICBpdGVtSGVpZ2h0LFxuICBpdGVtQW1vdW50LFxuICBlbXB0eVN0YXRlID0gKCkgPT4gbnVsbCxcbiAgaXRlbUluVmlldyxcbiAgaXRlbVRlbXBsYXRlLFxuICBcImRhdGEtZTJlLXRlc3QtaWRcIjogZGF0YUUyZVRlc3RJZCxcbn06IFZpcnR1YWxTY3JvbGxMaXN0UHJvcHMpOiBSZWFjdC5SZWFjdEVsZW1lbnQge1xuICBjb25zdCBzY3JvbGxhYmxlQ29udGFpbmVyUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCB2aWV3cG9ydFJlZiA9IHVzZVJlZihudWxsKTtcblxuICBjb25zdCBbXG4gICAge1xuICAgICAgc2Nyb2xsZWRJdGVtQ291bnQsXG4gICAgICBhbW91bnRPZkl0ZW1zSW5WaWV3LFxuICAgICAgc2Nyb2xsZWRJblB4LFxuICAgICAgbWF4Q29udGVudEhlaWdodCA9IG1heEhlaWdodCxcbiAgICAgIHJlY29tbWVuZGVkU2Nyb2xsUG9zaXRpb24sXG4gICAgfSxcbiAgICBkaXNwYXRjaCxcbiAgXSA9IHVzZVJlZHVjZXIoVmlydHVhbFNjcm9sbFJlZHVjZXIsIHt9KTtcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGRpc3BhdGNoKHsgdHlwZTogXCJyZXNldFwiLCBpdGVtSGVpZ2h0LCBtYXhIZWlnaHQsIG92ZXJzY2FuIH0pO1xuICAgIHNjcm9sbGFibGVDb250YWluZXJSZWYuY3VycmVudC5zY3JvbGxUb3AgPSAwO1xuICB9LCBbaXRlbUhlaWdodCwgaXRlbUFtb3VudCwgbWF4SGVpZ2h0XSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkaXNwYXRjaCh7XG4gICAgICB0eXBlOiBcInJlY29tbWVuZFNjcm9sbFBvc2l0aW9uXCIsXG4gICAgICBzY3JvbGxUb3A6IHNjcm9sbGFibGVDb250YWluZXJSZWYuY3VycmVudC5zY3JvbGxUb3AsXG4gICAgICBpdGVtVG9CZUluVmlldzogaXRlbUluVmlldyxcbiAgICB9KTtcbiAgfSwgW2l0ZW1JblZpZXddKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZWNvbW1lbmRlZFNjcm9sbFBvc2l0aW9uID09PSBudWxsKSByZXR1cm47XG5cbiAgICBzY3JvbGxhYmxlQ29udGFpbmVyUmVmLmN1cnJlbnQuc2Nyb2xsVG9wID0gcmVjb21tZW5kZWRTY3JvbGxQb3NpdGlvbjtcbiAgfSwgW3JlY29tbWVuZGVkU2Nyb2xsUG9zaXRpb25dKTtcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXZpZXdwb3J0UmVmLmN1cnJlbnQpIHJldHVybjtcbiAgICBkaXNwYXRjaCh7XG4gICAgICB0eXBlOiBcInVwZGF0ZVZpZXdwb3J0XCIsXG4gICAgICB2aWV3cG9ydE5vZGU6IHZpZXdwb3J0UmVmLmN1cnJlbnQsXG4gICAgICBpdGVtQW1vdW50LFxuICAgIH0pO1xuICB9LCBbaXRlbUFtb3VudCwgc2Nyb2xsZWRJdGVtQ291bnRdKTtcblxuICBjb25zdCBpdGVtQ291bnRUb0JlUmVuZGVyZWQgPSBNYXRoLm1pbihcbiAgICBNYXRoLm1heCgwLCBpdGVtQW1vdW50IC0gc2Nyb2xsZWRJdGVtQ291bnQpLFxuICAgIGFtb3VudE9mSXRlbXNJblZpZXdcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRDb250YWluZXJcbiAgICAgIHJlZj17c2Nyb2xsYWJsZUNvbnRhaW5lclJlZn1cbiAgICAgIG1heEhlaWdodD17bWF4SGVpZ2h0fVxuICAgICAgc3R5bGU9e3sgbWF4SGVpZ2h0IH19XG4gICAgICBkYXRhLWUyZS10ZXN0LWlkPXtkYXRhRTJlVGVzdElkfVxuICAgICAgb25TY3JvbGw9eyhlOiBSZWFjdC5VSUV2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgdHlwZTogXCJzY3JvbGxcIixcbiAgICAgICAgICBzY3JvbGxUb3A6IGUuY3VycmVudFRhcmdldC5zY3JvbGxUb3AsXG4gICAgICAgIH0pO1xuICAgICAgfX1cbiAgICA+XG4gICAgICB7aXRlbUFtb3VudCA9PT0gMCA/IChcbiAgICAgICAgZW1wdHlTdGF0ZSgpXG4gICAgICApIDogKFxuICAgICAgICA8U3R5bGVkU2Nyb2xsYWJsZUNvbnRlbnQgbWF4Q29udGVudEhlaWdodD17bWF4Q29udGVudEhlaWdodH0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgcmVmPXt2aWV3cG9ydFJlZn1cbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogYHRyYW5zbGF0ZVkoJHtzY3JvbGxlZEluUHh9cHhgLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7ISFpdGVtQ291bnRUb0JlUmVuZGVyZWQgJiZcbiAgICAgICAgICAgICAgbmV3IEFycmF5KGl0ZW1Db3VudFRvQmVSZW5kZXJlZClcbiAgICAgICAgICAgICAgICAuZmlsbCgwKVxuICAgICAgICAgICAgICAgIC5tYXAoKF8sIGluZGV4KSA9PiBpdGVtVGVtcGxhdGUoc2Nyb2xsZWRJdGVtQ291bnQgKyBpbmRleCkpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L1N0eWxlZFNjcm9sbGFibGVDb250ZW50PlxuICAgICAgKX1cbiAgICA8L1N0eWxlZENvbnRhaW5lcj5cbiAgKTtcbn1cbiJdfQ== */");
|
|
28
|
+
const StyledScrollableContent = /*#__PURE__*/_styled__default.default("div", process.env.NODE_ENV === "production" ? {
|
|
29
|
+
target: "ebr5g6s0"
|
|
30
|
+
} : {
|
|
31
|
+
target: "ebr5g6s0",
|
|
32
|
+
label: "StyledScrollableContent"
|
|
33
|
+
})(_ref2 => {
|
|
34
|
+
let {
|
|
35
|
+
maxContentHeight
|
|
36
|
+
} = _ref2;
|
|
37
|
+
return {
|
|
38
|
+
overflow: "hidden",
|
|
39
|
+
boxSizing: "border-box",
|
|
40
|
+
height: maxContentHeight
|
|
41
|
+
};
|
|
42
|
+
}, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlZpcnR1YWxTY3JvbGxMaXN0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFjZ0MiLCJmaWxlIjoiVmlydHVhbFNjcm9sbExpc3QudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQgUmVhY3QsIHsgdXNlUmVmLCB1c2VSZWR1Y2VyLCB1c2VMYXlvdXRFZmZlY3QsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBWaXJ0dWFsU2Nyb2xsUmVkdWNlciB9IGZyb20gXCIuL1ZpcnR1YWxTY3JvbGxMaXN0UmVkdWNlclwiO1xuXG5jb25zdCBTdHlsZWRDb250YWluZXIgPSBzdHlsZWQuZGl2PFBhcnRpYWw8VmlydHVhbFNjcm9sbExpc3RQcm9wcz4+KFxuICAoeyBtYXhIZWlnaHQgfSkgPT4gKHtcbiAgICBvdmVyZmxvdzogXCJhdXRvXCIsXG4gICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgIGhlaWdodDogXCIxMDAlXCIsXG4gICAgbWF4SGVpZ2h0LFxuICB9KVxuKTtcblxuY29uc3QgU3R5bGVkU2Nyb2xsYWJsZUNvbnRlbnQgPSBzdHlsZWQuZGl2PHsgbWF4Q29udGVudEhlaWdodDogbnVtYmVyIH0+KFxuICAoeyBtYXhDb250ZW50SGVpZ2h0IH0pID0+ICh7XG4gICAgb3ZlcmZsb3c6IFwiaGlkZGVuXCIsXG4gICAgYm94U2l6aW5nOiBcImJvcmRlci1ib3hcIixcbiAgICBoZWlnaHQ6IG1heENvbnRlbnRIZWlnaHQsXG4gIH0pXG4pO1xuXG5leHBvcnQgdHlwZSBWaXJ0dWFsU2Nyb2xsTGlzdFByb3BzID0ge1xuICBcImRhdGEtZTJlLXRlc3QtaWRcIj86IHN0cmluZztcbiAgbWF4SGVpZ2h0OiBudW1iZXI7XG4gIGl0ZW1IZWlnaHQ6IG51bWJlcjtcbiAgaXRlbUFtb3VudDogbnVtYmVyO1xuICBlbXB0eVN0YXRlOiAoKSA9PiBSZWFjdC5SZWFjdE5vZGU7XG4gIGl0ZW1JblZpZXc6IG51bWJlcjtcbiAgaXRlbVRlbXBsYXRlOiAoaW5kZXg6IG51bWJlcikgPT4gUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuY29uc3Qgb3ZlcnNjYW4gPSAxMDtcblxuZXhwb3J0IGZ1bmN0aW9uIFZpcnR1YWxTY3JvbGxMaXN0KHtcbiAgbWF4SGVpZ2h0LFxuICBpdGVtSGVpZ2h0LFxuICBpdGVtQW1vdW50LFxuICBlbXB0eVN0YXRlID0gKCkgPT4gbnVsbCxcbiAgaXRlbUluVmlldyxcbiAgaXRlbVRlbXBsYXRlLFxuICBcImRhdGEtZTJlLXRlc3QtaWRcIjogZGF0YUUyZVRlc3RJZCxcbn06IFZpcnR1YWxTY3JvbGxMaXN0UHJvcHMpOiBSZWFjdC5SZWFjdEVsZW1lbnQge1xuICBjb25zdCBzY3JvbGxhYmxlQ29udGFpbmVyUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCB2aWV3cG9ydFJlZiA9IHVzZVJlZihudWxsKTtcblxuICBjb25zdCBbXG4gICAge1xuICAgICAgc2Nyb2xsZWRJdGVtQ291bnQsXG4gICAgICBhbW91bnRPZkl0ZW1zSW5WaWV3LFxuICAgICAgc2Nyb2xsZWRJblB4LFxuICAgICAgbWF4Q29udGVudEhlaWdodCA9IG1heEhlaWdodCxcbiAgICAgIHJlY29tbWVuZGVkU2Nyb2xsUG9zaXRpb24sXG4gICAgfSxcbiAgICBkaXNwYXRjaCxcbiAgXSA9IHVzZVJlZHVjZXIoVmlydHVhbFNjcm9sbFJlZHVjZXIsIHt9KTtcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGRpc3BhdGNoKHsgdHlwZTogXCJyZXNldFwiLCBpdGVtSGVpZ2h0LCBtYXhIZWlnaHQsIG92ZXJzY2FuIH0pO1xuICAgIHNjcm9sbGFibGVDb250YWluZXJSZWYuY3VycmVudC5zY3JvbGxUb3AgPSAwO1xuICB9LCBbaXRlbUhlaWdodCwgaXRlbUFtb3VudCwgbWF4SGVpZ2h0XSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkaXNwYXRjaCh7XG4gICAgICB0eXBlOiBcInJlY29tbWVuZFNjcm9sbFBvc2l0aW9uXCIsXG4gICAgICBzY3JvbGxUb3A6IHNjcm9sbGFibGVDb250YWluZXJSZWYuY3VycmVudC5zY3JvbGxUb3AsXG4gICAgICBpdGVtVG9CZUluVmlldzogaXRlbUluVmlldyxcbiAgICB9KTtcbiAgfSwgW2l0ZW1JblZpZXddKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZWNvbW1lbmRlZFNjcm9sbFBvc2l0aW9uID09PSBudWxsKSByZXR1cm47XG5cbiAgICBzY3JvbGxhYmxlQ29udGFpbmVyUmVmLmN1cnJlbnQuc2Nyb2xsVG9wID0gcmVjb21tZW5kZWRTY3JvbGxQb3NpdGlvbjtcbiAgfSwgW3JlY29tbWVuZGVkU2Nyb2xsUG9zaXRpb25dKTtcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXZpZXdwb3J0UmVmLmN1cnJlbnQpIHJldHVybjtcbiAgICBkaXNwYXRjaCh7XG4gICAgICB0eXBlOiBcInVwZGF0ZVZpZXdwb3J0XCIsXG4gICAgICB2aWV3cG9ydE5vZGU6IHZpZXdwb3J0UmVmLmN1cnJlbnQsXG4gICAgICBpdGVtQW1vdW50LFxuICAgIH0pO1xuICB9LCBbaXRlbUFtb3VudCwgc2Nyb2xsZWRJdGVtQ291bnRdKTtcblxuICBjb25zdCBpdGVtQ291bnRUb0JlUmVuZGVyZWQgPSBNYXRoLm1pbihcbiAgICBNYXRoLm1heCgwLCBpdGVtQW1vdW50IC0gc2Nyb2xsZWRJdGVtQ291bnQpLFxuICAgIGFtb3VudE9mSXRlbXNJblZpZXdcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRDb250YWluZXJcbiAgICAgIHJlZj17c2Nyb2xsYWJsZUNvbnRhaW5lclJlZn1cbiAgICAgIG1heEhlaWdodD17bWF4SGVpZ2h0fVxuICAgICAgc3R5bGU9e3sgbWF4SGVpZ2h0IH19XG4gICAgICBkYXRhLWUyZS10ZXN0LWlkPXtkYXRhRTJlVGVzdElkfVxuICAgICAgb25TY3JvbGw9eyhlOiBSZWFjdC5VSUV2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgdHlwZTogXCJzY3JvbGxcIixcbiAgICAgICAgICBzY3JvbGxUb3A6IGUuY3VycmVudFRhcmdldC5zY3JvbGxUb3AsXG4gICAgICAgIH0pO1xuICAgICAgfX1cbiAgICA+XG4gICAgICB7aXRlbUFtb3VudCA9PT0gMCA/IChcbiAgICAgICAgZW1wdHlTdGF0ZSgpXG4gICAgICApIDogKFxuICAgICAgICA8U3R5bGVkU2Nyb2xsYWJsZUNvbnRlbnQgbWF4Q29udGVudEhlaWdodD17bWF4Q29udGVudEhlaWdodH0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgcmVmPXt2aWV3cG9ydFJlZn1cbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogYHRyYW5zbGF0ZVkoJHtzY3JvbGxlZEluUHh9cHhgLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7ISFpdGVtQ291bnRUb0JlUmVuZGVyZWQgJiZcbiAgICAgICAgICAgICAgbmV3IEFycmF5KGl0ZW1Db3VudFRvQmVSZW5kZXJlZClcbiAgICAgICAgICAgICAgICAuZmlsbCgwKVxuICAgICAgICAgICAgICAgIC5tYXAoKF8sIGluZGV4KSA9PiBpdGVtVGVtcGxhdGUoc2Nyb2xsZWRJdGVtQ291bnQgKyBpbmRleCkpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L1N0eWxlZFNjcm9sbGFibGVDb250ZW50PlxuICAgICAgKX1cbiAgICA8L1N0eWxlZENvbnRhaW5lcj5cbiAgKTtcbn1cbiJdfQ== */");
|
|
43
|
+
const overscan = 10;
|
|
44
|
+
function VirtualScrollList(_ref3) {
|
|
45
|
+
let {
|
|
46
|
+
maxHeight,
|
|
47
|
+
itemHeight,
|
|
48
|
+
itemAmount,
|
|
49
|
+
emptyState = () => null,
|
|
50
|
+
itemInView,
|
|
51
|
+
itemTemplate,
|
|
52
|
+
"data-e2e-test-id": dataE2eTestId
|
|
53
|
+
} = _ref3;
|
|
54
|
+
const scrollableContainerRef = React.useRef(null);
|
|
55
|
+
const viewportRef = React.useRef(null);
|
|
56
|
+
const [{
|
|
57
|
+
scrolledItemCount,
|
|
58
|
+
amountOfItemsInView,
|
|
59
|
+
scrolledInPx,
|
|
60
|
+
maxContentHeight = maxHeight,
|
|
61
|
+
recommendedScrollPosition
|
|
62
|
+
}, dispatch] = React.useReducer(VirtualScrollListReducer.VirtualScrollReducer, {});
|
|
63
|
+
React.useLayoutEffect(() => {
|
|
64
|
+
dispatch({
|
|
65
|
+
type: "reset",
|
|
66
|
+
itemHeight,
|
|
67
|
+
maxHeight,
|
|
68
|
+
overscan
|
|
69
|
+
});
|
|
70
|
+
scrollableContainerRef.current.scrollTop = 0;
|
|
71
|
+
}, [itemHeight, itemAmount, maxHeight]);
|
|
72
|
+
React.useEffect(() => {
|
|
73
|
+
dispatch({
|
|
74
|
+
type: "recommendScrollPosition",
|
|
75
|
+
scrollTop: scrollableContainerRef.current.scrollTop,
|
|
76
|
+
itemToBeInView: itemInView
|
|
77
|
+
});
|
|
78
|
+
}, [itemInView]);
|
|
79
|
+
React.useEffect(() => {
|
|
80
|
+
if (recommendedScrollPosition === null) return;
|
|
81
|
+
scrollableContainerRef.current.scrollTop = recommendedScrollPosition;
|
|
82
|
+
}, [recommendedScrollPosition]);
|
|
83
|
+
React.useLayoutEffect(() => {
|
|
84
|
+
if (!viewportRef.current) return;
|
|
85
|
+
dispatch({
|
|
86
|
+
type: "updateViewport",
|
|
87
|
+
viewportNode: viewportRef.current,
|
|
88
|
+
itemAmount
|
|
89
|
+
});
|
|
90
|
+
}, [itemAmount, scrolledItemCount]);
|
|
91
|
+
const itemCountToBeRendered = Math.min(Math.max(0, itemAmount - scrolledItemCount), amountOfItemsInView);
|
|
92
|
+
return /*#__PURE__*/React__default.default.createElement(StyledContainer, {
|
|
93
|
+
ref: scrollableContainerRef,
|
|
94
|
+
maxHeight: maxHeight,
|
|
95
|
+
style: {
|
|
96
|
+
maxHeight
|
|
97
|
+
},
|
|
98
|
+
"data-e2e-test-id": dataE2eTestId,
|
|
99
|
+
onScroll: e => {
|
|
100
|
+
dispatch({
|
|
101
|
+
type: "scroll",
|
|
102
|
+
scrollTop: e.currentTarget.scrollTop
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}, itemAmount === 0 ? emptyState() : /*#__PURE__*/React__default.default.createElement(StyledScrollableContent, {
|
|
106
|
+
maxContentHeight: maxContentHeight
|
|
107
|
+
}, /*#__PURE__*/React__default.default.createElement("div", {
|
|
108
|
+
ref: viewportRef,
|
|
109
|
+
style: {
|
|
110
|
+
transform: `translateY(${scrolledInPx}px`
|
|
111
|
+
}
|
|
112
|
+
}, !!itemCountToBeRendered && new Array(itemCountToBeRendered).fill(0).map((_, index) => itemTemplate(scrolledItemCount + index)))));
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
exports.VirtualScrollList = VirtualScrollList;
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const findClosestOffsetIndex = (arr, val) => {
|
|
4
|
+
let start = 0;
|
|
5
|
+
let end = arr.length - 1;
|
|
6
|
+
let mid = Math.floor((start + end) / 2);
|
|
7
|
+
while (start <= end) {
|
|
8
|
+
mid = Math.floor((start + end) / 2);
|
|
9
|
+
if (arr[mid].amount === val) {
|
|
10
|
+
return mid;
|
|
11
|
+
}
|
|
12
|
+
if (val < arr[mid].amount) {
|
|
13
|
+
end = mid - 1;
|
|
14
|
+
} else {
|
|
15
|
+
start = mid + 1;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return mid;
|
|
19
|
+
};
|
|
20
|
+
const getMaxHeight = function (maxAmountOfItems, offsets) {
|
|
21
|
+
let lastItemHeight = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
22
|
+
const amountOfOffsets = Math.min(offsets.length, maxAmountOfItems);
|
|
23
|
+
const maxOffset = offsets[amountOfOffsets - 1]?.amount || 0;
|
|
24
|
+
const result = maxOffset + lastItemHeight;
|
|
25
|
+
return result;
|
|
26
|
+
};
|
|
27
|
+
const reduceScroll = (prevState, scrollTop) => {
|
|
28
|
+
const {
|
|
29
|
+
topOffsets,
|
|
30
|
+
overscan: tolerance
|
|
31
|
+
} = prevState;
|
|
32
|
+
const scrolledItemCount = Math.max(0, findClosestOffsetIndex(topOffsets, scrollTop) - tolerance / 2);
|
|
33
|
+
const scrolledInPx = topOffsets[scrolledItemCount]?.amount || 0;
|
|
34
|
+
return {
|
|
35
|
+
...prevState,
|
|
36
|
+
scrolledItemCount,
|
|
37
|
+
scrolledInPx
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
const reduceUpdateViewport = (prevState, viewportNode, itemAmount) => {
|
|
41
|
+
const {
|
|
42
|
+
topOffsets = [],
|
|
43
|
+
scrolledInPx,
|
|
44
|
+
scrolledItemCount,
|
|
45
|
+
avgItemHeight,
|
|
46
|
+
lastItemHeight,
|
|
47
|
+
maxHeight,
|
|
48
|
+
overscan: tolerance
|
|
49
|
+
} = prevState;
|
|
50
|
+
const newTopOffsets = [...topOffsets];
|
|
51
|
+
let updatedLastItemHeight = lastItemHeight;
|
|
52
|
+
Array.from(viewportNode.children).forEach((child, i) => {
|
|
53
|
+
newTopOffsets[i + scrolledItemCount] = {
|
|
54
|
+
amount: scrolledInPx + child.offsetTop,
|
|
55
|
+
isInterpolated: false
|
|
56
|
+
};
|
|
57
|
+
if (i + scrolledItemCount === itemAmount - 1 && !lastItemHeight) {
|
|
58
|
+
updatedLastItemHeight = child.getBoundingClientRect().height;
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
for (let i = 0; i < itemAmount; i += 1) {
|
|
62
|
+
if (!newTopOffsets[i] || newTopOffsets[i].isInterpolated) {
|
|
63
|
+
newTopOffsets[i] = {
|
|
64
|
+
amount: newTopOffsets[i - 1].amount + avgItemHeight,
|
|
65
|
+
isInterpolated: true
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
const newAvgItemHeight = Math.max(avgItemHeight, viewportNode.getBoundingClientRect().height / (viewportNode.childElementCount || 1));
|
|
70
|
+
const maxContentHeight = getMaxHeight(itemAmount, newTopOffsets, updatedLastItemHeight);
|
|
71
|
+
return {
|
|
72
|
+
...prevState,
|
|
73
|
+
lastItemHeight: updatedLastItemHeight,
|
|
74
|
+
avgItemHeight,
|
|
75
|
+
topOffsets: newTopOffsets,
|
|
76
|
+
amountOfItemsInView: Math.round(maxHeight / newAvgItemHeight) + tolerance,
|
|
77
|
+
maxContentHeight
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
const reduceReset = (prevState, itemHeight, maxHeight, overscan) => ({
|
|
81
|
+
...prevState,
|
|
82
|
+
lastItemHeight: null,
|
|
83
|
+
topOffsets: [{
|
|
84
|
+
amount: 0,
|
|
85
|
+
isInterpolated: false
|
|
86
|
+
}],
|
|
87
|
+
scrolledInPx: 0,
|
|
88
|
+
scrolledItemCount: 0,
|
|
89
|
+
maxHeight,
|
|
90
|
+
avgItemHeight: itemHeight,
|
|
91
|
+
overscan
|
|
92
|
+
});
|
|
93
|
+
const reduceRecommendScrollPosition = (prevState, scrollTop, itemToBeInView) => {
|
|
94
|
+
const {
|
|
95
|
+
topOffsets,
|
|
96
|
+
maxHeight
|
|
97
|
+
} = prevState;
|
|
98
|
+
if (!topOffsets) return prevState;
|
|
99
|
+
const bottomOfTarget = topOffsets[itemToBeInView + 1]?.amount;
|
|
100
|
+
const topOfTarget = topOffsets[itemToBeInView]?.amount;
|
|
101
|
+
let recommendedScrollPosition = null;
|
|
102
|
+
if (topOfTarget < scrollTop) {
|
|
103
|
+
recommendedScrollPosition = topOfTarget;
|
|
104
|
+
}
|
|
105
|
+
if (bottomOfTarget >= scrollTop + maxHeight) {
|
|
106
|
+
recommendedScrollPosition = bottomOfTarget - maxHeight;
|
|
107
|
+
}
|
|
108
|
+
if (itemToBeInView === topOffsets.length - 1) {
|
|
109
|
+
recommendedScrollPosition = topOffsets[itemToBeInView].amount;
|
|
110
|
+
}
|
|
111
|
+
return {
|
|
112
|
+
...prevState,
|
|
113
|
+
recommendedScrollPosition
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
const VirtualScrollReducer = (prevState, action) => {
|
|
117
|
+
switch (action.type) {
|
|
118
|
+
case "reset":
|
|
119
|
+
return reduceReset(prevState, action.itemHeight, action.maxHeight, action.overscan);
|
|
120
|
+
case "scroll":
|
|
121
|
+
return reduceScroll(prevState, action.scrollTop);
|
|
122
|
+
case "updateViewport":
|
|
123
|
+
return reduceUpdateViewport(prevState, action.viewportNode, action.itemAmount);
|
|
124
|
+
case "recommendScrollPosition":
|
|
125
|
+
return reduceRecommendScrollPosition(prevState, action.scrollTop, action.itemToBeInView);
|
|
126
|
+
default:
|
|
127
|
+
throw new Error();
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
exports.VirtualScrollReducer = VirtualScrollReducer;
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var visualConfig = require('../build-tokens/visualConfig.js');
|
|
4
|
+
var react = require('@emotion/react');
|
|
5
|
+
var cache = require('@emotion/cache');
|
|
6
|
+
var Card = require('./components/Card/Card.js');
|
|
7
|
+
var CardBox = require('./components/Card/CardBox.js');
|
|
8
|
+
var Box = require('./components/Box/Box.js');
|
|
9
|
+
var Inline = require('./components/Inline/Inline.js');
|
|
10
|
+
var Stack = require('./components/Stack/Stack.js');
|
|
11
|
+
var Header = require('./components/Typography/Header/Header.js');
|
|
12
|
+
var Text = require('./components/Typography/Text/Text.js');
|
|
13
|
+
var TextClamped = require('./components/Typography/TextClamped/TextClamped.js');
|
|
14
|
+
var StyledText = require('./components/Typography/StyledText/StyledText.js');
|
|
15
|
+
var Link = require('./components/Link/Link.js');
|
|
16
|
+
var Icon = require('./components/Icon/Icon.js');
|
|
17
|
+
var Button = require('./components/Button/Button.js');
|
|
18
|
+
var Divider = require('./components/Divider/Divider.js');
|
|
19
|
+
var Columns = require('./components/Column/Columns.js');
|
|
20
|
+
var Tabs = require('./components/Tabs/Tabs.js');
|
|
21
|
+
var Badge = require('./components/Badge/Badge.js');
|
|
22
|
+
var SearchResult = require('./components/SearchResult/SearchResult.js');
|
|
23
|
+
var ToggleButton = require('./components/Form/ToggleButton/ToggleButton.js');
|
|
24
|
+
var DropdownMenu = require('./components/DropdownMenu/DropdownMenu.js');
|
|
25
|
+
var FormFieldGroup = require('./components/Form/FormFieldGroup/FormFieldGroup.js');
|
|
26
|
+
var Input = require('./components/Form/Input/Input.js');
|
|
27
|
+
var Checkbox = require('./components/Form/Checkbox/Checkbox.js');
|
|
28
|
+
var Toggle = require('./components/Form/Toggle/Toggle.js');
|
|
29
|
+
var Radio = require('./components/Form/Radio/Radio.js');
|
|
30
|
+
var RadioButton = require('./components/Form/RadioButton/RadioButton.js');
|
|
31
|
+
var Textarea = require('./components/Form/Textarea/Textarea.js');
|
|
32
|
+
var Select = require('./components/Form/Select/Select.js');
|
|
33
|
+
var SubThemeProvider = require('./components/SubThemeProvider/SubThemeProvider.js');
|
|
34
|
+
var PictogramButton = require('./components/PictogramButton/PictogramButton.js');
|
|
35
|
+
var MediaViewerBar = require('./components/MediaViewerBar/MediaViewerBar.js');
|
|
36
|
+
var SegmentedProgressBar = require('./components/SegmentedProgressBar/SegmentedProgressBar.js');
|
|
37
|
+
var ProgressBar = require('./components/ProgressBar/ProgressBar.js');
|
|
38
|
+
var Container = require('./components/Container/Container.js');
|
|
39
|
+
var PasswordInput = require('./components/Form/PasswordInput/PasswordInput.js');
|
|
40
|
+
var RoundButton = require('./components/RoundButton/RoundButton.js');
|
|
41
|
+
var Notification = require('./components/Notification/Notification.js');
|
|
42
|
+
var Logo = require('./components/Logo/Logo.js');
|
|
43
|
+
var MediaItem = require('./components/MediaItem/MediaItem.js');
|
|
44
|
+
var Callout = require('./components/Callout/Callout.js');
|
|
45
|
+
var Modal = require('./components/Patterns/Modal/Modal.js');
|
|
46
|
+
var ButtonGroup = require('./components/Patterns/ButtonGroup/ButtonGroup.js');
|
|
47
|
+
var Collapsible = require('./components/Collapsible/Collapsible.js');
|
|
48
|
+
|
|
49
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
50
|
+
|
|
51
|
+
var cache__default = /*#__PURE__*/_interopDefault(cache);
|
|
52
|
+
|
|
53
|
+
const {
|
|
54
|
+
dark,
|
|
55
|
+
light
|
|
56
|
+
} = visualConfig.ambossVisualConfiguration;
|
|
57
|
+
|
|
58
|
+
Object.defineProperty(exports, 'CacheProvider', {
|
|
59
|
+
enumerable: true,
|
|
60
|
+
get: function () { return react.CacheProvider; }
|
|
61
|
+
});
|
|
62
|
+
Object.defineProperty(exports, 'ThemeProvider', {
|
|
63
|
+
enumerable: true,
|
|
64
|
+
get: function () { return react.ThemeProvider; }
|
|
65
|
+
});
|
|
66
|
+
Object.defineProperty(exports, 'createCache', {
|
|
67
|
+
enumerable: true,
|
|
68
|
+
get: function () { return cache__default.default; }
|
|
69
|
+
});
|
|
70
|
+
exports.Card = Card.Card;
|
|
71
|
+
exports.CardBox = CardBox.CardBox;
|
|
72
|
+
exports.Box = Box.Box;
|
|
73
|
+
exports.Inline = Inline.Inline;
|
|
74
|
+
exports.Stack = Stack.Stack;
|
|
75
|
+
exports.H1 = Header.H1;
|
|
76
|
+
exports.H2 = Header.H2;
|
|
77
|
+
exports.H3 = Header.H3;
|
|
78
|
+
exports.H4 = Header.H4;
|
|
79
|
+
exports.H5 = Header.H5;
|
|
80
|
+
exports.H6 = Header.H6;
|
|
81
|
+
exports.Text = Text.Text;
|
|
82
|
+
exports.TextClamped = TextClamped.TextClamped;
|
|
83
|
+
exports.StyledText = StyledText.StyledText;
|
|
84
|
+
exports.Link = Link.Link;
|
|
85
|
+
exports.Icon = Icon.Icon;
|
|
86
|
+
exports.Button = Button.Button;
|
|
87
|
+
exports.Divider = Divider.Divider;
|
|
88
|
+
exports.Column = Columns.Column;
|
|
89
|
+
exports.Columns = Columns.Columns;
|
|
90
|
+
exports.Tabs = Tabs.Tabs;
|
|
91
|
+
exports.Badge = Badge.Badge;
|
|
92
|
+
exports.SearchResult = SearchResult.SearchResult;
|
|
93
|
+
exports.ToggleButton = ToggleButton.ToggleButton;
|
|
94
|
+
exports.DropdownMenu = DropdownMenu.DropdownMenu;
|
|
95
|
+
exports.FormFieldGroup = FormFieldGroup.FormFieldGroup;
|
|
96
|
+
exports.Input = Input.Input;
|
|
97
|
+
exports.Checkbox = Checkbox.Checkbox;
|
|
98
|
+
exports.Toggle = Toggle.Toggle;
|
|
99
|
+
exports.Radio = Radio.Radio;
|
|
100
|
+
exports.RadioButton = RadioButton.RadioButton;
|
|
101
|
+
exports.Textarea = Textarea.Textarea;
|
|
102
|
+
exports.Select = Select.Select;
|
|
103
|
+
exports.SubThemeProvider = SubThemeProvider.SubThemeProvider;
|
|
104
|
+
exports.PictogramButton = PictogramButton.PictogramButton;
|
|
105
|
+
exports.MediaViewerBar = MediaViewerBar.MediaViewerBar;
|
|
106
|
+
exports.SegmentedProgressBar = SegmentedProgressBar.SegmentedProgressBar;
|
|
107
|
+
exports.ProgressBar = ProgressBar.ProgressBar;
|
|
108
|
+
exports.Container = Container.Container;
|
|
109
|
+
exports.PasswordInput = PasswordInput.PasswordInput;
|
|
110
|
+
exports.RoundButton = RoundButton.RoundButton;
|
|
111
|
+
exports.Notification = Notification.Notification;
|
|
112
|
+
exports.Logo = Logo.Logo;
|
|
113
|
+
exports.MediaItem = MediaItem.MediaItem;
|
|
114
|
+
exports.Callout = Callout.Callout;
|
|
115
|
+
exports.Modal = Modal.Modal;
|
|
116
|
+
exports.ButtonGroup = ButtonGroup.ButtonGroup;
|
|
117
|
+
exports.Collapsible = Collapsible.Collapsible;
|
|
118
|
+
exports.CollapsibleHeader = Collapsible.CollapsibleHeader;
|
|
119
|
+
exports.dark = dark;
|
|
120
|
+
exports.light = light;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var reactIs = require('react-is');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Copied from https://github.com/grrowl/react-keyed-flatten-children (since ESM import doesn't work with the module)
|
|
8
|
+
*
|
|
9
|
+
* Similar to [React's built-in `Children.toArray` method](https://reactjs.org/docs/react-api.html#reactchildrentoarray),
|
|
10
|
+
* this utility takes children and returns them as an array for introspection or filtering.
|
|
11
|
+
*
|
|
12
|
+
* Different from `Children.toArray`, it will flatten arrays and `React.Fragment`s into a regular, one-dimensional
|
|
13
|
+
* array while ensuring element and fragment keys are preserved, unique, and stable between renders.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
const flattenChildren = function (children) {
|
|
17
|
+
let depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
18
|
+
let keys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
19
|
+
return React.Children.toArray(children).reduce((acc, node, nodeIndex) => {
|
|
20
|
+
if (reactIs.isFragment(node)) {
|
|
21
|
+
acc.push(...flattenChildren(node.props.children, depth + 1, keys.concat(String(node.key || nodeIndex))));
|
|
22
|
+
} else if ( /*#__PURE__*/React.isValidElement(node)) {
|
|
23
|
+
acc.push( /*#__PURE__*/React.cloneElement(node, {
|
|
24
|
+
key: keys.concat(String(node.key)).join(".")
|
|
25
|
+
}));
|
|
26
|
+
} else if (typeof node === "string" || typeof node === "number") {
|
|
27
|
+
acc.push(node);
|
|
28
|
+
}
|
|
29
|
+
return acc;
|
|
30
|
+
}, []);
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
exports.flattenChildren = flattenChildren;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const informDeprecation = function (property, value, location) {
|
|
4
|
+
let details = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : "";
|
|
5
|
+
if (property === undefined) return;
|
|
6
|
+
if (property === value) {
|
|
7
|
+
// eslint-disable-next-line no-console
|
|
8
|
+
console.error(`value ${JSON.stringify(value)} is depricated in ${location} \n ${details}`);
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
exports.informDeprecation = informDeprecation;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _breakpoints = require('../../build-tokens/_breakpoints.json.js');
|
|
4
|
+
|
|
5
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
6
|
+
|
|
7
|
+
/*
|
|
8
|
+
Although, mq implementation supports any property type, the following types are specified to provide type safety. If you need support for a new type, add it here.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
// this thing probably deserves to be a separate library, like facepaint for emotion
|
|
12
|
+
function getMq(breakpointRules) {
|
|
13
|
+
const keys = breakpointRules;
|
|
14
|
+
return rules => {
|
|
15
|
+
const res = {};
|
|
16
|
+
keys.forEach(key => {
|
|
17
|
+
res[key] = {};
|
|
18
|
+
});
|
|
19
|
+
res[`@media screen`] = {};
|
|
20
|
+
|
|
21
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
22
|
+
Object.entries(rules).forEach(_ref => {
|
|
23
|
+
let [cssProperty, [prop, map]] = _ref;
|
|
24
|
+
if (Array.isArray(prop)) {
|
|
25
|
+
const sm = prop[0];
|
|
26
|
+
const md = prop[1] || prop[0];
|
|
27
|
+
const lg = prop[2] || prop[1] || prop[0];
|
|
28
|
+
const [s, m, l] = keys;
|
|
29
|
+
res[s][cssProperty] = map[sm];
|
|
30
|
+
res[m][cssProperty] = map[md];
|
|
31
|
+
res[l][cssProperty] = map[lg];
|
|
32
|
+
} else {
|
|
33
|
+
res[`@media screen`][cssProperty] = map[prop];
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
return res;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
const mq = getMq([`@media (max-width: ${_breakpoints.default[1].value}px)`, `@media (min-width: ${_breakpoints.default[1].value}px) and (max-width: ${_breakpoints.default[2].value}px)`, `@media (min-width: ${_breakpoints.default[2].value}px)`]);
|
|
40
|
+
function getMqValue(breakpointRules) {
|
|
41
|
+
const keys = breakpointRules;
|
|
42
|
+
return rules => {
|
|
43
|
+
const res = {};
|
|
44
|
+
keys.forEach(key => {
|
|
45
|
+
res[key] = {};
|
|
46
|
+
});
|
|
47
|
+
res[`@media screen`] = {};
|
|
48
|
+
Object.entries(rules).forEach(_ref2 => {
|
|
49
|
+
let [cssProperty, cssValues] = _ref2;
|
|
50
|
+
if (Array.isArray(cssValues)) {
|
|
51
|
+
breakpointRules.forEach((breakpoint, index) => {
|
|
52
|
+
let i = index;
|
|
53
|
+
while (!cssValues[i] && i !== 0) {
|
|
54
|
+
i -= 1;
|
|
55
|
+
}
|
|
56
|
+
res[breakpoint][cssProperty] = cssValues[i];
|
|
57
|
+
});
|
|
58
|
+
} else {
|
|
59
|
+
res[`@media screen`][cssProperty] = cssValues;
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
return res;
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
const mqValue = getMqValue([`@media (max-width: ${_breakpoints.default[1].value}px)`, `@media (min-width: ${_breakpoints.default[1].value}px) and (max-width: ${_breakpoints.default[2].value}px)`, `@media (min-width: ${_breakpoints.default[2].value}px)`]);
|
|
66
|
+
|
|
67
|
+
exports.mq = mq;
|
|
68
|
+
exports.mqValue = mqValue;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var useWindow = require('./useWindow.js');
|
|
5
|
+
var useDocument = require('./useDocument.js');
|
|
6
|
+
|
|
7
|
+
const useAutoPosition = (anchorRef, contentRef, isActive) => {
|
|
8
|
+
const [verticalPosition, setVerticalPosition] = React.useState("down");
|
|
9
|
+
const [horizontalPosition, setHorizontalPosition] = React.useState("left");
|
|
10
|
+
const document = useDocument.useDocument();
|
|
11
|
+
const window = useWindow.useWindow();
|
|
12
|
+
React.useLayoutEffect(() => {
|
|
13
|
+
if (!contentRef) return;
|
|
14
|
+
if (isActive) {
|
|
15
|
+
const maxHeight = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0);
|
|
16
|
+
const rect = contentRef.current.getBoundingClientRect();
|
|
17
|
+
const anchorHeight = anchorRef.current.getBoundingClientRect().height;
|
|
18
|
+
const anchorX = anchorRef.current.getBoundingClientRect().x;
|
|
19
|
+
const screenWidth = window.innerWidth;
|
|
20
|
+
const isUp = rect.top + rect.height > maxHeight;
|
|
21
|
+
const isDown = rect.top - anchorHeight < rect.height;
|
|
22
|
+
const isLeft = anchorX > screenWidth / 2;
|
|
23
|
+
const isRight = anchorX < screenWidth / 2;
|
|
24
|
+
if (isUp) {
|
|
25
|
+
setVerticalPosition("up");
|
|
26
|
+
} else if (isDown) {
|
|
27
|
+
setVerticalPosition("down");
|
|
28
|
+
}
|
|
29
|
+
if (isLeft) {
|
|
30
|
+
setHorizontalPosition("left");
|
|
31
|
+
} else if (isRight) {
|
|
32
|
+
setHorizontalPosition("right");
|
|
33
|
+
}
|
|
34
|
+
} else {
|
|
35
|
+
setVerticalPosition("down");
|
|
36
|
+
setHorizontalPosition("left");
|
|
37
|
+
}
|
|
38
|
+
}, [anchorRef, contentRef, document.documentElement.clientHeight, isActive, window.innerHeight, window.innerWidth]);
|
|
39
|
+
return [verticalPosition, horizontalPosition];
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
exports.useAutoPosition = useAutoPosition;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
|
|
5
|
+
function useHover(ref) {
|
|
6
|
+
const [hovered, setHovered] = React.useState(false);
|
|
7
|
+
const handleMouseOver = () => setHovered(true);
|
|
8
|
+
const handleMouseOut = () => setHovered(false);
|
|
9
|
+
React.useEffect(() => {
|
|
10
|
+
if (!ref) return undefined;
|
|
11
|
+
const node = ref.current;
|
|
12
|
+
if (node) {
|
|
13
|
+
node.addEventListener("mouseover", handleMouseOver);
|
|
14
|
+
node.addEventListener("mouseout", handleMouseOut);
|
|
15
|
+
return () => {
|
|
16
|
+
node.removeEventListener("mouseover", handleMouseOver);
|
|
17
|
+
node.removeEventListener("mouseout", handleMouseOut);
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
return undefined;
|
|
21
|
+
}, [ref]);
|
|
22
|
+
if (!ref) return null;
|
|
23
|
+
return hovered;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
exports.useHover = useHover;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var useDocument = require('./useDocument.js');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* useKeyboard handles activation of keyboard hotkeys on a given element.
|
|
8
|
+
* @param {Record<string, (e: KeyboardEvent) => {}} config - A map of keyboardEvent code to function.
|
|
9
|
+
* @param {RefObject} ref - The element which the keyboard config has to apply on.
|
|
10
|
+
* @param {boolean} isActive - A flag to determine when the keyboard config has to be applied.
|
|
11
|
+
*
|
|
12
|
+
* Example:
|
|
13
|
+
* useKeyboard({
|
|
14
|
+
* Escape: closeMenu,
|
|
15
|
+
* ArrowUp: () => { doSomething() },
|
|
16
|
+
* KeyB: () => { console.log("bagi") },
|
|
17
|
+
* }, menuRef, menuOpen)
|
|
18
|
+
*
|
|
19
|
+
* This mean that these keyboard shortcuts will be applied on menuRef when the menu is opened.
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
function useKeyboard(config, ref, isActive) {
|
|
23
|
+
const document = useDocument.useDocument();
|
|
24
|
+
const handleKeyboard = event => {
|
|
25
|
+
if (!isActive) return;
|
|
26
|
+
if (document.activeElement !== ref.current && !ref.current.contains(document.activeElement)) return;
|
|
27
|
+
const targetConfigKey = Object.keys(config).find(targetKeys => targetKeys.split(" ").includes(event.code));
|
|
28
|
+
if (!targetConfigKey) return;
|
|
29
|
+
event.preventDefault();
|
|
30
|
+
const res = config[targetConfigKey](event);
|
|
31
|
+
if (res === false) {
|
|
32
|
+
event.stopPropagation();
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
React.useEffect(() => {
|
|
36
|
+
document.addEventListener("keydown", handleKeyboard);
|
|
37
|
+
return () => {
|
|
38
|
+
document.removeEventListener("keydown", handleKeyboard);
|
|
39
|
+
};
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
exports.useKeyboard = useKeyboard;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var useDocument = require('./useDocument.js');
|
|
5
|
+
|
|
6
|
+
const registry = {};
|
|
7
|
+
const handleEscape = event => {
|
|
8
|
+
if (!event.defaultPrevented) {
|
|
9
|
+
const handlers = Object.values(registry).reverse();
|
|
10
|
+
for (let i = 0; i < handlers.length; i += 1) {
|
|
11
|
+
const handler = handlers[i];
|
|
12
|
+
handler(event);
|
|
13
|
+
if (event.defaultPrevented) break;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
const register = (id, handler) => {
|
|
18
|
+
registry[id] = handler;
|
|
19
|
+
};
|
|
20
|
+
const deregister = id => {
|
|
21
|
+
delete registry[id];
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
// For auto-incrementing unique identifiers for registered different handlers.
|
|
25
|
+
let handlerId = 0;
|
|
26
|
+
const useOnEscapePress = function (onEscape) {
|
|
27
|
+
let callbackDependencies = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [onEscape];
|
|
28
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
29
|
+
const escapeCallback = React.useCallback(onEscape, callbackDependencies);
|
|
30
|
+
const document = useDocument.useDocument();
|
|
31
|
+
const handler = React.useCallback(event => {
|
|
32
|
+
if (event.key === "Escape") escapeCallback(event);
|
|
33
|
+
}, [escapeCallback]);
|
|
34
|
+
const id = React.useMemo(() => {
|
|
35
|
+
handlerId += 1;
|
|
36
|
+
return handlerId;
|
|
37
|
+
}, []);
|
|
38
|
+
React.useEffect(() => {
|
|
39
|
+
if (Object.keys(registry).length === 0) {
|
|
40
|
+
document.addEventListener("keydown", handleEscape);
|
|
41
|
+
}
|
|
42
|
+
register(id, handler);
|
|
43
|
+
return () => {
|
|
44
|
+
deregister(id);
|
|
45
|
+
if (Object.keys(registry).length === 0) {
|
|
46
|
+
document.removeEventListener("keydown", handleEscape);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
}, [id, handler, document]);
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
exports.useOnEscapePress = useOnEscapePress;
|