@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
package/AGENTS.md CHANGED
@@ -102,3 +102,396 @@ import '@1money/react-ui/index.css';
102
102
  - Font assets (Aeonik, Inter, Outfit) are included in `public/fonts/`
103
103
  - Lottie animations are used in Loading component
104
104
  - Pre-commit hooks enforce code quality via husky and lint-staged
105
+
106
+ ## Commit Convention
107
+
108
+ This project follows the [Conventional Commits](https://www.conventionalcommits.org/) specification.
109
+
110
+ ### Commit Message Format
111
+
112
+ ```
113
+ <type>(<scope>): <subject>
114
+
115
+ [optional body]
116
+
117
+ [optional footer]
118
+ ```
119
+
120
+ ### Types
121
+
122
+ | Type | Description |
123
+ |------|-------------|
124
+ | `feat` | New feature |
125
+ | `fix` | Bug fix |
126
+ | `docs` | Documentation changes only |
127
+ | `style` | Code style changes (formatting, missing semicolons, etc.) — no logic change |
128
+ | `refactor` | Code refactoring — no feature addition or bug fix |
129
+ | `perf` | Performance improvements |
130
+ | `test` | Adding or updating tests |
131
+ | `chore` | Build process, tooling, or dependency changes |
132
+ | `revert` | Revert a previous commit |
133
+ | `ci` | CI/CD configuration changes |
134
+
135
+ ### Scope
136
+
137
+ The scope should be the name of the component or module affected:
138
+
139
+ ```
140
+ feat(Button): add loading state support
141
+ fix(Input): correct placeholder color in dark mode
142
+ docs(ProForm): update usage examples
143
+ refactor(utils): simplify classnames helper
144
+ ```
145
+
146
+ Omit scope when the change is global or cross-cutting:
147
+
148
+ ```
149
+ chore: upgrade PrimeReact to v11
150
+ ci: add lint check to PR workflow
151
+ ```
152
+
153
+ ### Subject Rules
154
+
155
+ - ✅ Use imperative mood: "add feature" not "added feature" or "adds feature"
156
+ - ✅ Start with a lowercase letter
157
+ - ✅ No period at the end
158
+ - ✅ Keep under 72 characters
159
+ - ❌ Do not use vague messages like "fix bug", "update code", "WIP"
160
+
161
+ ### Examples
162
+
163
+ ```bash
164
+ # ✅ Good
165
+ feat(ProForm): add StepsForm component with validation support
166
+ fix(Select): prevent dropdown from closing on internal scroll
167
+ refactor(Button): extract size constants to avoid magic strings
168
+ test(Input): add snapshot tests for controlled mode
169
+ docs(README): add installation and usage guide
170
+ chore: update pnpm lockfile after dependency upgrade
171
+
172
+ # ❌ Bad
173
+ fix bug
174
+ update
175
+ WIP
176
+ feat: add stuff
177
+ ```
178
+
179
+ ### Breaking Changes
180
+
181
+ Breaking changes must be noted in the footer with `BREAKING CHANGE:`:
182
+
183
+ ```
184
+ feat(ProForm): change onSubmit callback signature
185
+
186
+ BREAKING CHANGE: onSubmit now receives (values, form) instead of (values).
187
+ Consumers must update their onSubmit handlers accordingly.
188
+ ```
189
+
190
+ ### Multi-line Body
191
+
192
+ Use the body to explain *why* a change was made, not *what* was changed (the diff shows that):
193
+
194
+ ```
195
+ fix(StepsForm): clear downstream step values on backward navigation
196
+
197
+ When a user navigates backward in a multi-step form, previously entered
198
+ values in later steps should be cleared to prevent stale data from
199
+ being submitted. This matches the expected UX behavior.
200
+ ```
201
+
202
+ ## TypeScript Standards
203
+
204
+ ### Core Principles
205
+
206
+ - ✅ All components and functions must provide accurate type definitions
207
+ - ✅ Avoid using `any`; define types as precisely as possible
208
+ - ✅ Use interfaces (`interface`) instead of type aliases (`type`) for object structures
209
+ - ✅ Export all public interface types for easier consumer usage
210
+ - ✅ Follow TypeScript type design principles strictly to ensure type safety
211
+ - ✅ Ensure compilation has no type errors or warnings
212
+
213
+ ### Component Type Definitions
214
+
215
+ ```tsx
216
+ // ✅ Correct: use interface to define Props
217
+ interface ButtonProps {
218
+ type?: 'primary' | 'secondary' | 'warning';
219
+ onClick?: (e: React.MouseEvent) => void;
220
+ }
221
+
222
+ // ❌ Incorrect: avoid using type to define object structures
223
+ type ButtonProps = {
224
+ type?: 'primary' | 'secondary';
225
+ };
226
+
227
+ // ✅ Correct: component Props interface naming
228
+ interface ComponentNameProps {
229
+ // ...
230
+ }
231
+
232
+ // ✅ Correct: component state interface naming
233
+ interface ComponentNameState {
234
+ // ...
235
+ }
236
+
237
+ // ✅ Correct: use ForwardRefRenderFunction to define ref
238
+ const Component = React.forwardRef<ComponentRef, ComponentProps>((props, ref) => {
239
+ // ...
240
+ });
241
+ ```
242
+
243
+ ### Type Usage Best Practices
244
+
245
+ - ✅ Use generics where appropriate to improve type flexibility
246
+ - ✅ Use intersection types (`&`) to combine multiple types
247
+ - ✅ Use literal union types to define a limited set of options
248
+ - ✅ Avoid `enum`; prefer union types and `as const`
249
+ - ✅ Rely on TypeScript type inference as much as possible
250
+ - ✅ Use type assertions (`as`) only when necessary
251
+
252
+ ```tsx
253
+ // ✅ Recommended: use union types and as const
254
+ const ButtonTypes = ['primary', 'secondary', 'warning'] as const;
255
+ type ButtonType = (typeof ButtonTypes)[number];
256
+
257
+ // ❌ Not recommended: use enum
258
+ enum ButtonType {
259
+ Primary = 'primary',
260
+ Default = 'secondary',
261
+ }
262
+ ```
263
+
264
+ ### Avoid Magic Strings
265
+
266
+ - ✅ Define string constants or use `as const` arrays for repeated string values
267
+ - ✅ Use constants for event names, action types, storage keys, and API endpoints
268
+ - ✅ Extract hardcoded strings into named constants with descriptive names
269
+ - ✅ Keep constants close to their usage or in a dedicated constants file
270
+
271
+ ```tsx
272
+ // ✅ Correct: define constants
273
+ const STORAGE_KEY = 'user_preferences';
274
+ const EVENT_SUBMIT = 'submit';
275
+
276
+ localStorage.setItem(STORAGE_KEY, value);
277
+ element.addEventListener(EVENT_SUBMIT, handler);
278
+
279
+ // ✅ Correct: use as const for related values
280
+ const ToastTypes = ['success', 'error', 'warning', 'info'] as const;
281
+ type ToastType = (typeof ToastTypes)[number];
282
+
283
+ // ❌ Incorrect: magic strings scattered in code
284
+ localStorage.setItem('user_preferences', value);
285
+ element.addEventListener('submit', handler);
286
+ if (status === 'success') { ... }
287
+ ```
288
+
289
+ ## Custom Hooks Usage Guide
290
+
291
+ This library provides 11 custom hooks for common React patterns. Use these hooks to improve code quality and consistency.
292
+
293
+ ### useControlledState
294
+
295
+ **When to use**: Building components that support both controlled and uncontrolled modes.
296
+
297
+ ```tsx
298
+ // ✅ Use for form components that can be controlled or uncontrolled
299
+ function Input({ value, defaultValue, onChange }: InputProps) {
300
+ const [innerValue, setInnerValue] = useControlledState(defaultValue ?? '', value);
301
+
302
+ const handleChange = (e: ChangeEvent<HTMLInputElement>) => {
303
+ setInnerValue(e.target.value);
304
+ onChange?.(e);
305
+ };
306
+
307
+ return <input value={innerValue} onChange={handleChange} />;
308
+ }
309
+ ```
310
+
311
+ ### useEventCallback
312
+
313
+ **When to use**: When you need a stable callback reference that always invokes the latest function version. Similar to React's `useEvent` RFC.
314
+
315
+ ```tsx
316
+ // ✅ Use when passing callbacks to optimized child components
317
+ function Parent() {
318
+ const [count, setCount] = useState(0);
319
+
320
+ // Stable reference, always calls latest function
321
+ const handleClick = useEventCallback(() => {
322
+ console.log('Current count:', count); // Always gets latest count
323
+ });
324
+
325
+ return <MemoizedChild onClick={handleClick} />;
326
+ }
327
+ ```
328
+
329
+ ### useLatest
330
+
331
+ **When to use**: When you need to access the latest value in callbacks without causing re-renders or stale closures.
332
+
333
+ ```tsx
334
+ // ✅ Use to avoid stale closures in timers or event handlers
335
+ function Timer({ delay, callback }: TimerProps) {
336
+ const callbackRef = useLatest(callback);
337
+
338
+ useEffect(() => {
339
+ const id = setInterval(() => {
340
+ callbackRef.current(); // Always calls the latest callback
341
+ }, delay);
342
+ return () => clearInterval(id);
343
+ }, [delay]); // No need to include callback in deps
344
+ }
345
+ ```
346
+
347
+ ### useLayoutEffect
348
+
349
+ **When to use**: When you need to know if the effect is running on initial mount or subsequent updates.
350
+
351
+ ```tsx
352
+ // ✅ Use when behavior differs between mount and update
353
+ function AnimatedComponent({ value }: Props) {
354
+ useLayoutEffect((mount) => {
355
+ if (mount) {
356
+ // Initial mount - setup without animation
357
+ element.style.opacity = '1';
358
+ } else {
359
+ // Update - animate the change
360
+ animateOpacity(element);
361
+ }
362
+ }, [value]);
363
+ }
364
+ ```
365
+
366
+ ### useMemoizedFn
367
+
368
+ **When to use**: When you need a stable function reference without managing a dependency array, while always calling the latest version.
369
+
370
+ ```tsx
371
+ // ✅ Use for event handlers passed to child components
372
+ function Form({ onSubmit }: FormProps) {
373
+ const [data, setData] = useState({});
374
+
375
+ // Stable reference, no deps needed, always uses latest data
376
+ const handleSubmit = useMemoizedFn(() => {
377
+ onSubmit(data);
378
+ });
379
+
380
+ return <ExpensiveChild onSubmit={handleSubmit} />;
381
+ }
382
+ ```
383
+
384
+ ### usePrevious
385
+
386
+ **When to use**: When you need to compare current value with the previous render's value.
387
+
388
+ ```tsx
389
+ // ✅ Use for detecting value changes
390
+ function Counter({ count }: Props) {
391
+ const prevCount = usePrevious(count);
392
+
393
+ useEffect(() => {
394
+ if (prevCount !== undefined && count > prevCount) {
395
+ console.log('Count increased!');
396
+ }
397
+ }, [count, prevCount]);
398
+ }
399
+ ```
400
+
401
+ ### useSafeState
402
+
403
+ **When to use**: When setting state in async callbacks where the component might unmount before completion.
404
+
405
+ ```tsx
406
+ // ✅ Use for async operations to prevent memory leaks
407
+ function AsyncComponent() {
408
+ const [data, setData] = useSafeState<Data | null>(null);
409
+
410
+ useEffect(() => {
411
+ fetchData().then((result) => {
412
+ setData(result); // Safe: won't update if unmounted
413
+ });
414
+ }, []);
415
+ }
416
+ ```
417
+
418
+ ### useSyncState
419
+
420
+ **When to use**: When React batches multiple state updates but you need to read the latest value synchronously.
421
+
422
+ ```tsx
423
+ // ✅ Use when multiple events fire simultaneously (e.g., onTransitionEnd)
424
+ function AnimatedList() {
425
+ const [getCompletedCount, setCompletedCount] = useSyncState(0);
426
+
427
+ const handleTransitionEnd = () => {
428
+ // Multiple transitions may end at once, React batches them
429
+ // getCompletedCount() always returns the latest value
430
+ setCompletedCount(getCompletedCount() + 1);
431
+ };
432
+ }
433
+ ```
434
+
435
+ ### useUpdateEffect
436
+
437
+ **When to use**: When you want an effect to run only on updates, skipping the initial mount.
438
+
439
+ ```tsx
440
+ // ✅ Use when initial render shouldn't trigger the effect
441
+ function SearchInput({ query, onSearch }: Props) {
442
+ useUpdateEffect(() => {
443
+ // Only runs when query changes, not on initial mount
444
+ onSearch(query);
445
+ }, [query]);
446
+ }
447
+ ```
448
+
449
+ ### useLayoutState
450
+
451
+ **When to use**: When you need to batch multiple synchronous state updates into a single microtask to reduce unnecessary re-renders. Updates are collected and applied together via `Promise.resolve`, triggering only one render.
452
+
453
+ ```tsx
454
+ // ✅ Use when multiple state updates happen synchronously and should be batched
455
+ function VirtualTable({ columns }: Props) {
456
+ const [colWidths, setColWidths] = useLayoutState<Map<string, number>>(new Map());
457
+
458
+ const handleResize = (key: string, width: number) => {
459
+ // Multiple columns may resize at once; updates are batched into one render
460
+ setColWidths(prev => new Map(prev).set(key, width));
461
+ };
462
+
463
+ return <ResizableColumns widths={colWidths} onResize={handleResize} />;
464
+ }
465
+ ```
466
+
467
+ ### useTimeoutLock
468
+
469
+ **When to use**: When you need a short-lived lock that auto-resets after a timeout (100ms). Useful for preventing duplicate actions or debouncing rapid state changes.
470
+
471
+ ```tsx
472
+ // ✅ Use to prevent rapid duplicate submissions
473
+ function SubmitButton() {
474
+ const [setLock, getLock] = useTimeoutLock<string>();
475
+
476
+ const handleClick = () => {
477
+ if (getLock()) return; // Already locked
478
+ setLock('submitting');
479
+ submitForm();
480
+ };
481
+ }
482
+ ```
483
+
484
+ ### Hook Selection Guide
485
+
486
+ | Scenario | Recommended Hook |
487
+ |----------|------------------|
488
+ | Controlled/uncontrolled component | `useControlledState` |
489
+ | Stable callback for memoized children | `useEventCallback` or `useMemoizedFn` |
490
+ | Access latest value without re-render | `useLatest` |
491
+ | Different logic for mount vs update | `useLayoutEffect` |
492
+ | Compare with previous value | `usePrevious` |
493
+ | Async state updates after unmount | `useSafeState` |
494
+ | Read latest state synchronously | `useSyncState` |
495
+ | Skip effect on initial mount | `useUpdateEffect` |
496
+ | Batch synchronous state updates | `useLayoutState` |
497
+ | Short-lived lock with auto-reset | `useTimeoutLock` |
@@ -1,5 +1,5 @@
1
- import type { FC, PropsWithChildren } from 'react';
1
+ import type { FC } from 'react';
2
2
  import type { CheckboxGroupProps } from './interface';
3
- export declare const CheckboxGroup: FC<PropsWithChildren<CheckboxGroupProps>>;
4
- declare const _default: import("react").NamedExoticComponent<PropsWithChildren<CheckboxGroupProps>>;
3
+ export declare const CheckboxGroup: FC<CheckboxGroupProps>;
4
+ declare const _default: import("react").NamedExoticComponent<CheckboxGroupProps>;
5
5
  export default _default;
@@ -9,11 +9,14 @@ var __rest = this && this.__rest || function (s, e) {
9
9
  }
10
10
  return t;
11
11
  };
