@onepercentio/one-ui 1.3.5 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/WebpackConfigs/email-templates.js +99 -0
  2. package/dist/components/AdaptiveButton/AdaptiveButton.js +26 -24
  3. package/dist/components/AdaptiveButton/index.js +25 -22
  4. package/dist/components/AdaptiveContainer/AdaptiveContainer.js +140 -139
  5. package/dist/components/AdaptiveContainer/index.js +25 -22
  6. package/dist/components/AdaptiveDialog/AdaptiveDialog.js +76 -42
  7. package/dist/components/AdaptiveDialog/AdaptiveDialog.module.scss +17 -3
  8. package/dist/components/AdaptiveDialog/index.js +25 -22
  9. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.js +70 -54
  10. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.sample.js +10 -9
  11. package/dist/components/AdaptiveSidebar/index.js +25 -22
  12. package/dist/components/AnchoredTooltip/AnchoredTooltip.js +155 -154
  13. package/dist/components/AnchoredTooltip/AnchoredTooltip.module.scss +13 -10
  14. package/dist/components/AnchoredTooltip/index.js +25 -22
  15. package/dist/components/AnimatedEntrance/AnimatedEntrance.js +154 -121
  16. package/dist/components/AnimatedEntrance/index.js +25 -22
  17. package/dist/components/AsyncTriggerContainer/AsyncTriggerContainer.js +80 -40
  18. package/dist/components/AsyncTriggerContainer/index.js +25 -22
  19. package/dist/components/AsyncWrapper/AsyncWrapper.js +34 -16
  20. package/dist/components/AsyncWrapper/index.js +25 -22
  21. package/dist/components/Avatar/Avatar.js +33 -18
  22. package/dist/components/Avatar/index.js +25 -22
  23. package/dist/components/BucketFill/BucketFill.js +49 -36
  24. package/dist/components/BucketFill/index.js +25 -22
  25. package/dist/components/Button/Button.js +30 -22
  26. package/dist/components/Button/index.js +25 -22
  27. package/dist/components/Card/Card.js +17 -10
  28. package/dist/components/Card/index.js +25 -22
  29. package/dist/components/Chart/Chart.js +25 -22
  30. package/dist/components/Chart/Chart.logic.js +10 -9
  31. package/dist/components/Chart/Chart.types.js +5 -2
  32. package/dist/components/Chart/Chart.view.js +174 -98
  33. package/dist/components/Chart/index.js +25 -22
  34. package/dist/components/CheckBox/CheckBox.js +48 -30
  35. package/dist/components/CheckBox/CheckBox.module.scss +5 -0
  36. package/dist/components/CheckBox/index.js +25 -22
  37. package/dist/components/CodeInput/CodeInput.js +75 -93
  38. package/dist/components/CodeInput/index.js +25 -22
  39. package/dist/components/Collapsable/Collapsable.js +164 -134
  40. package/dist/components/Collapsable/index.js +25 -22
  41. package/dist/components/Countdown/Countdown.js +69 -86
  42. package/dist/components/Countdown/index.js +25 -22
  43. package/dist/components/CurrencyInput/CurrencyInput.hook.js +25 -25
  44. package/dist/components/CurrencyInput/CurrencyInput.js +48 -29
  45. package/dist/components/CurrencyInput/index.js +25 -22
  46. package/dist/components/Divider/Divider.js +16 -10
  47. package/dist/components/Divider/index.js +25 -22
  48. package/dist/components/EmailInput/EmailInput.js +37 -23
  49. package/dist/components/EmailInput/index.js +25 -22
  50. package/dist/components/FadeIn/FadeIn.js +57 -51
  51. package/dist/components/FadeIn/index.js +25 -22
  52. package/dist/components/FileInput/FileInput.js +45 -38
  53. package/dist/components/FileInput/View/BigFactory/BigFactory.js +48 -16
  54. package/dist/components/FileInput/View/BigFactory/index.js +25 -22
  55. package/dist/components/FileInput/View/Compact/Compact.js +114 -46
  56. package/dist/components/FileInput/View/Compact/index.js +25 -22
  57. package/dist/components/FileInput/View/View.types.js +5 -2
  58. package/dist/components/FileInput/index.js +25 -22
  59. package/dist/components/FlowController/FlowController.js +56 -25
  60. package/dist/components/FlowController/index.js +25 -22
  61. package/dist/components/Form/Form.hook.js +217 -202
  62. package/dist/components/Form/Form.js +103 -65
  63. package/dist/components/Form/Form.types.js +39 -53
  64. package/dist/components/Form/FormField/Extensions/DateField/DateField.js +68 -53
  65. package/dist/components/Form/FormField/Extensions/DateField/index.js +25 -22
  66. package/dist/components/Form/FormField/Extensions/PhoneField/PhoneField.js +81 -78
  67. package/dist/components/Form/FormField/Extensions/PhoneField/index.js +25 -22
  68. package/dist/components/Form/FormField/FormField.js +307 -148
  69. package/dist/components/Form/FormField/FormField.types.js +10 -7
  70. package/dist/components/Form/FormField/index.js +25 -22
  71. package/dist/components/Form/index.js +25 -22
  72. package/dist/components/Freeze/Freeze.js +13 -9
  73. package/dist/components/Freeze/index.js +25 -22
  74. package/dist/components/HSForms/HSForms.js +48 -69
  75. package/dist/components/HSForms/index.js +25 -22
  76. package/dist/components/HeaderCloseBtn/HeaderCloseBtn.js +19 -10
  77. package/dist/components/HeaderCloseBtn/index.js +25 -22
  78. package/dist/components/InfinityScroll/InfinityScroll.js +114 -94
  79. package/dist/components/InfinityScroll/index.js +25 -22
  80. package/dist/components/Input/Input.js +99 -57
  81. package/dist/components/Input/index.js +25 -22
  82. package/dist/components/InstantCounter/InstantCounter.js +49 -31
  83. package/dist/components/InstantCounter/index.js +25 -22
  84. package/dist/components/LavaLamp/LavaLamp.data.js +83 -86
  85. package/dist/components/LavaLamp/LavaLamp.js +119 -32
  86. package/dist/components/LavaLamp/index.js +25 -22
  87. package/dist/components/LavaLamp/v2/LavaLamp.js +149 -156
  88. package/dist/components/LinkToId/LinkToId.js +39 -27
  89. package/dist/components/LinkToId/index.js +25 -22
  90. package/dist/components/Loader/Loader.js +21 -22
  91. package/dist/components/Loader/index.js +25 -22
  92. package/dist/components/LoaderDotsIndicator/LoaderDotsIndicator.js +27 -15
  93. package/dist/components/LoaderDotsIndicator/index.js +25 -22
  94. package/dist/components/LoopableVideo/LoopableVideo.js +33 -25
  95. package/dist/components/LoopableVideo/index.js +25 -22
  96. package/dist/components/MainGrid/MainGrid.js +46 -23
  97. package/dist/components/MainGrid/index.js +25 -22
  98. package/dist/components/MutableHamburgerButton/MutableHamburgerButton.js +27 -23
  99. package/dist/components/MutableHamburgerButton/index.js +25 -22
  100. package/dist/components/Notification/Notification.js +18 -11
  101. package/dist/components/Notification/index.js +25 -22
  102. package/dist/components/NumberInput/NumberInput.js +43 -42
  103. package/dist/components/NumberInput/index.js +25 -22
  104. package/dist/components/OrderableList/OrderableList.js +416 -404
  105. package/dist/components/OrderableList/index.js +25 -22
  106. package/dist/components/PaginationIndicator/PaginationIndicator.js +243 -198
  107. package/dist/components/PaginationIndicator/index.js +25 -22
  108. package/dist/components/Parallax/Parallax.js +156 -130
  109. package/dist/components/Parallax/index.js +25 -22
  110. package/dist/components/Parallax/math/helpers.js +120 -216
  111. package/dist/components/PasswordInput/PasswordInput.js +88 -71
  112. package/dist/components/PasswordInput/index.js +25 -22
  113. package/dist/components/PingPongText/PingPongText.js +63 -67
  114. package/dist/components/PingPongText/index.js +25 -22
  115. package/dist/components/PixelatedScan/PixelatedScan.js +126 -74
  116. package/dist/components/PixelatedScan/index.js +25 -22
  117. package/dist/components/Portal/Portal.js +46 -43
  118. package/dist/components/Portal/index.js +25 -22
  119. package/dist/components/ProgressBar/ProgressBar.js +105 -47
  120. package/dist/components/ProgressBar/index.js +25 -22
  121. package/dist/components/ProgressTexts/ProgressTexts.js +43 -29
  122. package/dist/components/ProgressTexts/index.js +25 -22
  123. package/dist/components/Radio/Radio.js +51 -28
  124. package/dist/components/Radio/index.js +25 -22
  125. package/dist/components/Radio/variants/Checkmark/Checkmark.js +18 -12
  126. package/dist/components/Radio/variants/Checkmark/index.js +25 -22
  127. package/dist/components/Radio/variants/Generic/Generic.js +20 -12
  128. package/dist/components/Radio/variants/Generic/index.js +25 -22
  129. package/dist/components/ScrollendIndicator/ScrollendIndicator.js +118 -0
  130. package/dist/components/ScrollendIndicator/ScrollendIndicator.module.scss +76 -0
  131. package/dist/components/SectionContainer/SectionContainer.js +38 -16
  132. package/dist/components/SectionContainer/index.js +25 -22
  133. package/dist/components/Select/Select.js +128 -95
  134. package/dist/components/Select/index.js +25 -22
  135. package/dist/components/Skeleton/Skeleton.js +22 -14
  136. package/dist/components/Skeleton/index.js +25 -22
  137. package/dist/components/Slider/Slider.js +63 -59
  138. package/dist/components/Slider/index.js +25 -22
  139. package/dist/components/Spacing/Spacing.js +25 -17
  140. package/dist/components/Spacing/index.js +25 -22
  141. package/dist/components/StaticScroller/StaticScroller.js +65 -61
  142. package/dist/components/StaticScroller/index.js +25 -22
  143. package/dist/components/Switch/Switch.js +40 -26
  144. package/dist/components/Switch/index.js +25 -22
  145. package/dist/components/Table/Table.js +107 -56
  146. package/dist/components/Table/index.js +25 -22
  147. package/dist/components/Tabs/Tabs.js +59 -54
  148. package/dist/components/Tabs/index.js +25 -22
  149. package/dist/components/Text/Text.js +35 -30
  150. package/dist/components/Text/index.js +25 -22
  151. package/dist/components/Transition/MasksFactory/DiagonalReveal.js +46 -12
  152. package/dist/components/Transition/MasksFactory/DiagonalSquareToBalls.js +71 -49
  153. package/dist/components/Transition/MasksFactory/PhysicsSquares.js +89 -79
  154. package/dist/components/Transition/MasksFactory/SquareToBalls.js +60 -41
  155. package/dist/components/Transition/MasksFactory/utils.js +25 -27
  156. package/dist/components/Transition/Transition.js +298 -319
  157. package/dist/components/Transition/index.js +25 -22
  158. package/dist/components/UncontrolledTransition/UncontrolledTransition.js +101 -93
  159. package/dist/components/UncontrolledTransition/UncontrolledTransition.sample.js +27 -19
  160. package/dist/components/UncontrolledTransition/index.js +25 -22
  161. package/dist/components/WalletConnectionWrapper/WalletConnectionWrapper.js +101 -94
  162. package/dist/components/WalletConnectionWrapper/index.js +25 -22
  163. package/dist/components/utilitary/ScrollAndFocusLock/ScrollAndFocusLock.js +53 -43
  164. package/dist/components/utilitary/ScrollAndFocusLock/index.js +25 -22
  165. package/dist/context/AsyncProcess.js +68 -41
  166. package/dist/context/ContextAsyncControl.js +72 -51
  167. package/dist/context/CustomBrowserRouter.js +44 -30
  168. package/dist/context/OneUIProvider.js +102 -108
  169. package/dist/hooks/logs/useDependencyChangeDetection.js +17 -16
  170. package/dist/hooks/logs/useIsMounting.js +10 -7
  171. package/dist/hooks/persistence/useLocalStorage.js +41 -40
  172. package/dist/hooks/shims/ObjectWatchShim.js +47 -46
  173. package/dist/hooks/ui/useAdaptiveImage.js +29 -34
  174. package/dist/hooks/ui/useAlternating.js +18 -18
  175. package/dist/hooks/ui/useBreakpoint.js +19 -18
  176. package/dist/hooks/ui/useCustomScrollbar.js +26 -21
  177. package/dist/hooks/ui/useEffectIf.js +11 -9
  178. package/dist/hooks/ui/useMouseHover.js +22 -19
  179. package/dist/hooks/ui/usePaginationControls.js +129 -136
  180. package/dist/hooks/ui/useSnapToViewport.js +20 -19
  181. package/dist/hooks/ui/useTilt.js +145 -129
  182. package/dist/hooks/ui/useZoomable.js +123 -116
  183. package/dist/hooks/useAsyncControl.js +67 -52
  184. package/dist/hooks/useContainedRepositioning.js +75 -71
  185. package/dist/hooks/useCustomHistory.js +21 -12
  186. package/dist/hooks/useElementFit.js +43 -48
  187. package/dist/hooks/useFirestoreWatch.js +41 -41
  188. package/dist/hooks/useFreeze.js +10 -8
  189. package/dist/hooks/useHero.js +249 -271
  190. package/dist/hooks/useIntersection.js +32 -27
  191. package/dist/hooks/useMergeRefs.js +27 -24
  192. package/dist/hooks/useObserve.js +17 -14
  193. package/dist/hooks/usePagination.js +147 -164
  194. package/dist/hooks/usePooledOperation.js +41 -57
  195. package/dist/hooks/usePooling.js +46 -49
  196. package/dist/hooks/useRebound.js +23 -19
  197. package/dist/hooks/useShortIntl.js +72 -50
  198. package/dist/hooks/utility/useAsyncMemo.js +36 -42
  199. package/dist/hooks/utility/useDepChange.js +14 -12
  200. package/dist/hooks/utility/useEvents.js +26 -21
  201. package/dist/hooks/utility/useImmediate.js +8 -5
  202. package/dist/hooks/utility/useManualInit.js +19 -17
  203. package/dist/hooks/utility/useModule.js +12 -9
  204. package/dist/hooks/utility/useQuery.js +13 -7
  205. package/dist/hooks/utility/useUniqueEffect.js +17 -17
  206. package/dist/index.js +2159 -349
  207. package/dist/index.preprocess.js +35 -72
  208. package/dist/models/DebugLogger.js +8 -5
  209. package/dist/models/GenericContract.js +42 -13
  210. package/dist/models/ImageScales.js +13 -10
  211. package/dist/models/Orbs.js +53 -47
  212. package/dist/storybookUtils/index.js +40 -39
  213. package/dist/type-utils.js +5 -2
  214. package/dist/types.js +5 -2
  215. package/dist/utils/blockchain.js +35 -54
  216. package/dist/utils/e2e.js +21 -11
  217. package/dist/utils/flatten.js +15 -12
  218. package/dist/utils/formatters.js +48 -43
  219. package/dist/utils/html.utils.js +12 -6
  220. package/dist/utils/ownEvent.js +9 -7
  221. package/dist/utils/test.js +13 -11
  222. package/dist-ts/components/ScrollendIndicator/ScrollendIndicator.d.ts +10 -0
  223. package/dist-ts/components/ScrollendIndicator/ScrollendIndicator.js +68 -0
  224. package/dist-ts/components/ScrollendIndicator/ScrollendIndicator.js.map +1 -0
  225. package/dist-ts/components/ScrollendIndicator/ScrollendIndicator.module.scss +76 -0
  226. package/dist-ts/index.d.ts +1 -0
  227. package/dist-ts/index.js +1 -0
  228. package/dist-ts/index.js.map +1 -1
  229. package/package.json +1 -1
