@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,34 +1,39 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const react_1 = require("react");
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = useIntersection;
7
+ var _react = require("react");
4
8
  /**
5
9
  * A hook that helps you watch when HTML or SVG elements appear on the screen.
6
10
  * It lets you run code automatically when an element becomes visible to the user.
7
11
  */
8
12
  function useIntersection() {
9
- const { current: targetMap } = (0, react_1.useRef)([]);
10
- const { current: observer } = (0, react_1.useRef)(("IntersectionObserver" in window) ? new IntersectionObserver((els) => {
11
- els.forEach((e, i) => {
12
- const result = targetMap.find((el) => el[0] === e.target);
13
- if (result && e.isIntersecting) {
14
- result[1]();
15
- }
16
- });
17
- }) : null);
18
- return (0, react_1.useMemo)(() => {
19
- return {
20
- observe: (e, cb) => {
21
- targetMap.push([e, cb]);
22
- if (observer)
23
- observer.observe(e);
24
- },
25
- unobserve: (e) => {
26
- if (observer)
27
- observer.unobserve(e);
28
- targetMap.splice(targetMap.findIndex((el) => el[0] === e), 1);
29
- },
30
- };
31
- }, []);
13
+ const {
14
+ current: targetMap
15
+ } = (0, _react.useRef)([]);
16
+ const {
17
+ current: observer
18
+ } = (0, _react.useRef)("IntersectionObserver" in window ? new IntersectionObserver(els => {
19
+ els.forEach((e, i) => {
20
+ const result = targetMap.find(el => el[0] === e.target);
21
+ if (result && e.isIntersecting) {
22
+ result[1]();
23
+ }
24
+ });
25
+ }) : null);
26
+ return (0, _react.useMemo)(() => {
27
+ return {
28
+ observe: (e, cb) => {
29
+ targetMap.push([e, cb]);
30
+ if (observer) observer.observe(e);
31
+ },
32
+ unobserve: e => {
33
+ if (observer) observer.unobserve(e);
34
+ targetMap.splice(targetMap.findIndex(el => el[0] === e), 1);
35
+ }
36
+ };
37
+ }, []);
32
38
  }
