@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,24 +1,27 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _exportNames = {};
7
+ Object.defineProperty(exports, "default", {
8
+ enumerable: true,
9
+ get: function () {
10
+ return _OrderableList.default;
11
+ }
12
+ });
13
+ var _OrderableList = _interopRequireWildcard(require("./OrderableList"));
14
+ Object.keys(_OrderableList).forEach(function (key) {
15
+ if (key === "default" || key === "__esModule") return;
16
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
17
+ if (key in exports && exports[key] === _OrderableList[key]) return;
18
+ Object.defineProperty(exports, key, {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _OrderableList[key];
7
22
  }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- var __importDefault = (this && this.__importDefault) || function (mod) {
17
- return (mod && mod.__esModule) ? mod : { "default": mod };
18
- };
19
- Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.default = void 0;
21
- var OrderableList_1 = require("./OrderableList");
22
- Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(OrderableList_1).default; } });
23
- __exportStar(require("./OrderableList"), exports);
24
- //# sourceMappingURL=index.js.map
23
+ });
24
+ });
25
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
26
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
27
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfT3JkZXJhYmxlTGlzdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiX2V4cG9ydE5hbWVzIiwiZXhwb3J0cyIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJkZXNjIiwic2V0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvT3JkZXJhYmxlTGlzdC9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCIuL09yZGVyYWJsZUxpc3RcIjtcbmV4cG9ydCAqIGZyb20gXCIuL09yZGVyYWJsZUxpc3RcIjsiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLGNBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosY0FBQSxFQUFBSyxPQUFBLFdBQUFDLEdBQUE7RUFBQSxJQUFBQSxHQUFBLGtCQUFBQSxHQUFBO0VBQUEsSUFBQUgsTUFBQSxDQUFBSSxTQUFBLENBQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBQyxZQUFBLEVBQUFKLEdBQUE7RUFBQSxJQUFBQSxHQUFBLElBQUFLLE9BQUEsSUFBQUEsT0FBQSxDQUFBTCxHQUFBLE1BQUFOLGNBQUEsQ0FBQU0sR0FBQTtFQUFBSCxNQUFBLENBQUFTLGNBQUEsQ0FBQUQsT0FBQSxFQUFBTCxHQUFBO0lBQUFPLFVBQUE7SUFBQUMsR0FBQSxXQUFBQSxDQUFBO01BQUEsT0FBQWQsY0FBQSxDQUFBTSxHQUFBO0lBQUE7RUFBQTtBQUFBO0FBQWdDLFNBQUFTLHlCQUFBQyxXQUFBLGVBQUFDLE9BQUEsa0NBQUFDLGlCQUFBLE9BQUFELE9BQUEsUUFBQUUsZ0JBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSxDQUFBQyxXQUFBLFdBQUFBLFdBQUEsR0FBQUcsZ0JBQUEsR0FBQUQsaUJBQUEsS0FBQUYsV0FBQTtBQUFBLFNBQUFmLHdCQUFBbUIsR0FBQSxFQUFBSixXQUFBLFNBQUFBLFdBQUEsSUFBQUksR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsV0FBQUQsR0FBQSxRQUFBQSxHQUFBLG9CQUFBQSxHQUFBLHdCQUFBQSxHQUFBLDRCQUFBRSxPQUFBLEVBQUFGLEdBQUEsVUFBQUcsS0FBQSxHQUFBUix3QkFBQSxDQUFBQyxXQUFBLE9BQUFPLEtBQUEsSUFBQUEsS0FBQSxDQUFBQyxHQUFBLENBQUFKLEdBQUEsWUFBQUcsS0FBQSxDQUFBVCxHQUFBLENBQUFNLEdBQUEsU0FBQUssTUFBQSxXQUFBQyxxQkFBQSxHQUFBdkIsTUFBQSxDQUFBUyxjQUFBLElBQUFULE1BQUEsQ0FBQXdCLHdCQUFBLFdBQUFyQixHQUFBLElBQUFjLEdBQUEsUUFBQWQsR0FBQSxrQkFBQUgsTUFBQSxDQUFBSSxTQUFBLENBQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBVyxHQUFBLEVBQUFkLEdBQUEsU0FBQXNCLElBQUEsR0FBQUYscUJBQUEsR0FBQXZCLE1BQUEsQ0FBQXdCLHdCQUFBLENBQUFQLEdBQUEsRUFBQWQsR0FBQSxjQUFBc0IsSUFBQSxLQUFBQSxJQUFBLENBQUFkLEdBQUEsSUFBQWMsSUFBQSxDQUFBQyxHQUFBLEtBQUExQixNQUFBLENBQUFTLGNBQUEsQ0FBQWEsTUFBQSxFQUFBbkIsR0FBQSxFQUFBc0IsSUFBQSxZQUFBSCxNQUFBLENBQUFuQixHQUFBLElBQUFjLEdBQUEsQ0FBQWQsR0FBQSxTQUFBbUIsTUFBQSxDQUFBSCxPQUFBLEdBQUFGLEdBQUEsTUFBQUcsS0FBQSxJQUFBQSxLQUFBLENBQUFNLEdBQUEsQ0FBQVQsR0FBQSxFQUFBSyxNQUFBLFlBQUFBLE1BQUEifQ==
@@ -1,208 +1,253 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AnimatedPaginationIndicator = exports.PaginationIndicatorView = exports.PaginationIndicatorMode = void 0;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- const react_1 = require("react");
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.AnimatedPaginationIndicator = AnimatedPaginationIndicator;
7
+ exports.PaginationIndicatorMode = void 0;
8
+ exports.PaginationIndicatorView = PaginationIndicatorView;
9
+ exports.default = void 0;
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ 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); }
12
+ 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; }
13
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
6
14
  const MAX_BALLS = 7;
7
15
  const eachBallWidthEm = 1.2;
8
16
  const CENTER_GUIDE_BALL = 1;