@@ -1,143 +1,136 @@
1
1
  "use strict";
2
- var __rest = (this && this.__rest) || function (s, e) {
3
- var t = {};
4
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
- t[p] = s[p];
6
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
- t[p[i]] = s[p[i]];
10
- }
11
- return t;
12
- };
13
- var __importDefault = (this && this.__importDefault) || function (mod) {
14
- return (mod && mod.__esModule) ? mod : { "default": mod };
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- const jsx_runtime_1 = require("react/jsx-runtime");
18
- const throttle_1 = __importDefault(require("lodash/throttle"));
19
- const react_1 = require("react");
20
- const FadeIn_1 = __importDefault(require("../../components/FadeIn"));
21
- const OneUIProvider_1 = require("../../context/OneUIProvider");
22
- const usePaginationControls_module_scss_1 = __importDefault(require("./usePaginationControls.module.scss"));
23
- const html_utils_1 = require("../../utils/html.utils");
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = usePaginationControls;
7
+ var _throttle = _interopRequireDefault(require("lodash/throttle"));
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _FadeIn = _interopRequireDefault(require("../../components/FadeIn"));
10
+ var _OneUIProvider = require("../../context/OneUIProvider");
11
+ var _usePaginationControlsModule = _interopRequireDefault(require("./usePaginationControls.module.scss"));
12
+ var _html = require("../../utils/html.utils");
13
+ const _excluded = ["snapToPage", "baseWidth", "snapToCutElement"],
14
+ _excluded2 = ["touches"],
15
+ _excluded3 = ["touches"];
16
+ 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); }
17
+ 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; }
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+ 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; }
20
+ 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; }
24
21
  /**
25
22
  * This hook handles the display of pagination controls for the user to move to another page
26
23
  */
