@1money/react-ui 1.15.3 → 1.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (378) hide show
  1. package/AGENTS.md +393 -0
  2. package/es/components/CheckboxGroup/CheckboxGroup.d.ts +3 -3
  3. package/es/components/CheckboxGroup/CheckboxGroup.js +94 -91
  4. package/es/components/CheckboxGroup/interface.d.ts +21 -15
  5. package/es/components/CheckboxGroup/style/CheckboxGroup.scss +0 -7
  6. package/es/components/Flex/Flex.d.ts +5 -0
  7. package/es/components/Flex/Flex.js +50 -0
  8. package/es/components/Flex/constants.d.ts +41 -0
  9. package/es/components/Flex/constants.js +45 -0
  10. package/es/components/Flex/index.d.ts +5 -0
  11. package/es/components/Flex/index.js +6 -0
  12. package/es/components/Flex/interface.d.ts +13 -0
  13. package/es/components/Flex/interface.js +2 -0
  14. package/es/components/Flex/style/Flex.css +1 -0
  15. package/es/components/Flex/style/Flex.scss +70 -0
  16. package/es/components/Flex/style/css.js +2 -0
  17. package/es/components/Flex/style/index.d.ts +1 -0
  18. package/es/components/Flex/style/index.js +2 -0
  19. package/es/components/Form/Form.d.ts +29 -0
  20. package/es/components/Form/Form.js +188 -0
  21. package/es/components/Form/FormItem.d.ts +4 -0
  22. package/es/components/Form/FormItem.js +165 -0
  23. package/es/components/Form/FormItemContent.d.ts +18 -0
  24. package/es/components/Form/FormItemContent.js +146 -0
  25. package/es/components/Form/constants.d.ts +46 -0
  26. package/es/components/Form/constants.js +65 -0
  27. package/es/components/Form/helper.d.ts +120 -0
  28. package/es/components/Form/helper.js +284 -0
  29. package/es/components/Form/index.d.ts +20 -0
  30. package/es/components/Form/index.js +21 -0
  31. package/es/components/Form/interface.d.ts +238 -0
  32. package/es/components/Form/interface.js +2 -0
  33. package/es/components/Form/style/Form.css +1 -0
  34. package/es/components/Form/style/Form.scss +167 -0
  35. package/es/components/Form/style/css.js +2 -0
  36. package/es/components/Form/style/index.d.ts +1 -0
  37. package/es/components/Form/style/index.js +2 -0
  38. package/es/components/Form/useFormItemContext.d.ts +32 -0
  39. package/es/components/Form/useFormItemContext.js +55 -0
  40. package/es/components/Form/useFormItemWatch.d.ts +51 -0
  41. package/es/components/Form/useFormItemWatch.js +69 -0
  42. package/es/components/Form/useValidationTrigger.d.ts +40 -0
  43. package/es/components/Form/useValidationTrigger.js +74 -0
  44. package/es/components/Grid/Col.d.ts +5 -0
  45. package/es/components/Grid/Col.js +97 -0
  46. package/es/components/Grid/Grid.d.ts +12 -0
  47. package/es/components/Grid/Grid.js +12 -0
  48. package/es/components/Grid/Row.d.ts +5 -0
  49. package/es/components/Grid/Row.js +48 -0
  50. package/es/components/Grid/constants.d.ts +55 -0
  51. package/es/components/Grid/constants.js +66 -0
  52. package/es/components/Grid/helper.d.ts +10 -0
  53. package/es/components/Grid/helper.js +44 -0
  54. package/es/components/Grid/index.d.ts +7 -0
  55. package/es/components/Grid/index.js +8 -0
  56. package/es/components/Grid/interface.d.ts +38 -0
  57. package/es/components/Grid/interface.js +2 -0
  58. package/es/components/Grid/style/Grid.css +1 -0
  59. package/es/components/Grid/style/Grid.scss +196 -0
  60. package/es/components/Grid/style/css.js +2 -0
  61. package/es/components/Grid/style/index.d.ts +1 -0
  62. package/es/components/Grid/style/index.js +2 -0
  63. package/es/components/Input/Input.js +72 -74
  64. package/es/components/Input/interface.d.ts +9 -9
  65. package/es/components/InputAmount/InputAmount.js +228 -276
  66. package/es/components/InputAmount/helper.d.ts +46 -0
  67. package/es/components/InputAmount/helper.js +115 -0
  68. package/es/components/InputAmount/style/normal.css +1 -1
  69. package/es/components/InputAmount/style/normal.scss +2 -2
  70. package/es/components/InputAmount/style/primary.css +1 -1
  71. package/es/components/InputAmount/style/primary.scss +2 -2
  72. package/es/components/Message/style/Message.css +1 -1
  73. package/es/components/Message/style/Message.scss +3 -3
  74. package/es/components/ProForm/ProForm.d.ts +33 -0
  75. package/es/components/ProForm/ProForm.js +208 -0
  76. package/es/components/ProForm/ProFormDependency.d.ts +12 -0
  77. package/es/components/ProForm/ProFormDependency.js +61 -0
  78. package/es/components/ProForm/ProFormList.d.ts +19 -0
  79. package/es/components/ProForm/ProFormList.js +348 -0
  80. package/es/components/ProForm/Submitter.d.ts +21 -0
  81. package/es/components/ProForm/Submitter.js +76 -0
  82. package/es/components/ProForm/constants.d.ts +34 -0
  83. package/es/components/ProForm/constants.js +40 -0
  84. package/es/components/ProForm/fields/ProFormCheckbox.d.ts +6 -0
  85. package/es/components/ProForm/fields/ProFormCheckbox.js +11 -0
  86. package/es/components/ProForm/fields/ProFormCheckboxGroup.d.ts +6 -0
  87. package/es/components/ProForm/fields/ProFormCheckboxGroup.js +46 -0
  88. package/es/components/ProForm/fields/ProFormDigit.d.ts +6 -0
  89. package/es/components/ProForm/fields/ProFormDigit.js +15 -0
  90. package/es/components/ProForm/fields/ProFormMoney.d.ts +6 -0
  91. package/es/components/ProForm/fields/ProFormMoney.js +10 -0
  92. package/es/components/ProForm/fields/ProFormMultiSelect.d.ts +6 -0
  93. package/es/components/ProForm/fields/ProFormMultiSelect.js +27 -0
  94. package/es/components/ProForm/fields/ProFormPassword.d.ts +6 -0
  95. package/es/components/ProForm/fields/ProFormPassword.js +16 -0
  96. package/es/components/ProForm/fields/ProFormRadio.d.ts +6 -0
  97. package/es/components/ProForm/fields/ProFormRadio.js +13 -0
  98. package/es/components/ProForm/fields/ProFormSelect.d.ts +6 -0
  99. package/es/components/ProForm/fields/ProFormSelect.js +13 -0
  100. package/es/components/ProForm/fields/ProFormSwitch.d.ts +6 -0
  101. package/es/components/ProForm/fields/ProFormSwitch.js +11 -0
  102. package/es/components/ProForm/fields/ProFormText.d.ts +6 -0
  103. package/es/components/ProForm/fields/ProFormText.js +15 -0
  104. package/es/components/ProForm/fields/ProFormTextArea.d.ts +6 -0
  105. package/es/components/ProForm/fields/ProFormTextArea.js +16 -0
  106. package/es/components/ProForm/fields/createProFormField.d.ts +43 -0
  107. package/es/components/ProForm/fields/createProFormField.js +200 -0
  108. package/es/components/ProForm/fields/index.d.ts +12 -0
  109. package/es/components/ProForm/fields/index.js +13 -0
  110. package/es/components/ProForm/index.d.ts +7 -0
  111. package/es/components/ProForm/index.js +7 -0
  112. package/es/components/ProForm/interface.d.ts +306 -0
  113. package/es/components/ProForm/interface.js +2 -0
  114. package/es/components/ProForm/layouts/DrawerForm.d.ts +16 -0
  115. package/es/components/ProForm/layouts/DrawerForm.js +79 -0
  116. package/es/components/ProForm/layouts/ModalForm.d.ts +16 -0
  117. package/es/components/ProForm/layouts/ModalForm.js +89 -0
  118. package/es/components/ProForm/layouts/QueryFilter.d.ts +21 -0
  119. package/es/components/ProForm/layouts/QueryFilter.js +132 -0
  120. package/es/components/ProForm/layouts/StepsForm.d.ts +13 -0
  121. package/es/components/ProForm/layouts/StepsForm.js +295 -0
  122. package/es/components/ProForm/layouts/index.d.ts +4 -0
  123. package/es/components/ProForm/layouts/index.js +5 -0
  124. package/es/components/ProForm/layouts/useOverlayForm.d.ts +53 -0
  125. package/es/components/ProForm/layouts/useOverlayForm.js +143 -0
  126. package/es/components/ProForm/style/ProForm.module.css +1 -0
  127. package/es/components/ProForm/style/ProForm.module.scss +59 -0
  128. package/es/components/ProForm/style/css.js +3 -0
  129. package/es/components/ProForm/style/index.d.ts +1 -0
  130. package/es/components/ProForm/style/index.js +3 -0
  131. package/es/components/ProForm/utils.d.ts +72 -0
  132. package/es/components/ProForm/utils.js +206 -0
  133. package/es/components/RadioGroup/RadioGroup.js +46 -23
  134. package/es/components/RadioGroup/interface.d.ts +3 -1
  135. package/es/components/Select/Select.d.ts +1 -1
  136. package/es/components/Select/Select.js +113 -106
  137. package/es/components/Select/constants.d.ts +18 -0
  138. package/es/components/Select/constants.js +19 -0
  139. package/es/components/Sidebar/Sidebar.js +21 -23
  140. package/es/components/Sidebar/SidebarLogo.d.ts +7 -0
  141. package/es/components/Sidebar/SidebarLogo.js +33 -0
  142. package/es/components/Sidebar/SimplySidebar.d.ts +2 -2
  143. package/es/components/Sidebar/SimplySidebar.js +18 -22
  144. package/es/components/Sidebar/Stepper.js +14 -14
  145. package/es/components/Sidebar/constants.d.ts +16 -0
  146. package/es/components/Sidebar/constants.js +17 -0
  147. package/es/components/Sidebar/style/Sidebar.css +1 -1
  148. package/es/components/Sidebar/style/Sidebar.scss +1 -1
  149. package/es/components/Sidebar/style/SimplySidebar.css +1 -1
  150. package/es/components/Sidebar/style/SimplySidebar.scss +1 -1
  151. package/es/components/Sidebar/style/Stepper.css +1 -1
  152. package/es/components/Sidebar/style/Stepper.scss +11 -1
  153. package/es/components/Space/Space.d.ts +5 -0
  154. package/es/components/Space/Space.js +71 -0
  155. package/es/components/Space/constants.d.ts +33 -0
  156. package/es/components/Space/constants.js +37 -0
  157. package/es/components/Space/index.d.ts +5 -0
  158. package/es/components/Space/index.js +6 -0
  159. package/es/components/Space/interface.d.ts +12 -0
  160. package/es/components/Space/interface.js +2 -0
  161. package/es/components/Space/style/Space.css +1 -0
  162. package/es/components/Space/style/Space.scss +40 -0
  163. package/es/components/Space/style/css.js +2 -0
  164. package/es/components/Space/style/index.d.ts +1 -0
  165. package/es/components/Space/style/index.js +2 -0
  166. package/es/components/Switch/Switch.js +28 -25
  167. package/es/components/Switch/interface.d.ts +9 -4
  168. package/es/components/useControlledState/index.d.ts +14 -0
  169. package/es/components/useControlledState/index.js +32 -0
  170. package/es/components/useEventCallback/index.d.ts +11 -0
  171. package/es/components/useEventCallback/index.js +17 -0
  172. package/es/components/useLayoutEffect/index.d.ts +11 -0
  173. package/es/components/useLayoutEffect/index.js +17 -0
  174. package/es/components/useLayoutState/index.d.ts +13 -0
  175. package/es/components/useLayoutState/index.js +71 -0
  176. package/es/components/useMemoizedFn/index.d.ts +12 -0
  177. package/es/components/useMemoizedFn/index.js +27 -0
  178. package/es/components/usePrevious/index.d.ts +11 -0
  179. package/es/components/usePrevious/index.js +19 -0
  180. package/es/components/useSafeState/index.d.ts +12 -0
  181. package/es/components/useSafeState/index.js +24 -0
  182. package/es/components/useSyncState/index.d.ts +14 -0
  183. package/es/components/useSyncState/index.js +37 -0
  184. package/es/components/useUpdateEffect/index.d.ts +9 -0
  185. package/es/components/useUpdateEffect/index.js +19 -0
  186. package/es/index.css +1 -1
  187. package/es/index.d.ts +32 -2
  188. package/es/index.js +30 -1
  189. package/jest.setup.d.ts +1 -0
  190. package/jest.setup.ts +1 -0
  191. package/lib/components/CheckboxGroup/CheckboxGroup.d.ts +3 -3
  192. package/lib/components/CheckboxGroup/CheckboxGroup.js +92 -89
  193. package/lib/components/CheckboxGroup/interface.d.ts +21 -15
  194. package/lib/components/CheckboxGroup/style/CheckboxGroup.scss +0 -7
  195. package/lib/components/Flex/Flex.d.ts +5 -0
  196. package/lib/components/Flex/Flex.js +60 -0
  197. package/lib/components/Flex/constants.d.ts +41 -0
  198. package/lib/components/Flex/constants.js +51 -0
  199. package/lib/components/Flex/index.d.ts +5 -0
  200. package/lib/components/Flex/index.js +60 -0
  201. package/lib/components/Flex/interface.d.ts +13 -0
  202. package/lib/components/Flex/interface.js +6 -0
  203. package/lib/components/Flex/style/Flex.css +1 -0
  204. package/lib/components/Flex/style/Flex.scss +70 -0
  205. package/lib/components/Flex/style/css.js +4 -0
  206. package/lib/components/Flex/style/index.d.ts +1 -0
  207. package/lib/components/Flex/style/index.js +4 -0
  208. package/lib/components/Form/Form.d.ts +29 -0
  209. package/lib/components/Form/Form.js +199 -0
  210. package/lib/components/Form/FormItem.d.ts +4 -0
  211. package/lib/components/Form/FormItem.js +176 -0
  212. package/lib/components/Form/FormItemContent.d.ts +18 -0
  213. package/lib/components/Form/FormItemContent.js +156 -0
  214. package/lib/components/Form/constants.d.ts +46 -0
  215. package/lib/components/Form/constants.js +71 -0
  216. package/lib/components/Form/helper.d.ts +120 -0
  217. package/lib/components/Form/helper.js +290 -0
  218. package/lib/components/Form/index.d.ts +20 -0
  219. package/lib/components/Form/index.js +45 -0
  220. package/lib/components/Form/interface.d.ts +238 -0
  221. package/lib/components/Form/interface.js +6 -0
  222. package/lib/components/Form/style/Form.css +1 -0
  223. package/lib/components/Form/style/Form.scss +167 -0
  224. package/lib/components/Form/style/css.js +4 -0
  225. package/lib/components/Form/style/index.d.ts +1 -0
  226. package/lib/components/Form/style/index.js +4 -0
  227. package/lib/components/Form/useFormItemContext.d.ts +32 -0
  228. package/lib/components/Form/useFormItemContext.js +62 -0
  229. package/lib/components/Form/useFormItemWatch.d.ts +51 -0
  230. package/lib/components/Form/useFormItemWatch.js +76 -0
  231. package/lib/components/Form/useValidationTrigger.d.ts +40 -0
  232. package/lib/components/Form/useValidationTrigger.js +81 -0
  233. package/lib/components/Grid/Col.d.ts +5 -0
  234. package/lib/components/Grid/Col.js +107 -0
  235. package/lib/components/Grid/Grid.d.ts +12 -0
  236. package/lib/components/Grid/Grid.js +18 -0
  237. package/lib/components/Grid/Row.d.ts +5 -0
  238. package/lib/components/Grid/Row.js +58 -0
  239. package/lib/components/Grid/constants.d.ts +55 -0
  240. package/lib/components/Grid/constants.js +72 -0
  241. package/lib/components/Grid/helper.d.ts +10 -0
  242. package/lib/components/Grid/helper.js +51 -0
  243. package/lib/components/Grid/index.d.ts +7 -0
  244. package/lib/components/Grid/index.js +62 -0
  245. package/lib/components/Grid/interface.d.ts +38 -0
  246. package/lib/components/Grid/interface.js +6 -0
  247. package/lib/components/Grid/style/Grid.css +1 -0
  248. package/lib/components/Grid/style/Grid.scss +196 -0
  249. package/lib/components/Grid/style/css.js +4 -0
  250. package/lib/components/Grid/style/index.d.ts +1 -0
  251. package/lib/components/Grid/style/index.js +4 -0
  252. package/lib/components/Input/Input.js +71 -73
  253. package/lib/components/Input/interface.d.ts +9 -9
  254. package/lib/components/InputAmount/InputAmount.js +230 -278
  255. package/lib/components/InputAmount/helper.d.ts +46 -0
  256. package/lib/components/InputAmount/helper.js +122 -0
  257. package/lib/components/InputAmount/style/normal.css +1 -1
  258. package/lib/components/InputAmount/style/normal.scss +2 -2
  259. package/lib/components/InputAmount/style/primary.css +1 -1
  260. package/lib/components/InputAmount/style/primary.scss +2 -2
  261. package/lib/components/Message/style/Message.css +1 -1
  262. package/lib/components/Message/style/Message.scss +3 -3
  263. package/lib/components/ProForm/ProForm.d.ts +33 -0
  264. package/lib/components/ProForm/ProForm.js +216 -0
  265. package/lib/components/ProForm/ProFormDependency.d.ts +12 -0
  266. package/lib/components/ProForm/ProFormDependency.js +67 -0
  267. package/lib/components/ProForm/ProFormList.d.ts +19 -0
  268. package/lib/components/ProForm/ProFormList.js +355 -0
  269. package/lib/components/ProForm/Submitter.d.ts +21 -0
  270. package/lib/components/ProForm/Submitter.js +83 -0
  271. package/lib/components/ProForm/constants.d.ts +34 -0
  272. package/lib/components/ProForm/constants.js +46 -0
  273. package/lib/components/ProForm/fields/ProFormCheckbox.d.ts +6 -0
  274. package/lib/components/ProForm/fields/ProFormCheckbox.js +18 -0
  275. package/lib/components/ProForm/fields/ProFormCheckboxGroup.d.ts +6 -0
  276. package/lib/components/ProForm/fields/ProFormCheckboxGroup.js +53 -0
  277. package/lib/components/ProForm/fields/ProFormDigit.d.ts +6 -0
  278. package/lib/components/ProForm/fields/ProFormDigit.js +22 -0
  279. package/lib/components/ProForm/fields/ProFormMoney.d.ts +6 -0
  280. package/lib/components/ProForm/fields/ProFormMoney.js +17 -0
  281. package/lib/components/ProForm/fields/ProFormMultiSelect.d.ts +6 -0
  282. package/lib/components/ProForm/fields/ProFormMultiSelect.js +34 -0
  283. package/lib/components/ProForm/fields/ProFormPassword.d.ts +6 -0
  284. package/lib/components/ProForm/fields/ProFormPassword.js +23 -0
  285. package/lib/components/ProForm/fields/ProFormRadio.d.ts +6 -0
  286. package/lib/components/ProForm/fields/ProFormRadio.js +20 -0
  287. package/lib/components/ProForm/fields/ProFormSelect.d.ts +6 -0
  288. package/lib/components/ProForm/fields/ProFormSelect.js +20 -0
  289. package/lib/components/ProForm/fields/ProFormSwitch.d.ts +6 -0
  290. package/lib/components/ProForm/fields/ProFormSwitch.js +18 -0
  291. package/lib/components/ProForm/fields/ProFormText.d.ts +6 -0
  292. package/lib/components/ProForm/fields/ProFormText.js +22 -0
  293. package/lib/components/ProForm/fields/ProFormTextArea.d.ts +6 -0
  294. package/lib/components/ProForm/fields/ProFormTextArea.js +23 -0
  295. package/lib/components/ProForm/fields/createProFormField.d.ts +43 -0
  296. package/lib/components/ProForm/fields/createProFormField.js +208 -0
  297. package/lib/components/ProForm/fields/index.d.ts +12 -0
  298. package/lib/components/ProForm/fields/index.js +90 -0
  299. package/lib/components/ProForm/index.d.ts +7 -0
  300. package/lib/components/ProForm/index.js +73 -0
  301. package/lib/components/ProForm/interface.d.ts +306 -0
  302. package/lib/components/ProForm/interface.js +6 -0
  303. package/lib/components/ProForm/layouts/DrawerForm.d.ts +16 -0
  304. package/lib/components/ProForm/layouts/DrawerForm.js +86 -0
  305. package/lib/components/ProForm/layouts/ModalForm.d.ts +16 -0
  306. package/lib/components/ProForm/layouts/ModalForm.js +96 -0
  307. package/lib/components/ProForm/layouts/QueryFilter.d.ts +21 -0
  308. package/lib/components/ProForm/layouts/QueryFilter.js +139 -0
  309. package/lib/components/ProForm/layouts/StepsForm.d.ts +13 -0
  310. package/lib/components/ProForm/layouts/StepsForm.js +302 -0
  311. package/lib/components/ProForm/layouts/index.d.ts +4 -0
  312. package/lib/components/ProForm/layouts/index.js +40 -0
  313. package/lib/components/ProForm/layouts/useOverlayForm.d.ts +53 -0
  314. package/lib/components/ProForm/layouts/useOverlayForm.js +150 -0
  315. package/lib/components/ProForm/style/ProForm.module.css +1 -0
  316. package/lib/components/ProForm/style/ProForm.module.scss +59 -0
  317. package/lib/components/ProForm/style/css.js +4 -0
  318. package/lib/components/ProForm/style/index.d.ts +1 -0
  319. package/lib/components/ProForm/style/index.js +4 -0
  320. package/lib/components/ProForm/utils.d.ts +72 -0
  321. package/lib/components/ProForm/utils.js +213 -0
  322. package/lib/components/RadioGroup/RadioGroup.js +45 -22
  323. package/lib/components/RadioGroup/interface.d.ts +3 -1
  324. package/lib/components/Select/Select.d.ts +1 -1
  325. package/lib/components/Select/Select.js +114 -107
  326. package/lib/components/Select/constants.d.ts +18 -0
  327. package/lib/components/Select/constants.js +25 -0
  328. package/lib/components/Sidebar/Sidebar.js +21 -23
  329. package/lib/components/Sidebar/SidebarLogo.d.ts +7 -0
  330. package/lib/components/Sidebar/SidebarLogo.js +39 -0
  331. package/lib/components/Sidebar/SimplySidebar.d.ts +2 -2
  332. package/lib/components/Sidebar/SimplySidebar.js +17 -21
  333. package/lib/components/Sidebar/Stepper.js +14 -14
  334. package/lib/components/Sidebar/constants.d.ts +16 -0
  335. package/lib/components/Sidebar/constants.js +23 -0
  336. package/lib/components/Sidebar/style/Sidebar.css +1 -1
  337. package/lib/components/Sidebar/style/Sidebar.scss +1 -1
  338. package/lib/components/Sidebar/style/SimplySidebar.css +1 -1
  339. package/lib/components/Sidebar/style/SimplySidebar.scss +1 -1
  340. package/lib/components/Sidebar/style/Stepper.css +1 -1
  341. package/lib/components/Sidebar/style/Stepper.scss +11 -1
  342. package/lib/components/Space/Space.d.ts +5 -0
  343. package/lib/components/Space/Space.js +81 -0
  344. package/lib/components/Space/constants.d.ts +33 -0
  345. package/lib/components/Space/constants.js +43 -0
  346. package/lib/components/Space/index.d.ts +5 -0
  347. package/lib/components/Space/index.js +53 -0
  348. package/lib/components/Space/interface.d.ts +12 -0
  349. package/lib/components/Space/interface.js +6 -0
  350. package/lib/components/Space/style/Space.css +1 -0
  351. package/lib/components/Space/style/Space.scss +40 -0
  352. package/lib/components/Space/style/css.js +4 -0
  353. package/lib/components/Space/style/index.d.ts +1 -0
  354. package/lib/components/Space/style/index.js +4 -0
  355. package/lib/components/Switch/Switch.js +27 -24
  356. package/lib/components/Switch/interface.d.ts +9 -4
  357. package/lib/components/useControlledState/index.d.ts +14 -0
  358. package/lib/components/useControlledState/index.js +39 -0
  359. package/lib/components/useEventCallback/index.d.ts +11 -0
  360. package/lib/components/useEventCallback/index.js +24 -0
  361. package/lib/components/useLayoutEffect/index.d.ts +11 -0
  362. package/lib/components/useLayoutEffect/index.js +23 -0
  363. package/lib/components/useLayoutState/index.d.ts +13 -0
  364. package/lib/components/useLayoutState/index.js +79 -0
  365. package/lib/components/useMemoizedFn/index.d.ts +12 -0
  366. package/lib/components/useMemoizedFn/index.js +33 -0
  367. package/lib/components/usePrevious/index.d.ts +11 -0
  368. package/lib/components/usePrevious/index.js +25 -0
  369. package/lib/components/useSafeState/index.d.ts +12 -0
  370. package/lib/components/useSafeState/index.js +31 -0
  371. package/lib/components/useSyncState/index.d.ts +14 -0
  372. package/lib/components/useSyncState/index.js +44 -0
  373. package/lib/components/useUpdateEffect/index.d.ts +9 -0
  374. package/lib/components/useUpdateEffect/index.js +25 -0
  375. package/lib/index.css +1 -1
  376. package/lib/index.d.ts +32 -2
  377. package/lib/index.js +251 -1
  378. package/package.json +31 -1
