@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.
Files changed (321) hide show
  1. package/.github/workflows/release-browser-bundle.yml +76 -0
  2. package/README.md +23 -0
  3. package/dist/assets/img/svg/checkbox.svg +3 -0
  4. package/dist/assets/styles/index.scss +2 -0
  5. package/dist/assets/styles/mixins.scss +15 -0
  6. package/dist/assets/styles/variables.scss +49 -0
  7. package/dist/components/AdaptiveButton/AdaptiveButton.js +32 -0
  8. package/dist/components/AdaptiveButton/AdaptiveButton.module.scss +7 -0
  9. package/dist/components/AdaptiveButton/index.js +27 -0
  10. package/dist/components/AdaptiveContainer/AdaptiveContainer.js +152 -0
  11. package/dist/components/AdaptiveContainer/AdaptiveContainer.module.scss +53 -0
  12. package/dist/components/AdaptiveContainer/index.js +27 -0
  13. package/dist/components/AdaptiveDialog/AdaptiveDialog.js +81 -0
  14. package/dist/components/AdaptiveDialog/AdaptiveDialog.module.scss +145 -0
  15. package/dist/components/AdaptiveDialog/index.js +27 -0
  16. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.js +77 -0
  17. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.module.scss +49 -0
  18. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.sample.js +13 -0
  19. package/dist/components/AdaptiveSidebar/index.js +27 -0
  20. package/dist/components/AnchoredTooltip/AnchoredTooltip.js +168 -0
  21. package/dist/components/AnchoredTooltip/AnchoredTooltip.module.scss +64 -0
  22. package/dist/components/AnchoredTooltip/index.js +27 -0
  23. package/dist/components/AnimatedEntrance/AnimatedEntrance.js +166 -0
  24. package/dist/components/AnimatedEntrance/AnimatedEntrance.module.scss +108 -0
  25. package/dist/components/AnimatedEntrance/index.js +27 -0
  26. package/dist/components/AsyncTriggerContainer/AsyncTriggerContainer.js +95 -0
  27. package/dist/components/AsyncTriggerContainer/AsyncTriggerContainer.module.scss +22 -0
  28. package/dist/components/AsyncTriggerContainer/index.js +27 -0
  29. package/dist/components/AsyncWrapper/AsyncWrapper.js +42 -0
  30. package/dist/components/AsyncWrapper/index.js +27 -0
  31. package/dist/components/Avatar/Avatar.js +40 -0
  32. package/dist/components/Avatar/Avatar.module.scss +22 -0
  33. package/dist/components/Avatar/index.js +27 -0
  34. package/dist/components/BucketFill/BucketFill.js +56 -0
  35. package/dist/components/BucketFill/BucketFill.module.scss +36 -0
  36. package/dist/components/BucketFill/index.js +27 -0
  37. package/dist/components/Button/Button.js +39 -0
  38. package/dist/components/Button/Button.module.scss +45 -0
  39. package/dist/components/Button/index.js +27 -0
  40. package/dist/components/Card/Card.js +22 -0
  41. package/dist/components/Card/Card.module.scss +12 -0
  42. package/dist/components/Card/index.js +27 -0
  43. package/dist/components/Chart/Chart.js +27 -0
  44. package/dist/components/Chart/Chart.logic.js +14 -0
  45. package/dist/components/Chart/Chart.module.scss +58 -0
  46. package/dist/components/Chart/Chart.types.js +6 -0
  47. package/dist/components/Chart/Chart.view.js +184 -0
  48. package/dist/components/Chart/index.js +27 -0
  49. package/dist/components/CheckBox/CheckBox.js +52 -0
  50. package/dist/components/CheckBox/CheckBox.module.scss +36 -0
  51. package/dist/components/CheckBox/index.js +27 -0
  52. package/dist/components/CodeInput/CodeInput.js +84 -0
  53. package/dist/components/CodeInput/CodeInput.module.scss +5 -0
  54. package/dist/components/CodeInput/index.js +27 -0
  55. package/dist/components/Collapsable/Collapsable.js +186 -0
  56. package/dist/components/Collapsable/Collapsable.module.scss +42 -0
  57. package/dist/components/Collapsable/index.js +27 -0
  58. package/dist/components/Countdown/Countdown.js +83 -0
  59. package/dist/components/Countdown/index.js +27 -0
  60. package/dist/components/CurrencyInput/CurrencyInput.hook.js +28 -0
  61. package/dist/components/CurrencyInput/CurrencyInput.js +54 -0
  62. package/dist/components/CurrencyInput/index.js +27 -0
  63. package/dist/components/Divider/Divider.js +21 -0
  64. package/dist/components/Divider/Divider.module.scss +7 -0
  65. package/dist/components/Divider/index.js +27 -0
  66. package/dist/components/EmailInput/EmailInput.js +48 -0
  67. package/dist/components/EmailInput/EmailInput.module.scss +0 -0
  68. package/dist/components/EmailInput/index.js +27 -0
  69. package/dist/components/FadeIn/FadeIn.js +64 -0
  70. package/dist/components/FadeIn/FadeIn.module.scss +9 -0
  71. package/dist/components/FadeIn/index.js +27 -0
  72. package/dist/components/FileInput/FileInput.js +53 -0
  73. package/dist/components/FileInput/FileInput.module.scss +6 -0
  74. package/dist/components/FileInput/View/BigFactory/BigFactory.js +54 -0
  75. package/dist/components/FileInput/View/BigFactory/BigFactory.module.scss +20 -0
  76. package/dist/components/FileInput/View/BigFactory/index.js +27 -0
  77. package/dist/components/FileInput/View/Compact/Compact.js +120 -0
  78. package/dist/components/FileInput/View/Compact/Compact.module.scss +68 -0
  79. package/dist/components/FileInput/View/Compact/index.js +27 -0
  80. package/dist/components/FileInput/View/View.types.js +6 -0
  81. package/dist/components/FileInput/index.js +27 -0
  82. package/dist/components/FlowController/FlowController.js +66 -0
  83. package/dist/components/FlowController/FlowController.module.scss +47 -0
  84. package/dist/components/FlowController/index.js +27 -0
  85. package/dist/components/Form/Form.hook.js +234 -0
  86. package/dist/components/Form/Form.js +115 -0
  87. package/dist/components/Form/Form.module.scss +0 -0
  88. package/dist/components/Form/Form.types.js +40 -0
  89. package/dist/components/Form/FormField/Extensions/DateField/DateField.js +75 -0
  90. package/dist/components/Form/FormField/Extensions/DateField/DateField.module.scss +0 -0
  91. package/dist/components/Form/FormField/Extensions/DateField/index.js +27 -0
  92. package/dist/components/Form/FormField/Extensions/PhoneField/PhoneField.js +91 -0
  93. package/dist/components/Form/FormField/Extensions/PhoneField/PhoneField.module.scss +0 -0
  94. package/dist/components/Form/FormField/Extensions/PhoneField/index.js +27 -0
  95. package/dist/components/Form/FormField/FormField.js +296 -0
  96. package/dist/components/Form/FormField/FormField.types.js +12 -0
  97. package/dist/components/Form/FormField/index.js +27 -0
  98. package/dist/components/Form/index.js +27 -0
  99. package/dist/components/Freeze/Freeze.js +18 -0
  100. package/dist/components/Freeze/index.js +27 -0
  101. package/dist/components/HSForms/HSForms.js +55 -0
  102. package/dist/components/HSForms/index.js +27 -0
  103. package/dist/components/HeaderCloseBtn/HeaderCloseBtn.js +25 -0
  104. package/dist/components/HeaderCloseBtn/HeaderCloseBtn.module.scss +44 -0
  105. package/dist/components/HeaderCloseBtn/index.js +27 -0
  106. package/dist/components/InfinityScroll/InfinityScroll.js +128 -0
  107. package/dist/components/InfinityScroll/InfinityScroll.module.scss +30 -0
  108. package/dist/components/InfinityScroll/index.js +27 -0
  109. package/dist/components/Input/Input.js +110 -0
  110. package/dist/components/Input/Input.module.scss +31 -0
  111. package/dist/components/Input/index.js +27 -0
  112. package/dist/components/InstantCounter/InstantCounter.js +55 -0
  113. package/dist/components/InstantCounter/index.js +27 -0
  114. package/dist/components/LavaLamp/LavaLamp.data.js +89 -0
  115. package/dist/components/LavaLamp/LavaLamp.js +125 -0
  116. package/dist/components/LavaLamp/LavaLamp.module.scss +26 -0
  117. package/dist/components/LavaLamp/index.js +27 -0
  118. package/dist/components/LavaLamp/v2/LavaLamp.js +154 -0
  119. package/dist/components/LavaLamp/v2/LavaLamp.module.scss +23 -0
  120. package/dist/components/LinkToId/LinkToId.js +45 -0
  121. package/dist/components/LinkToId/LinkToId.module.scss +4 -0
  122. package/dist/components/LinkToId/index.js +27 -0
  123. package/dist/components/Loader/Loader.js +27 -0
  124. package/dist/components/Loader/Loader.module.scss +40 -0
  125. package/dist/components/Loader/index.js +27 -0
  126. package/dist/components/LoaderDotsIndicator/LoaderDotsIndicator.js +36 -0
  127. package/dist/components/LoaderDotsIndicator/index.js +27 -0
  128. package/dist/components/LoopableVideo/LoopableVideo.js +41 -0
  129. package/dist/components/LoopableVideo/index.js +27 -0
  130. package/dist/components/MainGrid/MainGrid.js +55 -0
  131. package/dist/components/MainGrid/MainGrid.module.scss +28 -0
  132. package/dist/components/MainGrid/index.js +27 -0
  133. package/dist/components/MutableHamburgerButton/MutableHamburgerButton.js +32 -0
  134. package/dist/components/MutableHamburgerButton/MutableHamburgerButton.module.scss +220 -0
  135. package/dist/components/MutableHamburgerButton/index.js +27 -0
  136. package/dist/components/Notification/Notification.js +24 -0
  137. package/dist/components/Notification/Notification.module.scss +25 -0
  138. package/dist/components/Notification/index.js +27 -0
  139. package/dist/components/NumberInput/NumberInput.js +50 -0
  140. package/dist/components/NumberInput/index.js +27 -0
  141. package/dist/components/OrderableList/OrderableList.js +439 -0
  142. package/dist/components/OrderableList/OrderableList.module.scss +98 -0
  143. package/dist/components/OrderableList/index.js +27 -0
  144. package/dist/components/PaginationIndicator/PaginationIndicator.js +261 -0
  145. package/dist/components/PaginationIndicator/index.js +27 -0
  146. package/dist/components/Parallax/Parallax.js +169 -0
  147. package/dist/components/Parallax/Parallax.module.scss +28 -0
  148. package/dist/components/Parallax/index.js +27 -0
  149. package/dist/components/Parallax/math/helpers.js +134 -0
  150. package/dist/components/PasswordInput/PasswordInput.js +97 -0
  151. package/dist/components/PasswordInput/PasswordInput.module.scss +17 -0
  152. package/dist/components/PasswordInput/index.js +27 -0
  153. package/dist/components/PingPongText/PingPongText.js +76 -0
  154. package/dist/components/PingPongText/PingPongText.module.scss +4 -0
  155. package/dist/components/PingPongText/index.js +27 -0
  156. package/dist/components/PixelatedScan/PixelatedScan.js +139 -0
  157. package/dist/components/PixelatedScan/PixelatedScan.module.scss +86 -0
  158. package/dist/components/PixelatedScan/index.js +27 -0
  159. package/dist/components/Portal/Portal.js +62 -0
  160. package/dist/components/Portal/Portal.module.scss +3 -0
  161. package/dist/components/Portal/index.js +27 -0
  162. package/dist/components/ProgressBar/ProgressBar.js +113 -0
  163. package/dist/components/ProgressBar/ProgressBar.module.scss +44 -0
  164. package/dist/components/ProgressBar/index.js +27 -0
  165. package/dist/components/ProgressTexts/ProgressTexts.js +52 -0
  166. package/dist/components/ProgressTexts/ProgressTexts.module.scss +37 -0
  167. package/dist/components/ProgressTexts/index.js +27 -0
  168. package/dist/components/Radio/Radio.js +53 -0
  169. package/dist/components/Radio/Radio.module.scss +20 -0
  170. package/dist/components/Radio/index.js +27 -0
  171. package/dist/components/Radio/variants/Checkmark/Checkmark.js +20 -0
  172. package/dist/components/Radio/variants/Checkmark/Checkmark.module.scss +24 -0
  173. package/dist/components/Radio/variants/Checkmark/index.js +27 -0
  174. package/dist/components/Radio/variants/Generic/Generic.js +22 -0
  175. package/dist/components/Radio/variants/Generic/Generic.module.scss +38 -0
  176. package/dist/components/Radio/variants/Generic/index.js +27 -0
  177. package/dist/components/SectionContainer/SectionContainer.js +49 -0
  178. package/dist/components/SectionContainer/SectionContainer.module.scss +30 -0
  179. package/dist/components/SectionContainer/index.js +27 -0
  180. package/dist/components/Select/Select.js +138 -0
  181. package/dist/components/Select/Select.module.scss +60 -0
  182. package/dist/components/Select/index.js +27 -0
  183. package/dist/components/Skeleton/Skeleton.js +30 -0
  184. package/dist/components/Skeleton/Skeleton.module.scss +21 -0
  185. package/dist/components/Skeleton/index.js +27 -0
  186. package/dist/components/Slider/Slider.js +70 -0
  187. package/dist/components/Slider/Slider.module.scss +7 -0
  188. package/dist/components/Slider/index.js +27 -0
  189. package/dist/components/Spacing/Spacing.js +34 -0
  190. package/dist/components/Spacing/Spacing.module.scss +13 -0
  191. package/dist/components/Spacing/index.js +27 -0
  192. package/dist/components/StaticScroller/StaticScroller.js +72 -0
  193. package/dist/components/StaticScroller/StaticScroller.module.scss +14 -0
  194. package/dist/components/StaticScroller/index.js +27 -0
  195. package/dist/components/Switch/Switch.js +47 -0
  196. package/dist/components/Switch/Switch.module.scss +46 -0
  197. package/dist/components/Switch/index.js +27 -0
  198. package/dist/components/Table/Table.js +115 -0
  199. package/dist/components/Table/Table.module.scss +74 -0
  200. package/dist/components/Table/index.js +27 -0
  201. package/dist/components/Tabs/Tabs.js +67 -0
  202. package/dist/components/Tabs/Tabs.module.scss +40 -0
  203. package/dist/components/Tabs/index.js +27 -0
  204. package/dist/components/Text/Text.js +44 -0
  205. package/dist/components/Text/Text.module.scss +13 -0
  206. package/dist/components/Text/index.js +27 -0
  207. package/dist/components/Transition/MasksFactory/DiagonalReveal.js +49 -0
  208. package/dist/components/Transition/MasksFactory/DiagonalSquareToBalls.js +78 -0
  209. package/dist/components/Transition/MasksFactory/PhysicsSquares.js +96 -0
  210. package/dist/components/Transition/MasksFactory/SquareToBalls.js +67 -0
  211. package/dist/components/Transition/MasksFactory/utils.js +30 -0
  212. package/dist/components/Transition/Transition.js +323 -0
  213. package/dist/components/Transition/Transition.module.scss +211 -0
  214. package/dist/components/Transition/index.js +27 -0
  215. package/dist/components/UncontrolledTransition/UncontrolledTransition.ai.md +9 -0
  216. package/dist/components/UncontrolledTransition/UncontrolledTransition.js +110 -0
  217. package/dist/components/UncontrolledTransition/UncontrolledTransition.sample.js +32 -0
  218. package/dist/components/UncontrolledTransition/index.js +27 -0
  219. package/dist/components/WalletConnectionWrapper/WalletConnectionWrapper.js +115 -0
  220. package/dist/components/WalletConnectionWrapper/index.js +27 -0
  221. package/dist/components/utilitary/ScrollAndFocusLock/ScrollAndFocusLock.js +59 -0
  222. package/dist/components/utilitary/ScrollAndFocusLock/ScrollAndFocusLock.module.scss +5 -0
  223. package/dist/components/utilitary/ScrollAndFocusLock/index.js +27 -0
  224. package/dist/context/AsyncProcess.js +74 -0
  225. package/dist/context/ContextAsyncControl.js +92 -0
  226. package/dist/context/CustomBrowserRouter.js +50 -0
  227. package/dist/context/OneUIProvider.js +129 -0
  228. package/dist/hooks/logs/useDependencyChangeDetection.js +20 -0
  229. package/dist/hooks/logs/useIsMounting.js +13 -0
  230. package/dist/hooks/persistence/useLocalStorage.js +48 -0
  231. package/dist/hooks/shims/ObjectWatchShim.js +54 -0
  232. package/dist/hooks/ui/useAdaptiveImage.js +36 -0
  233. package/dist/hooks/ui/useAlternating.js +24 -0
  234. package/dist/hooks/ui/useBreakpoint.js +26 -0
  235. package/dist/hooks/ui/useCustomScrollbar.js +28 -0
  236. package/dist/hooks/ui/useCustomScrollbar.module.scss +20 -0
  237. package/dist/hooks/ui/useEffectIf.js +14 -0
  238. package/dist/hooks/ui/useMouseHover.js +32 -0
  239. package/dist/hooks/ui/usePaginationControls.js +136 -0
  240. package/dist/hooks/ui/usePaginationControls.module.scss +16 -0
  241. package/dist/hooks/ui/useSnapToViewport.js +26 -0
  242. package/dist/hooks/ui/useSnapToViewport.module.scss +6 -0
  243. package/dist/hooks/ui/useTilt.js +161 -0
  244. package/dist/hooks/ui/useZoomable.js +135 -0
  245. package/dist/hooks/ui/useZoomable.module.scss +34 -0
  246. package/dist/hooks/useAsyncControl.ai.md +25 -0
  247. package/dist/hooks/useAsyncControl.js +79 -0
  248. package/dist/hooks/useContainedRepositioning.js +83 -0
  249. package/dist/hooks/useCustomHistory.js +24 -0
  250. package/dist/hooks/useElementFit.js +54 -0
  251. package/dist/hooks/useFirestoreWatch.js +45 -0
  252. package/dist/hooks/useFreeze.js +17 -0
  253. package/dist/hooks/useHero.js +273 -0
  254. package/dist/hooks/useHero.module.scss +41 -0
  255. package/dist/hooks/useIntersection.js +39 -0
  256. package/dist/hooks/useMergeRefs.js +36 -0
  257. package/dist/hooks/useObserve.js +25 -0
  258. package/dist/hooks/usePagination.js +163 -0
  259. package/dist/hooks/usePooledOperation.js +52 -0
  260. package/dist/hooks/usePooling.js +52 -0
  261. package/dist/hooks/useRebound.js +32 -0
  262. package/dist/hooks/useShortIntl.ai.md +5 -0
  263. package/dist/hooks/useShortIntl.js +82 -0
  264. package/dist/hooks/utility/useAsyncMemo.js +45 -0
  265. package/dist/hooks/utility/useDepChange.js +17 -0
  266. package/dist/hooks/utility/useEvents.js +33 -0
  267. package/dist/hooks/utility/useImmediate.js +14 -0
  268. package/dist/hooks/utility/useManualInit.js +25 -0
  269. package/dist/hooks/utility/useModule.js +18 -0
  270. package/dist/hooks/utility/useQuery.js +20 -0
  271. package/dist/hooks/utility/useUniqueEffect.js +20 -0
  272. package/dist/index.js +2149 -0
  273. package/dist/index.preprocess.js +42 -0
  274. package/dist/models/DebugLogger.js +16 -0
  275. package/dist/models/GenericContract.js +51 -0
  276. package/dist/models/Orbs.js +67 -0
  277. package/dist/reac-app-env.d.js +2 -0
  278. package/dist/storybook/assets/video/txt-reversed.mp4 +0 -0
  279. package/dist/storybookUtils/index.js +44 -0
  280. package/dist/type-utils.js +6 -0
  281. package/dist/types.js +6 -0
  282. package/dist/utility.d.js +2 -0
  283. package/dist/utils/blockchain.js +46 -0
  284. package/dist/utils/e2e.js +33 -0
  285. package/dist/utils/flatten.js +19 -0
  286. package/dist/utils/formatters.js +63 -0
  287. package/dist/utils/html.utils.js +15 -0
  288. package/dist/utils/ownEvent.js +16 -0
  289. package/dist/utils/test.js +19 -0
  290. package/dist-browser/bundle.js +83650 -0
  291. package/dist-browser/bundle.js.LICENSE.txt +94 -0
  292. package/dist-browser/bundle.js.map +1 -0
  293. package/dist-ts/components/AdaptiveContainer/AdaptiveContainer.js +2 -1
  294. package/dist-ts/components/AdaptiveContainer/AdaptiveContainer.js.map +1 -1
  295. package/dist-ts/components/AnchoredTooltip/AnchoredTooltip.module.scss +13 -10
  296. package/dist-ts/components/CheckBox/CheckBox.d.ts +3 -1
  297. package/dist-ts/components/CheckBox/CheckBox.js +7 -4
  298. package/dist-ts/components/CheckBox/CheckBox.js.map +1 -1
  299. package/dist-ts/components/CheckBox/CheckBox.module.scss +5 -0
  300. package/dist-ts/components/Input/Input.js +1 -1
  301. package/dist-ts/components/Input/Input.js.map +1 -1
  302. package/dist-ts/context/OneUIProvider.d.ts +3 -1
  303. package/dist-ts/context/OneUIProvider.js.map +1 -1
  304. package/dist-ts/hooks/ui/useAdaptiveImage.d.ts +1 -1
  305. package/dist-ts/hooks/ui/useAdaptiveImage.js +1 -1
  306. package/dist-ts/hooks/ui/useAdaptiveImage.js.map +1 -1
  307. package/dist-ts/hooks/ui/useMouseHover.d.ts +2 -2
  308. package/dist-ts/hooks/ui/useMouseHover.js +6 -5
  309. package/dist-ts/hooks/ui/useMouseHover.js.map +1 -1
  310. package/dist-ts/hooks/useObserve.d.ts +1 -1
  311. package/dist-ts/hooks/useObserve.js +1 -1
  312. package/dist-ts/hooks/useObserve.js.map +1 -1
  313. package/dist-ts/index.d.ts +1 -0
  314. package/dist-ts/index.js +1 -0
  315. package/dist-ts/index.js.map +1 -1
  316. package/dist-ts/models/ImageScales.d.ts +7 -0
  317. package/dist-ts/models/ImageScales.js +9 -0
  318. package/dist-ts/models/ImageScales.js.map +1 -0
  319. package/example.html +76 -0
  320. package/package.json +11 -4
  321. package/webpack.bundle.config.js +87 -0
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.calculateDistanceRelativeToBounds = calculateDistanceRelativeToBounds;
7
+ exports.default = useTilt;
8
+ exports.givenTheRelativePositionHowMuchToRotate = givenTheRelativePositionHowMuchToRotate;
9
+ exports.useTiltUpdates = useTiltUpdates;
10
+ var _throttle = _interopRequireDefault(require("lodash/throttle"));
11
+ var _react = require("react");
12
+ var _helpers = require("../../components/Parallax/math/helpers");
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+ const MAX_TILT = {
15
+ x: 100,
16
+ y: 100
17
+ };
18
+ function useTiltUpdates(active, relativeToEl, onTilt, onInverseMatrix) {
19
+ let sensorScale = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
20
+ let tiltLimit = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : MAX_TILT;
21
+ let options = arguments.length > 6 ? arguments[6] : undefined;
22
+ (0, _react.useEffect)(() => {
23
+ if (active) {
24
+ var _options$gyroEnabled;
25
+ const updatePositions = (relativeToX, relativeToY) => {
26
+ var _options$round, _options$round2;
27
+ const el = relativeToEl.current;
28
+ const rect = el.getBoundingClientRect();
29
+ const {
30
+ width: [x0, xW],
31
+ height: [y0, yH]
32
+ } = {
33
+ width: [rect.left, el.clientWidth],
34
+ height: [rect.top, el.clientHeight]
35
+ };
36
+ const distanceOffRight = calculateDistanceRelativeToBounds(relativeToX, x0, xW, (_options$round = options === null || options === void 0 ? void 0 : options.round) !== null && _options$round !== void 0 ? _options$round : true);
37
+ const distanceOffBottom = calculateDistanceRelativeToBounds(relativeToY, y0, yH, (_options$round2 = options === null || options === void 0 ? void 0 : options.round) !== null && _options$round2 !== void 0 ? _options$round2 : true);
38
+ const howMuchToRotateY = givenTheRelativePositionHowMuchToRotate(distanceOffRight, tiltLimit.y);
39
+ const howMuchToRotateX = givenTheRelativePositionHowMuchToRotate(distanceOffBottom, tiltLimit.x);
40
+ onTilt({
41
+ y: howMuchToRotateX * 2,
42
+ x: howMuchToRotateY * 2
43
+ });
44
+ };
45
+ const handler = (0, _throttle.default)(_ref => {
46
+ let {
47
+ x,
48
+ y
49
+ } = _ref;
50
+ updatePositions(x, y);
51
+ }, 1000 / 30);
52
+ const touchHandler = (0, _throttle.default)(_ref2 => {
53
+ let {
54
+ touches
55
+ } = _ref2;
56
+ const {
57
+ pageX,
58
+ pageY
59
+ } = touches[0];
60
+ updatePositions(pageX, pageY);
61
+ }, 1000 / 30);
62
+ window.addEventListener("mousemove", handler);
63
+ window.addEventListener("touchmove", touchHandler);
64
+ let _inverseMatrix;
65
+ const _limits = {
66
+ beta: undefined,
67
+ gamma: undefined
68
+ };
69
+ const orientationListener = _ref3 => {
70
+ let {
71
+ beta,
72
+ gamma
73
+ } = _ref3;
74
+ if ((beta !== null && beta !== void 0 ? beta : 0) + (gamma !== null && gamma !== void 0 ? gamma : 0) === 0) return;
75
+ beta = beta * 0.5;
76
+ gamma = gamma * 0.5;
77
+ if (!_inverseMatrix) {
78
+ window.removeEventListener("mousemove", handler);
79
+ window.removeEventListener("touchmove", touchHandler);
80
+ const offset = 12.5;
81
+ _limits.beta = [beta - offset, beta + offset];
82
+ _limits.gamma = [gamma - offset, gamma + offset];
83
+ }
84
+ const _beta = Math.min(_limits.beta[1], Math.max(_limits.beta[0], beta));
85
+ const _gamma = Math.min(_limits.gamma[1], Math.max(_limits.gamma[0], gamma));
86
+ if (!_inverseMatrix && onInverseMatrix) {
87
+ onInverseMatrix(() => {
88
+ return _inverseMatrix = (0, _helpers.flattenMatrix)((0, _helpers.invertMatrix)((0, _helpers.generateMatrixFromOperations)({
89
+ type: "rotateY",
90
+ angle: _gamma
91
+ }, {
92
+ type: "rotateX",
93
+ angle: -_beta
94
+ })));
95
+ });
96
+ }
97
+ onTilt({
98
+ y: -_beta * sensorScale,
99
+ x: _gamma * sensorScale
100
+ });
101
+ };
102
+ function removeListeners() {
103
+ window.removeEventListener("mousemove", handler);
104
+ window.removeEventListener("touchmove", touchHandler);
105
+ }
106
+ if ((_options$gyroEnabled = options === null || options === void 0 ? void 0 : options.gyroEnabled) !== null && _options$gyroEnabled !== void 0 ? _options$gyroEnabled : true) {
107
+ window.addEventListener("deviceorientation", orientationListener);
108
+ return () => {
109
+ window.removeEventListener("deviceorientation", orientationListener);
110
+ removeListeners();
111
+ };
112
+ } else {
113
+ return () => removeListeners();
114
+ }
115
+ }
116
+ }, [active, onInverseMatrix, onTilt]);
117
+ }
118
+
119
+ /**
120
+ * This hook binds to two methods for calculating tilt
121
+ *
122
+ * When available: The device sensors
123
+ * When on desktop: The mouse position relative to a ref
124
+ */
125
+ function useTilt(active) {
126
+ let sensorScale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
127
+ let maxTilt = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : MAX_TILT;
128
+ let options = arguments.length > 3 ? arguments[3] : undefined;
129
+ const [tilt, setTilt] = (0, _react.useState)({
130
+ x: 0,
131
+ y: 0
132
+ });
133
+ const [tiltResetMatrix, setTiltResetMatrix] = (0, _react.useState)(() => (0, _helpers.flattenMatrix)((0, _helpers.IDENTITY_MATRIX)()));
134
+ const relativeTo = (0, _react.useRef)(null);
135
+ useTiltUpdates(active, relativeTo, setTilt, setTiltResetMatrix, sensorScale, maxTilt, options);
136
+ return {
137
+ /** The element to monitor mouse hover relative to */
138
+ relativeTo,
139
+ /**
140
+ * The matrix that represents the original tilt, so it can be used with the tilt prop to tilt relative to the user
141
+ * Use it on css like so transform: matrix3d(tiltResetMatrix.join(",")) rotateX(tilt.x) rotateY(tilt.y)
142
+ */
143
+ tiltResetMatrix,
144
+ /**
145
+ * How much tilt should be applied based
146
+ */
147
+ tilt
148
+ };
149
+ }
150
+ function calculateDistanceRelativeToBounds(mousePosition, elementInitialPosition, elementSizeDimension, shouldRound) {
151
+ const normalizeInitialPosition = mousePosition - elementInitialPosition;
152
+ const doNotAllowGoingBeyondLowerLimit = Math.max(normalizeInitialPosition, 0);
153
+ const doNotAllowHoingBeyondHigherLimit = Math.min(doNotAllowGoingBeyondLowerLimit, elementSizeDimension);
154
+ const threeRule = doNotAllowHoingBeyondHigherLimit * 100 / elementSizeDimension;
155
+ const result = (shouldRound ? Math.round(threeRule) : threeRule) / 100;
156
+ return result;
157
+ }
158
+ function givenTheRelativePositionHowMuchToRotate(relativePosition, maxRotation) {
159
+ return relativePosition * maxRotation - maxRotation / 2;
160
+ }
161
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdGhyb3R0bGUiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdCIsIl9oZWxwZXJzIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJNQVhfVElMVCIsIngiLCJ5IiwidXNlVGlsdFVwZGF0ZXMiLCJhY3RpdmUiLCJyZWxhdGl2ZVRvRWwiLCJvblRpbHQiLCJvbkludmVyc2VNYXRyaXgiLCJzZW5zb3JTY2FsZSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsInRpbHRMaW1pdCIsIm9wdGlvbnMiLCJ1c2VFZmZlY3QiLCJfb3B0aW9ucyRneXJvRW5hYmxlZCIsInVwZGF0ZVBvc2l0aW9ucyIsInJlbGF0aXZlVG9YIiwicmVsYXRpdmVUb1kiLCJfb3B0aW9ucyRyb3VuZCIsIl9vcHRpb25zJHJvdW5kMiIsImVsIiwiY3VycmVudCIsInJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ3aWR0aCIsIngwIiwieFciLCJoZWlnaHQiLCJ5MCIsInlIIiwibGVmdCIsImNsaWVudFdpZHRoIiwidG9wIiwiY2xpZW50SGVpZ2h0IiwiZGlzdGFuY2VPZmZSaWdodCIsImNhbGN1bGF0ZURpc3RhbmNlUmVsYXRpdmVUb0JvdW5kcyIsInJvdW5kIiwiZGlzdGFuY2VPZmZCb3R0b20iLCJob3dNdWNoVG9Sb3RhdGVZIiwiZ2l2ZW5UaGVSZWxhdGl2ZVBvc2l0aW9uSG93TXVjaFRvUm90YXRlIiwiaG93TXVjaFRvUm90YXRlWCIsImhhbmRsZXIiLCJ0aHJvdHRsZSIsIl9yZWYiLCJ0b3VjaEhhbmRsZXIiLCJfcmVmMiIsInRvdWNoZXMiLCJwYWdlWCIsInBhZ2VZIiwid2luZG93IiwiYWRkRXZlbnRMaXN0ZW5lciIsIl9pbnZlcnNlTWF0cml4IiwiX2xpbWl0cyIsImJldGEiLCJnYW1tYSIsIm9yaWVudGF0aW9uTGlzdGVuZXIiLCJfcmVmMyIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJvZmZzZXQiLCJfYmV0YSIsIk1hdGgiLCJtaW4iLCJtYXgiLCJfZ2FtbWEiLCJmbGF0dGVuTWF0cml4IiwiaW52ZXJ0TWF0cml4IiwiZ2VuZXJhdGVNYXRyaXhGcm9tT3BlcmF0aW9ucyIsInR5cGUiLCJhbmdsZSIsInJlbW92ZUxpc3RlbmVycyIsImd5cm9FbmFibGVkIiwidXNlVGlsdCIsIm1heFRpbHQiLCJ0aWx0Iiwic2V0VGlsdCIsInVzZVN0YXRlIiwidGlsdFJlc2V0TWF0cml4Iiwic2V0VGlsdFJlc2V0TWF0cml4IiwiSURFTlRJVFlfTUFUUklYIiwicmVsYXRpdmVUbyIsInVzZVJlZiIsIm1vdXNlUG9zaXRpb24iLCJlbGVtZW50SW5pdGlhbFBvc2l0aW9uIiwiZWxlbWVudFNpemVEaW1lbnNpb24iLCJzaG91bGRSb3VuZCIsIm5vcm1hbGl6ZUluaXRpYWxQb3NpdGlvbiIsImRvTm90QWxsb3dHb2luZ0JleW9uZExvd2VyTGltaXQiLCJkb05vdEFsbG93SG9pbmdCZXlvbmRIaWdoZXJMaW1pdCIsInRocmVlUnVsZSIsInJlc3VsdCIsInJlbGF0aXZlUG9zaXRpb24iLCJtYXhSb3RhdGlvbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy91aS91c2VUaWx0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdGhyb3R0bGUgZnJvbSBcImxvZGFzaC90aHJvdHRsZVwiO1xuaW1wb3J0IHsgUmVmT2JqZWN0LCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7XG4gIGZsYXR0ZW5NYXRyaXgsXG4gIGdlbmVyYXRlTWF0cml4RnJvbU9wZXJhdGlvbnMsXG4gIElERU5USVRZX01BVFJJWCxcbiAgaW52ZXJ0TWF0cml4LFxufSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9QYXJhbGxheC9tYXRoL2hlbHBlcnNcIjtcblxuY29uc3QgTUFYX1RJTFQgPSB7XG4gIHg6IDEwMCxcbiAgeTogMTAwLFxufTtcblxudHlwZSBPcHRpb25zID0ge1xuICByb3VuZD86IGJvb2xlYW47XG4gIGd5cm9FbmFibGVkPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VUaWx0VXBkYXRlcyhcbiAgYWN0aXZlOiBib29sZWFuLFxuICByZWxhdGl2ZVRvRWw6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+LFxuICBvblRpbHQ6IChwOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0pID0+IHZvaWQsXG4gIG9uSW52ZXJzZU1hdHJpeD86ICh1cGRhdGVGdW5jOiAobWF0cml4OiBudW1iZXJbXSkgPT4gbnVtYmVyW10pID0+IHZvaWQsXG4gIHNlbnNvclNjYWxlOiBudW1iZXIgPSAxLFxuICB0aWx0TGltaXQ6IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSA9IE1BWF9USUxULFxuICBvcHRpb25zPzogT3B0aW9uc1xuKSB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGFjdGl2ZSkge1xuICAgICAgY29uc3QgdXBkYXRlUG9zaXRpb25zID0gKHJlbGF0aXZlVG9YOiBudW1iZXIsIHJlbGF0aXZlVG9ZOiBudW1iZXIpID0+IHtcbiAgICAgICAgY29uc3QgZWwgPSByZWxhdGl2ZVRvRWwuY3VycmVudCE7XG4gICAgICAgIGNvbnN0IHJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIHdpZHRoOiBbeDAsIHhXXSxcbiAgICAgICAgICBoZWlnaHQ6IFt5MCwgeUhdLFxuICAgICAgICB9ID0ge1xuICAgICAgICAgIHdpZHRoOiBbcmVjdC5sZWZ0LCBlbC5jbGllbnRXaWR0aF0sXG4gICAgICAgICAgaGVpZ2h0OiBbcmVjdC50b3AsIGVsLmNsaWVudEhlaWdodF0sXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGRpc3RhbmNlT2ZmUmlnaHQgPSBjYWxjdWxhdGVEaXN0YW5jZVJlbGF0aXZlVG9Cb3VuZHMoXG4gICAgICAgICAgcmVsYXRpdmVUb1gsXG4gICAgICAgICAgeDAsXG4gICAgICAgICAgeFcsXG4gICAgICAgICAgb3B0aW9ucz8ucm91bmQgPz8gdHJ1ZVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBkaXN0YW5jZU9mZkJvdHRvbSA9IGNhbGN1bGF0ZURpc3RhbmNlUmVsYXRpdmVUb0JvdW5kcyhcbiAgICAgICAgICByZWxhdGl2ZVRvWSxcbiAgICAgICAgICB5MCxcbiAgICAgICAgICB5SCxcbiAgICAgICAgICBvcHRpb25zPy5yb3VuZCA/PyB0cnVlXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGhvd011Y2hUb1JvdGF0ZVkgPSBnaXZlblRoZVJlbGF0aXZlUG9zaXRpb25Ib3dNdWNoVG9Sb3RhdGUoXG4gICAgICAgICAgZGlzdGFuY2VPZmZSaWdodCxcbiAgICAgICAgICB0aWx0TGltaXQueVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBob3dNdWNoVG9Sb3RhdGVYID0gZ2l2ZW5UaGVSZWxhdGl2ZVBvc2l0aW9uSG93TXVjaFRvUm90YXRlKFxuICAgICAgICAgIGRpc3RhbmNlT2ZmQm90dG9tLFxuICAgICAgICAgIHRpbHRMaW1pdC54XG4gICAgICAgICk7XG5cbiAgICAgICAgb25UaWx0KHtcbiAgICAgICAgICB5OiBob3dNdWNoVG9Sb3RhdGVYICogMixcbiAgICAgICAgICB4OiBob3dNdWNoVG9Sb3RhdGVZICogMixcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgY29uc3QgaGFuZGxlciA9IHRocm90dGxlKCh7IHgsIHkgfTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICB1cGRhdGVQb3NpdGlvbnMoeCwgeSk7XG4gICAgICB9LCAxMDAwIC8gMzApO1xuICAgICAgY29uc3QgdG91Y2hIYW5kbGVyID0gdGhyb3R0bGUoKHsgdG91Y2hlcyB9OiBUb3VjaEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgcGFnZVgsIHBhZ2VZIH0gPSB0b3VjaGVzWzBdO1xuICAgICAgICB1cGRhdGVQb3NpdGlvbnMocGFnZVgsIHBhZ2VZKTtcbiAgICAgIH0sIDEwMDAgLyAzMCk7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCBoYW5kbGVyKTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwidG91Y2htb3ZlXCIsIHRvdWNoSGFuZGxlcik7XG4gICAgICBsZXQgX2ludmVyc2VNYXRyaXg6IG51bWJlcltdIHwgdW5kZWZpbmVkO1xuICAgICAgY29uc3QgX2xpbWl0czoge1xuICAgICAgICBbayBpbiBcImJldGFcIiB8IFwiZ2FtbWFcIl0/OiBbbnVtYmVyLCBudW1iZXJdO1xuICAgICAgfSA9IHtcbiAgICAgICAgYmV0YTogdW5kZWZpbmVkLFxuICAgICAgICBnYW1tYTogdW5kZWZpbmVkLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IG9yaWVudGF0aW9uTGlzdGVuZXI6IChlOiBEZXZpY2VPcmllbnRhdGlvbkV2ZW50KSA9PiB2b2lkID0gKHtcbiAgICAgICAgYmV0YSxcbiAgICAgICAgZ2FtbWEsXG4gICAgICB9KSA9PiB7XG4gICAgICAgIGlmICgoYmV0YSA/PyAwKSArIChnYW1tYSA/PyAwKSA9PT0gMCkgcmV0dXJuO1xuICAgICAgICBiZXRhID0gYmV0YSEgKiAwLjU7XG4gICAgICAgIGdhbW1hID0gZ2FtbWEhICogMC41O1xuICAgICAgICBpZiAoIV9pbnZlcnNlTWF0cml4KSB7XG4gICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgaGFuZGxlcik7XG4gICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaG1vdmVcIiwgdG91Y2hIYW5kbGVyKTtcbiAgICAgICAgICBjb25zdCBvZmZzZXQgPSAxMi41O1xuICAgICAgICAgIF9saW1pdHMuYmV0YSA9IFtiZXRhISAtIG9mZnNldCwgYmV0YSEgKyBvZmZzZXRdO1xuICAgICAgICAgIF9saW1pdHMuZ2FtbWEgPSBbZ2FtbWEhIC0gb2Zmc2V0LCBnYW1tYSEgKyBvZmZzZXRdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IF9iZXRhID0gTWF0aC5taW4oXG4gICAgICAgICAgX2xpbWl0cy5iZXRhIVsxXSxcbiAgICAgICAgICBNYXRoLm1heChfbGltaXRzLmJldGEhWzBdLCBiZXRhISlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgX2dhbW1hID0gTWF0aC5taW4oXG4gICAgICAgICAgX2xpbWl0cy5nYW1tYSFbMV0sXG4gICAgICAgICAgTWF0aC5tYXgoX2xpbWl0cy5nYW1tYSFbMF0sIGdhbW1hISlcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCFfaW52ZXJzZU1hdHJpeCAmJiBvbkludmVyc2VNYXRyaXgpIHtcbiAgICAgICAgICBvbkludmVyc2VNYXRyaXgoKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIChfaW52ZXJzZU1hdHJpeCA9IGZsYXR0ZW5NYXRyaXgoXG4gICAgICAgICAgICAgIGludmVydE1hdHJpeChcbiAgICAgICAgICAgICAgICBnZW5lcmF0ZU1hdHJpeEZyb21PcGVyYXRpb25zKFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInJvdGF0ZVlcIixcbiAgICAgICAgICAgICAgICAgICAgYW5nbGU6IF9nYW1tYSEsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInJvdGF0ZVhcIixcbiAgICAgICAgICAgICAgICAgICAgYW5nbGU6IC1fYmV0YSEsXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBvblRpbHQoe1xuICAgICAgICAgIHk6IC1fYmV0YSAqIHNlbnNvclNjYWxlLFxuICAgICAgICAgIHg6IF9nYW1tYSAqIHNlbnNvclNjYWxlLFxuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgICBmdW5jdGlvbiByZW1vdmVMaXN0ZW5lcnMoKSB7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIGhhbmRsZXIpO1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLCB0b3VjaEhhbmRsZXIpO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnM/Lmd5cm9FbmFibGVkID8/IHRydWUpIHtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJkZXZpY2VvcmllbnRhdGlvblwiLCBvcmllbnRhdGlvbkxpc3RlbmVyKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImRldmljZW9yaWVudGF0aW9uXCIsIG9yaWVudGF0aW9uTGlzdGVuZXIpO1xuICAgICAgICAgIHJlbW92ZUxpc3RlbmVycygpO1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICgpID0+IHJlbW92ZUxpc3RlbmVycygpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW2FjdGl2ZSwgb25JbnZlcnNlTWF0cml4LCBvblRpbHRdKTtcbn1cblxuLyoqXG4gKiBUaGlzIGhvb2sgYmluZHMgdG8gdHdvIG1ldGhvZHMgZm9yIGNhbGN1bGF0aW5nIHRpbHRcbiAqXG4gKiBXaGVuIGF2YWlsYWJsZTogVGhlIGRldmljZSBzZW5zb3JzXG4gKiBXaGVuIG9uIGRlc2t0b3A6IFRoZSBtb3VzZSBwb3NpdGlvbiByZWxhdGl2ZSB0byBhIHJlZlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VUaWx0KFxuICBhY3RpdmU6IGJvb2xlYW4sXG4gIC8qKlxuICAgKiBBIHNjYWxlIHRvIGluY3JlYXNlIHRoZSB2YWx1ZXMgZnJvbSB0aGUgc2Vuc29yc1xuICAgKlxuICAgKiBAaGFjayBZb3UgY2FuIHNldCB0aGlzIHZhbHVlIHRvIDAgYXMgYSB3YXkgdG8gZGlzYWJsZSB0aGUgdGlsdCBjYWxjIG9uIG1vYmlsZVxuICAgKi9cbiAgc2Vuc29yU2NhbGU6IG51bWJlciA9IDEsXG4gIG1heFRpbHQ6IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSA9IE1BWF9USUxULFxuICBvcHRpb25zPzogT3B0aW9uc1xuKSB7XG4gIGNvbnN0IFt0aWx0LCBzZXRUaWx0XSA9IHVzZVN0YXRlPHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfT4oe1xuICAgIHg6IDAsXG4gICAgeTogMCxcbiAgfSk7XG4gIGNvbnN0IFt0aWx0UmVzZXRNYXRyaXgsIHNldFRpbHRSZXNldE1hdHJpeF0gPSB1c2VTdGF0ZTxudW1iZXJbXT4oKCkgPT5cbiAgICBmbGF0dGVuTWF0cml4KElERU5USVRZX01BVFJJWCgpKVxuICApO1xuICBjb25zdCByZWxhdGl2ZVRvID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcblxuICB1c2VUaWx0VXBkYXRlcyhcbiAgICBhY3RpdmUsXG4gICAgcmVsYXRpdmVUbyxcbiAgICBzZXRUaWx0LFxuICAgIHNldFRpbHRSZXNldE1hdHJpeCxcbiAgICBzZW5zb3JTY2FsZSxcbiAgICBtYXhUaWx0LFxuICAgIG9wdGlvbnNcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIC8qKiBUaGUgZWxlbWVudCB0byBtb25pdG9yIG1vdXNlIGhvdmVyIHJlbGF0aXZlIHRvICovXG4gICAgcmVsYXRpdmVUbyxcbiAgICAvKipcbiAgICAgKiBUaGUgbWF0cml4IHRoYXQgcmVwcmVzZW50cyB0aGUgb3JpZ2luYWwgdGlsdCwgc28gaXQgY2FuIGJlIHVzZWQgd2l0aCB0aGUgdGlsdCBwcm9wIHRvIHRpbHQgcmVsYXRpdmUgdG8gdGhlIHVzZXJcbiAgICAgKiBVc2UgaXQgb24gY3NzIGxpa2Ugc28gdHJhbnNmb3JtOiBtYXRyaXgzZCh0aWx0UmVzZXRNYXRyaXguam9pbihcIixcIikpIHJvdGF0ZVgodGlsdC54KSByb3RhdGVZKHRpbHQueSlcbiAgICAgKi9cbiAgICB0aWx0UmVzZXRNYXRyaXgsXG5cbiAgICAvKipcbiAgICAgKiBIb3cgbXVjaCB0aWx0IHNob3VsZCBiZSBhcHBsaWVkIGJhc2VkXG4gICAgICovXG4gICAgdGlsdCxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZURpc3RhbmNlUmVsYXRpdmVUb0JvdW5kcyhcbiAgbW91c2VQb3NpdGlvbjogbnVtYmVyLFxuICBlbGVtZW50SW5pdGlhbFBvc2l0aW9uOiBudW1iZXIsXG4gIGVsZW1lbnRTaXplRGltZW5zaW9uOiBudW1iZXIsXG4gIHNob3VsZFJvdW5kOiBib29sZWFuXG4pIHtcbiAgY29uc3Qgbm9ybWFsaXplSW5pdGlhbFBvc2l0aW9uID0gbW91c2VQb3NpdGlvbiAtIGVsZW1lbnRJbml0aWFsUG9zaXRpb247XG4gIGNvbnN0IGRvTm90QWxsb3dHb2luZ0JleW9uZExvd2VyTGltaXQgPSBNYXRoLm1heChub3JtYWxpemVJbml0aWFsUG9zaXRpb24sIDApO1xuICBjb25zdCBkb05vdEFsbG93SG9pbmdCZXlvbmRIaWdoZXJMaW1pdCA9IE1hdGgubWluKFxuICAgIGRvTm90QWxsb3dHb2luZ0JleW9uZExvd2VyTGltaXQsXG4gICAgZWxlbWVudFNpemVEaW1lbnNpb25cbiAgKTtcbiAgY29uc3QgdGhyZWVSdWxlID1cbiAgICAoZG9Ob3RBbGxvd0hvaW5nQmV5b25kSGlnaGVyTGltaXQgKiAxMDApIC8gZWxlbWVudFNpemVEaW1lbnNpb247XG4gIGNvbnN0IHJlc3VsdCA9IChzaG91bGRSb3VuZCA/IE1hdGgucm91bmQodGhyZWVSdWxlKSA6IHRocmVlUnVsZSkgLyAxMDA7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnaXZlblRoZVJlbGF0aXZlUG9zaXRpb25Ib3dNdWNoVG9Sb3RhdGUoXG4gIHJlbGF0aXZlUG9zaXRpb246IG51bWJlcixcbiAgbWF4Um90YXRpb246IG51bWJlclxuKSB7XG4gIHJldHVybiByZWxhdGl2ZVBvc2l0aW9uICogbWF4Um90YXRpb24gLSBtYXhSb3RhdGlvbiAvIDI7XG59XG4iXSwi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
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = useZoomable;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _client = require("react-dom/client");
9
+ var _reactDom = _interopRequireDefault(require("react-dom"));
10
+ var _useZoomableModule = _interopRequireDefault(require("./useZoomable.module.scss"));
11
+ var _useHero = _interopRequireDefault(require("../useHero"));
12
+ var _useMergeRefs = require("../useMergeRefs");
13
+ var _ownEvent = _interopRequireDefault(require("../../utils/ownEvent"));
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
+ /**
18
+ * Allows an element to be zoomable for fullscreen
19
+ */
20
+ function useZoomable(id) {
21
+ const zoomableID = (0, _react.useMemo)(() => "zoomable-".concat(id), []);
22
+ const getBackdrop = () => {
23
+ return document.querySelector("[data-zoomable=\"".concat(zoomableID, "\"]"));
24
+ };
25
+ const {
26
+ heroRef,
27
+ trigger
28
+ } = (0, _useHero.default)(zoomableID, {
29
+ "data-preffix": "zoomable",
30
+ repeatable: true
31
+ }, {
32
+ onHeroStart: function (clone) {
33
+ const bd = getBackdrop();
34
+ const removeCb = _ref => {
35
+ let {
36
+ currentTarget,
37
+ target
38
+ } = _ref;
39
+ if (target === currentTarget) {
40
+ if ("unmountComponentAtNode" in _reactDom.default) _reactDom.default.unmountComponentAtNode(bd);else console.error("This component doesn't work with the new versions of react yet...");
41
+ bd.remove();
42
+ }
43
+ };
44
+ bd.style.opacity = "0";
45
+ const middlewayClick = () => {
46
+ bd.removeEventListener("transitionend", removeCb);
47
+ clone.removeEventListener("click", middlewayClick);
48
+ _zoom();
49
+ };
50
+ clone.addEventListener("click", middlewayClick);
51
+ bd.addEventListener("transitionend", removeCb);
52
+ bd.addEventListener("transitionstart", () => {
53
+ bd.addEventListener("transitioncancel", (0, _ownEvent.default)(() => bd.removeEventListener("transitionend", removeCb)));
54
+ });
55
+ }
56
+ });
57
+ const zoomableEl = (0, _react.useRef)(null);
58
+ function _unzoom() {
59
+ trigger();
60
+ }
61
+ function _zoom() {
62
+ const el = zoomableEl.current;
63
+ const elClone = el.cloneNode(true);
64
+ elClone.style.visibility = "hidden";
65
+ function HeroMount() {
66
+ const {
67
+ heroRef
68
+ } = (0, _useHero.default)(zoomableID, {
69
+ "data-preffix": "zoomable",
70
+ repeatable: true
71
+ }, {
72
+ onHeroStart: function (clone) {
73
+ getBackdrop().style.opacity = "1";
74
+ const unzoomCb = () => {
75
+ _unzoom();
76
+ clone.removeEventListener("click", unzoomCb);
77
+ };
78
+ clone.addEventListener("click", unzoomCb);
79
+ },
80
+ onHeroEnd: () => {
81
+ heroRef.current.classList.remove(_useZoomableModule.default.zoomableIndicator);
82
+ }
83
+ });
84
+ return /*#__PURE__*/_react.default.createElement("div", {
85
+ ref: ref => {
86
+ if (ref) {
87
+ ref.appendChild(elClone);
88
+ heroRef.current = elClone;
89
+ const verticalProportion = el.clientWidth / el.clientHeight;
90
+ const targetWidth = ref.clientHeight * verticalProportion;
91
+ if (targetWidth > ref.clientWidth) {
92
+ const horizontalProportion = el.clientHeight / el.clientWidth;
93
+ elClone.style.width = ref.clientWidth + "px";
94
+ elClone.style.height = ref.clientWidth * horizontalProportion + "px";
95
+ } else {
96
+ elClone.style.height = ref.clientHeight + "px";
97
+ elClone.style.width = targetWidth + "px";
98
+ }
99
+ }
100
+ }
101
+ });
102
+ }
103
+ const existingBackdrop = getBackdrop();
104
+ if (!existingBackdrop) {
105
+ const backdrop = document.createElement("div");
106
+ backdrop.classList.add(_useZoomableModule.default.backdrop);
107
+ backdrop.addEventListener("click", _unzoom);
108
+ backdrop.setAttribute("data-zoomable", zoomableID);
109
+ document.body.appendChild(backdrop);
110
+ (0, _client.createRoot)(backdrop).render( /*#__PURE__*/_react.default.createElement(HeroMount, null));
111
+ } else {
112
+ (0, _client.createRoot)(existingBackdrop).render( /*#__PURE__*/_react.default.createElement(HeroMount, null));
113
+ }
114
+ }
115
+ (0, _react.useEffect)(() => {
116
+ const el = zoomableEl.current;
117
+ el.classList.add(_useZoomableModule.default.zoomableIndicator);
118
+ el.addEventListener("click", _zoom);
119
+ return () => {
120
+ el.classList.remove(_useZoomableModule.default.zoomableIndicator);
121
+ const bd = getBackdrop();
122
+ if (bd) {
123
+ bd.style.opacity = "0";
124
+ bd.addEventListener("transitionend", () => {
125
+ bd.remove();
126
+ });
127
+ }
128
+ };
129
+ }, []);
130
+ const mergedRefs = (0, _useMergeRefs.useMergeRefsFunc)(heroRef, zoomableEl);
131
+ return {
132
+ zoomableEl: mergedRefs
133
+ };
134
+ }
135
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfY2xpZW50IiwiX3JlYWN0RG9tIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl91c2Vab29tYWJsZU1vZHVsZSIsIl91c2VIZXJvIiwiX3VzZU1lcmdlUmVmcyIsIl9vd25FdmVudCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJ1c2Vab29tYWJsZSIsImlkIiwiem9vbWFibGVJRCIsInVzZU1lbW8iLCJjb25jYXQiLCJnZXRCYWNrZHJvcCIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsImhlcm9SZWYiLCJ0cmlnZ2VyIiwidXNlSGVybyIsInJlcGVhdGFibGUiLCJvbkhlcm9TdGFydCIsImNsb25lIiwiYmQiLCJyZW1vdmVDYiIsIl9yZWYiLCJjdXJyZW50VGFyZ2V0IiwidGFyZ2V0IiwiUmVhY3RET00iLCJ1bm1vdW50Q29tcG9uZW50QXROb2RlIiwiY29uc29sZSIsImVycm9yIiwicmVtb3ZlIiwic3R5bGUiLCJvcGFjaXR5IiwibWlkZGxld2F5Q2xpY2siLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiX3pvb20iLCJhZGRFdmVudExpc3RlbmVyIiwib3duRXZlbnQiLCJ6b29tYWJsZUVsIiwidXNlUmVmIiwiX3Vuem9vbSIsImVsIiwiY3VycmVudCIsImVsQ2xvbmUiLCJjbG9uZU5vZGUiLCJ2aXNpYmlsaXR5IiwiSGVyb01vdW50IiwidW56b29tQ2IiLCJvbkhlcm9FbmQiLCJjbGFzc0xpc3QiLCJTdHlsZXMiLCJ6b29tYWJsZUluZGljYXRvciIsImNyZWF0ZUVsZW1lbnQiLCJyZWYiLCJhcHBlbmRDaGlsZCIsInZlcnRpY2FsUHJvcG9ydGlvbiIsImNsaWVudFdpZHRoIiwiY2xpZW50SGVpZ2h0IiwidGFyZ2V0V2lkdGgiLCJob3Jpem9udGFsUHJvcG9ydGlvbiIsIndpZHRoIiwiaGVpZ2h0IiwiZXhpc3RpbmdCYWNrZHJvcCIsImJhY2tkcm9wIiwiYWRkIiwic2V0QXR0cmlidXRlIiwiYm9keSIsImNyZWF0ZVJvb3QiLCJyZW5kZXIiLCJ1c2VFZmZlY3QiLCJtZXJnZWRSZWZzIiwidXNlTWVyZ2VSZWZzRnVuYyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy91aS91c2Vab29tYWJsZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBjcmVhdGVSb290IH0gZnJvbSBcInJlYWN0LWRvbS9jbGllbnRcIjtcbmltcG9ydCBSZWFjdERPTSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgU3R5bGVzIGZyb20gXCIuL3VzZVpvb21hYmxlLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdXNlSGVybyBmcm9tIFwiLi4vdXNlSGVyb1wiO1xuaW1wb3J0IHsgdXNlTWVyZ2VSZWZzRnVuYyB9IGZyb20gXCIuLi91c2VNZXJnZVJlZnNcIjtcbmltcG9ydCBvd25FdmVudCBmcm9tIFwiLi4vLi4vdXRpbHMvb3duRXZlbnRcIjtcbi8qKlxuICogQWxsb3dzIGFuIGVsZW1lbnQgdG8gYmUgem9vbWFibGUgZm9yIGZ1bGxzY3JlZW5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlWm9vbWFibGUoaWQ6IHN0cmluZykge1xuICBjb25zdCB6b29tYWJsZUlEID0gdXNlTWVtbygoKSA9PiBgem9vbWFibGUtJHtpZH1gLCBbXSk7XG4gIGNvbnN0IGdldEJhY2tkcm9wID0gKCkgPT4ge1xuICAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgYFtkYXRhLXpvb21hYmxlPVwiJHt6b29tYWJsZUlEfVwiXWBcbiAgICApISBhcyBIVE1MRGl2RWxlbWVudDtcbiAgfTtcbiAgY29uc3QgeyBoZXJvUmVmLCB0cmlnZ2VyIH0gPSB1c2VIZXJvKFxuICAgIHpvb21hYmxlSUQsXG4gICAge1xuICAgICAgXCJkYXRhLXByZWZmaXhcIjogXCJ6b29tYWJsZVwiLFxuICAgICAgcmVwZWF0YWJsZTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG9uSGVyb1N0YXJ0OiAoY2xvbmUsIC4uLmFyZ3MpID0+IHtcbiAgICAgICAgY29uc3QgYmQgPSBnZXRCYWNrZHJvcCgpO1xuICAgICAgICBjb25zdCByZW1vdmVDYiA9ICh7IGN1cnJlbnRUYXJnZXQsIHRhcmdldCB9OiBUcmFuc2l0aW9uRXZlbnQpID0+IHtcbiAgICAgICAgICBpZiAodGFyZ2V0ID09PSBjdXJyZW50VGFyZ2V0KSB7XG4gICAgICAgICAgICBpZiAoKFwidW5tb3VudENvbXBvbmVudEF0Tm9kZVwiIGluIFJlYWN0RE9NKSBhcyBhbnkpXG4gICAgICAgICAgICAgIChSZWFjdERPTSBhcyBhbnkpLnVubW91bnRDb21wb25lbnRBdE5vZGUoYmQpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiVGhpcyBjb21wb25lbnQgZG9lc24ndCB3b3JrIHdpdGggdGhlIG5ldyB2ZXJzaW9ucyBvZiByZWFjdCB5ZXQuLi5cIilcbiAgICAgICAgICAgIGJkLnJlbW92ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgYmQuc3R5bGUub3BhY2l0eSA9IFwiMFwiO1xuICAgICAgICBjb25zdCBtaWRkbGV3YXlDbGljayA9ICgpID0+IHtcbiAgICAgICAgICBiZC5yZW1vdmVFdmVudExpc3RlbmVyKFwidHJhbnNpdGlvbmVuZFwiLCByZW1vdmVDYik7XG4gICAgICAgICAgY2xvbmUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIG1pZGRsZXdheUNsaWNrKTtcbiAgICAgICAgICBfem9vbSgpO1xuICAgICAgICB9O1xuICAgICAgICBjbG9uZS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgbWlkZGxld2F5Q2xpY2spO1xuICAgICAgICBiZC5hZGRFdmVudExpc3RlbmVyKFwidHJhbnNpdGlvbmVuZFwiLCByZW1vdmVDYik7XG4gICAgICAgIGJkLmFkZEV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uc3RhcnRcIiwgKCkgPT4ge1xuICAgICAgICAgIGJkLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgICBcInRyYW5zaXRpb25jYW5jZWxcIixcbiAgICAgICAgICAgIG93bkV2ZW50KCgpID0+IGJkLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uZW5kXCIsIHJlbW92ZUNiKSlcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgfVxuICApO1xuICBjb25zdCB6b29tYWJsZUVsID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgZnVuY3Rpb24gX3Vuem9vbSgpIHtcbiAgICB0cmlnZ2VyKCk7XG4gIH1cblxuICBmdW5jdGlvbiBfem9vbSgpIHtcbiAgICBjb25zdCBlbCA9IHpvb21hYmxlRWwuY3VycmVudCE7XG4gICAgY29uc3QgZWxDbG9uZSA9IGVsLmNsb25lTm9kZSh0cnVlKSBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICBlbENsb25lLnN0eWxlLnZpc2liaWxpdHkgPSBcImhpZGRlblwiO1xuXG4gICAgZnVuY3Rpb24gSGVyb01vdW50KCkge1xuICAgICAgY29uc3QgeyBoZXJvUmVmIH0gPSB1c2VIZXJvKFxuICAgICAgICB6b29tYWJsZUlELFxuICAgICAgICB7XG4gICAgICAgICAgXCJkYXRhLXByZWZmaXhcIjogXCJ6b29tYWJsZVwiLFxuICAgICAgICAgIHJlcGVhdGFibGU6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBvbkhlcm9TdGFydDogKGNsb25lLCAuLi5hcmdzKSA9PiB7XG4gICAgICAgICAgICBnZXRCYWNrZHJvcCgpLnN0eWxlLm9wYWNpdHkgPSBcIjFcIjtcbiAgICAgICAgICAgIGNvbnN0IHVuem9vbUNiID0gKCkgPT4ge1xuICAgICAgICAgICAgICBfdW56b29tKCk7XG4gICAgICAgICAgICAgIGNsb25lLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCB1bnpvb21DYik7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY2xvbmUuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHVuem9vbUNiKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uSGVyb0VuZDogKCkgPT4ge1xuICAgICAgICAgICAgaGVyb1JlZi5jdXJyZW50IS5jbGFzc0xpc3QucmVtb3ZlKFN0eWxlcy56b29tYWJsZUluZGljYXRvcik7XG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIHJlZj17KHJlZikgPT4ge1xuICAgICAgICAgICAgaWYgKHJlZikge1xuICAgICAgICAgICAgICByZWYuYXBwZW5kQ2hpbGQoZWxDbG9uZSk7XG4gICAgICAgICAgICAgIChoZXJvUmVmIGFzIGFueSkuY3VycmVudCA9IGVsQ2xvbmU7XG4gICAgICAgICAgICAgIGNvbnN0IHZlcnRpY2FsUHJvcG9ydGlvbiA9IGVsLmNsaWVudFdpZHRoIC8gZWwuY2xpZW50SGVpZ2h0O1xuICAgICAgICAgICAgICBjb25zdCB0YXJnZXRXaWR0aCA9IHJlZi5jbGllbnRIZWlnaHQgKiB2ZXJ0aWNhbFByb3BvcnRpb247XG5cbiAgICAgICAgICAgICAgaWYgKHRhcmdldFdpZHRoID4gcmVmLmNsaWVudFdpZHRoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaG9yaXpvbnRhbFByb3BvcnRpb24gPSBlbC5jbGllbnRIZWlnaHQgLyBlbC5jbGllbnRXaWR0aDtcbiAgICAgICAgICAgICAgICBlbENsb25lLnN0eWxlLndpZHRoID0gcmVmLmNsaWVudFdpZHRoICsgXCJweFwiO1xuICAgICAgICAgICAgICAgIGVsQ2xvbmUuc3R5bGUuaGVpZ2h0ID1cbiAgICAgICAgICAgICAgICAgIHJlZi5jbGllbnRXaWR0aCAqIGhvcml6b250YWxQcm9wb3J0aW9uICsgXCJweFwiO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGVsQ2xvbmUuc3R5bGUuaGVpZ2h0ID0gcmVmLmNsaWVudEhlaWdodCArIFwicHhcIjtcbiAgICAgICAgICAgICAgICBlbENsb25lLnN0eWxlLndpZHRoID0gdGFyZ2V0V2lkdGggKyBcInB4XCI7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBleGlzdGluZ0JhY2tkcm9wID0gZ2V0QmFja2Ryb3AoKTtcbiAgICBpZiAoIWV4aXN0aW5nQmFja2Ryb3ApIHtcbiAgICAgIGNvbnN0IGJhY2tkcm9wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcblxuICAgICAgYmFja2Ryb3AuY2xhc3NMaXN0LmFkZChTdHlsZXMuYmFja2Ryb3ApO1xuICAgICAgYmFja2Ryb3AuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIF91bnpvb20pO1xuICAgICAgYmFja2Ryb3Auc2V0QXR0cmlidXRlKFwiZGF0YS16b29tYWJsZVwiLCB6b29tYWJsZUlEKTtcblxuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChiYWNrZHJvcCk7XG4gICAgICBjcmVhdGVSb290KGJhY2tkcm9wKS5yZW5kZXIoPEhlcm9Nb3VudCAvPik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNyZWF0ZVJvb3QoZXhpc3RpbmdCYWNrZHJvcCkucmVuZGVyKDxIZXJvTW91bnQgLz4pO1xuICAgIH1cbiAgfVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGVsID0gem9vbWFibGVFbC5jdXJyZW50ITtcbiAgICBlbC5jbGFzc0xpc3QuYWRkKFN0eWxlcy56b29tYWJsZUluZGljYXRvcik7XG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIF96b29tKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZWwuY2xhc3NMaXN0LnJlbW92ZShTdHlsZXMuem9vbWFibGVJbmRpY2F0b3IpO1xuICAgICAgY29uc3QgYmQgPSBnZXRCYWNrZHJvcCgpO1xuICAgICAgaWYgKGJkKSB7XG4gICAgICAgIGJkLnN0eWxlLm9wYWNpdHkgPSBcIjBcIjtcbiAgICAgICAgYmQuYWRkRXZlbnRMaXN0ZW5lcihcInRyYW5zaXRpb25lbmRcIiwgKCkgPT4ge1xuICAgICAgICAgIGJkLnJlbW92ZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuICB9LCBbXSk7XG5cbiAgY29uc3QgbWVyZ2VkUmVmcyA9IHVzZU1lcmdlUmVmc0Z1bmMoaGVyb1JlZiwgem9vbWFibGVFbCk7XG5cbiAgcmV0dXJuIHtcbiAgICB6b29tYWJsZUVsOiBtZXJnZWRSZWZzLFxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxTQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxrQkFBQSxHQUFBRCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUssUUFBQSxHQUFBRixzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQU0sYUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sU0FBQSxHQUFBSixzQkFBQSxDQUFBSCxPQUFBO0FBQTRDLFNBQUFHLHVCQUFBSyxHQUFBLFdB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
@@ -0,0 +1,34 @@
1
+ @use "../../assets/styles/variables.scss" as *;
2
+
3
+ .zoomableIndicator {
4
+ cursor: zoom-in;
5
+ }
6
+
7
+ $stubZIndex: 1000000;
8
+
9
+ .backdrop {
10
+ position: fixed;
11
+ width: 100vw;
12
+ height: 100vh;
13
+ top: 0;
14
+ left: 0;
15
+ z-index: $stubZIndex;
16
+ background: var(--zoomable--backdrop-bg, #0009);
17
+ transition: opacity $fast linear;
18
+ opacity: 0;
19
+ > * {
20
+ height: 100%;
21
+ width: 100%;
22
+ display: flex;
23
+ align-items: center;
24
+ justify-content: center;
25
+ > * {
26
+ cursor: zoom-out;
27
+ }
28
+ }
29
+ }
30
+
31
+ .backdrop + * {
32
+ z-index: $stubZIndex + 1;
33
+ max-width: initial;
34
+ }
@@ -0,0 +1,25 @@
1
+ # Protecting an async function
2
+ ```tsx
3
+ const control = useAsyncControl()
4
+
5
+ control.process(() => anAsyncFunction());
6
+ ```
7
+
8
+ # Using multiple async functions
9
+ ```tsx
10
+ const control = useAsyncControl({
11
+ asyncFunctionOne,
12
+ asyncFunctionTwo,
13
+ })
14
+
15
+ control.asyncFunctionOne();
16
+ control.asyncFunctionTwo();
17
+ ```
18
+
19
+ # Storing data
20
+ ```tsx
21
+ const [result, setResult] = useState()
22
+ const control = useAsyncControl({anAsyncFunctionThatReturnsData})
23
+
24
+ control.anAsyncFunctionThatReturnsData().then(setResult);
25
+ ```
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ exports.useAsyncControl = useAsyncControl;
8
+ exports.useRawAsynControl = useRawAsynControl;
9
+ var _react = require("react");
10
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
11
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
12
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
13
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
14
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
15
+ function useRawAsynControl(functionsToWrap, _ref, _ref2) {
16
+ let [error, setError] = _ref;
17
+ let [loading, setLoading] = _ref2;
18
+ const _process = (0, _react.useCallback)(async asyncFn => {
19
+ try {
20
+ setLoading(true);
21
+ setError(undefined);
22
+ if (asyncFn instanceof Promise) await asyncFn;else return await asyncFn();
23
+ } catch (e) {
24
+ if (process.env.NODE_ENV === "development") console.error(e);
25
+ setError(e);
26
+ throw e;
27
+ } finally {
28
+ setLoading(false);
29
+ }
30
+ }, []);
31
+ const {
32
+ functionsToMemoize,
33
+ other
34
+ } = Object.entries(functionsToWrap || {}).reduce((r, _ref3) => {
35
+ let [k, func] = _ref3;
36
+ return _objectSpread(_objectSpread({}, r), typeof func === "function" ? {
37
+ functionsToMemoize: _objectSpread(_objectSpread({}, r.functionsToMemoize), {}, {
38
+ [k]: func
39
+ })
40
+ } : {
41
+ other: _objectSpread(_objectSpread({}, r.other), {}, {
42
+ [k]: func
43
+ })
44
+ });
45
+ }, {
46
+ functionsToMemoize: {},
47
+ other: {}
48
+ });
49
+ return _objectSpread(_objectSpread({
50
+ process: _process,
51
+ loading,
52
+ error,
53
+ setError,
54
+ setLoading
55
+ }, other), Object.entries(functionsToMemoize).reduce((r, _ref4) => {
56
+ let [k, v] = _ref4;
57
+ return _objectSpread(_objectSpread({}, r), {}, {
58
+ [k]: (0, _react.useMemo)(() => function () {
59
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
60
+ args[_key] = arguments[_key];
61
+ }
62
+ return _process(() => v(...args));
63
+ }, [v])
64
+ });
65
+ }, {}));
66
+ }
67
+ function useAsyncControl(functionsToWrap) {
68
+ const error = (0, _react.useState)();
69
+ const loading = (0, _react.useState)(false);
70
+ return useRawAsynControl(functionsToWrap, error, loading);
71
+ }
72
+
73
+ /**
74
+ * This hook provides a way to handle async operations storing the loading state, or the error when it fails, it does not store information returned from the functions.
75
+ * @param functionsToWrap The functions to wrap in control.
76
+ * @returns
77
+ */
78
+ var _default = exports.default = useAsyncControl;
79
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwib3duS2V5cyIsIm9iamVjdCIsImVudW1lcmFibGVPbmx5Iiwia2V5cyIsIk9iamVjdCIsImdldE93blByb3BlcnR5U3ltYm9scyIsInN5bWJvbHMiLCJmaWx0ZXIiLCJzeW0iLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJmb3JFYWNoIiwia2V5IiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm9iaiIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImFyZyIsIl90b1ByaW1pdGl2ZSIsIlN0cmluZyIsImlucHV0IiwiaGludCIsInByaW0iLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsInVuZGVmaW5lZCIsInJlcyIsImNhbGwiLCJUeXBlRXJyb3IiLCJOdW1iZXIiLCJ1c2VSYXdBc3luQ29udHJvbCIsImZ1bmN0aW9uc1RvV3JhcCIsIl9yZWYiLCJfcmVmMiIsImVycm9yIiwic2V0RXJyb3IiLCJsb2FkaW5nIiwic2V0TG9hZGluZyIsIl9wcm9jZXNzIiwidXNlQ2FsbGJhY2siLCJhc3luY0ZuIiwiUHJvbWlzZSIsImUiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJjb25zb2xlIiwiZnVuY3Rpb25zVG9NZW1vaXplIiwib3RoZXIiLCJlbnRyaWVzIiwicmVkdWNlIiwiciIsIl9yZWYzIiwiayIsImZ1bmMiLCJfcmVmNCIsInYiLCJ1c2VNZW1vIiwiX2xlbiIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJ1c2VBc3luY0NvbnRyb2wiLCJ1c2VTdGF0ZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlQXN5bmNDb250cm9sLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNldFN0YXRlQWN0aW9uLCB1c2VDYWxsYmFjaywgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFByaW1pdGl2ZSB9IGZyb20gXCJ0eXBlLWZlc3RcIjtcblxudHlwZSBBcnI8WD4gPSBbWCwgUmVhY3QuRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248WD4+XTtcbmV4cG9ydCB0eXBlIEZ1bmN0aW9uTWFwID0ge1xuICBbZjogc3RyaW5nXTogKCguLi5hcmdzOiBhbnlbXSkgPT4gUHJvbWlzZTxhbnk+KSB8IE9iamVjdCB8IFByaW1pdGl2ZTtcbn07XG5leHBvcnQgdHlwZSBDb250cm9sPEUgZXh0ZW5kcyBhbnkgPSBhbnk+ID0ge1xuICBlcnJvcj86IEU7XG4gIGxvYWRpbmc6IGJvb2xlYW47XG59O1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVJhd0FzeW5Db250cm9sPEUgPSBhbnksIEYgZXh0ZW5kcyBGdW5jdGlvbk1hcCA9IHt9PihcbiAgZnVuY3Rpb25zVG9XcmFwOiBGIHwgdW5kZWZpbmVkLFxuICBbZXJyb3IsIHNldEVycm9yXTogQXJyPEUgfCB1bmRlZmluZWQ+LFxuICBbbG9hZGluZywgc2V0TG9hZGluZ106IEFycjxib29sZWFuPlxuKSB7XG4gIGNvbnN0IF9wcm9jZXNzID0gdXNlQ2FsbGJhY2soYXN5bmMgKGFzeW5jRm46ICgoKSA9PiBQcm9taXNlPGFueT4pIHwgUHJvbWlzZTxhbnk+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHNldExvYWRpbmcodHJ1ZSk7XG4gICAgICBzZXRFcnJvcih1bmRlZmluZWQpO1xuICAgICAgaWYgKGFzeW5jRm4gaW5zdGFuY2VvZiBQcm9taXNlKSBhd2FpdCBhc3luY0ZuO1xuICAgICAgZWxzZSByZXR1cm4gYXdhaXQgYXN5bmNGbigpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJkZXZlbG9wbWVudFwiKSBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgc2V0RXJyb3IoZSBhcyBFKTtcbiAgICAgIHRocm93IGU7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIGNvbnN0IHsgZnVuY3Rpb25zVG9NZW1vaXplLCBvdGhlciB9ID0gT2JqZWN0LmVudHJpZXMoXG4gICAgZnVuY3Rpb25zVG9XcmFwIHx8IHt9XG4gICkucmVkdWNlKFxuICAgIChyLCBbaywgZnVuY10pID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnIsXG4gICAgICAgIC4uLih0eXBlb2YgZnVuYyA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIGZ1bmN0aW9uc1RvTWVtb2l6ZToge1xuICAgICAgICAgICAgICAgIC4uLnIuZnVuY3Rpb25zVG9NZW1vaXplLFxuICAgICAgICAgICAgICAgIFtrXTogZnVuYyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgb3RoZXI6IHtcbiAgICAgICAgICAgICAgICAuLi5yLm90aGVyLFxuICAgICAgICAgICAgICAgIFtrXTogZnVuYyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgfTtcbiAgICB9LFxuICAgIHtcbiAgICAgIGZ1bmN0aW9uc1RvTWVtb2l6ZToge30sXG4gICAgICBvdGhlcjoge30sXG4gICAgfSBhcyB7XG4gICAgICBmdW5jdGlvbnNUb01lbW9pemU6IEY7XG4gICAgICBvdGhlcjogRjtcbiAgICB9XG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBwcm9jZXNzOiBfcHJvY2VzcyxcbiAgICBsb2FkaW5nLFxuICAgIGVycm9yLFxuICAgIHNldEVycm9yLFxuICAgIHNldExvYWRpbmcsXG4gICAgLi4ub3RoZXIsXG4gICAgLi4uT2JqZWN0LmVudHJpZXMoZnVuY3Rpb25zVG9NZW1vaXplKS5yZWR1Y2UoXG4gICAgICAociwgW2ssIHZdKSA9PiAoe1xuICAgICAgICAuLi5yLFxuICAgICAgICBba106IHVzZU1lbW8oXG4gICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgICguLi5hcmdzOiBhbnlbXSkgPT5cbiAgICAgICAgICAgICAgX3Byb2Nlc3MoKCkgPT4gKHYgYXMgYW55KSguLi5hcmdzKSksXG4gICAgICAgICAgW3ZdXG4gICAgICAgICksXG4gICAgICB9KSxcbiAgICAgIHt9IGFzIEZcbiAgICApLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlQXN5bmNDb250cm9sPFxuICBFID0gYW55LFxuICBGIGV4dGVuZHMge1xuICAgIFtmOiBzdHJpbmddOiAoKC4uLmFyZ3M6IGFueVtdKSA9PiBQcm9taXNlPGFueT4pIHwgT2JqZWN0IHwgUHJpbWl0aXZlO1xuICB9ID0ge31cbj4oZnVuY3Rpb25zVG9XcmFwPzogRikge1xuICBjb25zdCBlcnJvciA9IHVzZVN0YXRlPEUgfCBFcnJvcj4oKTtcbiAgY29uc3QgbG9hZGluZyA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcblxuICByZXR1cm4gdXNlUmF3QXN5bkNvbnRyb2woZnVuY3Rpb25zVG9XcmFwLCBlcnJvciwgbG9hZGluZyk7XG59XG5cbi8qKlxuICogVGhpcyBob29rIHByb3ZpZGVzIGEgd2F5IHRvIGhhbmRsZSBhc3luYyBvcGVyYXRpb25zIHN0b3JpbmcgdGhlIGxvYWRpbmcgc3RhdGUsIG9yIHRoZSBlcnJvciB3aGVuIGl0IGZhaWxzLCBpdCBkb2VzIG5vdCBzdG9yZSBpbmZvcm1hdGlvbiByZXR1cm5lZCBmcm9tIHRoZSBmdW5jdGlvbnMuXG4gKiBAcGFyYW0gZnVuY3Rpb25zVG9XcmFwIFRoZSBmdW5jdGlvbnMgdG8gd3JhcCBpbiBjb250cm9sLlxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgdXNlQXN5bmNDb250cm9sO1xu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
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = useContainedRepositioning;
7
+ var _debounce = _interopRequireDefault(require("lodash/debounce"));
8
+ var _react = require("react");
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ /**
11
+ * This hook takes an html and checks if its outside its parent
12
+ * If it is, it should move it so it can be totally visible inside the container
13
+ */
14
+ function useContainedRepositioning(focused, getParent) {
15
+ let {
16
+ offset = 16,
17
+ scale = 1,
18
+ offsetLimit = Number.POSITIVE_INFINITY
19
+ } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
20
+ const elementToCheck = (0, _react.useRef)(null);
21
+ (0, _react.useEffect)(() => {
22
+ const el = elementToCheck.current;
23
+ if (!el) return;
24
+ const curr = el;
25
+ const relativeParent = getParent(curr);
26
+ if (process.env.NODE_ENV === "development") {
27
+ if (window.getComputedStyle(el).position !== "relative") throw new Error("The target element MUST have position relative so it can be moved");
28
+ if (window.getComputedStyle(relativeParent).position !== "relative") throw new Error("The relative to element MUST have position relative so it can calculate correctly the target position");
29
+ }
30
+ if (focused) {
31
+ curr.style.right = "0px";
32
+ const reposition = (0, _debounce.default)(() => {
33
+ const alreadyRight = Number(curr.style.right.replace("px", ""));
34
+ const limitOffset = relativeParent.scrollLeft + relativeParent.clientWidth;
35
+ const elWidth = curr.clientWidth * scale;
36
+ const offsetOfScale = (elWidth - curr.clientWidth) / 2;
37
+ const cardLimit = curr.offsetLeft - offsetOfScale + alreadyRight + elWidth;
38
+ const exceedingSpace = cardLimit - limitOffset;
39
+ const offsetLeft = curr.offsetLeft - offsetOfScale + alreadyRight - relativeParent.scrollLeft;
40
+ const isOverflowedRight = exceedingSpace > 0;
41
+ const isOverflowedLeft = offsetLeft < 0;
42
+ const limit = exceedingSpace + -offsetLeft;
43
+ if (isOverflowedRight) {
44
+ const val = Math.min(exceedingSpace - -Math.min(Math.abs(limit / 2), offset), offsetLimit);
45
+ curr.style.right = "".concat(val, "px");
46
+ }
47
+ if (isOverflowedLeft) {
48
+ const val = Math.max(offsetLeft - Math.min(Math.abs(limit) / 2, offset), -offsetLimit);
49
+ curr.style.right = "".concat(val, "px");
50
+ }
51
+ if (isOverflowedLeft || isOverflowedRight) {
52
+ curr.style.zIndex = "1000";
53
+ }
54
+ }, 50);
55
+ reposition();
56
+ reposition.flush();
57
+ relativeParent.addEventListener("scroll", reposition, {
58
+ passive: true
59
+ });
60
+ return () => {
61
+ reposition.cancel();
62
+ relativeParent.removeEventListener("scroll", reposition);
63
+ el.style.right = "0px";
64
+ const restore = _ref => {
65
+ let {
66
+ propertyName,
67
+ currentTarget
68
+ } = _ref;
69
+ const targetTransformation = window.getComputedStyle(currentTarget).right;
70
+ if (propertyName === "right" && targetTransformation === "0px") {
71
+ curr.style.zIndex = "";
72
+ el.removeEventListener("transitionend", restore);
73
+ }
74
+ };
75
+ el.addEventListener("transitionend", restore);
76
+ };
77
+ }
78
+ }, [focused]);
79
+ return {
80
+ elementToCheck
81
+ };
82
+ }
83
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVib3VuY2UiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidXNlQ29udGFpbmVkUmVwb3NpdGlvbmluZyIsImZvY3VzZWQiLCJnZXRQYXJlbnQiLCJvZmZzZXQiLCJzY2FsZSIsIm9mZnNldExpbWl0IiwiTnVtYmVyIiwiUE9TSVRJVkVfSU5GSU5JVFkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJlbGVtZW50VG9DaGVjayIsInVzZVJlZiIsInVzZUVmZmVjdCIsImVsIiwiY3VycmVudCIsImN1cnIiLCJyZWxhdGl2ZVBhcmVudCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIndpbmRvdyIsImdldENvbXB1dGVkU3R5bGUiLCJwb3NpdGlvbiIsIkVycm9yIiwic3R5bGUiLCJyaWdodCIsInJlcG9zaXRpb24iLCJkZWJvdW5jZSIsImFscmVhZHlSaWdodCIsInJlcGxhY2UiLCJsaW1pdE9mZnNldCIsInNjcm9sbExlZnQiLCJjbGllbnRXaWR0aCIsImVsV2lkdGgiLCJvZmZzZXRPZlNjYWxlIiwiY2FyZExpbWl0Iiwib2Zmc2V0TGVmdCIsImV4Y2VlZGluZ1NwYWNlIiwiaXNPdmVyZmxvd2VkUmlnaHQiLCJpc092ZXJmbG93ZWRMZWZ0IiwibGltaXQiLCJ2YWwiLCJNYXRoIiwibWluIiwiYWJzIiwiY29uY2F0IiwibWF4IiwiekluZGV4IiwiZmx1c2giLCJhZGRFdmVudExpc3RlbmVyIiwicGFzc2l2ZSIsImNhbmNlbCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJyZXN0b3JlIiwiX3JlZiIsInByb3BlcnR5TmFtZSIsImN1cnJlbnRUYXJnZXQiLCJ0YXJnZXRUcmFuc2Zvcm1hdGlvbiJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VDb250YWluZWRSZXBvc2l0aW9uaW5nLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZWJvdW5jZSBmcm9tIFwibG9kYXNoL2RlYm91bmNlXCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG4vKipcbiAqIFRoaXMgaG9vayB0YWtlcyBhbiBodG1sIGFuZCBjaGVja3MgaWYgaXRzIG91dHNpZGUgaXRzIHBhcmVudFxuICogSWYgaXQgaXMsIGl0IHNob3VsZCBtb3ZlIGl0IHNvIGl0IGNhbiBiZSB0b3RhbGx5IHZpc2libGUgaW5zaWRlIHRoZSBjb250YWluZXJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlQ29udGFpbmVkUmVwb3NpdGlvbmluZyhcbiAgZm9jdXNlZDogYm9vbGVhbixcbiAgZ2V0UGFyZW50OiAoZWw6IEhUTUxFbGVtZW50KSA9PiBIVE1MRWxlbWVudCxcbiAge1xuICAgIG9mZnNldCA9IDE2LFxuICAgIHNjYWxlID0gMSxcbiAgICBvZmZzZXRMaW1pdCA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcbiAgfToge1xuICAgIC8qKiBUaGUgb2Zmc2V0IHRoZSBlbGVtZW50IHdpbGwgYmUgbW92ZWQgYnkgZnJvbSB0aGUgY2xvc2VzdCBib3VuZCAqL1xuICAgIG9mZnNldD86IG51bWJlcjtcblxuICAgIC8qKiBUaGUgc2NhbGVkIGVsZW1lbnQgd2lkdGggdG8gYmUgY29uc2lkZXJlZC4gdXNlZnVsbCBmb3Igd2hlbiB0aGUgZm9jdXNlZCBlbGVtZW50IHdpbGwgY2hhbmdlIHNpemUgKi9cbiAgICBzY2FsZT86IG51bWJlcjtcblxuICAgIC8qKiBMaW1pdCBvZmZzZXQgKi9cbiAgICBvZmZzZXRMaW1pdD86IG51bWJlcjtcbiAgfSA9IHt9XG4pIHtcbiAgY29uc3QgZWxlbWVudFRvQ2hlY2sgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGVsID0gZWxlbWVudFRvQ2hlY2suY3VycmVudDtcbiAgICBpZiAoIWVsKSByZXR1cm47XG5cbiAgICBjb25zdCBjdXJyID0gZWw7XG4gICAgY29uc3QgcmVsYXRpdmVQYXJlbnQgPSBnZXRQYXJlbnQoY3Vycik7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwiZGV2ZWxvcG1lbnRcIikge1xuICAgICAgaWYgKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsKS5wb3NpdGlvbiAhPT0gXCJyZWxhdGl2ZVwiKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJUaGUgdGFyZ2V0IGVsZW1lbnQgTVVTVCBoYXZlIHBvc2l0aW9uIHJlbGF0aXZlIHNvIGl0IGNhbiBiZSBtb3ZlZFwiXG4gICAgICAgICk7XG4gICAgICBpZiAod2luZG93LmdldENvbXB1dGVkU3R5bGUocmVsYXRpdmVQYXJlbnQpLnBvc2l0aW9uICE9PSBcInJlbGF0aXZlXCIpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBcIlRoZSByZWxhdGl2ZSB0byBlbGVtZW50IE1VU1QgaGF2ZSBwb3NpdGlvbiByZWxhdGl2ZSBzbyBpdCBjYW4gY2FsY3VsYXRlIGNvcnJlY3RseSB0aGUgdGFyZ2V0IHBvc2l0aW9uXCJcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoZm9jdXNlZCkge1xuICAgICAgY3Vyci5zdHlsZS5yaWdodCA9IGAwcHhgO1xuICAgICAgY29uc3QgcmVwb3NpdGlvbiA9IGRlYm91bmNlKCgpID0+IHtcbiAgICAgICAgY29uc3QgYWxyZWFkeVJpZ2h0ID0gTnVtYmVyKGN1cnIuc3R5bGUucmlnaHQucmVwbGFjZShcInB4XCIsIFwiXCIpKTtcbiAgICAgICAgY29uc3QgbGltaXRPZmZzZXQgPVxuICAgICAgICAgIHJlbGF0aXZlUGFyZW50LnNjcm9sbExlZnQgKyByZWxhdGl2ZVBhcmVudC5jbGllbnRXaWR0aDtcbiAgICAgICAgY29uc3QgZWxXaWR0aCA9IGN1cnIuY2xpZW50V2lkdGggKiBzY2FsZTtcbiAgICAgICAgY29uc3Qgb2Zmc2V0T2ZTY2FsZSA9IChlbFdpZHRoIC0gY3Vyci5jbGllbnRXaWR0aCkgLyAyO1xuICAgICAgICBjb25zdCBjYXJkTGltaXQgPVxuICAgICAgICAgIGN1cnIub2Zmc2V0TGVmdCAtIG9mZnNldE9mU2NhbGUgKyBhbHJlYWR5UmlnaHQgKyBlbFdpZHRoO1xuICAgICAgICBjb25zdCBleGNlZWRpbmdTcGFjZSA9IGNhcmRMaW1pdCAtIGxpbWl0T2Zmc2V0O1xuICAgICAgICBjb25zdCBvZmZzZXRMZWZ0ID1cbiAgICAgICAgICBjdXJyLm9mZnNldExlZnQgLVxuICAgICAgICAgIG9mZnNldE9mU2NhbGUgK1xuICAgICAgICAgIGFscmVhZHlSaWdodCAtXG4gICAgICAgICAgcmVsYXRpdmVQYXJlbnQuc2Nyb2xsTGVmdDtcbiAgICAgICAgY29uc3QgaXNPdmVyZmxvd2VkUmlnaHQgPSBleGNlZWRpbmdTcGFjZSA+IDA7XG4gICAgICAgIGNvbnN0IGlzT3ZlcmZsb3dlZExlZnQgPSBvZmZzZXRMZWZ0IDwgMDtcbiAgICAgICAgY29uc3QgbGltaXQgPSBleGNlZWRpbmdTcGFjZSArIC1vZmZzZXRMZWZ0O1xuXG4gICAgICAgIGlmIChpc092ZXJmbG93ZWRSaWdodCkge1xuICAgICAgICAgIGNvbnN0IHZhbCA9IE1hdGgubWluKFxuICAgICAgICAgICAgZXhjZWVkaW5nU3BhY2UgLSAtTWF0aC5taW4oTWF0aC5hYnMobGltaXQgLyAyKSwgb2Zmc2V0KSxcbiAgICAgICAgICAgIG9mZnNldExpbWl0XG4gICAgICAgICAgKTtcbiAgICAgICAgICBjdXJyLnN0eWxlLnJpZ2h0ID0gYCR7dmFsfXB4YDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNPdmVyZmxvd2VkTGVmdCkge1xuICAgICAgICAgIGNvbnN0IHZhbCA9IE1hdGgubWF4KFxuICAgICAgICAgICAgb2Zmc2V0TGVmdCAtIE1hdGgubWluKE1hdGguYWJzKGxpbWl0KSAvIDIsIG9mZnNldCksXG4gICAgICAgICAgICAtb2Zmc2V0TGltaXRcbiAgICAgICAgICApO1xuICAgICAgICAgIGN1cnIuc3R5bGUucmlnaHQgPSBgJHt2YWx9cHhgO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc092ZXJmbG93ZWRMZWZ0IHx8IGlzT3ZlcmZsb3dlZFJpZ2h0KSB7XG4gICAgICAgICAgY3Vyci5zdHlsZS56SW5kZXggPSBcIjEwMDBcIjtcbiAgICAgICAgfVxuICAgICAgfSwgNTApO1xuICAgICAgcmVwb3NpdGlvbigpO1xuICAgICAgcmVwb3NpdGlvbi5mbHVzaCgpO1xuXG4gICAgICByZWxhdGl2ZVBhcmVudC5hZGRFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIHJlcG9zaXRpb24sIHtcbiAgICAgICAgcGFzc2l2ZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICByZXBvc2l0aW9uLmNhbmNlbCgpO1xuICAgICAgICByZWxhdGl2ZVBhcmVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIHJlcG9zaXRpb24pO1xuICAgICAgICBlbC5zdHlsZS5yaWdodCA9IGAwcHhgO1xuICAgICAgICBjb25zdCByZXN0b3JlID0gKHsgcHJvcGVydHlOYW1lLCBjdXJyZW50VGFyZ2V0IH06IFRyYW5zaXRpb25FdmVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRhcmdldFRyYW5zZm9ybWF0aW9uID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoXG4gICAgICAgICAgICBjdXJyZW50VGFyZ2V0IGFzIEhUTUxEaXZFbGVtZW50XG4gICAgICAgICAgKS5yaWdodDtcbiAgICAgICAgICBpZiAocHJvcGVydHlOYW1lID09PSBcInJpZ2h0XCIgJiYgdGFyZ2V0VHJhbnNmb3JtYXRpb24gPT09IFwiMHB4XCIpIHtcbiAgICAgICAgICAgIGN1cnIuc3R5bGUuekluZGV4ID0gXCJcIjtcbiAgICAgICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uZW5kXCIsIHJlc3RvcmUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihcInRyYW5zaXRpb25lbmRcIiwgcmVzdG9yZSk7XG4gICAgICB9O1xuICAgIH1cbiAgfSwgW2ZvY3VzZWRdKTtcblxuICByZXR1cm4ge1xuICAgIGVsZW1lbnRUb0NoZWNrLFxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxTQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFBMEMsU0FBQUQsdUJBQUFHLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDZSxTQUFTRyx5QkFBeUJBLENBQy9DQyxPQUFnQixFQUNoQkMsU0FBMkMsRUFlM0M7RUFBQSxJQWRBO0lBQ0VDLE1BQU0sR0FBRyxFQUFFO0lBQ1hDLEtBQUssR0FBRyxDQUFDO0lBQ1RDLFdBQVcsR0FBR0MsTUFBTSxDQUFDQztFQVV2QixDQUFDLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFFLFNBQUEsR0FBQUYsU0FBQSxNQUFHLENBQUMsQ0FBQztFQUVOLE1BQU1HLGNBQWMsR0FBRyxJQUFBQyxhQUFNLEVBQWlCLElBQUksQ0FBQztFQUNuRCxJQUFBQyxnQkFBUyxFQUFDLE1BQU07SUFDZCxNQUFNQyxFQUFFLEdBQUdILGNBQWMsQ0FBQ0ksT0FBTztJQUNqQyxJQUFJLENBQUNELEVBQUUsRUFBRTtJQUVULE1BQU1FLElBQUksR0FBR0YsRUFBRTtJQUNmLE1BQU1HLGNBQWMsR0FBR2YsU0FBUyxDQUFDYyxJQUFJLENBQUM7SUFFdEMsSUFBSUUsT0FBTyxDQUFDQyxHQUFHLENBQUNDLFFBQVEsS0FBSyxhQUFhLEVBQUU7TUFDMUMsSUFBSUMsTUFBTSxDQUFDQyxnQkFBZ0IsQ0FBQ1IsRUFBRSxDQUFDLENBQUNTLFFBQVEsS0FBSyxVQUFVLEVBQ3JELE1BQU0sSUFBSUMsS0FBSyxDQUNiLG1FQUNGLENBQUM7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