@onepercentio/one-ui 1.3.4 → 1.3.5

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 (662) hide show
  1. package/README.md +1 -1
  2. package/dist/components/AdaptiveButton/AdaptiveButton.d.ts +9 -0
  3. package/dist/components/AdaptiveButton/AdaptiveButton.js +24 -26
  4. package/dist/components/AdaptiveButton/AdaptiveButton.js.map +1 -0
  5. package/dist/components/AdaptiveButton/index.d.ts +2 -0
  6. package/dist/components/AdaptiveButton/index.js +22 -25
  7. package/dist/components/AdaptiveButton/index.js.map +1 -0
  8. package/dist/components/AdaptiveContainer/AdaptiveContainer.d.ts +25 -0
  9. package/dist/components/AdaptiveContainer/AdaptiveContainer.js +139 -140
  10. package/dist/components/AdaptiveContainer/AdaptiveContainer.js.map +1 -0
  11. package/dist/components/AdaptiveContainer/index.d.ts +2 -0
  12. package/dist/components/AdaptiveContainer/index.js +22 -25
  13. package/dist/components/AdaptiveContainer/index.js.map +1 -0
  14. package/dist/components/AdaptiveDialog/AdaptiveDialog.d.ts +20 -0
  15. package/dist/components/AdaptiveDialog/AdaptiveDialog.js +42 -73
  16. package/dist/components/AdaptiveDialog/AdaptiveDialog.js.map +1 -0
  17. package/dist/components/AdaptiveDialog/index.d.ts +2 -0
  18. package/dist/components/AdaptiveDialog/index.js +22 -25
  19. package/dist/components/AdaptiveDialog/index.js.map +1 -0
  20. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.d.ts +25 -0
  21. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.js +54 -70
  22. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.js.map +1 -0
  23. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.sample.d.ts +1 -0
  24. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.sample.js +9 -10
  25. package/dist/components/AdaptiveSidebar/AdaptiveSidebar.sample.js.map +1 -0
  26. package/dist/components/AdaptiveSidebar/index.d.ts +2 -0
  27. package/dist/components/AdaptiveSidebar/index.js +22 -25
  28. package/dist/components/AdaptiveSidebar/index.js.map +1 -0
  29. package/dist/components/AnchoredTooltip/AnchoredTooltip.d.ts +37 -0
  30. package/dist/components/AnchoredTooltip/AnchoredTooltip.js +154 -155
  31. package/dist/components/AnchoredTooltip/AnchoredTooltip.js.map +1 -0
  32. package/dist/components/AnchoredTooltip/index.d.ts +2 -0
  33. package/dist/components/AnchoredTooltip/index.js +22 -25
  34. package/dist/components/AnchoredTooltip/index.js.map +1 -0
  35. package/dist/components/AnimatedEntrance/AnimatedEntrance.d.ts +19 -0
  36. package/dist/components/AnimatedEntrance/AnimatedEntrance.js +121 -154
  37. package/dist/components/AnimatedEntrance/AnimatedEntrance.js.map +1 -0
  38. package/dist/components/AnimatedEntrance/index.d.ts +2 -0
  39. package/dist/components/AnimatedEntrance/index.js +22 -25
  40. package/dist/components/AnimatedEntrance/index.js.map +1 -0
  41. package/dist/components/AsyncTriggerContainer/AsyncTriggerContainer.d.ts +29 -0
  42. package/dist/components/AsyncTriggerContainer/AsyncTriggerContainer.js +40 -80
  43. package/dist/components/AsyncTriggerContainer/AsyncTriggerContainer.js.map +1 -0
  44. package/dist/components/AsyncTriggerContainer/index.d.ts +2 -0
  45. package/dist/components/AsyncTriggerContainer/index.js +22 -25
  46. package/dist/components/AsyncTriggerContainer/index.js.map +1 -0
  47. package/dist/components/AsyncWrapper/AsyncWrapper.d.ts +14 -0
  48. package/dist/components/AsyncWrapper/AsyncWrapper.js +16 -34
  49. package/dist/components/AsyncWrapper/AsyncWrapper.js.map +1 -0
  50. package/dist/components/AsyncWrapper/index.d.ts +2 -0
  51. package/dist/components/AsyncWrapper/index.js +22 -25
  52. package/dist/components/AsyncWrapper/index.js.map +1 -0
  53. package/dist/components/Avatar/Avatar.d.ts +10 -0
  54. package/dist/components/Avatar/Avatar.js +18 -33
  55. package/dist/components/Avatar/Avatar.js.map +1 -0
  56. package/dist/components/Avatar/index.d.ts +2 -0
  57. package/dist/components/Avatar/index.js +22 -25
  58. package/dist/components/Avatar/index.js.map +1 -0
  59. package/dist/components/BucketFill/BucketFill.d.ts +11 -0
  60. package/dist/components/BucketFill/BucketFill.js +36 -49
  61. package/dist/components/BucketFill/BucketFill.js.map +1 -0
  62. package/dist/components/BucketFill/index.d.ts +2 -0
  63. package/dist/components/BucketFill/index.js +22 -25
  64. package/dist/components/BucketFill/index.js.map +1 -0
  65. package/dist/components/Button/Button.d.ts +16 -0
  66. package/dist/components/Button/Button.js +22 -30
  67. package/dist/components/Button/Button.js.map +1 -0
  68. package/dist/components/Button/index.d.ts +2 -0
  69. package/dist/components/Button/index.js +22 -25
  70. package/dist/components/Button/index.js.map +1 -0
  71. package/dist/components/Card/Card.d.ts +7 -0
  72. package/dist/components/Card/Card.js +10 -17
  73. package/dist/components/Card/Card.js.map +1 -0
  74. package/dist/components/Card/index.d.ts +2 -0
  75. package/dist/components/Card/index.js +22 -25
  76. package/dist/components/Card/index.js.map +1 -0
  77. package/dist/components/Chart/Chart.d.ts +2 -0
  78. package/dist/components/Chart/Chart.e2e.d.ts +4 -0
  79. package/dist/components/Chart/Chart.e2e.js +9 -0
  80. package/dist/components/Chart/Chart.e2e.js.map +1 -0
  81. package/dist/components/Chart/Chart.js +22 -25
  82. package/dist/components/Chart/Chart.js.map +1 -0
  83. package/dist/components/Chart/Chart.logic.d.ts +3 -0
  84. package/dist/components/Chart/Chart.logic.js +9 -10
  85. package/dist/components/Chart/Chart.logic.js.map +1 -0
  86. package/dist/components/Chart/Chart.types.d.ts +24 -0
  87. package/dist/components/Chart/Chart.types.js +2 -5
  88. package/dist/components/Chart/Chart.types.js.map +1 -0
  89. package/dist/components/Chart/Chart.view.d.ts +5 -0
  90. package/dist/components/Chart/Chart.view.js +98 -174
  91. package/dist/components/Chart/Chart.view.js.map +1 -0
  92. package/dist/components/Chart/index.d.ts +2 -0
  93. package/dist/components/Chart/index.js +22 -25
  94. package/dist/components/Chart/index.js.map +1 -0
  95. package/dist/components/CheckBox/CheckBox.d.ts +18 -0
  96. package/dist/components/CheckBox/CheckBox.js +31 -45
  97. package/dist/components/CheckBox/CheckBox.js.map +1 -0
  98. package/dist/components/CheckBox/index.d.ts +2 -0
  99. package/dist/components/CheckBox/index.js +22 -25
  100. package/dist/components/CheckBox/index.js.map +1 -0
  101. package/dist/components/CodeInput/CodeInput.d.ts +8 -0
  102. package/dist/components/CodeInput/CodeInput.js +93 -75
  103. package/dist/components/CodeInput/CodeInput.js.map +1 -0
  104. package/dist/components/CodeInput/index.d.ts +2 -0
  105. package/dist/components/CodeInput/index.js +22 -25
  106. package/dist/components/CodeInput/index.js.map +1 -0
  107. package/dist/components/Collapsable/Collapsable.d.ts +54 -0
  108. package/dist/components/Collapsable/Collapsable.js +134 -164
  109. package/dist/components/Collapsable/Collapsable.js.map +1 -0
  110. package/dist/components/Collapsable/index.d.ts +2 -0
  111. package/dist/components/Collapsable/index.js +22 -25
  112. package/dist/components/Collapsable/index.js.map +1 -0
  113. package/dist/components/Countdown/Countdown.d.ts +28 -0
  114. package/dist/components/Countdown/Countdown.js +86 -69
  115. package/dist/components/Countdown/Countdown.js.map +1 -0
  116. package/dist/components/Countdown/index.d.ts +2 -0
  117. package/dist/components/Countdown/index.js +22 -25
  118. package/dist/components/Countdown/index.js.map +1 -0
  119. package/dist/components/CurrencyInput/CurrencyInput.d.ts +11 -0
  120. package/dist/components/CurrencyInput/CurrencyInput.hook.d.ts +7 -0
  121. package/dist/components/CurrencyInput/CurrencyInput.hook.js +25 -25
  122. package/dist/components/CurrencyInput/CurrencyInput.hook.js.map +1 -0
  123. package/dist/components/CurrencyInput/CurrencyInput.js +29 -48
  124. package/dist/components/CurrencyInput/CurrencyInput.js.map +1 -0
  125. package/dist/components/CurrencyInput/index.d.ts +2 -0
  126. package/dist/components/CurrencyInput/index.js +22 -25
  127. package/dist/components/CurrencyInput/index.js.map +1 -0
  128. package/dist/components/Divider/Divider.d.ts +6 -0
  129. package/dist/components/Divider/Divider.js +10 -16
  130. package/dist/components/Divider/Divider.js.map +1 -0
  131. package/dist/components/Divider/index.d.ts +2 -0
  132. package/dist/components/Divider/index.js +22 -25
  133. package/dist/components/Divider/index.js.map +1 -0
  134. package/dist/components/EmailInput/EmailInput.d.ts +33 -0
  135. package/dist/components/EmailInput/EmailInput.js +23 -37
  136. package/dist/components/EmailInput/EmailInput.js.map +1 -0
  137. package/dist/components/EmailInput/index.d.ts +2 -0
  138. package/dist/components/EmailInput/index.js +22 -25
  139. package/dist/components/EmailInput/index.js.map +1 -0
  140. package/dist/components/FadeIn/FadeIn.d.ts +16 -0
  141. package/dist/components/FadeIn/FadeIn.js +51 -57
  142. package/dist/components/FadeIn/FadeIn.js.map +1 -0
  143. package/dist/components/FadeIn/index.d.ts +2 -0
  144. package/dist/components/FadeIn/index.js +22 -25
  145. package/dist/components/FadeIn/index.js.map +1 -0
  146. package/dist/components/FileInput/FileInput.d.ts +34 -0
  147. package/dist/components/FileInput/FileInput.js +38 -45
  148. package/dist/components/FileInput/FileInput.js.map +1 -0
  149. package/dist/components/FileInput/View/BigFactory/BigFactory.d.ts +6 -0
  150. package/dist/components/FileInput/View/BigFactory/BigFactory.js +16 -48
  151. package/dist/components/FileInput/View/BigFactory/BigFactory.js.map +1 -0
  152. package/dist/components/FileInput/View/BigFactory/index.d.ts +2 -0
  153. package/dist/components/FileInput/View/BigFactory/index.js +22 -25
  154. package/dist/components/FileInput/View/BigFactory/index.js.map +1 -0
  155. package/dist/components/FileInput/View/Compact/Compact.d.ts +11 -0
  156. package/dist/components/FileInput/View/Compact/Compact.js +46 -114
  157. package/dist/components/FileInput/View/Compact/Compact.js.map +1 -0
  158. package/dist/components/FileInput/View/Compact/index.d.ts +2 -0
  159. package/dist/components/FileInput/View/Compact/index.js +22 -25
  160. package/dist/components/FileInput/View/Compact/index.js.map +1 -0
  161. package/dist/components/FileInput/View/View.types.d.ts +8 -0
  162. package/dist/components/FileInput/View/View.types.js +2 -5
  163. package/dist/components/FileInput/View/View.types.js.map +1 -0
  164. package/dist/components/FileInput/index.d.ts +2 -0
  165. package/dist/components/FileInput/index.js +22 -25
  166. package/dist/components/FileInput/index.js.map +1 -0
  167. package/dist/components/FlowController/FlowController.d.ts +27 -0
  168. package/dist/components/FlowController/FlowController.js +25 -56
  169. package/dist/components/FlowController/FlowController.js.map +1 -0
  170. package/dist/components/FlowController/index.d.ts +2 -0
  171. package/dist/components/FlowController/index.js +22 -25
  172. package/dist/components/FlowController/index.js.map +1 -0
  173. package/dist/components/Form/Form.d.ts +30 -0
  174. package/dist/components/Form/Form.hook.d.ts +40 -0
  175. package/dist/components/Form/Form.hook.js +202 -217
  176. package/dist/components/Form/Form.hook.js.map +1 -0
  177. package/dist/components/Form/Form.js +65 -103
  178. package/dist/components/Form/Form.js.map +1 -0
  179. package/dist/components/Form/Form.types.d.ts +98 -0
  180. package/dist/components/Form/Form.types.js +53 -39
  181. package/dist/components/Form/Form.types.js.map +1 -0
  182. package/dist/components/Form/FormField/Extensions/DateField/DateField.d.ts +13 -0
  183. package/dist/components/Form/FormField/Extensions/DateField/DateField.js +53 -64
  184. package/dist/components/Form/FormField/Extensions/DateField/DateField.js.map +1 -0
  185. package/dist/components/Form/FormField/Extensions/DateField/index.d.ts +2 -0
  186. package/dist/components/Form/FormField/Extensions/DateField/index.js +22 -25
  187. package/dist/components/Form/FormField/Extensions/DateField/index.js.map +1 -0
  188. package/dist/components/Form/FormField/Extensions/PhoneField/PhoneField.d.ts +9 -0
  189. package/dist/components/Form/FormField/Extensions/PhoneField/PhoneField.js +78 -81
  190. package/dist/components/Form/FormField/Extensions/PhoneField/PhoneField.js.map +1 -0
  191. package/dist/components/Form/FormField/Extensions/PhoneField/index.d.ts +2 -0
  192. package/dist/components/Form/FormField/Extensions/PhoneField/index.js +22 -25
  193. package/dist/components/Form/FormField/Extensions/PhoneField/index.js.map +1 -0
  194. package/dist/components/Form/FormField/FormField.d.ts +5 -0
  195. package/dist/components/Form/FormField/FormField.js +148 -287
  196. package/dist/components/Form/FormField/FormField.js.map +1 -0
  197. package/dist/components/Form/FormField/FormField.types.d.ts +103 -0
  198. package/dist/components/Form/FormField/FormField.types.js +7 -10
  199. package/dist/components/Form/FormField/FormField.types.js.map +1 -0
  200. package/dist/components/Form/FormField/index.d.ts +2 -0
  201. package/dist/components/Form/FormField/index.js +22 -25
  202. package/dist/components/Form/FormField/index.js.map +1 -0
  203. package/dist/components/Form/index.d.ts +2 -0
  204. package/dist/components/Form/index.js +22 -25
  205. package/dist/components/Form/index.js.map +1 -0
  206. package/dist/components/Freeze/Freeze.d.ts +5 -0
  207. package/dist/components/Freeze/Freeze.js +9 -13
  208. package/dist/components/Freeze/Freeze.js.map +1 -0
  209. package/dist/components/Freeze/index.d.ts +2 -0
  210. package/dist/components/Freeze/index.js +22 -25
  211. package/dist/components/Freeze/index.js.map +1 -0
  212. package/dist/components/HSForms/HSForms.d.ts +12 -0
  213. package/dist/components/HSForms/HSForms.js +69 -48
  214. package/dist/components/HSForms/HSForms.js.map +1 -0
  215. package/dist/components/HSForms/index.d.ts +2 -0
  216. package/dist/components/HSForms/index.js +22 -25
  217. package/dist/components/HSForms/index.js.map +1 -0
  218. package/dist/components/HeaderCloseBtn/HeaderCloseBtn.d.ts +9 -0
  219. package/dist/components/HeaderCloseBtn/HeaderCloseBtn.js +10 -19
  220. package/dist/components/HeaderCloseBtn/HeaderCloseBtn.js.map +1 -0
  221. package/dist/components/HeaderCloseBtn/index.d.ts +2 -0
  222. package/dist/components/HeaderCloseBtn/index.js +22 -25
  223. package/dist/components/HeaderCloseBtn/index.js.map +1 -0
  224. package/dist/components/InfinityScroll/InfinityScroll.d.ts +22 -0
  225. package/dist/components/InfinityScroll/InfinityScroll.js +94 -114
  226. package/dist/components/InfinityScroll/InfinityScroll.js.map +1 -0
  227. package/dist/components/InfinityScroll/index.d.ts +2 -0
  228. package/dist/components/InfinityScroll/index.js +22 -25
  229. package/dist/components/InfinityScroll/index.js.map +1 -0
  230. package/dist/components/Input/Input.d.ts +43 -0
  231. package/dist/components/Input/Input.js +57 -99
  232. package/dist/components/Input/Input.js.map +1 -0
  233. package/dist/components/Input/index.d.ts +2 -0
  234. package/dist/components/Input/index.js +22 -25
  235. package/dist/components/Input/index.js.map +1 -0
  236. package/dist/components/InstantCounter/InstantCounter.d.ts +16 -0
  237. package/dist/components/InstantCounter/InstantCounter.js +31 -49
  238. package/dist/components/InstantCounter/InstantCounter.js.map +1 -0
  239. package/dist/components/InstantCounter/index.d.ts +2 -0
  240. package/dist/components/InstantCounter/index.js +22 -25
  241. package/dist/components/InstantCounter/index.js.map +1 -0
  242. package/dist/components/LavaLamp/LavaLamp.d.ts +12 -0
  243. package/dist/components/LavaLamp/LavaLamp.data.d.ts +16 -0
  244. package/dist/components/LavaLamp/LavaLamp.data.js +86 -83
  245. package/dist/components/LavaLamp/LavaLamp.data.js.map +1 -0
  246. package/dist/components/LavaLamp/LavaLamp.js +32 -119
  247. package/dist/components/LavaLamp/LavaLamp.js.map +1 -0
  248. package/dist/components/LavaLamp/index.d.ts +2 -0
  249. package/dist/components/LavaLamp/index.js +22 -25
  250. package/dist/components/LavaLamp/index.js.map +1 -0
  251. package/dist/components/LavaLamp/v2/LavaLamp.d.ts +4 -0
  252. package/dist/components/LavaLamp/v2/LavaLamp.js +156 -149
  253. package/dist/components/LavaLamp/v2/LavaLamp.js.map +1 -0
  254. package/dist/components/LinkToId/LinkToId.d.ts +11 -0
  255. package/dist/components/LinkToId/LinkToId.js +27 -39
  256. package/dist/components/LinkToId/LinkToId.js.map +1 -0
  257. package/dist/components/LinkToId/index.d.ts +2 -0
  258. package/dist/components/LinkToId/index.js +22 -25
  259. package/dist/components/LinkToId/index.js.map +1 -0
  260. package/dist/components/Loader/Loader.d.ts +8 -0
  261. package/dist/components/Loader/Loader.js +22 -21
  262. package/dist/components/Loader/Loader.js.map +1 -0
  263. package/dist/components/Loader/index.d.ts +2 -0
  264. package/dist/components/Loader/index.js +22 -25
  265. package/dist/components/Loader/index.js.map +1 -0
  266. package/dist/components/LoaderDotsIndicator/LoaderDotsIndicator.d.ts +12 -0
  267. package/dist/components/LoaderDotsIndicator/LoaderDotsIndicator.js +15 -27
  268. package/dist/components/LoaderDotsIndicator/LoaderDotsIndicator.js.map +1 -0
  269. package/dist/components/LoaderDotsIndicator/index.d.ts +2 -0
  270. package/dist/components/LoaderDotsIndicator/index.js +22 -25
  271. package/dist/components/LoaderDotsIndicator/index.js.map +1 -0
  272. package/dist/components/LoopableVideo/LoopableVideo.d.ts +12 -0
  273. package/dist/components/LoopableVideo/LoopableVideo.js +25 -33
  274. package/dist/components/LoopableVideo/LoopableVideo.js.map +1 -0
  275. package/dist/components/LoopableVideo/index.d.ts +2 -0
  276. package/dist/components/LoopableVideo/index.js +22 -25
  277. package/dist/components/LoopableVideo/index.js.map +1 -0
  278. package/dist/components/MainGrid/MainGrid.d.ts +17 -0
  279. package/dist/components/MainGrid/MainGrid.js +23 -46
  280. package/dist/components/MainGrid/MainGrid.js.map +1 -0
  281. package/dist/components/MainGrid/index.d.ts +2 -0
  282. package/dist/components/MainGrid/index.js +22 -25
  283. package/dist/components/MainGrid/index.js.map +1 -0
  284. package/dist/components/MutableHamburgerButton/MutableHamburgerButton.d.ts +8 -0
  285. package/dist/components/MutableHamburgerButton/MutableHamburgerButton.js +23 -27
  286. package/dist/components/MutableHamburgerButton/MutableHamburgerButton.js.map +1 -0
  287. package/dist/components/MutableHamburgerButton/index.d.ts +2 -0
  288. package/dist/components/MutableHamburgerButton/index.js +22 -25
  289. package/dist/components/MutableHamburgerButton/index.js.map +1 -0
  290. package/dist/components/Notification/Notification.d.ts +8 -0
  291. package/dist/components/Notification/Notification.js +11 -18
  292. package/dist/components/Notification/Notification.js.map +1 -0
  293. package/dist/components/Notification/index.d.ts +2 -0
  294. package/dist/components/Notification/index.js +22 -25
  295. package/dist/components/Notification/index.js.map +1 -0
  296. package/dist/components/NumberInput/NumberInput.d.ts +11 -0
  297. package/dist/components/NumberInput/NumberInput.js +42 -43
  298. package/dist/components/NumberInput/NumberInput.js.map +1 -0
  299. package/dist/components/NumberInput/index.d.ts +2 -0
  300. package/dist/components/NumberInput/index.js +22 -25
  301. package/dist/components/NumberInput/index.js.map +1 -0
  302. package/dist/components/OrderableList/OrderableList.d.ts +40 -0
  303. package/dist/components/OrderableList/OrderableList.js +404 -416
  304. package/dist/components/OrderableList/OrderableList.js.map +1 -0
  305. package/dist/components/OrderableList/index.d.ts +2 -0
  306. package/dist/components/OrderableList/index.js +22 -25
  307. package/dist/components/OrderableList/index.js.map +1 -0
  308. package/dist/components/PaginationIndicator/PaginationIndicator.d.ts +45 -0
  309. package/dist/components/PaginationIndicator/PaginationIndicator.js +198 -243
  310. package/dist/components/PaginationIndicator/PaginationIndicator.js.map +1 -0
  311. package/dist/components/PaginationIndicator/index.d.ts +2 -0
  312. package/dist/components/PaginationIndicator/index.js +22 -25
  313. package/dist/components/PaginationIndicator/index.js.map +1 -0
  314. package/dist/components/Parallax/Parallax.d.ts +20 -0
  315. package/dist/components/Parallax/Parallax.js +130 -156
  316. package/dist/components/Parallax/Parallax.js.map +1 -0
  317. package/dist/components/Parallax/index.d.ts +2 -0
  318. package/dist/components/Parallax/index.js +22 -25
  319. package/dist/components/Parallax/index.js.map +1 -0
  320. package/dist/components/Parallax/math/helpers.d.ts +58 -0
  321. package/dist/components/Parallax/math/helpers.js +216 -120
  322. package/dist/components/Parallax/math/helpers.js.map +1 -0
  323. package/dist/components/PasswordInput/PasswordInput.d.ts +48 -0
  324. package/dist/components/PasswordInput/PasswordInput.js +71 -88
  325. package/dist/components/PasswordInput/PasswordInput.js.map +1 -0
  326. package/dist/components/PasswordInput/index.d.ts +2 -0
  327. package/dist/components/PasswordInput/index.js +22 -25
  328. package/dist/components/PasswordInput/index.js.map +1 -0
  329. package/dist/components/PingPongText/PingPongText.d.ts +10 -0
  330. package/dist/components/PingPongText/PingPongText.js +67 -63
  331. package/dist/components/PingPongText/PingPongText.js.map +1 -0
  332. package/dist/components/PingPongText/index.d.ts +2 -0
  333. package/dist/components/PingPongText/index.js +22 -25
  334. package/dist/components/PingPongText/index.js.map +1 -0
  335. package/dist/components/PixelatedScan/PixelatedScan.d.ts +13 -0
  336. package/dist/components/PixelatedScan/PixelatedScan.js +74 -126
  337. package/dist/components/PixelatedScan/PixelatedScan.js.map +1 -0
  338. package/dist/components/PixelatedScan/index.d.ts +2 -0
  339. package/dist/components/PixelatedScan/index.js +22 -25
  340. package/dist/components/PixelatedScan/index.js.map +1 -0
  341. package/dist/components/Portal/Portal.d.ts +20 -0
  342. package/dist/components/Portal/Portal.js +43 -46
  343. package/dist/components/Portal/Portal.js.map +1 -0
  344. package/dist/components/Portal/index.d.ts +2 -0
  345. package/dist/components/Portal/index.js +22 -25
  346. package/dist/components/Portal/index.js.map +1 -0
  347. package/dist/components/ProgressBar/ProgressBar.d.ts +32 -0
  348. package/dist/components/ProgressBar/ProgressBar.js +47 -105
  349. package/dist/components/ProgressBar/ProgressBar.js.map +1 -0
  350. package/dist/components/ProgressBar/index.d.ts +2 -0
  351. package/dist/components/ProgressBar/index.js +22 -25
  352. package/dist/components/ProgressBar/index.js.map +1 -0
  353. package/dist/components/ProgressTexts/ProgressTexts.d.ts +29 -0
  354. package/dist/components/ProgressTexts/ProgressTexts.js +29 -43
  355. package/dist/components/ProgressTexts/ProgressTexts.js.map +1 -0
  356. package/dist/components/ProgressTexts/index.d.ts +2 -0
  357. package/dist/components/ProgressTexts/index.js +22 -25
  358. package/dist/components/ProgressTexts/index.js.map +1 -0
  359. package/dist/components/Radio/Radio.d.ts +15 -0
  360. package/dist/components/Radio/Radio.js +28 -51
  361. package/dist/components/Radio/Radio.js.map +1 -0
  362. package/dist/components/Radio/index.d.ts +2 -0
  363. package/dist/components/Radio/index.js +22 -25
  364. package/dist/components/Radio/index.js.map +1 -0
  365. package/dist/components/Radio/variants/Checkmark/Checkmark.d.ts +7 -0
  366. package/dist/components/Radio/variants/Checkmark/Checkmark.js +12 -18
  367. package/dist/components/Radio/variants/Checkmark/Checkmark.js.map +1 -0
  368. package/dist/components/Radio/variants/Checkmark/index.d.ts +2 -0
  369. package/dist/components/Radio/variants/Checkmark/index.js +22 -25
  370. package/dist/components/Radio/variants/Checkmark/index.js.map +1 -0
  371. package/dist/components/Radio/variants/Generic/Generic.d.ts +7 -0
  372. package/dist/components/Radio/variants/Generic/Generic.js +12 -20
  373. package/dist/components/Radio/variants/Generic/Generic.js.map +1 -0
  374. package/dist/components/Radio/variants/Generic/index.d.ts +2 -0
  375. package/dist/components/Radio/variants/Generic/index.js +22 -25
  376. package/dist/components/Radio/variants/Generic/index.js.map +1 -0
  377. package/dist/components/SectionContainer/SectionContainer.d.ts +19 -0
  378. package/dist/components/SectionContainer/SectionContainer.js +16 -38
  379. package/dist/components/SectionContainer/SectionContainer.js.map +1 -0
  380. package/dist/components/SectionContainer/index.d.ts +2 -0
  381. package/dist/components/SectionContainer/index.js +22 -25
  382. package/dist/components/SectionContainer/index.js.map +1 -0
  383. package/dist/components/Select/Select.d.ts +42 -0
  384. package/dist/components/Select/Select.js +95 -128
  385. package/dist/components/Select/Select.js.map +1 -0
  386. package/dist/components/Select/index.d.ts +2 -0
  387. package/dist/components/Select/index.js +22 -25
  388. package/dist/components/Select/index.js.map +1 -0
  389. package/dist/components/Skeleton/Skeleton.d.ts +10 -0
  390. package/dist/components/Skeleton/Skeleton.js +14 -22
  391. package/dist/components/Skeleton/Skeleton.js.map +1 -0
  392. package/dist/components/Skeleton/index.d.ts +2 -0
  393. package/dist/components/Skeleton/index.js +22 -25
  394. package/dist/components/Skeleton/index.js.map +1 -0
  395. package/dist/components/Slider/Slider.d.ts +11 -0
  396. package/dist/components/Slider/Slider.e2e.d.ts +4 -0
  397. package/dist/components/Slider/Slider.e2e.js +6 -0
  398. package/dist/components/Slider/Slider.e2e.js.map +1 -0
  399. package/dist/components/Slider/Slider.js +59 -63
  400. package/dist/components/Slider/Slider.js.map +1 -0
  401. package/dist/components/Slider/index.d.ts +2 -0
  402. package/dist/components/Slider/index.js +22 -25
  403. package/dist/components/Slider/index.js.map +1 -0
  404. package/dist/components/Spacing/Spacing.d.ts +11 -0
  405. package/dist/components/Spacing/Spacing.js +17 -25
  406. package/dist/components/Spacing/Spacing.js.map +1 -0
  407. package/dist/components/Spacing/index.d.ts +2 -0
  408. package/dist/components/Spacing/index.js +22 -25
  409. package/dist/components/Spacing/index.js.map +1 -0
  410. package/dist/components/StaticScroller/StaticScroller.d.ts +7 -0
  411. package/dist/components/StaticScroller/StaticScroller.js +61 -65
  412. package/dist/components/StaticScroller/StaticScroller.js.map +1 -0
  413. package/dist/components/StaticScroller/index.d.ts +2 -0
  414. package/dist/components/StaticScroller/index.js +22 -25
  415. package/dist/components/StaticScroller/index.js.map +1 -0
  416. package/dist/components/Switch/Switch.d.ts +12 -0
  417. package/dist/components/Switch/Switch.js +26 -40
  418. package/dist/components/Switch/Switch.js.map +1 -0
  419. package/dist/components/Switch/index.d.ts +2 -0
  420. package/dist/components/Switch/index.js +22 -25
  421. package/dist/components/Switch/index.js.map +1 -0
  422. package/dist/components/Table/Table.d.ts +23 -0
  423. package/dist/components/Table/Table.js +56 -107
  424. package/dist/components/Table/Table.js.map +1 -0
  425. package/dist/components/Table/index.d.ts +2 -0
  426. package/dist/components/Table/index.js +22 -25
  427. package/dist/components/Table/index.js.map +1 -0
  428. package/dist/components/Tabs/Tabs.d.ts +28 -0
  429. package/dist/components/Tabs/Tabs.js +54 -59
  430. package/dist/components/Tabs/Tabs.js.map +1 -0
  431. package/dist/components/Tabs/index.d.ts +2 -0
  432. package/dist/components/Tabs/index.js +22 -25
  433. package/dist/components/Tabs/index.js.map +1 -0
  434. package/dist/components/Text/Text.d.ts +22 -0
  435. package/dist/components/Text/Text.js +30 -35
  436. package/dist/components/Text/Text.js.map +1 -0
  437. package/dist/components/Text/index.d.ts +2 -0
  438. package/dist/components/Text/index.js +22 -25
  439. package/dist/components/Text/index.js.map +1 -0
  440. package/dist/components/Transition/MasksFactory/DiagonalReveal.d.ts +1 -0
  441. package/dist/components/Transition/MasksFactory/DiagonalReveal.js +12 -46
  442. package/dist/components/Transition/MasksFactory/DiagonalReveal.js.map +1 -0
  443. package/dist/components/Transition/MasksFactory/DiagonalSquareToBalls.d.ts +5 -0
  444. package/dist/components/Transition/MasksFactory/DiagonalSquareToBalls.js +49 -71
  445. package/dist/components/Transition/MasksFactory/DiagonalSquareToBalls.js.map +1 -0
  446. package/dist/components/Transition/MasksFactory/PhysicsSquares.d.ts +7 -0
  447. package/dist/components/Transition/MasksFactory/PhysicsSquares.js +79 -89
  448. package/dist/components/Transition/MasksFactory/PhysicsSquares.js.map +1 -0
  449. package/dist/components/Transition/MasksFactory/SquareToBalls.d.ts +5 -0
  450. package/dist/components/Transition/MasksFactory/SquareToBalls.js +41 -60
  451. package/dist/components/Transition/MasksFactory/SquareToBalls.js.map +1 -0
  452. package/dist/components/Transition/MasksFactory/utils.d.ts +8 -0
  453. package/dist/components/Transition/MasksFactory/utils.js +27 -25
  454. package/dist/components/Transition/MasksFactory/utils.js.map +1 -0
  455. package/dist/components/Transition/Transition.d.ts +114 -0
  456. package/dist/components/Transition/Transition.js +319 -298
  457. package/dist/components/Transition/Transition.js.map +1 -0
  458. package/dist/components/Transition/index.d.ts +2 -0
  459. package/dist/components/Transition/index.js +22 -25
  460. package/dist/components/Transition/index.js.map +1 -0
  461. package/dist/components/UncontrolledTransition/UncontrolledTransition.d.ts +17 -0
  462. package/dist/components/UncontrolledTransition/UncontrolledTransition.js +93 -101
  463. package/dist/components/UncontrolledTransition/UncontrolledTransition.js.map +1 -0
  464. package/dist/components/UncontrolledTransition/UncontrolledTransition.sample.d.ts +1 -0
  465. package/dist/components/UncontrolledTransition/UncontrolledTransition.sample.js +19 -27
  466. package/dist/components/UncontrolledTransition/UncontrolledTransition.sample.js.map +1 -0
  467. package/dist/components/UncontrolledTransition/index.d.ts +2 -0
  468. package/dist/components/UncontrolledTransition/index.js +22 -25
  469. package/dist/components/UncontrolledTransition/index.js.map +1 -0
  470. package/dist/components/WalletConnectionWrapper/WalletConnectionWrapper.d.ts +55 -0
  471. package/dist/components/WalletConnectionWrapper/WalletConnectionWrapper.js +94 -101
  472. package/dist/components/WalletConnectionWrapper/WalletConnectionWrapper.js.map +1 -0
  473. package/dist/components/WalletConnectionWrapper/index.d.ts +2 -0
  474. package/dist/components/WalletConnectionWrapper/index.js +22 -25
  475. package/dist/components/WalletConnectionWrapper/index.js.map +1 -0
  476. package/dist/components/utilitary/ScrollAndFocusLock/ScrollAndFocusLock.d.ts +7 -0
  477. package/dist/components/utilitary/ScrollAndFocusLock/ScrollAndFocusLock.js +43 -53
  478. package/dist/components/utilitary/ScrollAndFocusLock/ScrollAndFocusLock.js.map +1 -0
  479. package/dist/components/utilitary/ScrollAndFocusLock/index.d.ts +2 -0
  480. package/dist/components/utilitary/ScrollAndFocusLock/index.js +22 -25
  481. package/dist/components/utilitary/ScrollAndFocusLock/index.js.map +1 -0
  482. package/dist/context/AsyncProcess.d.ts +23 -0
  483. package/dist/context/AsyncProcess.js +41 -68
  484. package/dist/context/AsyncProcess.js.map +1 -0
  485. package/dist/context/ContextAsyncControl.d.ts +39 -0
  486. package/dist/context/ContextAsyncControl.js +51 -72
  487. package/dist/context/ContextAsyncControl.js.map +1 -0
  488. package/dist/context/CustomBrowserRouter.d.ts +19 -0
  489. package/dist/context/CustomBrowserRouter.js +30 -44
  490. package/dist/context/CustomBrowserRouter.js.map +1 -0
  491. package/dist/context/OneUIProvider.d.ts +209 -0
  492. package/dist/context/OneUIProvider.js +108 -102
  493. package/dist/context/OneUIProvider.js.map +1 -0
  494. package/dist/hooks/logs/useDependencyChangeDetection.d.ts +1 -0
  495. package/dist/hooks/logs/useDependencyChangeDetection.js +16 -17
  496. package/dist/hooks/logs/useDependencyChangeDetection.js.map +1 -0
  497. package/dist/hooks/logs/useIsMounting.d.ts +1 -0
  498. package/dist/hooks/logs/useIsMounting.js +7 -10
  499. package/dist/hooks/logs/useIsMounting.js.map +1 -0
  500. package/dist/hooks/persistence/useLocalStorage.d.ts +2 -0
  501. package/dist/hooks/persistence/useLocalStorage.js +40 -41
  502. package/dist/hooks/persistence/useLocalStorage.js.map +1 -0
  503. package/dist/hooks/shims/ObjectWatchShim.d.ts +1 -0
  504. package/dist/hooks/shims/ObjectWatchShim.js +46 -47
  505. package/dist/hooks/shims/ObjectWatchShim.js.map +1 -0
  506. package/dist/hooks/ui/useAdaptiveImage.d.ts +7 -0
  507. package/dist/hooks/ui/useAdaptiveImage.js +34 -29
  508. package/dist/hooks/ui/useAdaptiveImage.js.map +1 -0
  509. package/dist/hooks/ui/useAlternating.d.ts +4 -0
  510. package/dist/hooks/ui/useAlternating.js +18 -18
  511. package/dist/hooks/ui/useAlternating.js.map +1 -0
  512. package/dist/hooks/ui/useBreakpoint.d.ts +5 -0
  513. package/dist/hooks/ui/useBreakpoint.js +18 -19
  514. package/dist/hooks/ui/useBreakpoint.js.map +1 -0
  515. package/dist/hooks/ui/useCustomScrollbar.d.ts +8 -0
  516. package/dist/hooks/ui/useCustomScrollbar.js +21 -26
  517. package/dist/hooks/ui/useCustomScrollbar.js.map +1 -0
  518. package/dist/hooks/ui/useEffectIf.d.ts +2 -0
  519. package/dist/hooks/ui/useEffectIf.js +9 -11
  520. package/dist/hooks/ui/useEffectIf.js.map +1 -0
  521. package/dist/hooks/ui/useMouseHover.d.ts +11 -0
  522. package/dist/hooks/ui/useMouseHover.js +19 -25
  523. package/dist/hooks/ui/useMouseHover.js.map +1 -0
  524. package/dist/hooks/ui/usePaginationControls.d.ts +14 -0
  525. package/dist/hooks/ui/usePaginationControls.js +136 -129
  526. package/dist/hooks/ui/usePaginationControls.js.map +1 -0
  527. package/dist/hooks/ui/useSnapToViewport.d.ts +5 -0
  528. package/dist/hooks/ui/useSnapToViewport.js +19 -20
  529. package/dist/hooks/ui/useSnapToViewport.js.map +1 -0
  530. package/dist/hooks/ui/useTilt.d.ts +46 -0
  531. package/dist/hooks/ui/useTilt.js +129 -145
  532. package/dist/hooks/ui/useTilt.js.map +1 -0
  533. package/dist/hooks/ui/useZoomable.d.ts +6 -0
  534. package/dist/hooks/ui/useZoomable.js +116 -123
  535. package/dist/hooks/ui/useZoomable.js.map +1 -0
  536. package/dist/hooks/useAsyncControl.d.ts +32 -0
  537. package/dist/hooks/useAsyncControl.js +52 -67
  538. package/dist/hooks/useAsyncControl.js.map +1 -0
  539. package/dist/hooks/useContainedRepositioning.d.ts +15 -0
  540. package/dist/hooks/useContainedRepositioning.js +71 -75
  541. package/dist/hooks/useContainedRepositioning.js.map +1 -0
  542. package/dist/hooks/useCustomHistory.d.ts +14 -0
  543. package/dist/hooks/useCustomHistory.js +12 -21
  544. package/dist/hooks/useCustomHistory.js.map +1 -0
  545. package/dist/hooks/useElementFit.d.ts +18 -0
  546. package/dist/hooks/useElementFit.js +48 -43
  547. package/dist/hooks/useElementFit.js.map +1 -0
  548. package/dist/hooks/useFirestoreWatch.d.ts +12 -0
  549. package/dist/hooks/useFirestoreWatch.js +41 -41
  550. package/dist/hooks/useFirestoreWatch.js.map +1 -0
  551. package/dist/hooks/useFreeze.d.ts +5 -0
  552. package/dist/hooks/useFreeze.js +8 -10
  553. package/dist/hooks/useFreeze.js.map +1 -0
  554. package/dist/hooks/useHero.d.ts +68 -0
  555. package/dist/hooks/useHero.js +271 -249
  556. package/dist/hooks/useHero.js.map +1 -0
  557. package/dist/hooks/useIntersection.d.ts +8 -0
  558. package/dist/hooks/useIntersection.js +27 -32
  559. package/dist/hooks/useIntersection.js.map +1 -0
  560. package/dist/hooks/useMergeRefs.d.ts +9 -0
  561. package/dist/hooks/useMergeRefs.js +24 -27
  562. package/dist/hooks/useMergeRefs.js.map +1 -0
  563. package/dist/hooks/useObserve.d.ts +6 -0
  564. package/dist/hooks/useObserve.js +14 -17
  565. package/dist/hooks/useObserve.js.map +1 -0
  566. package/dist/hooks/usePagination.d.ts +57 -0
  567. package/dist/hooks/usePagination.js +164 -147
  568. package/dist/hooks/usePagination.js.map +1 -0
  569. package/dist/hooks/usePooledOperation.d.ts +19 -0
  570. package/dist/hooks/usePooledOperation.js +57 -41
  571. package/dist/hooks/usePooledOperation.js.map +1 -0
  572. package/dist/hooks/usePooling.d.ts +22 -0
  573. package/dist/hooks/usePooling.js +49 -46
  574. package/dist/hooks/usePooling.js.map +1 -0
  575. package/dist/hooks/useRebound.d.ts +13 -0
  576. package/dist/hooks/useRebound.js +19 -23
  577. package/dist/hooks/useRebound.js.map +1 -0
  578. package/dist/hooks/useShortIntl.d.ts +21 -0
  579. package/dist/hooks/useShortIntl.js +50 -72
  580. package/dist/hooks/useShortIntl.js.map +1 -0
  581. package/dist/hooks/utility/useAsyncMemo.d.ts +13 -0
  582. package/dist/hooks/utility/useAsyncMemo.js +42 -36
  583. package/dist/hooks/utility/useAsyncMemo.js.map +1 -0
  584. package/dist/hooks/utility/useDepChange.d.ts +1 -0
  585. package/dist/hooks/utility/useDepChange.js +12 -14
  586. package/dist/hooks/utility/useDepChange.js.map +1 -0
  587. package/dist/hooks/utility/useEvents.d.ts +9 -0
  588. package/dist/hooks/utility/useEvents.js +21 -26
  589. package/dist/hooks/utility/useEvents.js.map +1 -0
  590. package/dist/hooks/utility/useImmediate.d.ts +4 -0
  591. package/dist/hooks/utility/useImmediate.js +5 -8
  592. package/dist/hooks/utility/useImmediate.js.map +1 -0
  593. package/dist/hooks/utility/useManualInit.d.ts +4 -0
  594. package/dist/hooks/utility/useManualInit.js +17 -19
  595. package/dist/hooks/utility/useManualInit.js.map +1 -0
  596. package/dist/hooks/utility/useModule.d.ts +4 -0
  597. package/dist/hooks/utility/useModule.js +9 -12
  598. package/dist/hooks/utility/useModule.js.map +1 -0
  599. package/dist/hooks/utility/useQuery.d.ts +7 -0
  600. package/dist/hooks/utility/useQuery.js +7 -13
  601. package/dist/hooks/utility/useQuery.js.map +1 -0
  602. package/dist/hooks/utility/useUniqueEffect.d.ts +1 -0
  603. package/dist/hooks/utility/useUniqueEffect.js +17 -17
  604. package/dist/hooks/utility/useUniqueEffect.js.map +1 -0
  605. package/dist/index.d.ts +223 -0
  606. package/dist/index.js +349 -2147
  607. package/dist/index.js.map +1 -0
  608. package/dist/index.preprocess.d.ts +1 -0
  609. package/dist/index.preprocess.js +72 -35
  610. package/dist/index.preprocess.js.map +1 -0
  611. package/dist/models/DebugLogger.d.ts +4 -0
  612. package/dist/models/DebugLogger.js +5 -8
  613. package/dist/models/DebugLogger.js.map +1 -0
  614. package/dist/models/GenericContract.d.ts +100 -0
  615. package/dist/models/GenericContract.js +13 -42
  616. package/dist/models/GenericContract.js.map +1 -0
  617. package/dist/models/ImageScales.d.ts +7 -0
  618. package/dist/models/ImageScales.js +12 -0
  619. package/dist/models/ImageScales.js.map +1 -0
  620. package/dist/models/Orbs.d.ts +44 -0
  621. package/dist/models/Orbs.js +47 -53
  622. package/dist/models/Orbs.js.map +1 -0
  623. package/dist/storybookUtils/index.d.ts +5 -0
  624. package/dist/storybookUtils/index.js +39 -40
  625. package/dist/storybookUtils/index.js.map +1 -0
  626. package/dist/type-utils.d.ts +59 -0
  627. package/dist/type-utils.js +2 -5
  628. package/dist/type-utils.js.map +1 -0
  629. package/dist/types.d.ts +79 -0
  630. package/dist/types.js +2 -5
  631. package/dist/types.js.map +1 -0
  632. package/dist/utils/blockchain.d.ts +8 -0
  633. package/dist/utils/blockchain.js +54 -35
  634. package/dist/utils/blockchain.js.map +1 -0
  635. package/dist/utils/e2e.d.ts +19 -0
  636. package/dist/utils/e2e.js +11 -21
  637. package/dist/utils/e2e.js.map +1 -0
  638. package/dist/utils/flatten.d.ts +5 -0
  639. package/dist/utils/flatten.js +12 -15
  640. package/dist/utils/flatten.js.map +1 -0
  641. package/dist/utils/formatters.d.ts +21 -0
  642. package/dist/utils/formatters.js +43 -48
  643. package/dist/utils/formatters.js.map +1 -0
  644. package/dist/utils/html.utils.d.ts +2 -0
  645. package/dist/utils/html.utils.js +6 -12
  646. package/dist/utils/html.utils.js.map +1 -0
  647. package/dist/utils/ownEvent.d.ts +4 -0
  648. package/dist/utils/ownEvent.js +7 -9
  649. package/dist/utils/ownEvent.js.map +1 -0
  650. package/dist/utils/test.d.ts +6 -0
  651. package/dist/utils/test.js +11 -13
  652. package/dist/utils/test.js.map +1 -0
  653. package/dist-ts/components/AdaptiveDialog/AdaptiveDialog.js +3 -1
  654. package/dist-ts/components/AdaptiveDialog/AdaptiveDialog.js.map +1 -1
  655. package/dist-ts/components/AdaptiveDialog/AdaptiveDialog.module.scss +17 -3
  656. package/dist-ts/components/Form/FormField/Extensions/DateField/DateField.js +2 -2
  657. package/dist-ts/components/Form/FormField/Extensions/DateField/DateField.js.map +1 -1
  658. package/dist-ts/components/Form/FormField/FormField.js +5 -5
  659. package/dist-ts/components/Form/FormField/FormField.js.map +1 -1
  660. package/dist-ts/context/OneUIProvider.d.ts +6 -0
  661. package/dist-ts/context/OneUIProvider.js.map +1 -1
  662. package/package.json +1 -1