33
- exports.default = useIntersection;
34
- //# sourceMappingURL=useIntersection.js.map
39
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwidXNlSW50ZXJzZWN0aW9uIiwiY3VycmVudCIsInRhcmdldE1hcCIsInVzZVJlZiIsIm9ic2VydmVyIiwid2luZG93IiwiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiLCJlbHMiLCJmb3JFYWNoIiwiZSIsImkiLCJyZXN1bHQiLCJmaW5kIiwiZWwiLCJ0YXJnZXQiLCJpc0ludGVyc2VjdGluZyIsInVzZU1lbW8iLCJvYnNlcnZlIiwiY2IiLCJwdXNoIiwidW5vYnNlcnZlIiwic3BsaWNlIiwiZmluZEluZGV4Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZUludGVyc2VjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VNZW1vLCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuLyoqXG4gKiBBIGhvb2sgdGhhdCBoZWxwcyB5b3Ugd2F0Y2ggd2hlbiBIVE1MIG9yIFNWRyBlbGVtZW50cyBhcHBlYXIgb24gdGhlIHNjcmVlbi5cbiAqIEl0IGxldHMgeW91IHJ1biBjb2RlIGF1dG9tYXRpY2FsbHkgd2hlbiBhbiBlbGVtZW50IGJlY29tZXMgdmlzaWJsZSB0byB0aGUgdXNlci5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlSW50ZXJzZWN0aW9uKCkge1xuICBjb25zdCB7IGN1cnJlbnQ6IHRhcmdldE1hcCB9ID0gdXNlUmVmPFtIVE1MT3JTVkdFbGVtZW50LCAoKSA9PiB2b2lkXVtdPihbXSk7XG4gIGNvbnN0IHsgY3VycmVudDogb2JzZXJ2ZXIgfSA9IHVzZVJlZihcbiAgICAoXCJJbnRlcnNlY3Rpb25PYnNlcnZlclwiIGluIHdpbmRvdykgPyBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGVscykgPT4ge1xuICAgICAgZWxzLmZvckVhY2goKGUsIGkpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGFyZ2V0TWFwLmZpbmQoKGVsKSA9PiBlbFswXSA9PT0gZS50YXJnZXQgYXMgYW55KTtcbiAgICAgICAgaWYgKHJlc3VsdCAmJiBlLmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgICAgcmVzdWx0WzFdKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pIDogbnVsbFxuICApO1xuICByZXR1cm4gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9ic2VydmU6IChlOiBIVE1MT3JTVkdFbGVtZW50LCBjYjogKCkgPT4gdm9pZCkgPT4ge1xuICAgICAgICB0YXJnZXRNYXAucHVzaChbZSwgY2JdKTtcbiAgICAgICAgaWYgKG9ic2VydmVyKVxuICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGUgYXMgYW55KTtcbiAgICAgIH0sXG4gICAgICB1bm9ic2VydmU6IChlOiBIVE1MT3JTVkdFbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChvYnNlcnZlcilcbiAgICAgICAgb2JzZXJ2ZXIudW5vYnNlcnZlKGUgYXMgYW55KTtcbiAgICAgICAgdGFyZ2V0TWFwLnNwbGljZShcbiAgICAgICAgICB0YXJnZXRNYXAuZmluZEluZGV4KChlbCkgPT4gZWxbMF0gPT09IGUpLFxuICAgICAgICAgIDFcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfSwgW10pO1xufSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDZSxTQUFTQyxlQUFlQSxDQUFBLEVBQUc7RUFDeEMsTUFBTTtJQUFFQyxPQUFPLEVBQUVDO0VBQVUsQ0FBQyxHQUFHLElBQUFDLGFBQU0sRUFBbUMsRUFBRSxDQUFDO0VBQzNFLE1BQU07SUFBRUYsT0FBTyxFQUFFRztFQUFTLENBQUMsR0FBRyxJQUFBRCxhQUFNLEVBQ2pDLHNCQUFzQixJQUFJRSxNQUFNLEdBQUksSUFBSUMsb0JBQW9CLENBQUVDLEdBQUcsSUFBSztJQUNyRUEsR0FBRyxDQUFDQyxPQUFPLENBQUMsQ0FBQ0MsQ0FBQyxFQUFFQyxDQUFDLEtBQUs7TUFDcEIsTUFBTUMsTUFBTSxHQUFHVCxTQUFTLENBQUNVLElBQUksQ0FBRUMsRUFBRSxJQUFLQSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUtKLENBQUMsQ0FBQ0ssTUFBYSxDQUFDO01BQ2hFLElBQUlILE1BQU0sSUFBSUYsQ0FBQyxDQUFDTSxjQUFjLEVBQUU7UUFDOUJKLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO01BQ2I7SUFDRixDQUFDLENBQUM7RUFDSixDQUFDLENBQUMsR0FBRyxJQUNQLENBQUM7RUFDRCxPQUFPLElBQUFLLGNBQU8sRUFBQyxNQUFNO0lBQ25CLE9BQU87TUFDTEMsT0FBTyxFQUFFQSxDQUFDUixDQUFtQixFQUFFUyxFQUFjLEtBQUs7UUFDaERoQixTQUFTLENBQUNpQixJQUFJLENBQUMsQ0FBQ1YsQ0FBQyxFQUFFUyxFQUFFLENBQUMsQ0FBQztRQUN2QixJQUFJZCxRQUFRLEVBQ1pBLFFBQVEsQ0FBQ2EsT0FBTyxDQUFDUixDQUFRLENBQUM7TUFDNUIsQ0FBQztNQUNEVyxTQUFTLEVBQUdYLENBQW1CLElBQUs7UUFDbEMsSUFBSUwsUUFBUSxFQUNaQSxRQUFRLENBQUNnQixTQUFTLENBQUNYLENBQVEsQ0FBQztRQUM1QlAsU0FBUyxDQUFDbUIsTUFBTSxDQUNkbkIsU0FBUyxDQUFDb0IsU0FBUyxDQUFFVCxFQUFFLElBQUtBLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBS0osQ0FBQyxDQUFDLEVBQ3hDLENBQ0YsQ0FBQztNQUNIO0lBQ0YsQ0FBQztFQUNILENBQUMsRUFBRSxFQUFFLENBQUM7QUFDUiJ9
@@ -1,33 +1,36 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useMergeRefsFunc = void 0;
4
- const react_1 = require("react");
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = useMergeRefs;
7
+ exports.useMergeRefsFunc = useMergeRefsFunc;
8
+ var _react = require("react");
5
9
  /**
6
10
  * This hook combines multiple refs into one so they all point to the same element
7
- */
8
- // Combines multiple refs to work together
9
- function useMergeRefs(mainRef, ...otherRefs) {
10
- (0, react_1.useLayoutEffect)(() => {
11
- for (let ref of otherRefs.filter(Boolean))
12
- ref.current = mainRef.current;
13
- }, []);
14
- return mainRef;
11
+ */ // Combines multiple refs to work together
12
+ function useMergeRefs(mainRef) {
13
+ for (var _len = arguments.length, otherRefs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
14
+ otherRefs[_key - 1] = arguments[_key];
15
+ }
16
+ (0, _react.useLayoutEffect)(() => {
17
+ for (let ref of otherRefs.filter(Boolean)) ref.current = mainRef.current;
18
+ }, []);
19
+ return mainRef;
15
20
  }
16
- exports.default = useMergeRefs;
21
+
17
22
  /**
18
23
  * This function exists so we can work with multiple refs as a single one, almost immediatly
19
24
  */
20
25
  // Creates a function to set all refs at once
21
- function useMergeRefsFunc(mainRef, ...otherRefs) {
22
- return (providedRef) => {
23
- if (providedRef)
24
- for (let ref of [mainRef, ...otherRefs]) {
25
- if (typeof ref === "function")
26
- ref(providedRef);
27
- else
28
- ref.current = providedRef;
29
- }
30
- };
26
+ function useMergeRefsFunc(mainRef) {
27
+ for (var _len2 = arguments.length, otherRefs = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
28
+ otherRefs[_key2 - 1] = arguments[_key2];
29
+ }
30
+ return providedRef => {
31
+ if (providedRef) for (let ref of [mainRef, ...otherRefs]) {
32
+ if (typeof ref === "function") ref(providedRef);else ref.current = providedRef;
33
+ }
34
+ };
31
35
  }
32
- exports.useMergeRefsFunc = useMergeRefsFunc;
33
- //# sourceMappingURL=useMergeRefs.js.map
36
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwidXNlTWVyZ2VSZWZzIiwibWFpblJlZiIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJvdGhlclJlZnMiLCJBcnJheSIsIl9rZXkiLCJ1c2VMYXlvdXRFZmZlY3QiLCJyZWYiLCJmaWx0ZXIiLCJCb29sZWFuIiwiY3VycmVudCIsInVzZU1lcmdlUmVmc0Z1bmMiLCJfbGVuMiIsIl9rZXkyIiwicHJvdmlkZWRSZWYiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlTWVyZ2VSZWZzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlZk9iamVjdCwgdXNlTGF5b3V0RWZmZWN0LCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuLyoqXG4gKiBUaGlzIGhvb2sgY29tYmluZXMgbXVsdGlwbGUgcmVmcyBpbnRvIG9uZSBzbyB0aGV5IGFsbCBwb2ludCB0byB0aGUgc2FtZSBlbGVtZW50XG4gKi9cbi8vIENvbWJpbmVzIG11bHRpcGxlIHJlZnMgdG8gd29yayB0b2dldGhlclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlTWVyZ2VSZWZzPFQgZXh0ZW5kcyBSZXR1cm5UeXBlPHR5cGVvZiB1c2VSZWY+PihcbiAgbWFpblJlZjogVCxcbiAgLi4ub3RoZXJSZWZzOiAoVCB8IHVuZGVmaW5lZClbXVxuKSB7XG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgZm9yIChsZXQgcmVmIG9mIG90aGVyUmVmcy5maWx0ZXIoQm9vbGVhbikpIHJlZiEuY3VycmVudCA9IG1haW5SZWYuY3VycmVudDtcbiAgfSwgW10pO1xuICByZXR1cm4gbWFpblJlZjtcbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGV4aXN0cyBzbyB3ZSBjYW4gd29yayB3aXRoIG11bHRpcGxlIHJlZnMgYXMgYSBzaW5nbGUgb25lLCBhbG1vc3QgaW1tZWRpYXRseVxuICovXG4vLyBDcmVhdGVzIGEgZnVuY3Rpb24gdG8gc2V0IGFsbCByZWZzIGF0IG9uY2VcbmV4cG9ydCBmdW5jdGlvbiB1c2VNZXJnZVJlZnNGdW5jPFxuICBUIGV4dGVuZHMgUmV0dXJuVHlwZTx0eXBlb2YgdXNlUmVmPiB8ICgocmVmOiBhbnkpID0+IHZvaWQpXG4+KG1haW5SZWY6IFQsIC4uLm90aGVyUmVmczogVFtdKSB7XG4gIHJldHVybiAocHJvdmlkZWRSZWY6IGFueSkgPT4ge1xuICAgIGlmIChwcm92aWRlZFJlZilcbiAgICAgIGZvciAobGV0IHJlZiBvZiBbbWFpblJlZiwgLi4ub3RoZXJSZWZzXSkge1xuICAgICAgICBpZiAodHlwZW9mIHJlZiA9PT0gXCJmdW5jdGlvblwiKSByZWYocHJvdmlkZWRSZWYpO1xuICAgICAgICBlbHNlIHJlZi5jdXJyZW50ID0gcHJvdmlkZWRSZWY7XG4gICAgICB9XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFFQTtBQUNBO0FBQ0EsR0FGQSxDQUdBO0FBQ2UsU0FBU0MsWUFBWUEsQ0FDbENDLE9BQVUsRUFFVjtFQUFBLFNBQUFDLElBQUEsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLEVBREdDLFNBQVMsT0FBQUMsS0FBQSxDQUFBSixJQUFBLE9BQUFBLElBQUEsV0FBQUssSUFBQSxNQUFBQSxJQUFBLEdBQUFMLElBQUEsRUFBQUssSUFBQTtJQUFURixTQUFTLENBQUFFLElBQUEsUUFBQUosU0FBQSxDQUFBSSxJQUFBO0VBQUE7RUFFWixJQUFBQyxzQkFBZSxFQUFDLE1BQU07SUFDcEIsS0FBSyxJQUFJQyxHQUFHLElBQUlKLFNBQVMsQ0FBQ0ssTUFBTSxDQUFDQyxPQUFPLENBQUMsRUFBRUYsR0FBRyxDQUFFRyxPQUFPLEdBQUdYLE9BQU8sQ0FBQ1csT0FBTztFQUMzRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0VBQ04sT0FBT1gsT0FBTztBQUNoQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNZLGdCQUFnQkEsQ0FFOUJaLE9BQVUsRUFBcUI7RUFBQSxTQUFBYSxLQUFBLEdBQUFYLFNBQUEsQ0FBQUMsTUFBQSxFQUFoQkMsU0FBUyxPQUFBQyxLQUFBLENBQUFRLEtBQUEsT0FBQUEsS0FBQSxXQUFBQyxLQUFBLE1BQUFBLEtBQUEsR0FBQUQsS0FBQSxFQUFBQyxLQUFBO0lBQVRWLFNBQVMsQ0FBQVUsS0FBQSxRQUFBWixTQUFBLENBQUFZLEtBQUE7RUFBQTtFQUN4QixPQUFRQyxXQUFnQixJQUFLO0lBQzNCLElBQUlBLFdBQVcsRUFDYixLQUFLLElBQUlQLEdBQUcsSUFBSSxDQUFDUixPQUFPLEVBQUUsR0FBR0ksU0FBUyxDQUFDLEVBQUU7TUFDdkMsSUFBSSxPQUFPSSxHQUFHLEtBQUssVUFBVSxFQUFFQSxHQUFHLENBQUNPLFdBQVcsQ0FBQyxDQUFDLEtBQzNDUCxHQUFHLENBQUNHLE9BQU8sR0FBR0ksV0FBVztJQUNoQztFQUNKLENBQUM7QUFDSCJ9
@@ -1,22 +1,25 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const react_1 = require("react");
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = useObserve;
7
+ var _react = require("react");
4
8
  require("./shims/ObjectWatchShim");
5
9
  /**
6
10
  * A React hook that watches for changes to specific properties of an object.
7
11
  * When the watched properties change, it triggers a re-render.
8
12
  */
9
13
  function useObserve(toObserve, keysToObserve) {
10
- const [_, ss] = (0, react_1.useState)(0);
11
- (0, react_1.useLayoutEffect)(() => {
12
- const arr = Array.isArray(toObserve) ? toObserve : [toObserve];
13
- const unwatchers = arr.map(object => object.watch(keysToObserve, () => {
14
- ss((p) => {
15
- return p + 1;
16
- });
17
- }));
18
- return () => unwatchers.forEach(unwatch => unwatch());
19
- }, [toObserve]);
14
+ const [_, ss] = (0, _react.useState)(0);
15
+ (0, _react.useLayoutEffect)(() => {
16
+ const arr = Array.isArray(toObserve) ? toObserve : [toObserve];
17
+ const unwatchers = arr.map(object => object.watch(keysToObserve, () => {
18
+ ss(p => {
19
+ return p + 1;
20
+ });
21
+ }));
22
+ return () => unwatchers.forEach(unwatch => unwatch());
23
+ }, [toObserve]);
20
24
  }
21
- exports.default = useObserve;
22
- //# sourceMappingURL=useObserve.js.map
25
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwidXNlT2JzZXJ2ZSIsInRvT2JzZXJ2ZSIsImtleXNUb09ic2VydmUiLCJfIiwic3MiLCJ1c2VTdGF0ZSIsInVzZUxheW91dEVmZmVjdCIsImFyciIsIkFycmF5IiwiaXNBcnJheSIsInVud2F0Y2hlcnMiLCJtYXAiLCJvYmplY3QiLCJ3YXRjaCIsInAiLCJmb3JFYWNoIiwidW53YXRjaCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VPYnNlcnZlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlTGF5b3V0RWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFwiLi9zaGltcy9PYmplY3RXYXRjaFNoaW1cIjtcblxuaW50ZXJmYWNlIE9iamVjdCB7XG4gIHdhdGNoPFQgZXh0ZW5kcyBPYmplY3Q+KHByb3A6IChrZXlvZiBUKVtdLCBoYW5kbGVyOiAoKSA9PiB2b2lkKTogKCkgPT4gdm9pZDtcbiAgdW53YXRjaCgpOiB2b2lkO1xufVxuXG4vKipcbiAqIEEgUmVhY3QgaG9vayB0aGF0IHdhdGNoZXMgZm9yIGNoYW5nZXMgdG8gc3BlY2lmaWMgcHJvcGVydGllcyBvZiBhbiBvYmplY3QuXG4gKiBXaGVuIHRoZSB3YXRjaGVkIHByb3BlcnRpZXMgY2hhbmdlLCBpdCB0cmlnZ2VycyBhIHJlLXJlbmRlci5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlT2JzZXJ2ZTxUIGV4dGVuZHMgYW55PihcbiAgdG9PYnNlcnZlOiBUIHwgVFtdLFxuICBrZXlzVG9PYnNlcnZlOiAoa2V5b2YgVClbXVxuKSB7XG4gIGNvbnN0IFtfLCBzc10gPSB1c2VTdGF0ZSgwKTtcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBhcnIgPSBBcnJheS5pc0FycmF5KHRvT2JzZXJ2ZSkgPyB0b09ic2VydmUgOiBbdG9PYnNlcnZlXVxuICAgIGNvbnN0IHVud2F0Y2hlcnMgPSBhcnIubWFwKG9iamVjdCA9PiAob2JqZWN0IGFzIE9iamVjdCkud2F0Y2goa2V5c1RvT2JzZXJ2ZSBhcyBhbnksICgpID0+IHtcbiAgICAgIHNzKChwKSA9PiB7XG4gICAgICAgIHJldHVybiBwICsgMVxuICAgICAgfSk7XG4gICAgfSkpXG5cbiAgICByZXR1cm4gKCkgPT4gdW53YXRjaGVycy5mb3JFYWNoKHVud2F0Y2ggPT4gdW53YXRjaCgpKVxuICB9LCBbdG9PYnNlcnZlXSk7XG59Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFDQUEsT0FBQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ2UsU0FBU0MsVUFBVUEsQ0FDaENDLFNBQWtCLEVBQ2xCQyxhQUEwQixFQUMxQjtFQUNBLE1BQU0sQ0FBQ0MsQ0FBQyxFQUFFQyxFQUFFLENBQUMsR0FBRyxJQUFBQyxlQUFRLEVBQUMsQ0FBQyxDQUFDO0VBQzNCLElBQUFDLHNCQUFlLEVBQUMsTUFBTTtJQUNwQixNQUFNQyxHQUFHLEdBQUdDLEtBQUssQ0FBQ0MsT0FBTyxDQUFDUixTQUFTLENBQUMsR0FBR0EsU0FBUyxHQUFHLENBQUNBLFNBQVMsQ0FBQztJQUM5RCxNQUFNUyxVQUFVLEdBQUdILEdBQUcsQ0FBQ0ksR0FBRyxDQUFDQyxNQUFNLElBQUtBLE1BQU0sQ0FBWUMsS0FBSyxDQUFDWCxhQUFhLEVBQVMsTUFBTTtNQUN4RkUsRUFBRSxDQUFFVSxDQUFDLElBQUs7UUFDUixPQUFPQSxDQUFDLEdBQUcsQ0FBQztNQUNkLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxNQUFNSixVQUFVLENBQUNLLE9BQU8sQ0FBQ0MsT0FBTyxJQUFJQSxPQUFPLENBQUMsQ0FBQyxDQUFDO0VBQ3ZELENBQUMsRUFBRSxDQUFDZixTQUFTLENBQUMsQ0FBQztBQUNqQiJ9
@@ -1,180 +1,163 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __rest = (this && this.__rest) || function (s, e) {
12
- var t = {};
13
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
14
- t[p] = s[p];
15
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
16
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
17
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
18
- t[p[i]] = s[p[i]];
19
- }
20
- return t;
21
- };
22
- var __importDefault = (this && this.__importDefault) || function (mod) {
23
- return (mod && mod.__esModule) ? mod : { "default": mod };
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.useLocalPagination = exports.useContainerPagination = void 0;
27
- const react_1 = require("react");
28
- const useAsyncControl_1 = __importDefault(require("./useAsyncControl"));
29
- const throttle_1 = __importDefault(require("lodash/throttle"));
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = usePagination;
7
+ exports.useContainerPagination = useContainerPagination;
8
+ exports.useLocalPagination = useLocalPagination;
9
+ var _react = require("react");
10
+ var _useAsyncControl2 = _interopRequireDefault(require("./useAsyncControl"));
11
+ var _throttle = _interopRequireDefault(require("lodash/throttle"));
12
+ const _excluded = ["process"];
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+ 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; }
15
+ 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; }
16
+ 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; }
17
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
18
+ 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); }
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; }
30
21
  /**
31
22
  * This hook helps manage loading and showing items in pages.
32
23
  * It handles fetching new items when the user scrolls or clicks next page,
33
24
  * and keeps track of whether all items have been loaded.
34
25
  */