12
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
13
- import { memo, useState, useMemo, useCallback } from 'react';
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import { memo, useMemo } from 'react';
14
14
  import { Checkbox as PrimeCheckbox } from 'primereact/checkbox';
15
15
  import { TriStateCheckbox } from 'primereact/tristatecheckbox';
16
16
  import { default as classnames, joinCls } from '../../utils/classnames';
17
+ import useControlledState from '../useControlledState';
18
+ import useMemoizedFn from '../useMemoizedFn';
19
+ var TriStateCheckboxWithInputId = TriStateCheckbox;
17
20
  export var CheckboxGroup = function CheckboxGroup(props) {
18
21
  var tristate = props.tristate,
19
22
  _props$items = props.items,
@@ -29,104 +32,104 @@ export var CheckboxGroup = function CheckboxGroup(props) {
29
32
  size = _props$size === void 0 ? 'md' : _props$size;
30
33
  var classes = classnames(prefixCls);
31
34
  var sizeClass = "ckbg-".concat(size);
32
- var CheckBoxComponent = useMemo(function () {
33
- return tristate ? TriStateCheckbox : PrimeCheckbox;
34
- }, [tristate]);
35
+ // Normal mode: controlled/uncontrolled string[] state
35
36
  var defaultChecked = useMemo(function () {
36
37
  return items.filter(function (item) {
37
- return !!item.autoFocus;
38
+ return item.defaultChecked;
38
39
  }).map(function (v) {
39
40
  return v.key;
40
41
  });
41
42
  }, [items]);
42
- var _useState = useState(defaultChecked),
43
- _useState2 = _slicedToArray(_useState, 2),
44
- checkedItems = _useState2[0],
45
- setCheckedItems = _useState2[1];
46
- var _useState3 = useState(Object.assign.apply(Object, [{}].concat(_toConsumableArray(items.map(function (v) {
43
+ var normalValue = tristate ? undefined : props.value;
44
+ var _useControlledState = useControlledState(normalValue !== null && normalValue !== void 0 ? normalValue : defaultChecked, normalValue),
45
+ _useControlledState2 = _slicedToArray(_useControlledState, 2),
46
+ checkedItems = _useControlledState2[0],
47
+ setCheckedItems = _useControlledState2[1];
48
+ // Tristate mode: controlled/uncontrolled Record<string, boolean | null> state
49
+ var defaultItemsState = useMemo(function () {
50
+ return Object.fromEntries(items.map(function (v) {
47
51
  var _a;
48
- return _defineProperty({}, v.key, (_a = v.defaultValue) !== null && _a !== void 0 ? _a : null);
49
- }))))),
50
- _useState4 = _slicedToArray(_useState3, 2),
51
- itemsState = _useState4[0],
52
- setItemsState = _useState4[1];
53
- var handleOnChange = useCallback(function (e) {
54
- var _state;
55
- if (tristate) {
56
- _state = Object.assign({}, itemsState);
57
- _state[e.target.id] = e.value;
58
- setItemsState(_state);
59
- } else {
60
- _state = _toConsumableArray(checkedItems);
61
- e.checked ? _state.push(e.value) : _state.splice(_state.indexOf(e.value), 1);
62
- setCheckedItems(_state);
63
- }
64
- onChange === null || onChange === void 0 ? void 0 : onChange(_state);
65
- }, [onChange, tristate, itemsState, checkedItems]);
52
+ return [v.key, (_a = 'defaultValue' in v ? v.defaultValue : null) !== null && _a !== void 0 ? _a : null];
53
+ }));
54
+ }, [items]);
55
+ var tristateValue = tristate ? props.value : undefined;
56
+ var _useControlledState3 = useControlledState(tristateValue !== null && tristateValue !== void 0 ? tristateValue : defaultItemsState, tristateValue),
57
+ _useControlledState4 = _slicedToArray(_useControlledState3, 2),
58
+ itemsState = _useControlledState4[0],
59
+ setItemsState = _useControlledState4[1];
60
+ var handleNormalChange = useMemoizedFn(function (e, itemOnChange) {
61
+ itemOnChange === null || itemOnChange === void 0 ? void 0 : itemOnChange(!!e.checked);
62
+ var next = e.checked ? [].concat(_toConsumableArray(checkedItems), [e.value]) : checkedItems.filter(function (k) {
63
+ return k !== e.value;
64
+ });
65
+ setCheckedItems(next);
66
+ onChange === null || onChange === void 0 ? void 0 : onChange(next);
67
+ });
68
+ var handleTristateChange = useMemoizedFn(function (e, itemOnChange) {
69
+ itemOnChange === null || itemOnChange === void 0 ? void 0 : itemOnChange(e.value);
70
+ var next = Object.assign(Object.assign({}, itemsState), _defineProperty({}, e.target.id, e.value));
71
+ setItemsState(next);
72
+ onChange === null || onChange === void 0 ? void 0 : onChange(next);
73
+ });
74
+ var renderItem = function renderItem(item) {
75
+ var _a;
76
+ var key = item.key,
77
+ required = item.required,
78
+ disabled = item.disabled,
79
+ label = item.label,
80
+ itemOnChange = item.onChange,
81
+ rest = __rest(item, ["key", "required", "disabled", "label", "onChange"]);
82
+ // Strip defaultValue from rest to avoid passing it to DOM
83
+ var _b = rest,
84
+ _ = _b.defaultValue,
85
+ __ = _b.defaultChecked,
86
+ checkboxRest = __rest(_b, ["defaultValue", "defaultChecked"]);
87
+ var innerClassName = classes('inner-checkbox', checkboxGroupCls);
88
+ var checkboxEl = tristate ? _jsx(TriStateCheckboxWithInputId, Object.assign({}, checkboxRest, {
89
+ id: key,
90
+ inputId: key,
91
+ value: (_a = itemsState[key]) !== null && _a !== void 0 ? _a : null,
92
+ required: required,
93
+ disabled: disabled,
94
+ className: innerClassName,
95
+ uncheckIcon: _jsx("i", {
96
+ className: "pi pi-minus"
97
+ }),
98
+ checkIcon: _jsx("i", {
99
+ className: "pi pi-check"
100
+ }),
101
+ onChange: function onChange(e) {
102
+ if (!disabled) handleTristateChange(e, itemOnChange);
103
+ }
104
+ })) : _jsx(PrimeCheckbox, Object.assign({}, checkboxRest, {
105
+ inputId: key,
106
+ value: key,
107
+ required: required,
108
+ disabled: disabled,
109
+ checked: checkedItems.includes(key),
110
+ className: innerClassName,
111
+ icon: _jsx("i", {
112
+ className: "pi pi-check"
113
+ }),
114
+ onChange: function onChange(e) {
115
+ if (!disabled) handleNormalChange(e, itemOnChange);
116
+ }
117
+ }));
118
+ return _jsx("div", {
119
+ className: joinCls(classes('inner', innerCls), sizeClass),
120
+ children: label ? _jsxs("label", {
121
+ htmlFor: key,
122
+ className: labelCls,
123
+ children: [checkboxEl, tristate ? _jsx("span", {
124
+ children: label
125
+ }) : label]
126
+ }) : checkboxEl
127
+ }, key);
128
+ };
66
129
  return _jsx("div", {
67
130
  className: classes('wrapper', wrapperCls),
68
- children: items.map(function (item) {
69
- var key = item.key,
70
- required = item.required,
71
- disabled = item.disabled,
72
- _item$defaultValue = item.defaultValue,
73
- defaultValue = _item$defaultValue === void 0 ? null : _item$defaultValue,
74
- label = item.label,
75
- _onChange = item.onChange,
76
- rest = __rest(item, ["key", "required", "disabled", "defaultValue", "label", "onChange"]);
77
- var _useState5 = useState(defaultValue),
78
- _useState6 = _slicedToArray(_useState5, 2),
79
- trivalue = _useState6[0],
80
- setTrivalue = _useState6[1];
81
- var handleLabelClick = useCallback(function () {
82
- if (!tristate || disabled) return;
83
- setTrivalue(function (curr) {
84
- return curr === null ? true : curr === true ? false : null;
85
- });
86
- }, [tristate, disabled]);
87
- var LabelWrapper = useCallback(function (_ref2) {
88
- var children = _ref2.children;
89
- if (!label) return children;
90
- return _jsxs("label", {
91
- className: labelCls,
92
- onClick: handleLabelClick,
93
- children: [children, label]
94
- });
95
- }, [label, labelCls, handleLabelClick]);
96
- return _jsx("div", {
97
- className: joinCls(classes('inner', innerCls), sizeClass),
98
- children: _jsx(LabelWrapper, {
99
- children: _jsx(CheckBoxComponent, Object.assign({}, rest, {
100
- id: tristate ? key : void 0,
101
- value: tristate ? trivalue : key,
102
- required: required,
103
- disabled: disabled,
104
- checked: tristate ? void 0 : checkedItems.includes(key),
105
- className: classes('inner-checkbox', checkboxGroupCls)
106
- }, tristate ? {
107
- uncheckIcon: _jsx("i", {
108
- className: "pi pi-minus"
109
- })
110
- } : {}, tristate ? {
111
- checkIcon: _jsx("i", {
112
- className: "pi pi-check"
113
- })
114
- } : {
115
- icon: _jsx("i", {
116
- className: "pi pi-check"
117
- })
118
- }, {
119
- onChange: function onChange(e) {
120
- if (disabled) return;
121
- tristate && setTrivalue(e.value);
122
- _onChange === null || _onChange === void 0 ? void 0 : _onChange(tristate ? e.value : !!e.checked);
123
- handleOnChange(e);
124
- }
125
- }))
126
- })
127
- }, key);
128
- })
131
+ children: items.map(renderItem)
129
132
  });
130
133
  };
131
134
  export default /*#__PURE__*/memo(CheckboxGroup);
132
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvQ2hlY2tib3hHcm91cC9DaGVja2JveEdyb3VwLmpzIiwiY29tcG9uZW50cy9zcmMvY29tcG9uZW50cy9DaGVja2JveEdyb3VwL0NoZWNrYm94R3JvdXAudHN4Il0sIm5hbWVzIjpbIl9fcmVzdCIsInMiLCJlIiwidCIsInAiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpbmRleE9mIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiaSIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwianN4cyIsIl9qc3hzIiwianN4IiwiX2pzeCIsIm1lbW8iLCJ1c2VTdGF0ZSIsInVzZU1lbW8iLCJ1c2VDYWxsYmFjayIsIkNoZWNrYm94IiwiUHJpbWVDaGVja2JveCIsIlRyaVN0YXRlQ2hlY2tib3giLCJkZWZhdWx0IiwiY2xhc3NuYW1lcyIsImpvaW5DbHMiLCJDaGVja2JveEdyb3VwIiwicHJvcHMiLCJ0cmlzdGF0ZSIsIl9wcm9wcyRpdGVtcyIsIml0ZW1zIiwib25DaGFuZ2UiLCJ3cmFwcGVyQ2xzIiwiaW5uZXJDbHMiLCJjaGVja2JveEdyb3VwQ2xzIiwibGFiZWxDbHMiLCJfcHJvcHMkcHJlZml4Q2xzIiwicHJlZml4Q2xzIiwiX3Byb3BzJHNpemUiLCJzaXplIiwiY2xhc3NlcyIsInNpemVDbGFzcyIsImNvbmNhdCIsIkNoZWNrQm94Q29tcG9uZW50IiwiZGVmYXVsdENoZWNrZWQiLCJmaWx0ZXIiLCJpdGVtIiwiYXV0b0ZvY3VzIiwibWFwIiwidiIsImtleSIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImNoZWNrZWRJdGVtcyIsInNldENoZWNrZWRJdGVtcyIsIl91c2VTdGF0ZTMiLCJhc3NpZ24iLCJhcHBseSIsIl90b0NvbnN1bWFibGVBcnJheSIsIl9hIiwiX2RlZmluZVByb3BlcnR5IiwiZGVmYXVsdFZhbHVlIiwiX3VzZVN0YXRlNCIsIml0ZW1zU3RhdGUiLCJzZXRJdGVtc1N0YXRlIiwiaGFuZGxlT25DaGFuZ2UiLCJfc3RhdGUiLCJ0YXJnZXQiLCJpZCIsInZhbHVlIiwiY2hlY2tlZCIsInB1c2giLCJzcGxpY2UiLCJjbGFzc05hbWUiLCJjaGlsZHJlbiIsInJlcXVpcmVkIiwiZGlzYWJsZWQiLCJfaXRlbSRkZWZhdWx0VmFsdWUiLCJsYWJlbCIsInJlc3QiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInRyaXZhbHVlIiwic2V0VHJpdmFsdWUiLCJoYW5kbGVMYWJlbENsaWNrIiwiY3VyciIsIkxhYmVsV3JhcHBlciIsIl9yZWYyIiwib25DbGljayIsImluY2x1ZGVzIiwidW5jaGVja0ljb24iLCJjaGVja0ljb24iLCJpY29uIl0sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFJQSxNQUFNLEdBQUksSUFBSSxJQUFJLElBQUksQ0FBQ0EsTUFBTSxJQUFLLFVBQVVDLENBQUMsRUFBRUMsQ0FBQyxFQUFFO0VBQ2xELElBQUlDLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDVixLQUFLLElBQUlDLENBQUMsSUFBSUgsQ0FBQyxFQUFFLElBQUlJLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ1AsQ0FBQyxFQUFFRyxDQUFDLENBQUMsSUFBSUYsQ0FBQyxDQUFDTyxPQUFPLENBQUNMLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFDL0VELENBQUMsQ0FBQ0MsQ0FBQyxDQUFDLEdBQUdILENBQUMsQ0FBQ0csQ0FBQyxDQUFDO0VBQ2YsSUFBSUgsQ0FBQyxJQUFJLElBQUksSUFBSSxPQUFPSSxNQUFNLENBQUNLLHFCQUFxQixLQUFLLFVBQVUsRUFDL0QsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFUCxDQUFDLEdBQUdDLE1BQU0sQ0FBQ0sscUJBQXFCLENBQUNULENBQUMsQ0FBQyxFQUFFVSxDQUFDLEdBQUdQLENBQUMsQ0FBQ1EsTUFBTSxFQUFFRCxDQUFDLEVBQUUsRUFBRTtJQUNwRSxJQUFJVCxDQUFDLENBQUNPLE9BQU8sQ0FB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QUFBLENBQUUsRUFDakU5QyxRQUFRLEdBQUc7WUFBRWdFLFNBQVMsRUFBRTdFLElBQUEsQ0FBQSxHQUFBLEVBQUE7Y0FBRzJELFNBQVMsRUFBQztZQUFhLENBQUE7VUFBTSxDQUFFLEdBQUc7WUFDaEVtQixJQUFJLEVBQUU5RSxJQUFBLENBQUEsR0FBQSxFQUFBO2NBQUcyRCxTQUFTLEVBQUM7WUFBYSxDQUFBO1VEWDFCLENDWVAsRUFBQztZQUNGM0MsUUFBUSxFQUFFLFNBQVZBLFFBQVFBLENBQUUvQixDQUFDLEVBQUc7Y0FDWixJQUFJNkUsUUFBUSxFQUFFO2NBQ2RqRCxRQUFRLElBQUl3RCxXQUFXLENBQUNwRixDQUFDLENBQUNzRSxLQUFLLENBQUM7Y0FDaEN2QyxTQUFRLEtBQUEsSUFBQSxJQUFSQSxTQUFRLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQVJBLFNBQVEsQ0FBR0gsUUFBUSxHQUFHNUIsQ0FBQyxDQUFDc0UsS0FBSyxHQUFHLENBQUMsQ0FBQ3RFLENBQUMsQ0FBQ3VFLE9BQU8sQ0FBQztjQUM1Q0wsY0FBYyxDQUFDbEUsQ0FBQyxDQUFDO1lBQ25CO1VBQUMsQ0FBQSxDQUFBO1FBQ0QsQ0FBQTtNQUNXLENBQUEsRUF0QkFrRCxHQUFHLENBdUJkO0lBQ1IsQ0FBQztFQUFDLENBQUEsQ0FDRTtBQUNSLENBQUM7QUFFRCw0QkFBZWxDLElBQUksQ0FBQ1UsYUFBYSxDQUFDIiwiZmlsZSI6ImNvbXBvbmVudHMvQ2hlY2tib3hHcm91cC9DaGVja2JveEdyb3VwLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4cyBhcyBfanN4cywganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8sIHVzZVN0YXRlLCB1c2VNZW1vLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IENoZWNrYm94IGFzIFByaW1lQ2hlY2tib3ggfSBmcm9tICdwcmltZXJlYWN0L2NoZWNrYm94JztcbmltcG9ydCB7IFRyaVN0YXRlQ2hlY2tib3ggfSBmcm9tICdwcmltZXJlYWN0L3RyaXN0YXRlY2hlY2tib3gnO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBjbGFzc25hbWVzLCBqb2luQ2xzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5leHBvcnQgY29uc3QgQ2hlY2tib3hHcm91cCA9IHByb3BzID0+IHtcbiAgICBjb25zdCB7IHRyaXN0YXRlLCBpdGVtcyA9IFtdLCBvbkNoYW5nZSwgd3JhcHBlckNscywgaW5uZXJDbHMsIGNoZWNrYm94R3JvdXBDbHMsIGxhYmVsQ2xzLCBwcmVmaXhDbHMgPSAnY2hlY2tib3hncm91cCcsIHNpemUgPSAnbWQnIH0gPSBwcm9wcztcbiAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhwcmVmaXhDbHMpO1xuICAgIGNvbnN0IHNpemVDbGFzcyA9IGBja2JnLSR7c2l6ZX1gO1xuICAgIGNvbnN0IENoZWNrQm94Q29tcG9uZW50ID0gdXNlTWVtbygoKSA9PiB0cmlzdGF0ZSA/IFRyaVN0YXRlQ2hlY2tib3ggOiBQcmltZUNoZWNrYm94LCBbdHJpc3RhdGVdKTtcbiAgICBjb25zdCBkZWZhdWx0Q2hlY2tlZCA9IHVzZU1lbW8oKCkgPT4gaXRlbXMuZmlsdGVyKGl0ZW0gPT4gISFpdGVtLmF1dG9Gb2N1cykubWFwKHYgPT4gdi5rZXkpLCBbaXRlbXNdKTtcbiAgICBjb25zdCBbY2hlY2tlZEl0ZW1zLCBzZXRDaGVja2VkSXRlbXNdID0gdXNlU3RhdGUoZGVmYXVsdENoZWNrZWQpO1xuICAgIGNvbnN0IFtpdGVtc1N0YXRlLCBzZXRJdGVtc1N0YXRlXSA9IHVzZVN0YXRlKE9iamVjdC5hc3NpZ24oe30sIC4uLml0ZW1zLm1hcCh2ID0+IHsgdmFyIF9hOyByZXR1cm4gKHsgW3Yua2V5XTogKF9hID0gdi5kZWZhdWx0VmFsdWUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IG51bGwgfSk7IH0pKSk7XG4gICAgY29uc3QgaGFuZGxlT25DaGFuZ2UgPSB1c2VDYWxsYmFjaygoZSkgPT4ge1xuICAgICAgICBsZXQgX3N0YXRlO1xuICAgICAgICBpZiAodHJpc3RhdGUpIHtcbiAgICAgICAgICAgIF9zdGF0ZSA9IE9iamVjdC5hc3NpZ24oe30sIGl0ZW1zU3RhdGUpO1xuICAgICAgICAgICAgX3N0YXRlW2UudGFyZ2V0LmlkXSA9IGUudmFsdWU7XG4gICAgICAgICAgICBzZXRJdGVtc1N0YXRlKF9zdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBfc3RhdGUgPSBbLi4uY2hlY2tlZEl0ZW1zXTtcbiAgICAgICAgICAgIGUuY2hlY2tlZCA/IF9zdGF0ZS5wdXNoKGUudmFsdWUpIDogX3N0YXRlLnNwbGljZShfc3RhdGUuaW5kZXhPZihlLnZhbHVlKSwgMSk7XG4gICAgICAgICAgICBzZXRDaGVja2VkSXRlbXMoX3N0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICBvbkNoYW5nZSA9PT0gbnVsbCB8fCBvbkNoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DaGFuZ2UoX3N0YXRlKTtcbiAgICB9LCBbb25DaGFuZ2UsIHRyaXN0YXRlLCBpdGVtc1N0YXRlLCBjaGVja2VkSXRlbXNdKTtcbiAgICByZXR1cm4gX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcygnd3JhcHBlcicsIHdyYXBwZXJDbHMpLCBjaGlsZHJlbjogaXRlbXMubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBrZXksIHJlcXVpcmVkLCBkaXNhYmxlZCwgZGVmYXVsdFZhbHVlID0gbnVsbCwgbGFiZWwsIG9uQ2hhbmdlIH0gPSBpdGVtLCByZXN0ID0gX19yZXN0KGl0ZW0sIFtcImtleVwiLCBcInJlcXVpcmVkXCIsIFwiZGlzYWJsZWRcIiwgXCJkZWZhdWx0VmFsdWVcIiwgXCJsYWJlbFwiLCBcIm9uQ2hhbmdlXCJdKTtcbiAgICAgICAgICAgIGNvbnN0IFt0cml2YWx1ZSwgc2V0VHJpdmFsdWVdID0gdXNlU3RhdGUoZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZUxhYmVsQ2xpY2sgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0cmlzdGF0ZSB8fCBkaXNhYmxlZClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIHNldFRyaXZhbHVlKGN1cnIgPT4gY3VyciA9PT0gbnVsbCA/IHRydWUgOiBjdXJyID09PSB0cnVlID8gZmFsc2UgOiBudWxsKTtcbiAgICAgICAgICAgIH0sIFt0cmlzdGF0ZSwgZGlzYWJsZWRdKTtcbiAgICAgICAgICAgIGNvbnN0IExhYmVsV3JhcHBlciA9IHVzZUNhbGxiYWNrKCh7IGNoaWxkcmVuIH0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWxhYmVsKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGRyZW47XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9qc3hzKFwibGFiZWxcIiwgeyBjbGFzc05hbWU6IGxhYmVsQ2xzLCBvbkNsaWNrOiBoYW5kbGVMYWJlbENsaWNrLCBjaGlsZHJlbjogW2NoaWxkcmVuLCBsYWJlbF0gfSk7XG4gICAgICAgICAgICB9LCBbbGFiZWwsIGxhYmVsQ2xzLCBoYW5kbGVMYWJlbENsaWNrXSk7XG4gICAgICAgICAgICByZXR1cm4gX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogam9pbkNscyhjbGFzc2VzKCdpbm5lcicsIGlubmVyQ2xzKSwgc2l6ZUNsYXNzKSwgY2hpbGRyZW46IF9qc3goTGFiZWxXcmFwcGVyLCB7IGNoaWxkcmVuOiBfanN4KENoZWNrQm94Q29tcG9uZW50LCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IGlkOiB0cmlzdGF0ZSA/IGtleSA6IHZvaWQgMCwgdmFsdWU6IHRyaXN0YXRlID8gdHJpdmFsdWUgOiBrZXksIHJlcXVpcmVkOiByZXF1aXJlZCwgZGlzYWJsZWQ6IGRpc2FibGVkLCBjaGVja2VkOiB0cmlzdGF0ZSA/IHZvaWQgMCA6IGNoZWNrZWRJdGVtcy5pbmNsdWRlcyhrZXkpLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2lubmVyLWNoZWNrYm94JywgY2hlY2tib3hHcm91cENscykgfSwgKHRyaXN0YXRlID8geyB1bmNoZWNrSWNvbjogX2pzeChcImlcIiwgeyBjbGFzc05hbWU6IFwicGkgcGktbWludXNcIiB9KSB9IDoge30pLCAodHJpc3RhdGUgPyB7IGNoZWNrSWNvbjogX2pzeChcImlcIiwgeyBjbGFzc05hbWU6IFwicGkgcGktY2hlY2tcIiB9KSB9IDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogX2pzeChcImlcIiwgeyBjbGFzc05hbWU6IFwicGkgcGktY2hlY2tcIiB9KVxuICAgICAgICAgICAgICAgICAgICB9KSwgeyBvbkNoYW5nZTogZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpc2FibGVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpc3RhdGUgJiYgc2V0VHJpdmFsdWUoZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2UgPT09IG51bGwgfHwgb25DaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2hhbmdlKHRyaXN0YXRlID8gZS52YWx1ZSA6ICEhZS5jaGVja2VkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVPbkNoYW5nZShlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gfSkpIH0pIH0sIGtleSk7XG4gICAgICAgIH0pIH0pO1xufTtcbmV4cG9ydCBkZWZhdWx0IG1lbW8oQ2hlY2tib3hHcm91cCk7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
135
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvQ2hlY2tib3hHcm91cC9DaGVja2JveEdyb3VwLmpzIiwiY29tcG9uZW50cy9zcmMvY29tcG9uZW50cy9DaGVja2JveEdyb3VwL0NoZWNrYm94R3JvdXAudHN4Il0sIm5hbWVzIjpbIl9fcmVzdCIsInMiLCJlIiwidCIsInAiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpbmRleE9mIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiaSIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIm1lbW8iLCJ1c2VNZW1vIiwiQ2hlY2tib3giLCJQcmltZUNoZWNrYm94IiwiVHJpU3RhdGVDaGVja2JveCIsImRlZmF1bHQiLCJjbGFzc25hbWVzIiwiam9pbkNscyIsInVzZUNvbnRyb2xsZWRTdGF0ZSIsInVzZU1lbW9pemVkRm4iLCJUcmlTdGF0ZUNoZWNrYm94V2l0aElucHV0SWQiLCJDaGVja2JveEdyb3VwIiwicHJvcHMiLCJ0cmlzdGF0ZSIsIl9wcm9wcyRpdGVtcyIsIml0ZW1zIiwib25DaGFuZ2UiLCJ3cmFwcGVyQ2xzIiwiaW5uZXJDbHMiLCJjaGVja2JveEdyb3VwQ2xzIiwibGFiZWxDbHMiLCJfcHJvcHMkcHJlZml4Q2xzIiwicHJlZml4Q2xzIiwiX3Byb3BzJHNpemUiLCJzaXplIiwiY2xhc3NlcyIsInNpemVDbGFzcyIsImNvbmNhdCIsImRlZmF1bHRDaGVja2VkIiwiZmlsdGVyIiwiaXRlbSIsIm1hcCIsInYiLCJrZXkiLCJub3JtYWxWYWx1ZSIsInVuZGVmaW5lZCIsInZhbHVlIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZSIsIl91c2VDb250cm9sbGVkU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJjaGVja2VkSXRlbXMiLCJzZXRDaGVja2VkSXRlbXMiLCJkZWZhdWx0SXRlbXNTdGF0ZSIsImZyb21FbnRyaWVzIiwiX2EiLCJkZWZhdWx0VmFsdWUiLCJ0cmlzdGF0ZVZhbHVlIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTMiLCJfdXNlQ29udHJvbGxlZFN0YXRlNCIsIml0ZW1zU3RhdGUiLCJzZXRJdGVtc1N0YXRlIiwiaGFuZGxlTm9ybWFsQ2hhbmdlIiwiaXRlbU9uQ2hhbmdlIiwiY2hlY2tlZCIsIm5leHQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJrIiwiaGFuZGxlVHJpc3RhdGVDaGFuZ2UiLCJhc3NpZ24iLCJfZGVmaW5lUHJvcGVydHkiLCJ0YXJnZXQiLCJpZCIsInJlbmRlckl0ZW0iLCJyZXF1aXJlZCIsImRpc2FibGVkIiwibGFiZWwiLCJyZXN0IiwiX2IiLCJfIiwiX18iLCJjaGVja2JveFJlc3QiLCJpbm5lckNsYXNzTmFtZSIsImNoZWNrYm94RWwiLCJpbnB1dElkIiwiY2xhc3NOYW1lIiwidW5jaGVja0ljb24iLCJjaGVja0ljb24iLCJpbmNsdWRlcyIsImljb24iLCJjaGlsZHJlbiIsImh0bWxGb3IiXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQUlBLE1BQU0sR0FBSSxJQUFJLElBQUksSUFBSSxDQUFDQSxNQUFNLElBQUssVUFBVUMsQ0FBQyxFQUFFQyxDQUFDLEVBQUU7RUFDbEQsSUFBSUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUNWLEtBQUssSUFBSUMsQ0FBQyxJQUFJSCxDQUFDLEVBQUUsSUFBSUksTUFBTSxDQUFDQyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDUCxDQUFDLEVBQUVHLENBQUMsQ0FBQyxJQUFJRixDQUFDLENBQUNPLE9BQU8sQ0FBQ0wsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUMvRUQsQ0FBQyxDQUFDQyxDQUFDLENBQUMsR0FBR0gsQ0FBQyxDQUFDRyxDQUFDLENBQUM7RUFDZixJQUFJSCxDQUFDLElBQUksSUFBSSxJQUFJLE9BQU9JLE1BQU0sQ0FBQ0sscUJBQXFCLEtBQUssVUFBVSxFQUMvRCxLQUFLLElBQUlDLENBQUMsR0FBRyxDQUFDLEVBQUVQLENBQUMsR0FBR0MsTUFBTSxDQUFDSyxx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QSxFQUhOdkMsR0FBRyxDQUlQO0VBRVYsQ0FBQztFQUVELE9BQ0VwQyxJQUFBLENBQUEsS0FBQSxFQUFBO0lBQUs2RSxTQUFTLEVBQUVqRCxPQUFPLENBQUMsU0FBUyxFQUFFUixVQUFVLENBQUM7SUFBQThELFFBQUEsRUFDM0NoRSxLQUFLLENBQUNnQixHQUFHLENBQUMrQixVQUFVO0VBQUMsQ0FBQSxDQUNsQjtBQUVWLENBQUM7QUFFRCw0QkFBZTlELElBQUksQ0FBQ1csYUFBYSxDQUFDIiwiZmlsZSI6ImNvbXBvbmVudHMvQ2hlY2tib3hHcm91cC9DaGVja2JveEdyb3VwLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8sIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBDaGVja2JveCBhcyBQcmltZUNoZWNrYm94IH0gZnJvbSAncHJpbWVyZWFjdC9jaGVja2JveCc7XG5pbXBvcnQgeyBUcmlTdGF0ZUNoZWNrYm94IH0gZnJvbSAncHJpbWVyZWFjdC90cmlzdGF0ZWNoZWNrYm94JztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcywgam9pbkNscyB9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IHVzZUNvbnRyb2xsZWRTdGF0ZSBmcm9tICcuLi91c2VDb250cm9sbGVkU3RhdGUnO1xuaW1wb3J0IHVzZU1lbW9pemVkRm4gZnJvbSAnLi4vdXNlTWVtb2l6ZWRGbic7XG5jb25zdCBUcmlTdGF0ZUNoZWNrYm94V2l0aElucHV0SWQgPSBUcmlTdGF0ZUNoZWNrYm94O1xuZXhwb3J0IGNvbnN0IENoZWNrYm94R3JvdXAgPSBwcm9wcyA9PiB7XG4gICAgY29uc3QgeyB0cmlzdGF0ZSwgaXRlbXMgPSBbXSwgb25DaGFuZ2UsIHdyYXBwZXJDbHMsIGlubmVyQ2xzLCBjaGVja2JveEdyb3VwQ2xzLCBsYWJlbENscywgcHJlZml4Q2xzID0gJ2NoZWNrYm94Z3JvdXAnLCBzaXplID0gJ21kJyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMocHJlZml4Q2xzKTtcbiAgICBjb25zdCBzaXplQ2xhc3MgPSBgY2tiZy0ke3NpemV9YDtcbiAgICAvLyBOb3JtYWwgbW9kZTogY29udHJvbGxlZC91bmNvbnRyb2xsZWQgc3RyaW5nW10gc3RhdGVcbiAgICBjb25zdCBkZWZhdWx0Q2hlY2tlZCA9IHVzZU1lbW8oKCkgPT4gaXRlbXMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5kZWZhdWx0Q2hlY2tlZCkubWFwKHYgPT4gdi5rZXkpLCBbaXRlbXNdKTtcbiAgICBjb25zdCBub3JtYWxWYWx1ZSA9IHRyaXN0YXRlID8gdW5kZWZpbmVkIDogcHJvcHMudmFsdWU7XG4gICAgY29uc3QgW2NoZWNrZWRJdGVtcywgc2V0Q2hlY2tlZEl0ZW1zXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShub3JtYWxWYWx1ZSAhPT0gbnVsbCAmJiBub3JtYWxWYWx1ZSAhPT0gdm9pZCAwID8gbm9ybWFsVmFsdWUgOiBkZWZhdWx0Q2hlY2tlZCwgbm9ybWFsVmFsdWUpO1xuICAgIC8vIFRyaXN0YXRlIG1vZGU6IGNvbnRyb2xsZWQvdW5jb250cm9sbGVkIFJlY29yZDxzdHJpbmcsIGJvb2xlYW4gfCBudWxsPiBzdGF0ZVxuICAgIGNvbnN0IGRlZmF1bHRJdGVtc1N0YXRlID0gdXNlTWVtbygoKSA9PiBPYmplY3QuZnJvbUVudHJpZXMoaXRlbXMubWFwKHYgPT4geyB2YXIgX2E7IHJldHVybiBbdi5rZXksIChfYSA9ICgnZGVmYXVsdFZhbHVlJyBpbiB2ID8gdi5kZWZhdWx0VmFsdWUgOiBudWxsKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogbnVsbF07IH0pKSwgW2l0ZW1zXSk7XG4gICAgY29uc3QgdHJpc3RhdGVWYWx1ZSA9IHRyaXN0YXRlID8gcHJvcHMudmFsdWUgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgW2l0ZW1zU3RhdGUsIHNldEl0ZW1zU3RhdGVdID0gdXNlQ29udHJvbGxlZFN0YXRlKHRyaXN0YXRlVmFsdWUgIT09IG51bGwgJiYgdHJpc3RhdGVWYWx1ZSAhPT0gdm9pZCAwID8gdHJpc3RhdGVWYWx1ZSA6IGRlZmF1bHRJdGVtc1N0YXRlLCB0cmlzdGF0ZVZhbHVlKTtcbiAgICBjb25zdCBoYW5kbGVOb3JtYWxDaGFuZ2UgPSB1c2VNZW1vaXplZEZuKChlLCBpdGVtT25DaGFuZ2UpID0+IHtcbiAgICAgICAgaXRlbU9uQ2hhbmdlID09PSBudWxsIHx8IGl0ZW1PbkNoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogaXRlbU9uQ2hhbmdlKCEhZS5jaGVja2VkKTtcbiAgICAgICAgY29uc3QgbmV4dCA9IGUuY2hlY2tlZFxuICAgICAgICAgICAgPyBbLi4uY2hlY2tlZEl0ZW1zLCBlLnZhbHVlXVxuICAgICAgICAgICAgOiBjaGVja2VkSXRlbXMuZmlsdGVyKGsgPT4gayAhPT0gZS52YWx1ZSk7XG4gICAgICAgIHNldENoZWNrZWRJdGVtcyhuZXh0KTtcbiAgICAgICAgb25DaGFuZ2UgPT09IG51bGwgfHwgb25DaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2hhbmdlKG5leHQpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVRyaXN0YXRlQ2hhbmdlID0gdXNlTWVtb2l6ZWRGbigoZSwgaXRlbU9uQ2hhbmdlKSA9PiB7XG4gICAgICAgIGl0ZW1PbkNoYW5nZSA9PT0gbnVsbCB8fCBpdGVtT25DaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGl0ZW1PbkNoYW5nZShlLnZhbHVlKTtcbiAgICAgICAgY29uc3QgbmV4dCA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgaXRlbXNTdGF0ZSksIHsgW2UudGFyZ2V0LmlkXTogZS52YWx1ZSB9KTtcbiAgICAgICAgc2V0SXRlbXNTdGF0ZShuZXh0KTtcbiAgICAgICAgb25DaGFuZ2UgPT09IG51bGwgfHwgb25DaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2hhbmdlKG5leHQpO1xuICAgIH0pO1xuICAgIGNvbnN0IHJlbmRlckl0ZW0gPSAoaXRlbSkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IHsga2V5LCByZXF1aXJlZCwgZGlzYWJsZWQsIGxhYmVsLCBvbkNoYW5nZTogaXRlbU9uQ2hhbmdlIH0gPSBpdGVtLCByZXN0ID0gX19yZXN0KGl0ZW0sIFtcImtleVwiLCBcInJlcXVpcmVkXCIsIFwiZGlzYWJsZWRcIiwgXCJsYWJlbFwiLCBcIm9uQ2hhbmdlXCJdKTtcbiAgICAgICAgLy8gU3RyaXAgZGVmYXVsdFZhbHVlIGZyb20gcmVzdCB0byBhdm9pZCBwYXNzaW5nIGl0IHRvIERPTVxuICAgICAgICBjb25zdCBfYiA9IHJlc3QsIHsgZGVmYXVsdFZhbHVlOiBfLCBkZWZhdWx0Q2hlY2tlZDogX18gfSA9IF9iLCBjaGVja2JveFJlc3QgPSBfX3Jlc3QoX2IsIFtcImRlZmF1bHRWYWx1ZVwiLCBcImRlZmF1bHRDaGVja2VkXCJdKTtcbiAgICAgICAgY29uc3QgaW5uZXJDbGFzc05hbWUgPSBjbGFzc2VzKCdpbm5lci1jaGVja2JveCcsIGNoZWNrYm94R3JvdXBDbHMpO1xuICAgICAgICBjb25zdCBjaGVja2JveEVsID0gdHJpc3RhdGVcbiAgICAgICAgICAgID8gX2pzeChUcmlTdGF0ZUNoZWNrYm94V2l0aElucHV0SWQsIE9iamVjdC5hc3NpZ24oe30sIGNoZWNrYm94UmVzdCwgeyBpZDoga2V5LCBpbnB1dElkOiBrZXksIHZhbHVlOiAoX2EgPSBpdGVtc1N0YXRlW2tleV0pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IG51bGwsIHJlcXVpcmVkOiByZXF1aXJlZCwgZGlzYWJsZWQ6IGRpc2FibGVkLCBjbGFzc05hbWU6IGlubmVyQ2xhc3NOYW1lLCB1bmNoZWNrSWNvbjogX2pzeChcImlcIiwgeyBjbGFzc05hbWU6IFwicGkgcGktbWludXNcIiB9KSwgY2hlY2tJY29uOiBfanN4KFwiaVwiLCB7IGNsYXNzTmFtZTogXCJwaSBwaS1jaGVja1wiIH0pLCBvbkNoYW5nZTogKGUpID0+IHsgaWYgKCFkaXNhYmxlZClcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlVHJpc3RhdGVDaGFuZ2UoZSwgaXRlbU9uQ2hhbmdlKTsgfSB9KSlcbiAgICAgICAgICAgIDogX2pzeChQcmltZUNoZWNrYm94LCBPYmplY3QuYXNzaWduKHt9LCBjaGVja2JveFJlc3QsIHsgaW5wdXRJZDoga2V5LCB2YWx1ZToga2V5LCByZXF1aXJlZDogcmVxdWlyZWQsIGRpc2FibGVkOiBkaXNhYmxlZCwgY2hlY2tlZDogY2hlY2tlZEl0ZW1zLmluY2x1ZGVzKGtleSksIGNsYXNzTmFtZTogaW5uZXJDbGFzc05hbWUsIGljb246IF9qc3goXCJpXCIsIHsgY2xhc3NOYW1lOiBcInBpIHBpLWNoZWNrXCIgfSksIG9uQ2hhbmdlOiAoZSkgPT4geyBpZiAoIWRpc2FibGVkKVxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVOb3JtYWxDaGFuZ2UoZSwgaXRlbU9uQ2hhbmdlKTsgfSB9KSk7XG4gICAgICAgIHJldHVybiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogam9pbkNscyhjbGFzc2VzKCdpbm5lcicsIGlubmVyQ2xzKSwgc2l6ZUNsYXNzKSwgY2hpbGRyZW46IGxhYmVsXG4gICAgICAgICAgICAgICAgPyBfanN4cyhcImxhYmVsXCIsIHsgaHRtbEZvcjoga2V5LCBjbGFzc05hbWU6IGxhYmVsQ2xzLCBjaGlsZHJlbjogW2NoZWNrYm94RWwsIHRyaXN0YXRlID8gX2pzeChcInNwYW5cIiwgeyBjaGlsZHJlbjogbGFiZWwgfSkgOiBsYWJlbF0gfSlcbiAgICAgICAgICAgICAgICA6IGNoZWNrYm94RWwgfSwga2V5KSk7XG4gICAgfTtcbiAgICByZXR1cm4gKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3dyYXBwZXInLCB3cmFwcGVyQ2xzKSwgY2hpbGRyZW46IGl0ZW1zLm1hcChyZW5kZXJJdGVtKSB9KSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgbWVtbyhDaGVja2JveEdyb3VwKTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=