@onepercentio/one-ui 1.3.2 → 1.3.4
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/.github/workflows/release-browser-bundle.yml +76 -0
- package/README.md +23 -0
- package/dist/assets/img/svg/checkbox.svg +3 -0
- package/dist/assets/styles/index.scss +2 -0
- package/dist/assets/styles/mixins.scss +15 -0
- package/dist/assets/styles/variables.scss +49 -0
- package/dist/components/AdaptiveButton/AdaptiveButton.js +32 -0
- package/dist/components/AdaptiveButton/AdaptiveButton.module.scss +7 -0
- package/dist/components/AdaptiveButton/index.js +27 -0
- package/dist/components/AdaptiveContainer/AdaptiveContainer.js +152 -0
- package/dist/components/AdaptiveContainer/AdaptiveContainer.module.scss +53 -0
- package/dist/components/AdaptiveContainer/index.js +27 -0
- package/dist/components/AdaptiveDialog/AdaptiveDialog.js +81 -0
- package/dist/components/AdaptiveDialog/AdaptiveDialog.module.scss +145 -0
- package/dist/components/AdaptiveDialog/index.js +27 -0
- package/dist/components/AdaptiveSidebar/AdaptiveSidebar.js +77 -0
- package/dist/components/AdaptiveSidebar/AdaptiveSidebar.module.scss +49 -0
- package/dist/components/AdaptiveSidebar/AdaptiveSidebar.sample.js +13 -0
- package/dist/components/AdaptiveSidebar/index.js +27 -0
- package/dist/components/AnchoredTooltip/AnchoredTooltip.js +168 -0
- package/dist/components/AnchoredTooltip/AnchoredTooltip.module.scss +64 -0
- package/dist/components/AnchoredTooltip/index.js +27 -0
- package/dist/components/AnimatedEntrance/AnimatedEntrance.js +166 -0
- package/dist/components/AnimatedEntrance/AnimatedEntrance.module.scss +108 -0
- package/dist/components/AnimatedEntrance/index.js +27 -0
- package/dist/components/AsyncTriggerContainer/AsyncTriggerContainer.js +95 -0
- package/dist/components/AsyncTriggerContainer/AsyncTriggerContainer.module.scss +22 -0
- package/dist/components/AsyncTriggerContainer/index.js +27 -0
- package/dist/components/AsyncWrapper/AsyncWrapper.js +42 -0
- package/dist/components/AsyncWrapper/index.js +27 -0
- package/dist/components/Avatar/Avatar.js +40 -0
- package/dist/components/Avatar/Avatar.module.scss +22 -0
- package/dist/components/Avatar/index.js +27 -0
- package/dist/components/BucketFill/BucketFill.js +56 -0
- package/dist/components/BucketFill/BucketFill.module.scss +36 -0
- package/dist/components/BucketFill/index.js +27 -0
- package/dist/components/Button/Button.js +39 -0
- package/dist/components/Button/Button.module.scss +45 -0
- package/dist/components/Button/index.js +27 -0
- package/dist/components/Card/Card.js +22 -0
- package/dist/components/Card/Card.module.scss +12 -0
- package/dist/components/Card/index.js +27 -0
- package/dist/components/Chart/Chart.js +27 -0
- package/dist/components/Chart/Chart.logic.js +14 -0
- package/dist/components/Chart/Chart.module.scss +58 -0
- package/dist/components/Chart/Chart.types.js +6 -0
- package/dist/components/Chart/Chart.view.js +184 -0
- package/dist/components/Chart/index.js +27 -0
- package/dist/components/CheckBox/CheckBox.js +52 -0
- package/dist/components/CheckBox/CheckBox.module.scss +36 -0
- package/dist/components/CheckBox/index.js +27 -0
- package/dist/components/CodeInput/CodeInput.js +84 -0
- package/dist/components/CodeInput/CodeInput.module.scss +5 -0
- package/dist/components/CodeInput/index.js +27 -0
- package/dist/components/Collapsable/Collapsable.js +186 -0
- package/dist/components/Collapsable/Collapsable.module.scss +42 -0
- package/dist/components/Collapsable/index.js +27 -0
- package/dist/components/Countdown/Countdown.js +83 -0
- package/dist/components/Countdown/index.js +27 -0
- package/dist/components/CurrencyInput/CurrencyInput.hook.js +28 -0
- package/dist/components/CurrencyInput/CurrencyInput.js +54 -0
- package/dist/components/CurrencyInput/index.js +27 -0
- package/dist/components/Divider/Divider.js +21 -0
- package/dist/components/Divider/Divider.module.scss +7 -0
- package/dist/components/Divider/index.js +27 -0
- package/dist/components/EmailInput/EmailInput.js +48 -0
- package/dist/components/EmailInput/EmailInput.module.scss +0 -0
- package/dist/components/EmailInput/index.js +27 -0
- package/dist/components/FadeIn/FadeIn.js +64 -0
- package/dist/components/FadeIn/FadeIn.module.scss +9 -0
- package/dist/components/FadeIn/index.js +27 -0
- package/dist/components/FileInput/FileInput.js +53 -0
- package/dist/components/FileInput/FileInput.module.scss +6 -0
- package/dist/components/FileInput/View/BigFactory/BigFactory.js +54 -0
- package/dist/components/FileInput/View/BigFactory/BigFactory.module.scss +20 -0
- package/dist/components/FileInput/View/BigFactory/index.js +27 -0
- package/dist/components/FileInput/View/Compact/Compact.js +120 -0
- package/dist/components/FileInput/View/Compact/Compact.module.scss +68 -0
- package/dist/components/FileInput/View/Compact/index.js +27 -0
- package/dist/components/FileInput/View/View.types.js +6 -0
- package/dist/components/FileInput/index.js +27 -0
- package/dist/components/FlowController/FlowController.js +66 -0
- package/dist/components/FlowController/FlowController.module.scss +47 -0
- package/dist/components/FlowController/index.js +27 -0
- package/dist/components/Form/Form.hook.js +234 -0
- package/dist/components/Form/Form.js +115 -0
- package/dist/components/Form/Form.module.scss +0 -0
- package/dist/components/Form/Form.types.js +40 -0
- package/dist/components/Form/FormField/Extensions/DateField/DateField.js +75 -0
- package/dist/components/Form/FormField/Extensions/DateField/DateField.module.scss +0 -0
- package/dist/components/Form/FormField/Extensions/DateField/index.js +27 -0
- package/dist/components/Form/FormField/Extensions/PhoneField/PhoneField.js +91 -0
- package/dist/components/Form/FormField/Extensions/PhoneField/PhoneField.module.scss +0 -0
- package/dist/components/Form/FormField/Extensions/PhoneField/index.js +27 -0
- package/dist/components/Form/FormField/FormField.js +296 -0
- package/dist/components/Form/FormField/FormField.types.js +12 -0
- package/dist/components/Form/FormField/index.js +27 -0
- package/dist/components/Form/index.js +27 -0
- package/dist/components/Freeze/Freeze.js +18 -0
- package/dist/components/Freeze/index.js +27 -0
- package/dist/components/HSForms/HSForms.js +55 -0
- package/dist/components/HSForms/index.js +27 -0
- package/dist/components/HeaderCloseBtn/HeaderCloseBtn.js +25 -0
- package/dist/components/HeaderCloseBtn/HeaderCloseBtn.module.scss +44 -0
- package/dist/components/HeaderCloseBtn/index.js +27 -0
- package/dist/components/InfinityScroll/InfinityScroll.js +128 -0
- package/dist/components/InfinityScroll/InfinityScroll.module.scss +30 -0
- package/dist/components/InfinityScroll/index.js +27 -0
- package/dist/components/Input/Input.js +110 -0
- package/dist/components/Input/Input.module.scss +31 -0
- package/dist/components/Input/index.js +27 -0
- package/dist/components/InstantCounter/InstantCounter.js +55 -0
- package/dist/components/InstantCounter/index.js +27 -0
- package/dist/components/LavaLamp/LavaLamp.data.js +89 -0
- package/dist/components/LavaLamp/LavaLamp.js +125 -0
- package/dist/components/LavaLamp/LavaLamp.module.scss +26 -0
- package/dist/components/LavaLamp/index.js +27 -0
- package/dist/components/LavaLamp/v2/LavaLamp.js +154 -0
- package/dist/components/LavaLamp/v2/LavaLamp.module.scss +23 -0
- package/dist/components/LinkToId/LinkToId.js +45 -0
- package/dist/components/LinkToId/LinkToId.module.scss +4 -0
- package/dist/components/LinkToId/index.js +27 -0
- package/dist/components/Loader/Loader.js +27 -0
- package/dist/components/Loader/Loader.module.scss +40 -0
- package/dist/components/Loader/index.js +27 -0
- package/dist/components/LoaderDotsIndicator/LoaderDotsIndicator.js +36 -0
- package/dist/components/LoaderDotsIndicator/index.js +27 -0
- package/dist/components/LoopableVideo/LoopableVideo.js +41 -0
- package/dist/components/LoopableVideo/index.js +27 -0
- package/dist/components/MainGrid/MainGrid.js +55 -0
- package/dist/components/MainGrid/MainGrid.module.scss +28 -0
- package/dist/components/MainGrid/index.js +27 -0
- package/dist/components/MutableHamburgerButton/MutableHamburgerButton.js +32 -0
- package/dist/components/MutableHamburgerButton/MutableHamburgerButton.module.scss +220 -0
- package/dist/components/MutableHamburgerButton/index.js +27 -0
- package/dist/components/Notification/Notification.js +24 -0
- package/dist/components/Notification/Notification.module.scss +25 -0
- package/dist/components/Notification/index.js +27 -0
- package/dist/components/NumberInput/NumberInput.js +50 -0
- package/dist/components/NumberInput/index.js +27 -0
- package/dist/components/OrderableList/OrderableList.js +439 -0
- package/dist/components/OrderableList/OrderableList.module.scss +98 -0
- package/dist/components/OrderableList/index.js +27 -0
- package/dist/components/PaginationIndicator/PaginationIndicator.js +261 -0
- package/dist/components/PaginationIndicator/index.js +27 -0
- package/dist/components/Parallax/Parallax.js +169 -0
- package/dist/components/Parallax/Parallax.module.scss +28 -0
- package/dist/components/Parallax/index.js +27 -0
- package/dist/components/Parallax/math/helpers.js +134 -0
- package/dist/components/PasswordInput/PasswordInput.js +97 -0
- package/dist/components/PasswordInput/PasswordInput.module.scss +17 -0
- package/dist/components/PasswordInput/index.js +27 -0
- package/dist/components/PingPongText/PingPongText.js +76 -0
- package/dist/components/PingPongText/PingPongText.module.scss +4 -0
- package/dist/components/PingPongText/index.js +27 -0
- package/dist/components/PixelatedScan/PixelatedScan.js +139 -0
- package/dist/components/PixelatedScan/PixelatedScan.module.scss +86 -0
- package/dist/components/PixelatedScan/index.js +27 -0
- package/dist/components/Portal/Portal.js +62 -0
- package/dist/components/Portal/Portal.module.scss +3 -0
- package/dist/components/Portal/index.js +27 -0
- package/dist/components/ProgressBar/ProgressBar.js +113 -0
- package/dist/components/ProgressBar/ProgressBar.module.scss +44 -0
- package/dist/components/ProgressBar/index.js +27 -0
- package/dist/components/ProgressTexts/ProgressTexts.js +52 -0
- package/dist/components/ProgressTexts/ProgressTexts.module.scss +37 -0
- package/dist/components/ProgressTexts/index.js +27 -0
- package/dist/components/Radio/Radio.js +53 -0
- package/dist/components/Radio/Radio.module.scss +20 -0
- package/dist/components/Radio/index.js +27 -0
- package/dist/components/Radio/variants/Checkmark/Checkmark.js +20 -0
- package/dist/components/Radio/variants/Checkmark/Checkmark.module.scss +24 -0
- package/dist/components/Radio/variants/Checkmark/index.js +27 -0
- package/dist/components/Radio/variants/Generic/Generic.js +22 -0
- package/dist/components/Radio/variants/Generic/Generic.module.scss +38 -0
- package/dist/components/Radio/variants/Generic/index.js +27 -0
- package/dist/components/SectionContainer/SectionContainer.js +49 -0
- package/dist/components/SectionContainer/SectionContainer.module.scss +30 -0
- package/dist/components/SectionContainer/index.js +27 -0
- package/dist/components/Select/Select.js +138 -0
- package/dist/components/Select/Select.module.scss +60 -0
- package/dist/components/Select/index.js +27 -0
- package/dist/components/Skeleton/Skeleton.js +30 -0
- package/dist/components/Skeleton/Skeleton.module.scss +21 -0
- package/dist/components/Skeleton/index.js +27 -0
- package/dist/components/Slider/Slider.js +70 -0
- package/dist/components/Slider/Slider.module.scss +7 -0
- package/dist/components/Slider/index.js +27 -0
- package/dist/components/Spacing/Spacing.js +34 -0
- package/dist/components/Spacing/Spacing.module.scss +13 -0
- package/dist/components/Spacing/index.js +27 -0
- package/dist/components/StaticScroller/StaticScroller.js +72 -0
- package/dist/components/StaticScroller/StaticScroller.module.scss +14 -0
- package/dist/components/StaticScroller/index.js +27 -0
- package/dist/components/Switch/Switch.js +47 -0
- package/dist/components/Switch/Switch.module.scss +46 -0
- package/dist/components/Switch/index.js +27 -0
- package/dist/components/Table/Table.js +115 -0
- package/dist/components/Table/Table.module.scss +74 -0
- package/dist/components/Table/index.js +27 -0
- package/dist/components/Tabs/Tabs.js +67 -0
- package/dist/components/Tabs/Tabs.module.scss +40 -0
- package/dist/components/Tabs/index.js +27 -0
- package/dist/components/Text/Text.js +44 -0
- package/dist/components/Text/Text.module.scss +13 -0
- package/dist/components/Text/index.js +27 -0
- package/dist/components/Transition/MasksFactory/DiagonalReveal.js +49 -0
- package/dist/components/Transition/MasksFactory/DiagonalSquareToBalls.js +78 -0
- package/dist/components/Transition/MasksFactory/PhysicsSquares.js +96 -0
- package/dist/components/Transition/MasksFactory/SquareToBalls.js +67 -0
- package/dist/components/Transition/MasksFactory/utils.js +30 -0
- package/dist/components/Transition/Transition.js +323 -0
- package/dist/components/Transition/Transition.module.scss +211 -0
- package/dist/components/Transition/index.js +27 -0
- package/dist/components/UncontrolledTransition/UncontrolledTransition.ai.md +9 -0
- package/dist/components/UncontrolledTransition/UncontrolledTransition.js +110 -0
- package/dist/components/UncontrolledTransition/UncontrolledTransition.sample.js +32 -0
- package/dist/components/UncontrolledTransition/index.js +27 -0
- package/dist/components/WalletConnectionWrapper/WalletConnectionWrapper.js +115 -0
- package/dist/components/WalletConnectionWrapper/index.js +27 -0
- package/dist/components/utilitary/ScrollAndFocusLock/ScrollAndFocusLock.js +59 -0
- package/dist/components/utilitary/ScrollAndFocusLock/ScrollAndFocusLock.module.scss +5 -0
- package/dist/components/utilitary/ScrollAndFocusLock/index.js +27 -0
- package/dist/context/AsyncProcess.js +74 -0
- package/dist/context/ContextAsyncControl.js +92 -0
- package/dist/context/CustomBrowserRouter.js +50 -0
- package/dist/context/OneUIProvider.js +129 -0
- package/dist/hooks/logs/useDependencyChangeDetection.js +20 -0
- package/dist/hooks/logs/useIsMounting.js +13 -0
- package/dist/hooks/persistence/useLocalStorage.js +48 -0
- package/dist/hooks/shims/ObjectWatchShim.js +54 -0
- package/dist/hooks/ui/useAdaptiveImage.js +36 -0
- package/dist/hooks/ui/useAlternating.js +24 -0
- package/dist/hooks/ui/useBreakpoint.js +26 -0
- package/dist/hooks/ui/useCustomScrollbar.js +28 -0
- package/dist/hooks/ui/useCustomScrollbar.module.scss +20 -0
- package/dist/hooks/ui/useEffectIf.js +14 -0
- package/dist/hooks/ui/useMouseHover.js +32 -0
- package/dist/hooks/ui/usePaginationControls.js +136 -0
- package/dist/hooks/ui/usePaginationControls.module.scss +16 -0
- package/dist/hooks/ui/useSnapToViewport.js +26 -0
- package/dist/hooks/ui/useSnapToViewport.module.scss +6 -0
- package/dist/hooks/ui/useTilt.js +161 -0
- package/dist/hooks/ui/useZoomable.js +135 -0
- package/dist/hooks/ui/useZoomable.module.scss +34 -0
- package/dist/hooks/useAsyncControl.ai.md +25 -0
- package/dist/hooks/useAsyncControl.js +79 -0
- package/dist/hooks/useContainedRepositioning.js +83 -0
- package/dist/hooks/useCustomHistory.js +24 -0
- package/dist/hooks/useElementFit.js +54 -0
- package/dist/hooks/useFirestoreWatch.js +45 -0
- package/dist/hooks/useFreeze.js +17 -0
- package/dist/hooks/useHero.js +273 -0
- package/dist/hooks/useHero.module.scss +41 -0
- package/dist/hooks/useIntersection.js +39 -0
- package/dist/hooks/useMergeRefs.js +36 -0
- package/dist/hooks/useObserve.js +25 -0
- package/dist/hooks/usePagination.js +163 -0
- package/dist/hooks/usePooledOperation.js +52 -0
- package/dist/hooks/usePooling.js +52 -0
- package/dist/hooks/useRebound.js +32 -0
- package/dist/hooks/useShortIntl.ai.md +5 -0
- package/dist/hooks/useShortIntl.js +82 -0
- package/dist/hooks/utility/useAsyncMemo.js +45 -0
- package/dist/hooks/utility/useDepChange.js +17 -0
- package/dist/hooks/utility/useEvents.js +33 -0
- package/dist/hooks/utility/useImmediate.js +14 -0
- package/dist/hooks/utility/useManualInit.js +25 -0
- package/dist/hooks/utility/useModule.js +18 -0
- package/dist/hooks/utility/useQuery.js +20 -0
- package/dist/hooks/utility/useUniqueEffect.js +20 -0
- package/dist/index.js +2149 -0
- package/dist/index.preprocess.js +42 -0
- package/dist/models/DebugLogger.js +16 -0
- package/dist/models/GenericContract.js +51 -0
- package/dist/models/Orbs.js +67 -0
- package/dist/reac-app-env.d.js +2 -0
- package/dist/storybook/assets/video/txt-reversed.mp4 +0 -0
- package/dist/storybookUtils/index.js +44 -0
- package/dist/type-utils.js +6 -0
- package/dist/types.js +6 -0
- package/dist/utility.d.js +2 -0
- package/dist/utils/blockchain.js +46 -0
- package/dist/utils/e2e.js +33 -0
- package/dist/utils/flatten.js +19 -0
- package/dist/utils/formatters.js +63 -0
- package/dist/utils/html.utils.js +15 -0
- package/dist/utils/ownEvent.js +16 -0
- package/dist/utils/test.js +19 -0
- package/dist-browser/bundle.js +83650 -0
- package/dist-browser/bundle.js.LICENSE.txt +94 -0
- package/dist-browser/bundle.js.map +1 -0
- package/dist-ts/components/AdaptiveContainer/AdaptiveContainer.js +2 -1
- package/dist-ts/components/AdaptiveContainer/AdaptiveContainer.js.map +1 -1
- package/dist-ts/components/AnchoredTooltip/AnchoredTooltip.module.scss +13 -10
- package/dist-ts/components/CheckBox/CheckBox.d.ts +3 -1
- package/dist-ts/components/CheckBox/CheckBox.js +7 -4
- package/dist-ts/components/CheckBox/CheckBox.js.map +1 -1
- package/dist-ts/components/CheckBox/CheckBox.module.scss +5 -0
- package/dist-ts/components/Input/Input.js +1 -1
- package/dist-ts/components/Input/Input.js.map +1 -1
- package/dist-ts/context/OneUIProvider.d.ts +3 -1
- package/dist-ts/context/OneUIProvider.js.map +1 -1
- package/dist-ts/hooks/ui/useAdaptiveImage.d.ts +1 -1
- package/dist-ts/hooks/ui/useAdaptiveImage.js +1 -1
- package/dist-ts/hooks/ui/useAdaptiveImage.js.map +1 -1
- package/dist-ts/hooks/ui/useMouseHover.d.ts +2 -2
- package/dist-ts/hooks/ui/useMouseHover.js +6 -5
- package/dist-ts/hooks/ui/useMouseHover.js.map +1 -1
- package/dist-ts/hooks/useObserve.d.ts +1 -1
- package/dist-ts/hooks/useObserve.js +1 -1
- package/dist-ts/hooks/useObserve.js.map +1 -1
- package/dist-ts/index.d.ts +1 -0
- package/dist-ts/index.js +1 -0
- package/dist-ts/index.js.map +1 -1
- package/dist-ts/models/ImageScales.d.ts +7 -0
- package/dist-ts/models/ImageScales.js +9 -0
- package/dist-ts/models/ImageScales.js.map +1 -0
- package/example.html +76 -0
- package/package.json +11 -4
- package/webpack.bundle.config.js +87 -0
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.AnchoredTooltipAnchor = exports.AnchoredTooltipAlignment = void 0;
|
|
7
|
+
exports.updateTooltipPosition = updateTooltipPosition;
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
10
|
+
var _OneUIProvider = require("../../context/OneUIProvider");
|
|
11
|
+
var _FadeIn = _interopRequireDefault(require("../FadeIn"));
|
|
12
|
+
var _AnchoredTooltipModule = _interopRequireDefault(require("./AnchoredTooltip.module.scss"));
|
|
13
|
+
const _excluded = ["containInViewport", "alignment"];
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
16
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
17
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
18
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
19
|
+
function getPositionOnViewport(element) {
|
|
20
|
+
return element.getBoundingClientRect();
|
|
21
|
+
}
|
|
22
|
+
let AnchoredTooltipAlignment = exports.AnchoredTooltipAlignment = /*#__PURE__*/function (AnchoredTooltipAlignment) {
|
|
23
|
+
AnchoredTooltipAlignment[AnchoredTooltipAlignment["LEFT"] = 0] = "LEFT";
|
|
24
|
+
AnchoredTooltipAlignment[AnchoredTooltipAlignment["CENTER"] = 1] = "CENTER";
|
|
25
|
+
AnchoredTooltipAlignment[AnchoredTooltipAlignment["RIGHT"] = 2] = "RIGHT";
|
|
26
|
+
return AnchoredTooltipAlignment;
|
|
27
|
+
}({});
|
|
28
|
+
let AnchoredTooltipAnchor = exports.AnchoredTooltipAnchor = /*#__PURE__*/function (AnchoredTooltipAnchor) {
|
|
29
|
+
AnchoredTooltipAnchor[AnchoredTooltipAnchor["TOP"] = 0] = "TOP";
|
|
30
|
+
AnchoredTooltipAnchor[AnchoredTooltipAnchor["BOTTOM"] = 1] = "BOTTOM";
|
|
31
|
+
return AnchoredTooltipAnchor;
|
|
32
|
+
}({});
|
|
33
|
+
function calculateTooltipFromAnchor(anchorRef, tooltipRef, containInViewport) {
|
|
34
|
+
let alignTo = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : AnchoredTooltipAlignment.CENTER;
|
|
35
|
+
let anchorTo = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : AnchoredTooltipAnchor.TOP;
|
|
36
|
+
const anchorPosition = getPositionOnViewport(anchorRef);
|
|
37
|
+
const shouldAnchorToBottom = anchorTo === AnchoredTooltipAnchor.BOTTOM || tooltipRef.clientHeight > anchorPosition.top;
|
|
38
|
+
let top = anchorPosition.top - tooltipRef.clientHeight;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* The terms mean:
|
|
42
|
+
* anchorPosition.left = The left to get to the left border of the anchor (visible element)
|
|
43
|
+
* anchorPosition.width = The width of the anchor (visible element)
|
|
44
|
+
* tooltipRef.clientWidth = The width of the content
|
|
45
|
+
*/
|
|
46
|
+
let left = (() => {
|
|
47
|
+
switch (alignTo) {
|
|
48
|
+
case AnchoredTooltipAlignment.CENTER:
|
|
49
|
+
return anchorPosition.left + anchorPosition.width / 2 - tooltipRef.clientWidth / 2;
|
|
50
|
+
case AnchoredTooltipAlignment.LEFT:
|
|
51
|
+
return anchorPosition.left;
|
|
52
|
+
case AnchoredTooltipAlignment.RIGHT:
|
|
53
|
+
return anchorPosition.left + anchorPosition.width - tooltipRef.clientWidth;
|
|
54
|
+
}
|
|
55
|
+
})();
|
|
56
|
+
if (shouldAnchorToBottom) top += tooltipRef.clientHeight + anchorRef.clientHeight;
|
|
57
|
+
if (containInViewport && top < 0) top = 0;
|
|
58
|
+
const offset = top + tooltipRef.clientHeight - window.innerHeight;
|
|
59
|
+
if (containInViewport && offset > 0) {
|
|
60
|
+
top -= offset;
|
|
61
|
+
}
|
|
62
|
+
const offsetLeft = left + tooltipRef.clientWidth - window.innerWidth;
|
|
63
|
+
if (containInViewport && offsetLeft > 0) {
|
|
64
|
+
left -= offsetLeft;
|
|
65
|
+
}
|
|
66
|
+
if (containInViewport && left < 0) {
|
|
67
|
+
left = 0;
|
|
68
|
+
}
|
|
69
|
+
const maxLeftOffsetIndicator = tooltipRef.clientWidth / 2 - 60;
|
|
70
|
+
const tooltipCenter = tooltipRef.clientWidth / 2 + left;
|
|
71
|
+
const anchorPositionCenter = anchorPosition.left + anchorPosition.width / 2;
|
|
72
|
+
const offsetTooltip = anchorPositionCenter - tooltipCenter;
|
|
73
|
+
const minOffsetTooltip = -(tooltipRef.clientWidth / 2) + 60;
|
|
74
|
+
const offsetIndicatorLeft = offsetLeft > 0 ? offsetLeft > maxLeftOffsetIndicator ? maxLeftOffsetIndicator : offsetLeft : offsetTooltip < 0 ? offsetTooltip < minOffsetTooltip ? minOffsetTooltip : offsetTooltip : 0;
|
|
75
|
+
return {
|
|
76
|
+
offset,
|
|
77
|
+
offsetIndicatorLeft,
|
|
78
|
+
top,
|
|
79
|
+
left,
|
|
80
|
+
shouldAnchorToBottom
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
function updateTooltipPosition(tooltipRef, anchorRef) {
|
|
84
|
+
let limitToViewport = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
85
|
+
let alignment = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : AnchoredTooltipAlignment.CENTER;
|
|
86
|
+
let anchorTo = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : AnchoredTooltipAnchor.TOP;
|
|
87
|
+
const {
|
|
88
|
+
top,
|
|
89
|
+
left,
|
|
90
|
+
shouldAnchorToBottom,
|
|
91
|
+
offsetIndicatorLeft
|
|
92
|
+
} = calculateTooltipFromAnchor(anchorRef, tooltipRef, limitToViewport, alignment, anchorTo);
|
|
93
|
+
if (limitToViewport) {
|
|
94
|
+
const maxHeight = window.innerHeight - top;
|
|
95
|
+
tooltipRef.style.maxHeight = "".concat(maxHeight - 32, "px");
|
|
96
|
+
}
|
|
97
|
+
tooltipRef.style.top = "".concat(top, "px");
|
|
98
|
+
tooltipRef.style.left = "".concat(left, "px");
|
|
99
|
+
tooltipRef.style.setProperty("--anchor-indicator-offset-left", "".concat(offsetIndicatorLeft, "px"));
|
|
100
|
+
if (shouldAnchorToBottom) {
|
|
101
|
+
tooltipRef.classList.remove(_AnchoredTooltipModule.default.anchoredTop);
|
|
102
|
+
tooltipRef.classList.add(_AnchoredTooltipModule.default.anchoredBottom);
|
|
103
|
+
} else {
|
|
104
|
+
tooltipRef.classList.add(_AnchoredTooltipModule.default.anchoredTop);
|
|
105
|
+
tooltipRef.classList.remove(_AnchoredTooltipModule.default.anchoredBottom);
|
|
106
|
+
}
|
|
107
|
+
return {
|
|
108
|
+
shouldAnchorToBottom
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
function _AnchoredTooltip(_ref, ref) {
|
|
112
|
+
let {
|
|
113
|
+
containInViewport = true,
|
|
114
|
+
alignment
|
|
115
|
+
} = _ref,
|
|
116
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
117
|
+
const {
|
|
118
|
+
open,
|
|
119
|
+
children,
|
|
120
|
+
anchorRef
|
|
121
|
+
} = props;
|
|
122
|
+
const tooltipRef = (0, _react.useRef)(null);
|
|
123
|
+
const className = (0, _OneUIProvider.useOneUIConfig)("component.tooltip.className");
|
|
124
|
+
const [realClosed, setRealClosed] = (0, _react.useState)(!open);
|
|
125
|
+
(0, _react.useEffect)(() => {
|
|
126
|
+
if (open) setRealClosed(false);
|
|
127
|
+
}, [open]);
|
|
128
|
+
(0, _react.useImperativeHandle)(ref, () => ({
|
|
129
|
+
updatePosition: () => {
|
|
130
|
+
updateTooltipPosition(tooltipRef.current, anchorRef.current, containInViewport, alignment);
|
|
131
|
+
}
|
|
132
|
+
}), [containInViewport]);
|
|
133
|
+
(0, _react.useEffect)(() => {
|
|
134
|
+
if (open && !realClosed) {
|
|
135
|
+
if (anchorRef.current && tooltipRef.current) updateTooltipPosition(tooltipRef.current, anchorRef.current, containInViewport, alignment);
|
|
136
|
+
const scrollHandler = () => {
|
|
137
|
+
if (anchorRef.current && tooltipRef.current) updateTooltipPosition(tooltipRef.current, anchorRef.current, containInViewport, alignment);
|
|
138
|
+
};
|
|
139
|
+
window.addEventListener("scroll", scrollHandler, {
|
|
140
|
+
passive: true
|
|
141
|
+
});
|
|
142
|
+
return () => {
|
|
143
|
+
window.removeEventListener("scroll", scrollHandler);
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
}, [open, anchorRef, realClosed]);
|
|
147
|
+
(0, _react.useLayoutEffect)(() => {
|
|
148
|
+
if (!tooltipRef.current) return;
|
|
149
|
+
if (open) tooltipRef.current.classList.add(_AnchoredTooltipModule.default.open);else tooltipRef.current.classList.remove(_AnchoredTooltipModule.default.open);
|
|
150
|
+
}, [open]);
|
|
151
|
+
return !realClosed || open ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_reactDom.default.createPortal( /*#__PURE__*/_react.default.createElement(_FadeIn.default, {
|
|
152
|
+
onClick: e => e.stopPropagation(),
|
|
153
|
+
ref: tooltipRef,
|
|
154
|
+
className: "".concat(_AnchoredTooltipModule.default.tooltipContainer, " ").concat(props.className || "", " ").concat(className),
|
|
155
|
+
style: props.style,
|
|
156
|
+
onHidden: () => setRealClosed(true)
|
|
157
|
+
}, open && !realClosed ? /*#__PURE__*/_react.default.createElement("div", null, children) : undefined), document.body)) : null;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* This tooltip anchors itself to an element and handles positioning relative to the anchored element
|
|
162
|
+
*
|
|
163
|
+
* A simple popup that appears near another element, automatically positioning itself to stay visible
|
|
164
|
+
* on the screen and adjusting its location if the page is scrolled or resized.
|
|
165
|
+
*/
|
|
166
|
+
const AnchoredTooltip = /*#__PURE__*/(0, _react.forwardRef)(_AnchoredTooltip);
|
|
167
|
+
var _default = exports.default = AnchoredTooltip;
|
|
168
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3REb20iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX09uZVVJUHJvdmlkZXIiLCJfRmFkZUluIiwiX0FuY2hvcmVkVG9vbHRpcE1vZHVsZSIsIl9leGNsdWRlZCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJzb3VyY2UiLCJleGNsdWRlZCIsInRhcmdldCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwiaSIsImdldE93blByb3BlcnR5U3ltYm9scyIsInNvdXJjZVN5bWJvbEtleXMiLCJsZW5ndGgiLCJpbmRleE9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJzb3VyY2VLZXlzIiwia2V5cyIsImdldFBvc2l0aW9uT25WaWV3cG9ydCIsImVsZW1lbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJBbmNob3JlZFRvb2x0aXBBbGlnbm1lbnQiLCJleHBvcnRzIiwiQW5jaG9yZWRUb29sdGlwQW5jaG9yIiwiY2FsY3VsYXRlVG9vbHRpcEZyb21BbmNob3IiLCJhbmNob3JSZWYiLCJ0b29sdGlwUmVmIiwiY29udGFpbkluVmlld3BvcnQiLCJhbGlnblRvIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiQ0VOVEVSIiwiYW5jaG9yVG8iLCJUT1AiLCJhbmNob3JQb3NpdGlvbiIsInNob3VsZEFuY2hvclRvQm90dG9tIiwiQk9UVE9NIiwiY2xpZW50SGVpZ2h0IiwidG9wIiwibGVmdCIsIndpZHRoIiwiY2xpZW50V2lkdGgiLCJMRUZUIiwiUklHSFQiLCJvZmZzZXQiLCJ3aW5kb3ciLCJpbm5lckhlaWdodCIsIm9mZnNldExlZnQiLCJpbm5lcldpZHRoIiwibWF4TGVmdE9mZnNldEluZGljYXRvciIsInRvb2x0aXBDZW50ZXIiLCJhbmNob3JQb3NpdGlvbkNlbnRlciIsIm9mZnNldFRvb2x0aXAiLCJtaW5PZmZzZXRUb29sdGlwIiwib2Zmc2V0SW5kaWNhdG9yTGVmdCIsInVwZGF0ZVRvb2x0aXBQb3NpdGlvbiIsImxpbWl0VG9WaWV3cG9ydCIsImFsaWdubWVudCIsIm1heEhlaWdodCIsInN0eWxlIiwiY29uY2F0Iiwic2V0UHJvcGVydHkiLCJjbGFzc0xpc3QiLCJyZW1vdmUiLCJTdHlsZXMiLCJhbmNob3JlZFRvcCIsImFkZCIsImFuY2hvcmVkQm90dG9tIiwiX0FuY2hvcmVkVG9vbHRpcCIsIl9yZWYiLCJyZWYiLCJwcm9wcyIsIm9wZW4iLCJjaGlsZHJlbiIsInVzZVJlZiIsImNsYXNzTmFtZSIsInVzZU9uZVVJQ29uZmlnIiwicmVhbENsb3NlZCIsInNldFJlYWxDbG9zZWQiLCJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsInVzZUltcGVyYXRpdmVIYW5kbGUiLCJ1cGRhdGVQb3NpdGlvbiIsImN1cnJlbnQiLCJzY3JvbGxIYW5kbGVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsInBhc3NpdmUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidXNlTGF5b3V0RWZmZWN0IiwiY3JlYXRlRWxlbWVudCIsIkZyYWdtZW50IiwiUmVhY3RET00iLCJjcmVhdGVQb3J0YWwiLCJvbkNsaWNrIiwiZSIsInN0b3BQcm9wYWdhdGlvbiIsInRvb2x0aXBDb250YWluZXIiLCJvbkhpZGRlbiIsImRvY3VtZW50IiwiYm9keSIsIkFuY2hvcmVkVG9vbHRpcCIsImZvcndhcmRSZWYiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0FuY2hvcmVkVG9vbHRpcC9BbmNob3JlZFRvb2x0aXAudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1xuICBGb3J3YXJkZWRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIEpTWCxcbiAgUmVhY3ROb2RlLFxuICBSZWZPYmplY3QsXG4gIHVzZUVmZmVjdCxcbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZSxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBSZWFjdERPTSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgeyB1c2VPbmVVSUNvbmZpZyB9IGZyb20gXCIuLi8uLi9jb250ZXh0L09uZVVJUHJvdmlkZXJcIjtcbmltcG9ydCBGYWRlSW4gZnJvbSBcIi4uL0ZhZGVJblwiO1xuaW1wb3J0IFN0eWxlcyBmcm9tIFwiLi9BbmNob3JlZFRvb2x0aXAubW9kdWxlLnNjc3NcIjtcblxudHlwZSBQcm9wcyA9IHtcbiAgY2hpbGRyZW46IEpTWC5FbGVtZW50O1xuICBhbmNob3JSZWY6IFJlZk9iamVjdDxIVE1MRWxlbWVudCB8IG51bGw+O1xuICBvcGVuOiBib29sZWFuO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIHRvb2x0aXAgc2hvdWxkIGJlIGFsd2F5cyB2aXNpYmxlIG9uIHZpZXdwb3J0XG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGNvbnRhaW5JblZpZXdwb3J0PzogYm9vbGVhbjtcblxuICBzdHlsZT86IGFueTtcbiAgYWxpZ25tZW50PzogQW5jaG9yZWRUb29sdGlwQWxpZ25tZW50O1xufTtcblxuZnVuY3Rpb24gZ2V0UG9zaXRpb25PblZpZXdwb3J0KGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gIHJldHVybiBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xufVxuXG5leHBvcnQgZW51bSBBbmNob3JlZFRvb2x0aXBBbGlnbm1lbnQge1xuICBMRUZULFxuICBDRU5URVIsXG4gIFJJR0hULFxufVxuXG5leHBvcnQgZW51bSBBbmNob3JlZFRvb2x0aXBBbmNob3Ige1xuICBUT1AsXG4gIEJPVFRPTSxcbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlVG9vbHRpcEZyb21BbmNob3IoXG4gIGFuY2hvclJlZjogSFRNTEVsZW1lbnQsXG4gIHRvb2x0aXBSZWY6IEhUTUxEaXZFbGVtZW50LFxuICBjb250YWluSW5WaWV3cG9ydDogYm9vbGVhbixcbiAgYWxpZ25UbzogQW5jaG9yZWRUb29sdGlwQWxpZ25tZW50ID0gQW5jaG9yZWRUb29sdGlwQWxpZ25tZW50LkNFTlRFUixcbiAgYW5jaG9yVG86IEFuY2hvcmVkVG9vbHRpcEFuY2hvciA9IEFuY2hvcmVkVG9vbHRpcEFuY2hvci5UT1Bcbikge1xuICBjb25zdCBhbmNob3JQb3NpdGlvbiA9IGdldFBvc2l0aW9uT25WaWV3cG9ydChhbmNob3JSZWYpO1xuXG4gIGNvbnN0IHNob3VsZEFuY2hvclRvQm90dG9tID1cbiAgICBhbmNob3JUbyA9PT0gQW5jaG9yZWRUb29sdGlwQW5jaG9yLkJPVFRPTSB8fFxuICAgIHRvb2x0aXBSZWYuY2xpZW50SGVpZ2h0ID4gYW5jaG9yUG9zaXRpb24udG9wO1xuXG4gIGxldCB0b3AgPSBhbmNob3JQb3NpdGlvbi50b3AgLSB0b29sdGlwUmVmLmNsaWVudEhlaWdodDtcblxuICAvKipcbiAgICogVGhlIHRlcm1zIG1lYW46XG4gICAqIGFuY2hvclBvc2l0aW9uLmxlZnQgICAgPSBUaGUgbGVmdCB0byBnZXQgdG8gdGhlIGxlZnQgYm9yZGVyIG9mIHRoZSBhbmNob3IgKHZpc2libGUgZWxlbWVudClcbiAgICogYW5jaG9yUG9zaXRpb24ud2lkdGggICA9IFRoZSB3aWR0aCBvZiB0aGUgYW5jaG9yICh2aXNpYmxlIGVsZW1lbnQpXG4gICAqIHRvb2x0aXBSZWYuY2xpZW50V2lkdGggPSBUaGUgd2lkdGggb2YgdGhlIGNvbnRlbnRcbiAgICovXG4gIGxldCBsZWZ0ID0gKCgpID0+IHtcbiAgICBzd2l0Y2ggKGFsaWduVG8pIHtcbiAgICAgIGNhc2UgQW5jaG9yZWRUb29sdGlwQWxpZ25tZW50LkNFTlRFUjpcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBhbmNob3JQb3NpdGlvbi5sZWZ0ICtcbiAgICAgICAgICBhbmNob3JQb3NpdGlvbi53aWR0aCAvIDIgLVxuICAgICAgICAgIHRvb2x0aXBSZWYuY2xpZW50V2lkdGggLyAyXG4gICAgICAgICk7XG4gICAgICBjYXNlIEFuY2hvcmVkVG9vbHRpcEFsaWdubWVudC5MRUZUOlxuICAgICAgICByZXR1cm4gYW5jaG9yUG9zaXRpb24ubGVmdDtcbiAgICAgIGNhc2UgQW5jaG9yZWRUb29sdGlwQWxpZ25tZW50LlJJR0hUOlxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIGFuY2hvclBvc2l0aW9uLmxlZnQgKyBhbmNob3JQb3NpdGlvbi53aWR0aCAtIHRvb2x0aXBSZWYuY2xpZW50V2lkdGhcbiAgICAgICAgKTtcbiAgICB9XG4gIH0pKCk7XG5cbiAgaWYgKHNob3VsZEFuY2hvclRvQm90dG9tKVxuICAgIHRvcCArPSB0b29sdGlwUmVmLmNsaWVudEhlaWdodCArIGFuY2hvclJlZi5jbGllbnRIZWlnaHQ7XG5cbiAgaWYgKGNvbnRhaW5JblZpZXdwb3J0ICYmIHRvcCA8IDApIHRvcCA9IDA7XG4gIGNvbnN0IG9mZnNldCA9IHRvcCArIHRvb2x0aXBSZWYuY2xpZW50SGVpZ2h0IC0gd2luZG93LmlubmVySGVpZ2h0O1xuICBpZiAoY29udGFpbkluVmlld3BvcnQgJiYgb2Zmc2V0ID4gMCkge1xuICAgIHRvcCAtPSBvZmZzZXQ7XG4gIH1cbiAgY29uc3Qgb2Zmc2V0TGVmdCA9IGxlZnQgKyB0b29sdGlwUmVmLmNsaWVudFdpZHRoIC0gd2luZG93LmlubmVyV2lkdGg7XG4gIGlmIChjb250YWluSW5WaWV3cG9ydCAmJiBvZmZzZXRMZWZ0ID4gMCkge1xuICAgIGxlZnQgLT0gb2Zmc2V0TGVmdDtcbiAgfVxuICBpZiAoY29udGFpbkluVmlld3BvcnQgJiYgbGVmdCA8IDApIHtcbiAgICBsZWZ0ID0gMDtcbiAgfVxuXG4gIGNvbnN0IG1heExlZnRPZmZzZXRJbmRpY2F0b3IgPSB0b29sdGlwUmVmLmNsaWVudFdpZHRoIC8gMiAtIDYwO1xuICBjb25zdCB0b29sdGlwQ2VudGVyID0gdG9vbHRpcFJlZi5jbGllbnRXaWR0aCAvIDIgKyBsZWZ0O1xuICBjb25zdCBhbmNob3JQb3NpdGlvbkNlbnRlciA9IGFuY2hvclBvc2l0aW9uLmxlZnQgKyBhbmNob3JQb3NpdGlvbi53aWR0aCAvIDI7XG5cbiAgY29uc3Qgb2Zmc2V0VG9vbHRpcCA9IGFuY2hvclBvc2l0aW9uQ2VudGVyIC0gdG9vbHRpcENlbnRlcjtcbiAgY29uc3QgbWluT2Zmc2V0VG9vbHRpcCA9IC0odG9vbHRpcFJlZi5jbGllbnRXaWR0aCAvIDIpICsgNjA7XG5cbiAgY29uc3Qgb2Zmc2V0SW5kaWNhdG9yTGVmdCA9XG4gICAgb2Zmc2V0TGVmdCA+IDBcbiAgICAgID8gb2Zmc2V0TGVmdCA+IG1heExlZnRPZmZzZXRJbmRpY2F0b3JcbiAgICAgICAgPyBtYXhMZWZ0T2Zmc2V0SW5kaWNhdG9yXG4gICAgICAgIDogb2Zmc2V0TGVmdFxuICAgICAgOiBvZmZzZXRUb29sdGlwIDwgMFxuICAgICAgPyBvZmZzZXRUb29sdGlwIDwgbWluT2Zmc2V0VG9vbHRpcFxuICAgICAgICA/IG1pbk9mZnNldFRvb2x0aXBcbiAgICAgICAgOiBvZmZzZXRUb29sdGlwXG4gICAgICA6IDA7XG5cbiAgcmV0dXJuIHtcbiAgICBvZmZzZXQsXG4gICAgb2Zmc2V0SW5kaWNhdG9yTGVmdCxcbiAgICB0b3AsXG4gICAgbGVmdCxcbiAgICBzaG91bGRBbmNob3JUb0JvdHRvbSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVRvb2x0aXBQb3NpdGlvbihcbiAgdG9vbHRpcFJlZjogSFRNTERpdkVsZW1lbnQsXG4gIGFuY2hvclJlZjogSFRNTEVsZW1lbnQsXG4gIGxpbWl0VG9WaWV3cG9ydDogYm9vbGVhbiA9IHRydWUsXG4gIGFsaWdubWVudDogQW5jaG9yZWRUb29sdGlwQWxpZ25tZW50ID0gQW5jaG9yZWRUb29sdGlwQWxpZ25tZW50LkNFTlRFUixcbiAgYW5jaG9yVG86IEFuY2hvcmVkVG9vbHRpcEFuY2hvciA9IEFuY2hvcmVkVG9vbHRpcEFuY2hvci5UT1Bcbikge1xuICBjb25zdCB7IHRvcCwgbGVmdCwgc2hvdWxkQW5jaG9yVG9Cb3R0b20sIG9mZnNldEluZGljYXRvckxlZnQgfSA9XG4gICAgY2FsY3VsYXRlVG9vbHRpcEZyb21BbmNob3IoXG4gICAgICBhbmNob3JSZWYsXG4gICAgICB0b29sdGlwUmVmLFxuICAgICAgbGltaXRUb1ZpZXdwb3J0LFxuICAgICAgYWxpZ25tZW50LFxuICAgICAgYW5jaG9yVG9cbiAgICApO1xuICBpZiAobGltaXRUb1ZpZXdwb3J0KSB7XG4gICAgY29uc3QgbWF4SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0IC0gdG9wO1xuICAgIHRvb2x0aXBSZWYuc3R5bGUubWF4SGVpZ2h0ID0gYCR7bWF4SGVpZ2h0IC0gMzJ9cHhgO1xuICB9XG4gIHRvb2x0aXBSZWYuc3R5bGUudG9wID0gYCR7dG9wfXB4YDtcbiAgdG9vbHRpcFJlZi5zdHlsZS5sZWZ0ID0gYCR7bGVmdH1weGA7XG4gIHRvb2x0aXBSZWYuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgXCItLWFuY2hvci1pbmRpY2F0b3Itb2Zmc2V0LWxlZnRcIixcbiAgICBgJHtvZmZzZXRJbmRpY2F0b3JMZWZ0fXB4YFxuICApO1xuICBpZiAoc2hvdWxkQW5jaG9yVG9Cb3R0b20pIHtcbiAgICB0b29sdGlwUmVmLmNsYXNzTGlzdC5yZW1vdmUoU3R5bGVzLmFuY2hvcmVkVG9wKTtcbiAgICB0b29sdGlwUmVmLmNsYXNzTGlzdC5hZGQoU3R5bGVzLmFuY2hvcmVkQm90dG9tKTtcbiAgfSBlbHNlIHtcbiAgICB0b29sdGlwUmVmLmNsYXNzTGlzdC5hZGQoU3R5bGVzLmFuY2hvcmVkVG9wKTtcbiAgICB0b29sdGlwUmVmLmNsYXNzTGlzdC5yZW1vdmUoU3R5bGVzLmFuY2hvcmVkQm90dG9tKTtcbiAgfVxuXG4gIHJldHVybiB7IHNob3VsZEFuY2hvclRvQm90dG9tIH07XG59XG5mdW5jdGlvbiBfQW5jaG9yZWRUb29sdGlwKFxuICB7IGNvbnRhaW5JblZpZXdwb3J0ID0gdHJ1ZSwgYWxpZ25tZW50LCAuLi5wcm9wcyB9OiBQcm9wcyxcbiAgcmVmOiBGb3J3YXJkZWRSZWY8eyB1cGRhdGVQb3NpdGlvbjogKCkgPT4gdm9pZCB9IHwgbnVsbD5cbikge1xuICBjb25zdCB7IG9wZW4sIGNoaWxkcmVuLCBhbmNob3JSZWYgfSA9IHByb3BzO1xuICBjb25zdCB0b29sdGlwUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgY2xhc3NOYW1lID0gdXNlT25lVUlDb25maWcoXCJjb21wb25lbnQudG9vbHRpcC5jbGFzc05hbWVcIik7XG4gIGNvbnN0IFtyZWFsQ2xvc2VkLCBzZXRSZWFsQ2xvc2VkXSA9IHVzZVN0YXRlKCFvcGVuKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChvcGVuKSBzZXRSZWFsQ2xvc2VkKGZhbHNlKTtcbiAgfSwgW29wZW5dKTtcblxuICB1c2VJbXBlcmF0aXZlSGFuZGxlKFxuICAgIHJlZixcbiAgICAoKSA9PiAoe1xuICAgICAgdXBkYXRlUG9zaXRpb246ICgpID0+IHtcbiAgICAgICAgdXBkYXRlVG9vbHRpcFBvc2l0aW9uKFxuICAgICAgICAgIHRvb2x0aXBSZWYuY3VycmVudCEsXG4gICAgICAgICAgYW5jaG9yUmVmLmN1cnJlbnQhLFxuICAgICAgICAgIGNvbnRhaW5JblZpZXdwb3J0LFxuICAgICAgICAgIGFsaWdubWVudFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICB9KSxcbiAgICBbY29udGFpbkluVmlld3BvcnRdXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAob3BlbiAmJiAhcmVhbENsb3NlZCkge1xuICAgICAgaWYgKGFuY2hvclJlZi5jdXJyZW50ICYmIHRvb2x0aXBSZWYuY3VycmVudClcbiAgICAgICAgdXBkYXRlVG9vbHRpcFBvc2l0aW9uKFxuICAgICAgICAgIHRvb2x0aXBSZWYuY3VycmVudCxcbiAgICAgICAgICBhbmNob3JSZWYuY3VycmVudCxcbiAgICAgICAgICBjb250YWluSW5WaWV3cG9ydCxcbiAgICAgICAgICBhbGlnbm1lbnRcbiAgICAgICAgKTtcbiAgICAgIGNvbnN0IHNjcm9sbEhhbmRsZXIgPSAoKSA9PiB7XG4gICAgICAgIGlmIChhbmNob3JSZWYuY3VycmVudCAmJiB0b29sdGlwUmVmLmN1cnJlbnQpXG4gICAgICAgICAgdXBkYXRlVG9vbHRpcFBvc2l0aW9uKFxuICAgICAgICAgICAgdG9vbHRpcFJlZi5jdXJyZW50LFxuICAgICAgICAgICAgYW5jaG9yUmVmLmN1cnJlbnQsXG4gICAgICAgICAgICBjb250YWluSW5WaWV3cG9ydCxcbiAgICAgICAgICAgIGFsaWdubWVudFxuICAgICAgICAgICk7XG4gICAgICB9O1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgc2Nyb2xsSGFuZGxlciwge1xuICAgICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCBzY3JvbGxIYW5kbGVyKTtcbiAgICAgIH07XG4gICAgfVxuICB9LCBbb3BlbiwgYW5jaG9yUmVmLCByZWFsQ2xvc2VkXSk7XG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXRvb2x0aXBSZWYuY3VycmVudCkgcmV0dXJuO1xuICAgIGlmIChvcGVuKSB0b29sdGlwUmVmLmN1cnJlbnQhLmNsYXNzTGlzdC5hZGQoU3R5bGVzLm9wZW4pO1xuICAgIGVsc2UgdG9vbHRpcFJlZi5jdXJyZW50IS5jbGFzc0xpc3QucmVtb3ZlKFN0eWxlcy5vcGVuKTtcbiAgfSwgW29wZW5dKTtcblxuICByZXR1cm4gIXJlYWxDbG9zZWQgfHwgb3BlbiA/IChcbiAgICA8PlxuICAgICAge1JlYWN0RE9NLmNyZWF0ZVBvcnRhbChcbiAgICAgICAgPEZhZGVJblxuICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpfVxuICAgICAgICAgIHJlZj17dG9vbHRpcFJlZn1cbiAgICAgICAgICBjbGFzc05hbWU9e2Ake1N0eWxlcy50b29sdGlwQ29udGFpbmVyfSAke1xuICAgICAgICAgICAgcHJvcHMuY2xhc3NOYW1lIHx8IFwiXCJcbiAgICAgICAgICB9ICR7Y2xhc3NOYW1lfWB9XG4gICAgICAgICAgc3R5bGU9e3Byb3BzLnN0eWxlfVxuICAgICAgICAgIG9uSGlkZGVuPXsoKSA9PiBzZXRSZWFsQ2xvc2VkKHRydWUpfVxuICAgICAgICA+XG4gICAgICAgICAge29wZW4gJiYgIXJlYWxDbG9zZWQgPyA8ZGl2PntjaGlsZHJlbn08L2Rpdj4gOiB1bmRlZmluZWR9XG4gICAgICAgIDwvRmFkZUluPixcbiAgICAgICAgZG9jdW1lbnQuYm9keVxuICAgICAgKX1cbiAgICA8Lz5cbiAgKSA6IG51bGw7XG59XG5cbi8qKlxuICogVGhpcyB0b29sdGlwIGFuY2hvcnMgaXRzZWxmIHRvIGFuIGVsZW1lbnQgYW5kIGhhbmRsZXMgcG9zaXRpb25pbmcgcmVsYXRpdmUgdG8gdGhlIGFuY2hvcmVkIGVsZW1lbnRcbiAqIFxuICogQSBzaW1wbGUgcG9wdXAgdGhhdCBhcHBlYXJzIG5lYXIgYW5vdGhlciBlbGVtZW50LCBhdXRvbWF0aWNhbGx5IHBvc2l0aW9uaW5nIGl0c2VsZiB0byBzdGF5IHZpc2libGVcbiAqIG9uIHRoZSBzY3JlZW4gYW5kIGFkanVzdGluZyBpdHMgbG9jYXRpb24gaWYgdGhlIHBhZ2UgaXMgc2Nyb2xsZWQgb3IgcmVzaXplZC5cbiAqL1xuY29uc3QgQW5jaG9yZWRUb29sdGlwID0gZm9yd2FyZFJlZihfQW5jaG9yZWRUb29sdGlwKTtcbmV4cG9ydCBkZWZhdWx0IEFuY2hvcmVkVG9vbHRpcDsiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFZQSxJQUFBQyxTQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxjQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxPQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSyxzQkFBQSxHQUFBSCxzQkFBQSxDQUFBRixPQUFBO0FBQW1ELE1BQUFNLFNBQUE7QUFBQSxTQUFBSix1QkFBQUssR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUFBLFNBQUFHLHlCQUFBQyxXQUFBLGVBQUFDLE9BQUEsa0NBQUFDLGlCQUFBLE9BQUFELE9BQUEsUUFBQUUsZ0JBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSxDQUFBQyxXQUFBLFdBQUFBLFdBQUEsR0FBQUcsZ0JBQUEsR0FBQUQsaUJBQUEsS0FBQUYsV0FBQTtBQUFBLFNBQUFaLHdCQUFBUSxHQUFBLEVBQUFJLFdBQUEsU0FBQUEsV0FBQSxJQUFBSixHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxXQUFBRCxHQUFBLFFBQUFBLEdBQUEsb0JBQUFBLEdBQUEsd0JBQUFBLEdBQUEsNEJBQUFFLE9BQUEsRUFBQUYsR0FBQSxVQUFBUSxLQUFBLEdBQUFMLHdCQUFBLENBQUFDLFdBQUEsT0FBQUksS0FBQSxJQUFBQSxLQUFBLENBQUFDLEdBQUEsQ0FBQVQsR0FBQSxZQUFBUSxLQUFBLENBQUFFLEdBQUEsQ0FBQVYsR0FBQSxTQUFBVyxNQUFBLFdBQUFDLHFCQUFBLEdBQUFDLE1BQUEsQ0FBQUMsY0FBQSxJQUFBRCxNQUFBLENBQUFFLHdCQUFBLFdBQUFDLEdBQUEsSUFB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
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
@use "../../assets/styles/index.scss" as *;
|
|
2
|
+
|
|
3
|
+
$arrowDim: 1em;
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Some notions to take into account
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
.tooltipContainer {
|
|
10
|
+
& > div {
|
|
11
|
+
background-color: $tooltipBackgroudColor;
|
|
12
|
+
}
|
|
13
|
+
// It should not overflow the viewport (screen)
|
|
14
|
+
max-width: 100vw;
|
|
15
|
+
max-height: 100vh;
|
|
16
|
+
min-width: fit-content;
|
|
17
|
+
|
|
18
|
+
// It should be floating over some point into the viewport
|
|
19
|
+
position: fixed;
|
|
20
|
+
|
|
21
|
+
// The position will be calculated via the javascript and the context
|
|
22
|
+
|
|
23
|
+
transition: top $almostInstant, left $almostInstant, opacity $normal;
|
|
24
|
+
z-index: 1000;
|
|
25
|
+
|
|
26
|
+
pointer-events: none;
|
|
27
|
+
|
|
28
|
+
&.open {
|
|
29
|
+
pointer-events: initial;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
&::after,
|
|
33
|
+
&::before {
|
|
34
|
+
content: " ";
|
|
35
|
+
width: 0px;
|
|
36
|
+
height: 0px;
|
|
37
|
+
border: $arrowDim solid $tooltipBackgroudColor;
|
|
38
|
+
border-top-color: transparent;
|
|
39
|
+
border-right-color: transparent;
|
|
40
|
+
transform: translateY(-$arrowDim) rotate(-45deg);
|
|
41
|
+
display: block;
|
|
42
|
+
margin: auto;
|
|
43
|
+
position: relative;
|
|
44
|
+
left: var(--anchor-indicator-offset-left, 0px);
|
|
45
|
+
z-index: -1;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
&::before {
|
|
49
|
+
display: none;
|
|
50
|
+
transform: translateY($arrowDim) rotate(135deg);
|
|
51
|
+
}
|
|
52
|
+
&.anchoredTop {
|
|
53
|
+
transform: translateY(4px);
|
|
54
|
+
}
|
|
55
|
+
&.anchoredBottom {
|
|
56
|
+
transform: translateY(-4px);
|
|
57
|
+
&::after {
|
|
58
|
+
display: none;
|
|
59
|
+
}
|
|
60
|
+
&::before {
|
|
61
|
+
display: block;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _exportNames = {};
|
|
7
|
+
Object.defineProperty(exports, "default", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return _AnchoredTooltip.default;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
var _AnchoredTooltip = _interopRequireWildcard(require("./AnchoredTooltip"));
|
|
14
|
+
Object.keys(_AnchoredTooltip).forEach(function (key) {
|
|
15
|
+
if (key === "default" || key === "__esModule") return;
|
|
16
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
17
|
+
if (key in exports && exports[key] === _AnchoredTooltip[key]) return;
|
|
18
|
+
Object.defineProperty(exports, key, {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () {
|
|
21
|
+
return _AnchoredTooltip[key];
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
26
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
27
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfQW5jaG9yZWRUb29sdGlwIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJfZXhwb3J0TmFtZXMiLCJleHBvcnRzIiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImRlc2MiLCJzZXQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9BbmNob3JlZFRvb2x0aXAvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgfSBmcm9tIFwiLi9BbmNob3JlZFRvb2x0aXBcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0FuY2hvcmVkVG9vbHRpcFwiOyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsZ0JBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosZ0JBQUEsRUFBQUssT0FBQSxXQUFBQyxHQUFBO0VBQUEsSUFBQUEsR0FBQSxrQkFBQUEsR0FBQTtFQUFBLElBQUFILE1BQUEsQ0FBQUksU0FBQSxDQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQUMsWUFBQSxFQUFBSixHQUFBO0VBQUEsSUFBQUEsR0FBQSxJQUFBSyxPQUFBLElBQUFBLE9BQUEsQ0FBQUwsR0FBQSxNQUFBTixnQkFBQSxDQUFBTSxHQUFBO0VBQUFILE1BQUEsQ0FBQVMsY0FBQSxDQUFBRCxPQUFBLEVBQUFMLEdBQUE7SUFBQU8sVUFBQTtJQUFBQyxHQUFBLFdBQUFBLENBQUE7TUFBQSxPQUFBZCxnQkFBQSxDQUFBTSxHQUFBO0lBQUE7RUFBQTtBQUFBO0FBQWtDLFNBQUFTLHlCQUFBQyxXQUFBLGVBQUFDLE9BQUEsa0NBQUFDLGlCQUFBLE9BQUFELE9BQUEsUUFBQUUsZ0JBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSxDQUFBQyxXQUFBLFdBQUFBLFdBQUEsR0FBQUcsZ0JBQUEsR0FBQUQsaUJBQUEsS0FBQUYsV0FBQTtBQUFBLFNBQUFmLHdCQUFBbUIsR0FBQSxFQUFBSixXQUFBLFNBQUFBLFdBQUEsSUFBQUksR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsV0FBQUQsR0FBQSxRQUFBQSxHQUFBLG9CQUFBQSxHQUFBLHdCQUFBQSxHQUFBLDRCQUFBRSxPQUFBLEVBQUFGLEdBQUEsVUFBQUcsS0FBQSxHQUFBUix3QkFBQSxDQUFBQyxXQUFBLE9BQUFPLEtBQUEsSUFBQUEsS0FBQSxDQUFBQyxHQUFBLENBQUFKLEdBQUEsWUFBQUcsS0FBQSxDQUFBVCxHQUFBLENBQUFNLEdBQUEsU0FBQUssTUFBQSxXQUFBQyxxQkFBQSxHQUFBdkIsTUFBQSxDQUFBUyxjQUFBLElBQUFULE1BQUEsQ0FBQXdCLHdCQUFBLFdBQUFyQixHQUFBLElBQUFjLEdBQUEsUUFBQWQsR0FBQSxrQkFBQUgsTUFBQSxDQUFBSSxTQUFBLENBQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBVyxHQUFBLEVBQUFkLEdBQUEsU0FBQXNCLElBQUEsR0FBQUYscUJBQUEsR0FBQXZCLE1BQUEsQ0FBQXdCLHdCQUFBLENBQUFQLEdBQUEsRUFBQWQsR0FBQSxjQUFBc0IsSUFBQSxLQUFBQSxJQUFBLENBQUFkLEdBQUEsSUFBQWMsSUFBQSxDQUFBQyxHQUFBLEtBQUExQixNQUFBLENBQUFTLGNBQUEsQ0FBQWEsTUFBQSxFQUFBbkIsR0FBQSxFQUFBc0IsSUFBQSxZQUFBSCxNQUFBLENBQUFuQixHQUFBLElBQUFjLEdBQUEsQ0FBQWQsR0FBQSxTQUFBbUIsTUFBQSxDQUFBSCxPQUFBLEdBQUFGLEdBQUEsTUFBQUcsS0FBQSxJQUFBQSxLQUFBLENBQUFNLEdBQUEsQ0FBQVQsR0FBQSxFQUFBSyxNQUFBLFlBQUFBLE1BQUEifQ==
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.AnimatedEntranceItem = AnimatedEntranceItem;
|
|
7
|
+
exports.EntranceType = void 0;
|
|
8
|
+
exports.default = AnimatedEntrance;
|
|
9
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _Transition = require("../Transition");
|
|
11
|
+
var _UncontrolledTransition = _interopRequireDefault(require("../UncontrolledTransition"));
|
|
12
|
+
var _AnimatedEntranceModule = _interopRequireDefault(require("./AnimatedEntrance.module.scss"));
|
|
13
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
15
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
16
|
+
let EntranceType = exports.EntranceType = /*#__PURE__*/function (EntranceType) {
|
|
17
|
+
EntranceType[EntranceType["SLIDE_AND_EXPAND"] = 0] = "SLIDE_AND_EXPAND";
|
|
18
|
+
EntranceType[EntranceType["EXPAND"] = 1] = "EXPAND";
|
|
19
|
+
return EntranceType;
|
|
20
|
+
}({});
|
|
21
|
+
const CONFIGS_BY_ENTRANCE_TYPE = {
|
|
22
|
+
[EntranceType.SLIDE_AND_EXPAND]: {
|
|
23
|
+
forward: {
|
|
24
|
+
elementEntering: _AnimatedEntranceModule.default.elementEntering,
|
|
25
|
+
elementExiting: _AnimatedEntranceModule.default.elementExiting
|
|
26
|
+
},
|
|
27
|
+
backward: {
|
|
28
|
+
elementEntering: _AnimatedEntranceModule.default.elementEnteringReverse,
|
|
29
|
+
elementExiting: _AnimatedEntranceModule.default.elementExitingReverse
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
[EntranceType.EXPAND]: {
|
|
33
|
+
forward: {
|
|
34
|
+
elementEntering: _AnimatedEntranceModule.default.elementExpanding,
|
|
35
|
+
elementExiting: _AnimatedEntranceModule.default.elementShrinking
|
|
36
|
+
},
|
|
37
|
+
backward: {
|
|
38
|
+
elementEntering: _AnimatedEntranceModule.default.elementExpandingReverse,
|
|
39
|
+
elementExiting: _AnimatedEntranceModule.default.elementShrinkingReverse
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
function AnimatedEntranceItem(_ref) {
|
|
44
|
+
var _children$key;
|
|
45
|
+
let {
|
|
46
|
+
children,
|
|
47
|
+
noEntranceAnimation,
|
|
48
|
+
onRemoveChildren,
|
|
49
|
+
entranceType
|
|
50
|
+
} = _ref;
|
|
51
|
+
const uncontRef = (0, _react.useRef)(null);
|
|
52
|
+
const [screen, setScreen] = (0, _react.useState)(noEntranceAnimation ? children : /*#__PURE__*/_react.default.createElement(_react.Fragment, {
|
|
53
|
+
key: "null"
|
|
54
|
+
}));
|
|
55
|
+
console.log(screen, children.key);
|
|
56
|
+
(0, _react.useLayoutEffect)(() => {
|
|
57
|
+
if (String(children.key).includes("-nullated") && uncontRef.current) {
|
|
58
|
+
uncontRef.current.setOrientation("backward");
|
|
59
|
+
}
|
|
60
|
+
}, [children.key]);
|
|
61
|
+
(0, _react.useEffect)(() => {
|
|
62
|
+
setScreen(String(children.key));
|
|
63
|
+
}, [children.key]);
|
|
64
|
+
(0, _react.useEffect)(() => {
|
|
65
|
+
if (screen === null) return;
|
|
66
|
+
const x = setTimeout(() => {
|
|
67
|
+
const key = String(typeof screen === "string" ? screen : screen.key);
|
|
68
|
+
if (key === "null" || key.includes("-nullated")) {
|
|
69
|
+
uncontRef.current.sectionRef.current.style.maxHeight = "".concat(uncontRef.current.sectionRef.current.scrollHeight, "px");
|
|
70
|
+
setTimeout(() => {
|
|
71
|
+
uncontRef.current.sectionRef.current.style.maxHeight = "0px";
|
|
72
|
+
}, 100);
|
|
73
|
+
} else {
|
|
74
|
+
uncontRef.current.sectionRef.current.style.maxHeight = "".concat(uncontRef.current.sectionRef.current.scrollHeight, "px");
|
|
75
|
+
if (!noEntranceAnimation) {
|
|
76
|
+
const restoreAutoHeight = _ref2 => {
|
|
77
|
+
let {
|
|
78
|
+
target,
|
|
79
|
+
currentTarget
|
|
80
|
+
} = _ref2;
|
|
81
|
+
if (target !== currentTarget) return;
|
|
82
|
+
uncontRef.current.sectionRef.current.style.removeProperty("max-height");
|
|
83
|
+
uncontRef.current.sectionRef.current.classList.remove(_AnimatedEntranceModule.default.maxHeight);
|
|
84
|
+
uncontRef.current.sectionRef.current.removeEventListener("transitionend", restoreAutoHeight);
|
|
85
|
+
};
|
|
86
|
+
uncontRef.current.sectionRef.current.addEventListener("transitionend", restoreAutoHeight);
|
|
87
|
+
} else {
|
|
88
|
+
uncontRef.current.sectionRef.current.style.removeProperty("max-height");
|
|
89
|
+
uncontRef.current.sectionRef.current.classList.remove(_AnimatedEntranceModule.default.maxHeight);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}, 100);
|
|
93
|
+
return () => {
|
|
94
|
+
clearTimeout(x);
|
|
95
|
+
};
|
|
96
|
+
}, [typeof screen === "object" ? screen === null || screen === void 0 ? void 0 : screen.key : screen]);
|
|
97
|
+
const firstRenderClass = (0, _react.useMemo)(() => noEntranceAnimation ? "" : _AnimatedEntranceModule.default.maxHeight, [screen === null]);
|
|
98
|
+
return /*#__PURE__*/_react.default.createElement(_UncontrolledTransition.default, {
|
|
99
|
+
ref: uncontRef,
|
|
100
|
+
transitionType: _Transition.TransitionAnimationTypes.CUSTOM,
|
|
101
|
+
className: "".concat(_AnimatedEntranceModule.default.resetHeight, " ").concat(firstRenderClass),
|
|
102
|
+
lockTransitionWidth: true,
|
|
103
|
+
key: String(children.key).replace("-nullated", ""),
|
|
104
|
+
onDiscardStep: k => {
|
|
105
|
+
if (k !== "null") {
|
|
106
|
+
onRemoveChildren(k);
|
|
107
|
+
setScreen(null);
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
config: CONFIGS_BY_ENTRANCE_TYPE[entranceType]
|
|
111
|
+
}, screen === null ? /*#__PURE__*/_react.default.createElement(_react.Fragment, {
|
|
112
|
+
key: "null"
|
|
113
|
+
}) : typeof screen === "string" ? (_children$key = children.key) !== null && _children$key !== void 0 && _children$key.endsWith("-nullated") && screen.endsWith("-nullated") ? /*#__PURE__*/_react.default.createElement(_react.Fragment, {
|
|
114
|
+
key: children.key + "-null"
|
|
115
|
+
}) : children : screen);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Wraps child components to add smooth entry and exit animations.
|
|
120
|
+
* It handles animations automatically when items are added or removed.
|
|
121
|
+
**/
|
|
122
|
+
function AnimatedEntrance(_ref3) {
|
|
123
|
+
let {
|
|
124
|
+
children,
|
|
125
|
+
entranceType = EntranceType.SLIDE_AND_EXPAND
|
|
126
|
+
} = _ref3;
|
|
127
|
+
const firstRef = (0, _react.useRef)(true);
|
|
128
|
+
(0, _react.useEffect)(() => {
|
|
129
|
+
firstRef.current = false;
|
|
130
|
+
}, []);
|
|
131
|
+
const prevChildren = (0, _react.useRef)([]);
|
|
132
|
+
const childrenDelayed = (0, _react.useMemo)(() => {
|
|
133
|
+
const newChildren = children.filter(c => !prevChildren.current.find(a => a.key === c.key));
|
|
134
|
+
const filteredOutChildren = prevChildren.current.map(c => {
|
|
135
|
+
return children.find(a => a.key === c.key) ?
|
|
136
|
+
// If the previous child still exists, mantain
|
|
137
|
+
c :
|
|
138
|
+
/*#__PURE__*/
|
|
139
|
+
// If not, toggle to null to animate exit
|
|
140
|
+
_react.default.createElement(_react.Fragment, {
|
|
141
|
+
key: String(c.key).includes("-nullated") ? c.key : "".concat(c.key, "-nullated")
|
|
142
|
+
}, prevChildren.current.find(a => a.key === c.key));
|
|
143
|
+
});
|
|
144
|
+
for (let child of newChildren) {
|
|
145
|
+
var _children;
|
|
146
|
+
const previousChildKey = (_children = children[children.indexOf(child) - 1]) === null || _children === void 0 ? void 0 : _children.key;
|
|
147
|
+
if (previousChildKey) {
|
|
148
|
+
filteredOutChildren.splice(filteredOutChildren.findIndex(a => a.key === previousChildKey) + 1, 0, child);
|
|
149
|
+
} else {
|
|
150
|
+
filteredOutChildren.unshift(child);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return filteredOutChildren;
|
|
154
|
+
}, [children]);
|
|
155
|
+
prevChildren.current = childrenDelayed;
|
|
156
|
+
console.log(childrenDelayed.map(a => a.key));
|
|
157
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, childrenDelayed.map(child => /*#__PURE__*/_react.default.createElement(AnimatedEntranceItem, {
|
|
158
|
+
key: String(child.key).replace("-nullated", ""),
|
|
159
|
+
noEntranceAnimation: firstRef.current,
|
|
160
|
+
entranceType: entranceType,
|
|
161
|
+
onRemoveChildren: k => {
|
|
162
|
+
prevChildren.current = prevChildren.current.filter(a => a.key !== String(k) + "-nullated");
|
|
163
|
+
}
|
|
164
|
+
}, children.find(c => c.key === child.key) || child)));
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfVHJhbnNpdGlvbiIsIl9VbmNvbnRyb2xsZWRUcmFuc2l0aW9uIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9BbmltYXRlZEVudHJhbmNlTW9kdWxlIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIkVudHJhbmNlVHlwZSIsImV4cG9ydHMiLCJDT05GSUdTX0JZX0VOVFJBTkNFX1RZUEUiLCJTTElERV9BTkRfRVhQQU5EIiwiZm9yd2FyZCIsImVsZW1lbnRFbnRlcmluZyIsIlN0eWxlcyIsImVsZW1lbnRFeGl0aW5nIiwiYmFja3dhcmQiLCJlbGVtZW50RW50ZXJpbmdSZXZlcnNlIiwiZWxlbWVudEV4aXRpbmdSZXZlcnNlIiwiRVhQQU5EIiwiZWxlbWVudEV4cGFuZGluZyIsImVsZW1lbnRTaHJpbmtpbmciLCJlbGVtZW50RXhwYW5kaW5nUmV2ZXJzZSIsImVsZW1lbnRTaHJpbmtpbmdSZXZlcnNlIiwiQW5pbWF0ZWRFbnRyYW5jZUl0ZW0iLCJfcmVmIiwiX2NoaWxkcmVuJGtleSIsImNoaWxkcmVuIiwibm9FbnRyYW5jZUFuaW1hdGlvbiIsIm9uUmVtb3ZlQ2hpbGRyZW4iLCJlbnRyYW5jZVR5cGUiLCJ1bmNvbnRSZWYiLCJ1c2VSZWYiLCJzY3JlZW4iLCJzZXRTY3JlZW4iLCJ1c2VTdGF0ZSIsImNyZWF0ZUVsZW1lbnQiLCJGcmFnbWVudCIsImNvbnNvbGUiLCJsb2ciLCJ1c2VMYXlvdXRFZmZlY3QiLCJTdHJpbmciLCJpbmNsdWRlcyIsImN1cnJlbnQiLCJzZXRPcmllbnRhdGlvbiIsInVzZUVmZmVjdCIsIngiLCJzZXRUaW1lb3V0Iiwic2VjdGlvblJlZiIsInN0eWxlIiwibWF4SGVpZ2h0IiwiY29uY2F0Iiwic2Nyb2xsSGVpZ2h0IiwicmVzdG9yZUF1dG9IZWlnaHQiLCJfcmVmMiIsInRhcmdldCIsImN1cnJlbnRUYXJnZXQiLCJyZW1vdmVQcm9wZXJ0eSIsImNsYXNzTGlzdCIsInJlbW92ZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJhZGRFdmVudExpc3RlbmVyIiwiY2xlYXJUaW1lb3V0IiwiZmlyc3RSZW5kZXJDbGFzcyIsInVzZU1lbW8iLCJyZWYiLCJ0cmFuc2l0aW9uVHlwZSIsIlRyYW5zaXRpb25BbmltYXRpb25UeXBlcyIsIkNVU1RPTSIsImNsYXNzTmFtZSIsInJlc2V0SGVpZ2h0IiwibG9ja1RyYW5zaXRpb25XaWR0aCIsInJlcGxhY2UiLCJvbkRpc2NhcmRTdGVwIiwiayIsImNvbmZpZyIsImVuZHNXaXRoIiwiQW5pbWF0ZWRFbnRyYW5jZSIsIl9yZWYzIiwiZmlyc3RSZWYiLCJwcmV2Q2hpbGRyZW4iLCJjaGlsZHJlbkRlbGF5ZWQiLCJuZXdDaGlsZHJlbiIsImZpbHRlciIsImMiLCJmaW5kIiwiYSIsImZpbHRlcmVkT3V0Q2hpbGRyZW4iLCJtYXAiLCJjaGlsZCIsIl9jaGlsZHJlbiIsInByZXZpb3VzQ2hpbGRLZXkiLCJpbmRleE9mIiwic3BsaWNlIiwiZmluZEluZGV4IiwidW5zaGlmdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0FuaW1hdGVkRW50cmFuY2UvQW5pbWF0ZWRFbnRyYW5jZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7XG4gIEVsZW1lbnRSZWYsXG4gIEZyYWdtZW50LFxuICBLZXksXG4gIFJlYWN0RWxlbWVudCxcbiAgVHJhbnNpdGlvbkV2ZW50LFxuICB1c2VFZmZlY3QsXG4gIHVzZUxheW91dEVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMgfSBmcm9tIFwiLi4vVHJhbnNpdGlvblwiO1xuaW1wb3J0IFVuY29udHJvbGxlZFRyYW5zaXRpb24gZnJvbSBcIi4uL1VuY29udHJvbGxlZFRyYW5zaXRpb25cIjtcbmltcG9ydCBTdHlsZXMgZnJvbSBcIi4vQW5pbWF0ZWRFbnRyYW5jZS5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgZW51bSBFbnRyYW5jZVR5cGUge1xuICBTTElERV9BTkRfRVhQQU5ELFxuICBFWFBBTkQsXG59XG5cbmNvbnN0IENPTkZJR1NfQllfRU5UUkFOQ0VfVFlQRSA9IHtcbiAgW0VudHJhbmNlVHlwZS5TTElERV9BTkRfRVhQQU5EXToge1xuICAgIGZvcndhcmQ6IHtcbiAgICAgIGVsZW1lbnRFbnRlcmluZzogU3R5bGVzLmVsZW1lbnRFbnRlcmluZyxcbiAgICAgIGVsZW1lbnRFeGl0aW5nOiBTdHlsZXMuZWxlbWVudEV4aXRpbmcsXG4gICAgfSxcbiAgICBiYWNrd2FyZDoge1xuICAgICAgZWxlbWVudEVudGVyaW5nOiBTdHlsZXMuZWxlbWVudEVudGVyaW5nUmV2ZXJzZSxcbiAgICAgIGVsZW1lbnRFeGl0aW5nOiBTdHlsZXMuZWxlbWVudEV4aXRpbmdSZXZlcnNlLFxuICAgIH0sXG4gIH0sXG4gIFtFbnRyYW5jZVR5cGUuRVhQQU5EXToge1xuICAgIGZvcndhcmQ6IHtcbiAgICAgIGVsZW1lbnRFbnRlcmluZzogU3R5bGVzLmVsZW1lbnRFeHBhbmRpbmcsXG4gICAgICBlbGVtZW50RXhpdGluZzogU3R5bGVzLmVsZW1lbnRTaHJpbmtpbmcsXG4gICAgfSxcbiAgICBiYWNrd2FyZDoge1xuICAgICAgZWxlbWVudEVudGVyaW5nOiBTdHlsZXMuZWxlbWVudEV4cGFuZGluZ1JldmVyc2UsXG4gICAgICBlbGVtZW50RXhpdGluZzogU3R5bGVzLmVsZW1lbnRTaHJpbmtpbmdSZXZlcnNlLFxuICAgIH0sXG4gIH0sXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gQW5pbWF0ZWRFbnRyYW5jZUl0ZW0oe1xuICBjaGlsZHJlbixcbiAgbm9FbnRyYW5jZUFuaW1hdGlvbixcbiAgb25SZW1vdmVDaGlsZHJlbixcbiAgZW50cmFuY2VUeXBlLFxufToge1xuICBjaGlsZHJlbjogUmVhY3RFbGVtZW50O1xuICBub0VudHJhbmNlQW5pbWF0aW9uOiBib29sZWFuO1xuICBvblJlbW92ZUNoaWxkcmVuOiAoa2V5OiBLZXkpID0+IHZvaWQ7XG4gIGVudHJhbmNlVHlwZTogRW50cmFuY2VUeXBlO1xufSkge1xuICBjb25zdCB1bmNvbnRSZWYgPSB1c2VSZWY8RWxlbWVudFJlZjx0eXBlb2YgVW5jb250cm9sbGVkVHJhbnNpdGlvbj4+KG51bGwpO1xuICBjb25zdCBbc2NyZWVuLCBzZXRTY3JlZW5dID0gdXNlU3RhdGU8UmVhY3RFbGVtZW50IHwgc3RyaW5nIHwgbnVsbD4oXG4gICAgbm9FbnRyYW5jZUFuaW1hdGlvbiA/IGNoaWxkcmVuIDogPEZyYWdtZW50IGtleT17XCJudWxsXCJ9IC8+XG4gICk7XG4gIGNvbnNvbGUubG9nKHNjcmVlbiwgY2hpbGRyZW4ua2V5KVxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChTdHJpbmcoY2hpbGRyZW4ua2V5KS5pbmNsdWRlcyhcIi1udWxsYXRlZFwiKSAmJiB1bmNvbnRSZWYuY3VycmVudCkge1xuICAgICAgdW5jb250UmVmLmN1cnJlbnQhLnNldE9yaWVudGF0aW9uKFwiYmFja3dhcmRcIik7XG4gICAgfVxuICB9LCBbY2hpbGRyZW4ua2V5XSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRTY3JlZW4oU3RyaW5nKGNoaWxkcmVuLmtleSkpO1xuICB9LCBbY2hpbGRyZW4ua2V5XSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc2NyZWVuID09PSBudWxsKSByZXR1cm47XG4gICAgY29uc3QgeCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3Qga2V5ID0gU3RyaW5nKHR5cGVvZiBzY3JlZW4gPT09IFwic3RyaW5nXCIgPyBzY3JlZW4gOiBzY3JlZW4ua2V5ISk7XG4gICAgICBpZiAoa2V5ID09PSBcIm51bGxcIiB8fCBrZXkuaW5jbHVkZXMoXCItbnVsbGF0ZWRcIikpIHtcbiAgICAgICAgdW5jb250UmVmLmN1cnJlbnQhLnNlY3Rpb25SZWYuY3VycmVudCEuc3R5bGUubWF4SGVpZ2h0ID0gYCR7dW5jb250UmVmLmN1cnJlbnQhLnNlY3Rpb25SZWYuY3VycmVudCEuc2Nyb2xsSGVpZ2h0XG4gICAgICAgICAgfXB4YDtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdW5jb250UmVmLmN1cnJlbnQhLnNlY3Rpb25SZWYuY3VycmVudCEuc3R5bGUubWF4SGVpZ2h0ID0gYDBweGA7XG4gICAgICAgIH0sIDEwMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1bmNvbnRSZWYuY3VycmVudCEuc2VjdGlvblJlZi5jdXJyZW50IS5zdHlsZS5tYXhIZWlnaHQgPSBgJHt1bmNvbnRSZWYuY3VycmVudCEuc2VjdGlvblJlZi5jdXJyZW50IS5zY3JvbGxIZWlnaHRcbiAgICAgICAgICB9cHhgO1xuICAgICAgICBpZiAoIW5vRW50cmFuY2VBbmltYXRpb24pIHtcbiAgICAgICAgICBjb25zdCByZXN0b3JlQXV0b0hlaWdodCA9ICh7XG4gICAgICAgICAgICB0YXJnZXQsXG4gICAgICAgICAgICBjdXJyZW50VGFyZ2V0LFxuICAgICAgICAgIH06IFRyYW5zaXRpb25FdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgICAgICAgIGlmICh0YXJnZXQgIT09IGN1cnJlbnRUYXJnZXQpIHJldHVybjtcbiAgICAgICAgICAgIHVuY29udFJlZi5jdXJyZW50IS5zZWN0aW9uUmVmLmN1cnJlbnQhLnN0eWxlLnJlbW92ZVByb3BlcnR5KFxuICAgICAgICAgICAgICBcIm1heC1oZWlnaHRcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHVuY29udFJlZi5jdXJyZW50IS5zZWN0aW9uUmVmLmN1cnJlbnQhLmNsYXNzTGlzdC5yZW1vdmUoXG4gICAgICAgICAgICAgIFN0eWxlcy5tYXhIZWlnaHRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB1bmNvbnRSZWYuY3VycmVudCEuc2VjdGlvblJlZi5jdXJyZW50IS5yZW1vdmVFdmVudExpc3RlbmVyKFxuICAgICAgICAgICAgICBcInRyYW5zaXRpb25lbmRcIixcbiAgICAgICAgICAgICAgcmVzdG9yZUF1dG9IZWlnaHQgYXMgYW55XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH07XG4gICAgICAgICAgdW5jb250UmVmLmN1cnJlbnQhLnNlY3Rpb25SZWYuY3VycmVudCEuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAgIFwidHJhbnNpdGlvbmVuZFwiLFxuICAgICAgICAgICAgcmVzdG9yZUF1dG9IZWlnaHQgYXMgYW55XG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1bmNvbnRSZWYuY3VycmVudCEuc2VjdGlvblJlZi5jdXJyZW50IS5zdHlsZS5yZW1vdmVQcm9wZXJ0eShcbiAgICAgICAgICAgIFwibWF4LWhlaWdodFwiXG4gICAgICAgICAgKTtcbiAgICAgICAgICB1bmNvbnRSZWYuY3VycmVudCEuc2VjdGlvblJlZi5jdXJyZW50IS5jbGFzc0xpc3QucmVtb3ZlKFxuICAgICAgICAgICAgU3R5bGVzLm1heEhlaWdodFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCAxMDApO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjbGVhclRpbWVvdXQoeCk7XG4gICAgfTtcbiAgfSwgW3R5cGVvZiBzY3JlZW4gPT09IFwib2JqZWN0XCIgPyBzY3JlZW4/LmtleSA6IHNjcmVlbl0pO1xuXG4gIGNvbnN0IGZpcnN0UmVuZGVyQ2xhc3MgPSB1c2VNZW1vKFxuICAgICgpID0+IChub0VudHJhbmNlQW5pbWF0aW9uID8gXCJcIiA6IFN0eWxlcy5tYXhIZWlnaHQpLFxuICAgIFtzY3JlZW4gPT09IG51bGxdXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8VW5jb250cm9sbGVkVHJhbnNpdGlvblxuICAgICAgcmVmPXt1bmNvbnRSZWZ9XG4gICAgICB0cmFuc2l0aW9uVHlwZT17VHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLkNVU1RPTX1cbiAgICAgIGNsYXNzTmFtZT17YCR7U3R5bGVzLnJlc2V0SGVpZ2h0fSAke2ZpcnN0UmVuZGVyQ2xhc3N9YH1cbiAgICAgIGxvY2tUcmFuc2l0aW9uV2lkdGhcbiAgICAgIGtleT17U3RyaW5nKGNoaWxkcmVuLmtleSkucmVwbGFjZShcIi1udWxsYXRlZFwiLCBcIlwiKX1cbiAgICAgIG9uRGlzY2FyZFN0ZXA9eyhrKSA9PiB7XG4gICAgICAgIGlmIChrICE9PSBcIm51bGxcIikge1xuICAgICAgICAgIG9uUmVtb3ZlQ2hpbGRyZW4oayEpO1xuICAgICAgICAgIHNldFNjcmVlbihudWxsKTtcbiAgICAgICAgfVxuICAgICAgfX1cbiAgICAgIGNvbmZpZz17Q09ORklHU19CWV9FTlRSQU5DRV9UWVBFW2VudHJhbmNlVHlwZV19XG4gICAgPlxuICAgICAge3NjcmVlbiA9PT0gbnVsbCA/IChcbiAgICAgICAgPEZyYWdtZW50IGtleT17XCJudWxsXCJ9IC8+XG4gICAgICApIDogdHlwZW9mIHNjcmVlbiA9PT0gXCJzdHJpbmdcIiA/IChcbiAgICAgICAgKGNoaWxkcmVuLmtleT8uZW5kc1dpdGgoXCItbnVsbGF0ZWRcIikgJiYgc2NyZWVuLmVuZHNXaXRoKFwiLW51bGxhdGVkXCIpKVxuICAgICAgICAgID8gPEZyYWdtZW50IGtleT17Y2hpbGRyZW4ua2V5ICsgXCItbnVsbFwifSAvPlxuICAgICAgICAgIDogY2hpbGRyZW5cbiAgICAgICkgOiAoXG4gICAgICAgIHNjcmVlblxuICAgICAgKX1cbiAgICA8L1VuY29udHJvbGxlZFRyYW5zaXRpb24+XG4gICk7XG59XG5cbi8qKlxuICogV3JhcHMgY2hpbGQgY29tcG9uZW50cyB0byBhZGQgc21vb3RoIGVudHJ5IGFuZCBleGl0IGFuaW1hdGlvbnMuXG4gKiBJdCBoYW5kbGVzIGFuaW1hdGlvbnMgYXV0b21hdGljYWxseSB3aGVuIGl0ZW1zIGFyZSBhZGRlZCBvciByZW1vdmVkLlxuICoqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQW5pbWF0ZWRFbnRyYW5jZSh7XG4gIGNoaWxkcmVuLFxuICBlbnRyYW5jZVR5cGUgPSBFbnRyYW5jZVR5cGUuU0xJREVfQU5EX0VYUEFORCxcbn06IHtcbiAgY2hpbGRyZW46IFJlYWN0RWxlbWVudFtdO1xuICBlbnRyYW5jZVR5cGU/OiBFbnRyYW5jZVR5cGU7XG59KSB7XG4gIGNvbnN0IGZpcnN0UmVmID0gdXNlUmVmKHRydWUpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZpcnN0UmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgfSwgW10pO1xuICBjb25zdCBwcmV2Q2hpbGRyZW4gPSB1c2VSZWYoW10gYXMgdHlwZW9mIGNoaWxkcmVuKTtcbiAgY29uc3QgY2hpbGRyZW5EZWxheWVkID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgbmV3Q2hpbGRyZW4gPSBjaGlsZHJlbi5maWx0ZXIoXG4gICAgICAoYykgPT4gIXByZXZDaGlsZHJlbi5jdXJyZW50LmZpbmQoKGEpID0+IGEua2V5ID09PSBjLmtleSlcbiAgICApO1xuICAgIGNvbnN0IGZpbHRlcmVkT3V0Q2hpbGRyZW4gPSBwcmV2Q2hpbGRyZW4uY3VycmVudC5tYXAoKGMpID0+IHtcbiAgICAgIHJldHVybiBjaGlsZHJlbi5maW5kKChhKSA9PiBhLmtleSA9PT0gYy5rZXkpID8gKCAvLyBJZiB0aGUgcHJldmlvdXMgY2hpbGQgc3RpbGwgZXhpc3RzLCBtYW50YWluXG4gICAgICAgIGNcbiAgICAgICkgOiAoXG4gICAgICAgIC8vIElmIG5vdCwgdG9nZ2xlIHRvIG51bGwgdG8gYW5pbWF0ZSBleGl0XG4gICAgICAgIDxGcmFnbWVudFxuICAgICAgICAgIGtleT17XG4gICAgICAgICAgICBTdHJpbmcoYy5rZXkpLmluY2x1ZGVzKFwiLW51bGxhdGVkXCIpID8gYy5rZXkgOiBgJHtjLmtleX0tbnVsbGF0ZWRgXG4gICAgICAgICAgfVxuICAgICAgICA+XG4gICAgICAgICAge3ByZXZDaGlsZHJlbi5jdXJyZW50LmZpbmQoYSA9PiBhLmtleSA9PT0gYy5rZXkpfVxuICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGZvciAobGV0IGNoaWxkIG9mIG5ld0NoaWxkcmVuKSB7XG4gICAgICBjb25zdCBwcmV2aW91c0NoaWxkS2V5ID0gY2hpbGRyZW5bY2hpbGRyZW4uaW5kZXhPZihjaGlsZCkgLSAxXT8ua2V5O1xuICAgICAgaWYgKHByZXZpb3VzQ2hpbGRLZXkpIHtcbiAgICAgICAgZmlsdGVyZWRPdXRDaGlsZHJlbi5zcGxpY2UoXG4gICAgICAgICAgZmlsdGVyZWRPdXRDaGlsZHJlbi5maW5kSW5kZXgoKGEpID0+IGEua2V5ID09PSBwcmV2aW91c0NoaWxkS2V5KSArIDEsXG4gICAgICAgICAgMCxcbiAgICAgICAgICBjaGlsZFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmlsdGVyZWRPdXRDaGlsZHJlbi51bnNoaWZ0KGNoaWxkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmlsdGVyZWRPdXRDaGlsZHJlbjtcbiAgfSwgW2NoaWxkcmVuXSk7XG4gIHByZXZDaGlsZHJlbi5jdXJyZW50ID0gY2hpbGRyZW5EZWxheWVkO1xuXG4gIGNvbnNvbGUubG9nKGNoaWxkcmVuRGVsYXllZC5tYXAoYSA9PiBhLmtleSkpO1xuXG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2NoaWxkcmVuRGVsYXllZC5tYXAoKGNoaWxkKSA9PiAoXG4gICAgICAgIDxBbmltYXRlZEVudHJhbmNlSXRlbVxuICAgICAgICAgIGtleT17U3RyaW5nKGNoaWxkLmtleSEpLnJlcGxhY2UoXCItbnVsbGF0ZWRcIiwgXCJcIil9XG4gICAgICAgICAgbm9FbnRyYW5jZUFuaW1hdGlvbj17Zmlyc3RSZWYuY3VycmVudH1cbiAgICAgICAgICBlbnRyYW5jZVR5cGU9e2VudHJhbmNlVHlwZX1cbiAgICAgICAgICBvblJlbW92ZUNoaWxkcmVuPXsoaykgPT4ge1xuXG4gICAgICAgICAgICAocHJldkNoaWxkcmVuLmN1cnJlbnQgPSBwcmV2Q2hpbGRyZW4uY3VycmVudC5maWx0ZXIoXG4gICAgICAgICAgICAgIChhKSA9PiBhLmtleSAhPT0gU3RyaW5nKGspICsgXCItbnVsbGF0ZWRcIlxuICAgICAgICAgICAgKSlcbiAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICA+XG4gICAgICAgICAge2NoaWxkcmVuLmZpbmQoKGMpID0+IGMua2V5ID09PSBjaGlsZC5rZXkpIHx8IGNoaWxkfVxuICAgICAgICA8L0FuaW1hdGVkRW50cmFuY2VJdGVtPlxuICAgICAgKSl9XG4gICAgPC8+XG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBWUEsSUFBQUMsV0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsdUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFJLHVCQUFBLEdBQUFELHNCQUFBLENBQUFILE9BQUE7QUFBb0QsU0FBQUcsdUJBQUFFLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFBQSxTQUFBRyx5QkFBQUMsV0FBQSxlQUFBQyxPQUFBLGtDQUFBQyxpQkFBQSxPQUFBRCxPQUFBLFFBQUFFLGdCQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsV0FBQSxXQUFB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
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
@use 'sass:math';
|
|
2
|
+
@keyframes expand {
|
|
3
|
+
0% {
|
|
4
|
+
transform: translateX(100%);
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
35% {
|
|
8
|
+
transform: translateX(100%);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
85% {
|
|
12
|
+
transform: translateX(-5%);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
100% {
|
|
16
|
+
transform: translateX(0%);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
@keyframes exiting {
|
|
21
|
+
100% {
|
|
22
|
+
transform: translateX(100%);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
65% {
|
|
26
|
+
transform: translateX(100%);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
50% {
|
|
30
|
+
opacity: 0;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
15% {
|
|
34
|
+
transform: translateX(-5%);
|
|
35
|
+
opacity: 1;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
0% {
|
|
39
|
+
transform: translateX(0%);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
$duration: 1s;
|
|
43
|
+
|
|
44
|
+
.elementExiting {
|
|
45
|
+
animation-duration: $duration !important;
|
|
46
|
+
animation-name: exiting;
|
|
47
|
+
position: absolute;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.elementEntering {
|
|
51
|
+
animation-duration: $duration !important;
|
|
52
|
+
animation-name: expand;
|
|
53
|
+
}
|
|
54
|
+
.elementExitingReverse {
|
|
55
|
+
animation-duration: $duration !important;
|
|
56
|
+
animation-name: exiting;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.elementEnteringReverse {
|
|
60
|
+
animation-duration: $duration !important;
|
|
61
|
+
animation-name: expand;
|
|
62
|
+
position: absolute;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.resetHeight {
|
|
66
|
+
transition: max-height math.div($duration, 2) $duration * 0.2;
|
|
67
|
+
min-height: initial;
|
|
68
|
+
align-items: flex-start !important;
|
|
69
|
+
flex-shrink: 0;
|
|
70
|
+
> * {
|
|
71
|
+
justify-content: flex-start !important;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.maxHeight {
|
|
76
|
+
max-height: 0px;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
@keyframes nothing {
|
|
80
|
+
100% {
|
|
81
|
+
transform: translateX(0%);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
0% {
|
|
85
|
+
transform: translateX(0%);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.elementShrinking {
|
|
90
|
+
animation-duration: $duration !important;
|
|
91
|
+
animation-name: nothing;
|
|
92
|
+
position: absolute;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.elementExpanding {
|
|
96
|
+
animation-duration: $duration !important;
|
|
97
|
+
animation-name: nothing;
|
|
98
|
+
}
|
|
99
|
+
.elementShrinkingReverse {
|
|
100
|
+
animation-duration: $duration !important;
|
|
101
|
+
animation-name: nothing;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.elementExpandingReverse {
|
|
105
|
+
animation-duration: $duration !important;
|
|
106
|
+
animation-name: nothing;
|
|
107
|
+
position: absolute;
|
|
108
|
+
}
|