@@ -1,439 +1,427 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.OrderableListReorderMode = void 0;
7
- exports.default = OrderableList;
8
- exports.useOrderableEvents = useOrderableEvents;
9
- exports.useOrderableListAnchor = useOrderableListAnchor;
10
- var _throttle = _interopRequireDefault(require("lodash/throttle"));
11
- var _react = _interopRequireWildcard(require("react"));
12
- var _UncontrolledTransition = _interopRequireDefault(require("../UncontrolledTransition"));
13
- var _TransitionModule = _interopRequireDefault(require("../Transition/Transition.module.scss"));
14
- var _useHero = _interopRequireDefault(require("../../hooks/useHero"));
15
- var _AnimatedEntrance = _interopRequireDefault(require("../AnimatedEntrance"));
16
- var _Transition = require("../Transition");
17
- var _OrderableListModule = _interopRequireDefault(require("./OrderableList.module.scss"));
18
- var _useEvents = _interopRequireDefault(require("../../hooks/utility/useEvents"));
19
- var _ownEvent = _interopRequireDefault(require("../../utils/ownEvent"));
20
- const _excluded = ["children", "className", "mode", "shrinkToOnOrder", "reorderingClassName", "cloneClassName"];
21
- 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); }
22
- 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; }
23
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24
- 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); }
25
- 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; }
26
- 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; }
27
- 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; }
28
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
29
- 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); }
30
- 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; }
31
- 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; }
32
- const OrderableListContext = /*#__PURE__*/(0, _react.createContext)(null);
33
- let OrderableListReorderMode = exports.OrderableListReorderMode = /*#__PURE__*/function (OrderableListReorderMode) {
34
- OrderableListReorderMode["VERTICAL"] = "v";
35
- OrderableListReorderMode["TWO_DIMENSIONS"] = "hv";
36
- return OrderableListReorderMode;
37
- }({});
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.useOrderableEvents = exports.useOrderableListAnchor = exports.OrderableListReorderMode = void 0;
18
+ const jsx_runtime_1 = require("react/jsx-runtime");
19
+ const throttle_1 = __importDefault(require("lodash/throttle"));
20
+ const react_1 = require("react");
21
+ const UncontrolledTransition_1 = __importDefault(require("../UncontrolledTransition"));
22
+ const Transition_module_scss_1 = __importDefault(require("../Transition/Transition.module.scss"));
23
+ const useHero_1 = __importDefault(require("../../hooks/useHero"));
24
+ const AnimatedEntrance_1 = __importDefault(require("../AnimatedEntrance"));
25
+ const Transition_1 = require("../Transition");
26
+ const OrderableList_module_scss_1 = __importDefault(require("./OrderableList.module.scss"));
27
+ const useEvents_1 = __importDefault(require("../../hooks/utility/useEvents"));
28
+ const ownEvent_1 = __importDefault(require("../../utils/ownEvent"));
29
+ const OrderableListContext = (0, react_1.createContext)(null);
30
+ var OrderableListReorderMode;
31
+ (function (OrderableListReorderMode) {
32
+ OrderableListReorderMode["VERTICAL"] = "v";
33
+ OrderableListReorderMode["TWO_DIMENSIONS"] = "hv";
34
+ })(OrderableListReorderMode || (exports.OrderableListReorderMode = OrderableListReorderMode = {}));
38
35
  function cleanKeys(keys) {
39
- return keys.map(a => a.split(";")[0]);
36
+ return keys.map((a) => a.split(";")[0]);
40
37
  }