9
- var PaginationIndicatorMode;
10
- (function (PaginationIndicatorMode) {
11
- /** This will make the guide ball be kept on center */
12
- PaginationIndicatorMode[PaginationIndicatorMode["CENTERED"] = 0] = "CENTERED";
13
- /** This will make the guide ball move, while the indicator balls keep in place */
14
- PaginationIndicatorMode[PaginationIndicatorMode["START"] = 1] = "START";
15
- })(PaginationIndicatorMode || (exports.PaginationIndicatorMode = PaginationIndicatorMode = {}));
16
- function PaginationIndicatorView({ size, page: currentPage, pages: decimalPages, className, onClickPage, mode = PaginationIndicatorMode.CENTERED, infinite, }) {
17
- const maxBalls = (0, react_1.useMemo)(() => (infinite ? 5 : MAX_BALLS), [infinite]);
18
- const page = (0, react_1.useMemo)(() => {
19
- const floor = Math.floor(decimalPages);
20
- const modulus = decimalPages % floor;
21
- if (currentPage > floor) {
22
- const currentFloorModulus = currentPage % floor;
23
- const equivalent = (currentFloorModulus * 100) / modulus;
24
- return floor + equivalent / 100;
25
- }
26
- else {
27
- return currentPage;
28
- }
29
- }, [currentPage, decimalPages]);
30
- const rand = (0, react_1.useMemo)(() => Math.random().toString(), []);
31
- const pageIndex = page - 1;
32
- const pages = (0, react_1.useMemo)(() => Math.ceil(decimalPages), [decimalPages]);
33
- const numBalls = (0, react_1.useMemo)(() => {
34
- const numBalls = pages >= maxBalls ? maxBalls : Math.ceil(pages);
35
- return numBalls;
36
- }, [pages]);
37
- const indexForTheBallsCenter = (0, react_1.useMemo)(() => (infinite ? numBalls - 5 : numBalls - 1) / 2, [numBalls, infinite]);
38
- const balls = (0, react_1.useMemo)(() => {
39
- const indexForLastPages = pages + 1 - indexForTheBallsCenter;
40
- /**
41
- * Is the page index (position of the center)
42
- * after the first pages and
43
- * before the last pages */
44
- const isCenterPage = numBalls >= maxBalls &&
45
- pageIndex > indexForTheBallsCenter &&
46
- pageIndex < indexForLastPages - 1;
47
- let modulus = pageIndex %
48
- (1 + (indexForTheBallsCenter - Math.floor(indexForTheBallsCenter)));
49
- const resetPageIndex = isCenterPage
50
- ? indexForTheBallsCenter + modulus
51
- : pages < maxBalls
52
- ? pageIndex
53
- : pageIndex >= indexForLastPages - 1
54
- ? numBalls - (pages - pageIndex)
55
- : pageIndex;
56
- const left = eachBallWidthEm * resetPageIndex;
57
- const { pushBallsToRightBy, pushBallsToLeftBy, pushGuideToRightBy } = mode === PaginationIndicatorMode.CENTERED
58
- ? {
59
- pushBallsToRightBy: Math.min(pages, maxBalls) * eachBallWidthEm,
60
- pushBallsToLeftBy: left,
61
- pushGuideToRightBy: 0,
62
- }
63
- : {
64
- pushBallsToRightBy: (eachBallWidthEm - 0.5) / 2,
65
- pushBallsToLeftBy: 0,
66
- pushGuideToRightBy: left,
67
- };
68
- let pushToLeft = 0;
69
- return new Array(CENTER_GUIDE_BALL + numBalls)
70
- .fill(undefined)
71
- .map((_, i) => {
72
- const isLastBall = i === numBalls - 1;
73
- const isFirstBall = i === 0;
74
- if (i === numBalls) {
75
- const diameter = 0.45 * 2;
76
- const padding = (eachBallWidthEm - diameter) / 2;
77
- return ((0, jsx_runtime_1.jsx)("rect", { fill: "#fff", width: `${diameter}em`, height: `${diameter}em`, x: `${pushBallsToRightBy - padding + pushGuideToRightBy - pushToLeft}em`, y: `${padding}em`, rx: `${diameter / 2}em` }));
78
- }
79
- const ballSize = numBalls < maxBalls
80
- ? 0.5
81
- : page <= indexForTheBallsCenter + 1 && isLastBall
82
- ? 0
83
- : pageIndex >= indexForLastPages - 1 && isFirstBall
84
- ? 0
85
- : isCenterPage
86
- ? isFirstBall
87
- ? 0.5 - modulus * 0.5
88
- : isLastBall
89
- ? modulus * 0.5
90
- : 0.5
91
- : 0.5;
92
- if (i === 0 && mode === PaginationIndicatorMode.START)
93
- pushToLeft = (0.5 - ballSize) * 2.4;
94
- return ((0, jsx_runtime_1.jsx)("rect", { width: `${ballSize * 1.2}em`, height: `${ballSize * 1.2}em`, x: `${pushBallsToRightBy +
95
- i * eachBallWidthEm -
96
- pushBallsToLeftBy -
97
- pushToLeft}em`, y: `${(eachBallWidthEm - ballSize * 1.2) / 2}em`, rx: `${(ballSize * 1.2) / 2}em`, onClick: () => {
98
- if (onClickPage) {
99
- const pageClicked = (!isCenterPage
100
- ? pageIndex >= indexForLastPages - 1
101
- ? Math.floor(page) - resetPageIndex - 1
102
- : 0
103
- : Math.floor(page) - (indexForTheBallsCenter + 1)) +
104
- 1 +
105
- i;
106
- onClickPage(Math.round(pageClicked));
107
- }
108
- } }, `guide-${i}`));
17
+ let PaginationIndicatorMode = exports.PaginationIndicatorMode = /*#__PURE__*/function (PaginationIndicatorMode) {
18
+ PaginationIndicatorMode[PaginationIndicatorMode["CENTERED"] = 0] = "CENTERED";
19
+ PaginationIndicatorMode[PaginationIndicatorMode["START"] = 1] = "START";
20
+ return PaginationIndicatorMode;
21
+ }({});
22
+ function PaginationIndicatorView(_ref) {
23
+ let {
24
+ size,
25
+ page: currentPage,
26
+ pages: decimalPages,
27
+ className,
28
+ onClickPage,
29
+ mode = PaginationIndicatorMode.CENTERED,
30
+ infinite
31
+ } = _ref;
32
+ const maxBalls = (0, _react.useMemo)(() => infinite ? 5 : MAX_BALLS, [infinite]);
33
+ const page = (0, _react.useMemo)(() => {
34
+ const floor = Math.floor(decimalPages);
35
+ const modulus = decimalPages % floor;
36
+ if (currentPage > floor) {
37
+ const currentFloorModulus = currentPage % floor;
38
+ const equivalent = currentFloorModulus * 100 / modulus;
39
+ return floor + equivalent / 100;
40
+ } else {
41
+ return currentPage;
42
+ }
43
+ }, [currentPage, decimalPages]);
44
+ const rand = (0, _react.useMemo)(() => Math.random().toString(), []);
45
+ const pageIndex = page - 1;
46
+ const pages = (0, _react.useMemo)(() => Math.ceil(decimalPages), [decimalPages]);
47
+ const numBalls = (0, _react.useMemo)(() => {
48
+ const numBalls = pages >= maxBalls ? maxBalls : Math.ceil(pages);
49
+ return numBalls;
50
+ }, [pages]);
51
+ const indexForTheBallsCenter = (0, _react.useMemo)(() => (infinite ? numBalls - 5 : numBalls - 1) / 2, [numBalls, infinite]);
52
+ const balls = (0, _react.useMemo)(() => {
53
+ const indexForLastPages = pages + 1 - indexForTheBallsCenter;
54
+ /**
55
+ * Is the page index (position of the center)
56
+ * after the first pages and
57
+ * before the last pages */
58
+ const isCenterPage = numBalls >= maxBalls && pageIndex > indexForTheBallsCenter && pageIndex < indexForLastPages - 1;
59
+ let modulus = pageIndex % (1 + (indexForTheBallsCenter - Math.floor(indexForTheBallsCenter)));
60
+ const resetPageIndex = isCenterPage ? indexForTheBallsCenter + modulus : pages < maxBalls ? pageIndex : pageIndex >= indexForLastPages - 1 ? numBalls - (pages - pageIndex) : pageIndex;
61
+ const left = eachBallWidthEm * resetPageIndex;
62
+ const {
63
+ pushBallsToRightBy,
64
+ pushBallsToLeftBy,
65
+ pushGuideToRightBy
66
+ } = mode === PaginationIndicatorMode.CENTERED ? {
67
+ pushBallsToRightBy: Math.min(pages, maxBalls) * eachBallWidthEm,
68
+ pushBallsToLeftBy: left,
69
+ pushGuideToRightBy: 0
70
+ } : {
71
+ pushBallsToRightBy: (eachBallWidthEm - 0.5) / 2,
72
+ pushBallsToLeftBy: 0,
73
+ pushGuideToRightBy: left
74
+ };
75
+ let pushToLeft = 0;
76
+ return new Array(CENTER_GUIDE_BALL + numBalls).fill(undefined).map((_, i) => {
77
+ const isLastBall = i === numBalls - 1;
78
+ const isFirstBall = i === 0;
79
+ if (i === numBalls) {
80
+ const diameter = 0.45 * 2;
81
+ const padding = (eachBallWidthEm - diameter) / 2;
82
+ return /*#__PURE__*/_react.default.createElement("rect", {
83
+ fill: "#fff",
84
+ width: "".concat(diameter, "em"),
85
+ height: "".concat(diameter, "em"),
86
+ x: "".concat(pushBallsToRightBy - padding + pushGuideToRightBy - pushToLeft, "em"),
87
+ y: "".concat(padding, "em"),
88
+ rx: "".concat(diameter / 2, "em")
109
89
  });
110
- }, [indexForTheBallsCenter, pageIndex, pages]);
111
- const [guideBall, ...pageBalls] = balls.reverse();
112
- let width = eachBallWidthEm * Math.min(pages, maxBalls) * 2;
113
- if (mode === PaginationIndicatorMode.START)
114
- width /= 2;
115
- return ((0, jsx_runtime_1.jsxs)("svg", { version: "1.1", xmlns: "http://www.w3.org/2000/svg", className: className, style: {
116
- width: `${width}em`,
117
- minWidth: `${width}em`,
118
- height: "1.2em",
119
- fontSize: `${size}px`,
120
- }, children: [(0, jsx_runtime_1.jsxs)("filter", { id: `goo-${rand}`, children: [(0, jsx_runtime_1.jsx)("feGaussianBlur", { in: "SourceGraphic", result: "blur", stdDeviation: "5" }), (0, jsx_runtime_1.jsx)("feColorMatrix", { in: "blur", mode: "matrix", values: "1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 18 -7", result: "goo" }), (0, jsx_runtime_1.jsx)("feBlend", { in2: "goo", in: "SourceGraphic", result: "mix" })] }), (0, jsx_runtime_1.jsx)("mask", { id: `mask-${rand}`, children: (0, jsx_runtime_1.jsxs)("g", { filter: `url(#${`goo-${rand}`})`, fill: "#fff", children: [[pageBalls], guideBall] }) }), (0, jsx_runtime_1.jsx)("rect", { x: "0", y: "0", mask: `url(#${`mask-${rand}`})`, width: "100%", height: "100%", style: { fill: "var(--digital-blue)" } }), onClickPage && ((0, jsx_runtime_1.jsx)("g", { opacity: 0, style: { cursor: "pointer" }, children: pageBalls }))] }));
90
+ }
91
+ const ballSize = numBalls < maxBalls ? 0.5 : page <= indexForTheBallsCenter + 1 && isLastBall ? 0 : pageIndex >= indexForLastPages - 1 && isFirstBall ? 0 : isCenterPage ? isFirstBall ? 0.5 - modulus * 0.5 : isLastBall ? modulus * 0.5 : 0.5 : 0.5;
92
+ if (i === 0 && mode === PaginationIndicatorMode.START) pushToLeft = (0.5 - ballSize) * 2.4;
93
+ return /*#__PURE__*/_react.default.createElement("rect", {
94
+ key: "guide-".concat(i),
95
+ width: "".concat(ballSize * 1.2, "em"),
96
+ height: "".concat(ballSize * 1.2, "em"),
97
+ x: "".concat(pushBallsToRightBy + i * eachBallWidthEm - pushBallsToLeftBy - pushToLeft, "em"),
98
+ y: "".concat((eachBallWidthEm - ballSize * 1.2) / 2, "em"),
99
+ rx: "".concat(ballSize * 1.2 / 2, "em"),
100
+ onClick: () => {
101
+ if (onClickPage) {
102
+ const pageClicked = (!isCenterPage ? pageIndex >= indexForLastPages - 1 ? Math.floor(page) - resetPageIndex - 1 : 0 : Math.floor(page) - (indexForTheBallsCenter + 1)) + 1 + i;
103
+ onClickPage(Math.round(pageClicked));
104
+ }
105
+ }
106
+ });
107
+ });
108
+ }, [indexForTheBallsCenter, pageIndex, pages]);
109
+ const [guideBall, ...pageBalls] = balls.reverse();
110
+ let width = eachBallWidthEm * Math.min(pages, maxBalls) * 2;
111
+ if (mode === PaginationIndicatorMode.START) width /= 2;
112
+ return /*#__PURE__*/_react.default.createElement("svg", {
113
+ version: "1.1",
114
+ xmlns: "http://www.w3.org/2000/svg",
115
+ className: className,
116
+ style: {
117
+ width: "".concat(width, "em"),
118
+ minWidth: "".concat(width, "em"),
119
+ height: "1.2em",
120
+ fontSize: "".concat(size, "px")
121
+ }
122
+ }, /*#__PURE__*/_react.default.createElement("filter", {
123
+ id: "goo-".concat(rand)
124
+ }, /*#__PURE__*/_react.default.createElement("feGaussianBlur", {
125
+ in: "SourceGraphic",
126
+ result: "blur",
127
+ stdDeviation: "5"
128
+ }), /*#__PURE__*/_react.default.createElement("feColorMatrix", {
129
+ in: "blur",
130
+ mode: "matrix",
131
+ values: "1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 18 -7",
132
+ result: "goo"
133
+ }), /*#__PURE__*/_react.default.createElement("feBlend", {
134
+ in2: "goo",
135
+ in: "SourceGraphic",
136
+ result: "mix"
137
+ })), /*#__PURE__*/_react.default.createElement("mask", {
138
+ id: "mask-".concat(rand)
139
+ }, /*#__PURE__*/_react.default.createElement("g", {
140
+ filter: "url(#".concat("goo-".concat(rand), ")"),
141
+ fill: "#fff"
142
+ }, [pageBalls], guideBall)), /*#__PURE__*/_react.default.createElement("rect", {
143
+ x: "0",
144
+ y: "0",
145
+ mask: "url(#".concat("mask-".concat(rand), ")"),
146
+ width: "100%",
147
+ height: "100%",
148
+ style: {
149
+ fill: "var(--digital-blue)"
150
+ }
151
+ }), onClickPage && /*#__PURE__*/_react.default.createElement("g", {
152
+ opacity: 0,
153
+ style: {
154
+ cursor: "pointer"
155
+ }
156
+ }, pageBalls));
121
157
  }
122
- exports.PaginationIndicatorView = PaginationIndicatorView;
123
158
  function AnimatedPaginationIndicator(props) {
124
- const prevPage = (0, react_1.useRef)(props.page);
125
- const [pageProgress, setPageProgress] = (0, react_1.useState)(props.page);
126
- (0, react_1.useEffect)(() => {
127
- const diff = props.page - prevPage.current;
128
- const diffPerStep = diff / 60;
129
- const interval = setInterval(() => {
130
- setPageProgress((prev) => {
131
- const next = prev + diffPerStep;
132
- if (diff < 0) {
133
- if (next <= props.page) {
134
- clearInterval(interval);
135
- return props.page;
136
- }
137
- }
138
- else {
139
- if (next >= props.page) {
140
- clearInterval(interval);
141
- return props.page;
142
- }
143
- }
144
- return Number(next.toFixed(2));
145
- });
146
- }, props.duration / 60);
147
- return () => {
148
- prevPage.current = props.page;
159
+ const prevPage = (0, _react.useRef)(props.page);
160
+ const [pageProgress, setPageProgress] = (0, _react.useState)(props.page);
161
+ (0, _react.useEffect)(() => {
162
+ const diff = props.page - prevPage.current;
163
+ const diffPerStep = diff / 60;
164
+ const interval = setInterval(() => {
165
+ setPageProgress(prev => {
166
+ const next = prev + diffPerStep;
167
+ if (diff < 0) {
168
+ if (next <= props.page) {
149
169
  clearInterval(interval);
150
- };
151
- }, [props.page]);
152
- return (0, jsx_runtime_1.jsx)(PaginationIndicatorView, Object.assign({}, props, { page: pageProgress }));
153
- }
154
- exports.AnimatedPaginationIndicator = AnimatedPaginationIndicator;
155
- function _PaginationIndicator({ scrollableRef, estimatedWidth, size, className = "", onClickPage, mode, infinite, }, ref) {
156
- const [currentPage, setCurrentPage] = (0, react_1.useState)(1);
157
- const [defs, setDefs] = (0, react_1.useState)();
158
- const refreshPages = (0, react_1.useCallback)(() => {
159
- if (!scrollableRef.current)
160
- return;
161
- const maxWidth = estimatedWidth === undefined
162
- ? scrollableRef.current.scrollWidth
163
- : estimatedWidth;
164
- const pages = maxWidth / scrollableRef.current.clientWidth;
165
- if (pages > 1)
166
- setDefs({
167
- pages: infinite ? pages + 2 : pages,
168
- });
169
- }, [estimatedWidth, infinite]);
170
- (0, react_1.useEffect)(() => refreshPages(), [refreshPages]);
171
- const updatePageIndicators = (0, react_1.useCallback)((target, pages) => {
172
- if (!scrollableRef.current)
173
- return;
174
- const eachPageWidth = scrollableRef.current.clientWidth;
175
- const page = 1 + target.scrollLeft / eachPageWidth;
176
- const lastPageProgress = Math.floor(pages) + 1;
177
- const maximumProgress = pages + 1;
178
- const diffToMax = maximumProgress - lastPageProgress;
179
- const currentProgressOnDiff = page - lastPageProgress;
180
- if (page > lastPageProgress) {
181
- const p = lastPageProgress + currentProgressOnDiff / diffToMax;
182
- setCurrentPage(p);
170
+ return props.page;
171
+ }
172
+ } else {
173
+ if (next >= props.page) {
174
+ clearInterval(interval);
175
+ return props.page;
176
+ }
183
177
  }
184
- else
185
- setCurrentPage(page);
186
- }, []);
187
- (0, react_1.useImperativeHandle)(ref, () => ({
188
- refreshPages,
189
- }), []);
190
- (0, react_1.useEffect)(() => {
191
- if (!defs)
192
- return;
193
- const el = scrollableRef.current;
194
- const onScroll = (e) => updatePageIndicators(e.currentTarget, defs.pages);
195
- updatePageIndicators(el, defs.pages);
196
- el.addEventListener("scroll", onScroll, {
197
- passive: true,
198
- });
199
- return () => {
200
- el.removeEventListener("scroll", onScroll);
201
- };
202
- }, [defs]);
203
- const pages = (0, react_1.useMemo)(() => (defs ? defs.pages : undefined), [defs]);
204
- return !pages ? null : ((0, jsx_runtime_1.jsx)(PaginationIndicatorView, { pages: pages, page: currentPage, size: size, className: className, onClickPage: onClickPage, mode: mode, infinite: infinite }));
178
+ return Number(next.toFixed(2));
179
+ });
180
+ }, props.duration / 60);
181
+ return () => {
182
+ prevPage.current = props.page;
183
+ clearInterval(interval);
184
+ };
185
+ }, [props.page]);
186
+ return /*#__PURE__*/_react.default.createElement(PaginationIndicatorView, _extends({}, props, {
187
+ page: pageProgress
188
+ }));
189
+ }
190
+ function _PaginationIndicator(_ref2, ref) {
191
+ let {
192
+ scrollableRef,
193
+ estimatedWidth,
194
+ size,
195
+ className = "",
196
+ onClickPage,
197
+ mode,
198
+ infinite
199
+ } = _ref2;
200
+ const [currentPage, setCurrentPage] = (0, _react.useState)(1);
201
+ const [defs, setDefs] = (0, _react.useState)();
202
+ const refreshPages = (0, _react.useCallback)(() => {
203
+ if (!scrollableRef.current) return;
204
+ const maxWidth = estimatedWidth === undefined ? scrollableRef.current.scrollWidth : estimatedWidth;
205
+ const pages = maxWidth / scrollableRef.current.clientWidth;
206
+ if (pages > 1) setDefs({
207
+ pages: infinite ? pages + 2 : pages
208
+ });
209
+ }, [estimatedWidth, infinite]);
210
+ (0, _react.useEffect)(() => refreshPages(), [refreshPages]);
211
+ const updatePageIndicators = (0, _react.useCallback)((target, pages) => {
212
+ if (!scrollableRef.current) return;
213
+ const eachPageWidth = scrollableRef.current.clientWidth;
214
+ const page = 1 + target.scrollLeft / eachPageWidth;
215
+ const lastPageProgress = Math.floor(pages) + 1;
216
+ const maximumProgress = pages + 1;
217
+ const diffToMax = maximumProgress - lastPageProgress;
218
+ const currentProgressOnDiff = page - lastPageProgress;
219
+ if (page > lastPageProgress) {
220
+ const p = lastPageProgress + currentProgressOnDiff / diffToMax;
221
+ setCurrentPage(p);
222
+ } else setCurrentPage(page);
223
+ }, []);
224
+ (0, _react.useImperativeHandle)(ref, () => ({
225
+ refreshPages
226
+ }), []);
227
+ (0, _react.useEffect)(() => {
228
+ if (!defs) return;
229
+ const el = scrollableRef.current;
230
+ const onScroll = e => updatePageIndicators(e.currentTarget, defs.pages);
231
+ updatePageIndicators(el, defs.pages);
232
+ el.addEventListener("scroll", onScroll, {
233
+ passive: true
234
+ });
235
+ return () => {
236
+ el.removeEventListener("scroll", onScroll);
237
+ };
238
+ }, [defs]);
239
+ const pages = (0, _react.useMemo)(() => defs ? defs.pages : undefined, [defs]);
240
+ return !pages ? null : /*#__PURE__*/_react.default.createElement(PaginationIndicatorView, {
241
+ pages: pages,
242
+ page: currentPage,
243
+ size: size,
244
+ className: className,
245
+ onClickPage: onClickPage,
246
+ mode: mode,
247
+ infinite: infinite
248
+ });
205
249
  }
250
+
206
251
  /**
207
252
  * A cool component to indicate how many pages are
208
253
  **/
@@ -211,6 +256,6 @@ function _PaginationIndicator({ scrollableRef, estimatedWidth, size, className =
211
256
  * and total number of pages using animated circular indicators.
212
257
  * It updates visually when scrolling through pages.
213
258
  */
214
- const PaginationIndicator = (0, react_1.forwardRef)(_PaginationIndicator);
215
- exports.default = PaginationIndicator;
216
- //# sourceMappingURL=PaginationIndicator.js.map
259
+ const PaginationIndicator = /*#__PURE__*/(0, _react.forwardRef)(_PaginationIndicator);
260
+ var _default = exports.default = PaginationIndicator;
261
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImFwcGx5IiwiTUFYX0JBTExTIiwiZWFjaEJhbGxXaWR0aEVtIiwiQ0VOVEVSX0dVSURFX0JBTEwiLCJQYWdpbmF0aW9uSW5kaWNhdG9yTW9kZSIsImV4cG9ydHMiLCJQYWdpbmF0aW9uSW5kaWNhdG9yVmlldyIsIl9yZWYiLCJzaXplIiwicGFnZSIsImN1cnJlbnRQYWdlIiwicGFnZXMiLCJkZWNpbWFsUGFnZXMiLCJjbGFzc05hbWUiLCJvbkNsaWNrUGFnZSIsIm1vZGUiLCJDRU5URVJFRCIsImluZmluaXRlIiwibWF4QmFsbHMiLCJ1c2VNZW1vIiwiZmxvb3IiLCJNYXRoIiwibW9kdWx1cyIsImN1cnJlbnRGbG9vck1vZHVsdXMiLCJlcXVpdmFsZW50IiwicmFuZCIsInJhbmRvbSIsInRvU3RyaW5nIiwicGFnZUluZGV4IiwiY2VpbCIsIm51bUJhbGxzIiwiaW5kZXhGb3JUaGVCYWxsc0NlbnRlciIsImJhbGxzIiwiaW5kZXhGb3JMYXN0UGFnZXMiLCJpc0NlbnRlclBhZ2UiLCJyZXNldFBhZ2VJbmRleCIsImxlZnQiLCJwdXNoQmFsbHNUb1JpZ2h0QnkiLCJwdXNoQmFsbHNUb0xlZnRCeSIsInB1c2hHdWlkZVRvUmlnaHRCeSIsIm1pbiIsInB1c2hUb0xlZnQiLCJBcnJheSIsImZpbGwiLCJ1bmRlZmluZWQiLCJtYXAiLCJfIiwiaXNMYXN0QmFsbCIsImlzRmlyc3RCYWxsIiwiZGlhbWV0ZXIiLCJwYWRkaW5nIiwiY3JlYXRlRWxlbWVudCIsIndpZHRoIiwiY29uY2F0IiwiaGVpZ2h0IiwieCIsInkiLCJyeCIsImJhbGxTaXplIiwiU1RBUlQiLCJvbkNsaWNrIiwicGFnZUNsaWNrZWQiLCJyb3VuZCIsImd1aWRlQmFsbCIsInBhZ2VCYWxscyIsInJldmVyc2UiLCJ2ZXJzaW9uIiwieG1sbnMiLCJzdHlsZSIsIm1pbldpZHRoIiwiZm9udFNpemUiLCJpZCIsImluIiwicmVzdWx0Iiwic3RkRGV2aWF0aW9uIiwidmFsdWVzIiwiaW4yIiwiZmlsdGVyIiwibWFzayIsIm9wYWNpdHkiLCJjdXJzb3IiLCJBbmltYXRlZFBhZ2luYXRpb25JbmRpY2F0b3IiLCJwcm9wcyIsInByZXZQYWdlIiwidXNlUmVmIiwicGFnZVByb2dyZXNzIiwic2V0UGFnZVByb2dyZXNzIiwidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJkaWZmIiwiY3VycmVudCIsImRpZmZQZXJTdGVwIiwiaW50ZXJ2YWwiLCJzZXRJbnRlcnZhbCIsInByZXYiLCJuZXh0IiwiY2xlYXJJbnRlcnZhbCIsIk51bWJlciIsInRvRml4ZWQiLCJkdXJhdGlvbiIsIl9QYWdpbmF0aW9uSW5kaWNhdG9yIiwiX3JlZjIiLCJyZWYiLCJzY3JvbGxhYmxlUmVmIiwiZXN0aW1hdGVkV2lkdGgiLCJzZXRDdXJyZW50UGFnZSIsImRlZnMiLCJzZXREZWZzIiwicmVmcmVzaFBhZ2VzIiwidXNlQ2FsbGJhY2siLCJtYXhXaWR0aCIsInNjcm9sbFdpZHRoIiwiY2xpZW50V2lkdGgiLCJ1cGRhdGVQYWdlSW5kaWNhdG9ycyIsImVhY2hQYWdlV2lkdGgiLCJzY3JvbGxMZWZ0IiwibGFzdFBhZ2VQcm9ncmVzcyIsIm1heGltdW1Qcm9ncmVzcyIsImRpZmZUb01heCIsImN1cnJlbnRQcm9ncmVzc09uRGlmZiIsInAiLCJ1c2VJbXBlcmF0aXZlSGFuZGxlIiwiZWwiLCJvblNjcm9sbCIsImUiLCJjdXJyZW50VGFyZ2V0IiwiYWRkRXZlbnRMaXN0ZW5lciIsInBhc3NpdmUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiUGFnaW5hdGlvbkluZGljYXRvciIsImZvcndhcmRSZWYiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1BhZ2luYXRpb25JbmRpY2F0b3IvUGFnaW5hdGlvbkluZGljYXRvci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7XG4gIENvbXBvbmVudFByb3BzLFxuICBGb3J3YXJkZWRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIFJlZk9iamVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZSxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcInJlYWN0XCI7XG5cbmNvbnN0IE1BWF9CQUxMUyA9IDc7XG5jb25zdCBlYWNoQmFsbFdpZHRoRW0gPSAxLjI7XG5cbmNvbnN0IENFTlRFUl9HVUlERV9CQUxMID0gMTtcblxuZXhwb3J0IGVudW0gUGFnaW5hdGlvbkluZGljYXRvck1vZGUge1xuICAvKiogVGhpcyB3aWxsIG1ha2UgdGhlIGd1aWRlIGJhbGwgYmUga2VwdCBvbiBjZW50ZXIgICovXG4gIENFTlRFUkVELFxuXG4gIC8qKiBUaGlzIHdpbGwgbWFrZSB0aGUgZ3VpZGUgYmFsbCBtb3ZlLCB3aGlsZSB0aGUgaW5kaWNhdG9yIGJhbGxzIGtlZXAgaW4gcGxhY2UgKi9cbiAgU1RBUlQsXG59XG5leHBvcnQgZnVuY3Rpb24gUGFnaW5hdGlvbkluZGljYXRvclZpZXcoe1xuICBzaXplLFxuICBwYWdlOiBjdXJyZW50UGFnZSxcbiAgcGFnZXM6IGRlY2ltYWxQYWdlcyxcbiAgY2xhc3NOYW1lLFxuICBvbkNsaWNrUGFnZSxcbiAgbW9kZSA9IFBhZ2luYXRpb25JbmRpY2F0b3JNb2RlLkNFTlRFUkVELFxuICBpbmZpbml0ZSxcbn06IHtcbiAgc2l6ZTogbnVtYmVyO1xuICBwYWdlOiBudW1iZXI7XG4gIHBhZ2VzOiBudW1iZXI7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgb25DbGlja1BhZ2U/OiAocGFnZTogbnVtYmVyKSA9PiB2b2lkO1xuICBtb2RlPzogUGFnaW5hdGlvbkluZGljYXRvck1vZGU7XG4gIGluZmluaXRlPzogYm9vbGVhbjtcbn0pIHtcbiAgY29uc3QgbWF4QmFsbHMgPSB1c2VNZW1vKCgpID0+IChpbmZpbml0ZSA/IDUgOiBNQVhfQkFMTFMpLCBbaW5maW5pdGVdKTtcbiAgY29uc3QgcGFnZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGZsb29yID0gTWF0aC5mbG9vcihkZWNpbWFsUGFnZXMpO1xuICAgIGNvbnN0IG1vZHVsdXMgPSBkZWNpbWFsUGFnZXMgJSBmbG9vcjtcblxuICAgIGlmIChjdXJyZW50UGFnZSA+IGZsb29yKSB7XG4gICAgICBjb25zdCBjdXJyZW50Rmxvb3JNb2R1bHVzID0gY3VycmVudFBhZ2UgJSBmbG9vcjtcbiAgICAgIGNvbnN0IGVxdWl2YWxlbnQgPSAoY3VycmVudEZsb29yTW9kdWx1cyAqIDEwMCkgLyBtb2R1bHVzO1xuXG4gICAgICByZXR1cm4gZmxvb3IgKyBlcXVpdmFsZW50IC8gMTAwO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY3VycmVudFBhZ2U7XG4gICAgfVxuICB9LCBbY3VycmVudFBhZ2UsIGRlY2ltYWxQYWdlc10pO1xuICBjb25zdCByYW5kID0gdXNlTWVtbygoKSA9PiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKCksIFtdKTtcbiAgY29uc3QgcGFnZUluZGV4ID0gcGFnZSAtIDE7XG4gIGNvbnN0IHBhZ2VzID0gdXNlTWVtbygoKSA9PiBNYXRoLmNlaWwoZGVjaW1hbFBhZ2VzKSwgW2RlY2ltYWxQYWdlc10pO1xuICBjb25zdCBudW1CYWxscyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IG51bUJhbGxzID0gcGFnZXMgPj0gbWF4QmFsbHMgPyBtYXhCYWxscyA6IE1hdGguY2VpbChwYWdlcyk7XG5cbiAgICByZXR1cm4gbnVtQmFsbHM7XG4gIH0sIFtwYWdlc10pO1xuXG4gIGNvbnN0IGluZGV4Rm9yVGhlQmFsbHNDZW50ZXIgPSB1c2VNZW1vKFxuICAgICgpID0+IChpbmZpbml0ZSA/IG51bUJhbGxzIC0gNSA6IG51bUJhbGxzIC0gMSkgLyAyLFxuICAgIFtudW1CYWxscywgaW5maW5pdGVdXG4gICk7XG4gIGNvbnN0IGJhbGxzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgaW5kZXhGb3JMYXN0UGFnZXMgPSBwYWdlcyArIDEgLSBpbmRleEZvclRoZUJhbGxzQ2VudGVyO1xuICAgIC8qKlxuICAgICAqIElzIHRoZSBwYWdlIGluZGV4IChwb3NpdGlvbiBvZiB0aGUgY2VudGVyKVxuICAgICAqIGFmdGVyIHRoZSBmaXJzdCBwYWdlcyBhbmRcbiAgICAgKiBiZWZvcmUgdGhlIGxhc3QgcGFnZXMgKi9cbiAgICBjb25zdCBpc0NlbnRlclBhZ2UgPVxuICAgICAgbnVtQmFsbHMgPj0gbWF4QmFsbHMgJiZcbiAgICAgIHBhZ2VJbmRleCA+IGluZGV4Rm9yVGhlQmFsbHNDZW50ZXIgJiZcbiAgICAgIHBhZ2VJbmRleCA8IGluZGV4Rm9yTGFzdFBhZ2VzIC0gMTtcbiAgICBsZXQgbW9kdWx1cyA9XG4gICAgICBwYWdlSW5kZXggJVxuICAgICAgKDEgKyAoaW5kZXhGb3JUaGVCYWxsc0NlbnRlciAtIE1hdGguZmxvb3IoaW5kZXhGb3JUaGVCYWxsc0NlbnRlcikpKTtcbiAgICBjb25zdCByZXNldFBhZ2VJbmRleCA9IGlzQ2VudGVyUGFnZVxuICAgICAgPyBpbmRleEZvclRoZUJhbGxzQ2VudGVyICsgbW9kdWx1c1xuICAgICAgOiBwYWdlcyA8IG1heEJhbGxzXG4gICAgICA/IHBhZ2VJbmRleFxuICAgICAgOiBwYWdlSW5kZXggPj0gaW5kZXhGb3JMYXN0UGFnZXMgLSAxXG4gICAgICA/IG51bUJhbGxzIC0gKHBhZ2VzIC0gcGFnZUluZGV4KVxuICAgICAgOiBwYWdlSW5kZXg7XG4gICAgY29uc3QgbGVmdCA9IGVhY2hCYWxsV2lkdGhFbSAqIHJlc2V0UGFnZUluZGV4O1xuICAgIGNvbnN0IHsgcHVzaEJhbGxzVG9SaWdodEJ5LCBwdXNoQmFsbHNUb0xlZnRCeSwgcHVzaEd1aWRlVG9SaWdodEJ5IH0gPVxuICAgICAgbW9kZSA9PT0gUGFnaW5hdGlvbkluZGljYXRvck1vZGUuQ0VOVEVSRURcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBwdXNoQmFsbHNUb1JpZ2h0Qnk6IE1hdGgubWluKHBhZ2VzLCBtYXhCYWxscykgKiBlYWNoQmFsbFdpZHRoRW0sXG4gICAgICAgICAgICBwdXNoQmFsbHNUb0xlZnRCeTogbGVmdCxcbiAgICAgICAgICAgIHB1c2hHdWlkZVRvUmlnaHRCeTogMCxcbiAgICAgICAgICB9XG4gICAgICAgIDoge1xuICAgICAgICAgICAgcHVzaEJhbGxzVG9SaWdodEJ5OiAoZWFjaEJhbGxXaWR0aEVtIC0gMC41KSAvIDIsXG4gICAgICAgICAgICBwdXNoQmFsbHNUb0xlZnRCeTogMCxcbiAgICAgICAgICAgIHB1c2hHdWlkZVRvUmlnaHRCeTogbGVmdCxcbiAgICAgICAgICB9O1xuICAgIGxldCBwdXNoVG9MZWZ0OiBudW1iZXIgPSAwO1xuICAgIHJldHVybiBuZXcgQXJyYXkoQ0VOVEVSX0dVSURFX0JBTEwgKyBudW1CYWxscylcbiAgICAgIC5maWxsKHVuZGVmaW5lZClcbiAgICAgIC5tYXAoKF8sIGkpID0+IHtcbiAgICAgICAgY29uc3QgaXNMYXN0QmFsbCA9IGkgPT09IG51bUJhbGxzIC0gMTtcbiAgICAgICAgY29uc3QgaXNGaXJzdEJhbGwgPSBpID09PSAwO1xuXG4gICAgICAgIGlmIChpID09PSBudW1CYWxscykge1xuICAgICAgICAgIGNvbnN0IGRpYW1ldGVyID0gMC40NSAqIDI7XG4gICAgICAgICAgY29uc3QgcGFkZGluZyA9IChlYWNoQmFsbFdpZHRoRW0gLSBkaWFtZXRlcikgLyAyO1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8cmVjdFxuICAgICAgICAgICAgICBmaWxsPVwiI2ZmZlwiXG4gICAgICAgICAgICAgIHdpZHRoPXtgJHtkaWFtZXRlcn1lbWB9XG4gICAgICAgICAgICAgIGhlaWdodD17YCR7ZGlhbWV0ZXJ9ZW1gfVxuICAgICAgICAgICAgICB4PXtgJHtcbiAgICAgICAgICAgICAgICBwdXNoQmFsbHNUb1JpZ2h0QnkgLSBwYWRkaW5nICsgcHVzaEd1aWRlVG9SaWdodEJ5IC0gcHVzaFRvTGVmdFxuICAgICAgICAgICAgICB9ZW1gfVxuICAgICAgICAgICAgICB5PXtgJHtwYWRkaW5nfWVtYH1cbiAgICAgICAgICAgICAgcng9e2Ake2RpYW1ldGVyIC8gMn1lbWB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBiYWxsU2l6ZSA9XG4gICAgICAgICAgbnVtQmFsbHMgPCBtYXhCYWxsc1xuICAgICAgICAgICAgPyAwLjVcbiAgICAgICAgICAgIDogcGFnZSA8PSBpbmRleEZvclRoZUJhbGxzQ2VudGVyICsgMSAmJiBpc0xhc3RCYWxsXG4gICAgICAgICAgICA/IDBcbiAgICAgICAgICAgIDogcGFnZUluZGV4ID49IGluZGV4Rm9yTGFzdFBhZ2VzIC0gMSAmJiBpc0ZpcnN0QmFsbFxuICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICA6IGlzQ2VudGVyUGFnZVxuICAgICAgICAgICAgPyBpc0ZpcnN0QmFsbFxuICAgICAgICAgICAgICA/IDAuNSAtIG1vZHVsdXMgKiAwLjVcbiAgICAgICAgICAgICAgOiBpc0xhc3RCYWxsXG4gICAgICAgICAgICAgID8gbW9kdWx1cyAqIDAuNVxuICAgICAgICAgICAgICA6IDAuNVxuICAgICAgICAgICAgOiAwLjU7XG5cbiAgICAgICAgaWYgKGkgPT09IDAgJiYgbW9kZSA9PT0gUGFnaW5hdGlvbkluZGljYXRvck1vZGUuU1RBUlQpXG4gICAgICAgICAgcHVzaFRvTGVmdCA9ICgwLjUgLSBiYWxsU2l6ZSkgKiAyLjQ7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8cmVjdFxuICAgICAgICAgICAga2V5PXtgZ3VpZGUtJHtpfWB9XG4gICAgICAgICAgICB3aWR0aD17YCR7YmFsbFNpemUgKiAxLjJ9ZW1gfVxuICAgICAgICAgICAgaGVpZ2h0PXtgJHtiYWxsU2l6ZSAqIDEuMn1lbWB9XG4gICAgICAgICAgICB4PXtgJHtcbiAgICAgICAgICAgICAgcHVzaEJhbGxzVG9SaWdodEJ5ICtcbiAgICAgICAgICAgICAgaSAqIGVhY2hCYWxsV2lkdGhFbSAtXG4gICAgICAgICAgICAgIHB1c2hCYWxsc1RvTGVmdEJ5IC1cbiAgICAgICAgICAgICAgcHVzaFRvTGVmdFxuICAgICAgICAgICAgfWVtYH1cbiAgICAgICAgICAgIHk9e2AkeyhlYWNoQmFsbFdpZHRoRW0gLSBiYWxsU2l6ZSAqIDEuMikgLyAyfWVtYH1cbiAgICAgICAgICAgIHJ4PXtgJHsoYmFsbFNpemUgKiAxLjIpIC8gMn1lbWB9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChvbkNsaWNrUGFnZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhZ2VDbGlja2VkID1cbiAgICAgICAgICAgICAgICAgICghaXNDZW50ZXJQYWdlXG4gICAgICAgICAgICAgICAgICAgID8gcGFnZUluZGV4ID49IGluZGV4Rm9yTGFzdFBhZ2VzIC0gMVxuICAgICAgICAgICAgICAgICAgICAgID8gTWF0aC5mbG9vcihwYWdlKSAtIHJlc2V0UGFnZUluZGV4IC0gMVxuICAgICAgICAgICAgICAgICAgICAgIDogMFxuICAgICAgICAgICAgICAgICAgICA6IE1hdGguZmxvb3IocGFnZSkgLSAoaW5kZXhGb3JUaGVCYWxsc0NlbnRlciArIDEpKSArXG4gICAgICAgICAgICAgICAgICAxICtcbiAgICAgICAgICAgICAgICAgIGk7XG4gICAgICAgICAgICAgICAgb25DbGlja1BhZ2UoTWF0aC5yb3VuZChwYWdlQ2xpY2tlZCkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgfSwgW2luZGV4Rm9yVGhlQmFsbHNDZW50ZXIsIHBhZ2VJbmRleCwgcGFnZXNdKTtcbiAgY29uc3QgW2d1aWRlQmFsbCwgLi4ucGFnZUJhbGxzXSA9IGJhbGxzLnJldmVyc2UoKTtcbiAgbGV0IHdpZHRoID0gZWFjaEJhbGxXaWR0aEVtICogTWF0aC5taW4ocGFnZXMsIG1heEJhbGxzKSAqIDI7XG4gIGlmIChtb2RlID09PSBQYWdpbmF0aW9uSW5kaWNhdG9yTW9kZS5TVEFSVCkgd2lkdGggLz0gMjtcblxuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHZlcnNpb249XCIxLjFcIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIHdpZHRoOiBgJHt3aWR0aH1lbWAsXG4gICAgICAgIG1pbldpZHRoOiBgJHt3aWR0aH1lbWAsXG4gICAgICAgIGhlaWdodDogXCIxLjJlbVwiLFxuICAgICAgICBmb250U2l6ZTogYCR7c2l6ZX1weGAsXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxmaWx0ZXIgaWQ9e2Bnb28tJHtyYW5kfWB9PlxuICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgaW49XCJTb3VyY2VHcmFwaGljXCIgcmVzdWx0PVwiYmx1clwiIHN0ZERldmlhdGlvbj1cIjVcIiAvPlxuICAgICAgICA8ZmVDb2xvck1hdHJpeFxuICAgICAgICAgIGluPVwiYmx1clwiXG4gICAgICAgICAgbW9kZT1cIm1hdHJpeFwiXG4gICAgICAgICAgdmFsdWVzPVwiMSAwIDAgMCAwICAwIDEgMCAwIDAgIDAgMCAxIDAgMCAgMCAwIDAgMTggLTdcIlxuICAgICAgICAgIHJlc3VsdD1cImdvb1wiXG4gICAgICAgIC8+XG4gICAgICAgIDxmZUJsZW5kIGluMj1cImdvb1wiIGluPVwiU291cmNlR3JhcGhpY1wiIHJlc3VsdD1cIm1peFwiIC8+XG4gICAgICA8L2ZpbHRlcj5cbiAgICAgIDxtYXNrIGlkPXtgbWFzay0ke3JhbmR9YH0+XG4gICAgICAgIDxnIGZpbHRlcj17YHVybCgjJHtgZ29vLSR7cmFuZH1gfSlgfSBmaWxsPVwiI2ZmZlwiPlxuICAgICAgICAgIHtbcGFnZUJhbGxzXX1cbiAgICAgICAgICB7Z3VpZGVCYWxsfVxuICAgICAgICA8L2c+XG4gICAgICA8L21hc2s+XG4gICAgICA8cmVjdFxuICAgICAgICB4PVwiMFwiXG4gICAgICAgIHk9XCIwXCJcbiAgICAgICAgbWFzaz17YHVybCgjJHtgbWFzay0ke3JhbmR9YH0pYH1cbiAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgaGVpZ2h0PVwiMTAwJVwiXG4gICAgICAgIHN0eWxlPXt7IGZpbGw6IFwidmFyKC0tZGlnaXRhbC1ibHVlKVwiIH19XG4gICAgICA+PC9yZWN0PlxuICAgICAge29uQ2xpY2tQYWdlICYmIChcbiAgICAgICAgPGcgb3BhY2l0eT17MH0gc3R5bGU9e3sgY3Vyc29yOiBcInBvaW50ZXJcIiB9fT5cbiAgICAgICAgICB7cGFnZUJhbGxzfVxuICAgICAgICA8L2c+XG4gICAgICApfVxuICAgIDwvc3ZnPlxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQW5pbWF0ZWRQYWdpbmF0aW9uSW5kaWNhdG9yKFxuICBwcm9wczogQ29tcG9uZW50UHJvcHM8dHlwZW9mIFBhZ2luYXRpb25JbmRpY2F0b3JWaWV3PiAmIHtcbiAgICBkdXJhdGlvbjogbnVtYmVyO1xuICB9XG4pIHtcbiAgY29uc3QgcHJldlBhZ2UgPSB1c2VSZWYocHJvcHMucGFnZSk7XG4gIGNvbnN0IFtwYWdlUHJvZ3Jlc3MsIHNldFBhZ2VQcm9ncmVzc10gPSB1c2VTdGF0ZShwcm9wcy5wYWdlKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBkaWZmID0gcHJvcHMucGFnZSAtIHByZXZQYWdlLmN1cnJlbnQ7XG4gICAgY29uc3QgZGlmZlBlclN0ZXAgPSBkaWZmIC8gNjA7XG5cbiAgICBjb25zdCBpbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIHNldFBhZ2VQcm9ncmVzcygocHJldikgPT4ge1xuICAgICAgICBjb25zdCBuZXh0ID0gcHJldiArIGRpZmZQZXJTdGVwO1xuICAgICAgICBpZiAoZGlmZiA8IDApIHtcbiAgICAgICAgICBpZiAobmV4dCA8PSBwcm9wcy5wYWdlKSB7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTtcbiAgICAgICAgICAgIHJldHVybiBwcm9wcy5wYWdlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAobmV4dCA+PSBwcm9wcy5wYWdlKSB7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTtcbiAgICAgICAgICAgIHJldHVybiBwcm9wcy5wYWdlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gTnVtYmVyKG5leHQudG9GaXhlZCgyKSk7XG4gICAgICB9KTtcbiAgICB9LCBwcm9wcy5kdXJhdGlvbiAvIDYwKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBwcmV2UGFnZS5jdXJyZW50ID0gcHJvcHMucGFnZTtcbiAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICAgIH07XG4gIH0sIFtwcm9wcy5wYWdlXSk7XG5cbiAgcmV0dXJuIDxQYWdpbmF0aW9uSW5kaWNhdG9yVmlldyB7Li4ucHJvcHN9IHBhZ2U9e3BhZ2VQcm9ncmVzc30gLz47XG59XG5cbmZ1bmN0aW9uIF9QYWdpbmF0aW9uSW5kaWNhdG9yKFxuICB7XG4gICAgc2Nyb2xsYWJsZVJlZixcbiAgICBlc3RpbWF0ZWRXaWR0aCxcbiAgICBzaXplLFxuICAgIGNsYXNzTmFtZSA9IFwiXCIsXG4gICAgb25DbGlja1BhZ2UsXG4gICAgbW9kZSxcbiAgICBpbmZpbml0ZSxcbiAgfToge1xuICAgIHNjcm9sbGFibGVSZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD47XG4gICAgZXN0aW1hdGVkV2lkdGg/OiBudW1iZXI7XG4gICAgc2l6ZTogbnVtYmVyO1xuICAgIGNsYXNzTmFtZT86IHN0cmluZztcbiAgICBvbkNsaWNrUGFnZT86IChwYWdlOiBudW1iZXIpID0+IHZvaWQ7XG4gIH0gJiBQaWNrPENvbXBvbmVudFByb3BzPHR5cGVvZiBQYWdpbmF0aW9uSW5kaWNhdG9yVmlldz4sIFwibW9kZVwiIHwgXCJpbmZpbml0ZVwiPixcbiAgcmVmOiBGb3J3YXJkZWRSZWY8e1xuICAgIHJlZnJlc2hQYWdlczogKCkgPT4gdm9pZDtcbiAgfT5cbikge1xuICBjb25zdCBbY3VycmVudFBhZ2UsIHNldEN1cnJlbnRQYWdlXSA9IHVzZVN0YXRlKDEpO1xuXG4gIGNvbnN0IFtkZWZzLCBzZXREZWZzXSA9XG4gICAgdXNlU3RhdGU8e1xuICAgICAgcGFnZXM6IG51bWJlcjtcbiAgICB9PigpO1xuXG4gIGNvbnN0IHJlZnJlc2hQYWdlcyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIXNjcm9sbGFibGVSZWYuY3VycmVudCkgcmV0dXJuO1xuICAgIGNvbnN0IG1heFdpZHRoID1cbiAgICAgIGVzdGltYXRlZFdpZHRoID09PSB1bmRlZmluZWRcbiAgICAgICAgPyBzY3JvbGxhYmxlUmVmLmN1cnJlbnQhLnNjcm9sbFdpZHRoXG4gICAgICAgIDogZXN0aW1hdGVkV2lkdGg7XG5cbiAgICBjb25zdCBwYWdlcyA9IG1heFdpZHRoIC8gc2Nyb2xsYWJsZVJlZi5jdXJyZW50IS5jbGllbnRXaWR0aDtcbiAgICBpZiAocGFnZXMgPiAxKVxuICAgICAgc2V0RGVmcyh7XG4gICAgICAgIHBhZ2VzOiBpbmZpbml0ZSA/IHBhZ2VzICsgMiA6IHBhZ2VzLFxuICAgICAgfSk7XG4gIH0sIFtlc3RpbWF0ZWRXaWR0aCwgaW5maW5pdGVdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4gcmVmcmVzaFBhZ2VzKCksIFtyZWZyZXNoUGFnZXNdKTtcblxuICBjb25zdCB1cGRhdGVQYWdlSW5kaWNhdG9ycyA9IHVzZUNhbGxiYWNrKFxuICAgICh0YXJnZXQ6IEhUTUxEaXZFbGVtZW50LCBwYWdlczogbnVtYmVyKSA9PiB7XG4gICAgICBpZiAoIXNjcm9sbGFibGVSZWYuY3VycmVudCkgcmV0dXJuO1xuICAgICAgY29uc3QgZWFjaFBhZ2VXaWR0aCA9IHNjcm9sbGFibGVSZWYuY3VycmVudCEuY2xpZW50V2lkdGg7XG4gICAgICBjb25zdCBwYWdlID0gMSArIHRhcmdldC5zY3JvbGxMZWZ0IC8gZWFjaFBhZ2VXaWR0aDtcbiAgICAgIGNvbnN0IGxhc3RQYWdlUHJvZ3Jlc3MgPSBNYXRoLmZsb29yKHBhZ2VzKSArIDE7XG4gICAgICBjb25zdCBtYXhpbXVtUHJvZ3Jlc3MgPSBwYWdlcyArIDE7XG5cbiAgICAgIGNvbnN0IGRpZmZUb01heCA9IG1heGltdW1Qcm9ncmVzcyAtIGxhc3RQYWdlUHJvZ3Jlc3M7XG4gICAgICBjb25zdCBjdXJyZW50UHJvZ3Jlc3NPbkRpZmYgPSBwYWdlIC0gbGFzdFBhZ2VQcm9ncmVzcztcblxuICAgICAgaWYgKHBhZ2UgPiBsYXN0UGFnZVByb2dyZXNzKSB7XG4gICAgICAgIGNvbnN0IHAgPSBsYXN0UGFnZVByb2dyZXNzICsgY3VycmVudFByb2dyZXNzT25EaWZmIC8gZGlmZlRvTWF4O1xuICAgICAgICBzZXRDdXJyZW50UGFnZShwKTtcbiAgICAgIH0gZWxzZSBzZXRDdXJyZW50UGFnZShwYWdlKTtcbiAgICB9LFxuICAgIFtdXG4gICk7XG5cbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZShcbiAgICByZWYsXG4gICAgKCkgPT4gKHtcbiAgICAgIHJlZnJlc2hQYWdlcyxcbiAgICB9KSxcbiAgICBbXVxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFkZWZzKSByZXR1cm47XG4gICAgY29uc3QgZWwgPSBzY3JvbGxhYmxlUmVmLmN1cnJlbnQhO1xuICAgIGNvbnN0IG9uU2Nyb2xsID0gKGU6IEV2ZW50KSA9PlxuICAgICAgdXBkYXRlUGFnZUluZGljYXRvcnMoZS5jdXJyZW50VGFyZ2V0IGFzIEhUTUxEaXZFbGVtZW50LCBkZWZzLnBhZ2VzKTtcbiAgICB1cGRhdGVQYWdlSW5kaWNhdG9ycyhlbCwgZGVmcy5wYWdlcyk7XG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCBvblNjcm9sbCwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICB9KTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCBvblNjcm9sbCk7XG4gICAgfTtcbiAgfSwgW2RlZnNdKTtcblxuICBjb25zdCBwYWdlcyA9IHVzZU1lbW8oKCkgPT4gKGRlZnMgPyBkZWZzLnBhZ2VzIDogdW5kZWZpbmVkKSwgW2RlZnNdKTtcblxuICByZXR1cm4gIXBhZ2VzID8gbnVsbCA6IChcbiAgICA8UGFnaW5hdGlvbkluZGljYXRvclZpZXdcbiAgICAgIHBhZ2VzPXtwYWdlc31cbiAgICAgIHBhZ2U9e2N1cnJlbnRQYWdlfVxuICAgICAgc2l6ZT17c2l6ZX1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgb25DbGlja1BhZ2U9e29uQ2xpY2tQYWdlfVxuICAgICAgbW9kZT17bW9kZX1cbiAgICAgIGluZmluaXRlPXtpbmZpbml0ZX1cbiAgICAvPlxuICApO1xufVxuXG4vKipcbiAqIEEgY29vbCBjb21wb25lbnQgdG8gaW5kaWNhdGUgaG93IG1hbnkgcGFnZXMgYXJlXG4gKiovXG4vKipcbiAqIEEgcGFnaW5hdGlvbiBpbmRpY2F0b3IgY29tcG9uZW50IHRoYXQgZGlzcGxheXMgdGhlIGN1cnJlbnQgcGFnZVxuICogYW5kIHRvdGFsIG51bWJlciBvZiBwYWdlcyB1c2luZyBhbmltYXRlZCBjaXJjdWxhciBpbmRpY2F0b3JzLlxuICogSXQgdXBkYXRlcyB2aXN1YWxseSB3aGVuIHNjcm9sbGluZyB0aHJvdWdoIHBhZ2VzLlxuICovXG5jb25zdCBQYWdpbmF0aW9uSW5kaWNhdG9yID0gZm9yd2FyZFJlZihfUGFnaW5hdGlvbkluZGljYXRvcik7XG5leHBvcnQgZGVmYXVsdCBQYWdpbmF0aW9uSW5kaWNhdG9yO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFXZSxTQUFBQyx5QkFBQUMsV0FBQSxlQUFBQyxPQUFBLGtDQUFBQyxpQkFBQSxPQUFBRCxPQUFBLFFBQUFFLGdCQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsV0FBQSxXQUFBQSxXQUFBLEdBQUFHLGdCQUFBLEdBQUFELGlCQUFBLEtBQUFGLFdBQUE7QUFBQSxTQUFBSCx3QkFBQU8sR0FBQSxFQUFBSixXQUFBLFNBQUFBLFdBQUEsSUFBQUksR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsV0FBQUQsR0FBQSxRQUFBQSxHQUFBLG9CQUFBQSxHQUFBLHdCQUFBQSxHQUFBLDRCQUFBRSxPQUFBLEVBQUFGLEdBQUEsVUFBQUcsS0FBQSxHQUFBUix3QkFBQSxDQUFBQyxXQUFBLE9BQUFPLEtBQUEsSUFBQUEsS0FBQSxDQUFBQyxHQUFBLENBQUFKLEdBQUEsWUFBQUcsS0FBQSxDQUFBRSxHQUFBLENBQUFMLEdBQUEsU0FBQU0sTUFBQSxXQUFBQyxxQkFBQSxHQUFBQyxNQUFBLENBQUFDLGNBQUEsSUFBQUQsTUFBQSxDQUFBRSx3QkFBQSxXQUFBQyxHQUFBLElBQUFYLEdBQUEsUUFBQVcsR0FBQSxrQkFBQUgsTUFBQSxDQUFBSSxTQUFBLENBQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBZCxHQUFBLEVBQUFXLEdBQUEsU0FBQUksSUFBQSxHQUFBUixxQkFBQSxHQUFBQyxNQUFBLENBQUFFLHdCQUFBLENBQUFWLEdB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