@@ -0,0 +1,295 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
3
+ var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {
4
+ function adopt(value) {
5
+ return value instanceof P ? value : new P(function (resolve) {
6
+ resolve(value);
7
+ });
8
+ }
9
+ return new (P || (P = Promise))(function (resolve, reject) {
10
+ function fulfilled(value) {
11
+ try {
12
+ step(generator.next(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ }
17
+ function rejected(value) {
18
+ try {
19
+ step(generator["throw"](value));
20
+ } catch (e) {
21
+ reject(e);
22
+ }
23
+ }
24
+ function step(result) {
25
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
26
+ }
27
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
28
+ });
29
+ };
30
+ var __rest = this && this.__rest || function (s, e) {
31
+ var t = {};
32
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
33
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
34
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
35
+ }
36
+ return t;
37
+ };
38
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
39
+ import { Children, isValidElement, memo, useCallback, useMemo, useRef, useState } from 'react';
40
+ import { joinCls } from '../../../utils/classnames';
41
+ import { Button } from '../../Button';
42
+ import useLatest from '../../useLatest';
43
+ import ProForm from '../ProForm';
44
+ import { CSS_PREFIX, DEFAULT_TEXT } from '../constants';
45
+ import styles from '../style/ProForm.module.scss';
46
+ /**
47
+ * Wrapper component representing an individual step inside {@link StepsForm}.
48
+ * Does not render its own form — its children are rendered by the parent `StepsForm`.
49
+ */
50
+ export var StepForm = function StepForm(props) {
51
+ return _jsx(_Fragment, {
52
+ children: props.children
53
+ });
54
+ };
55
+ /**
56
+ * Picks only safe HTML div attributes (`className`, `style`, `id`, `data-*`, `aria-*`)
57
+ * from a props object, filtering out component-specific props.
58
+ */
59
+ var pickHtmlDivProps = function pickHtmlDivProps(props) {
60
+ var result = {};
61
+ for (var _i = 0, _Object$keys = Object.keys(props); _i < _Object$keys.length; _i++) {
62
+ var key = _Object$keys[_i];
63
+ if (key === 'className' || key === 'style' || key === 'id' || key.startsWith('data-') || key.startsWith('aria-')) {
64
+ result[key] = props[key];
65
+ }
66
+ }
67
+ return result;
68
+ };
69
+ /**
70
+ * Multi-step wizard form that renders one step at a time, merging values
71
+ * from all steps and calling `onFinish` with the combined result on the final step.
72
+ *
73
+ * @example
74
+ * ```tsx
75
+ * <StepsForm onFinish={handleSubmit}>
76
+ * <StepsForm.StepForm title="Basic Info">
77
+ * <ProFormText name="name" label="Name" />
78
+ * </StepsForm.StepForm>
79
+ * <StepsForm.StepForm title="Details">
80
+ * <ProFormTextArea name="bio" label="Bio" />
81
+ * </StepsForm.StepForm>
82
+ * </StepsForm>
83
+ * ```
84
+ */
85
+ var StepsFormInner = function StepsFormInner(props) {
86
+ var _a;
87
+ var current = props.current,
88
+ onCurrentChange = props.onCurrentChange,
89
+ onFinish = props.onFinish,
90
+ stepsProps = props.stepsProps,
91
+ formProps = props.formProps,
92
+ submitter = props.submitter,
93
+ children = props.children;
94
+ var _useState = useState(0),
95
+ _useState2 = _slicedToArray(_useState, 2),
96
+ innerCurrent = _useState2[0],
97
+ setInnerCurrent = _useState2[1];
98
+ var _useState3 = useState({}),
99
+ _useState4 = _slicedToArray(_useState3, 2),
100
+ allValues = _useState4[0],
101
+ setAllValues = _useState4[1];
102
+ var allValuesRef = useRef({});
103
+ /** Tracks which step index each key was last submitted from. */
104
+ var keyStepMapRef = useRef(new Map());
105
+ var stepPanelRef = useRef(null);
106
+ var steps = useMemo(function () {
107
+ return Children.toArray(children).filter(isValidElement);
108
+ }, [children]);
109
+ var mergedCurrent = typeof current === 'number' ? current : innerCurrent;
110
+ var mergedCurrentRef = useLatest(mergedCurrent);
111
+ var activeStep = steps[mergedCurrent];
112
+ var setCurrent = useCallback(function (nextCurrent) {
113
+ // When navigating backward, clear accumulated values from steps after
114
+ // the target so stale data doesn't persist when the user changes answers.
115
+ if (nextCurrent < mergedCurrentRef.current) {
116
+ setAllValues(function (prev) {
117
+ var cleaned = Object.assign({}, prev);
118
+ keyStepMapRef.current.forEach(function (stepIndex, key) {
119
+ if (stepIndex > nextCurrent) {
120
+ delete cleaned[key];
121
+ }
122
+ });
123
+ allValuesRef.current = cleaned;
124
+ return cleaned;
125
+ });
126
+ }
127
+ if (current === undefined) {
128
+ setInnerCurrent(nextCurrent);
129
+ }
130
+ onCurrentChange === null || onCurrentChange === void 0 ? void 0 : onCurrentChange(nextCurrent);
131
+ }, [current, onCurrentChange]);
132
+ var handleStepFinish = useCallback(function (values) {
133
+ return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
134
+ var _a, _b, currentStep, stepResult, _i2, _Object$keys2, key, mergedValues, isLast;
135
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
136
+ while (1) switch (_context.prev = _context.next) {
137
+ case 0:
138
+ currentStep = steps[mergedCurrent];
139
+ _context.next = 3;
140
+ return (_b = (_a = currentStep === null || currentStep === void 0 ? void 0 : currentStep.props) === null || _a === void 0 ? void 0 : _a.onFinish) === null || _b === void 0 ? void 0 : _b.call(_a, values);
141
+ case 3:
142
+ stepResult = _context.sent;
143
+ if (!(stepResult === false)) {
144
+ _context.next = 6;
145
+ break;
146
+ }
147
+ return _context.abrupt("return");
148
+ case 6:
149
+ // Track which step each key was submitted from so backward navigation
150
+ // can selectively clear downstream step data.
151
+ for (_i2 = 0, _Object$keys2 = Object.keys(values); _i2 < _Object$keys2.length; _i2++) {
152
+ key = _Object$keys2[_i2];
153
+ keyStepMapRef.current.set(key, mergedCurrent);
154
+ }
155
+ mergedValues = Object.assign(Object.assign({}, allValuesRef.current), values);
156
+ allValuesRef.current = mergedValues;
157
+ setAllValues(mergedValues);
158
+ isLast = mergedCurrent >= steps.length - 1;
159
+ if (!isLast) {
160
+ _context.next = 15;
161
+ break;
162
+ }
163
+ _context.next = 14;
164
+ return onFinish === null || onFinish === void 0 ? void 0 : onFinish(mergedValues);
165
+ case 14:
166
+ return _context.abrupt("return");
167
+ case 15:
168
+ setCurrent(mergedCurrent + 1);
169
+ case 16:
170
+ case "end":
171
+ return _context.stop();
172
+ }
173
+ }, _callee);
174
+ }));
175
+ }, [mergedCurrent, onFinish, setCurrent, steps]);
176
+ var parentFormProps = formProps;
177
+ var _b = (_a = activeStep === null || activeStep === void 0 ? void 0 : activeStep.props) !== null && _a !== void 0 ? _a : {},
178
+ _b2 = _b,
179
+ title = _b2.title,
180
+ description = _b2.description,
181
+ stepProps = _b2.stepProps,
182
+ stepChildren = _b2.children,
183
+ stepFormProps = __rest(_b, ["title", "description", "stepProps", "children"]);
184
+ var activeStepFormProps = activeStep ? stepFormProps : undefined;
185
+ var stepsHtmlProps = pickHtmlDivProps(stepsProps || {});
186
+ var stepHtmlProps = pickHtmlDivProps(stepProps || {});
187
+ var mergedDefaultValues = useMemo(function () {
188
+ return Object.assign(Object.assign(Object.assign({}, parentFormProps === null || parentFormProps === void 0 ? void 0 : parentFormProps.defaultValues), activeStepFormProps === null || activeStepFormProps === void 0 ? void 0 : activeStepFormProps.defaultValues), allValues);
189
+ }, [activeStepFormProps === null || activeStepFormProps === void 0 ? void 0 : activeStepFormProps.defaultValues, allValues, parentFormProps === null || parentFormProps === void 0 ? void 0 : parentFormProps.defaultValues]);
190
+ var submitterConfig = submitter === false ? false : submitter || {};
191
+ var handlePrev = useCallback(function () {
192
+ var _a;
193
+ if (submitterConfig !== false) {
194
+ (_a = submitterConfig.onReset) === null || _a === void 0 ? void 0 : _a.call(submitterConfig);
195
+ }
196
+ if (mergedCurrent > 0) {
197
+ setCurrent(mergedCurrent - 1);
198
+ }
199
+ }, [mergedCurrent, setCurrent, submitterConfig]);
200
+ var handleSubmitClick = useCallback(function () {
201
+ var _a;
202
+ if (submitterConfig !== false) {
203
+ (_a = submitterConfig.onSubmit) === null || _a === void 0 ? void 0 : _a.call(submitterConfig);
204
+ }
205
+ }, [submitterConfig]);
206
+ var triggerStepSubmit = useCallback(function () {
207
+ var _a, _b;
208
+ if (submitterConfig !== false) {
209
+ (_a = submitterConfig.onSubmit) === null || _a === void 0 ? void 0 : _a.call(submitterConfig);
210
+ }
211
+ var formNode = (_b = stepPanelRef.current) === null || _b === void 0 ? void 0 : _b.querySelector('form');
212
+ if (!formNode) return;
213
+ if (typeof formNode.requestSubmit === 'function') {
214
+ formNode.requestSubmit();
215
+ return;
216
+ }
217
+ formNode.dispatchEvent(new Event('submit', {
218
+ bubbles: true,
219
+ cancelable: true
220
+ }));
221
+ }, [submitterConfig]);
222
+ var prevText = submitterConfig !== false && submitterConfig.prevText ? submitterConfig.prevText : DEFAULT_TEXT.previous;
223
+ var nextText = submitterConfig !== false && submitterConfig.nextText ? submitterConfig.nextText : DEFAULT_TEXT.next;
224
+ var submitText = submitterConfig !== false && submitterConfig.submitText ? submitterConfig.submitText : DEFAULT_TEXT.submit;
225
+ var isLastStep = mergedCurrent >= steps.length - 1;
226
+ var stepsClassNameRaw = stepsHtmlProps.className,
227
+ stepsRestHtml = __rest(stepsHtmlProps, ["className"]);
228
+ var stepClassNameRaw = stepHtmlProps.className,
229
+ stepRestHtml = __rest(stepHtmlProps, ["className"]);
230
+ var stepsClassName = typeof stepsClassNameRaw === 'string' ? stepsClassNameRaw : undefined;
231
+ var stepClassName = typeof stepClassNameRaw === 'string' ? stepClassNameRaw : undefined;
232
+ var renderedActions = useMemo(function () {
233
+ var _a, _b, _c, _d;
234
+ if (submitterConfig === false) return null;
235
+ var resetButtonProps = submitterConfig.resetButtonProps;
236
+ var submitButtonProps = submitterConfig.submitButtonProps;
237
+ var prevButton = mergedCurrent > 0 ? _jsx(Button, Object.assign({}, resetButtonProps, {
238
+ type: (_a = resetButtonProps === null || resetButtonProps === void 0 ? void 0 : resetButtonProps.type) !== null && _a !== void 0 ? _a : 'button',
239
+ severity: (_b = resetButtonProps === null || resetButtonProps === void 0 ? void 0 : resetButtonProps.severity) !== null && _b !== void 0 ? _b : 'secondary',
240
+ onClick: function onClick(event) {
241
+ var _a;
242
+ (_a = resetButtonProps === null || resetButtonProps === void 0 ? void 0 : resetButtonProps.onClick) === null || _a === void 0 ? void 0 : _a.call(resetButtonProps, event);
243
+ handlePrev();
244
+ },
245
+ children: prevText
246
+ }), 'prev') : null;
247
+ var nextButton = _jsx(Button, Object.assign({}, submitButtonProps, {
248
+ type: (_c = submitButtonProps === null || submitButtonProps === void 0 ? void 0 : submitButtonProps.type) !== null && _c !== void 0 ? _c : 'submit',
249
+ onClick: function onClick(event) {
250
+ var _a;
251
+ (_a = submitButtonProps === null || submitButtonProps === void 0 ? void 0 : submitButtonProps.onClick) === null || _a === void 0 ? void 0 : _a.call(submitButtonProps, event);
252
+ handleSubmitClick();
253
+ },
254
+ children: isLastStep ? submitText : nextText
255
+ }), 'submit');
256
+ var defaultDom = [prevButton, nextButton].filter(Boolean);
257
+ if (!submitterConfig.render) return defaultDom;
258
+ return submitterConfig.render({
259
+ form: (_d = activeStepFormProps === null || activeStepFormProps === void 0 ? void 0 : activeStepFormProps.form) !== null && _d !== void 0 ? _d : parentFormProps === null || parentFormProps === void 0 ? void 0 : parentFormProps.form,
260
+ submit: triggerStepSubmit,
261
+ reset: handlePrev
262
+ }, defaultDom);
263
+ }, [activeStepFormProps === null || activeStepFormProps === void 0 ? void 0 : activeStepFormProps.form, handlePrev, handleSubmitClick, isLastStep, mergedCurrent, nextText, parentFormProps === null || parentFormProps === void 0 ? void 0 : parentFormProps.form, prevText, submitText, submitterConfig, triggerStepSubmit]);
264
+ if (!activeStep) return null;
265
+ return _jsx("div", Object.assign({}, stepsRestHtml, {
266
+ className: joinCls("".concat(CSS_PREFIX, "-steps-form"), stepsClassName),
267
+ children: _jsxs("div", Object.assign({}, stepRestHtml, {
268
+ ref: stepPanelRef,
269
+ className: joinCls("".concat(CSS_PREFIX, "-steps-form-step"), stepClassName),
270
+ children: [title && _jsx("div", {
271
+ className: joinCls(styles['proform__steps-form-title'], "".concat(CSS_PREFIX, "-steps-form-title")),
272
+ children: title
273
+ }), description && _jsx("div", {
274
+ className: joinCls(styles['proform__steps-form-description'], "".concat(CSS_PREFIX, "-steps-form-description")),
275
+ children: description
276
+ }), _jsxs(ProForm, Object.assign({}, parentFormProps, activeStepFormProps, {
277
+ defaultValues: mergedDefaultValues,
278
+ submitter: false,
279
+ onFinish: handleStepFinish,
280
+ children: [stepChildren, renderedActions && _jsx("div", {
281
+ className: joinCls(styles['proform__steps-form-actions'], "".concat(CSS_PREFIX, "-steps-form-actions")),
282
+ children: renderedActions
283
+ })]
284
+ }), "step-".concat(mergedCurrent))]
285
+ }))
286
+ }));
287
+ };
288
+ StepsFormInner.displayName = 'StepsForm';
289
+ var StepsFormBase = /*#__PURE__*/memo(StepsFormInner);
290
+ // Type assertion required because memo() loses the static StepForm property type.
291
+ // We attach StepForm as a static property below, making this a compound component pattern.
292
+ export var StepsForm = StepsFormBase;
293
+ StepsForm.StepForm = StepForm;
294
+ export default StepsForm;
295
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9sYXlvdXRzL1N0ZXBzRm9ybS5qcyIsImNvbXBvbmVudHMvUHJvRm9ybS9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL2xheW91dHMvU3RlcHNGb3JtLnRzeCJdLCJuYW1lcyI6WyJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJfX3Jlc3QiLCJzIiwidCIsInAiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpbmRleE9mIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiaSIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiQ2hpbGRyZW4iLCJpc1ZhbGlkRWxlbWVudCIsIm1lbW8iLCJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImpvaW5DbHMiLCJCdXR0b24iLCJ1c2VMYXRlc3QiLCJQcm9Gb3JtIiwiQ1NTX1BSRUZJWCIsIkRFRkFVTFRfVEVYVCIsInN0eWxlcyIsIlN0ZXBGb3JtIiwicHJvcHMiLCJjaGlsZHJlbiIsInBpY2tIdG1sRGl2UHJvcHMiLCJfaSIsIl9PYmplY3Qka2V5cyIsImtleXMiLCJrZXkiLCJzdGFydHNXaXRoIiwiU3RlcHNGb3JtSW5uZXIiLCJfYSIsImN1cnJlbnQiLCJvbkN1cnJlbnRDaGFuZ2UiLCJvbkZpbmlzaCIsInN0ZXBzUHJvcHMiLCJmb3JtUHJvcHMiLCJzdWJtaXR0ZXIiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJpbm5lckN1cnJlbnQiLCJzZXRJbm5lckN1cnJlbnQiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImFsbFZhbHVlcyIsInNldEFsbFZhbHVlcyIsImFsbFZhbHVlc1JlZiIsImtleVN0ZXBNYXBSZWYiLCJNYXAiLCJzdGVwUGFuZWxSZWYiLCJzdGVwcyIsInRvQXJyYXkiLCJmaWx0ZXIiLCJtZXJnZWRDdXJyZW50IiwibWVyZ2VkQ3VycmVudFJlZiIsImFjdGl2ZVN0ZXAiLCJzZXRDdXJyZW50IiwibmV4dEN1cnJlbnQiLCJwcmV2IiwiY2xlYW5lZCIsImFzc2lnbiIsImZvckVhY2giLCJzdGVwSW5kZXgiLCJ1bmRlZmluZWQiLCJoYW5kbGVTdGVwRmluaXNoIiwidmFsdWVzIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiX2IiLCJjdXJyZW50U3RlcCIsInN0ZXBSZXN1bHQiLCJfaTIiLCJfT2JqZWN0JGtleXMyIiwibWVyZ2VkVmFsdWVzIiwiaXNMYXN0Iiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJzZW50IiwiYWJydXB0Iiwic2V0Iiwic3RvcCIsInBhcmVudEZvcm1Qcm9wcyIsIl9iMiIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJzdGVwUHJvcHMiLCJzdGVwQ2hpbGRyZW4iLCJzdGVwRm9ybVByb3BzIiwiYWN0aXZlU3RlcEZvcm1Qcm9wcyIsInN0ZXBzSHRtbFByb3BzIiwic3RlcEh0bWxQcm9wcyIsIm1lcmdlZERlZmF1bHRWYWx1ZXMiLCJkZWZhdWx0VmFsdWVzIiwic3VibWl0dGVyQ29uZmlnIiwiaGFuZGxlUHJldiIsIm9uUmVzZXQiLCJoYW5kbGVTdWJtaXRDbGljayIsIm9uU3VibWl0IiwidHJpZ2dlclN0ZXBTdWJtaXQiLCJmb3JtTm9kZSIsInF1ZXJ5U2VsZWN0b3IiLCJyZXF1ZXN0U3VibWl0IiwiZGlzcGF0Y2hFdmVudCIsIkV2ZW50IiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJwcmV2VGV4dCIsInByZXZpb3VzIiwibmV4dFRleHQiLCJzdWJtaXRUZXh0Iiwic3VibWl0IiwiaXNMYXN0U3RlcCIsInN0ZXBzQ2xhc3NOYW1lUmF3IiwiY2xhc3NOYW1lIiwic3RlcHNSZXN0SHRtbCIsInN0ZXBDbGFzc05hbWVSYXciLCJzdGVwUmVzdEh0bWwiLCJzdGVwc0NsYXNzTmFtZSIsInN0ZXBDbGFzc05hbWUiLCJyZW5kZXJlZEFjdGlvbnMiLCJfYyIsIl9kIiwicmVzZXRCdXR0b25Qcm9wcyIsInN1Ym1pdEJ1dHRvblByb3BzIiwicHJldkJ1dHRvbiIsInR5cGUiLCJzZXZlcml0eSIsIm9uQ2xpY2siLCJldmVudCIsIm5leHRCdXR0b24iLCJkZWZhdWx0RG9tIiwiQm9vbGVhbiIsInJlbmRlciIsImZvcm0iLCJyZXNldCIsImNvbmNhdCIsInJlZiIsImRpc3BsYXlOYW1lIiwiU3RlcHNGb3JtQmFzZSIsIlN0ZXBzRm9ybSJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxJQUFJQSxTQUFTLEdBQUksSUFBSSxJQUFJLElBQUksQ0FBQ0EsU0FBUyxJQUFLLFVBQVVDLE9BQU8sRUFBRUMsVUFBVSxFQUFFQyxDQUFDLEVBQUVDLFNBQVMsRUFBRTtFQUNyRixTQUFTQyxLQUFLQSxDQUFDQyxLQUFLLEVBQUU7SUFBRSxPQUFPQSxLQUFLLFlBQVlILENBQUMsR0FBR0csS0FBSyxHQUFHLElBQUlILENBQUMsQ0FBQyxVQUFVSSxPQUFPLEVBQUU7TUFBRUEsT0FBTyxDQUFDRCxLQUFLLENBQUM7SUFBRSxDQUFDLENBQUM7RUFBRTtFQUMzRyxPQUFPLEtBQUtILENBQUMsS0FBS0EsQ0FBQyxHQUFHSyxPQUFPLENBQUMsRUFBRSxVQUFVRCxPQUFPLEVBQUVFLE1BQU0sRUFBRTtJQUN2RCxTQUFTQyxTQUFTQSxDQUFDSixLQUFLLEVBQUU7TUFBRSxJQUFJO1FBQUVLLElBQUksQ0FBQ1AsU0FBUyxDQUFDUSxJQUFJLENBQUNOLEtBQUssQ0FBQyxDQUFDO01BQUUsQ0FBQyxDQUFDLE9BQU9PLENBQUMsRUFBRTtRQUFFSixNQUFNLENBQUNJLENBQUMsQ0FBQztNQUFFO0lBQUU7SUFDMUYsU0FB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QUFlLElBQ2R0SCxJQUFBLENBQUEsS0FBQSxFQUFBO1VBQUtnSCxTQUFTLEVBQUV0RyxPQUFPLENBQUNNLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxLQUFBc0gsTUFBQSxDQUFLeEgsVUFBVSx3QkFBcUIsQ0FBQztVQUFBSyxRQUFBLEVBQy9GbUc7UUFBZSxDQUFBLENBRW5CO01BQUEsQ0FBQSxDQUFBLFVBQUFnQixNQUFBLENBWllwRixhQUFhLENBQUUsQ0FhcEI7SUFBQSxDQUFBLENBQUE7RUFDTixDQUFBLENBQUEsQ0FDRjtBQUVWLENBQUM7QUFFRHhCLGNBQWMsQ0FBQzhHLFdBQVcsR0FBRyxXQUFXO0FBRXhDLElBQU1DLGFBQWEsZ0JBQUdwSSxJQUFJLENBQUNxQixjQUFjLENBQUM7QUFFMUM7QUFDQTtBQUNBLE9BQU8sSUFBTWdILFNBQVMsR0FBR0QsYUFBOEM7QUFDdkVDLFNBQVMsQ0FBQ3pILFFBQVEsR0FBR0EsUUFBUTtBQUU3QixlQUFleUgsU0FBUyIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vbGF5b3V0cy9TdGVwc0Zvcm0uanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IEZyYWdtZW50IGFzIF9GcmFnbWVudCwganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IENoaWxkcmVuLCBpc1ZhbGlkRWxlbWVudCwgbWVtbywgdXNlQ2FsbGJhY2ssIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUsIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgam9pbkNscyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi4vLi4vQnV0dG9uJztcbmltcG9ydCB1c2VMYXRlc3QgZnJvbSAnLi4vLi4vdXNlTGF0ZXN0JztcbmltcG9ydCBQcm9Gb3JtIGZyb20gJy4uL1Byb0Zvcm0nO1xuaW1wb3J0IHsgQ1NTX1BSRUZJWCwgREVGQVVMVF9URVhUIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi4vc3R5bGUvUHJvRm9ybS5tb2R1bGUuc2Nzcyc7XG4vKipcbiAqIFdyYXBwZXIgY29tcG9uZW50IHJlcHJlc2VudGluZyBhbiBpbmRpdmlkdWFsIHN0ZXAgaW5zaWRlIHtAbGluayBTdGVwc0Zvcm19LlxuICogRG9lcyBub3QgcmVuZGVyIGl0cyBvd24gZm9ybSDigJQgaXRzIGNoaWxkcmVuIGFyZSByZW5kZXJlZCBieSB0aGUgcGFyZW50IGBTdGVwc0Zvcm1gLlxuICovXG5leHBvcnQgY29uc3QgU3RlcEZvcm0gPSAocHJvcHMpID0+IHtcbiAgICByZXR1cm4gX2pzeChfRnJhZ21lbnQsIHsgY2hpbGRyZW46IHByb3BzLmNoaWxkcmVuIH0pO1xufTtcbi8qKlxuICogUGlja3Mgb25seSBzYWZlIEhUTUwgZGl2IGF0dHJpYnV0ZXMgKGBjbGFzc05hbWVgLCBgc3R5bGVgLCBgaWRgLCBgZGF0YS0qYCwgYGFyaWEtKmApXG4gKiBmcm9tIGEgcHJvcHMgb2JqZWN0LCBmaWx0ZXJpbmcgb3V0IGNvbXBvbmVudC1zcGVjaWZpYyBwcm9wcy5cbiAqL1xuY29uc3QgcGlja0h0bWxEaXZQcm9wcyA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHByb3BzKSkge1xuICAgICAgICBpZiAoa2V5ID09PSAnY2xhc3NOYW1lJyB8fCBrZXkgPT09ICdzdHlsZScgfHwga2V5ID09PSAnaWQnIHx8IGtleS5zdGFydHNXaXRoKCdkYXRhLScpIHx8IGtleS5zdGFydHNXaXRoKCdhcmlhLScpKSB7XG4gICAgICAgICAgICByZXN1bHRba2V5XSA9IHByb3BzW2tleV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG4vKipcbiAqIE11bHRpLXN0ZXAgd2l6YXJkIGZvcm0gdGhhdCByZW5kZXJzIG9uZSBzdGVwIGF0IGEgdGltZSwgbWVyZ2luZyB2YWx1ZXNcbiAqIGZyb20gYWxsIHN0ZXBzIGFuZCBjYWxsaW5nIGBvbkZpbmlzaGAgd2l0aCB0aGUgY29tYmluZWQgcmVzdWx0IG9uIHRoZSBmaW5hbCBzdGVwLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIDxTdGVwc0Zvcm0gb25GaW5pc2g9e2hhbmRsZVN1Ym1pdH0+XG4gKiAgIDxTdGVwc0Zvcm0uU3RlcEZvcm0gdGl0bGU9XCJCYXNpYyBJbmZvXCI+XG4gKiAgICAgPFByb0Zvcm1UZXh0IG5hbWU9XCJuYW1lXCIgbGFiZWw9XCJOYW1lXCIgLz5cbiAqICAgPC9TdGVwc0Zvcm0uU3RlcEZvcm0+XG4gKiAgIDxTdGVwc0Zvcm0uU3RlcEZvcm0gdGl0bGU9XCJEZXRhaWxzXCI+XG4gKiAgICAgPFByb0Zvcm1UZXh0QXJlYSBuYW1lPVwiYmlvXCIgbGFiZWw9XCJCaW9cIiAvPlxuICogICA8L1N0ZXBzRm9ybS5TdGVwRm9ybT5cbiAqIDwvU3RlcHNGb3JtPlxuICogYGBgXG4gKi9cbmNvbnN0IFN0ZXBzRm9ybUlubmVyID0gKHByb3BzKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIGNvbnN0IHsgY3VycmVudCwgb25DdXJyZW50Q2hhbmdlLCBvbkZpbmlzaCwgc3RlcHNQcm9wcywgZm9ybVByb3BzLCBzdWJtaXR0ZXIsIGNoaWxkcmVuLCB9ID0gcHJvcHM7XG4gICAgY29uc3QgW2lubmVyQ3VycmVudCwgc2V0SW5uZXJDdXJyZW50XSA9IHVzZVN0YXRlKDApO1xuICAgIGNvbnN0IFthbGxWYWx1ZXMsIHNldEFsbFZhbHVlc10gPSB1c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgYWxsVmFsdWVzUmVmID0gdXNlUmVmKHt9KTtcbiAgICAvKiogVHJhY2tzIHdoaWNoIHN0ZXAgaW5kZXggZWFjaCBrZXkgd2FzIGxhc3Qgc3VibWl0dGVkIGZyb20uICovXG4gICAgY29uc3Qga2V5U3RlcE1hcFJlZiA9IHVzZVJlZihuZXcgTWFwKCkpO1xuICAgIGNvbnN0IHN0ZXBQYW5lbFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBzdGVwcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICByZXR1cm4gQ2hpbGRyZW4udG9BcnJheShjaGlsZHJlbikuZmlsdGVyKGlzVmFsaWRFbGVtZW50KTtcbiAgICB9LCBbY2hpbGRyZW5dKTtcbiAgICBjb25zdCBtZXJnZWRDdXJyZW50ID0gdHlwZW9mIGN1cnJlbnQgPT09ICdudW1iZXInID8gY3VycmVudCA6IGlubmVyQ3VycmVudDtcbiAgICBjb25zdCBtZXJnZWRDdXJyZW50UmVmID0gdXNlTGF0ZXN0KG1lcmdlZEN1cnJlbnQpO1xuICAgIGNvbnN0IGFjdGl2ZVN0ZXAgPSBzdGVwc1ttZXJnZWRDdXJyZW50XTtcbiAgICBjb25zdCBzZXRDdXJyZW50ID0gdXNlQ2FsbGJhY2soKG5leHRDdXJyZW50KSA9PiB7XG4gICAgICAgIC8vIFdoZW4gbmF2aWdhdGluZyBiYWNrd2FyZCwgY2xlYXIgYWNjdW11bGF0ZWQgdmFsdWVzIGZyb20gc3RlcHMgYWZ0ZXJcbiAgICAgICAgLy8gdGhlIHRhcmdldCBzbyBzdGFsZSBkYXRhIGRvZXNuJ3QgcGVyc2lzdCB3aGVuIHRoZSB1c2VyIGNoYW5nZXMgYW5zd2Vycy5cbiAgICAgICAgaWYgKG5leHRDdXJyZW50IDwgbWVyZ2VkQ3VycmVudFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBzZXRBbGxWYWx1ZXMocHJldiA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2xlYW5lZCA9IE9iamVjdC5hc3NpZ24oe30sIHByZXYpO1xuICAgICAgICAgICAgICAgIGtleVN0ZXBNYXBSZWYuY3VycmVudC5mb3JFYWNoKChzdGVwSW5kZXgsIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RlcEluZGV4ID4gbmV4dEN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBjbGVhbmVkW2tleV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBhbGxWYWx1ZXNSZWYuY3VycmVudCA9IGNsZWFuZWQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFuZWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY3VycmVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBzZXRJbm5lckN1cnJlbnQobmV4dEN1cnJlbnQpO1xuICAgICAgICB9XG4gICAgICAgIG9uQ3VycmVudENoYW5nZSA9PT0gbnVsbCB8fCBvbkN1cnJlbnRDaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ3VycmVudENoYW5nZShuZXh0Q3VycmVudCk7XG4gICAgfSwgW2N1cnJlbnQsIG9uQ3VycmVudENoYW5nZV0pO1xuICAgIGNvbnN0IGhhbmRsZVN0ZXBGaW5pc2ggPSB1c2VDYWxsYmFjaygodmFsdWVzKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgY29uc3QgY3VycmVudFN0ZXAgPSBzdGVwc1ttZXJnZWRDdXJyZW50XTtcbiAgICAgICAgY29uc3Qgc3RlcFJlc3VsdCA9IHlpZWxkICgoX2IgPSAoX2EgPSBjdXJyZW50U3RlcCA9PT0gbnVsbCB8fCBjdXJyZW50U3RlcCA9PT0gdm9pZCAwID8gdm9pZCAwIDogY3VycmVudFN0ZXAucHJvcHMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5vbkZpbmlzaCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EsIHZhbHVlcykpO1xuICAgICAgICBpZiAoc3RlcFJlc3VsdCA9PT0gZmFsc2UpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIC8vIFRyYWNrIHdoaWNoIHN0ZXAgZWFjaCBrZXkgd2FzIHN1Ym1pdHRlZCBmcm9tIHNvIGJhY2t3YXJkIG5hdmlnYXRpb25cbiAgICAgICAgLy8gY2FuIHNlbGVjdGl2ZWx5IGNsZWFyIGRvd25zdHJlYW0gc3RlcCBkYXRhLlxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh2YWx1ZXMpKSB7XG4gICAgICAgICAgICBrZXlTdGVwTWFwUmVmLmN1cnJlbnQuc2V0KGtleSwgbWVyZ2VkQ3VycmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWVyZ2VkVmFsdWVzID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBhbGxWYWx1ZXNSZWYuY3VycmVudCksIHZhbHVlcyk7XG4gICAgICAgIGFsbFZhbHVlc1JlZi5jdXJyZW50ID0gbWVyZ2VkVmFsdWVzO1xuICAgICAgICBzZXRBbGxWYWx1ZXMobWVyZ2VkVmFsdWVzKTtcbiAgICAgICAgY29uc3QgaXNMYXN0ID0gbWVyZ2VkQ3VycmVudCA+PSBzdGVwcy5sZW5ndGggLSAxO1xuICAgICAgICBpZiAoaXNMYXN0KSB7XG4gICAgICAgICAgICB5aWVsZCAob25GaW5pc2ggPT09IG51bGwgfHwgb25GaW5pc2ggPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRmluaXNoKG1lcmdlZFZhbHVlcykpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNldEN1cnJlbnQobWVyZ2VkQ3VycmVudCArIDEpO1xuICAgIH0pLCBbbWVyZ2VkQ3VycmVudCwgb25GaW5pc2gsIHNldEN1cnJlbnQsIHN0ZXBzXSk7XG4gICAgY29uc3QgcGFyZW50Rm9ybVByb3BzID0gZm9ybVByb3BzO1xuICAgIGNvbnN0IF9iID0gKChfYSA9IGFjdGl2ZVN0ZXAgPT09IG51bGwgfHwgYWN0aXZlU3RlcCA9PT0gdm9pZCAwID8gdm9pZCAwIDogYWN0aXZlU3RlcC5wcm9wcykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDoge30pLCB7IHRpdGxlLCBkZXNjcmlwdGlvbiwgc3RlcFByb3BzLCBjaGlsZHJlbjogc3RlcENoaWxkcmVuIH0gPSBfYiwgc3RlcEZvcm1Qcm9wcyA9IF9fcmVzdChfYiwgW1widGl0bGVcIiwgXCJkZXNjcmlwdGlvblwiLCBcInN0ZXBQcm9wc1wiLCBcImNoaWxkcmVuXCJdKTtcbiAgICBjb25zdCBhY3RpdmVTdGVwRm9ybVByb3BzID0gYWN0aXZlU3RlcFxuICAgICAgICA/IHN0ZXBGb3JtUHJvcHNcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgc3RlcHNIdG1sUHJvcHMgPSBwaWNrSHRtbERpdlByb3BzKChzdGVwc1Byb3BzIHx8IHt9KSk7XG4gICAgY29uc3Qgc3RlcEh0bWxQcm9wcyA9IHBpY2tIdG1sRGl2UHJvcHMoKHN0ZXBQcm9wcyB8fCB7fSkpO1xuICAgIGNvbnN0IG1lcmdlZERlZmF1bHRWYWx1ZXMgPSB1c2VNZW1vKCgpID0+IChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgcGFyZW50Rm9ybVByb3BzID09PSBudWxsIHx8IHBhcmVudEZvcm1Qcm9wcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFyZW50Rm9ybVByb3BzLmRlZmF1bHRWYWx1ZXMpLCBhY3RpdmVTdGVwRm9ybVByb3BzID09PSBudWxsIHx8IGFjdGl2ZVN0ZXBGb3JtUHJvcHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFjdGl2ZVN0ZXBGb3JtUHJvcHMuZGVmYXVsdFZhbHVlcyksIGFsbFZhbHVlcykpLCBbYWN0aXZlU3RlcEZvcm1Qcm9wcyA9PT0gbnVsbCB8fCBhY3RpdmVTdGVwRm9ybVByb3BzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhY3RpdmVTdGVwRm9ybVByb3BzLmRlZmF1bHRWYWx1ZXMsIGFsbFZhbHVlcywgcGFyZW50Rm9ybVByb3BzID09PSBudWxsIHx8IHBhcmVudEZvcm1Qcm9wcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFyZW50Rm9ybVByb3BzLmRlZmF1bHRWYWx1ZXNdKTtcbiAgICBjb25zdCBzdWJtaXR0ZXJDb25maWcgPSBzdWJtaXR0ZXIgPT09IGZhbHNlID8gZmFsc2UgOiAoc3VibWl0dGVyIHx8IHt9KTtcbiAgICBjb25zdCBoYW5kbGVQcmV2ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmIChzdWJtaXR0ZXJDb25maWcgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAoX2EgPSBzdWJtaXR0ZXJDb25maWcub25SZXNldCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwoc3VibWl0dGVyQ29uZmlnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWVyZ2VkQ3VycmVudCA+IDApIHtcbiAgICAgICAgICAgIHNldEN1cnJlbnQobWVyZ2VkQ3VycmVudCAtIDEpO1xuICAgICAgICB9XG4gICAgfSwgW21lcmdlZEN1cnJlbnQsIHNldEN1cnJlbnQsIHN1Ym1pdHRlckNvbmZpZ10pO1xuICAgIGNvbnN0IGhhbmRsZVN1Ym1pdENsaWNrID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmIChzdWJtaXR0ZXJDb25maWcgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAoX2EgPSBzdWJtaXR0ZXJDb25maWcub25TdWJtaXQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKHN1Ym1pdHRlckNvbmZpZyk7XG4gICAgICAgIH1cbiAgICB9LCBbc3VibWl0dGVyQ29uZmlnXSk7XG4gICAgY29uc3QgdHJpZ2dlclN0ZXBTdWJtaXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGlmIChzdWJtaXR0ZXJDb25maWcgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAoX2EgPSBzdWJtaXR0ZXJDb25maWcub25TdWJtaXQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKHN1Ym1pdHRlckNvbmZpZyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZm9ybU5vZGUgPSAoX2IgPSBzdGVwUGFuZWxSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnF1ZXJ5U2VsZWN0b3IoJ2Zvcm0nKTtcbiAgICAgICAgaWYgKCFmb3JtTm9kZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKHR5cGVvZiBmb3JtTm9kZS5yZXF1ZXN0U3VibWl0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBmb3JtTm9kZS5yZXF1ZXN0U3VibWl0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZm9ybU5vZGUuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ3N1Ym1pdCcsIHsgYnViYmxlczogdHJ1ZSwgY2FuY2VsYWJsZTogdHJ1ZSB9KSk7XG4gICAgfSwgW3N1Ym1pdHRlckNvbmZpZ10pO1xuICAgIGNvbnN0IHByZXZUZXh0ID0gc3VibWl0dGVyQ29uZmlnICE9PSBmYWxzZSAmJiBzdWJtaXR0ZXJDb25maWcucHJldlRleHRcbiAgICAgICAgPyBzdWJtaXR0ZXJDb25maWcucHJldlRleHRcbiAgICAgICAgOiBERUZBVUxUX1RFWFQucHJldmlvdXM7XG4gICAgY29uc3QgbmV4dFRleHQgPSBzdWJtaXR0ZXJDb25maWcgIT09IGZhbHNlICYmIHN1Ym1pdHRlckNvbmZpZy5uZXh0VGV4dFxuICAgICAgICA/IHN1Ym1pdHRlckNvbmZpZy5uZXh0VGV4dFxuICAgICAgICA6IERFRkFVTFRfVEVYVC5uZXh0O1xuICAgIGNvbnN0IHN1Ym1pdFRleHQgPSBzdWJtaXR0ZXJDb25maWcgIT09IGZhbHNlICYmIHN1Ym1pdHRlckNvbmZpZy5zdWJtaXRUZXh0XG4gICAgICAgID8gc3VibWl0dGVyQ29uZmlnLnN1Ym1pdFRleHRcbiAgICAgICAgOiBERUZBVUxUX1RFWFQuc3VibWl0O1xuICAgIGNvbnN0IGlzTGFzdFN0ZXAgPSBtZXJnZWRDdXJyZW50ID49IHN0ZXBzLmxlbmd0aCAtIDE7XG4gICAgY29uc3QgeyBjbGFzc05hbWU6IHN0ZXBzQ2xhc3NOYW1lUmF3IH0gPSBzdGVwc0h0bWxQcm9wcywgc3RlcHNSZXN0SHRtbCA9IF9fcmVzdChzdGVwc0h0bWxQcm9wcywgW1wiY2xhc3NOYW1lXCJdKTtcbiAgICBjb25zdCB7IGNsYXNzTmFtZTogc3RlcENsYXNzTmFtZVJhdyB9ID0gc3RlcEh0bWxQcm9wcywgc3RlcFJlc3RIdG1sID0gX19yZXN0KHN0ZXBIdG1sUHJvcHMsIFtcImNsYXNzTmFtZVwiXSk7XG4gICAgY29uc3Qgc3RlcHNDbGFzc05hbWUgPSB0eXBlb2Ygc3RlcHNDbGFzc05hbWVSYXcgPT09ICdzdHJpbmcnID8gc3RlcHNDbGFzc05hbWVSYXcgOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgc3RlcENsYXNzTmFtZSA9IHR5cGVvZiBzdGVwQ2xhc3NOYW1lUmF3ID09PSAnc3RyaW5nJyA/IHN0ZXBDbGFzc05hbWVSYXcgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgcmVuZGVyZWRBY3Rpb25zID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgICAgaWYgKHN1Ym1pdHRlckNvbmZpZyA9PT0gZmFsc2UpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3QgcmVzZXRCdXR0b25Qcm9wcyA9IHN1Ym1pdHRlckNvbmZpZy5yZXNldEJ1dHRvblByb3BzO1xuICAgICAgICBjb25zdCBzdWJtaXRCdXR0b25Qcm9wcyA9IHN1Ym1pdHRlckNvbmZpZy5zdWJtaXRCdXR0b25Qcm9wcztcbiAgICAgICAgY29uc3QgcHJldkJ1dHRvbiA9IG1lcmdlZEN1cnJlbnQgPiAwXG4gICAgICAgICAgICA/IChfanN4KEJ1dHRvbiwgT2JqZWN0LmFzc2lnbih7fSwgcmVzZXRCdXR0b25Qcm9wcywgeyB0eXBlOiAoX2EgPSByZXNldEJ1dHRvblByb3BzID09PSBudWxsIHx8IHJlc2V0QnV0dG9uUHJvcHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlc2V0QnV0dG9uUHJvcHMudHlwZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJ2J1dHRvbicsIHNldmVyaXR5OiAoX2IgPSByZXNldEJ1dHRvblByb3BzID09PSBudWxsIHx8IHJlc2V0QnV0dG9uUHJvcHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlc2V0QnV0dG9uUHJvcHMuc2V2ZXJpdHkpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICdzZWNvbmRhcnknLCBvbkNsaWNrOiAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgICAgICAoX2EgPSByZXNldEJ1dHRvblByb3BzID09PSBudWxsIHx8IHJlc2V0QnV0dG9uUHJvcHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlc2V0QnV0dG9uUHJvcHMub25DbGljaykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwocmVzZXRCdXR0b25Qcm9wcywgZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVQcmV2KCk7XG4gICAgICAgICAgICAgICAgfSwgY2hpbGRyZW46IHByZXZUZXh0IH0pLCAncHJldicpKVxuICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICBjb25zdCBuZXh0QnV0dG9uID0gKF9qc3goQnV0dG9uLCBPYmplY3QuYXNzaWduKHt9LCBzdWJtaXRCdXR0b25Qcm9wcywgeyB0eXBlOiAoX2MgPSBzdWJtaXRCdXR0b25Qcm9wcyA9PT0gbnVsbCB8fCBzdWJtaXRCdXR0b25Qcm9wcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3VibWl0QnV0dG9uUHJvcHMudHlwZSkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogJ3N1Ym1pdCcsIG9uQ2xpY2s6IChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAoX2EgPSBzdWJtaXRCdXR0b25Qcm9wcyA9PT0gbnVsbCB8fCBzdWJtaXRCdXR0b25Qcm9wcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3VibWl0QnV0dG9uUHJvcHMub25DbGljaykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwoc3VibWl0QnV0dG9uUHJvcHMsIGV2ZW50KTtcbiAgICAgICAgICAgICAgICBoYW5kbGVTdWJtaXRDbGljaygpO1xuICAgICAgICAgICAgfSwgY2hpbGRyZW46IGlzTGFzdFN0ZXAgPyBzdWJtaXRUZXh0IDogbmV4dFRleHQgfSksICdzdWJtaXQnKSk7XG4gICAgICAgIGNvbnN0IGRlZmF1bHREb20gPSBbcHJldkJ1dHRvbiwgbmV4dEJ1dHRvbl0uZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgICBpZiAoIXN1Ym1pdHRlckNvbmZpZy5yZW5kZXIpXG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdERvbTtcbiAgICAgICAgcmV0dXJuIHN1Ym1pdHRlckNvbmZpZy5yZW5kZXIoe1xuICAgICAgICAgICAgZm9ybTogKF9kID0gYWN0aXZlU3RlcEZvcm1Qcm9wcyA9PT0gbnVsbCB8fCBhY3RpdmVTdGVwRm9ybVByb3BzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhY3RpdmVTdGVwRm9ybVByb3BzLmZvcm0pICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IHBhcmVudEZvcm1Qcm9wcyA9PT0gbnVsbCB8fCBwYXJlbnRGb3JtUHJvcHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhcmVudEZvcm1Qcm9wcy5mb3JtLFxuICAgICAgICAgICAgc3VibWl0OiB0cmlnZ2VyU3RlcFN1Ym1pdCxcbiAgICAgICAgICAgIHJlc2V0OiBoYW5kbGVQcmV2LFxuICAgICAgICB9LCBkZWZhdWx0RG9tKTtcbiAgICB9LCBbXG4gICAgICAgIGFjdGl2ZVN0ZXBGb3JtUHJvcHMgPT09IG51bGwgfHwgYWN0aXZlU3RlcEZvcm1Qcm9wcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogYWN0aXZlU3RlcEZvcm1Qcm9wcy5mb3JtLFxuICAgICAgICBoYW5kbGVQcmV2LFxuICAgICAgICBoYW5kbGVTdWJtaXRDbGljayxcbiAgICAgICAgaXNMYXN0U3RlcCxcbiAgICAgICAgbWVyZ2VkQ3VycmVudCxcbiAgICAgICAgbmV4dFRleHQsXG4gICAgICAgIHBhcmVudEZvcm1Qcm9wcyA9PT0gbnVsbCB8fCBwYXJlbnRGb3JtUHJvcHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhcmVudEZvcm1Qcm9wcy5mb3JtLFxuICAgICAgICBwcmV2VGV4dCxcbiAgICAgICAgc3VibWl0VGV4dCxcbiAgICAgICAgc3VibWl0dGVyQ29uZmlnLFxuICAgICAgICB0cmlnZ2VyU3RlcFN1Ym1pdCxcbiAgICBdKTtcbiAgICBpZiAoIWFjdGl2ZVN0ZXApXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIHJldHVybiAoX2pzeChcImRpdlwiLCBPYmplY3QuYXNzaWduKHt9LCBzdGVwc1Jlc3RIdG1sLCB7IGNsYXNzTmFtZTogam9pbkNscyhgJHtDU1NfUFJFRklYfS1zdGVwcy1mb3JtYCwgc3RlcHNDbGFzc05hbWUpLCBjaGlsZHJlbjogX2pzeHMoXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7fSwgc3RlcFJlc3RIdG1sLCB7IHJlZjogc3RlcFBhbmVsUmVmLCBjbGFzc05hbWU6IGpvaW5DbHMoYCR7Q1NTX1BSRUZJWH0tc3RlcHMtZm9ybS1zdGVwYCwgc3RlcENsYXNzTmFtZSksIGNoaWxkcmVuOiBbdGl0bGUgJiYgKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGpvaW5DbHMoc3R5bGVzWydwcm9mb3JtX19zdGVwcy1mb3JtLXRpdGxlJ10sIGAke0NTU19QUkVGSVh9LXN0ZXBzLWZvcm0tdGl0bGVgKSwgY2hpbGRyZW46IHRpdGxlIH0pKSwgZGVzY3JpcHRpb24gJiYgKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGpvaW5DbHMoc3R5bGVzWydwcm9mb3JtX19zdGVwcy1mb3JtLWRlc2NyaXB0aW9uJ10sIGAke0NTU19QUkVGSVh9LXN0ZXBzLWZvcm0tZGVzY3JpcHRpb25gKSwgY2hpbGRyZW46IGRlc2NyaXB0aW9uIH0pKSwgX2pzeHMoUHJvRm9ybSwgT2JqZWN0LmFzc2lnbih7fSwgcGFyZW50Rm9ybVByb3BzLCBhY3RpdmVTdGVwRm9ybVByb3BzLCB7IGRlZmF1bHRWYWx1ZXM6IG1lcmdlZERlZmF1bHRWYWx1ZXMsIHN1Ym1pdHRlcjogZmFsc2UsIG9uRmluaXNoOiBoYW5kbGVTdGVwRmluaXNoLCBjaGlsZHJlbjogW3N0ZXBDaGlsZHJlbiwgcmVuZGVyZWRBY3Rpb25zICYmIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBqb2luQ2xzKHN0eWxlc1sncHJvZm9ybV9fc3RlcHMtZm9ybS1hY3Rpb25zJ10sIGAke0NTU19QUkVGSVh9LXN0ZXBzLWZvcm0tYWN0aW9uc2ApLCBjaGlsZHJlbjogcmVuZGVyZWRBY3Rpb25zIH0pKV0gfSksIGBzdGVwLSR7bWVyZ2VkQ3VycmVudH1gKV0gfSkpIH0pKSk7XG59O1xuU3RlcHNGb3JtSW5uZXIuZGlzcGxheU5hbWUgPSAnU3RlcHNGb3JtJztcbmNvbnN0IFN0ZXBzRm9ybUJhc2UgPSBtZW1vKFN0ZXBzRm9ybUlubmVyKTtcbi8vIFR5cGUgYXNzZXJ0aW9uIHJlcXVpcmVkIGJlY2F1c2UgbWVtbygpIGxvc2VzIHRoZSBzdGF0aWMgU3RlcEZvcm0gcHJvcGVydHkgdHlwZS5cbi8vIFdlIGF0dGFjaCBTdGVwRm9ybSBhcyBhIHN0YXRpYyBwcm9wZXJ0eSBiZWxvdywgbWFraW5nIHRoaXMgYSBjb21wb3VuZCBjb21wb25lbnQgcGF0dGVybi5cbmV4cG9ydCBjb25zdCBTdGVwc0Zvcm0gPSBTdGVwc0Zvcm1CYXNlO1xuU3RlcHNGb3JtLlN0ZXBGb3JtID0gU3RlcEZvcm07XG5leHBvcnQgZGVmYXVsdCBTdGVwc0Zvcm07IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -0,0 +1,4 @@
1
+ export { ModalForm } from './ModalForm';
2
+ export { DrawerForm } from './DrawerForm';
3
+ export { StepsForm, StepForm } from './StepsForm';
4
+ export { QueryFilter } from './QueryFilter';
@@ -0,0 +1,5 @@
1
+ export { ModalForm } from './ModalForm';
2
+ export { DrawerForm } from './DrawerForm';
3
+ export { StepsForm, StepForm } from './StepsForm';
4
+ export { QueryFilter } from './QueryFilter';
5
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL2xheW91dHMvaW5kZXgudHMiXSwibmFtZXMiOlsiTW9kYWxGb3JtIiwiRHJhd2VyRm9ybSIsIlN0ZXBzRm9ybSIsIlN0ZXBGb3JtIiwiUXVlcnlGaWx0ZXIiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFNBQVMsUUFBUSxhQUFhO0FBQ3ZDLFNBQVNDLFVBQVUsUUFBUSxjQUFjO0FBQ3pDLFNBQVNDLFNBQVMsRUFBRUMsUUFBUSxRQUFRLGFBQWE7QUFDakQsU0FBU0MsV0FBVyxRQUFRLGVBQWUiLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL2xheW91dHMvaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6W251bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -0,0 +1,53 @@
1
+ import type { CSSProperties, ReactElement, ReactNode } from 'react';
2
+ /** Configuration options for the {@link useOverlayForm} hook. */
3
+ interface UseOverlayFormOptions<TValues> {
4
+ /** Controlled open state. */
5
+ open?: boolean;
6
+ /** Callback when the open state changes. */
7
+ onOpenChange?: (open: boolean) => void;
8
+ /** Element that opens the overlay when clicked. */
9
+ trigger?: ReactElement;
10
+ /** Delay (ms) before auto-closing after submit. */
11
+ submitTimeout?: number;
12
+ /** Whether to auto-close after a successful submit. @default true */
13
+ autoClose?: boolean;
14
+ /** Whether to unmount overlay content when closed. @default true */
15
+ destroyOnClose?: boolean;
16
+ /** Overlay width. */
17
+ width?: string | number;
18
+ /** Form finish handler. Return `false` to prevent auto-close. */
19
+ onFinish?: (values: TValues) => void | boolean | Promise<void | boolean>;
20
+ /** Inline styles from the overlay component. */
21
+ overlayStyle?: CSSProperties;
22
+ /** The overlay's own `onHide` callback. */
23
+ onOverlayHide?: (...args: unknown[]) => void;
24
+ }
25
+ /** Return shape of {@link useOverlayForm}. */
26
+ export interface UseOverlayFormResult<TValues> {
27
+ /** Effective open state (controlled or uncontrolled). */
28
+ mergedOpen: boolean;
29
+ /** Whether overlay container should stay mounted. */
30
+ shouldRenderPanel: boolean;
31
+ /** Optional trigger element that opens the overlay. */
32
+ triggerNode: ReactNode;
33
+ /** Wrapped finish handler with optional auto-close behavior. */
34
+ handleFinish: (values: TValues) => Promise<void | boolean | undefined>;
35
+ /** Wrapped overlay hide handler. */
36
+ handleHide: (...args: unknown[]) => void;
37
+ /** Merged overlay style (base style + width override). */
38
+ mergedStyle: CSSProperties;
39
+ /** Imperative open-state setter honoring controlled mode. */
40
+ changeOpen: (nextOpen: boolean) => void;
41
+ }
42
+ /**
43
+ * Shared hook that powers both {@link ModalForm} and {@link DrawerForm}.
44
+ *
45
+ * Manages open/close state, trigger element cloning, auto-close with optional
46
+ * timeout after submit, and overlay visibility lifecycle.
47
+ *
48
+ * @typeParam TValues - The form values type.
49
+ * @param options - Configuration options.
50
+ * @returns An object with `mergedOpen`, `triggerNode`, `handleFinish`, `handleHide`, and more.
51
+ */
52
+ export declare function useOverlayForm<TValues>({ open, onOpenChange, trigger, submitTimeout, autoClose, destroyOnClose, width, onFinish, overlayStyle, onOverlayHide, }: UseOverlayFormOptions<TValues>): UseOverlayFormResult<TValues>;
53
+ export {};
@@ -0,0 +1,143 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
3
+ var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {
4
+ function adopt(value) {
5
+ return value instanceof P ? value : new P(function (resolve) {
6
+ resolve(value);
7
+ });
8
+ }
9
+ return new (P || (P = Promise))(function (resolve, reject) {
10
+ function fulfilled(value) {
11
+ try {
12
+ step(generator.next(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ }
17
+ function rejected(value) {
18
+ try {
19
+ step(generator["throw"](value));
20
+ } catch (e) {
21
+ reject(e);
22
+ }
23
+ }
24
+ function step(result) {
25
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
26
+ }
27
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
28
+ });
29
+ };
30
+ import { cloneElement, isValidElement, useCallback, useEffect, useMemo, useRef, useState } from 'react';
31
+ /**
32
+ * Shared hook that powers both {@link ModalForm} and {@link DrawerForm}.
33
+ *
34
+ * Manages open/close state, trigger element cloning, auto-close with optional
35
+ * timeout after submit, and overlay visibility lifecycle.
36
+ *
37
+ * @typeParam TValues - The form values type.
38
+ * @param options - Configuration options.
39
+ * @returns An object with `mergedOpen`, `triggerNode`, `handleFinish`, `handleHide`, and more.
40
+ */
41
+ export function useOverlayForm(_ref) {
42
+ var _this = this;
43
+ var open = _ref.open,
44
+ onOpenChange = _ref.onOpenChange,
45
+ trigger = _ref.trigger,
46
+ submitTimeout = _ref.submitTimeout,
47
+ _ref$autoClose = _ref.autoClose,
48
+ autoClose = _ref$autoClose === void 0 ? true : _ref$autoClose,
49
+ _ref$destroyOnClose = _ref.destroyOnClose,
50
+ destroyOnClose = _ref$destroyOnClose === void 0 ? true : _ref$destroyOnClose,
51
+ width = _ref.width,
52
+ onFinish = _ref.onFinish,
53
+ overlayStyle = _ref.overlayStyle,
54
+ onOverlayHide = _ref.onOverlayHide;
55
+ var _useState = useState(false),
56
+ _useState2 = _slicedToArray(_useState, 2),
57
+ innerOpen = _useState2[0],
58
+ setInnerOpen = _useState2[1];
59
+ var closeTimerRef = useRef(null);
60
+ var onFinishRef = useRef(onFinish);
61
+ var mergedOpen = open !== null && open !== void 0 ? open : innerOpen;
62
+ useEffect(function () {
63
+ onFinishRef.current = onFinish;
64
+ }, [onFinish]);
65
+ var changeOpen = useCallback(function (nextOpen) {
66
+ if (open === undefined) {
67
+ setInnerOpen(nextOpen);
68
+ }
69
+ onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(nextOpen);
70
+ }, [open, onOpenChange]);
71
+ var clearCloseTimer = useCallback(function () {
72
+ if (!closeTimerRef.current) return;
73
+ clearTimeout(closeTimerRef.current);
74
+ closeTimerRef.current = null;
75
+ }, []);
76
+ var handleFinish = useCallback(function (values) {
77
+ return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
78
+ var _a, result;
79
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
80
+ while (1) switch (_context.prev = _context.next) {
81
+ case 0:
82
+ _context.next = 2;
83
+ return (_a = onFinishRef.current) === null || _a === void 0 ? void 0 : _a.call(onFinishRef, values);
84
+ case 2:
85
+ result = _context.sent;
86
+ if (autoClose && result !== false) {
87
+ clearCloseTimer();
88
+ if (typeof submitTimeout === 'number' && submitTimeout > 0) {
89
+ closeTimerRef.current = setTimeout(function () {
90
+ changeOpen(false);
91
+ closeTimerRef.current = null;
92
+ }, submitTimeout);
93
+ } else {
94
+ changeOpen(false);
95
+ }
96
+ }
97
+ return _context.abrupt("return", result);
98
+ case 5:
99
+ case "end":
100
+ return _context.stop();
101
+ }
102
+ }, _callee);
103
+ }));
104
+ }, [autoClose, changeOpen, clearCloseTimer, submitTimeout]);
105
+ var triggerNode = useMemo(function () {
106
+ if (!trigger || ! /*#__PURE__*/isValidElement(trigger)) return null;
107
+ return /*#__PURE__*/cloneElement(trigger, {
108
+ onClick: function onClick(event) {
109
+ var _a;
110
+ var triggerOnClick = (_a = trigger.props) === null || _a === void 0 ? void 0 : _a.onClick;
111
+ triggerOnClick === null || triggerOnClick === void 0 ? void 0 : triggerOnClick(event);
112
+ if (event.defaultPrevented) return;
113
+ changeOpen(true);
114
+ }
115
+ });
116
+ }, [changeOpen, trigger]);
117
+ var handleHide = useCallback(function () {
118
+ clearCloseTimer();
119
+ onOverlayHide === null || onOverlayHide === void 0 ? void 0 : onOverlayHide.apply(void 0, arguments);
120
+ changeOpen(false);
121
+ }, [changeOpen, clearCloseTimer, onOverlayHide]);
122
+ var shouldRenderPanel = mergedOpen || !destroyOnClose;
123
+ var mergedStyle = useMemo(function () {
124
+ return Object.assign(Object.assign({}, overlayStyle || {}), width !== undefined ? {
125
+ width: width
126
+ } : {});
127
+ }, [overlayStyle, width]);
128
+ useEffect(function () {
129
+ return function () {
130
+ clearCloseTimer();
131
+ };
132
+ }, [clearCloseTimer]);
133
+ return {
134
+ mergedOpen: mergedOpen,
135
+ shouldRenderPanel: shouldRenderPanel,
136
+ triggerNode: triggerNode,
137
+ handleFinish: handleFinish,
138
+ handleHide: handleHide,
139
+ mergedStyle: mergedStyle,
140
+ changeOpen: changeOpen
141
+ };
142
+ }
143
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9sYXlvdXRzL3VzZU92ZXJsYXlGb3JtLmpzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vbGF5b3V0cy91c2VPdmVybGF5Rm9ybS50cyJdLCJuYW1lcyI6WyJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJjbG9uZUVsZW1lbnQiLCJpc1ZhbGlkRWxlbWVudCIsInVzZUNhbGxiYWNrIiwidXNlRWZmZWN0IiwidXNlTWVtbyIsInVzZVJlZiIsInVzZVN0YXRlIiwidXNlT3ZlcmxheUZvcm0iLCJfcmVmIiwiX3RoaXMiLCJvcGVuIiwib25PcGVuQ2hhbmdlIiwidHJpZ2dlciIsInN1Ym1pdFRpbWVvdXQiLCJfcmVmJGF1dG9DbG9zZSIsImF1dG9DbG9zZSIsIl9yZWYkZGVzdHJveU9uQ2xvc2UiLCJkZXN0cm95T25DbG9zZSIsIndpZHRoIiwib25GaW5pc2giLCJvdmVybGF5U3R5bGUiLCJvbk92ZXJsYXlIaWRlIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiaW5uZXJPcGVuIiwic2V0SW5uZXJPcGVuIiwiY2xvc2VUaW1lclJlZiIsIm9uRmluaXNoUmVmIiwibWVyZ2VkT3BlbiIsImN1cnJlbnQiLCJjaGFuZ2VPcGVuIiwibmV4dE9wZW4iLCJ1bmRlZmluZWQiLCJjbGVhckNsb3NlVGltZXIiLCJjbGVhclRpbWVvdXQiLCJoYW5kbGVGaW5pc2giLCJ2YWx1ZXMiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJfYSIsIndyYXAiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwicHJldiIsImNhbGwiLCJzZW50Iiwic2V0VGltZW91dCIsImFicnVwdCIsInN0b3AiLCJ0cmlnZ2VyTm9kZSIsIm9uQ2xpY2siLCJldmVudCIsInRyaWdnZXJPbkNsaWNrIiwicHJvcHMiLCJkZWZhdWx0UHJldmVudGVkIiwiaGFuZGxlSGlkZSIsImFyZ3VtZW50cyIsInNob3VsZFJlbmRlclBhbmVsIiwibWVyZ2VkU3R5bGUiLCJPYmplY3QiLCJhc3NpZ24iXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBSUEsU0FBUyxHQUFJLElBQUksSUFBSSxJQUFJLENBQUNBLFNBQVMsSUFBSyxVQUFVQyxPQUFPLEVBQUVDLFVBQVUsRUFBRUMsQ0FBQyxFQUFFQyxTQUFTLEVBQUU7RUFDckYsU0FBU0MsS0FBS0EsQ0FBQ0MsS0FBSyxFQUFFO0lBQUUsT0FBT0EsS0FBSyxZQUFZSCxDQUFDLEdBQUdHLEtBQUssR0FBRyxJQUFJSCxDQUFDLENBQUMsVUFBVUksT0FBTyxFQUFFO01BQUVBLE9BQU8sQ0FBQ0QsS0FBSyxDQUFDO0lBQUUsQ0FBQyxDQUFDO0VBQUU7RUFDM0csT0FBTyxLQUFLSCxDQUFDLEtBQUtBLENBQUMsR0FBR0ssT0FBTyxDQUFDLEVBQUUsVUFBVUQsT0FBTyxFQUFFRSxNQUFNLEVBQUU7SUFDdkQsU0FBU0MsU0FBU0EsQ0FBQ0osS0FBSyxFQUFFO01BQUUsSUFBSTtRQUFFSyxJQUFJLENBQUNQLFNBQVMsQ0FBQ1EsSUFBSSxDQUFDTixLQUFLLENBQUMsQ0FBQztNQUFFLENBQUMsQ0FBQyxPQUFPTyxDQUFDLEVBQUU7UUFBRUosTUFBTSxDQUFDSSxDQUFDLENBQUM7TUFBRTtJQUFFO0lBQzFGLFNBQVNDLFFBQVFBLENBQUNSLEtBQUssRUFBRTtNQUFFLElBQUk7UUFBRUssSUFBSSxDQUFDUCxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUNFLEtBQUssQ0FBQyxDQUFDO01BQUUsQ0FBQyxDQUFDLE9BQU9PLENBQUMsRUFBRTtRQUFFSixNQUFNLENBQUNJLENBQUMsQ0FBQztNQUFFO0lBQUU7SUFDN0YsU0FBU0YsSUFB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QUNaLGNBQWM7RUFFdkQsSUFBTTJDLFdBQVcsR0FBR3hELE9BQU8sQ0FBZ0I7SUFBQSxPQUFNeUQsTUFBQSxDQUFBQyxNQUFBLENBQUFELE1BQUEsQ0FBQUMsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUMzQzFDLFlBQVksSUFBSSxDQUFBLENBQUcsQ0FBQSxFQUNuQkYsS0FBSyxLQUFLZSxTQUFTLEdBQUc7TUFBRWYsS0FBSyxFQUFMQTtJQUFLLENBQUUsR0FBRyxDQUFBLENBQUcsQ0FBQTtFQUFBLENBQ3pDLEVBQUUsQ0FBQ0UsWUFBWSxFQUFFRixLQUFLLENBQUMsQ0FBQztFQUUxQmYsU0FBUyxDQUFDLFlBQUs7SUFDYixPQUFPLFlBQUs7TUFDVitCLGVBQWUsQ0FBQSxDQUFFO0lBQ25CLENBQUM7RUFDSCxDQUFDLEVBQUUsQ0FBQ0EsZUFBZSxDQUFDLENBQUM7RUFFckIsT0FBTztJQUNMTCxVQUFVLEVBQVZBLFVBQVU7SUFDVjhCLGlCQUFpQixFQUFqQkEsaUJBQWlCO0lBQ2pCUixXQUFXLEVBQVhBLFdBQVc7SUFDWGYsWUFBWSxFQUFaQSxZQUFZO0lBQ1pxQixVQUFVLEVBQVZBLFVBQVU7SUFDVkcsV0FBVyxFQUFYQSxXQUFXO0lBQ1g3QixVQUFVLEVBQVZBO0VEdERBLENDdUREO0FBQ0giLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL2xheW91dHMvdXNlT3ZlcmxheUZvcm0uanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCB7IGNsb25lRWxlbWVudCwgaXNWYWxpZEVsZW1lbnQsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG4vKipcbiAqIFNoYXJlZCBob29rIHRoYXQgcG93ZXJzIGJvdGgge0BsaW5rIE1vZGFsRm9ybX0gYW5kIHtAbGluayBEcmF3ZXJGb3JtfS5cbiAqXG4gKiBNYW5hZ2VzIG9wZW4vY2xvc2Ugc3RhdGUsIHRyaWdnZXIgZWxlbWVudCBjbG9uaW5nLCBhdXRvLWNsb3NlIHdpdGggb3B0aW9uYWxcbiAqIHRpbWVvdXQgYWZ0ZXIgc3VibWl0LCBhbmQgb3ZlcmxheSB2aXNpYmlsaXR5IGxpZmVjeWNsZS5cbiAqXG4gKiBAdHlwZVBhcmFtIFRWYWx1ZXMgLSBUaGUgZm9ybSB2YWx1ZXMgdHlwZS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zLlxuICogQHJldHVybnMgQW4gb2JqZWN0IHdpdGggYG1lcmdlZE9wZW5gLCBgdHJpZ2dlck5vZGVgLCBgaGFuZGxlRmluaXNoYCwgYGhhbmRsZUhpZGVgLCBhbmQgbW9yZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZU92ZXJsYXlGb3JtKHsgb3Blbiwgb25PcGVuQ2hhbmdlLCB0cmlnZ2VyLCBzdWJtaXRUaW1lb3V0LCBhdXRvQ2xvc2UgPSB0cnVlLCBkZXN0cm95T25DbG9zZSA9IHRydWUsIHdpZHRoLCBvbkZpbmlzaCwgb3ZlcmxheVN0eWxlLCBvbk92ZXJsYXlIaWRlLCB9KSB7XG4gICAgY29uc3QgW2lubmVyT3Blbiwgc2V0SW5uZXJPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBjbG9zZVRpbWVyUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IG9uRmluaXNoUmVmID0gdXNlUmVmKG9uRmluaXNoKTtcbiAgICBjb25zdCBtZXJnZWRPcGVuID0gb3BlbiAhPT0gbnVsbCAmJiBvcGVuICE9PSB2b2lkIDAgPyBvcGVuIDogaW5uZXJPcGVuO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIG9uRmluaXNoUmVmLmN1cnJlbnQgPSBvbkZpbmlzaDtcbiAgICB9LCBbb25GaW5pc2hdKTtcbiAgICBjb25zdCBjaGFuZ2VPcGVuID0gdXNlQ2FsbGJhY2soKG5leHRPcGVuKSA9PiB7XG4gICAgICAgIGlmIChvcGVuID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHNldElubmVyT3BlbihuZXh0T3Blbik7XG4gICAgICAgIH1cbiAgICAgICAgb25PcGVuQ2hhbmdlID09PSBudWxsIHx8IG9uT3BlbkNoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25PcGVuQ2hhbmdlKG5leHRPcGVuKTtcbiAgICB9LCBbb3Blbiwgb25PcGVuQ2hhbmdlXSk7XG4gICAgY29uc3QgY2xlYXJDbG9zZVRpbWVyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICBpZiAoIWNsb3NlVGltZXJSZWYuY3VycmVudClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY2xlYXJUaW1lb3V0KGNsb3NlVGltZXJSZWYuY3VycmVudCk7XG4gICAgICAgIGNsb3NlVGltZXJSZWYuY3VycmVudCA9IG51bGw7XG4gICAgfSwgW10pO1xuICAgIGNvbnN0IGhhbmRsZUZpbmlzaCA9IHVzZUNhbGxiYWNrKCh2YWx1ZXMpID0+IF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCByZXN1bHQgPSB5aWVsZCAoKF9hID0gb25GaW5pc2hSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwob25GaW5pc2hSZWYsIHZhbHVlcykpO1xuICAgICAgICBpZiAoYXV0b0Nsb3NlICYmIHJlc3VsdCAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGNsZWFyQ2xvc2VUaW1lcigpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBzdWJtaXRUaW1lb3V0ID09PSAnbnVtYmVyJyAmJiBzdWJtaXRUaW1lb3V0ID4gMCkge1xuICAgICAgICAgICAgICAgIGNsb3NlVGltZXJSZWYuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VPcGVuKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgY2xvc2VUaW1lclJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9LCBzdWJtaXRUaW1lb3V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNoYW5nZU9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSksIFthdXRvQ2xvc2UsIGNoYW5nZU9wZW4sIGNsZWFyQ2xvc2VUaW1lciwgc3VibWl0VGltZW91dF0pO1xuICAgIGNvbnN0IHRyaWdnZXJOb2RlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGlmICghdHJpZ2dlciB8fCAhaXNWYWxpZEVsZW1lbnQodHJpZ2dlcikpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgcmV0dXJuIGNsb25lRWxlbWVudCh0cmlnZ2VyLCB7XG4gICAgICAgICAgICBvbkNsaWNrOiAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgY29uc3QgdHJpZ2dlck9uQ2xpY2sgPSAoX2EgPSB0cmlnZ2VyLnByb3BzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eub25DbGljaztcbiAgICAgICAgICAgICAgICB0cmlnZ2VyT25DbGljayA9PT0gbnVsbCB8fCB0cmlnZ2VyT25DbGljayA9PT0gdm9pZCAwID8gdm9pZCAwIDogdHJpZ2dlck9uQ2xpY2soZXZlbnQpO1xuICAgICAgICAgICAgICAgIGlmIChldmVudC5kZWZhdWx0UHJldmVudGVkKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgY2hhbmdlT3Blbih0cnVlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH0sIFtjaGFuZ2VPcGVuLCB0cmlnZ2VyXSk7XG4gICAgY29uc3QgaGFuZGxlSGlkZSA9IHVzZUNhbGxiYWNrKCguLi5hcmdzKSA9PiB7XG4gICAgICAgIGNsZWFyQ2xvc2VUaW1lcigpO1xuICAgICAgICBvbk92ZXJsYXlIaWRlID09PSBudWxsIHx8IG9uT3ZlcmxheUhpZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uT3ZlcmxheUhpZGUoLi4uYXJncyk7XG4gICAgICAgIGNoYW5nZU9wZW4oZmFsc2UpO1xuICAgIH0sIFtjaGFuZ2VPcGVuLCBjbGVhckNsb3NlVGltZXIsIG9uT3ZlcmxheUhpZGVdKTtcbiAgICBjb25zdCBzaG91bGRSZW5kZXJQYW5lbCA9IG1lcmdlZE9wZW4gfHwgIWRlc3Ryb3lPbkNsb3NlO1xuICAgIGNvbnN0IG1lcmdlZFN0eWxlID0gdXNlTWVtbygoKSA9PiAoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCAob3ZlcmxheVN0eWxlIHx8IHt9KSksICh3aWR0aCAhPT0gdW5kZWZpbmVkID8geyB3aWR0aCB9IDoge30pKSksIFtvdmVybGF5U3R5bGUsIHdpZHRoXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGNsZWFyQ2xvc2VUaW1lcigpO1xuICAgICAgICB9O1xuICAgIH0sIFtjbGVhckNsb3NlVGltZXJdKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBtZXJnZWRPcGVuLFxuICAgICAgICBzaG91bGRSZW5kZXJQYW5lbCxcbiAgICAgICAgdHJpZ2dlck5vZGUsXG4gICAgICAgIGhhbmRsZUZpbmlzaCxcbiAgICAgICAgaGFuZGxlSGlkZSxcbiAgICAgICAgbWVyZ2VkU3R5bGUsXG4gICAgICAgIGNoYW5nZU9wZW4sXG4gICAgfTtcbn0iLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -0,0 +1 @@
1
+ .proform__submitter{display:flex;gap:12px;margin-top:16px}.proform__drawer-form,.proform__modal-form{padding:16px;background:#fff;border:1px solid #e3e4e4;border-radius:12px}.proform__drawer-form-title,.proform__modal-form-title,.proform__steps-form-title{margin-bottom:12px;font-weight:600;font-size:16px;line-height:24px}.proform__steps-form-description{margin-bottom:12px;color:#646465;font-size:14px}.proform__query-filter-actions,.proform__steps-form-actions{display:flex;gap:8px;margin-top:16px}.proform__query-filter-split{padding-top:16px;border-top:1px solid #e3e4e4}.proform__list{display:flex;flex-direction:column;gap:12px}.proform__list-label{font-weight:600;font-size:14px}.proform__list-row-actions{display:flex;gap:8px}