41
-
42
38
  /**
43
39
  * This component displays a list of items that can be reordered by dragging them with your mouse or touch.
44
40
  * It supports simple vertical dragging and more advanced 2D reordering, with smooth animations
45
41
  * when items move around.
46
42
  */
47
- function OrderableList(_ref) {
48
- let {
49
- children,
50
- className = "",
51
- mode = OrderableListReorderMode.VERTICAL,
52
- shrinkToOnOrder,
53
- reorderingClassName,
54
- cloneClassName
55
- } = _ref,
56
- props = _objectWithoutProperties(_ref, _excluded);
57
- const availableKeys = children.map(a => a.key);
58
- const availableKeysDep = availableKeys.join(",");
59
- const initializeOrder = (0, _react.useCallback)(() => {
60
- const missingOrderKeys = "keyOrder" in props && props.keyOrder ? availableKeys.filter(a => !props.keyOrder.includes(a)) : [];
61
- return ("keyOrder" in props && props.keyOrder ? [...props.keyOrder, ...missingOrderKeys] : undefined) || availableKeys;
62
- }, [availableKeysDep, props.keyOrder]);
63
- const {
64
- current: anchorsList
65
- } = (0, _react.useRef)([]);
66
- const eventEmitter = (0, _useEvents.default)();
67
- const currentClone = (0, _react.useRef)(null);
68
- const currentWorkingKey = (0, _react.useRef)(undefined);
69
- const rootRef = (0, _react.useRef)(null);
70
- const [_order, setOrder] = (0, _react.useState)(initializeOrder);
71
- (0, _react.useEffect)(() => setOrder(initializeOrder()), [initializeOrder]);
72
- const order = (0, _react.useMemo)(() => {
73
- return ("currentOrder" in props ? props.currentOrder || _order : _order).filter(o => o.includes(";") || availableKeys.includes(o));
74
- }, [props.currentOrder, _order, availableKeysDep]);
75
- const cleanOrder = (0, _react.useMemo)(() => order.map(a => a.split(";")[0]), [order]);
76
- const orderId = (0, _react.useMemo)(() => "key-" + cleanOrder.join(""), [cleanOrder]);
77
- function rootEl() {
78
- if (mode === OrderableListReorderMode.TWO_DIMENSIONS) return rootRef.current.lastElementChild.lastElementChild;
79
- return rootRef.current;
80
- }
81
- const findParentElement = target => {
82
- let parent = target;
83
- while (parent.parentElement !== rootEl()) {
84
- if (parent.parentElement === null) break;
85
- parent = parent.parentElement;
43
+ function OrderableList(_a) {
44
+ var { children, className = "", mode = OrderableListReorderMode.VERTICAL, shrinkToOnOrder, reorderingClassName, cloneClassName } = _a, props = __rest(_a, ["children", "className", "mode", "shrinkToOnOrder", "reorderingClassName", "cloneClassName"]);
45
+ const availableKeys = children.map((a) => a.key);
46
+ const availableKeysDep = availableKeys.join(",");
47
+ const initializeOrder = (0, react_1.useCallback)(() => {
48
+ const missingOrderKeys = "keyOrder" in props && props.keyOrder
49
+ ? availableKeys.filter((a) => !props.keyOrder.includes(a))
50
+ : [];
51
+ return (("keyOrder" in props && props.keyOrder
52
+ ? [...props.keyOrder, ...missingOrderKeys]
53
+ : undefined) || availableKeys);
54
+ }, [availableKeysDep, props.keyOrder]);
55
+ const { current: anchorsList } = (0, react_1.useRef)([]);
56
+ const eventEmitter = (0, useEvents_1.default)();
57
+ const currentClone = (0, react_1.useRef)(null);
58
+ const currentWorkingKey = (0, react_1.useRef)(undefined);
59
+ const rootRef = (0, react_1.useRef)(null);
60
+ const [_order, setOrder] = (0, react_1.useState)(initializeOrder);
61
+ (0, react_1.useEffect)(() => setOrder(initializeOrder()), [initializeOrder]);
62
+ const order = (0, react_1.useMemo)(() => {
63
+ return ("currentOrder" in props ? props.currentOrder || _order : _order).filter((o) => o.includes(";") || availableKeys.includes(o));
64
+ }, [props.currentOrder, _order, availableKeysDep]);
65
+ const cleanOrder = (0, react_1.useMemo)(() => order.map((a) => a.split(";")[0]), [order]);
66
+ const orderId = (0, react_1.useMemo)(() => "key-" + cleanOrder.join(""), [cleanOrder]);
67
+ function rootEl() {
68
+ if (mode === OrderableListReorderMode.TWO_DIMENSIONS)
69
+ return rootRef.current.lastElementChild
70
+ .lastElementChild;
71
+ return rootRef.current;
86
72
  }
87
- if (process.env.NODE_ENV === "development" && parent === null) throw new Error("It seems like we could not find a relation between this element and the root list. Are you using portals maybe?");
88
- return parent;
89
- };
90
- (0, _react.useLayoutEffect)(() => {
91
- if (shrinkToOnOrder) rootEl().style.setProperty("--shrink-to", "".concat(shrinkToOnOrder, "px"));
92
- }, [shrinkToOnOrder]);
93
- const calculateReordering = (0, _react.useMemo)(() => {
94
- return (0, _throttle.default)((e, els, currentOrder) => {
95
- if (els.length > currentOrder.length || !currentWorkingKey.current) return;
96
- const parent = findParentElement(e.target);
97
- const indexOfKeyInCleanOrder = els.indexOf(parent);
98
- const keyOfTheOverElement = currentOrder[indexOfKeyInCleanOrder];
99
- const isDraggingOwnElement = currentWorkingKey.current === keyOfTheOverElement;
100
- if (indexOfKeyInCleanOrder === -1 || keyOfTheOverElement === undefined) return;
101
- if (!isDraggingOwnElement) {
102
- const {
103
- isAfter,
104
- isBefore
105
- } = (() => {
106
- if (mode === OrderableListReorderMode.TWO_DIMENSIONS) {
107
- const distanceFromLeft = e.offsetX;
108
- const widthOfEl = parent.clientWidth;
109
- const offset = widthOfEl * 0.25;
110
- const isAfter = distanceFromLeft > widthOfEl - offset;
111
- const isBefore = distanceFromLeft < offset;
112
- return {
113
- isAfter,
114
- isBefore
73
+ const findParentElement = (target) => {
74
+ let parent = target;
75
+ while (parent.parentElement !== rootEl()) {
76
+ if (parent.parentElement === null)
77
+ break;
78
+ parent = parent.parentElement;
79
+ }
80
+ if (process.env.NODE_ENV === "development" && parent === null)
81
+ throw new Error("It seems like we could not find a relation between this element and the root list. Are you using portals maybe?");
82
+ return parent;
83
+ };
84
+ (0, react_1.useLayoutEffect)(() => {
85
+ if (shrinkToOnOrder)
86
+ rootEl().style.setProperty("--shrink-to", `${shrinkToOnOrder}px`);
87
+ }, [shrinkToOnOrder]);
88
+ const calculateReordering = (0, react_1.useMemo)(() => {
89
+ return (0, throttle_1.default)((e, els, currentOrder) => {
90
+ if (els.length > currentOrder.length || !currentWorkingKey.current)
91
+ return;
92
+ const parent = findParentElement(e.target);
93
+ const indexOfKeyInCleanOrder = els.indexOf(parent);
94
+ const keyOfTheOverElement = currentOrder[indexOfKeyInCleanOrder];
95
+ const isDraggingOwnElement = currentWorkingKey.current === keyOfTheOverElement;
96
+ if (indexOfKeyInCleanOrder === -1 || keyOfTheOverElement === undefined)
97
+ return;
98
+ if (!isDraggingOwnElement) {
99
+ const { isAfter, isBefore } = (() => {
100
+ if (mode === OrderableListReorderMode.TWO_DIMENSIONS) {
101
+ const distanceFromLeft = e.offsetX;
102
+ const widthOfEl = parent.clientWidth;
103
+ const offset = widthOfEl * 0.25;
104
+ const isAfter = distanceFromLeft > widthOfEl - offset;
105
+ const isBefore = distanceFromLeft < offset;
106
+ return { isAfter, isBefore };
107
+ }
108
+ else {
109
+ const distanceFromTop = e.offsetY;
110
+ const heightOfEl = parent.clientHeight;
111
+ const offset = heightOfEl * 0.25;
112
+ const isAfter = distanceFromTop > heightOfEl - offset;
113
+ const isBefore = distanceFromTop < offset;
114
+ return { isAfter, isBefore };
115
+ }
116
+ })();
117
+ const checkIfCanMove = (keyOfOverElement) => {
118
+ return (keyOfOverElement === undefined ||
119
+ keyOfOverElement !== currentWorkingKey.current);
120
+ };
121
+ const indexOfTheNewElement = indexOfKeyInCleanOrder + (isAfter ? 1 : -1);
122
+ const shouldTriggerReordering = (isAfter || isBefore) &&
123
+ checkIfCanMove(currentOrder[indexOfTheNewElement]);
124
+ if (shouldTriggerReordering) {
125
+ setOrder((p) => {
126
+ const previousIndex = currentOrder.indexOf(currentWorkingKey.current);
127
+ const indexOfKeyInProvidedOrder = cleanKeys(p).indexOf(keyOfTheOverElement);
128
+ let indexOfTheNewElement = indexOfKeyInProvidedOrder + (isBefore ? -1 : 0);
129
+ if (previousIndex > indexOfTheNewElement)
130
+ indexOfTheNewElement++;
131
+ const orderWithoutCurrent = p.filter((a) => {
132
+ if (a.startsWith(`${currentWorkingKey.current};`))
133
+ return false;
134
+ return a !== currentWorkingKey.current;
135
+ });
136
+ orderWithoutCurrent.splice(indexOfTheNewElement, 0, `${currentWorkingKey.current};${Date.now()}`);
137
+ return orderWithoutCurrent;
138
+ });
139
+ }
140
+ }
141
+ }, 1000 / 60);
142
+ }, []);
143
+ (0, react_1.useEffect)(() => {
144
+ function registerListeners() {
145
+ const els = Array.from(rootEl().children);
146
+ const calculateReorderingCall = (e) => {
147
+ const els = Array.from(rootEl().children);
148
+ calculateReordering(e, els, cleanOrder);
115
149
  };
116
- } else {
117
- const distanceFromTop = e.offsetY;
118
- const heightOfEl = parent.clientHeight;
119
- const offset = heightOfEl * 0.25;
120
- const isAfter = distanceFromTop > heightOfEl - offset;
121
- const isBefore = distanceFromTop < offset;
122
- return {
123
- isAfter,
124
- isBefore
150
+ for (let el of els)
151
+ el.addEventListener("mousemove", calculateReorderingCall);
152
+ return () => {
153
+ for (let el of els)
154
+ el.removeEventListener("mousemove", calculateReorderingCall);
125
155
  };
126
- }
127
- })();
128
- const checkIfCanMove = keyOfOverElement => {
129
- return keyOfOverElement === undefined || keyOfOverElement !== currentWorkingKey.current;
130
- };
131
- const indexOfTheNewElement = indexOfKeyInCleanOrder + (isAfter ? 1 : -1);
132
- const shouldTriggerReordering = (isAfter || isBefore) && checkIfCanMove(currentOrder[indexOfTheNewElement]);
133
- if (shouldTriggerReordering) {
134
- setOrder(p => {
135
- const previousIndex = currentOrder.indexOf(currentWorkingKey.current);
136
- const indexOfKeyInProvidedOrder = cleanKeys(p).indexOf(keyOfTheOverElement);
137
- let indexOfTheNewElement = indexOfKeyInProvidedOrder + (isBefore ? -1 : 0);
138
- if (previousIndex > indexOfTheNewElement) indexOfTheNewElement++;
139
- const orderWithoutCurrent = p.filter(a => {
140
- if (a.startsWith("".concat(currentWorkingKey.current, ";"))) return false;
141
- return a !== currentWorkingKey.current;
142
- });
143
- orderWithoutCurrent.splice(indexOfTheNewElement, 0, "".concat(currentWorkingKey.current, ";").concat(Date.now()));
144
- return orderWithoutCurrent;
145
- });
146
156
  }
147
- }
148
- }, 1000 / 60);
149
- }, []);
150
- (0, _react.useEffect)(() => {
151
- function registerListeners() {
152
- const els = Array.from(rootEl().children);
153
- const calculateReorderingCall = e => {
154
- const els = Array.from(rootEl().children);
155
- calculateReordering(e, els, cleanOrder);
156
- };
157
- for (let el of els) el.addEventListener("mousemove", calculateReorderingCall);
158
- return () => {
159
- for (let el of els) el.removeEventListener("mousemove", calculateReorderingCall);
160
- };
161
- }
162
- if (mode === OrderableListReorderMode.VERTICAL) {
163
- return registerListeners();
164
- } else {
165
- let unsubscribe;
166
- let timeout = setTimeout(() => {
167
- unsubscribe = registerListeners();
168
- }, 250);
169
- return () => {
170
- clearTimeout(timeout);
171
- if (unsubscribe) unsubscribe();
172
- };
173
- }
174
- }, [cleanOrder]);
175
- (0, _react.useEffect)(() => {
176
- if ("onChangeKeyOrder" in props) props.onChangeKeyOrder(cleanKeys(_order));
177
- }, [_order]);
178
- const cleanOrderRef = (0, _react.useRef)(cleanOrder);
179
- (0, _react.useEffect)(() => {
180
- cleanOrderRef.current = cleanOrder;
181
- }, [cleanOrder]);
182
- const onAnchorClick = (0, _react.useCallback)(_ref2 => {
183
- let {
184
- target: anchor
185
- } = _ref2;
186
- let offset;
187
- const orderableListItemForAnchor = findParentElement(anchor);
188
- const box = orderableListItemForAnchor.getBoundingClientRect();
189
- const els = Array.from(rootEl().children);
190
- const elIndex = els.indexOf(orderableListItemForAnchor);
191
- const clone = orderableListItemForAnchor.cloneNode(true);
192
- currentClone.current = clone;
193
- if (process.env.NODE_ENV === "development") clone.setAttribute("data-testid", "orderable-list-clone");
194
- clone.setAttribute("data-orderableid", "orderable-list-clone");
195
- clone.style.width = "".concat(box.width, "px");
196
- clone.style.height = "".concat(box.height, "px");
197
- clone.style.top = "".concat(box.top, "px");
198
- clone.style.left = "".concat(box.left, "px");
199
- clone.classList.add(_OrderableListModule.default.clone);
200
- if (shrinkToOnOrder) clone.style.maxHeight = "".concat(box.height, "px");
201
- setTimeout(() => {
202
- if (cloneClassName) clone.classList.add(cloneClassName);
203
- if (shrinkToOnOrder) clone.style.maxHeight = "".concat(shrinkToOnOrder, "px");
204
- }, 0);
205
- orderableListItemForAnchor.classList.add(_OrderableListModule.default.currentOrdering);
206
- orderableListItemForAnchor.classList.remove(_OrderableListModule.default.visible);
207
- const movementControl = e => {
208
- const {
209
- x: x1,
210
- y: y1
211
- } = "touches" in e ? {
212
- x: e.touches[0].pageX,
213
- y: e.touches[0].pageY
214
- } : e;
215
- if (!offset) offset = [x1 - box.left, y1 - box.top];
216
- const [offsetX, offsetY] = offset;
217
- clone.style.top = "".concat(y1 - offsetY, "px");
218
- clone.style.left = "".concat(x1 - offsetX, "px");
219
- };
220
- document.body.appendChild(clone);
221
- const deleteClone = () => {
222
- window.removeEventListener("mousemove", movementControl);
223
- window.removeEventListener("touchmove", movementControl);
224
- window.removeEventListener("touchend", deleteClone);
225
- window.removeEventListener("mouseup", deleteClone);
226
- orderableListItemForAnchor.style.visibility = "initial";
227
- currentWorkingKey.current = undefined;
228
- window.document.body.classList.remove(_OrderableListModule.default.unselectable);
229
- {
157
+ if (mode === OrderableListReorderMode.VERTICAL) {
158
+ return registerListeners();
159
+ }
160
+ else {
161
+ let unsubscribe;
162
+ let timeout = setTimeout(() => {
163
+ unsubscribe = registerListeners();
164
+ }, 250);
165
+ return () => {
166
+ clearTimeout(timeout);
167
+ if (unsubscribe)
168
+ unsubscribe();
169
+ };
170
+ }
171
+ }, [cleanOrder]);
172
+ (0, react_1.useEffect)(() => {
173
+ if ("onChangeKeyOrder" in props)
174
+ props.onChangeKeyOrder(cleanKeys(_order));
175
+ }, [_order]);
176
+ const cleanOrderRef = (0, react_1.useRef)(cleanOrder);
177
+ (0, react_1.useEffect)(() => {
178
+ cleanOrderRef.current = cleanOrder;
179
+ }, [cleanOrder]);
180
+ const onAnchorClick = (0, react_1.useCallback)(({ target: anchor }) => {
181
+ let offset;
182
+ const orderableListItemForAnchor = findParentElement(anchor);
183
+ const box = orderableListItemForAnchor.getBoundingClientRect();
230
184
  const els = Array.from(rootEl().children);
231
- const elInvisible = els.find(a => !a.classList.contains(_OrderableListModule.default.visible) && a.style.maxHeight !== "0px");
232
- if (shrinkToOnOrder) {
233
- const child = elInvisible.lastElementChild;
234
- child.style.maxHeight = "".concat(child.scrollHeight, "px");
235
- child.classList.add(_OrderableListModule.default.transitionHeight);
236
- const onEnd = (0, _ownEvent.default)(() => {
237
- child.removeEventListener("transitionend", onEnd);
238
- child.style.maxHeight = "initial";
239
- child.classList.remove(_OrderableListModule.default.transitionHeight);
240
- });
241
- child.addEventListener("transitionend", onEnd);
185
+ const elIndex = els.indexOf(orderableListItemForAnchor);
186
+ const clone = orderableListItemForAnchor.cloneNode(true);
187
+ currentClone.current = clone;
188
+ if (process.env.NODE_ENV === "development")
189
+ clone.setAttribute("data-testid", "orderable-list-clone");
190
+ clone.setAttribute("data-orderableid", "orderable-list-clone");
191
+ clone.style.width = `${box.width}px`;
192
+ clone.style.height = `${box.height}px`;
193
+ clone.style.top = `${box.top}px`;
194
+ clone.style.left = `${box.left}px`;
195
+ clone.classList.add(OrderableList_module_scss_1.default.clone);
196
+ if (shrinkToOnOrder)
197
+ clone.style.maxHeight = `${box.height}px`;
198
+ setTimeout(() => {
199
+ if (cloneClassName)
200
+ clone.classList.add(cloneClassName);
201
+ if (shrinkToOnOrder)
202
+ clone.style.maxHeight = `${shrinkToOnOrder}px`;
203
+ }, 0);
204
+ orderableListItemForAnchor.classList.add(OrderableList_module_scss_1.default.currentOrdering);
205
+ orderableListItemForAnchor.classList.remove(OrderableList_module_scss_1.default.visible);
206
+ const movementControl = (e) => {
207
+ const { x: x1, y: y1 } = "touches" in e ? { x: e.touches[0].pageX, y: e.touches[0].pageY } : e;
208
+ if (!offset)
209
+ offset = [x1 - box.left, y1 - box.top];
210
+ const [offsetX, offsetY] = offset;
211
+ clone.style.top = `${y1 - offsetY}px`;
212
+ clone.style.left = `${x1 - offsetX}px`;
213
+ };
214
+ document.body.appendChild(clone);
215
+ const deleteClone = () => {
216
+ window.removeEventListener("mousemove", movementControl);
217
+ window.removeEventListener("touchmove", movementControl);
218
+ window.removeEventListener("touchend", deleteClone);
219
+ window.removeEventListener("mouseup", deleteClone);
220
+ orderableListItemForAnchor.style.visibility = "initial";
221
+ currentWorkingKey.current = undefined;
222
+ window.document.body.classList.remove(OrderableList_module_scss_1.default.unselectable);
223
+ {
224
+ const els = Array.from(rootEl().children);
225
+ const elInvisible = els.find((a) => !a.classList.contains(OrderableList_module_scss_1.default.visible) &&
226
+ a.style.maxHeight !== "0px");
227
+ if (shrinkToOnOrder) {
228
+ const child = elInvisible.lastElementChild;
229
+ child.style.maxHeight = `${child.scrollHeight}px`;
230
+ child.classList.add(OrderableList_module_scss_1.default.transitionHeight);
231
+ const onEnd = (0, ownEvent_1.default)(() => {
232
+ child.removeEventListener("transitionend", onEnd);
233
+ child.style.maxHeight = `initial`;
234
+ child.classList.remove(OrderableList_module_scss_1.default.transitionHeight);
235
+ });
236
+ child.addEventListener("transitionend", onEnd);
237
+ }
238
+ const box = elInvisible.getBoundingClientRect();
239
+ function cleanUp() {
240
+ if (shrinkToOnOrder) {
241
+ rootEl().style.removeProperty("padding-top");
242
+ rootEl().style.removeProperty("min-height");
243
+ }
244
+ eventEmitter.dispatcher("order-stop");
245
+ rootEl().classList.remove(OrderableList_module_scss_1.default.ordering);
246
+ if (reorderingClassName)
247
+ rootEl().classList.remove(reorderingClassName);
248
+ for (let el of els)
249
+ el.classList.remove(OrderableList_module_scss_1.default.visible);
250
+ clone.remove();
251
+ currentClone.current = null;
252
+ for (let el of Array.from(elInvisible.children))
253
+ el.style.height = "";
254
+ }
255
+ if (clone.style.top.startsWith(Math.floor(box.top).toString()) &&
256
+ clone.style.left.startsWith(Math.floor(box.left).toString())) {
257
+ cleanUp();
258
+ }
259
+ else {
260
+ clone.style.top = `${box.top}px`;
261
+ clone.style.left = `${box.left}px`;
262
+ clone.style.transition = `top 500ms linear, left 500ms linear`;
263
+ clone.addEventListener("transitionend", () => {
264
+ cleanUp();
265
+ });
266
+ }
267
+ }
268
+ };
269
+ for (let el of els) {
270
+ el.classList.add(OrderableList_module_scss_1.default.visible);
242
271
  }
243
- const box = elInvisible.getBoundingClientRect();
244
- function cleanUp() {
245
- if (shrinkToOnOrder) {
246
- rootEl().style.removeProperty("padding-top");
247
- rootEl().style.removeProperty("min-height");
248
- }
249
- eventEmitter.dispatcher("order-stop");
250
- rootEl().classList.remove(_OrderableListModule.default.ordering);
251
- if (reorderingClassName) rootEl().classList.remove(reorderingClassName);
252
- for (let el of els) el.classList.remove(_OrderableListModule.default.visible);
253
- clone.remove();
254
- currentClone.current = null;
255
- for (let el of Array.from(elInvisible.children)) el.style.height = "";
272
+ if (shrinkToOnOrder) {
273
+ for (let el of els)
274
+ el.style.maxHeight = `${el.scrollHeight}px`;
275
+ const targetHeight = elIndex * shrinkToOnOrder;
276
+ const currentHeight = orderableListItemForAnchor.offsetTop - els[0].offsetTop;
277
+ const paddingTop = currentHeight - targetHeight;
278
+ rootEl().style.paddingTop = `${paddingTop}px`;
279
+ rootEl().style.minHeight = `${rootEl().clientHeight}px`;
256
280
  }
257
- if (clone.style.top.startsWith(Math.floor(box.top).toString()) && clone.style.left.startsWith(Math.floor(box.left).toString())) {
258
- cleanUp();
259
- } else {
260
- clone.style.top = "".concat(box.top, "px");
261
- clone.style.left = "".concat(box.left, "px");
262
- clone.style.transition = "top 500ms linear, left 500ms linear";
263
- clone.addEventListener("transitionend", () => {
264
- cleanUp();
265
- });
281
+ orderableListItemForAnchor.style.visibility = "hidden";
282
+ orderableListItemForAnchor.classList.remove(OrderableList_module_scss_1.default.visible);
283
+ rootEl().classList.add(OrderableList_module_scss_1.default.ordering);
284
+ if (reorderingClassName)
285
+ rootEl().classList.add(reorderingClassName);
286
+ currentWorkingKey.current = cleanOrderRef.current[elIndex];
287
+ eventEmitter.dispatcher("order-start");
288
+ window.document.body.classList.add(OrderableList_module_scss_1.default.unselectable);
289
+ window.addEventListener("mouseup", deleteClone);
290
+ window.addEventListener("mousemove", movementControl);
291
+ window.addEventListener("touchend", deleteClone);
292
+ window.addEventListener("touchmove", movementControl);
293
+ }, []);
294
+ (0, react_1.useLayoutEffect)(() => {
295
+ if (currentClone.current) {
296
+ const els = Array.from(rootEl().children);
297
+ const elInvisible = els.find((a) => !a.classList.contains(OrderableList_module_scss_1.default.visible) && a.style.maxHeight !== "0px");
298
+ elInvisible.children[0].style.height = `${currentClone.current.clientHeight}px`;
299
+ setTimeout(() => {
300
+ elInvisible.children[1].style.height = `${currentClone.current.clientHeight}px`;
301
+ }, 150);
266
302
  }
267
- }
268
- };
269
- for (let el of els) {
270
- el.classList.add(_OrderableListModule.default.visible);
271
- }
272
- if (shrinkToOnOrder) {
273
- for (let el of els) el.style.maxHeight = "".concat(el.scrollHeight, "px");
274
- const targetHeight = elIndex * shrinkToOnOrder;
275
- const currentHeight = orderableListItemForAnchor.offsetTop - els[0].offsetTop;
276
- const paddingTop = currentHeight - targetHeight;
277
- rootEl().style.paddingTop = "".concat(paddingTop, "px");
278
- rootEl().style.minHeight = "".concat(rootEl().clientHeight, "px");
279
- }
280
- orderableListItemForAnchor.style.visibility = "hidden";
281
- orderableListItemForAnchor.classList.remove(_OrderableListModule.default.visible);
282
- rootEl().classList.add(_OrderableListModule.default.ordering);
283
- if (reorderingClassName) rootEl().classList.add(reorderingClassName);
284
- currentWorkingKey.current = cleanOrderRef.current[elIndex];
285
- eventEmitter.dispatcher("order-start");
286
- window.document.body.classList.add(_OrderableListModule.default.unselectable);
287
- window.addEventListener("mouseup", deleteClone);
288
- window.addEventListener("mousemove", movementControl);
289
- window.addEventListener("touchend", deleteClone);
290
- window.addEventListener("touchmove", movementControl);
291
- }, []);
292
- (0, _react.useLayoutEffect)(() => {
293
- if (currentClone.current) {
294
- const els = Array.from(rootEl().children);
295
- const elInvisible = els.find(a => !a.classList.contains(_OrderableListModule.default.visible) && a.style.maxHeight !== "0px");
296
- elInvisible.children[0].style.height = "".concat(currentClone.current.clientHeight, "px");
297
- setTimeout(() => {
298
- elInvisible.children[1].style.height = "".concat(currentClone.current.clientHeight, "px");
299
- }, 150);
300
- }
301
- }, [cleanOrder]);
302
- const toSpread = _objectSpread({}, props);
303
- delete toSpread.keyOrder;
304
- delete toSpread.onChangeKeyOrder;
305
- const childrenToRender = [...children].filter(a => cleanOrder.includes(a.key)).sort((a, b) => cleanOrder.indexOf(a.key) - cleanOrder.indexOf(b.key)).map((a, i) => _objectSpread(_objectSpread({}, a), {}, {
306
- key: order[i]
307
- }));
308
- (0, _react.useLayoutEffect)(() => {
309
- rootEl().addEventListener("touchstart", e => {
310
- const relatedAnchor = anchorsList.find(anchor => anchor.contains(e.target));
311
- if (relatedAnchor) {
312
- e.preventDefault();
313
- onAnchorClick({
314
- target: relatedAnchor
303
+ }, [cleanOrder]);
304
+ const toSpread = Object.assign({}, props);
305
+ delete toSpread.keyOrder;
306
+ delete toSpread.onChangeKeyOrder;
307
+ const childrenToRender = [...children]
308
+ .filter((a) => cleanOrder.includes(a.key))
309
+ .sort((a, b) => cleanOrder.indexOf(a.key) -
310
+ cleanOrder.indexOf(b.key))
311
+ .map((a, i) => (Object.assign(Object.assign({}, a), { key: order[i] })));
312
+ (0, react_1.useLayoutEffect)(() => {
313
+ rootEl().addEventListener("touchstart", (e) => {
314
+ const relatedAnchor = anchorsList.find((anchor) => anchor.contains(e.target));
315
+ if (relatedAnchor) {
316
+ e.preventDefault();
317
+ onAnchorClick({
318
+ target: relatedAnchor,
319
+ });
320
+ const moveCb = (0, throttle_1.default)((e) => {
321
+ const touch = e.touches[0];
322
+ const [x, y] = [touch.clientX, touch.clientY];
323
+ const els = Array.from(rootEl().children);
324
+ const currentElementIdx = els.findIndex((c, i) => {
325
+ const rect = c === null || c === void 0 ? void 0 : c.getBoundingClientRect();
326
+ if (!rect)
327
+ return false;
328
+ return rect.top < y && rect.top + rect.height > y;
329
+ });
330
+ if (currentElementIdx !== -1) {
331
+ const el = els[currentElementIdx];
332
+ const rect = el.getBoundingClientRect();
333
+ calculateReordering({
334
+ target: el,
335
+ offsetY: y - rect.top,
336
+ }, els, cleanOrderRef.current);
337
+ }
338
+ }, 500);
339
+ const t = e.target;
340
+ const touchMoveCb = (e) => {
341
+ e.stopPropagation();
342
+ window.dispatchEvent(new TouchEvent(e.type, e));
343
+ moveCb(e);
344
+ };
345
+ const removeCb = (e) => {
346
+ t.removeEventListener("touchmove", touchMoveCb);
347
+ t.removeEventListener("touchend", removeCb);
348
+ window.dispatchEvent(new TouchEvent(e.type, e));
349
+ };
350
+ t.addEventListener("touchmove", touchMoveCb);
351
+ t.addEventListener("touchend", removeCb);
352
+ }
315
353
  });
316
- const moveCb = (0, _throttle.default)(e => {
317
- const touch = e.touches[0];
318
- const [x, y] = [touch.clientX, touch.clientY];
319
- const els = Array.from(rootEl().children);
320
- const currentElementIdx = els.findIndex((c, i) => {
321
- const rect = c === null || c === void 0 ? void 0 : c.getBoundingClientRect();
322
- if (!rect) return false;
323
- return rect.top < y && rect.top + rect.height > y;
324
- });
325
- if (currentElementIdx !== -1) {
326
- const el = els[currentElementIdx];
327
- const rect = el.getBoundingClientRect();
328
- calculateReordering({
329
- target: el,
330
- offsetY: y - rect.top
331
- }, els, cleanOrderRef.current);
332
- }
333
- }, 500);
334
- const t = e.target;
335
- const touchMoveCb = e => {
336
- e.stopPropagation();
337
- window.dispatchEvent(new TouchEvent(e.type, e));
338
- moveCb(e);
339
- };
340
- const removeCb = e => {
341
- t.removeEventListener("touchmove", touchMoveCb);
342
- t.removeEventListener("touchend", removeCb);
343
- window.dispatchEvent(new TouchEvent(e.type, e));
344
- };
345
- t.addEventListener("touchmove", touchMoveCb);
346
- t.addEventListener("touchend", removeCb);
347
- }
348
- });
349
- }, []);
350
- const e = (0, _react.useMemo)(() => ({
351
- bindAnchor: el => {
352
- el.addEventListener("mousedown", onAnchorClick);
353
- anchorsList.push(el);
354
- },
355
- unbindAnchor: el => {
356
- el.removeEventListener("mousedown", onAnchorClick);
357
- anchorsList.splice(anchorsList.indexOf(el), 1);
358
- },
359
- on: eventEmitter.subscriber
360
- }), []);
361
- return /*#__PURE__*/_react.default.createElement(OrderableListContext.Provider, {
362
- value: e
363
- }, /*#__PURE__*/_react.default.createElement("div", _extends({
364
- ref: rootRef,
365
- className: "".concat(_OrderableListModule.default.root, " ").concat(className, " ").concat(shrinkToOnOrder ? _OrderableListModule.default.shrinkable : "")
366
- }, toSpread), mode === OrderableListReorderMode.VERTICAL ? /*#__PURE__*/_react.default.createElement(_AnimatedEntrance.default, null, childrenToRender) : /*#__PURE__*/_react.default.createElement(_UncontrolledTransition.default, {
367
- className: _OrderableListModule.default.transition,
368
- transitionType: _Transition.TransitionAnimationTypes.CUSTOM,
369
- config: {
370
- backward: {
371
- elementEntering: "",
372
- elementExiting: ""
373
- },
374
- forward: {
375
- elementEntering: _OrderableListModule.default.stubEntering,
376
- elementExiting: _TransitionModule.default.fadeOut
377
- }
378
- },
379
- contentClassName: "".concat(className)
380
- }, /*#__PURE__*/_react.default.createElement(_react.Fragment, {
381
- key: orderId
382
- }, [...children].filter(a => cleanOrder.includes(a.key)).sort((a, b) => cleanOrder.indexOf(a.key) - cleanOrder.indexOf(b.key)).map((a, i) => /*#__PURE__*/_react.default.createElement(HeroWrapper, {
383
- key: i,
384
- id: a.key
385
- }, a))))));
354
+ }, []);
355
+ const e = (0, react_1.useMemo)(() => ({
356
+ bindAnchor: (el) => {
357
+ el.addEventListener("mousedown", onAnchorClick);
358
+ anchorsList.push(el);
359
+ },
360
+ unbindAnchor: (el) => {
361
+ el.removeEventListener("mousedown", onAnchorClick);
362
+ anchorsList.splice(anchorsList.indexOf(el), 1);
363
+ },
364
+ on: eventEmitter.subscriber,
365
+ }), []);
366
+ return ((0, jsx_runtime_1.jsx)(OrderableListContext.Provider, { value: e, children: (0, jsx_runtime_1.jsx)("div", Object.assign({ ref: rootRef, className: `${OrderableList_module_scss_1.default.root} ${className} ${shrinkToOnOrder ? OrderableList_module_scss_1.default.shrinkable : ""}` }, toSpread, { children: mode === OrderableListReorderMode.VERTICAL ? ((0, jsx_runtime_1.jsx)(AnimatedEntrance_1.default, { children: childrenToRender })) : ((0, jsx_runtime_1.jsx)(UncontrolledTransition_1.default, { className: OrderableList_module_scss_1.default.transition, transitionType: Transition_1.TransitionAnimationTypes.CUSTOM, config: {
367
+ backward: {
368
+ elementEntering: "",
369
+ elementExiting: "",
370
+ },
371
+ forward: {
372
+ elementEntering: OrderableList_module_scss_1.default.stubEntering,
373
+ elementExiting: Transition_module_scss_1.default.fadeOut,
374
+ },
375
+ }, contentClassName: `${className}`, children: (0, jsx_runtime_1.jsx)(react_1.Fragment, { children: [...children]
376
+ .filter((a) => cleanOrder.includes(a.key))
377
+ .sort((a, b) => cleanOrder.indexOf(a.key) -
378
+ cleanOrder.indexOf(b.key))
379
+ .map((a, i) => ((0, jsx_runtime_1.jsx)(HeroWrapper, { id: a.key, children: a }, i))) }, orderId) })) })) }));
386
380
  }
387
- function HeroWrapper(_ref3) {
388
- let {
389
- children,
390
- id
391
- } = _ref3;
392
- const {
393
- heroRef
394
- } = (0, _useHero.default)(id, undefined, {
395
- onHeroStart: (_c, _o, t) => {
396
- t.querySelectorAll("img").forEach(img => img.style.visibility = "hidden");
397
- },
398
- onHeroCloned(clone) {
399
- // if (!clone.classList.contains(Styles.visible)) clone.style.opacity = "0";
400
- },
401
- onHeroEnd: () => {
402
- if (heroRef.current) heroRef.current.querySelectorAll("img").forEach(img => img.style.visibility = "");
403
- }
404
- });
405
- return /*#__PURE__*/_react.default.createElement("div", {
406
- ref: heroRef
407
- }, children);
381
+ exports.default = OrderableList;
382
+ function HeroWrapper({ children, id }) {
383
+ const { heroRef } = (0, useHero_1.default)(id, undefined, {
384
+ onHeroStart: (_c, _o, t) => {
385
+ t.querySelectorAll("img").forEach((img) => (img.style.visibility = "hidden"));
386
+ },
387
+ onHeroCloned(clone) {
388
+ // if (!clone.classList.contains(Styles.visible)) clone.style.opacity = "0";
389
+ },
390
+ onHeroEnd: () => {
391
+ if (heroRef.current)
392
+ heroRef.current
393
+ .querySelectorAll("img")
394
+ .forEach((img) => (img.style.visibility = ""));
395
+ },
396
+ });
397
+ return (0, jsx_runtime_1.jsx)("div", { ref: heroRef, children: children });
408
398
  }
409
399
  function useOrderableListAnchor() {
410
- const anchorRef = (0, _react.useRef)(null);
411
- const ctx = (0, _react.useContext)(OrderableListContext);
412
- (0, _react.useLayoutEffect)(() => {
413
- if (!ctx) return;
414
- const {
415
- bindAnchor,
416
- unbindAnchor
417
- } = ctx;
418
- bindAnchor(anchorRef.current);
419
- return () => unbindAnchor(anchorRef.current);
420
- }, []);
421
- return {
422
- anchorRef: ctx ? anchorRef : undefined
423
- };
400
+ const anchorRef = (0, react_1.useRef)(null);
401
+ const ctx = (0, react_1.useContext)(OrderableListContext);
402
+ (0, react_1.useLayoutEffect)(() => {
403
+ if (!ctx)
404
+ return;
405
+ const { bindAnchor, unbindAnchor } = ctx;
406
+ bindAnchor(anchorRef.current);
407
+ return () => unbindAnchor(anchorRef.current);
408
+ }, []);
409
+ return {
410
+ anchorRef: ctx ? anchorRef : undefined,
411
+ };
424
412
  }
413
+ exports.useOrderableListAnchor = useOrderableListAnchor;
425
414
  function useOrderableEvents(events) {
426
- const {
427
- on
428
- } = (0, _react.useContext)(OrderableListContext);
429
- (0, _react.useEffect)(() => {
430
- const unsubscribers = [];
431
- for (let eventName in events) {
432
- unsubscribers.push(on(eventName, events[eventName]));
433
- }
434
- return () => {
435
- unsubscribers.forEach(u => u());
436
- };
437
- }, [events]);
415
+ const { on } = (0, react_1.useContext)(OrderableListContext);
416
+ (0, react_1.useEffect)(() => {
417
+ const unsubscribers = [];
418
+ for (let eventName in events) {
419
+ unsubscribers.push(on(eventName, events[eventName]));
420
+ }
421
+ return () => {
422
+ unsubscribers.forEach((u) => u());
423
+ };
424
+ }, [events]);
438
425
  }
439
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdGhyb3R0bGUiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX1VuY29udHJvbGxlZFRyYW5zaXRpb24iLCJfVHJhbnNpdGlvbk1vZHVsZSIsIl91c2VIZXJvIiwiX0FuaW1hdGVkRW50cmFuY2UiLCJfVHJhbnNpdGlvbiIsIl9PcmRlcmFibGVMaXN0TW9kdWxlIiwiX3VzZUV2ZW50cyIsIl9vd25FdmVudCIsIl9leGNsdWRlZCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJfZXh0ZW5kcyIsImFzc2lnbiIsImJpbmQiLCJ0YXJnZXQiLCJpIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic291cmNlIiwiYXBwbHkiLCJvd25LZXlzIiwib2JqZWN0IiwiZW51bWVyYWJsZU9ubHkiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic3ltYm9scyIsImZpbHRlciIsInN5bSIsImVudW1lcmFibGUiLCJwdXNoIiwiX29iamVjdFNwcmVhZCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImFyZyIsIl90b1ByaW1pdGl2ZSIsIlN0cmluZyIsImlucHV0IiwiaGludCIsInByaW0iLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsInVuZGVmaW5lZCIsInJlcyIsIlR5cGVFcnJvciIsIk51bWJlciIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsImV4Y2x1ZGVkIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJzb3VyY2VTeW1ib2xLZXlzIiwiaW5kZXhPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwic291cmNlS2V5cyIsIk9yZGVyYWJsZUxpc3RDb250ZXh0IiwiY3JlYXRlQ29udGV4dCIsIk9yZGVyYWJsZUxpc3RSZW9yZGVyTW9kZSIsImV4cG9ydHMiLCJjbGVhbktleXMiLCJtYXAiLCJhIiwic3BsaXQiLCJPcmRlcmFibGVMaXN0IiwiX3JlZiIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwibW9kZSIsIlZFUlRJQ0FMIiwic2hyaW5rVG9Pbk9yZGVyIiwicmVvcmRlcmluZ0NsYXNzTmFtZSIsImNsb25lQ2xhc3NOYW1lIiwicHJvcHMiLCJhdmFpbGFibGVLZXlzIiwiYXZhaWxhYmxlS2V5c0RlcCIsImpvaW4iLCJpbml0aWFsaXplT3JkZXIiLCJ1c2VDYWxsYmFjayIsIm1pc3NpbmdPcmRlcktleXMiLCJrZXlPcmRlciIsImluY2x1ZGVzIiwiY3VycmVudCIsImFuY2hvcnNMaXN0IiwidXNlUmVmIiwiZXZlbnRFbWl0dGVyIiwidXNlRXZlbnRzIiwiY3VycmVudENsb25lIiwiY3VycmVudFdvcmtpbmdLZXkiLCJyb290UmVmIiwiX29yZGVyIiwic2V0T3JkZXIiLCJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsIm9yZGVyIiwidXNlTWVtbyIsImN1cnJlbnRPcmRlciIsIm8iLCJjbGVhbk9yZGVyIiwib3JkZXJJZCIsInJvb3RFbCIsIlRXT19ESU1FTlNJT05TIiwibGFzdEVsZW1lbnRDaGlsZCIsImZpbmRQYXJlbnRFbGVtZW50IiwicGFyZW50IiwicGFyZW50RWxlbWVudCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIkVycm9yIiwidXNlTGF5b3V0RWZmZWN0Iiwic3R5bGUiLCJzZXRQcm9wZXJ0eSIsImNvbmNhdCIsImNhbGN1bGF0ZVJlb3JkZXJpbmciLCJ0aHJvdHRsZSIsImUiLCJlbHMiLCJpbmRleE9mS2V5SW5DbGVhbk9yZGVyIiwia2V5T2ZUaGVPdmVyRWxlbWVudCIsImlzRHJhZ2dpbmdPd25FbGVtZW50IiwiaXNBZnRlciIsImlzQmVmb3JlIiwiZGlzdGFuY2VGcm9tTGVmdCIsIm9mZnNldFgiLCJ3aWR0aE9mRWwiLCJjbGllbnRXaWR0aCIsIm9mZnNldCIsImRpc3RhbmNlRnJvbVRvcCIsIm9mZnNldFkiLCJoZWlnaHRPZkVsIiwiY2xpZW50SGVpZ2h0IiwiY2hlY2tJZkNhbk1vdmUiLCJrZXlPZk92ZXJFbGVtZW50IiwiaW5kZXhPZlRoZU5ld0VsZW1lbnQiLCJzaG91bGRUcmlnZ2VyUmVvcmRlcmluZyIsInAiLCJwcmV2aW91c0luZGV4IiwiaW5kZXhPZktleUluUHJvdmlkZWRPcmRlciIsIm9yZGVyV2l0aG91dEN1cnJlbnQiLCJzdGFydHNXaXRoIiwic3BsaWNlIiwiRGF0ZSIsIm5vdyIsInJlZ2lzdGVyTGlzdGVuZXJzIiwiQXJyYXkiLCJmcm9tIiwiY2FsY3VsYXRlUmVvcmRlcmluZ0NhbGwiLCJlbCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidW5zdWJzY3JpYmUiLCJ0aW1lb3V0Iiwic2V0VGltZW91dCIsImNsZWFyVGltZW91dCIsIm9uQ2hhbmdlS2V5T3JkZXIiLCJjbGVhbk9yZGVyUmVmIiwib25BbmNob3JDbGljayIsIl9yZWYyIiwiYW5jaG9yIiwib3JkZXJhYmxlTGlzdEl0ZW1Gb3JBbmNob3IiLCJib3giLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJlbEluZGV4IiwiY2xvbmUiLCJjbG9uZU5vZGUiLCJzZXRBdHRyaWJ1dGUiLCJ3aWR0aCIsImhlaWdodCIsInRvcCIsImxlZnQiLCJjbGFzc0xpc3QiLCJhZGQiLCJTdHlsZXMiLCJtYXhIZWlnaHQiLCJjdXJyZW50T3JkZXJpbmciLCJyZW1vdmUiLCJ2aXNpYmxlIiwibW92ZW1lbnRDb250cm9sIiwieCIsIngxIiwieSIsInkxIiwidG91Y2hlcyIsInBhZ2VYIiwicGFnZVkiLCJkb2N1bWVudCIsImJvZHkiLCJhcHBlbmRDaGlsZCIsImRlbGV0ZUNsb25lIiwid2luZG93IiwidmlzaWJpbGl0eSIsInVuc2VsZWN0YWJsZSIsImVsSW52aXNpYmxlIiwiZmluZCIsImNvbnRhaW5zIiwiY2hpbGQiLCJzY3JvbGxIZWlnaHQiLCJ0cmFuc2l0aW9uSGVpZ2h0Iiwib25FbmQiLCJvd25FdmVudCIsImNsZWFuVXAiLCJyZW1vdmVQcm9wZXJ0eSIsImRpc3BhdGNoZXIiLCJvcmRlcmluZyIsIk1hdGgiLCJmbG9vciIsInRvU3RyaW5nIiwidHJhbnNpdGlvbiIsInRhcmdldEhlaWdodCIsImN1cnJlbnRIZWlnaHQiLCJvZmZzZXRUb3AiLCJwYWRkaW5nVG9wIiwibWluSGVpZ2h0IiwidG9TcHJlYWQiLCJjaGlsZHJlblRvUmVuZGVyIiwic29ydCIsImIiLCJyZWxhdGVkQW5jaG9yIiwicHJldmVudERlZmF1bHQiLCJtb3ZlQ2IiLCJ0b3VjaCIsImNsaWVudFgiLCJjbGllbnRZIiwiY3VycmVudEVsZW1lbnRJZHgiLCJmaW5kSW5kZXgiLCJjIiwicmVjdCIsInQiLCJ0b3VjaE1vdmVDYiIsInN0b3BQcm9wYWdhdGlvbiIsImRpc3BhdGNoRXZlbnQiLCJUb3VjaEV2ZW50IiwidHlwZSIsInJlbW92ZUNiIiwiYmluZEFuY2hvciIsInVuYmluZEFuY2hvciIsIm9uIiwic3Vic2NyaWJlciIsImNyZWF0ZUVsZW1lbnQiLCJQcm92aWRlciIsInJlZiIsInJvb3QiLCJzaHJpbmthYmxlIiwidHJhbnNpdGlvblR5cGUiLCJUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMiLCJDVVNUT00iLCJjb25maWciLCJiYWNrd2FyZCIsImVsZW1lbnRFbnRlcmluZyIsImVsZW1lbnRFeGl0aW5nIiwiZm9yd2FyZCIsInN0dWJFbnRlcmluZyIsIlRyYW5zaXRpb25TdHlsZXMiLCJmYWRlT3V0IiwiY29udGVudENsYXNzTmFtZSIsIkZyYWdtZW50IiwiSGVyb1dyYXBwZXIiLCJpZCIsIl9yZWYzIiwiaGVyb1JlZiIsInVzZUhlcm8iLCJvbkhlcm9TdGFydCIsIl9jIiwiX28iLCJxdWVyeVNlbGVjdG9yQWxsIiwiaW1nIiwib25IZXJvQ2xvbmVkIiwib25IZXJvRW5kIiwidXNlT3JkZXJhYmxlTGlzdEFuY2hvciIsImFuY2hvclJlZiIsImN0eCIsInVzZUNvbnRleHQiLCJ1c2VPcmRlcmFibGVFdmVudHMiLCJldmVudHMiLCJ1bnN1YnNjcmliZXJzIiwiZXZlbnROYW1lIiwidSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL09yZGVyYWJsZUxpc3QvT3JkZXJhYmxlTGlzdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRocm90dGxlIGZyb20gXCJsb2Rhc2gvdGhyb3R0bGVcIjtcbmltcG9ydCBSZWFjdCwge1xuICBjcmVhdGVDb250ZXh0LFxuICBEZXRhaWxlZEhUTUxQcm9wcyxcbiAgRnJhZ21lbnQsXG4gIEhUTUxBdHRyaWJ1dGVzLFxuICBQcm9wc1dpdGhDaGlsZHJlbixcbiAgUmVhY3RFbGVtZW50LFxuICB1c2VDYWxsYmFjayxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VMYXlvdXRFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFVuY29udHJvbGxlZFRyYW5zaXRpb24gZnJvbSBcIi4uL1VuY29udHJvbGxlZFRyYW5zaXRpb25cIjtcbmltcG9ydCBUcmFuc2l0aW9uU3R5bGVzIGZyb20gXCIuLi9UcmFuc2l0aW9uL1RyYW5zaXRpb24ubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB1c2VIZXJvIGZyb20gXCIuLi8uLi9ob29rcy91c2VIZXJvXCI7XG5pbXBvcnQgQW5pbWF0ZWRFbnRyYW5jZSBmcm9tIFwiLi4vQW5pbWF0ZWRFbnRyYW5jZVwiO1xuaW1wb3J0IHsgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzIH0gZnJvbSBcIi4uL1RyYW5zaXRpb25cIjtcbmltcG9ydCBTdHlsZXMgZnJvbSBcIi4vT3JkZXJhYmxlTGlzdC5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHVzZUV2ZW50cyBmcm9tIFwiLi4vLi4vaG9va3MvdXRpbGl0eS91c2VFdmVudHNcIjtcbmltcG9ydCBvd25FdmVudCBmcm9tIFwiLi4vLi4vdXRpbHMvb3duRXZlbnRcIjtcblxudHlwZSBFdmVudHMgPSBcIm9yZGVyLXN0b3BcIiB8IFwib3JkZXItc3RhcnRcIjtcblxuY29uc3QgT3JkZXJhYmxlTGlzdENvbnRleHQgPSBjcmVhdGVDb250ZXh0PHtcbiAgYmluZEFuY2hvcjogKGJpbmRFbGVtZW50OiBIVE1MRGl2RWxlbWVudCkgPT4gdm9pZDtcbiAgdW5iaW5kQW5jaG9yOiAoYmluZEVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50KSA9PiB2b2lkO1xuICBvbjogKGV2ZW50TmFtZTogRXZlbnRzLCBjYjogKCkgPT4gdm9pZCkgPT4gKCkgPT4gdm9pZDtcbn0+KG51bGwgYXMgYW55KTtcblxuZXhwb3J0IGVudW0gT3JkZXJhYmxlTGlzdFJlb3JkZXJNb2RlIHtcbiAgVkVSVElDQUwgPSBcInZcIixcbiAgVFdPX0RJTUVOU0lPTlMgPSBcImh2XCIsXG59XG5cbmZ1bmN0aW9uIGNsZWFuS2V5cyhrZXlzOiBzdHJpbmdbXSkge1xuICByZXR1cm4ga2V5cy5tYXAoKGEpID0+IGEuc3BsaXQoXCI7XCIpWzBdKTtcbn1cblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBkaXNwbGF5cyBhIGxpc3Qgb2YgaXRlbXMgdGhhdCBjYW4gYmUgcmVvcmRlcmVkIGJ5IGRyYWdnaW5nIHRoZW0gd2l0aCB5b3VyIG1vdXNlIG9yIHRvdWNoLlxuICogSXQgc3VwcG9ydHMgc2ltcGxlIHZlcnRpY2FsIGRyYWdnaW5nIGFuZCBtb3JlIGFkdmFuY2VkIDJEIHJlb3JkZXJpbmcsIHdpdGggc21vb3RoIGFuaW1hdGlvbnNcbiAqIHdoZW4gaXRlbXMgbW92ZSBhcm91bmQuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE9yZGVyYWJsZUxpc3Qoe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lID0gXCJcIixcbiAgbW9kZSA9IE9yZGVyYWJsZUxpc3RSZW9yZGVyTW9kZS5WRVJUSUNBTCxcbiAgc2hyaW5rVG9Pbk9yZGVyLFxuICByZW9yZGVyaW5nQ2xhc3NOYW1lLFxuICBjbG9uZUNsYXNzTmFtZSxcbiAgLi4ucHJvcHNcbn06IHtcbiAgY2hpbGRyZW46IFJlYWN0RWxlbWVudFtdO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIG1vZGU/OiBPcmRlcmFibGVMaXN0UmVvcmRlck1vZGU7XG4gIC8qKlxuICAgKiBJZiBwcm92aWRlZCwgbWFrZXMgdGhlIGVsZW1lbnRzIHNocmluayB0byB0aGlzIHZhbHVlIGluIHB4IHdoZW4gb3JkZXJpbmcgZWxlbWVudHNcbiAgICovXG4gIHNocmlua1RvT25PcmRlcj86IG51bWJlcjtcblxuICAvKipcbiAgICogQSBjbGFzcyB0byBhcHBseSB3aGVuIHJlb3JkZXJpbmdcbiAgICovXG4gIHJlb3JkZXJpbmdDbGFzc05hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgY2xhc3MgdG8gYXBwbHkgdG8gdGhlIGNsb25lIGVsXG4gICAqL1xuICBjbG9uZUNsYXNzTmFtZT86IHN0cmluZztcbn0gJiAoXG4gIHwge1xuICAgICAga2V5T3JkZXI/OiBzdHJpbmdbXTtcbiAgICAgIG9uQ2hhbmdlS2V5T3JkZXI6IChuZXdPcmRlcjogc3RyaW5nW10pID0+IHZvaWQ7XG4gICAgfVxuICB8IHtcbiAgICAgIGN1cnJlbnRPcmRlcj86IHN0cmluZ1tdO1xuICAgIH1cbikgJlxuICBEZXRhaWxlZEhUTUxQcm9wczxIVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4sIEhUTUxEaXZFbGVtZW50Pikge1xuICBjb25zdCBhdmFpbGFibGVLZXlzID0gY2hpbGRyZW4ubWFwKChhKSA9PiBhLmtleSBhcyBzdHJpbmcpO1xuICBjb25zdCBhdmFpbGFibGVLZXlzRGVwID0gYXZhaWxhYmxlS2V5cy5qb2luKFwiLFwiKTtcbiAgY29uc3QgaW5pdGlhbGl6ZU9yZGVyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IG1pc3NpbmdPcmRlcktleXMgPVxuICAgICAgXCJrZXlPcmRlclwiIGluIHByb3BzICYmIHByb3BzLmtleU9yZGVyXG4gICAgICAgID8gYXZhaWxhYmxlS2V5cy5maWx0ZXIoKGEpID0+ICFwcm9wcy5rZXlPcmRlciEuaW5jbHVkZXMoYSkpXG4gICAgICAgIDogW107XG5cbiAgICByZXR1cm4gKFxuICAgICAgKFwia2V5T3JkZXJcIiBpbiBwcm9wcyAmJiBwcm9wcy5rZXlPcmRlclxuICAgICAgICA/IFsuLi5wcm9wcy5rZXlPcmRlciwgLi4ubWlzc2luZ09yZGVyS2V5c11cbiAgICAgICAgOiB1bmRlZmluZWQpIHx8IGF2YWlsYWJsZUtleXNcbiAgICApO1xuICB9LCBbYXZhaWxhYmxlS2V5c0RlcCwgKHByb3BzIGFzIGFueSkua2V5T3JkZXJdKTtcbiAgY29uc3QgeyBjdXJyZW50OiBhbmNob3JzTGlzdCB9ID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50W10+KFtdKTtcbiAgY29uc3QgZXZlbnRFbWl0dGVyID0gdXNlRXZlbnRzPEV2ZW50cywgeyBbayBpbiBFdmVudHNdOiBbXSB9PigpO1xuICBjb25zdCBjdXJyZW50Q2xvbmUgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgY3VycmVudFdvcmtpbmdLZXkgPSB1c2VSZWY8c3RyaW5nPih1bmRlZmluZWQpO1xuICBjb25zdCByb290UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsIGFzIGFueSk7XG4gIGNvbnN0IFtfb3JkZXIsIHNldE9yZGVyXSA9IHVzZVN0YXRlKGluaXRpYWxpemVPcmRlcik7XG4gIHVzZUVmZmVjdCgoKSA9PiBzZXRPcmRlcihpbml0aWFsaXplT3JkZXIoKSksIFtpbml0aWFsaXplT3JkZXJdKTtcblxuICBjb25zdCBvcmRlciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICBcImN1cnJlbnRPcmRlclwiIGluIHByb3BzID8gcHJvcHMuY3VycmVudE9yZGVyIHx8IF9vcmRlciA6IF9vcmRlclxuICAgICkuZmlsdGVyKChvKSA9PiBvLmluY2x1ZGVzKFwiO1wiKSB8fCBhdmFpbGFibGVLZXlzLmluY2x1ZGVzKG8pKTtcbiAgfSwgWyhwcm9wcyBhcyBhbnkpLmN1cnJlbnRPcmRlciwgX29yZGVyLCBhdmFpbGFibGVLZXlzRGVwXSk7XG4gIGNvbnN0IGNsZWFuT3JkZXIgPSB1c2VNZW1vKCgpID0+IG9yZGVyLm1hcCgoYSkgPT4gYS5zcGxpdChcIjtcIilbMF0pLCBbb3JkZXJdKTtcbiAgY29uc3Qgb3JkZXJJZCA9IHVzZU1lbW8oKCkgPT4gXCJrZXktXCIgKyBjbGVhbk9yZGVyLmpvaW4oXCJcIiksIFtjbGVhbk9yZGVyXSk7XG4gIGZ1bmN0aW9uIHJvb3RFbCgpIHtcbiAgICBpZiAobW9kZSA9PT0gT3JkZXJhYmxlTGlzdFJlb3JkZXJNb2RlLlRXT19ESU1FTlNJT05TKVxuICAgICAgcmV0dXJuIHJvb3RSZWYuY3VycmVudCEubGFzdEVsZW1lbnRDaGlsZCFcbiAgICAgICAgLmxhc3RFbGVtZW50Q2hpbGQhIGFzIEhUTUxEaXZFbGVtZW50O1xuICAgIHJldHVybiByb290UmVmLmN1cnJlbnQhIGFzIEhUTUxEaXZFbGVtZW50O1xuICB9XG5cbiAgY29uc3QgZmluZFBhcmVudEVsZW1lbnQgPSAodGFyZ2V0OiBIVE1MRGl2RWxlbWVudCkgPT4ge1xuICAgIGxldCBwYXJlbnQ6IEhUTUxEaXZFbGVtZW50ID0gdGFyZ2V0IGFzIEhUTUxEaXZFbGVtZW50O1xuICAgIHdoaWxlIChwYXJlbnQucGFyZW50RWxlbWVudCAhPT0gcm9vdEVsKCkpIHtcbiAgICAgIGlmIChwYXJlbnQucGFyZW50RWxlbWVudCA9PT0gbnVsbCkgYnJlYWs7XG4gICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50RWxlbWVudCBhcyBhbnk7XG4gICAgfVxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJkZXZlbG9wbWVudFwiICYmIHBhcmVudCA9PT0gbnVsbClcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJJdCBzZWVtcyBsaWtlIHdlIGNvdWxkIG5vdCBmaW5kIGEgcmVsYXRpb24gYmV0d2VlbiB0aGlzIGVsZW1lbnQgYW5kIHRoZSByb290IGxpc3QuIEFyZSB5b3UgdXNpbmcgcG9ydGFscyBtYXliZT9cIlxuICAgICAgKTtcbiAgICByZXR1cm4gcGFyZW50O1xuICB9O1xuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHNocmlua1RvT25PcmRlcilcbiAgICAgIHJvb3RFbCgpLnN0eWxlLnNldFByb3BlcnR5KFwiLS1zaHJpbmstdG9cIiwgYCR7c2hyaW5rVG9Pbk9yZGVyfXB4YCk7XG4gIH0sIFtzaHJpbmtUb09uT3JkZXJdKTtcblxuICBjb25zdCBjYWxjdWxhdGVSZW9yZGVyaW5nID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHRocm90dGxlKChlOiBhbnksIGVsczogSFRNTERpdkVsZW1lbnRbXSwgY3VycmVudE9yZGVyOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgaWYgKGVscy5sZW5ndGggPiBjdXJyZW50T3JkZXIubGVuZ3RoIHx8ICFjdXJyZW50V29ya2luZ0tleS5jdXJyZW50KVxuICAgICAgICByZXR1cm47XG4gICAgICBjb25zdCBwYXJlbnQgPSBmaW5kUGFyZW50RWxlbWVudChlLnRhcmdldCk7XG4gICAgICBjb25zdCBpbmRleE9mS2V5SW5DbGVhbk9yZGVyID0gZWxzLmluZGV4T2YocGFyZW50KTtcbiAgICAgIGNvbnN0IGtleU9mVGhlT3ZlckVsZW1lbnQgPSBjdXJyZW50T3JkZXJbaW5kZXhPZktleUluQ2xlYW5PcmRlcl07XG4gICAgICBjb25zdCBpc0RyYWdnaW5nT3duRWxlbWVudCA9XG4gICAgICAgIGN1cnJlbnRXb3JraW5nS2V5LmN1cnJlbnQgPT09IGtleU9mVGhlT3ZlckVsZW1lbnQ7XG4gICAgICBpZiAoaW5kZXhPZktleUluQ2xlYW5PcmRlciA9PT0gLTEgfHwga2V5T2ZUaGVPdmVyRWxlbWVudCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICByZXR1cm47XG4gICAgICBpZiAoIWlzRHJhZ2dpbmdPd25FbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHsgaXNBZnRlciwgaXNCZWZvcmUgfSA9ICgoKSA9PiB7XG4gICAgICAgICAgaWYgKG1vZGUgPT09IE9yZGVyYWJsZUxpc3RSZW9yZGVyTW9kZS5UV09fRElNRU5TSU9OUykge1xuICAgICAgICAgICAgY29uc3QgZGlzdGFuY2VGcm9tTGVmdCA9IGUub2Zmc2V0WDtcbiAgICAgICAgICAgIGNvbnN0IHdpZHRoT2ZFbCA9IHBhcmVudC5jbGllbnRXaWR0aDtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldCA9IHdpZHRoT2ZFbCAqIDAuMjU7XG4gICAgICAgICAgICBjb25zdCBpc0FmdGVyID0gZGlzdGFuY2VGcm9tTGVmdCA+IHdpZHRoT2ZFbCAtIG9mZnNldDtcbiAgICAgICAgICAgIGNvbnN0IGlzQmVmb3JlID0gZGlzdGFuY2VGcm9tTGVmdCA8IG9mZnNldDtcbiAgICAgICAgICAgIHJldHVybiB7IGlzQWZ0ZXIsIGlzQmVmb3JlIH07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlRnJvbVRvcCA9IGUub2Zmc2V0WTtcbiAgICAgICAgICAgIGNvbnN0IGhlaWdodE9mRWwgPSBwYXJlbnQuY2xpZW50SGVpZ2h0O1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gaGVpZ2h0T2ZFbCAqIDAuMjU7XG4gICAgICAgICAgICBjb25zdCBpc0FmdGVyID0gZGlzdGFuY2VGcm9tVG9wID4gaGVpZ2h0T2ZFbCAtIG9mZnNldDtcbiAgICAgICAgICAgIGNvbnN0IGlzQmVmb3JlID0gZGlzdGFuY2VGcm9tVG9wIDwgb2Zmc2V0O1xuICAgICAgICAgICAgcmV0dXJuIHsgaXNBZnRlciwgaXNCZWZvcmUgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pKCk7XG5cbiAgICAgICAgY29uc3QgY2hlY2tJZkNhbk1vdmUgPSAoa2V5T2ZPdmVyRWxlbWVudD86IHN0cmluZykgPT4ge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBrZXlPZk92ZXJFbGVtZW50ID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIGtleU9mT3ZlckVsZW1lbnQgIT09IGN1cnJlbnRXb3JraW5nS2V5LmN1cnJlbnRcbiAgICAgICAgICApO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBpbmRleE9mVGhlTmV3RWxlbWVudCA9XG4gICAgICAgICAgaW5kZXhPZktleUluQ2xlYW5PcmRlciArIChpc0FmdGVyID8gMSA6IC0xKTtcbiAgICAgICAgY29uc3Qgc2hvdWxkVHJpZ2dlclJlb3JkZXJpbmcgPVxuICAgICAgICAgIChpc0FmdGVyIHx8IGlzQmVmb3JlKSAmJlxuICAgICAgICAgIGNoZWNrSWZDYW5Nb3ZlKGN1cnJlbnRPcmRlcltpbmRleE9mVGhlTmV3RWxlbWVudF0pO1xuICAgICAgICBpZiAoc2hvdWxkVHJpZ2dlclJlb3JkZXJpbmcpIHtcbiAgICAgICAgICBzZXRPcmRlcigocCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcHJldmlvdXNJbmRleCA9IGN1cnJlbnRPcmRlci5pbmRleE9mKFxuICAgICAgICAgICAgICBjdXJyZW50V29ya2luZ0tleS5jdXJyZW50IVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4T2ZLZXlJblByb3ZpZGVkT3JkZXIgPVxuICAgICAgICAgICAgICBjbGVhbktleXMocCkuaW5kZXhPZihrZXlPZlRoZU92ZXJFbGVtZW50KTtcbiAgICAgICAgICAgIGxldCBpbmRleE9mVGhlTmV3RWxlbWVudCA9XG4gICAgICAgICAgICAgIGluZGV4T2ZLZXlJblByb3ZpZGVkT3JkZXIgKyAoaXNCZWZvcmUgPyAtMSA6IDApO1xuICAgICAgICAgICAgaWYgKHByZXZpb3VzSW5kZXggPiBpbmRleE9mVGhlTmV3RWxlbWVudCkgaW5kZXhPZlRoZU5ld0VsZW1lbnQrKztcbiAgICAgICAgICAgIGNvbnN0IG9yZGVyV2l0aG91dEN1cnJlbnQgPSBwLmZpbHRlcigoYSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoYS5zdGFydHNXaXRoKGAke2N1cnJlbnRXb3JraW5nS2V5LmN1cnJlbnR9O2ApKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIHJldHVybiBhICE9PSBjdXJyZW50V29ya2luZ0tleS5jdXJyZW50O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBvcmRlcldpdGhvdXRDdXJyZW50LnNwbGljZShcbiAgICAgICAgICAgICAgaW5kZXhPZlRoZU5ld0VsZW1lbnQsXG4gICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgIGAke2N1cnJlbnRXb3JraW5nS2V5LmN1cnJlbnR9OyR7RGF0ZS5ub3coKX1gXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIG9yZGVyV2l0aG91dEN1cnJlbnQ7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCAxMDAwIC8gNjApO1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmdW5jdGlvbiByZWdpc3Rlckxpc3RlbmVycygpIHtcbiAgICAgIGNvbnN0IGVscyA9IEFycmF5LmZyb20ocm9vdEVsKCkhLmNoaWxkcmVuKSBhcyBIVE1MRGl2RWxlbWVudFtdO1xuICAgICAgY29uc3QgY2FsY3VsYXRlUmVvcmRlcmluZ0NhbGwgPSAoZTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGVscyA9IEFycmF5LmZyb20ocm9vdEVsKCkhLmNoaWxkcmVuKSBhcyBIVE1MRGl2RWxlbWVudFtdO1xuICAgICAgICBjYWxjdWxhdGVSZW9yZGVyaW5nKGUsIGVscywgY2xlYW5PcmRlcik7XG4gICAgICB9O1xuICAgICAgZm9yIChsZXQgZWwgb2YgZWxzKVxuICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIGNhbGN1bGF0ZVJlb3JkZXJpbmdDYWxsKTtcblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZm9yIChsZXQgZWwgb2YgZWxzKVxuICAgICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgY2FsY3VsYXRlUmVvcmRlcmluZ0NhbGwpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAobW9kZSA9PT0gT3JkZXJhYmxlTGlzdFJlb3JkZXJNb2RlLlZFUlRJQ0FMKSB7XG4gICAgICByZXR1cm4gcmVnaXN0ZXJMaXN0ZW5lcnMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHVuc3Vic2NyaWJlOiAoKSA9PiB2b2lkO1xuICAgICAgbGV0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdW5zdWJzY3JpYmUgPSByZWdpc3Rlckxpc3RlbmVycygpO1xuICAgICAgfSwgMjUwKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgaWYgKHVuc3Vic2NyaWJlKSB1bnN1YnNjcmliZSgpO1xuICAgICAgfTtcbiAgICB9XG4gIH0sIFtjbGVhbk9yZGVyXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoXCJvbkNoYW5nZUtleU9yZGVyXCIgaW4gcHJvcHMpIHByb3BzLm9uQ2hhbmdlS2V5T3JkZXIoY2xlYW5LZXlzKF9vcmRlcikpO1xuICB9LCBbX29yZGVyXSk7XG5cbiAgY29uc3QgY2xlYW5PcmRlclJlZiA9IHVzZVJlZihjbGVhbk9yZGVyKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjbGVhbk9yZGVyUmVmLmN1cnJlbnQgPSBjbGVhbk9yZGVyO1xuICB9LCBbY2xlYW5PcmRlcl0pO1xuICBjb25zdCBvbkFuY2hvckNsaWNrID0gdXNlQ2FsbGJhY2soXG4gICAgKHsgdGFyZ2V0OiBhbmNob3IgfTogUGljazxNb3VzZUV2ZW50LCBcInRhcmdldFwiPikgPT4ge1xuICAgICAgbGV0IG9mZnNldDogW3g6IG51bWJlciwgeTogbnVtYmVyXTtcbiAgICAgIGNvbnN0IG9yZGVyYWJsZUxpc3RJdGVtRm9yQW5jaG9yID0gZmluZFBhcmVudEVsZW1lbnQoXG4gICAgICAgIGFuY2hvciBhcyBIVE1MRGl2RWxlbWVudFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGJveCA9IG9yZGVyYWJsZUxpc3RJdGVtRm9yQW5jaG9yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgZWxzID0gQXJyYXkuZnJvbShyb290RWwoKSEuY2hpbGRyZW4pIGFzIEhUTUxEaXZFbGVtZW50W107XG4gICAgICBjb25zdCBlbEluZGV4ID0gZWxzLmluZGV4T2Yob3JkZXJhYmxlTGlzdEl0ZW1Gb3JBbmNob3IpO1xuXG4gICAgICBjb25zdCBjbG9uZSA9IG9yZGVyYWJsZUxpc3RJdGVtRm9yQW5jaG9yLmNsb25lTm9kZShcbiAgICAgICAgdHJ1ZVxuICAgICAgKSBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICAgIGN1cnJlbnRDbG9uZS5jdXJyZW50ID0gY2xvbmU7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwiZGV2ZWxvcG1lbnRcIilcbiAgICAgICAgY2xvbmUuc2V0QXR0cmlidXRlKFwiZGF0YS10ZXN0aWRcIiwgXCJvcmRlcmFibGUtbGlzdC1jbG9uZVwiKTtcbiAgICAgIGNsb25lLnNldEF0dHJpYnV0ZShcImRhdGEtb3JkZXJhYmxlaWRcIiwgXCJvcmRlcmFibGUtbGlzdC1jbG9uZVwiKTtcbiAgICAgIGNsb25lLnN0eWxlLndpZHRoID0gYCR7Ym94LndpZHRofXB4YDtcbiAgICAgIGNsb25lLnN0eWxlLmhlaWdodCA9IGAke2JveC5oZWlnaHR9cHhgO1xuICAgICAgY2xvbmUuc3R5bGUudG9wID0gYCR7Ym94LnRvcH1weGA7XG4gICAgICBjbG9uZS5zdHlsZS5sZWZ0ID0gYCR7Ym94LmxlZnR9cHhgO1xuICAgICAgY2xvbmUuY2xhc3NMaXN0LmFkZChTdHlsZXMuY2xvbmUpO1xuICAgICAgaWYgKHNocmlua1RvT25PcmRlcikgY2xvbmUuc3R5bGUubWF4SGVpZ2h0ID0gYCR7Ym94LmhlaWdodH1weGA7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKGNsb25lQ2xhc3NOYW1lKSBjbG9uZS5jbGFzc0xpc3QuYWRkKGNsb25lQ2xhc3NOYW1lKTtcbiAgICAgICAgaWYgKHNocmlua1RvT25PcmRlcikgY2xvbmUuc3R5bGUubWF4SGVpZ2h0ID0gYCR7c2hyaW5rVG9Pbk9yZGVyfXB4YDtcbiAgICAgIH0sIDApO1xuXG4gICAgICBvcmRlcmFibGVMaXN0SXRlbUZvckFuY2hvci5jbGFzc0xpc3QuYWRkKFN0eWxlcy5jdXJyZW50T3JkZXJpbmcpO1xuICAgICAgb3JkZXJhYmxlTGlzdEl0ZW1Gb3JBbmNob3IuY2xhc3NMaXN0LnJlbW92ZShTdHlsZXMudmlzaWJsZSk7XG5cbiAgICAgIGNvbnN0IG1vdmVtZW50Q29udHJvbCA9IChlOiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCB7IHg6IHgxLCB5OiB5MSB9ID1cbiAgICAgICAgICBcInRvdWNoZXNcIiBpbiBlID8geyB4OiBlLnRvdWNoZXNbMF0ucGFnZVgsIHk6IGUudG91Y2hlc1swXS5wYWdlWSB9IDogZTtcbiAgICAgICAgaWYgKCFvZmZzZXQpIG9mZnNldCA9IFt4MSAtIGJveC5sZWZ0LCB5MSAtIGJveC50b3BdO1xuXG4gICAgICAgIGNvbnN0IFtvZmZzZXRYLCBvZmZzZXRZXSA9IG9mZnNldDtcbiAgICAgICAgY2xvbmUuc3R5bGUudG9wID0gYCR7eTEgLSBvZmZzZXRZfXB4YDtcbiAgICAgICAgY2xvbmUuc3R5bGUubGVmdCA9IGAke3gxIC0gb2Zmc2V0WH1weGA7XG4gICAgICB9O1xuXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNsb25lKTtcbiAgICAgIGNvbnN0IGRlbGV0ZUNsb25lID0gKCkgPT4ge1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCBtb3ZlbWVudENvbnRyb2wpO1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLCBtb3ZlbWVudENvbnRyb2wpO1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNoZW5kXCIsIGRlbGV0ZUNsb25lKTtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIGRlbGV0ZUNsb25lKTtcbiAgICAgICAgb3JkZXJhYmxlTGlzdEl0ZW1Gb3JBbmNob3Iuc3R5bGUudmlzaWJpbGl0eSA9IFwiaW5pdGlhbFwiO1xuICAgICAgICBjdXJyZW50V29ya2luZ0tleS5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICB3aW5kb3cuZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKFN0eWxlcy51bnNlbGVjdGFibGUpO1xuICAgICAgICB7XG4gICAgICAgICAgY29uc3QgZWxzID0gQXJyYXkuZnJvbShyb290RWwoKSEuY2hpbGRyZW4pIGFzIEhUTUxEaXZFbGVtZW50W107XG4gICAgICAgICAgY29uc3QgZWxJbnZpc2libGUgPSBlbHMuZmluZChcbiAgICAgICAgICAgIChhKSA9PlxuICAgICAgICAgICAgICAhYS5jbGFzc0xpc3QuY29udGFpbnMoU3R5bGVzLnZpc2libGUpICYmXG4gICAgICAgICAgICAgIGEuc3R5bGUubWF4SGVpZ2h0ICE9PSBcIjBweFwiXG4gICAgICAgICAgKSE7XG4gICAgICAgICAgaWYgKHNocmlua1RvT25PcmRlcikge1xuICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBlbEludmlzaWJsZS5sYXN0RWxlbWVudENoaWxkIGFzIEhUTUxEaXZFbGVtZW50O1xuICAgICAgICAgICAgY2hpbGQuc3R5bGUubWF4SGVpZ2h0ID0gYCR7Y2hpbGQuc2Nyb2xsSGVpZ2h0fXB4YDtcbiAgICAgICAgICAgIGNoaWxkLmNsYXNzTGlzdC5hZGQoU3R5bGVzLnRyYW5zaXRpb25IZWlnaHQpO1xuICAgICAgICAgICAgY29uc3Qgb25FbmQgPSBvd25FdmVudCgoKSA9PiB7XG4gICAgICAgICAgICAgIGNoaWxkLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uZW5kXCIsIG9uRW5kKTtcbiAgICAgICAgICAgICAgY2hpbGQuc3R5bGUubWF4SGVpZ2h0ID0gYGluaXRpYWxgO1xuICAgICAgICAgICAgICBjaGlsZC5jbGFzc0xpc3QucmVtb3ZlKFN0eWxlcy50cmFuc2l0aW9uSGVpZ2h0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2hpbGQuYWRkRXZlbnRMaXN0ZW5lcihcInRyYW5zaXRpb25lbmRcIiwgb25FbmQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBib3ggPSBlbEludmlzaWJsZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICBmdW5jdGlvbiBjbGVhblVwKCkge1xuICAgICAgICAgICAgaWYgKHNocmlua1RvT25PcmRlcikge1xuICAgICAgICAgICAgICByb290RWwoKS5zdHlsZS5yZW1vdmVQcm9wZXJ0eShcInBhZGRpbmctdG9wXCIpO1xuICAgICAgICAgICAgICByb290RWwoKS5zdHlsZS5yZW1vdmVQcm9wZXJ0eShcIm1pbi1oZWlnaHRcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGV2ZW50RW1pdHRlci5kaXNwYXRjaGVyKFwib3JkZXItc3RvcFwiKTtcbiAgICAgICAgICAgIHJvb3RFbCgpLmNsYXNzTGlzdC5yZW1vdmUoU3R5bGVzLm9yZGVyaW5nKTtcbiAgICAgICAgICAgIGlmIChyZW9yZGVyaW5nQ2xhc3NOYW1lKVxuICAgICAgICAgICAgICByb290RWwoKS5jbGFzc0xpc3QucmVtb3ZlKHJlb3JkZXJpbmdDbGFzc05hbWUpO1xuICAgICAgICAgICAgZm9yIChsZXQgZWwgb2YgZWxzKSBlbC5jbGFzc0xpc3QucmVtb3ZlKFN0eWxlcy52aXNpYmxlKTtcbiAgICAgICAgICAgIGNsb25lLnJlbW92ZSgpO1xuICAgICAgICAgICAgY3VycmVudENsb25lLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgICAgZm9yIChsZXQgZWwgb2YgQXJyYXkuZnJvbShlbEludmlzaWJsZS5jaGlsZHJlbikgYXMgSFRNTERpdkVsZW1lbnRbXSlcbiAgICAgICAgICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gXCJcIjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgY2xvbmUuc3R5bGUudG9wLnN0YXJ0c1dpdGgoTWF0aC5mbG9vcihib3gudG9wKS50b1N0cmluZygpKSAmJlxuICAgICAgICAgICAgY2xvbmUuc3R5bGUubGVmdC5zdGFydHNXaXRoKE1hdGguZmxvb3IoYm94LmxlZnQpLnRvU3RyaW5nKCkpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjbGVhblVwKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNsb25lLnN0eWxlLnRvcCA9IGAke2JveC50b3B9cHhgO1xuICAgICAgICAgICAgY2xvbmUuc3R5bGUubGVmdCA9IGAke2JveC5sZWZ0fXB4YDtcbiAgICAgICAgICAgIGNsb25lLnN0eWxlLnRyYW5zaXRpb24gPSBgdG9wIDUwMG1zIGxpbmVhciwgbGVmdCA1MDBtcyBsaW5lYXJgO1xuICAgICAgICAgICAgY2xvbmUuYWRkRXZlbnRMaXN0ZW5lcihcInRyYW5zaXRpb25lbmRcIiwgKCkgPT4ge1xuICAgICAgICAgICAgICBjbGVhblVwKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBmb3IgKGxldCBlbCBvZiBlbHMpIHtcbiAgICAgICAgZWwuY2xhc3NMaXN0LmFkZChTdHlsZXMudmlzaWJsZSk7XG4gICAgICB9XG4gICAgICBpZiAoc2hyaW5rVG9Pbk9yZGVyKSB7XG4gICAgICAgIGZvciAobGV0IGVsIG9mIGVscykgZWwuc3R5bGUubWF4SGVpZ2h0ID0gYCR7ZWwuc2Nyb2xsSGVpZ2h0fXB4YDtcbiAgICAgICAgY29uc3QgdGFyZ2V0SGVpZ2h0ID0gZWxJbmRleCAqIHNocmlua1RvT25PcmRlcjtcbiAgICAgICAgY29uc3QgY3VycmVudEhlaWdodCA9XG4gICAgICAgICAgb3JkZXJhYmxlTGlzdEl0ZW1Gb3JBbmNob3Iub2Zmc2V0VG9wIC0gZWxzWzBdLm9mZnNldFRvcDtcbiAgICAgICAgY29uc3QgcGFkZGluZ1RvcCA9IGN1cnJlbnRIZWlnaHQgLSB0YXJnZXRIZWlnaHQ7XG4gICAgICAgIHJvb3RFbCgpLnN0eWxlLnBhZGRpbmdUb3AgPSBgJHtwYWRkaW5nVG9wfXB4YDtcbiAgICAgICAgcm9vdEVsKCkuc3R5bGUubWluSGVpZ2h0ID0gYCR7cm9vdEVsKCkuY2xpZW50SGVpZ2h0fXB4YDtcbiAgICAgIH1cbiAgICAgIG9yZGVyYWJsZUxpc3RJdGVtRm9yQW5jaG9yLnN0eWxlLnZpc2liaWxpdHkgPSBcImhpZGRlblwiO1xuICAgICAgb3JkZXJhYmxlTGlzdEl0ZW1Gb3JBbmNob3IuY2xhc3NMaXN0LnJlbW92ZShTdHlsZXMudmlzaWJsZSk7XG4gICAgICByb290RWwoKS5jbGFzc0xpc3QuYWRkKFN0eWxlcy5vcmRlcmluZyk7XG4gICAgICBpZiAocmVvcmRlcmluZ0NsYXNzTmFtZSkgcm9vdEVsKCkuY2xhc3NMaXN0LmFkZChyZW9yZGVyaW5nQ2xhc3NOYW1lKTtcbiAgICAgIGN1cnJlbnRXb3JraW5nS2V5LmN1cnJlbnQgPSBjbGVhbk9yZGVyUmVmLmN1cnJlbnRbZWxJbmRleF07XG4gICAgICBldmVudEVtaXR0ZXIuZGlzcGF0Y2hlcihcIm9yZGVyLXN0YXJ0XCIpO1xuICAgICAgd2luZG93LmRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChTdHlsZXMudW5zZWxlY3RhYmxlKTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCBkZWxldGVDbG9uZSk7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCBtb3ZlbWVudENvbnRyb2wpO1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaGVuZFwiLCBkZWxldGVDbG9uZSk7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLCBtb3ZlbWVudENvbnRyb2wpO1xuICAgIH0sXG4gICAgW11cbiAgKTtcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjdXJyZW50Q2xvbmUuY3VycmVudCkge1xuICAgICAgY29uc3QgZWxzID0gQXJyYXkuZnJvbShyb290RWwoKSEuY2hpbGRyZW4pIGFzIEhUTUxEaXZFbGVtZW50W107XG4gICAgICBjb25zdCBlbEludmlzaWJsZSA9IGVscy5maW5kKFxuICAgICAgICAoYSkgPT5cbiAgICAgICAgICAhYS5jbGFzc0xpc3QuY29udGFpbnMoU3R5bGVzLnZpc2libGUpICYmIGEuc3R5bGUubWF4SGVpZ2h0ICE9PSBcIjBweFwiXG4gICAgICApITtcbiAgICAgIChlbEludmlzaWJsZS5jaGlsZHJlblswXSBhcyBIVE1MRGl2RWxlbWVudCkuc3R5bGUuaGVpZ2h0ID0gYCR7XG4gICAgICAgIGN1cnJlbnRDbG9uZS5jdXJyZW50IS5jbGllbnRIZWlnaHRcbiAgICAgIH1weGA7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgKGVsSW52aXNpYmxlLmNoaWxkcmVuWzFdIGFzIEhUTUxEaXZFbGVtZW50KS5zdHlsZS5oZWlnaHQgPSBgJHtcbiAgICAgICAgICBjdXJyZW50Q2xvbmUuY3VycmVudCEuY2xpZW50SGVpZ2h0XG4gICAgICAgIH1weGA7XG4gICAgICB9LCAxNTApO1xuICAgIH1cbiAgfSwgW2NsZWFuT3JkZXJdKTtcblxuICBjb25zdCB0b1NwcmVhZCA9IHsgLi4ucHJvcHMgfSBhcyBhbnk7XG4gIGRlbGV0ZSB0b1NwcmVhZC5rZXlPcmRlcjtcbiAgZGVsZXRlIHRvU3ByZWFkLm9uQ2hhbmdlS2V5T3JkZXI7XG5cbiAgY29uc3QgY2hpbGRyZW5Ub1JlbmRlciA9IFsuLi5jaGlsZHJlbl1cbiAgICAuZmlsdGVyKChhKSA9PiBjbGVhbk9yZGVyLmluY2x1ZGVzKGEua2V5IGFzIHN0cmluZykpXG4gICAgLnNvcnQoXG4gICAgICAoYSwgYikgPT5cbiAgICAgICAgY2xlYW5PcmRlci5pbmRleE9mKGEua2V5IGFzIHN0cmluZykgLVxuICAgICAgICBjbGVhbk9yZGVyLmluZGV4T2YoYi5rZXkgYXMgc3RyaW5nKVxuICAgIClcbiAgICAubWFwKChhOiBSZWFjdEVsZW1lbnQsIGkpID0+ICh7XG4gICAgICAuLi5hLFxuICAgICAga2V5OiBvcmRlcltpXSxcbiAgICB9KSk7XG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICByb290RWwoKSEuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoc3RhcnRcIiwgKGUpID0+IHtcbiAgICAgIGNvbnN0IHJlbGF0ZWRBbmNob3IgPSBhbmNob3JzTGlzdC5maW5kKChhbmNob3IpID0+XG4gICAgICAgIGFuY2hvci5jb250YWlucyhlLnRhcmdldCBhcyBhbnkpXG4gICAgICApO1xuICAgICAgaWYgKHJlbGF0ZWRBbmNob3IpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBvbkFuY2hvckNsaWNrKHtcbiAgICAgICAgICB0YXJnZXQ6IHJlbGF0ZWRBbmNob3IsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IG1vdmVDYiA9IHRocm90dGxlKChlOiBUb3VjaEV2ZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgdG91Y2ggPSBlLnRvdWNoZXNbMF07XG4gICAgICAgICAgY29uc3QgW3gsIHldID0gW3RvdWNoLmNsaWVudFgsIHRvdWNoLmNsaWVudFldO1xuICAgICAgICAgIGNvbnN0IGVscyA9IEFycmF5LmZyb20ocm9vdEVsKCkuY2hpbGRyZW4pIGFzIEhUTUxEaXZFbGVtZW50W107XG4gICAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnRJZHggPSBlbHMuZmluZEluZGV4KChjLCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZWN0ID0gYz8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICBpZiAoIXJlY3QpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybiByZWN0LnRvcCA8IHkgJiYgcmVjdC50b3AgKyByZWN0LmhlaWdodCA+IHk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50SWR4ICE9PSAtMSkge1xuICAgICAgICAgICAgY29uc3QgZWwgPSBlbHNbY3VycmVudEVsZW1lbnRJZHhdO1xuICAgICAgICAgICAgY29uc3QgcmVjdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgY2FsY3VsYXRlUmVvcmRlcmluZyhcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRhcmdldDogZWwsXG4gICAgICAgICAgICAgICAgb2Zmc2V0WTogeSAtIHJlY3QudG9wLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBlbHMsXG4gICAgICAgICAgICAgIGNsZWFuT3JkZXJSZWYuY3VycmVudFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDUwMCk7XG4gICAgICAgIGNvbnN0IHQgPSBlLnRhcmdldCBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICAgICAgY29uc3QgdG91Y2hNb3ZlQ2IgPSAoZTogVG91Y2hFdmVudCkgPT4ge1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IFRvdWNoRXZlbnQoZS50eXBlLCBlIGFzIGFueSkpO1xuICAgICAgICAgIG1vdmVDYihlKTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVtb3ZlQ2IgPSAoZTogVG91Y2hFdmVudCkgPT4ge1xuICAgICAgICAgIHQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLCB0b3VjaE1vdmVDYik7XG4gICAgICAgICAgdC5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2hlbmRcIiwgcmVtb3ZlQ2IpO1xuICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBUb3VjaEV2ZW50KGUudHlwZSwgZSBhcyBhbnkpKTtcbiAgICAgICAgfTtcbiAgICAgICAgdC5hZGRFdmVudExpc3RlbmVyKFwidG91Y2htb3ZlXCIsIHRvdWNoTW92ZUNiKTtcbiAgICAgICAgdC5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hlbmRcIiwgcmVtb3ZlQ2IpO1xuICAgICAgfVxuICAgIH0pO1xuICB9LCBbXSk7XG5cbiAgY29uc3QgZSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGJpbmRBbmNob3I6IChlbDogSFRNTERpdkVsZW1lbnQpID0+IHtcbiAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLCBvbkFuY2hvckNsaWNrKTtcbiAgICAgICAgYW5jaG9yc0xpc3QucHVzaChlbCk7XG4gICAgICB9LFxuICAgICAgdW5iaW5kQW5jaG9yOiAoZWw6IEhUTUxEaXZFbGVtZW50KSA9PiB7XG4gICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgb25BbmNob3JDbGljayk7XG4gICAgICAgIGFuY2hvcnNMaXN0LnNwbGljZShhbmNob3JzTGlzdC5pbmRleE9mKGVsKSwgMSk7XG4gICAgICB9LFxuICAgICAgb246IGV2ZW50RW1pdHRlci5zdWJzY3JpYmVyLFxuICAgIH0pLFxuICAgIFtdXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8T3JkZXJhYmxlTGlzdENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2V9PlxuICAgICAgPGRpdlxuICAgICAgICByZWY9e3Jvb3RSZWZ9XG4gICAgICAgIGNsYXNzTmFtZT17YCR7U3R5bGVzLnJvb3R9ICR7Y2xhc3NOYW1lfSAke1xuICAgICAgICAgIHNocmlua1RvT25PcmRlciA/IFN0eWxlcy5zaHJpbmthYmxlIDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgICAgey4uLnRvU3ByZWFkfVxuICAgICAgPlxuICAgICAgICB7bW9kZSA9PT0gT3JkZXJhYmxlTGlzdFJlb3JkZXJNb2RlLlZFUlRJQ0FMID8gKFxuICAgICAgICAgIDxBbmltYXRlZEVudHJhbmNlPntjaGlsZHJlblRvUmVuZGVyfTwvQW5pbWF0ZWRFbnRyYW5jZT5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8VW5jb250cm9sbGVkVHJhbnNpdGlvblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtTdHlsZXMudHJhbnNpdGlvbn1cbiAgICAgICAgICAgIHRyYW5zaXRpb25UeXBlPXtUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuQ1VTVE9NfVxuICAgICAgICAgICAgY29uZmlnPXt7XG4gICAgICAgICAgICAgIGJhY2t3YXJkOiB7XG4gICAgICAgICAgICAgICAgZWxlbWVudEVudGVyaW5nOiBcIlwiLFxuICAgICAgICAgICAgICAgIGVsZW1lbnRFeGl0aW5nOiBcIlwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBmb3J3YXJkOiB7XG4gICAgICAgICAgICAgICAgZWxlbWVudEVudGVyaW5nOiBTdHlsZXMuc3R1YkVudGVyaW5nLFxuICAgICAgICAgICAgICAgIGVsZW1lbnRFeGl0aW5nOiBUcmFuc2l0aW9uU3R5bGVzLmZhZGVPdXQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgY29udGVudENsYXNzTmFtZT17YCR7Y2xhc3NOYW1lfWB9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEZyYWdtZW50IGtleT17b3JkZXJJZH0+XG4gICAgICAgICAgICAgIHtbLi4uY2hpbGRyZW5dXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoYSkgPT4gY2xlYW5PcmRlci5pbmNsdWRlcyhhLmtleSBhcyBzdHJpbmcpKVxuICAgICAgICAgICAgICAgIC5zb3J0KFxuICAgICAgICAgICAgICAgICAgKGEsIGIpID0+XG4gICAgICAgICAgICAgICAgICAgIGNsZWFuT3JkZXIuaW5kZXhPZihhLmtleSBhcyBzdHJpbmcpIC1cbiAgICAgICAgICAgICAgICAgICAgY2xlYW5PcmRlci5pbmRleE9mKGIua2V5IGFzIHN0cmluZylcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLm1hcCgoYSwgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgPEhlcm9XcmFwcGVyIGtleT17aX0gaWQ9e2Eua2V5IGFzIHN0cmluZ30+XG4gICAgICAgICAgICAgICAgICAgIHthfVxuICAgICAgICAgICAgICAgICAgPC9IZXJvV3JhcHBlcj5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICAgPC9VbmNvbnRyb2xsZWRUcmFuc2l0aW9uPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgPC9PcmRlcmFibGVMaXN0Q29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gSGVyb1dyYXBwZXIoeyBjaGlsZHJlbiwgaWQgfTogUHJvcHNXaXRoQ2hpbGRyZW48eyBpZDogc3RyaW5nIH0+KSB7XG4gIGNvbnN0IHsgaGVyb1JlZiB9ID0gdXNlSGVybyhpZCwgdW5kZWZpbmVkLCB7XG4gICAgb25IZXJvU3RhcnQ6IChfYywgX28sIHQpID0+IHtcbiAgICAgIHQucXVlcnlTZWxlY3RvckFsbChcImltZ1wiKS5mb3JFYWNoKFxuICAgICAgICAoaW1nKSA9PiAoaW1nLnN0eWxlLnZpc2liaWxpdHkgPSBcImhpZGRlblwiKVxuICAgICAgKTtcbiAgICB9LFxuICAgIG9uSGVyb0Nsb25lZChjbG9uZSkge1xuICAgICAgLy8gaWYgKCFjbG9uZS5jbGFzc0xpc3QuY29udGFpbnMoU3R5bGVzLnZpc2libGUpKSBjbG9uZS5zdHlsZS5vcGFjaXR5ID0gXCIwXCI7XG4gICAgfSxcbiAgICBvbkhlcm9FbmQ6ICgpID0+IHtcbiAgICAgIGlmIChoZXJvUmVmLmN1cnJlbnQpXG4gICAgICAgIGhlcm9SZWYuY3VycmVudFxuICAgICAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKFwiaW1nXCIpXG4gICAgICAgICAgLmZvckVhY2goKGltZykgPT4gKGltZy5zdHlsZS52aXNpYmlsaXR5ID0gXCJcIikpO1xuICAgIH0sXG4gIH0pO1xuICByZXR1cm4gPGRpdiByZWY9e2hlcm9SZWZ9PntjaGlsZHJlbn08L2Rpdj47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VPcmRlcmFibGVMaXN0QW5jaG9yKCkge1xuICBjb25zdCBhbmNob3JSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwgYXMgYW55KTtcbiAgY29uc3QgY3R4ID0gdXNlQ29udGV4dChPcmRlcmFibGVMaXN0Q29udGV4dCk7XG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFjdHgpIHJldHVybjtcbiAgICBjb25zdCB7IGJpbmRBbmNob3IsIHVuYmluZEFuY2hvciB9ID0gY3R4O1xuICAgIGJpbmRBbmNob3IoYW5jaG9yUmVmLmN1cnJlbnQhKTtcbiAgICByZXR1cm4gKCkgPT4gdW5iaW5kQW5jaG9yKGFuY2hvclJlZi5jdXJyZW50ISk7XG4gIH0sIFtdKTtcbiAgcmV0dXJuIHtcbiAgICBhbmNob3JSZWY6IGN0eCA/IGFuY2hvclJlZiA6IHVuZGVmaW5lZCxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZU9yZGVyYWJsZUV2ZW50cyhcbiAgZXZlbnRzOiB7XG4gICAgW2sgaW4gRXZlbnRzXTogKCkgPT4gdm9pZDtcbiAgfVxuKSB7XG4gIGNvbnN0IHsgb24gfSA9IHVzZUNvbnRleHQoT3JkZXJhYmxlTGlzdENvbnRleHQpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHVuc3Vic2NyaWJlcnM6IGFueVtdID0gW107XG4gICAgZm9yIChsZXQgZXZlbnROYW1lIGluIGV2ZW50cykge1xuICAgICAgdW5zdWJzY3JpYmVycy5wdXNoKG9uKGV2ZW50TmFtZSBhcyBFdmVudHMsIGV2ZW50c1tldmVudE5hbWUgYXMgRXZlbnRzXSkpO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdW5zdWJzY3JpYmVycy5mb3JFYWNoKCh1KSA9PiB1KCkpO1xuICAgIH07XG4gIH0sIFtldmVudHNdKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsSUFBQUEsU0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBQyx1QkFBQSxDQUFBRixPQUFBO0FBZUEsSUFBQUcsdUJBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLGlCQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxRQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTSxpQkFBQSxHQUFBUCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU8sV0FBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsb0JBQUEsR0FBQVQsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFTLFVBQUEsR0FBQVYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFVLFNBQUEsR0FBQVgsc0JBQUEsQ0FBQUMsT0FBQTtBQUE0QyxNQUFBVyxTQUFBO0FBQUEsU0FBQUMseUJBQUFDLFdBQUEsZUFBQUMsT0FBQSxrQ0FBQUMsaUJBQUEsT0FBQUQsT0FBQSxRQUFBRSxnQkFBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLENBQUFDLFdBQUEsV0FBQUEsV0FBQSxHQUFBRyxnQkFBQSxHQUFBRCxpQkFBQSxLQUFBRixXQUFBO0FBQUEsU0FBQVgsd0JBQUFlLEdBQUEsRUFBQUosV0FBQSxTQUFBQSxXQUFBLElBQUFJLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLFdB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
426
+ exports.useOrderableEvents = useOrderableEvents;
427
+ //# sourceMappingURL=OrderableList.js.map