35
- function usePagination(request, paginationId = () => "default", startingItems) {
36
- const paginationDataRef = (0, react_1.useRef)({});
37
- const { current: paginationData } = paginationDataRef;
38
- const paginationIdFactory = (0, react_1.useMemo)(() => {
39
- if (typeof paginationId === "object") {
40
- const randId = Math.random();
41
- return () => randId.toString();
42
- }
43
- else
44
- return paginationId;
45
- }, Array.isArray(paginationId) ? paginationId : [paginationId]);
46
- const [items, setItems] = (0, react_1.useState)();
47
- const [id, setId] = (0, react_1.useState)(() => paginationIdFactory());
48
- (0, react_1.useEffect)(() => {
49
- setId(paginationIdFactory());
50
- if (startingItems)
51
- setItems([paginationIdFactory(), startingItems]);
52
- else
53
- setItems(undefined);
54
- }, [paginationIdFactory()]);
55
- const _a = (0, useAsyncControl_1.default)(), { process } = _a, control = __rest(_a, ["process"]);
56
- function updateItems(cb) {
57
- setItems((prev) => [prev[0], cb()]);
58
- }
59
- const derivateCurrentPage = (pageSize) => {
60
- var _a;
61
- if (items === undefined)
62
- return 0;
63
- const currentPage = Math.floor(((_a = items === null || items === void 0 ? void 0 : items[1].length) !== null && _a !== void 0 ? _a : 0) / pageSize) - 1;
64
- return currentPage;
65
- };
66
- const _requestPage = (0, react_1.useCallback)(function (page, pageSize) {
67
- var _a;
68
- const id = paginationIdFactory();
69
- if ((_a = paginationData[id]) === null || _a === void 0 ? void 0 : _a.finished)
70
- return;
71
- process(() => __awaiter(this, void 0, void 0, function* () {
72
- const result = yield request(page, pageSize, (items === null || items === void 0 ? void 0 : items[0]) === id && page !== 0
73
- ? pageSize === "all"
74
- ? undefined
75
- : items === null || items === void 0 ? void 0 : items[1].slice(0, page * pageSize)
76
- : undefined);
77
- paginationData[id] = {
78
- finished: result.finished,
79
- totalItems: result.totalItems,
80
- };
81
- setItems((prev) => {
82
- if (page === 0)
83
- return [id, result.items];
84
- else if (!prev || id === prev[0])
85
- return [id, result.items];
86
- return prev;
87
- });
88
- }));
89
- }, [items, request]);
90
- return {
91
- updateItems,
92
- getNextPage: (pageSize) => {
93
- _requestPage(derivateCurrentPage(pageSize) + 1, pageSize);
94
- },
95
- getPage: _requestPage,
96
- getAll: () => {
97
- _requestPage(0, "all");
98
- },
99
- refreshCurrentPage: (pageSize) => {
100
- _requestPage(derivateCurrentPage(pageSize), pageSize);
101
- },
102
- totalItems: () => { var _a; return (_a = paginationData[paginationIdFactory()]) === null || _a === void 0 ? void 0 : _a.totalItems; },
103
- id: () => id,
104
- loading: control.loading,
105
- error: control.error,
106
- items: items === null || items === void 0 ? void 0 : items[1],
107
- setError: control.setError,
108
- };
26
+ function usePagination(request) {
27
+ let paginationId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : () => "default";
28
+ let startingItems = arguments.length > 2 ? arguments[2] : undefined;
29
+ const paginationDataRef = (0, _react.useRef)({});
30
+ const {
31
+ current: paginationData
32
+ } = paginationDataRef;
33
+ const paginationIdFactory = (0, _react.useMemo)(() => {
34
+ if (typeof paginationId === "object") {
35
+ const randId = Math.random();
36
+ return () => randId.toString();
37
+ } else return paginationId;
38
+ }, Array.isArray(paginationId) ? paginationId : [paginationId]);
39
+ const [items, setItems] = (0, _react.useState)();
40
+ const [id, setId] = (0, _react.useState)(() => paginationIdFactory());
41
+ (0, _react.useEffect)(() => {
42
+ setId(paginationIdFactory());
43
+ if (startingItems) setItems([paginationIdFactory(), startingItems]);else setItems(undefined);
44
+ }, [paginationIdFactory()]);
45
+ const _useAsyncControl = (0, _useAsyncControl2.default)(),
46
+ {
47
+ process
48
+ } = _useAsyncControl,
49
+ control = _objectWithoutProperties(_useAsyncControl, _excluded);
50
+ function updateItems(cb) {
51
+ setItems(prev => [prev[0], cb()]);
52
+ }
53
+ const derivateCurrentPage = pageSize => {
54
+ var _items$1$length;
55
+ if (items === undefined) return 0;
56
+ const currentPage = Math.floor(((_items$1$length = items === null || items === void 0 ? void 0 : items[1].length) !== null && _items$1$length !== void 0 ? _items$1$length : 0) / pageSize) - 1;
57
+ return currentPage;
58
+ };
59
+ const _requestPage = (0, _react.useCallback)(function (page, pageSize) {
60
+ var _paginationData$id;
61
+ const id = paginationIdFactory();
62
+ if ((_paginationData$id = paginationData[id]) !== null && _paginationData$id !== void 0 && _paginationData$id.finished) return;
63
+ process(async () => {
64
+ const result = await request(page, pageSize, (items === null || items === void 0 ? void 0 : items[0]) === id && page !== 0 ? pageSize === "all" ? undefined : items === null || items === void 0 ? void 0 : items[1].slice(0, page * pageSize) : undefined);
65
+ paginationData[id] = {
66
+ finished: result.finished,
67
+ totalItems: result.totalItems
68
+ };
69
+ setItems(prev => {
70
+ if (page === 0) return [id, result.items];else if (!prev || id === prev[0]) return [id, result.items];
71
+ return prev;
72
+ });
73
+ });
74
+ }, [items, request]);
75
+ return {
76
+ updateItems,
77
+ getNextPage: pageSize => {
78
+ _requestPage(derivateCurrentPage(pageSize) + 1, pageSize);
79
+ },
80
+ getPage: _requestPage,
81
+ getAll: () => {
82
+ _requestPage(0, "all");
83
+ },
84
+ refreshCurrentPage: pageSize => {
85
+ _requestPage(derivateCurrentPage(pageSize), pageSize);
86
+ },
87
+ totalItems: () => {
88
+ var _paginationData$pagin;
89
+ return (_paginationData$pagin = paginationData[paginationIdFactory()]) === null || _paginationData$pagin === void 0 ? void 0 : _paginationData$pagin.totalItems;
90
+ },
91
+ id: () => id,
92
+ loading: control.loading,
93
+ error: control.error,
94
+ items: items === null || items === void 0 ? void 0 : items[1],
95
+ setError: control.setError
96
+ };
109
97
  }
110
- exports.default = usePagination;
111
98
  /**
112
99
  * This returns a ref to be bound to an elements so it can be able to detect when a pagination whould occur
113
100
  */
114
- function useContainerPagination(cb, pageSize, direction = "v") {
115
- const scrollableRef = (0, react_1.useRef)(undefined);
116
- const customOptionsRef = (0, react_1.useRef)(undefined);
117
- (0, react_1.useEffect)(() => {
118
- const el = scrollableRef.current;
119
- const scrollElement = el.scrollingElement || el;
120
- const calculateIfReachedLimit = (0, throttle_1.default)((e) => {
121
- var _a;
122
- if (e.target !== el)
123
- return;
124
- const { offsetBottom = 0, offsetLeft = 0 } = ((_a = customOptionsRef.current) === null || _a === void 0 ? void 0 : _a.call(customOptionsRef)) || {};
125
- const offsetLimit = direction === "v"
126
- ? scrollElement.scrollHeight -
127
- offsetBottom -
128
- scrollElement.clientHeight * 0.6
129
- : scrollElement.scrollWidth -
130
- offsetLeft -
131
- scrollElement.clientWidth * 0.6;
132
- const offset = direction === "v"
133
- ? scrollElement.clientHeight + scrollElement.scrollTop
134
- : scrollElement.clientWidth + scrollElement.scrollLeft;
135
- if (offset >= offsetLimit) {
136
- cb(pageSize);
137
- }
138
- }, 250, {
139
- leading: false,
140
- trailing: true,
141
- });
142
- el.addEventListener("scroll", calculateIfReachedLimit, {
143
- passive: true,
144
- });
145
- return () => el.removeEventListener("scroll", calculateIfReachedLimit);
146
- }, [cb, pageSize]);
147
- return {
148
- scrollableRef,
149
- customOptionsRef,
150
- };
101
+ function useContainerPagination(cb, pageSize) {
102
+ let direction = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "v";
103
+ const scrollableRef = (0, _react.useRef)(undefined);
104
+ const customOptionsRef = (0, _react.useRef)(undefined);
105
+ (0, _react.useEffect)(() => {
106
+ const el = scrollableRef.current;
107
+ const scrollElement = el.scrollingElement || el;
108
+ const calculateIfReachedLimit = (0, _throttle.default)(e => {
109
+ var _customOptionsRef$cur;
110
+ if (e.target !== el) return;
111
+ const {
112
+ offsetBottom = 0,
113
+ offsetLeft = 0
114
+ } = ((_customOptionsRef$cur = customOptionsRef.current) === null || _customOptionsRef$cur === void 0 ? void 0 : _customOptionsRef$cur.call(customOptionsRef)) || {};
115
+ const offsetLimit = direction === "v" ? scrollElement.scrollHeight - offsetBottom - scrollElement.clientHeight * 0.6 : scrollElement.scrollWidth - offsetLeft - scrollElement.clientWidth * 0.6;
116
+ const offset = direction === "v" ? scrollElement.clientHeight + scrollElement.scrollTop : scrollElement.clientWidth + scrollElement.scrollLeft;
117
+ if (offset >= offsetLimit) {
118
+ cb(pageSize);
119
+ }
120
+ }, 250, {
121
+ leading: false,
122
+ trailing: true
123
+ });
124
+ el.addEventListener("scroll", calculateIfReachedLimit, {
125
+ passive: true
126
+ });
127
+ return () => el.removeEventListener("scroll", calculateIfReachedLimit);
128
+ }, [cb, pageSize]);
129
+ return {
130
+ scrollableRef,
131
+ customOptionsRef
132
+ };
151
133
  }
152
- exports.useContainerPagination = useContainerPagination;
134
+
153
135
  /**
154
136
  * This function receives an amount of local instances and paginates it
155
137
  */
156
138
  function useLocalPagination(items) {
157
- const instanceID = (0, react_1.useMemo)(() => Date.now(), [items]);
158
- const cb = (0, react_1.useCallback)((page, pageSize, currItems = []) => {
159
- if (!items)
160
- return Promise.resolve({
161
- finished: false,
162
- totalItems: 0,
163
- items: [],
164
- });
165
- if (pageSize === "all")
166
- pageSize = items.length;
167
- const from = pageSize * page;
168
- const newArray = [...currItems, ...items.slice(from, from + pageSize)];
169
- return Promise.resolve({
170
- finished: newArray.length === items.length,
171
- totalItems: items.length,
172
- items: newArray,
173
- });
174
- }, [items]);
175
- const pagination = usePagination(cb, () => `${instanceID}`);
176
- const pagSrc = (0, react_1.useMemo)(() => items, [pagination.items]);
177
- return Object.assign(Object.assign({}, pagination), { loading: items === undefined, src: pagSrc });
139
+ const instanceID = (0, _react.useMemo)(() => Date.now(), [items]);
140
+ const cb = (0, _react.useCallback)(function (page, pageSize) {
141
+ let currItems = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
142
+ if (!items) return Promise.resolve({
143
+ finished: false,
144
+ totalItems: 0,
145
+ items: []
146
+ });
147
+ if (pageSize === "all") pageSize = items.length;
148
+ const from = pageSize * page;
149
+ const newArray = [...currItems, ...items.slice(from, from + pageSize)];
150
+ return Promise.resolve({
151
+ finished: newArray.length === items.length,
152
+ totalItems: items.length,
153
+ items: newArray
154
+ });
155
+ }, [items]);
156
+ const pagination = usePagination(cb, () => "".concat(instanceID));
157
+ const pagSrc = (0, _react.useMemo)(() => items, [pagination.items]);
158
+ return _objectSpread(_objectSpread({}, pagination), {}, {
159
+ loading: items === undefined,
160
+ src: pagSrc
161
+ });
178
162
  }
179
- exports.useLocalPagination = useLocalPagination;
180
- //# sourceMappingURL=usePagination.js.map
163
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX3VzZUFzeW5jQ29udHJvbDIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3Rocm90dGxlIiwiX2V4Y2x1ZGVkIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJvd25LZXlzIiwib2JqZWN0IiwiZW51bWVyYWJsZU9ubHkiLCJrZXlzIiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic3ltYm9scyIsImZpbHRlciIsInN5bSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImZvckVhY2giLCJrZXkiLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJfdG9Qcm9wZXJ0eUtleSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiYXJnIiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwiaW5wdXQiLCJoaW50IiwicHJpbSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwidW5kZWZpbmVkIiwicmVzIiwiY2FsbCIsIlR5cGVFcnJvciIsIk51bWJlciIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsImV4Y2x1ZGVkIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJzb3VyY2VTeW1ib2xLZXlzIiwiaW5kZXhPZiIsInByb3RvdHlwZSIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwic291cmNlS2V5cyIsInVzZVBhZ2luYXRpb24iLCJyZXF1ZXN0IiwicGFnaW5hdGlvbklkIiwic3RhcnRpbmdJdGVtcyIsInBhZ2luYXRpb25EYXRhUmVmIiwidXNlUmVmIiwiY3VycmVudCIsInBhZ2luYXRpb25EYXRhIiwicGFnaW5hdGlvbklkRmFjdG9yeSIsInVzZU1lbW8iLCJyYW5kSWQiLCJNYXRoIiwicmFuZG9tIiwidG9TdHJpbmciLCJBcnJheSIsImlzQXJyYXkiLCJpdGVtcyIsInNldEl0ZW1zIiwidXNlU3RhdGUiLCJpZCIsInNldElkIiwidXNlRWZmZWN0IiwiX3VzZUFzeW5jQ29udHJvbCIsInVzZUFzeW5jQ29udHJvbCIsInByb2Nlc3MiLCJjb250cm9sIiwidXBkYXRlSXRlbXMiLCJjYiIsInByZXYiLCJkZXJpdmF0ZUN1cnJlbnRQYWdlIiwicGFnZVNpemUiLCJfaXRlbXMkMSRsZW5ndGgiLCJjdXJyZW50UGFnZSIsImZsb29yIiwiX3JlcXVlc3RQYWdlIiwidXNlQ2FsbGJhY2siLCJwYWdlIiwiX3BhZ2luYXRpb25EYXRhJGlkIiwiZmluaXNoZWQiLCJyZXN1bHQiLCJzbGljZSIsInRvdGFsSXRlbXMiLCJnZXROZXh0UGFnZSIsImdldFBhZ2UiLCJnZXRBbGwiLCJyZWZyZXNoQ3VycmVudFBhZ2UiLCJfcGFnaW5hdGlvbkRhdGEkcGFnaW4iLCJsb2FkaW5nIiwiZXJyb3IiLCJzZXRFcnJvciIsInVzZUNvbnRhaW5lclBhZ2luYXRpb24iLCJkaXJlY3Rpb24iLCJzY3JvbGxhYmxlUmVmIiwiY3VzdG9tT3B0aW9uc1JlZiIsImVsIiwic2Nyb2xsRWxlbWVudCIsInNjcm9sbGluZ0VsZW1lbnQiLCJjYWxjdWxhdGVJZlJlYWNoZWRMaW1pdCIsInRocm90dGxlIiwiZSIsIl9jdXN0b21PcHRpb25zUmVmJGN1ciIsIm9mZnNldEJvdHRvbSIsIm9mZnNldExlZnQiLCJvZmZzZXRMaW1pdCIsInNjcm9sbEhlaWdodCIsImNsaWVudEhlaWdodCIsInNjcm9sbFdpZHRoIiwiY2xpZW50V2lkdGgiLCJvZmZzZXQiLCJzY3JvbGxUb3AiLCJzY3JvbGxMZWZ0IiwibGVhZGluZyIsInRyYWlsaW5nIiwiYWRkRXZlbnRMaXN0ZW5lciIsInBhc3NpdmUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidXNlTG9jYWxQYWdpbmF0aW9uIiwiaW5zdGFuY2VJRCIsIkRhdGUiLCJub3ciLCJjdXJySXRlbXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsImZyb20iLCJuZXdBcnJheSIsInBhZ2luYXRpb24iLCJjb25jYXQiLCJwYWdTcmMiLCJzcmMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlUGFnaW5hdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB1c2VDYWxsYmFjayxcbiAgdXNlRWZmZWN0LFxuICB1c2VMYXlvdXRFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHVzZUFzeW5jQ29udHJvbCBmcm9tIFwiLi91c2VBc3luY0NvbnRyb2xcIjtcbmltcG9ydCB0aHJvdHRsZSBmcm9tIFwibG9kYXNoL3Rocm90dGxlXCI7XG5cbnR5cGUgVXBkYXRlRXZlbnQ8SSBleHRlbmRzIGFueT4gPSB7XG4gIGZpbmlzaGVkOiBib29sZWFuO1xuICBpdGVtczogSVtdO1xuICB0b3RhbEl0ZW1zOiBudW1iZXI7XG59O1xuXG4vKipcbiAqIFRoaXMgaG9vayBoZWxwcyBtYW5hZ2UgbG9hZGluZyBhbmQgc2hvd2luZyBpdGVtcyBpbiBwYWdlcy5cbiAqIEl0IGhhbmRsZXMgZmV0Y2hpbmcgbmV3IGl0ZW1zIHdoZW4gdGhlIHVzZXIgc2Nyb2xscyBvciBjbGlja3MgbmV4dCBwYWdlLFxuICogYW5kIGtlZXBzIHRyYWNrIG9mIHdoZXRoZXIgYWxsIGl0ZW1zIGhhdmUgYmVlbiBsb2FkZWQuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZVBhZ2luYXRpb248SSBleHRlbmRzIGFueT4oXG4gIHJlcXVlc3Q6IChcbiAgICBwYWdlOiBudW1iZXIsXG4gICAgcGFnZVNpemU6IG51bWJlciB8IFwiYWxsXCIsXG4gICAgY3Vyckl0ZW1zPzogSVtdXG4gICkgPT4gUHJvbWlzZTxVcGRhdGVFdmVudDxJPj4sXG4gIHBhZ2luYXRpb25JZDogb2JqZWN0IHwgYW55W10gfCAoKCkgPT4gc3RyaW5nKSA9ICgpID0+IFwiZGVmYXVsdFwiLFxuICBzdGFydGluZ0l0ZW1zPzogSVtdXG4pOiBQYWdpbmFibGU8ST4ge1xuICBjb25zdCBwYWdpbmF0aW9uRGF0YVJlZiA9IHVzZVJlZjx7XG4gICAgW2Q6IHN0cmluZ106XG4gICAgICB8IHtcbiAgICAgICAgICBmaW5pc2hlZDogYm9vbGVhbjtcbiAgICAgICAgICB0b3RhbEl0ZW1zOiBudW1iZXI7XG4gICAgICAgIH1cbiAgICAgIHwgdW5kZWZpbmVkO1xuICB9Pih7fSk7XG4gIGNvbnN0IHsgY3VycmVudDogcGFnaW5hdGlvbkRhdGEgfSA9IHBhZ2luYXRpb25EYXRhUmVmO1xuICBjb25zdCBwYWdpbmF0aW9uSWRGYWN0b3J5ID0gdXNlTWVtbyhcbiAgICAoKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHBhZ2luYXRpb25JZCA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICBjb25zdCByYW5kSWQgPSBNYXRoLnJhbmRvbSgpO1xuICAgICAgICByZXR1cm4gKCkgPT4gcmFuZElkLnRvU3RyaW5nKCk7XG4gICAgICB9IGVsc2UgcmV0dXJuIHBhZ2luYXRpb25JZDtcbiAgICB9LFxuICAgIEFycmF5LmlzQXJyYXkocGFnaW5hdGlvbklkKSA/IHBhZ2luYXRpb25JZCA6IFtwYWdpbmF0aW9uSWRdXG4gICk7XG5cbiAgY29uc3QgW2l0ZW1zLCBzZXRJdGVtc10gPSB1c2VTdGF0ZTxcbiAgICBbcGFnaW5hdGlvbklkOiBzdHJpbmcsIGl0ZW1zOiBJW11dIHwgdW5kZWZpbmVkXG4gID4oKTtcblxuICBjb25zdCBbaWQsIHNldElkXSA9IHVzZVN0YXRlKCgpID0+IHBhZ2luYXRpb25JZEZhY3RvcnkoKSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRJZChwYWdpbmF0aW9uSWRGYWN0b3J5KCkpO1xuICAgIGlmIChzdGFydGluZ0l0ZW1zKSBzZXRJdGVtcyhbcGFnaW5hdGlvbklkRmFjdG9yeSgpLCBzdGFydGluZ0l0ZW1zXSk7XG4gICAgZWxzZSBzZXRJdGVtcyh1bmRlZmluZWQpO1xuICB9LCBbcGFnaW5hdGlvbklkRmFjdG9yeSgpXSk7XG5cbiAgY29uc3QgeyBwcm9jZXNzLCAuLi5jb250cm9sIH0gPSB1c2VBc3luY0NvbnRyb2woKTtcblxuICBmdW5jdGlvbiB1cGRhdGVJdGVtcyhjYjogKHByZXZJdGVtcz86IEkpID0+IFVwZGF0ZUV2ZW50PEk+W1wiaXRlbXNcIl0pIHtcbiAgICBzZXRJdGVtcygocHJldikgPT4gW3ByZXYhWzBdLCBjYigpXSk7XG4gIH1cblxuICBjb25zdCBkZXJpdmF0ZUN1cnJlbnRQYWdlID0gKHBhZ2VTaXplOiBudW1iZXIpID0+IHtcbiAgICBpZiAoaXRlbXMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIDA7XG4gICAgY29uc3QgY3VycmVudFBhZ2UgPSBNYXRoLmZsb29yKChpdGVtcz8uWzFdLmxlbmd0aCA/PyAwKSAvIHBhZ2VTaXplKSAtIDE7XG4gICAgcmV0dXJuIGN1cnJlbnRQYWdlO1xuICB9O1xuXG4gIGNvbnN0IF9yZXF1ZXN0UGFnZSA9IHVzZUNhbGxiYWNrKFxuICAgIGZ1bmN0aW9uIChwYWdlOiBudW1iZXIsIHBhZ2VTaXplOiBudW1iZXIgfCBcImFsbFwiKSB7XG4gICAgICBjb25zdCBpZCA9IHBhZ2luYXRpb25JZEZhY3RvcnkoKTtcbiAgICAgIGlmIChwYWdpbmF0aW9uRGF0YVtpZF0/LmZpbmlzaGVkKSByZXR1cm47XG4gICAgICBwcm9jZXNzKGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVxdWVzdChcbiAgICAgICAgICBwYWdlLFxuICAgICAgICAgIHBhZ2VTaXplLFxuICAgICAgICAgIGl0ZW1zPy5bMF0gPT09IGlkICYmIHBhZ2UgIT09IDBcbiAgICAgICAgICAgID8gcGFnZVNpemUgPT09IFwiYWxsXCJcbiAgICAgICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgOiBpdGVtcz8uWzFdLnNsaWNlKDAsIHBhZ2UgKiBwYWdlU2l6ZSlcbiAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICk7XG4gICAgICAgIHBhZ2luYXRpb25EYXRhW2lkXSA9IHtcbiAgICAgICAgICBmaW5pc2hlZDogcmVzdWx0LmZpbmlzaGVkLFxuICAgICAgICAgIHRvdGFsSXRlbXM6IHJlc3VsdC50b3RhbEl0ZW1zLFxuICAgICAgICB9O1xuICAgICAgICBzZXRJdGVtcygocHJldikgPT4ge1xuICAgICAgICAgIGlmIChwYWdlID09PSAwKSByZXR1cm4gW2lkLCByZXN1bHQuaXRlbXNdO1xuICAgICAgICAgIGVsc2UgaWYgKCFwcmV2IHx8IGlkID09PSBwcmV2WzBdKSByZXR1cm4gW2lkLCByZXN1bHQuaXRlbXNdO1xuICAgICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgW2l0ZW1zLCByZXF1ZXN0XVxuICApO1xuXG4gIHJldHVybiB7XG4gICAgdXBkYXRlSXRlbXMsXG4gICAgZ2V0TmV4dFBhZ2U6IChwYWdlU2l6ZTogbnVtYmVyKSA9PiB7XG4gICAgICBfcmVxdWVzdFBhZ2UoZGVyaXZhdGVDdXJyZW50UGFnZShwYWdlU2l6ZSkgKyAxLCBwYWdlU2l6ZSk7XG4gICAgfSxcbiAgICBnZXRQYWdlOiBfcmVxdWVzdFBhZ2UsXG4gICAgZ2V0QWxsOiAoKSA9PiB7XG4gICAgICBfcmVxdWVzdFBhZ2UoMCwgXCJhbGxcIik7XG4gICAgfSxcbiAgICByZWZyZXNoQ3VycmVudFBhZ2U6IChwYWdlU2l6ZTogbnVtYmVyKSA9PiB7XG4gICAgICBfcmVxdWVzdFBhZ2UoZGVyaXZhdGVDdXJyZW50UGFnZShwYWdlU2l6ZSksIHBhZ2VTaXplKTtcbiAgICB9LFxuICAgIHRvdGFsSXRlbXM6ICgpID0+IHBhZ2luYXRpb25EYXRhW3BhZ2luYXRpb25JZEZhY3RvcnkoKV0/LnRvdGFsSXRlbXMsXG4gICAgaWQ6ICgpID0+IGlkLFxuICAgIGxvYWRpbmc6IGNvbnRyb2wubG9hZGluZyxcbiAgICBlcnJvcjogY29udHJvbC5lcnJvcixcbiAgICBpdGVtczogaXRlbXM/LlsxXSxcbiAgICBzZXRFcnJvcjogY29udHJvbC5zZXRFcnJvcixcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgUGFnaW5hYmxlPEkgZXh0ZW5kcyBhbnksIEUgZXh0ZW5kcyBhbnkgPSBhbnk+ID0ge1xuICB1cGRhdGVJdGVtczogKGNiOiAocHJldkl0ZW1zPzogSSkgPT4gVXBkYXRlRXZlbnQ8ST5bXCJpdGVtc1wiXSkgPT4gdm9pZDtcbiAgZ2V0TmV4dFBhZ2U6IChwYWdlU2l6ZTogbnVtYmVyKSA9PiB2b2lkO1xuICByZWZyZXNoQ3VycmVudFBhZ2U6IChwYWdlU2l6ZTogbnVtYmVyKSA9PiB2b2lkO1xuICBnZXRQYWdlOiAocGFnZTogbnVtYmVyLCBwYWdlU2l6ZTogbnVtYmVyKSA9PiB2b2lkO1xuICBnZXRBbGw6ICgpID0+IHZvaWQ7XG4gIHRvdGFsSXRlbXM6ICgpID0+IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgbG9hZGluZzogYm9vbGVhbjtcbiAgZXJyb3I6IEUgfCBFcnJvciB8IHVuZGVmaW5lZDtcbiAgaXRlbXM6IElbXSB8IHVuZGVmaW5lZDtcbiAgc2V0RXJyb3I6IFJldHVyblR5cGU8dHlwZW9mIHVzZUFzeW5jQ29udHJvbD5bXCJzZXRFcnJvclwiXTtcbiAgaWQ6ICgpID0+IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIExvY2FsUGFnaW5hYmxlPEkgZXh0ZW5kcyBhbnksIEUgZXh0ZW5kcyBhbnkgPSBhbnk+ID0gUGFnaW5hYmxlPFxuICBJLFxuICBFXG4+ICYge1xuICBzcmM6IEk7XG59O1xuXG4vKipcbiAqIFRoaXMgcmV0dXJucyBhIHJlZiB0byBiZSBib3VuZCB0byBhbiBlbGVtZW50cyBzbyBpdCBjYW4gYmUgYWJsZSB0byBkZXRlY3Qgd2hlbiBhIHBhZ2luYXRpb24gd2hvdWxkIG9jY3VyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VDb250YWluZXJQYWdpbmF0aW9uKFxuICBjYjogKHBhZ2VTaXplOiBudW1iZXIpID0+IHZvaWQsXG4gIHBhZ2VTaXplOiBudW1iZXIsXG4gIGRpcmVjdGlvbjogXCJoXCIgfCBcInZcIiA9IFwidlwiXG4pIHtcbiAgY29uc3Qgc2Nyb2xsYWJsZVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4odW5kZWZpbmVkKTtcbiAgY29uc3QgY3VzdG9tT3B0aW9uc1JlZiA9XG4gICAgdXNlUmVmPCgpID0+IHsgb2Zmc2V0Qm90dG9tPzogbnVtYmVyOyBvZmZzZXRMZWZ0PzogbnVtYmVyIH0+KHVuZGVmaW5lZCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBlbCA9IHNjcm9sbGFibGVSZWYuY3VycmVudCE7XG4gICAgY29uc3Qgc2Nyb2xsRWxlbWVudCA9XG4gICAgICAoZWwgYXMgdW5rbm93biBhcyB0eXBlb2Ygd2luZG93LmRvY3VtZW50KS5zY3JvbGxpbmdFbGVtZW50IHx8IGVsO1xuICAgIGNvbnN0IGNhbGN1bGF0ZUlmUmVhY2hlZExpbWl0ID0gdGhyb3R0bGUoXG4gICAgICAoZTogRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGUudGFyZ2V0ICE9PSBlbCkgcmV0dXJuO1xuICAgICAgICBjb25zdCB7IG9mZnNldEJvdHRvbSA9IDAsIG9mZnNldExlZnQgPSAwIH0gPVxuICAgICAgICAgIGN1c3RvbU9wdGlvbnNSZWYuY3VycmVudD8uKCkgfHwge307XG4gICAgICAgIGNvbnN0IG9mZnNldExpbWl0ID1cbiAgICAgICAgICBkaXJlY3Rpb24gPT09IFwidlwiXG4gICAgICAgICAgICA/IHNjcm9sbEVsZW1lbnQuc2Nyb2xsSGVpZ2h0IC1cbiAgICAgICAgICAgICAgb2Zmc2V0Qm90dG9tIC1cbiAgICAgICAgICAgICAgc2Nyb2xsRWxlbWVudC5jbGllbnRIZWlnaHQgKiAwLjZcbiAgICAgICAgICAgIDogc2Nyb2xsRWxlbWVudC5zY3JvbGxXaWR0aCAtXG4gICAgICAgICAgICAgIG9mZnNldExlZnQgLVxuICAgICAgICAgICAgICBzY3JvbGxFbGVtZW50LmNsaWVudFdpZHRoICogMC42O1xuICAgICAgICBjb25zdCBvZmZzZXQgPVxuICAgICAgICAgIGRpcmVjdGlvbiA9PT0gXCJ2XCJcbiAgICAgICAgICAgID8gc2Nyb2xsRWxlbWVudC5jbGllbnRIZWlnaHQgKyBzY3JvbGxFbGVtZW50LnNjcm9sbFRvcFxuICAgICAgICAgICAgOiBzY3JvbGxFbGVtZW50LmNsaWVudFdpZHRoICsgc2Nyb2xsRWxlbWVudC5zY3JvbGxMZWZ0O1xuICAgICAgICBpZiAob2Zmc2V0ID49IG9mZnNldExpbWl0KSB7XG4gICAgICAgICAgY2IocGFnZVNpemUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgMjUwLFxuICAgICAge1xuICAgICAgICBsZWFkaW5nOiBmYWxzZSxcbiAgICAgICAgdHJhaWxpbmc6IHRydWUsXG4gICAgICB9XG4gICAgKTtcblxuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgY2FsY3VsYXRlSWZSZWFjaGVkTGltaXQsIHtcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgfSk7XG4gICAgcmV0dXJuICgpID0+IGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgY2FsY3VsYXRlSWZSZWFjaGVkTGltaXQpO1xuICB9LCBbY2IsIHBhZ2VTaXplXSk7XG5cbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxhYmxlUmVmLFxuICAgIGN1c3RvbU9wdGlvbnNSZWYsXG4gIH07XG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiByZWNlaXZlcyBhbiBhbW91bnQgb2YgbG9jYWwgaW5zdGFuY2VzIGFuZCBwYWdpbmF0ZXMgaXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUxvY2FsUGFnaW5hdGlvbjxMPihpdGVtczogTFtdIHwgdW5kZWZpbmVkKSB7XG4gIGNvbnN0IGluc3RhbmNlSUQgPSB1c2VNZW1vKCgpID0+IERhdGUubm93KCksIFtpdGVtc10pO1xuICBjb25zdCBjYiA9IHVzZUNhbGxiYWNrKFxuICAgIChwYWdlOiBudW1iZXIsIHBhZ2VTaXplOiBudW1iZXIgfCBcImFsbFwiLCBjdXJySXRlbXM6IExbXSA9IFtdKSA9PiB7XG4gICAgICBpZiAoIWl0ZW1zKVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgICAgICBmaW5pc2hlZDogZmFsc2UsXG4gICAgICAgICAgdG90YWxJdGVtczogMCxcbiAgICAgICAgICBpdGVtczogW10sXG4gICAgICAgIH0pO1xuICAgICAgaWYgKHBhZ2VTaXplID09PSBcImFsbFwiKSBwYWdlU2l6ZSA9IGl0ZW1zLmxlbmd0aDtcbiAgICAgIGNvbnN0IGZyb20gPSBwYWdlU2l6ZSAqIHBhZ2U7XG4gICAgICBjb25zdCBuZXdBcnJheSA9IFsuLi5jdXJySXRlbXMsIC4uLml0ZW1zLnNsaWNlKGZyb20sIGZyb20gKyBwYWdlU2l6ZSldO1xuXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgICAgZmluaXNoZWQ6IG5ld0FycmF5Lmxlbmd0aCA9PT0gaXRlbXMubGVuZ3RoLFxuICAgICAgICB0b3RhbEl0ZW1zOiBpdGVtcy5sZW5ndGgsXG4gICAgICAgIGl0ZW1zOiBuZXdBcnJheSxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgW2l0ZW1zXVxuICApO1xuICBjb25zdCBwYWdpbmF0aW9uID0gdXNlUGFnaW5hdGlvbjxMPihjYiwgKCkgPT4gYCR7aW5zdGFuY2VJRH1gKTtcbiAgY29uc3QgcGFnU3JjID0gdXNlTWVtbygoKSA9PiBpdGVtcywgW3BhZ2luYXRpb24uaXRlbXNdKTtcblxuICByZXR1cm4ge1xuICAgIC4uLnBhZ2luYXRpb24sXG4gICAgbG9hZGluZzogaXRlbXMgPT09IHVuZGVmaW5lZCxcbiAgICBzcmM6IHBhZ1NyYyxcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFRQSxJQUFBQyxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsU0FBQSxHQUFBRCxzQkFBQSxDQUFB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