27
- function usePaginationControls(containerRef, _a = {}) {
28
- var _b, _c;
29
- var { snapToPage, baseWidth, snapToCutElement: _snapToCutElement } = _a, props = __rest(_a, ["snapToPage", "baseWidth", "snapToCutElement"]);
30
- const [controlsState, setControls] = (0, react_1.useState)([false, false]);
31
- const [leftControl, rightControl] = controlsState;
32
- const LeftControl = (0, OneUIProvider_1.useOneUIConfig)("hook.ui.usePaginationControls.LeftControl");
33
- const RightControl = (0, OneUIProvider_1.useOneUIConfig)("hook.ui.usePaginationControls.RightControl");
34
- const className = (0, OneUIProvider_1.useOneUIConfig)("hook.ui.usePaginationControls.className", "");
35
- function move(direction, snapToCutElement = _snapToCutElement) {
36
- return () => {
37
- if (snapToCutElement !== null && snapToCutElement !== void 0 ? snapToCutElement : false) {
38
- const childBaseWidth = baseWidth || containerRef.current.firstElementChild.clientWidth;
39
- const howMuchDoesTheScrollAddsUpTo = containerRef.current.scrollLeft / childBaseWidth -
40
- Math.floor((containerRef.current.scrollLeft + (direction === "l" ? -1 : 0)) /
41
- childBaseWidth);
42
- const howMuchElementsFitOnAPage = containerRef.current.clientWidth / childBaseWidth;
43
- const howMuchElementsFullyFitOnAPage = Math.floor(howMuchElementsFitOnAPage) || 1;
44
- const directionScale = direction === "l"
45
- ? 1 - howMuchDoesTheScrollAddsUpTo
46
- : howMuchDoesTheScrollAddsUpTo;
47
- const howMuchOfTheRemainingElementIsShown = howMuchElementsFitOnAPage +
48
- directionScale -
49
- howMuchElementsFullyFitOnAPage;
50
- const howMuchToScroll = (containerRef.current.clientWidth -
51
- childBaseWidth * howMuchOfTheRemainingElementIsShown) *
52
- (direction === "l" ? -1 : 1);
53
- containerRef.current.scrollBy({
54
- left: howMuchToScroll,
55
- behavior: "smooth",
56
- });
57
- }
58
- else {
59
- const rest = Math.round(containerRef.current.scrollLeft) %
60
- containerRef.current.clientWidth;
61
- const snapOffset = snapToPage
62
- ? direction === "l"
63
- ? rest
64
- ? containerRef.current.clientWidth - rest
65
- : 0
66
- : rest
67
- : 0;
68
- containerRef.current.scrollBy({
69
- left: (containerRef.current.clientWidth - snapOffset) *
70
- (direction === "l" ? -1 : 1),
71
- behavior: "smooth",
72
- });
73
- }
74
- };
75
- }
76
- function checkControlsRequirement() {
77
- const updateFunc = (next) => (prev) => {
78
- if (prev[0] !== next[0] || prev[1] !== next[1])
79
- return next;
80
- return prev;
81
- };
82
- const el = containerRef.current;
83
- if (!el)
84
- return;
85
- const shouldHaveAnyControl = el.scrollWidth > el.clientWidth;
86
- if (!shouldHaveAnyControl)
87
- setControls(updateFunc([false, false]));
88
- else {
89
- const shouldHaveRightControl = el.scrollLeft < el.scrollWidth - el.clientWidth;
90
- const shouldHaveLeftControl = el.scrollLeft > 0;
91
- setControls(updateFunc([shouldHaveLeftControl, shouldHaveRightControl]));
92
- }
93
- }
94
- (0, react_1.useEffect)(() => {
95
- const el = containerRef.current;
96
- const throttledCheck = (0, throttle_1.default)(checkControlsRequirement, 1000 / 4);
97
- checkControlsRequirement();
98
- let startingX;
99
- let lastX;
100
- const onTouchStart = (_a) => {
101
- var { touches } = _a, e = __rest(_a, ["touches"]);
102
- if (!(0, html_utils_1.isSameTarget)(e))
103
- return;
104
- const { pageX } = touches.item(0);
105
- startingX = pageX;
106
- };
107
- const onTouchMove = (_a) => {
108
- var { touches } = _a, e = __rest(_a, ["touches"]);
109
- if (!(0, html_utils_1.isSameTarget)(e))
110
- return;
111
- const touch = touches.item(0);
112
- lastX = touch.pageX;
113
- };
114
- const onTouchEnd = (e) => {
115
- if (!lastX)
116
- return;
117
- const dir = lastX > startingX ? "l" : "r";
118
- move(dir, true)();
119
- startingX = undefined;
120
- };
121
- el.addEventListener("scroll", throttledCheck, {
122
- passive: true,
24
+ function usePaginationControls(containerRef) {
25
+ let _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
26
+ {
27
+ snapToPage,
28
+ baseWidth,
29
+ snapToCutElement: _snapToCutElement
30
+ } = _ref,
31
+ props = _objectWithoutProperties(_ref, _excluded);
32
+ const [controlsState, setControls] = (0, _react.useState)([false, false]);
33
+ const [leftControl, rightControl] = controlsState;
34
+ const LeftControl = (0, _OneUIProvider.useOneUIConfig)("hook.ui.usePaginationControls.LeftControl");
35
+ const RightControl = (0, _OneUIProvider.useOneUIConfig)("hook.ui.usePaginationControls.RightControl");
36
+ const className = (0, _OneUIProvider.useOneUIConfig)("hook.ui.usePaginationControls.className", "");
37
+ function move(direction) {
38
+ let snapToCutElement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _snapToCutElement;
39
+ return () => {
40
+ if (snapToCutElement !== null && snapToCutElement !== void 0 ? snapToCutElement : false) {
41
+ const childBaseWidth = baseWidth || containerRef.current.firstElementChild.clientWidth;
42
+ const howMuchDoesTheScrollAddsUpTo = containerRef.current.scrollLeft / childBaseWidth - Math.floor((containerRef.current.scrollLeft + (direction === "l" ? -1 : 0)) / childBaseWidth);
43
+ const howMuchElementsFitOnAPage = containerRef.current.clientWidth / childBaseWidth;
44
+ const howMuchElementsFullyFitOnAPage = Math.floor(howMuchElementsFitOnAPage) || 1;
45
+ const directionScale = direction === "l" ? 1 - howMuchDoesTheScrollAddsUpTo : howMuchDoesTheScrollAddsUpTo;
46
+ const howMuchOfTheRemainingElementIsShown = howMuchElementsFitOnAPage + directionScale - howMuchElementsFullyFitOnAPage;
47
+ const howMuchToScroll = (containerRef.current.clientWidth - childBaseWidth * howMuchOfTheRemainingElementIsShown) * (direction === "l" ? -1 : 1);
48
+ containerRef.current.scrollBy({
49
+ left: howMuchToScroll,
50
+ behavior: "smooth"
123
51
  });
124
- el.addEventListener("touchstart", onTouchStart);
125
- el.addEventListener("touchend", onTouchEnd);
126
- el.addEventListener("touchmove", onTouchMove);
127
- return () => {
128
- el.removeEventListener("scroll", throttledCheck);
129
- el.removeEventListener("touchstart", onTouchStart);
130
- el.removeEventListener("touchend", onTouchEnd);
131
- el.removeEventListener("touchend", onTouchEnd);
132
- };
133
- }, []);
134
- return {
135
- controls: [
136
- (0, jsx_runtime_1.jsx)(FadeIn_1.default, { active: leftControl, className: `${usePaginationControls_module_scss_1.default.left} ${usePaginationControls_module_scss_1.default.control} ${className}`, "data-testid": (_b = props["data-testid"]) === null || _b === void 0 ? void 0 : _b[0], onClick: move("l"), children: leftControl && (0, jsx_runtime_1.jsx)(LeftControl, {}) }, "l"),
137
- (0, jsx_runtime_1.jsx)(FadeIn_1.default, { active: rightControl, className: `${usePaginationControls_module_scss_1.default.right} ${usePaginationControls_module_scss_1.default.control} ${className}`, "data-testid": (_c = props["data-testid"]) === null || _c === void 0 ? void 0 : _c[1], onClick: move("r"), children: rightControl && (0, jsx_runtime_1.jsx)(RightControl, {}) }, "r"),
138
- ],
139
- checkControlsRequirement,
52
+ } else {
53
+ const rest = Math.round(containerRef.current.scrollLeft) % containerRef.current.clientWidth;
54
+ const snapOffset = snapToPage ? direction === "l" ? rest ? containerRef.current.clientWidth - rest : 0 : rest : 0;
55
+ containerRef.current.scrollBy({
56
+ left: (containerRef.current.clientWidth - snapOffset) * (direction === "l" ? -1 : 1),
57
+ behavior: "smooth"
58
+ });
59
+ }
60
+ };
61
+ }
62
+ function checkControlsRequirement() {
63
+ const updateFunc = next => prev => {
64
+ if (prev[0] !== next[0] || prev[1] !== next[1]) return next;
65
+ return prev;
140
66
  };
67
+ const el = containerRef.current;
68
+ if (!el) return;
69
+ const shouldHaveAnyControl = el.scrollWidth > el.clientWidth;
70
+ if (!shouldHaveAnyControl) setControls(updateFunc([false, false]));else {
71
+ const shouldHaveRightControl = el.scrollLeft < el.scrollWidth - el.clientWidth;
72
+ const shouldHaveLeftControl = el.scrollLeft > 0;
73
+ setControls(updateFunc([shouldHaveLeftControl, shouldHaveRightControl]));
74
+ }
75
+ }
76
+ (0, _react.useEffect)(() => {
77
+ const el = containerRef.current;
78
+ const throttledCheck = (0, _throttle.default)(checkControlsRequirement, 1000 / 4);
79
+ checkControlsRequirement();
80
+ let startingX;
81
+ let lastX;
82
+ const onTouchStart = _ref2 => {
83
+ let {
84
+ touches
85
+ } = _ref2,
86
+ e = _objectWithoutProperties(_ref2, _excluded2);
87
+ if (!(0, _html.isSameTarget)(e)) return;
88
+ const {
89
+ pageX
90
+ } = touches.item(0);
91
+ startingX = pageX;
92
+ };
93
+ const onTouchMove = _ref3 => {
94
+ let {
95
+ touches
96
+ } = _ref3,
97
+ e = _objectWithoutProperties(_ref3, _excluded3);
98
+ if (!(0, _html.isSameTarget)(e)) return;
99
+ const touch = touches.item(0);
100
+ lastX = touch.pageX;
101
+ };
102
+ const onTouchEnd = e => {
103
+ if (!lastX) return;
104
+ const dir = lastX > startingX ? "l" : "r";
105
+ move(dir, true)();
106
+ startingX = undefined;
107
+ };
108
+ el.addEventListener("scroll", throttledCheck, {
109
+ passive: true
110
+ });
111
+ el.addEventListener("touchstart", onTouchStart);
112
+ el.addEventListener("touchend", onTouchEnd);
113
+ el.addEventListener("touchmove", onTouchMove);
114
+ return () => {
115
+ el.removeEventListener("scroll", throttledCheck);
116
+ el.removeEventListener("touchstart", onTouchStart);
117
+ el.removeEventListener("touchend", onTouchEnd);
118
+ el.removeEventListener("touchend", onTouchEnd);
119
+ };
120
+ }, []);
121
+ return {
122
+ controls: [/*#__PURE__*/_react.default.createElement(_FadeIn.default, {
123
+ key: "l",
124
+ active: leftControl,
125
+ className: "".concat(_usePaginationControlsModule.default.left, " ").concat(_usePaginationControlsModule.default.control, " ").concat(className),
126
+ onClick: move("l")
127
+ }, leftControl && /*#__PURE__*/_react.default.createElement(LeftControl, null)), /*#__PURE__*/_react.default.createElement(_FadeIn.default, {
128
+ key: "r",
129
+ active: rightControl,
130
+ className: "".concat(_usePaginationControlsModule.default.right, " ").concat(_usePaginationControlsModule.default.control, " ").concat(className),
131
+ onClick: move("r")
132
+ }, rightControl && /*#__PURE__*/_react.default.createElement(RightControl, null))],
133
+ checkControlsRequirement
134
+ };
141
135
  }
142
- exports.default = usePaginationControls;
143
- //# sourceMappingURL=usePaginationControls.js.map
136
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdGhyb3R0bGUiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX0ZhZGVJbiIsIl9PbmVVSVByb3ZpZGVyIiwiX3VzZVBhZ2luYXRpb25Db250cm9sc01vZHVsZSIsIl9odG1sIiwiX2V4Y2x1ZGVkIiwiX2V4Y2x1ZGVkMiIsIl9leGNsdWRlZDMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwic291cmNlIiwiZXhjbHVkZWQiLCJ0YXJnZXQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsImkiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzb3VyY2VTeW1ib2xLZXlzIiwibGVuZ3RoIiwiaW5kZXhPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwic291cmNlS2V5cyIsImtleXMiLCJ1c2VQYWdpbmF0aW9uQ29udHJvbHMiLCJjb250YWluZXJSZWYiLCJfcmVmIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwic25hcFRvUGFnZSIsImJhc2VXaWR0aCIsInNuYXBUb0N1dEVsZW1lbnQiLCJfc25hcFRvQ3V0RWxlbWVudCIsInByb3BzIiwiY29udHJvbHNTdGF0ZSIsInNldENvbnRyb2xzIiwidXNlU3RhdGUiLCJsZWZ0Q29udHJvbCIsInJpZ2h0Q29udHJvbCIsIkxlZnRDb250cm9sIiwidXNlT25lVUlDb25maWciLCJSaWdodENvbnRyb2wiLCJjbGFzc05hbWUiLCJtb3ZlIiwiZGlyZWN0aW9uIiwiY2hpbGRCYXNlV2lkdGgiLCJjdXJyZW50IiwiZmlyc3RFbGVtZW50Q2hpbGQiLCJjbGllbnRXaWR0aCIsImhvd011Y2hEb2VzVGhlU2Nyb2xsQWRkc1VwVG8iLCJzY3JvbGxMZWZ0IiwiTWF0aCIsImZsb29yIiwiaG93TXVjaEVsZW1lbnRzRml0T25BUGFnZSIsImhvd011Y2hFbGVtZW50c0Z1bGx5Rml0T25BUGFnZSIsImRpcmVjdGlvblNjYWxlIiwiaG93TXVjaE9mVGhlUmVtYWluaW5nRWxlbWVudElzU2hvd24iLCJob3dNdWNoVG9TY3JvbGwiLCJzY3JvbGxCeSIsImxlZnQiLCJiZWhhdmlvciIsInJlc3QiLCJyb3VuZCIsInNuYXBPZmZzZXQiLCJjaGVja0NvbnRyb2xzUmVxdWlyZW1lbnQiLCJ1cGRhdGVGdW5jIiwibmV4dCIsInByZXYiLCJlbCIsInNob3VsZEhhdmVBbnlDb250cm9sIiwic2Nyb2xsV2lkdGgiLCJzaG91bGRIYXZlUmlnaHRDb250cm9sIiwic2hvdWxkSGF2ZUxlZnRDb250cm9sIiwidXNlRWZmZWN0IiwidGhyb3R0bGVkQ2hlY2siLCJ0aHJvdHRsZSIsInN0YXJ0aW5nWCIsImxhc3RYIiwib25Ub3VjaFN0YXJ0IiwiX3JlZjIiLCJ0b3VjaGVzIiwiZSIsImlzU2FtZVRhcmdldCIsInBhZ2VYIiwiaXRlbSIsIm9uVG91Y2hNb3ZlIiwiX3JlZjMiLCJ0b3VjaCIsIm9uVG91Y2hFbmQiLCJkaXIiLCJhZGRFdmVudExpc3RlbmVyIiwicGFzc2l2ZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJjb250cm9scyIsImNyZWF0ZUVsZW1lbnQiLCJhY3RpdmUiLCJjb25jYXQiLCJTdHlsZXMiLCJjb250cm9sIiwib25DbGljayIsInJpZ2h0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VpL3VzZVBhZ2luYXRpb25Db250cm9scy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRocm90dGxlIGZyb20gXCJsb2Rhc2gvdGhyb3R0bGVcIjtcbmltcG9ydCBSZWFjdCwgeyBSZWZPYmplY3QsIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBGYWRlIGZyb20gXCIuLi8uLi9jb21wb25lbnRzL0ZhZGVJblwiO1xuaW1wb3J0IHsgdXNlT25lVUlDb25maWcgfSBmcm9tIFwiLi4vLi4vY29udGV4dC9PbmVVSVByb3ZpZGVyXCI7XG5pbXBvcnQgU3R5bGVzIGZyb20gXCIuL3VzZVBhZ2luYXRpb25Db250cm9scy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgaXNTYW1lVGFyZ2V0IH0gZnJvbSBcIi4uLy4uL3V0aWxzL2h0bWwudXRpbHNcIjtcblxuLyoqXG4gKiBUaGlzIGhvb2sgaGFuZGxlcyB0aGUgZGlzcGxheSBvZiBwYWdpbmF0aW9uIGNvbnRyb2xzIGZvciB0aGUgdXNlciB0byBtb3ZlIHRvIGFub3RoZXIgcGFnZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VQYWdpbmF0aW9uQ29udHJvbHMoXG4gIGNvbnRhaW5lclJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PixcbiAge1xuICAgIHNuYXBUb1BhZ2UsXG4gICAgYmFzZVdpZHRoLFxuICAgIHNuYXBUb0N1dEVsZW1lbnQ6IF9zbmFwVG9DdXRFbGVtZW50LFxuICAgIC4uLnByb3BzXG4gIH06IHtcbiAgICBzbmFwVG9QYWdlPzogYm9vbGVhbjtcbiAgICBiYXNlV2lkdGg/OiBudW1iZXI7XG4gICAgLyoqIFRoaXMgd2lsbCBzY3JvbGwgb25seSB1bnRpbCB0aGUgcGFydGlhbGx5IHZpc2libGUgZWxlbWVudCBpcyBhdCB0aGUgYm9yZGVyLCBpbnN0ZWFkIG9mIHNjcm9sbGluZyBhbGwgdGhlIGNvbnRhaW5lciAqL1xuICAgIHNuYXBUb0N1dEVsZW1lbnQ/OiBib29sZWFuO1xuICAgIFwiZGF0YS10ZXN0aWRcIj86IFtsZWZ0OiBzdHJpbmcsIHJpZ2h0OiBzdHJpbmddO1xuICB9ID0ge31cbikge1xuICBjb25zdCBbY29udHJvbHNTdGF0ZSwgc2V0Q29udHJvbHNdID0gdXNlU3RhdGU8XG4gICAgW2xlZnRDb250cm9sOiBib29sZWFuLCByaWdodENvbnRyb2w6IGJvb2xlYW5dXG4gID4oW2ZhbHNlLCBmYWxzZV0pO1xuICBjb25zdCBbbGVmdENvbnRyb2wsIHJpZ2h0Q29udHJvbF0gPSBjb250cm9sc1N0YXRlO1xuICBjb25zdCBMZWZ0Q29udHJvbCA9IHVzZU9uZVVJQ29uZmlnKFxuICAgIFwiaG9vay51aS51c2VQYWdpbmF0aW9uQ29udHJvbHMuTGVmdENvbnRyb2xcIlxuICApO1xuICBjb25zdCBSaWdodENvbnRyb2wgPSB1c2VPbmVVSUNvbmZpZyhcbiAgICBcImhvb2sudWkudXNlUGFnaW5hdGlvbkNvbnRyb2xzLlJpZ2h0Q29udHJvbFwiXG4gICk7XG4gIGNvbnN0IGNsYXNzTmFtZSA9IHVzZU9uZVVJQ29uZmlnKFxuICAgIFwiaG9vay51aS51c2VQYWdpbmF0aW9uQ29udHJvbHMuY2xhc3NOYW1lXCIsXG4gICAgXCJcIlxuICApO1xuICBmdW5jdGlvbiBtb3ZlKGRpcmVjdGlvbjogXCJsXCIgfCBcInJcIiwgc25hcFRvQ3V0RWxlbWVudCA9IF9zbmFwVG9DdXRFbGVtZW50KSB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChzbmFwVG9DdXRFbGVtZW50ID8/IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkQmFzZVdpZHRoID1cbiAgICAgICAgICBiYXNlV2lkdGghIHx8IGNvbnRhaW5lclJlZi5jdXJyZW50IS5maXJzdEVsZW1lbnRDaGlsZCEuY2xpZW50V2lkdGg7XG4gICAgICAgIGNvbnN0IGhvd011Y2hEb2VzVGhlU2Nyb2xsQWRkc1VwVG8gPVxuICAgICAgICAgIGNvbnRhaW5lclJlZi5jdXJyZW50IS5zY3JvbGxMZWZ0IC8gY2hpbGRCYXNlV2lkdGggLVxuICAgICAgICAgIE1hdGguZmxvb3IoXG4gICAgICAgICAgICAoY29udGFpbmVyUmVmLmN1cnJlbnQhLnNjcm9sbExlZnQgKyAoZGlyZWN0aW9uID09PSBcImxcIiA/IC0xIDogMCkpIC9cbiAgICAgICAgICAgICAgY2hpbGRCYXNlV2lkdGhcbiAgICAgICAgICApO1xuICAgICAgICBjb25zdCBob3dNdWNoRWxlbWVudHNGaXRPbkFQYWdlID1cbiAgICAgICAgICBjb250YWluZXJSZWYuY3VycmVudCEuY2xpZW50V2lkdGggLyBjaGlsZEJhc2VXaWR0aDtcblxuICAgICAgICBjb25zdCBob3dNdWNoRWxlbWVudHNGdWxseUZpdE9uQVBhZ2UgPVxuICAgICAgICAgIE1hdGguZmxvb3IoaG93TXVjaEVsZW1lbnRzRml0T25BUGFnZSkgfHwgMTtcblxuICAgICAgICBjb25zdCBkaXJlY3Rpb25TY2FsZSA9XG4gICAgICAgICAgZGlyZWN0aW9uID09PSBcImxcIlxuICAgICAgICAgICAgPyAxIC0gaG93TXVjaERvZXNUaGVTY3JvbGxBZGRzVXBUb1xuICAgICAgICAgICAgOiBob3dNdWNoRG9lc1RoZVNjcm9sbEFkZHNVcFRvO1xuXG4gICAgICAgIGNvbnN0IGhvd011Y2hPZlRoZVJlbWFpbmluZ0VsZW1lbnRJc1Nob3duID1cbiAgICAgICAgICBob3dNdWNoRWxlbWVudHNGaXRPbkFQYWdlICtcbiAgICAgICAgICBkaXJlY3Rpb25TY2FsZSAtXG4gICAgICAgICAgaG93TXVjaEVsZW1lbnRzRnVsbHlGaXRPbkFQYWdlO1xuXG4gICAgICAgIGNvbnN0IGhvd011Y2hUb1Njcm9sbCA9XG4gICAgICAgICAgKGNvbnRhaW5lclJlZi5jdXJyZW50IS5jbGllbnRXaWR0aCAtXG4gICAgICAgICAgICBjaGlsZEJhc2VXaWR0aCAqIGhvd011Y2hPZlRoZVJlbWFpbmluZ0VsZW1lbnRJc1Nob3duKSAqXG4gICAgICAgICAgKGRpcmVjdGlvbiA9PT0gXCJsXCIgPyAtMSA6IDEpO1xuXG4gICAgICAgIGNvbnRhaW5lclJlZi5jdXJyZW50IS5zY3JvbGxCeSh7XG4gICAgICAgICAgbGVmdDogaG93TXVjaFRvU2Nyb2xsLFxuICAgICAgICAgIGJlaGF2aW9yOiBcInNtb290aFwiLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJlc3QgPVxuICAgICAgICAgIE1hdGgucm91bmQoY29udGFpbmVyUmVmLmN1cnJlbnQhLnNjcm9sbExlZnQpICVcbiAgICAgICAgICBjb250YWluZXJSZWYuY3VycmVudCEuY2xpZW50V2lkdGg7XG4gICAgICAgIGNvbnN0IHNuYXBPZmZzZXQgPSBzbmFwVG9QYWdlXG4gICAgICAgICAgPyBkaXJlY3Rpb24gPT09IFwibFwiXG4gICAgICAgICAgICA/IHJlc3RcbiAgICAgICAgICAgICAgPyBjb250YWluZXJSZWYuY3VycmVudCEuY2xpZW50V2lkdGggLSByZXN0XG4gICAgICAgICAgICAgIDogMFxuICAgICAgICAgICAgOiByZXN0XG4gICAgICAgICAgOiAwO1xuICAgICAgICBjb250YWluZXJSZWYuY3VycmVudCEuc2Nyb2xsQnkoe1xuICAgICAgICAgIGxlZnQ6XG4gICAgICAgICAgICAoY29udGFpbmVyUmVmLmN1cnJlbnQhLmNsaWVudFdpZHRoIC0gc25hcE9mZnNldCkgKlxuICAgICAgICAgICAgKGRpcmVjdGlvbiA9PT0gXCJsXCIgPyAtMSA6IDEpLFxuICAgICAgICAgIGJlaGF2aW9yOiBcInNtb290aFwiLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gY2hlY2tDb250cm9sc1JlcXVpcmVtZW50KCkge1xuICAgIGNvbnN0IHVwZGF0ZUZ1bmMgPVxuICAgICAgKG5leHQ6IHR5cGVvZiBjb250cm9sc1N0YXRlKSA9PiAocHJldjogdHlwZW9mIGNvbnRyb2xzU3RhdGUpID0+IHtcbiAgICAgICAgaWYgKHByZXZbMF0gIT09IG5leHRbMF0gfHwgcHJldlsxXSAhPT0gbmV4dFsxXSkgcmV0dXJuIG5leHQ7XG4gICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgfTtcbiAgICBjb25zdCBlbCA9IGNvbnRhaW5lclJlZi5jdXJyZW50O1xuICAgIGlmICghZWwpIHJldHVybjtcbiAgICBjb25zdCBzaG91bGRIYXZlQW55Q29udHJvbCA9IGVsLnNjcm9sbFdpZHRoID4gZWwuY2xpZW50V2lkdGg7XG4gICAgaWYgKCFzaG91bGRIYXZlQW55Q29udHJvbCkgc2V0Q29udHJvbHModXBkYXRlRnVuYyhbZmFsc2UsIGZhbHNlXSkpO1xuICAgIGVsc2Uge1xuICAgICAgY29uc3Qgc2hvdWxkSGF2ZVJpZ2h0Q29udHJvbCA9XG4gICAgICAgIGVsLnNjcm9sbExlZnQgPCBlbC5zY3JvbGxXaWR0aCAtIGVsLmNsaWVudFdpZHRoO1xuICAgICAgY29uc3Qgc2hvdWxkSGF2ZUxlZnRDb250cm9sID0gZWwuc2Nyb2xsTGVmdCA+IDA7XG5cbiAgICAgIHNldENvbnRyb2xzKHVwZGF0ZUZ1bmMoW3Nob3VsZEhhdmVMZWZ0Q29udHJvbCwgc2hvdWxkSGF2ZVJpZ2h0Q29udHJvbF0pKTtcbiAgICB9XG4gIH1cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBlbCA9IGNvbnRhaW5lclJlZi5jdXJyZW50ITtcbiAgICBjb25zdCB0aHJvdHRsZWRDaGVjayA9IHRocm90dGxlKGNoZWNrQ29udHJvbHNSZXF1aXJlbWVudCwgMTAwMCAvIDQpO1xuICAgIGNoZWNrQ29udHJvbHNSZXF1aXJlbWVudCgpO1xuICAgIGxldCBzdGFydGluZ1g6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBsZXQgbGFzdFg6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IG9uVG91Y2hTdGFydCA9ICh7IHRvdWNoZXMsIC4uLmUgfTogVG91Y2hFdmVudCkgPT4ge1xuICAgICAgaWYgKCFpc1NhbWVUYXJnZXQoZSkpIHJldHVybjtcbiAgICAgIGNvbnN0IHsgcGFnZVggfSA9IHRvdWNoZXMuaXRlbSgwKSE7XG4gICAgICBzdGFydGluZ1ggPSBwYWdlWDtcbiAgICB9O1xuICAgIGNvbnN0IG9uVG91Y2hNb3ZlID0gKHsgdG91Y2hlcywgLi4uZSB9OiBUb3VjaEV2ZW50KSA9PiB7XG4gICAgICBpZiAoIWlzU2FtZVRhcmdldChlKSkgcmV0dXJuO1xuICAgICAgY29uc3QgdG91Y2ggPSB0b3VjaGVzLml0ZW0oMCk7XG5cbiAgICAgIGxhc3RYID0gdG91Y2ghLnBhZ2VYO1xuICAgIH07XG4gICAgY29uc3Qgb25Ub3VjaEVuZCA9IChlOiBFdmVudCkgPT4ge1xuICAgICAgaWYgKCFsYXN0WCkgcmV0dXJuO1xuICAgICAgY29uc3QgZGlyID0gbGFzdFggPiBzdGFydGluZ1ghID8gXCJsXCIgOiBcInJcIjtcbiAgICAgIG1vdmUoZGlyLCB0cnVlKSgpO1xuICAgICAgc3RhcnRpbmdYID0gdW5kZWZpbmVkO1xuICAgIH07XG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCB0aHJvdHRsZWRDaGVjaywge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICB9KTtcbiAgICBlbC5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLCBvblRvdWNoU3RhcnQpO1xuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaGVuZFwiLCBvblRvdWNoRW5kKTtcbiAgICBlbC5hZGRFdmVudExpc3RlbmVyKFwidG91Y2htb3ZlXCIsIG9uVG91Y2hNb3ZlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCB0aHJvdHRsZWRDaGVjayk7XG4gICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLCBvblRvdWNoU3RhcnQpO1xuICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNoZW5kXCIsIG9uVG91Y2hFbmQpO1xuICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNoZW5kXCIsIG9uVG91Y2hFbmQpO1xuICAgIH07XG4gIH0sIFtdKTtcblxuICByZXR1cm4ge1xuICAgIGNvbnRyb2xzOiBbXG4gICAgICA8RmFkZVxuICAgICAgICBrZXk9e1wibFwifVxuICAgICAgICBhY3RpdmU9e2xlZnRDb250cm9sfVxuICAgICAgICBjbGFzc05hbWU9e2Ake1N0eWxlcy5sZWZ0fSAke1N0eWxlcy5jb250cm9sfSAke2NsYXNzTmFtZX1gfVxuICAgICAgICBkYXRhLXRlc3RpZD17cHJvcHNbXCJkYXRhLXRlc3RpZFwiXT8uWzBdfVxuICAgICAgICBvbkNsaWNrPXttb3ZlKFwibFwiKX1cbiAgICAgID5cbiAgICAgICAge2xlZnRDb250cm9sICYmIDxMZWZ0Q29udHJvbCAvPn1cbiAgICAgIDwvRmFkZT4sXG4gICAgICA8RmFkZVxuICAgICAgICBrZXk9e1wiclwifVxuICAgICAgICBhY3RpdmU9e3JpZ2h0Q29udHJvbH1cbiAgICAgICAgY2xhc3NOYW1lPXtgJHtTdHlsZXMucmlnaHR9ICR7U3R5bGVzLmNvbnRyb2x9ICR7Y2xhc3NOYW1lfWB9XG4gICAgICAgIGRhdGEtdGVzdGlkPXtwcm9wc1tcImRhdGEtdGVzdGlkXCJdPy5bMV19XG4gICAgICAgIG9uQ2xpY2s9e21vdmUoXCJyXCIpfVxuICAgICAgPlxuICAgICAgICB7cmlnaHRDb250cm9sICYmIDxSaWdodENvbnRyb2wgLz59XG4gICAgICA8L0ZhZGU+LFxuICAgIF0sXG4gICAgY2hlY2tDb250cm9sc1JlcXVpcmVtZW50LFxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxTQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFDLHVCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxPQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxjQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyw0QkFBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU0sS0FBQSxHQUFBTixPQUFBO0FBQXNELE1BQUFPLFNBQUE7RUFBQUMsVUFBQTtFQUFBQyxVQUFBO0FBQUEsU0FBQUMs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
@@ -1,25 +1,26 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const react_1 = require("react");
7
- const useSnapToViewport_module_scss_1 = __importDefault(require("./useSnapToViewport.module.scss"));
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = useSnapToViewport;
7
+ var _react = require("react");
8
+ var _useSnapToViewportModule = _interopRequireDefault(require("./useSnapToViewport.module.scss"));
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
10
  /**
9
11
  * This takes a container and applies padding and margin so the content overflow container and goes until it hits the viewport border
10
12
  */
11
13
  function useSnapToViewport(defaultPadding) {
12
- const elRef = (0, react_1.useRef)(null);
13
- (0, react_1.useLayoutEffect)(() => {
14
- const diff = window.visualViewport.width - elRef.current.clientWidth;
15
- const margin = diff / 2;
16
- elRef.current.style.setProperty("--overflow-padding", `${margin}px`);
17
- elRef.current.style.setProperty("--overflow-margin", `${-margin}px`);
18
- elRef.current.style.setProperty("--default-padding", `${defaultPadding}px`);
19
- elRef.current.style.setProperty("--default-margin", `${-defaultPadding}px`);
20
- elRef.current.classList.add(useSnapToViewport_module_scss_1.default.applySpacings);
21
- }, []);
22
- return elRef;
14
+ const elRef = (0, _react.useRef)(null);
15
+ (0, _react.useLayoutEffect)(() => {
16
+ const diff = window.visualViewport.width - elRef.current.clientWidth;
17
+ const margin = diff / 2;
18
+ elRef.current.style.setProperty("--overflow-padding", "".concat(margin, "px"));
19
+ elRef.current.style.setProperty("--overflow-margin", "".concat(-margin, "px"));
20
+ elRef.current.style.setProperty("--default-padding", "".concat(defaultPadding, "px"));
21
+ elRef.current.style.setProperty("--default-margin", "".concat(-defaultPadding, "px"));
22
+ elRef.current.classList.add(_useSnapToViewportModule.default.applySpacings);
23
+ }, []);
24
+ return elRef;
23
25
  }
24
- exports.default = useSnapToViewport;
25
- //# sourceMappingURL=useSnapToViewport.js.map
26
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX3VzZVNuYXBUb1ZpZXdwb3J0TW9kdWxlIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidXNlU25hcFRvVmlld3BvcnQiLCJkZWZhdWx0UGFkZGluZyIsImVsUmVmIiwidXNlUmVmIiwidXNlTGF5b3V0RWZmZWN0IiwiZGlmZiIsIndpbmRvdyIsInZpc3VhbFZpZXdwb3J0Iiwid2lkdGgiLCJjdXJyZW50IiwiY2xpZW50V2lkdGgiLCJtYXJnaW4iLCJzdHlsZSIsInNldFByb3BlcnR5IiwiY29uY2F0IiwiY2xhc3NMaXN0IiwiYWRkIiwiU3R5bGVzIiwiYXBwbHlTcGFjaW5ncyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy91aS91c2VTbmFwVG9WaWV3cG9ydC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VMYXlvdXRFZmZlY3QsIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFN0eWxlcyBmcm9tIFwiLi91c2VTbmFwVG9WaWV3cG9ydC5tb2R1bGUuc2Nzc1wiO1xuLyoqXG4gKiBUaGlzIHRha2VzIGEgY29udGFpbmVyIGFuZCBhcHBsaWVzIHBhZGRpbmcgYW5kIG1hcmdpbiBzbyB0aGUgY29udGVudCBvdmVyZmxvdyBjb250YWluZXIgYW5kIGdvZXMgdW50aWwgaXQgaGl0cyB0aGUgdmlld3BvcnQgYm9yZGVyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZVNuYXBUb1ZpZXdwb3J0KGRlZmF1bHRQYWRkaW5nOiBudW1iZXIpIHtcbiAgY29uc3QgZWxSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZGlmZiA9IHdpbmRvdy52aXN1YWxWaWV3cG9ydCEud2lkdGggLSBlbFJlZi5jdXJyZW50IS5jbGllbnRXaWR0aDtcblxuICAgIGNvbnN0IG1hcmdpbiA9IGRpZmYgLyAyO1xuXG4gICAgZWxSZWYuY3VycmVudCEuc3R5bGUuc2V0UHJvcGVydHkoXCItLW92ZXJmbG93LXBhZGRpbmdcIiwgYCR7bWFyZ2lufXB4YCk7XG4gICAgZWxSZWYuY3VycmVudCEuc3R5bGUuc2V0UHJvcGVydHkoXCItLW92ZXJmbG93LW1hcmdpblwiLCBgJHstbWFyZ2lufXB4YCk7XG4gICAgZWxSZWYuY3VycmVudCEuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICBcIi0tZGVmYXVsdC1wYWRkaW5nXCIsXG4gICAgICBgJHtkZWZhdWx0UGFkZGluZ31weGBcbiAgICApO1xuICAgIGVsUmVmLmN1cnJlbnQhLnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgXCItLWRlZmF1bHQtbWFyZ2luXCIsXG4gICAgICBgJHstZGVmYXVsdFBhZGRpbmd9cHhgXG4gICAgKTtcbiAgICBlbFJlZi5jdXJyZW50IS5jbGFzc0xpc3QuYWRkKFN0eWxlcy5hcHBseVNwYWNpbmdzKTtcbiAgfSwgW10pO1xuXG4gIHJldHVybiBlbFJlZjtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsd0JBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUFxRCxTQUFBRSx1QkFBQUMsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUNyRDtBQUNBO0FBQ0E7QUFDZSxTQUFTRyxpQkFBaUJBLENBQUNDLGNBQXNCLEVBQUU7RUFDaEUsTUFBTUMsS0FBSyxHQUFHLElBQUFDLGFBQU0sRUFBaUIsSUFBSSxDQUFDO0VBRTFDLElBQUFDLHNCQUFlLEVBQUMsTUFBTTtJQUNwQixNQUFNQyxJQUFJLEdBQUdDLE1BQU0sQ0FBQ0MsY0FBYyxDQUFFQyxLQUFLLEdBQUdOLEtBQUssQ0FBQ08sT0FBTyxDQUFFQyxXQUFXO0lBRXRFLE1BQU1DLE1BQU0sR0FBR04sSUFBSSxHQUFHLENBQUM7SUFFdkJILEtBQUssQ0FBQ08sT0FBTyxDQUFFRyxLQUFLLENBQUNDLFdBQVcsQ0FBQyxvQkFBb0IsS0FBQUMsTUFBQSxDQUFLSCxNQUFNLE9BQUksQ0FBQztJQUNyRVQsS0FBSyxDQUFDTyxPQUFPLENBQUVHLEtBQUssQ0FBQ0MsV0FBVyxDQUFDLG1CQUFtQixLQUFBQyxNQUFBLENBQUssQ0FBQ0gsTUFBTSxPQUFJLENBQUM7SUFDckVULEtBQUssQ0FBQ08sT0FBTyxDQUFFRyxLQUFLLENBQUNDLFdBQVcsQ0FDOUIsbUJBQW1CLEtBQUFDLE1BQUEsQ0FDaEJiLGNBQWMsT0FDbkIsQ0FBQztJQUNEQyxLQUFLLENBQUNPLE9BQU8sQ0FBRUcsS0FBSyxDQUFDQyxXQUFXLENBQzlCLGtCQUFrQixLQUFBQyxNQUFBLENBQ2YsQ0FBQ2IsY0FBYyxPQUNwQixDQUFDO0lBQ0RDLEtBQUssQ0FBQ08sT0FBTyxDQUFFTSxTQUFTLENBQUNDLEdBQUcsQ0FBQ0MsZ0NBQU0sQ0FBQ0MsYUFBYSxDQUFDO0VBQ3BELENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixPQUFPaEIsS0FBSztBQUNkIn0=