@1money/react-ui 1.16.0 → 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 (268) 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/Form/Form.d.ts +29 -0
  7. package/es/components/Form/Form.js +188 -0
  8. package/es/components/Form/FormItem.d.ts +4 -0
  9. package/es/components/Form/FormItem.js +165 -0
  10. package/es/components/Form/FormItemContent.d.ts +18 -0
  11. package/es/components/Form/FormItemContent.js +146 -0
  12. package/es/components/Form/constants.d.ts +46 -0
  13. package/es/components/Form/constants.js +65 -0
  14. package/es/components/Form/helper.d.ts +120 -0
  15. package/es/components/Form/helper.js +284 -0
  16. package/es/components/Form/index.d.ts +20 -0
  17. package/es/components/Form/index.js +21 -0
  18. package/es/components/Form/interface.d.ts +238 -0
  19. package/es/components/Form/interface.js +2 -0
  20. package/es/components/Form/style/Form.css +1 -0
  21. package/es/components/Form/style/Form.scss +167 -0
  22. package/es/components/Form/style/css.js +2 -0
  23. package/es/components/Form/style/index.d.ts +1 -0
  24. package/es/components/Form/style/index.js +2 -0
  25. package/es/components/Form/useFormItemContext.d.ts +32 -0
  26. package/es/components/Form/useFormItemContext.js +55 -0
  27. package/es/components/Form/useFormItemWatch.d.ts +51 -0
  28. package/es/components/Form/useFormItemWatch.js +69 -0
  29. package/es/components/Form/useValidationTrigger.d.ts +40 -0
  30. package/es/components/Form/useValidationTrigger.js +74 -0
  31. package/es/components/Input/Input.js +72 -74
  32. package/es/components/Input/interface.d.ts +9 -9
  33. package/es/components/InputAmount/InputAmount.js +228 -276
  34. package/es/components/InputAmount/helper.d.ts +46 -0
  35. package/es/components/InputAmount/helper.js +115 -0
  36. package/es/components/ProForm/ProForm.d.ts +33 -0
  37. package/es/components/ProForm/ProForm.js +208 -0
  38. package/es/components/ProForm/ProFormDependency.d.ts +12 -0
  39. package/es/components/ProForm/ProFormDependency.js +61 -0
  40. package/es/components/ProForm/ProFormList.d.ts +19 -0
  41. package/es/components/ProForm/ProFormList.js +348 -0
  42. package/es/components/ProForm/Submitter.d.ts +21 -0
  43. package/es/components/ProForm/Submitter.js +76 -0
  44. package/es/components/ProForm/constants.d.ts +34 -0
  45. package/es/components/ProForm/constants.js +40 -0
  46. package/es/components/ProForm/fields/ProFormCheckbox.d.ts +6 -0
  47. package/es/components/ProForm/fields/ProFormCheckbox.js +11 -0
  48. package/es/components/ProForm/fields/ProFormCheckboxGroup.d.ts +6 -0
  49. package/es/components/ProForm/fields/ProFormCheckboxGroup.js +46 -0
  50. package/es/components/ProForm/fields/ProFormDigit.d.ts +6 -0
  51. package/es/components/ProForm/fields/ProFormDigit.js +15 -0
  52. package/es/components/ProForm/fields/ProFormMoney.d.ts +6 -0
  53. package/es/components/ProForm/fields/ProFormMoney.js +10 -0
  54. package/es/components/ProForm/fields/ProFormMultiSelect.d.ts +6 -0
  55. package/es/components/ProForm/fields/ProFormMultiSelect.js +27 -0
  56. package/es/components/ProForm/fields/ProFormPassword.d.ts +6 -0
  57. package/es/components/ProForm/fields/ProFormPassword.js +16 -0
  58. package/es/components/ProForm/fields/ProFormRadio.d.ts +6 -0
  59. package/es/components/ProForm/fields/ProFormRadio.js +13 -0
  60. package/es/components/ProForm/fields/ProFormSelect.d.ts +6 -0
  61. package/es/components/ProForm/fields/ProFormSelect.js +13 -0
  62. package/es/components/ProForm/fields/ProFormSwitch.d.ts +6 -0
  63. package/es/components/ProForm/fields/ProFormSwitch.js +11 -0
  64. package/es/components/ProForm/fields/ProFormText.d.ts +6 -0
  65. package/es/components/ProForm/fields/ProFormText.js +15 -0
  66. package/es/components/ProForm/fields/ProFormTextArea.d.ts +6 -0
  67. package/es/components/ProForm/fields/ProFormTextArea.js +16 -0
  68. package/es/components/ProForm/fields/createProFormField.d.ts +43 -0
  69. package/es/components/ProForm/fields/createProFormField.js +200 -0
  70. package/es/components/ProForm/fields/index.d.ts +12 -0
  71. package/es/components/ProForm/fields/index.js +13 -0
  72. package/es/components/ProForm/index.d.ts +7 -0
  73. package/es/components/ProForm/index.js +7 -0
  74. package/es/components/ProForm/interface.d.ts +306 -0
  75. package/es/components/ProForm/interface.js +2 -0
  76. package/es/components/ProForm/layouts/DrawerForm.d.ts +16 -0
  77. package/es/components/ProForm/layouts/DrawerForm.js +79 -0
  78. package/es/components/ProForm/layouts/ModalForm.d.ts +16 -0
  79. package/es/components/ProForm/layouts/ModalForm.js +89 -0
  80. package/es/components/ProForm/layouts/QueryFilter.d.ts +21 -0
  81. package/es/components/ProForm/layouts/QueryFilter.js +132 -0
  82. package/es/components/ProForm/layouts/StepsForm.d.ts +13 -0
  83. package/es/components/ProForm/layouts/StepsForm.js +295 -0
  84. package/es/components/ProForm/layouts/index.d.ts +4 -0
  85. package/es/components/ProForm/layouts/index.js +5 -0
  86. package/es/components/ProForm/layouts/useOverlayForm.d.ts +53 -0
  87. package/es/components/ProForm/layouts/useOverlayForm.js +143 -0
  88. package/es/components/ProForm/style/ProForm.module.css +1 -0
  89. package/es/components/ProForm/style/ProForm.module.scss +59 -0
  90. package/es/components/ProForm/style/css.js +3 -0
  91. package/es/components/ProForm/style/index.d.ts +1 -0
  92. package/es/components/ProForm/style/index.js +3 -0
  93. package/es/components/ProForm/utils.d.ts +72 -0
  94. package/es/components/ProForm/utils.js +206 -0
  95. package/es/components/RadioGroup/RadioGroup.js +46 -23
  96. package/es/components/RadioGroup/interface.d.ts +3 -1
  97. package/es/components/Select/Select.d.ts +1 -1
  98. package/es/components/Select/Select.js +113 -106
  99. package/es/components/Select/constants.d.ts +18 -0
  100. package/es/components/Select/constants.js +19 -0
  101. package/es/components/Sidebar/Sidebar.js +21 -23
  102. package/es/components/Sidebar/SidebarLogo.d.ts +7 -0
  103. package/es/components/Sidebar/SidebarLogo.js +33 -0
  104. package/es/components/Sidebar/SimplySidebar.d.ts +2 -2
  105. package/es/components/Sidebar/SimplySidebar.js +18 -22
  106. package/es/components/Sidebar/Stepper.js +14 -14
  107. package/es/components/Sidebar/constants.d.ts +16 -0
  108. package/es/components/Sidebar/constants.js +17 -0
  109. package/es/components/Sidebar/style/Stepper.css +1 -1
  110. package/es/components/Sidebar/style/Stepper.scss +11 -1
  111. package/es/components/Switch/Switch.js +28 -25
  112. package/es/components/Switch/interface.d.ts +9 -4
  113. package/es/components/useControlledState/index.d.ts +14 -0
  114. package/es/components/useControlledState/index.js +32 -0
  115. package/es/components/useEventCallback/index.d.ts +11 -0
  116. package/es/components/useEventCallback/index.js +17 -0
  117. package/es/components/useLayoutEffect/index.d.ts +11 -0
  118. package/es/components/useLayoutEffect/index.js +17 -0
  119. package/es/components/useLayoutState/index.d.ts +13 -0
  120. package/es/components/useLayoutState/index.js +71 -0
  121. package/es/components/useMemoizedFn/index.d.ts +12 -0
  122. package/es/components/useMemoizedFn/index.js +27 -0
  123. package/es/components/usePrevious/index.d.ts +11 -0
  124. package/es/components/usePrevious/index.js +19 -0
  125. package/es/components/useSafeState/index.d.ts +12 -0
  126. package/es/components/useSafeState/index.js +24 -0
  127. package/es/components/useSyncState/index.d.ts +14 -0
  128. package/es/components/useSyncState/index.js +37 -0
  129. package/es/components/useUpdateEffect/index.d.ts +9 -0
  130. package/es/components/useUpdateEffect/index.js +19 -0
  131. package/es/index.css +1 -1
  132. package/es/index.d.ts +21 -2
  133. package/es/index.js +19 -1
  134. package/jest.setup.d.ts +1 -0
  135. package/jest.setup.ts +1 -0
  136. package/lib/components/CheckboxGroup/CheckboxGroup.d.ts +3 -3
  137. package/lib/components/CheckboxGroup/CheckboxGroup.js +92 -89
  138. package/lib/components/CheckboxGroup/interface.d.ts +21 -15
  139. package/lib/components/CheckboxGroup/style/CheckboxGroup.scss +0 -7
  140. package/lib/components/Form/Form.d.ts +29 -0
  141. package/lib/components/Form/Form.js +199 -0
  142. package/lib/components/Form/FormItem.d.ts +4 -0
  143. package/lib/components/Form/FormItem.js +176 -0
  144. package/lib/components/Form/FormItemContent.d.ts +18 -0
  145. package/lib/components/Form/FormItemContent.js +156 -0
  146. package/lib/components/Form/constants.d.ts +46 -0
  147. package/lib/components/Form/constants.js +71 -0
  148. package/lib/components/Form/helper.d.ts +120 -0
  149. package/lib/components/Form/helper.js +290 -0
  150. package/lib/components/Form/index.d.ts +20 -0
  151. package/lib/components/Form/index.js +45 -0
  152. package/lib/components/Form/interface.d.ts +238 -0
  153. package/lib/components/Form/interface.js +6 -0
  154. package/lib/components/Form/style/Form.css +1 -0
  155. package/lib/components/Form/style/Form.scss +167 -0
  156. package/lib/components/Form/style/css.js +4 -0
  157. package/lib/components/Form/style/index.d.ts +1 -0
  158. package/lib/components/Form/style/index.js +4 -0
  159. package/lib/components/Form/useFormItemContext.d.ts +32 -0
  160. package/lib/components/Form/useFormItemContext.js +62 -0
  161. package/lib/components/Form/useFormItemWatch.d.ts +51 -0
  162. package/lib/components/Form/useFormItemWatch.js +76 -0
  163. package/lib/components/Form/useValidationTrigger.d.ts +40 -0
  164. package/lib/components/Form/useValidationTrigger.js +81 -0
  165. package/lib/components/Input/Input.js +71 -73
  166. package/lib/components/Input/interface.d.ts +9 -9
  167. package/lib/components/InputAmount/InputAmount.js +230 -278
  168. package/lib/components/InputAmount/helper.d.ts +46 -0
  169. package/lib/components/InputAmount/helper.js +122 -0
  170. package/lib/components/ProForm/ProForm.d.ts +33 -0
  171. package/lib/components/ProForm/ProForm.js +216 -0
  172. package/lib/components/ProForm/ProFormDependency.d.ts +12 -0
  173. package/lib/components/ProForm/ProFormDependency.js +67 -0
  174. package/lib/components/ProForm/ProFormList.d.ts +19 -0
  175. package/lib/components/ProForm/ProFormList.js +355 -0
  176. package/lib/components/ProForm/Submitter.d.ts +21 -0
  177. package/lib/components/ProForm/Submitter.js +83 -0
  178. package/lib/components/ProForm/constants.d.ts +34 -0
  179. package/lib/components/ProForm/constants.js +46 -0
  180. package/lib/components/ProForm/fields/ProFormCheckbox.d.ts +6 -0
  181. package/lib/components/ProForm/fields/ProFormCheckbox.js +18 -0
  182. package/lib/components/ProForm/fields/ProFormCheckboxGroup.d.ts +6 -0
  183. package/lib/components/ProForm/fields/ProFormCheckboxGroup.js +53 -0
  184. package/lib/components/ProForm/fields/ProFormDigit.d.ts +6 -0
  185. package/lib/components/ProForm/fields/ProFormDigit.js +22 -0
  186. package/lib/components/ProForm/fields/ProFormMoney.d.ts +6 -0
  187. package/lib/components/ProForm/fields/ProFormMoney.js +17 -0
  188. package/lib/components/ProForm/fields/ProFormMultiSelect.d.ts +6 -0
  189. package/lib/components/ProForm/fields/ProFormMultiSelect.js +34 -0
  190. package/lib/components/ProForm/fields/ProFormPassword.d.ts +6 -0
  191. package/lib/components/ProForm/fields/ProFormPassword.js +23 -0
  192. package/lib/components/ProForm/fields/ProFormRadio.d.ts +6 -0
  193. package/lib/components/ProForm/fields/ProFormRadio.js +20 -0
  194. package/lib/components/ProForm/fields/ProFormSelect.d.ts +6 -0
  195. package/lib/components/ProForm/fields/ProFormSelect.js +20 -0
  196. package/lib/components/ProForm/fields/ProFormSwitch.d.ts +6 -0
  197. package/lib/components/ProForm/fields/ProFormSwitch.js +18 -0
  198. package/lib/components/ProForm/fields/ProFormText.d.ts +6 -0
  199. package/lib/components/ProForm/fields/ProFormText.js +22 -0
  200. package/lib/components/ProForm/fields/ProFormTextArea.d.ts +6 -0
  201. package/lib/components/ProForm/fields/ProFormTextArea.js +23 -0
  202. package/lib/components/ProForm/fields/createProFormField.d.ts +43 -0
  203. package/lib/components/ProForm/fields/createProFormField.js +208 -0
  204. package/lib/components/ProForm/fields/index.d.ts +12 -0
  205. package/lib/components/ProForm/fields/index.js +90 -0
  206. package/lib/components/ProForm/index.d.ts +7 -0
  207. package/lib/components/ProForm/index.js +73 -0
  208. package/lib/components/ProForm/interface.d.ts +306 -0
  209. package/lib/components/ProForm/interface.js +6 -0
  210. package/lib/components/ProForm/layouts/DrawerForm.d.ts +16 -0
  211. package/lib/components/ProForm/layouts/DrawerForm.js +86 -0
  212. package/lib/components/ProForm/layouts/ModalForm.d.ts +16 -0
  213. package/lib/components/ProForm/layouts/ModalForm.js +96 -0
  214. package/lib/components/ProForm/layouts/QueryFilter.d.ts +21 -0
  215. package/lib/components/ProForm/layouts/QueryFilter.js +139 -0
  216. package/lib/components/ProForm/layouts/StepsForm.d.ts +13 -0
  217. package/lib/components/ProForm/layouts/StepsForm.js +302 -0
  218. package/lib/components/ProForm/layouts/index.d.ts +4 -0
  219. package/lib/components/ProForm/layouts/index.js +40 -0
  220. package/lib/components/ProForm/layouts/useOverlayForm.d.ts +53 -0
  221. package/lib/components/ProForm/layouts/useOverlayForm.js +150 -0
  222. package/lib/components/ProForm/style/ProForm.module.css +1 -0
  223. package/lib/components/ProForm/style/ProForm.module.scss +59 -0
  224. package/lib/components/ProForm/style/css.js +4 -0
  225. package/lib/components/ProForm/style/index.d.ts +1 -0
  226. package/lib/components/ProForm/style/index.js +4 -0
  227. package/lib/components/ProForm/utils.d.ts +72 -0
  228. package/lib/components/ProForm/utils.js +213 -0
  229. package/lib/components/RadioGroup/RadioGroup.js +45 -22
  230. package/lib/components/RadioGroup/interface.d.ts +3 -1
  231. package/lib/components/Select/Select.d.ts +1 -1
  232. package/lib/components/Select/Select.js +114 -107
  233. package/lib/components/Select/constants.d.ts +18 -0
  234. package/lib/components/Select/constants.js +25 -0
  235. package/lib/components/Sidebar/Sidebar.js +21 -23
  236. package/lib/components/Sidebar/SidebarLogo.d.ts +7 -0
  237. package/lib/components/Sidebar/SidebarLogo.js +39 -0
  238. package/lib/components/Sidebar/SimplySidebar.d.ts +2 -2
  239. package/lib/components/Sidebar/SimplySidebar.js +17 -21
  240. package/lib/components/Sidebar/Stepper.js +14 -14
  241. package/lib/components/Sidebar/constants.d.ts +16 -0
  242. package/lib/components/Sidebar/constants.js +23 -0
  243. package/lib/components/Sidebar/style/Stepper.css +1 -1
  244. package/lib/components/Sidebar/style/Stepper.scss +11 -1
  245. package/lib/components/Switch/Switch.js +27 -24
  246. package/lib/components/Switch/interface.d.ts +9 -4
  247. package/lib/components/useControlledState/index.d.ts +14 -0
  248. package/lib/components/useControlledState/index.js +39 -0
  249. package/lib/components/useEventCallback/index.d.ts +11 -0
  250. package/lib/components/useEventCallback/index.js +24 -0
  251. package/lib/components/useLayoutEffect/index.d.ts +11 -0
  252. package/lib/components/useLayoutEffect/index.js +23 -0
  253. package/lib/components/useLayoutState/index.d.ts +13 -0
  254. package/lib/components/useLayoutState/index.js +79 -0
  255. package/lib/components/useMemoizedFn/index.d.ts +12 -0
  256. package/lib/components/useMemoizedFn/index.js +33 -0
  257. package/lib/components/usePrevious/index.d.ts +11 -0
  258. package/lib/components/usePrevious/index.js +25 -0
  259. package/lib/components/useSafeState/index.d.ts +12 -0
  260. package/lib/components/useSafeState/index.js +31 -0
  261. package/lib/components/useSyncState/index.d.ts +14 -0
  262. package/lib/components/useSyncState/index.js +44 -0
  263. package/lib/components/useUpdateEffect/index.d.ts +9 -0
  264. package/lib/components/useUpdateEffect/index.js +25 -0
  265. package/lib/index.css +1 -1
  266. package/lib/index.d.ts +21 -2
  267. package/lib/index.js +213 -1
  268. package/package.json +16 -1
@@ -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,150 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useOverlayForm = useOverlayForm;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ var _react = require("react");
11
+ var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
12
+ function adopt(value) {
13
+ return value instanceof P ? value : new P(function (resolve) {
14
+ resolve(value);
15
+ });
16
+ }
17
+ return new (P || (P = Promise))(function (resolve, reject) {
18
+ function fulfilled(value) {
19
+ try {
20
+ step(generator.next(value));
21
+ } catch (e) {
22
+ reject(e);
23
+ }
24
+ }
25
+ function rejected(value) {
26
+ try {
27
+ step(generator["throw"](value));
28
+ } catch (e) {
29
+ reject(e);
30
+ }
31
+ }
32
+ function step(result) {
33
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
34
+ }
35
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
36
+ });
37
+ };
38
+ /**
39
+ * Shared hook that powers both {@link ModalForm} and {@link DrawerForm}.
40
+ *
41
+ * Manages open/close state, trigger element cloning, auto-close with optional
42
+ * timeout after submit, and overlay visibility lifecycle.
43
+ *
44
+ * @typeParam TValues - The form values type.
45
+ * @param options - Configuration options.
46
+ * @returns An object with `mergedOpen`, `triggerNode`, `handleFinish`, `handleHide`, and more.
47
+ */
48
+ function useOverlayForm(_ref) {
49
+ var _this = this;
50
+ var open = _ref.open,
51
+ onOpenChange = _ref.onOpenChange,
52
+ trigger = _ref.trigger,
53
+ submitTimeout = _ref.submitTimeout,
54
+ _ref$autoClose = _ref.autoClose,
55
+ autoClose = _ref$autoClose === void 0 ? true : _ref$autoClose,
56
+ _ref$destroyOnClose = _ref.destroyOnClose,
57
+ destroyOnClose = _ref$destroyOnClose === void 0 ? true : _ref$destroyOnClose,
58
+ width = _ref.width,
59
+ onFinish = _ref.onFinish,
60
+ overlayStyle = _ref.overlayStyle,
61
+ onOverlayHide = _ref.onOverlayHide;
62
+ var _useState = (0, _react.useState)(false),
63
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
64
+ innerOpen = _useState2[0],
65
+ setInnerOpen = _useState2[1];
66
+ var closeTimerRef = (0, _react.useRef)(null);
67
+ var onFinishRef = (0, _react.useRef)(onFinish);
68
+ var mergedOpen = open !== null && open !== void 0 ? open : innerOpen;
69
+ (0, _react.useEffect)(function () {
70
+ onFinishRef.current = onFinish;
71
+ }, [onFinish]);
72
+ var changeOpen = (0, _react.useCallback)(function (nextOpen) {
73
+ if (open === undefined) {
74
+ setInnerOpen(nextOpen);
75
+ }
76
+ onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(nextOpen);
77
+ }, [open, onOpenChange]);
78
+ var clearCloseTimer = (0, _react.useCallback)(function () {
79
+ if (!closeTimerRef.current) return;
80
+ clearTimeout(closeTimerRef.current);
81
+ closeTimerRef.current = null;
82
+ }, []);
83
+ var handleFinish = (0, _react.useCallback)(function (values) {
84
+ return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regenerator["default"].mark(function _callee() {
85
+ var _a, result;
86
+ return _regenerator["default"].wrap(function _callee$(_context) {
87
+ while (1) switch (_context.prev = _context.next) {
88
+ case 0:
89
+ _context.next = 2;
90
+ return (_a = onFinishRef.current) === null || _a === void 0 ? void 0 : _a.call(onFinishRef, values);
91
+ case 2:
92
+ result = _context.sent;
93
+ if (autoClose && result !== false) {
94
+ clearCloseTimer();
95
+ if (typeof submitTimeout === 'number' && submitTimeout > 0) {
96
+ closeTimerRef.current = setTimeout(function () {
97
+ changeOpen(false);
98
+ closeTimerRef.current = null;
99
+ }, submitTimeout);
100
+ } else {
101
+ changeOpen(false);
102
+ }
103
+ }
104
+ return _context.abrupt("return", result);
105
+ case 5:
106
+ case "end":
107
+ return _context.stop();
108
+ }
109
+ }, _callee);
110
+ }));
111
+ }, [autoClose, changeOpen, clearCloseTimer, submitTimeout]);
112
+ var triggerNode = (0, _react.useMemo)(function () {
113
+ if (!trigger || ! /*#__PURE__*/(0, _react.isValidElement)(trigger)) return null;
114
+ return /*#__PURE__*/(0, _react.cloneElement)(trigger, {
115
+ onClick: function onClick(event) {
116
+ var _a;
117
+ var triggerOnClick = (_a = trigger.props) === null || _a === void 0 ? void 0 : _a.onClick;
118
+ triggerOnClick === null || triggerOnClick === void 0 ? void 0 : triggerOnClick(event);
119
+ if (event.defaultPrevented) return;
120
+ changeOpen(true);
121
+ }
122
+ });
123
+ }, [changeOpen, trigger]);
124
+ var handleHide = (0, _react.useCallback)(function () {
125
+ clearCloseTimer();
126
+ onOverlayHide === null || onOverlayHide === void 0 ? void 0 : onOverlayHide.apply(void 0, arguments);
127
+ changeOpen(false);
128
+ }, [changeOpen, clearCloseTimer, onOverlayHide]);
129
+ var shouldRenderPanel = mergedOpen || !destroyOnClose;
130
+ var mergedStyle = (0, _react.useMemo)(function () {
131
+ return Object.assign(Object.assign({}, overlayStyle || {}), width !== undefined ? {
132
+ width: width
133
+ } : {});
134
+ }, [overlayStyle, width]);
135
+ (0, _react.useEffect)(function () {
136
+ return function () {
137
+ clearCloseTimer();
138
+ };
139
+ }, [clearCloseTimer]);
140
+ return {
141
+ mergedOpen: mergedOpen,
142
+ shouldRenderPanel: shouldRenderPanel,
143
+ triggerNode: triggerNode,
144
+ handleFinish: handleFinish,
145
+ handleHide: handleHide,
146
+ mergedStyle: mergedStyle,
147
+ changeOpen: changeOpen
148
+ };
149
+ }
150
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL2xheW91dHMvdXNlT3ZlcmxheUZvcm0udHMiLCJjb21wb25lbnRzL1Byb0Zvcm0vbGF5b3V0cy91c2VPdmVybGF5Rm9ybS5qcyJdLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX19hd2FpdGVyIiwidGhpc0FyZyIsIl9hcmd1bWVudHMiLCJQIiwiZ2VuZXJhdG9yIiwiYWRvcHQiLCJ2YWx1ZSIsInJlc29sdmUiLCJQcm9taXNlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwic3RlcCIsIm5leHQiLCJlIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJkb25lIiwidGhlbiIsImFwcGx5IiwidXNlT3ZlcmxheUZvcm0iLCJfcmVmIiwiX3RoaXMiLCJvcGVuIiwib25PcGVuQ2hhbmdlIiwidHJpZ2dlciIsInN1Ym1pdFRpbWVvdXQiLCJfcmVmJGF1dG9DbG9zZSIsImF1dG9DbG9zZSIsIl9yZWYkZGVzdHJveU9uQ2xvc2UiLCJkZXN0cm95T25DbG9zZSIsIndpZHRoIiwib25GaW5pc2giLCJvdmVybGF5U3R5bGUiLCJvbk92ZXJsYXlIaWRlIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiaW5uZXJPcGVuIiwic2V0SW5uZXJPcGVuIiwiY2xvc2VUaW1lclJlZiIsInVzZVJlZiIsIm9uRmluaXNoUmVmIiwibWVyZ2VkT3BlbiIsInVzZUVmZmVjdCIsImN1cnJlbnQiLCJjaGFuZ2VPcGVuIiwidXNlQ2FsbGJhY2siLCJuZXh0T3BlbiIsInVuZGVmaW5lZCIsImNsZWFyQ2xvc2VUaW1lciIsImNsZWFyVGltZW91dCIsImhhbmRsZUZpbmlzaCIsInZhbHVlcyIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwiX2EiLCJ3cmFwIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInByZXYiLCJjYWxsIiwic2VudCIsInNldFRpbWVvdXQiLCJhYnJ1cHQiLCJzdG9wIiwidHJpZ2dlck5vZGUiLCJ1c2VNZW1vIiwiaXNWYWxpZEVsZW1lbnQiLCJjbG9uZUVsZW1lbnQiLCJvbkNsaWNrIiwiZXZlbnQiLCJ0cmlnZ2VyT25DbGljayIsInByb3BzIiwiZGVmYXVsdFByZXZlbnRlZCIsImhhbmRsZUhpZGUiLCJhcmd1bWVudHMiLCJzaG91bGRSZW5kZXJQYW5lbCIsIm1lcmdlZFN0eWxlIiwiT2JqZWN0IiwiYXNzaWduIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUNBQSxJQUFJQyxTQUFTLEdBQUksVUFBUSxTQUFLQSxTQUFTLElBQUssVUFBVUMsT0FBTyxFQUFFQyxVQUFVLEVBQUVDLENBQUMsRUFBRUMsU0FBUyxFQUFFO0VBQ3JGLFNBQVNDLEtBQUtBLENBQUNDLEtBQUssRUFBRTtJQUFFLE9BQU9BLEtBQUssWUFBWUgsQ0FBQyxHQUFHRyxLQUFLLEdBQUcsSUFBSUgsQ0FBQyxDQUFDLFVBQVVJLE9BQU8sRUFBRTtNQUFFQSxPQUFPLENBQUNELEtBQUssQ0FBQztJQUFFLENBQUMsQ0FBQztFQUFFO0VBQzNHLE9BQU8sS0FBS0gsQ0FBQyxLQUFLQSxDQUFDLEdBQUdLLE9BQU8sQ0FBQyxFQUFFLFVBQVVELE9BQU8sRUFBRUUsTUFBTSxFQUFFO0lBQ3ZELFNBQVNDLFNBQVNBLENBQUNKLEtBQUssRUFBRTtNQUFFLElBQUk7UUFBRUssSUFBSSxDQUFDUCxTQUFTLENBQUNRLElBQUksQ0FBQ04sS0FBSyxDQUFDLENBQUM7TUFBRSxDQUFDLENBQUMsT0FBT08sQ0FBQyxFQUFFO1FBQUVKLE1BQU0sQ0FBQ0ksQ0FBQyxDQUFDO01BQUU7SUFBRTtJQUMxRixTQUFTQyxRQUFRQSxDQUFDUixLQUFLLEVBQUU7TUFBRSxJQUFJO1FBQUVLLElBQUksQ0FBQ1AsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDRSxLQUFLLENBQUMsQ0FBQztNQUFFLENBQUMsQ0FBQyxPQUFPTyxDQUFDLEVBQUU7UUFBRUosTUFBTSxDQUFD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YztFQUV2RCxJQUFNa0QsV0FBVyxHQUFHLElBQUFYLGNBQU8sRUFBZ0I7SUFBQSxPQUFNWSxNQUFBLENBQUFDLE1BQUEsQ0FBQUQsTUFBQSxDQUFBQyxNQUFBLENBQUEsQ0FBQSxDQUFBLEVBQzNDakQsWUFBWSxJQUFJLENBQUEsQ0FBRyxDQUFBLEVBQ25CRixLQUFLLEtBQUttQixTQUFTLEdBQUc7TUFBRW5CLEtBQUssRUFBTEE7SUFBSyxDQUFFLEdBQUcsQ0FBQSxDQUFHLENBQUE7RUFBQSxDQUN6QyxFQUFFLENBQUNFLFlBQVksRUFBRUYsS0FBSyxDQUFDLENBQUM7RUFFMUIsSUFBQWMsZ0JBQVMsRUFBQyxZQUFLO0lBQ2IsT0FBTyxZQUFLO01BQ1ZNLGVBQWUsQ0FBQSxDQUFFO0lBQ25CLENBQUM7RUFDSCxDQUFDLEVBQUUsQ0FBQ0EsZUFBZSxDQUFDLENBQUM7RUFFckIsT0FBTztJQUNMUCxVQUFVLEVBQVZBLFVBQVU7SUFDVm1DLGlCQUFpQixFQUFqQkEsaUJBQWlCO0lBQ2pCWCxXQUFXLEVBQVhBLFdBQVc7SUFDWGYsWUFBWSxFQUFaQSxZQUFZO0lBQ1p3QixVQUFVLEVBQVZBLFVBQVU7SUFDVkcsV0FBVyxFQUFYQSxXQUFXO0lBQ1hqQyxVQUFVLEVBQVZBO0VDdERBLENEdUREO0FBQ0giLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL2xheW91dHMvdXNlT3ZlcmxheUZvcm0uanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0IHsgY2xvbmVFbGVtZW50LCBpc1ZhbGlkRWxlbWVudCwgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0Jztcbi8qKlxuICogU2hhcmVkIGhvb2sgdGhhdCBwb3dlcnMgYm90aCB7QGxpbmsgTW9kYWxGb3JtfSBhbmQge0BsaW5rIERyYXdlckZvcm19LlxuICpcbiAqIE1hbmFnZXMgb3Blbi9jbG9zZSBzdGF0ZSwgdHJpZ2dlciBlbGVtZW50IGNsb25pbmcsIGF1dG8tY2xvc2Ugd2l0aCBvcHRpb25hbFxuICogdGltZW91dCBhZnRlciBzdWJtaXQsIGFuZCBvdmVybGF5IHZpc2liaWxpdHkgbGlmZWN5Y2xlLlxuICpcbiAqIEB0eXBlUGFyYW0gVFZhbHVlcyAtIFRoZSBmb3JtIHZhbHVlcyB0eXBlLlxuICogQHBhcmFtIG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBBbiBvYmplY3Qgd2l0aCBgbWVyZ2VkT3BlbmAsIGB0cmlnZ2VyTm9kZWAsIGBoYW5kbGVGaW5pc2hgLCBgaGFuZGxlSGlkZWAsIGFuZCBtb3JlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlT3ZlcmxheUZvcm0oeyBvcGVuLCBvbk9wZW5DaGFuZ2UsIHRyaWdnZXIsIHN1Ym1pdFRpbWVvdXQsIGF1dG9DbG9zZSA9IHRydWUsIGRlc3Ryb3lPbkNsb3NlID0gdHJ1ZSwgd2lkdGgsIG9uRmluaXNoLCBvdmVybGF5U3R5bGUsIG9uT3ZlcmxheUhpZGUsIH0pIHtcbiAgICBjb25zdCBbaW5uZXJPcGVuLCBzZXRJbm5lck9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IGNsb3NlVGltZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3Qgb25GaW5pc2hSZWYgPSB1c2VSZWYob25GaW5pc2gpO1xuICAgIGNvbnN0IG1lcmdlZE9wZW4gPSBvcGVuICE9PSBudWxsICYmIG9wZW4gIT09IHZvaWQgMCA/IG9wZW4gOiBpbm5lck9wZW47XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgb25GaW5pc2hSZWYuY3VycmVudCA9IG9uRmluaXNoO1xuICAgIH0sIFtvbkZpbmlzaF0pO1xuICAgIGNvbnN0IGNoYW5nZU9wZW4gPSB1c2VDYWxsYmFjaygobmV4dE9wZW4pID0+IHtcbiAgICAgICAgaWYgKG9wZW4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgc2V0SW5uZXJPcGVuKG5leHRPcGVuKTtcbiAgICAgICAgfVxuICAgICAgICBvbk9wZW5DaGFuZ2UgPT09IG51bGwgfHwgb25PcGVuQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbk9wZW5DaGFuZ2UobmV4dE9wZW4pO1xuICAgIH0sIFtvcGVuLCBvbk9wZW5DaGFuZ2VdKTtcbiAgICBjb25zdCBjbGVhckNsb3NlVGltZXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIGlmICghY2xvc2VUaW1lclJlZi5jdXJyZW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjbGVhclRpbWVvdXQoY2xvc2VUaW1lclJlZi5jdXJyZW50KTtcbiAgICAgICAgY2xvc2VUaW1lclJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICB9LCBbXSk7XG4gICAgY29uc3QgaGFuZGxlRmluaXNoID0gdXNlQ2FsbGJhY2soKHZhbHVlcykgPT4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHlpZWxkICgoX2EgPSBvbkZpbmlzaFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChvbkZpbmlzaFJlZiwgdmFsdWVzKSk7XG4gICAgICAgIGlmIChhdXRvQ2xvc2UgJiYgcmVzdWx0ICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgY2xlYXJDbG9zZVRpbWVyKCk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHN1Ym1pdFRpbWVvdXQgPT09ICdudW1iZXInICYmIHN1Ym1pdFRpbWVvdXQgPiAwKSB7XG4gICAgICAgICAgICAgICAgY2xvc2VUaW1lclJlZi5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZU9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICBjbG9zZVRpbWVyUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgICAgICAgIH0sIHN1Ym1pdFRpbWVvdXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY2hhbmdlT3BlbihmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KSwgW2F1dG9DbG9zZSwgY2hhbmdlT3BlbiwgY2xlYXJDbG9zZVRpbWVyLCBzdWJtaXRUaW1lb3V0XSk7XG4gICAgY29uc3QgdHJpZ2dlck5vZGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgaWYgKCF0cmlnZ2VyIHx8ICFpc1ZhbGlkRWxlbWVudCh0cmlnZ2VyKSlcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICByZXR1cm4gY2xvbmVFbGVtZW50KHRyaWdnZXIsIHtcbiAgICAgICAgICAgIG9uQ2xpY2s6IChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICBjb25zdCB0cmlnZ2VyT25DbGljayA9IChfYSA9IHRyaWdnZXIucHJvcHMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5vbkNsaWNrO1xuICAgICAgICAgICAgICAgIHRyaWdnZXJPbkNsaWNrID09PSBudWxsIHx8IHRyaWdnZXJPbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0cmlnZ2VyT25DbGljayhldmVudCk7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjaGFuZ2VPcGVuKHRydWUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfSwgW2NoYW5nZU9wZW4sIHRyaWdnZXJdKTtcbiAgICBjb25zdCBoYW5kbGVIaWRlID0gdXNlQ2FsbGJhY2soKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgY2xlYXJDbG9zZVRpbWVyKCk7XG4gICAgICAgIG9uT3ZlcmxheUhpZGUgPT09IG51bGwgfHwgb25PdmVybGF5SGlkZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25PdmVybGF5SGlkZSguLi5hcmdzKTtcbiAgICAgICAgY2hhbmdlT3BlbihmYWxzZSk7XG4gICAgfSwgW2NoYW5nZU9wZW4sIGNsZWFyQ2xvc2VUaW1lciwgb25PdmVybGF5SGlkZV0pO1xuICAgIGNvbnN0IHNob3VsZFJlbmRlclBhbmVsID0gbWVyZ2VkT3BlbiB8fCAhZGVzdHJveU9uQ2xvc2U7XG4gICAgY29uc3QgbWVyZ2VkU3R5bGUgPSB1c2VNZW1vKCgpID0+IChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIChvdmVybGF5U3R5bGUgfHwge30pKSwgKHdpZHRoICE9PSB1bmRlZmluZWQgPyB7IHdpZHRoIH0gOiB7fSkpKSwgW292ZXJsYXlTdHlsZSwgd2lkdGhdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgY2xlYXJDbG9zZVRpbWVyKCk7XG4gICAgICAgIH07XG4gICAgfSwgW2NsZWFyQ2xvc2VUaW1lcl0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIG1lcmdlZE9wZW4sXG4gICAgICAgIHNob3VsZFJlbmRlclBhbmVsLFxuICAgICAgICB0cmlnZ2VyTm9kZSxcbiAgICAgICAgaGFuZGxlRmluaXNoLFxuICAgICAgICBoYW5kbGVIaWRlLFxuICAgICAgICBtZXJnZWRTdHlsZSxcbiAgICAgICAgY2hhbmdlT3BlbixcbiAgICB9O1xufSJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -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}
@@ -0,0 +1,59 @@
1
+ @use '../../../variable.scss' as *;
2
+ /* stylelint-disable selector-pseudo-class-no-unknown */
3
+
4
+ .proform__submitter {
5
+ display: flex;
6
+ gap: 12px;
7
+ margin-top: 16px;
8
+ }
9
+
10
+ .proform__modal-form,
11
+ .proform__drawer-form {
12
+ padding: 16px;
13
+ background: $color-white;
14
+ border: 1px solid $color-grey-deep;
15
+ border-radius: 12px;
16
+ }
17
+
18
+ .proform__modal-form-title,
19
+ .proform__drawer-form-title,
20
+ .proform__steps-form-title {
21
+ margin-bottom: 12px;
22
+ font-weight: 600;
23
+ font-size: 16px;
24
+ line-height: 24px;
25
+ }
26
+
27
+ .proform__steps-form-description {
28
+ margin-bottom: 12px;
29
+ color: $color-grey-midnight;
30
+ font-size: 14px;
31
+ }
32
+
33
+ .proform__steps-form-actions,
34
+ .proform__query-filter-actions {
35
+ display: flex;
36
+ gap: 8px;
37
+ margin-top: 16px;
38
+ }
39
+
40
+ .proform__query-filter-split {
41
+ padding-top: 16px;
42
+ border-top: 1px solid $color-grey-deep;
43
+ }
44
+
45
+ .proform__list {
46
+ display: flex;
47
+ flex-direction: column;
48
+ gap: 12px;
49
+ }
50
+
51
+ .proform__list-label {
52
+ font-weight: 600;
53
+ font-size: 14px;
54
+ }
55
+
56
+ .proform__list-row-actions {
57
+ display: flex;
58
+ gap: 8px;
59
+ }
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ require("./ProForm.module.css");
4
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL3N0eWxlL2luZGV4LnRzIl0sIm5hbWVzIjpbInJlcXVpcmUiXSwibWFwcGluZ3MiOiI7O0FBQ0FBLE9BQUEiLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL3N0eWxlL2Nzcy5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -0,0 +1 @@
1
+ import './ProForm.module.scss';
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ require("./ProForm.module.scss");
4
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL3N0eWxlL2luZGV4LnRzIl0sIm5hbWVzIjpbInJlcXVpcmUiXSwibWFwcGluZ3MiOiI7O0FBQ0FBLE9BQUEiLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL3N0eWxlL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -0,0 +1,72 @@
1
+ import type { MouseEvent, ReactNode } from 'react';
2
+ /** Shorthand for a generic key/value record. */
3
+ export type UnknownRecord = Record<string, unknown>;
4
+ /**
5
+ * Produces a deterministic, type-aware string key for deep comparison.
6
+ * Handles non-JSON-safe values (e.g. `undefined`, `symbol`, `function`) and circular references.
7
+ *
8
+ * @param value - The value to serialize.
9
+ * @returns A stable serialization key.
10
+ */
11
+ export declare const stableSerialize: (value: unknown) => string;
12
+ /**
13
+ * Renders a boolean value as localized "Yes" / "No" text for readonly mode.
14
+ *
15
+ * @param value - The field value.
16
+ * @returns The display string.
17
+ */
18
+ export declare const renderBooleanReadonly: (value: unknown) => string;
19
+ /**
20
+ * Renders a numeric value as its string representation, or a dash for empty values.
21
+ *
22
+ * @param value - The field value.
23
+ * @returns The display string.
24
+ */
25
+ export declare const renderNumericReadonly: (value: unknown) => string;
26
+ /**
27
+ * Renders a text value as-is, or a dash for empty values.
28
+ *
29
+ * @param value - The field value.
30
+ * @returns The display string.
31
+ */
32
+ export declare const renderTextReadonly: (value: unknown) => string;
33
+ /** Shape of an option item used by Select, Radio, and Checkbox fields. */
34
+ interface OptionItem {
35
+ key?: unknown;
36
+ value?: unknown;
37
+ label?: unknown;
38
+ }
39
+ /**
40
+ * Finds the display label for a given value within an options array.
41
+ *
42
+ * @param value - The current field value.
43
+ * @param options - The list of available options.
44
+ * @param valueKey - Which option property to match against: `'value'`, `'key'`, or `'both'`.
45
+ * @returns The matched option's label, or the raw value, or a dash placeholder.
46
+ */
47
+ export declare const findOptionLabel: (value: unknown, options: OptionItem[] | undefined, valueKey?: "value" | "key" | "both") => unknown;
48
+ /**
49
+ * Type guard that checks whether a submitter configuration is enabled
50
+ * (i.e. not `false`, `null`, or `undefined`).
51
+ *
52
+ * @param submitter - The submitter prop value.
53
+ * @returns `true` if the submitter config object is present.
54
+ */
55
+ export declare const isSubmitterEnabled: <T>(submitter: false | T | undefined) => submitter is T;
56
+ type IconProps = false | UnknownRecord | undefined;
57
+ /** Destructured button properties returned by {@link extractButtonProps}. */
58
+ interface ExtractedButtonProps {
59
+ onClick: ((event: MouseEvent<HTMLButtonElement>) => void) | undefined;
60
+ disabled: boolean;
61
+ children: ReactNode;
62
+ domProps: UnknownRecord;
63
+ }
64
+ /**
65
+ * Extracts well-known button properties (`onClick`, `disabled`, `children`)
66
+ * from an icon-props configuration object, returning the remainder as `domProps`.
67
+ *
68
+ * @param props - The icon/button props, or `false`/`undefined` to skip.
69
+ * @returns A normalized {@link ExtractedButtonProps} object.
70
+ */
71
+ export declare const extractButtonProps: (props: IconProps) => ExtractedButtonProps;
72
+ export {};
@@ -0,0 +1,213 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.stableSerialize = exports.renderTextReadonly = exports.renderNumericReadonly = exports.renderBooleanReadonly = exports.isSubmitterEnabled = exports.findOptionLabel = exports.extractButtonProps = void 0;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
10
+ var _constants = require("./constants");
11
+ var __rest = void 0 && (void 0).__rest || function (s, e) {
12
+ var t = {};
13
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
14
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
15
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
16
+ }
17
+ return t;
18
+ };
19
+ var getNextSeenId = function getNextSeenId(ctx) {
20
+ var current = ctx.nextId;
21
+ ctx.nextId += 1;
22
+ return current;
23
+ };
24
+ var sortObjectKeys = function sortObjectKeys(value) {
25
+ return Reflect.ownKeys(value).map(function (rawKey) {
26
+ var _a;
27
+ return {
28
+ rawKey: rawKey,
29
+ serializedKey: (0, _typeof2["default"])(rawKey) === 'symbol' ? "@@symbol:".concat(String((_a = rawKey.description) !== null && _a !== void 0 ? _a : rawKey)) : String(rawKey)
30
+ };
31
+ }).sort(function (a, b) {
32
+ return a.serializedKey.localeCompare(b.serializedKey);
33
+ });
34
+ };
35
+ var serializeNumber = function serializeNumber(value) {
36
+ if (Number.isNaN(value)) return 'number:NaN';
37
+ if (!Number.isFinite(value)) return "number:".concat(value > 0 ? 'Infinity' : '-Infinity');
38
+ return "number:".concat(String(value));
39
+ };
40
+ var serializeObject = function serializeObject(value, ctx) {
41
+ var _a, _b;
42
+ if (ctx.seen.has(value)) {
43
+ return "ref:".concat(ctx.seen.get(value));
44
+ }
45
+ var id = getNextSeenId(ctx);
46
+ ctx.seen.set(value, id);
47
+ if (Array.isArray(value)) {
48
+ return "array:[".concat(value.map(function (item) {
49
+ return serializeStableValue(item, ctx);
50
+ }).join(','), "]");
51
+ }
52
+ if (value instanceof Date) {
53
+ return "date:".concat(Number.isNaN(value.getTime()) ? 'Invalid Date' : value.toISOString());
54
+ }
55
+ if (value instanceof RegExp) {
56
+ return "regexp:".concat(value.toString());
57
+ }
58
+ if (value instanceof Set) {
59
+ var values = Array.from(value.values()).map(function (item) {
60
+ return serializeStableValue(item, ctx);
61
+ }).sort();
62
+ return "set:{".concat(values.join(','), "}");
63
+ }
64
+ if (value instanceof Map) {
65
+ var entries = Array.from(value.entries()).map(function (_ref) {
66
+ var _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
67
+ key = _ref2[0],
68
+ item = _ref2[1];
69
+ return {
70
+ key: serializeStableValue(key, ctx),
71
+ value: serializeStableValue(item, ctx)
72
+ };
73
+ }).sort(function (a, b) {
74
+ if (a.key === b.key) return a.value.localeCompare(b.value);
75
+ return a.key.localeCompare(b.key);
76
+ });
77
+ return "map:{".concat(entries.map(function (entry) {
78
+ return "".concat(entry.key, "->").concat(entry.value);
79
+ }).join(','), "}");
80
+ }
81
+ var constructorName = (_b = (_a = value.constructor) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : 'Object';
82
+ var keys = sortObjectKeys(value);
83
+ var serializedPairs = keys.map(function (_ref3) {
84
+ var rawKey = _ref3.rawKey,
85
+ serializedKey = _ref3.serializedKey;
86
+ var nextValue = value[rawKey];
87
+ return "".concat(serializedKey, ":").concat(serializeStableValue(nextValue, ctx));
88
+ });
89
+ return "object:".concat(constructorName, ":{").concat(serializedPairs.join(','), "}");
90
+ };
91
+ var serializeStableValue = function serializeStableValue(value, ctx) {
92
+ var _a;
93
+ if (value === null) return 'null';
94
+ switch ((0, _typeof2["default"])(value)) {
95
+ case 'undefined':
96
+ return 'undefined';
97
+ case 'string':
98
+ return "string:".concat(JSON.stringify(value));
99
+ case 'number':
100
+ return serializeNumber(value);
101
+ case 'boolean':
102
+ return "boolean:".concat(value ? '1' : '0');
103
+ case 'bigint':
104
+ return "bigint:".concat(String(value));
105
+ case 'symbol':
106
+ return "symbol:".concat(String((_a = value.description) !== null && _a !== void 0 ? _a : value));
107
+ case 'function':
108
+ {
109
+ var fn = value;
110
+ return "function:".concat(fn.name || 'anonymous', ":").concat(fn.length, ":").concat(String(fn));
111
+ }
112
+ case 'object':
113
+ return serializeObject(value, ctx);
114
+ default:
115
+ return "unknown:".concat(String(value));
116
+ }
117
+ };
118
+ /**
119
+ * Produces a deterministic, type-aware string key for deep comparison.
120
+ * Handles non-JSON-safe values (e.g. `undefined`, `symbol`, `function`) and circular references.
121
+ *
122
+ * @param value - The value to serialize.
123
+ * @returns A stable serialization key.
124
+ */
125
+ var stableSerialize = exports.stableSerialize = function stableSerialize(value) {
126
+ try {
127
+ return serializeStableValue(value, {
128
+ seen: new WeakMap(),
129
+ nextId: 0
130
+ });
131
+ } catch (error) {
132
+ var message = error instanceof Error ? error.message : String(error);
133
+ return "serialization-error:".concat(message);
134
+ }
135
+ };
136
+ /**
137
+ * Renders a boolean value as localized "Yes" / "No" text for readonly mode.
138
+ *
139
+ * @param value - The field value.
140
+ * @returns The display string.
141
+ */
142
+ var renderBooleanReadonly = exports.renderBooleanReadonly = function renderBooleanReadonly(value) {
143
+ return value ? _constants.DEFAULT_TEXT.yes : _constants.DEFAULT_TEXT.no;
144
+ };
145
+ /**
146
+ * Renders a numeric value as its string representation, or a dash for empty values.
147
+ *
148
+ * @param value - The field value.
149
+ * @returns The display string.
150
+ */
151
+ var renderNumericReadonly = exports.renderNumericReadonly = function renderNumericReadonly(value) {
152
+ return value == null || value === '' ? _constants.DEFAULT_TEXT.empty : String(value);
153
+ };
154
+ /**
155
+ * Renders a text value as-is, or a dash for empty values.
156
+ *
157
+ * @param value - The field value.
158
+ * @returns The display string.
159
+ */
160
+ var renderTextReadonly = exports.renderTextReadonly = function renderTextReadonly(value) {
161
+ return value != null && value !== '' ? String(value) : _constants.DEFAULT_TEXT.empty;
162
+ };
163
+ /**
164
+ * Finds the display label for a given value within an options array.
165
+ *
166
+ * @param value - The current field value.
167
+ * @param options - The list of available options.
168
+ * @param valueKey - Which option property to match against: `'value'`, `'key'`, or `'both'`.
169
+ * @returns The matched option's label, or the raw value, or a dash placeholder.
170
+ */
171
+ var findOptionLabel = exports.findOptionLabel = function findOptionLabel(value, options) {
172
+ var valueKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'value';
173
+ var _a, _b;
174
+ if (!Array.isArray(options)) return value !== null && value !== void 0 ? value : _constants.DEFAULT_TEXT.empty;
175
+ var matched = options.find(function (item) {
176
+ if (valueKey === 'both') {
177
+ return (item === null || item === void 0 ? void 0 : item.key) === value || (item === null || item === void 0 ? void 0 : item.value) === value;
178
+ }
179
+ return (item === null || item === void 0 ? void 0 : item[valueKey]) === value;
180
+ });
181
+ return (_b = (_a = matched === null || matched === void 0 ? void 0 : matched.label) !== null && _a !== void 0 ? _a : value) !== null && _b !== void 0 ? _b : _constants.DEFAULT_TEXT.empty;
182
+ };
183
+ /**
184
+ * Type guard that checks whether a submitter configuration is enabled
185
+ * (i.e. not `false`, `null`, or `undefined`).
186
+ *
187
+ * @param submitter - The submitter prop value.
188
+ * @returns `true` if the submitter config object is present.
189
+ */
190
+ var isSubmitterEnabled = exports.isSubmitterEnabled = function isSubmitterEnabled(submitter) {
191
+ return submitter !== false && submitter != null;
192
+ };
193
+ /**
194
+ * Extracts well-known button properties (`onClick`, `disabled`, `children`)
195
+ * from an icon-props configuration object, returning the remainder as `domProps`.
196
+ *
197
+ * @param props - The icon/button props, or `false`/`undefined` to skip.
198
+ * @returns A normalized {@link ExtractedButtonProps} object.
199
+ */
200
+ var extractButtonProps = exports.extractButtonProps = function extractButtonProps(props) {
201
+ var btnProps = props && (0, _typeof2["default"])(props) === 'object' ? props : {};
202
+ var onClick = btnProps.onClick,
203
+ disabled = btnProps.disabled,
204
+ children = btnProps.children,
205
+ domProps = __rest(btnProps, ["onClick", "disabled", "children"]);
206
+ return {
207
+ onClick: onClick,
208
+ disabled: !!disabled,
209
+ children: children,
210
+ domProps: domProps
211
+ };
212
+ };
213
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS91dGlscy50cyIsImNvbXBvbmVudHMvUHJvRm9ybS91dGlscy5qcyJdLCJuYW1lcyI6WyJfY29uc3RhbnRzIiwicmVxdWlyZSIsIl9fcmVzdCIsInMiLCJlIiwidCIsInAiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpbmRleE9mIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiaSIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiZ2V0TmV4dFNlZW5JZCIsImN0eCIsImN1cnJlbnQiLCJuZXh0SWQiLCJzb3J0T2JqZWN0S2V5cyIsInZhbHVlIiwiUmVmbGVjdCIsIm93bktleXMiLCJtYXAiLCJyYXdLZXkiLCJfYSIsInNlcmlhbGl6ZWRLZXkiLCJfdHlwZW9mMiIsImNvbmNhdCIsIlN0cmluZyIsImRlc2NyaXB0aW9uIiwic29ydCIsImEiLCJiIiwibG9jYWxlQ29tcGFyZSIsInNlcmlhbGl6ZU51bWJlciIsIk51bWJlciIsImlzTmFOIiwiaXNGaW5pdGUiLCJzZXJpYWxpemVPYmplY3QiLCJfYiIsInNlZW4iLCJoYXMiLCJnZXQiLCJpZCIsInNldCIsIkFycmF5IiwiaXNBcnJheSIsIml0ZW0iLCJzZXJpYWxpemVTdGFibGVWYWx1ZSIsImpvaW4iLCJEYXRlIiwiZ2V0VGltZSIsInRvSVNPU3RyaW5nIiwiUmVnRXhwIiwidG9TdHJpbmciLCJTZXQiLCJ2YWx1ZXMiLCJmcm9tIiwiTWFwIiwiZW50cmllcyIsIl9yZWYiLCJfcmVmMiIsIl9zbGljZWRUb0FycmF5MiIsImtleSIsImVudHJ5IiwiY29uc3RydWN0b3JOYW1lIiwiY29uc3RydWN0b3IiLCJuYW1lIiwia2V5cyIsInNlcmlhbGl6ZWRQYWlycyIsIl9yZWYzIiwibmV4dFZhbHVlIiwiSlNPTiIsInN0cmluZ2lmeSIsImZuIiwic3RhYmxlU2VyaWFsaXplIiwiZXhwb3J0cyIsIldlYWtNYXAiLCJlcnJvciIsIm1lc3NhZ2UiLCJFcnJvciIsInJlbmRlckJvb2xlYW5SZWFkb25seSIsIkRFRkFVTFRfVEVYVCIsInllcyIsIm5vIiwicmVuZGVyTnVtZXJpY1JlYWRvbmx5IiwiZW1wdHkiLCJyZW5kZXJUZXh0UmVhZG9ubHkiLCJmaW5kT3B0aW9uTGFiZWwiLCJvcHRpb25zIiwidmFsdWVLZXkiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJtYXRjaGVkIiwiZmluZCIsImxhYmVsIiwiaXNTdWJtaXR0ZXJFbmFibGVkIiwic3VibWl0dGVyIiwiZXh0cmFjdEJ1dHRvblByb3BzIiwicHJvcHMiLCJidG5Qcm9wcyIsIm9uQ2xpY2siLCJkaXNhYmxlZCIsImNoaWxkcmVuIiwiZG9tUHJvcHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUNBLElBQUFBLFVBQUEsR0FBQUMsT0FBQTtBQ0RBLElBQUlDLE1BQU0sR0FBSSxVQUFRLFNBQUtBLE1BQU0sSUFBSyxVQUFVQyxDQUFDLEVBQUVDLENBQUMsRUFBRTtFQUNsRCxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0VBQ1YsS0FBSyxJQUFJQyxDQUFDLElBQUlILENBQUMsRUFBRSxJQUFJSSxNQUFNLENBQUNDLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUNQLENBQUMsRUFBRUcsQ0FBQyxDQUFDLElBQUlGLENBQUMsQ0FBQ08sT0FBTyxDQUFDTCxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQy9FRCxDQUFDLENBQUNDLENBQUMsQ0FBQyxHQUFHSCxDQUFDLENBQUNHLENBQUMsQ0FBQztFQUNmLElBQUlILENBQUMsSUFBSSxJQUFJLElBQUksT0FBT0ksTUFBTSxDQUFDSyxxQkFBcUIsS0FBSyxVQUFVLEVBQy9ELEtBQUssSUFBSUMsQ0FBQyxHQUFHLENBQUMsRUFBRVAsQ0FBQyxHQUFHQyxNQUFNLENBQUNLLHFCQUFxQixDQUFDVCxDQUFDLENBQUMsRUFBRVUsQ0FBQyxHQUFHUCxDQUFDLENBQUNRLE1BQU0sRUFBRUQsQ0FBQyxFQUFFLEVBQUU7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LEVBTE4sQ0FBQSxTQUFBLEVBQUEsVUFBQSxFQUFBLFVBQUEsQ0FLTCxDQUFXO0VBRVosT0FBTztJQUNMQyxPQUFPLEVBQUVBLE9BQTBDO0lBQ25EQyxRQUFRLEVBQUUsQ0FBQyxDQUFDQSxRQUFRO0lBQ3BCQyxRQUFRLEVBQUVBLFFBQXFCO0lBQy9CQyxRQUFRLEVBQVJBO0VDNUNBLENENkNEO0FBQ0gsQ0FBQyIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vdXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsInZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IERFRkFVTFRfVEVYVCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmNvbnN0IGdldE5leHRTZWVuSWQgPSAoY3R4KSA9PiB7XG4gICAgY29uc3QgY3VycmVudCA9IGN0eC5uZXh0SWQ7XG4gICAgY3R4Lm5leHRJZCArPSAxO1xuICAgIHJldHVybiBjdXJyZW50O1xufTtcbmNvbnN0IHNvcnRPYmplY3RLZXlzID0gKHZhbHVlKSA9PiB7XG4gICAgcmV0dXJuIFJlZmxlY3Qub3duS2V5cyh2YWx1ZSlcbiAgICAgICAgLm1hcCgocmF3S2V5KSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgcmV0dXJuICh7XG4gICAgICAgICAgICByYXdLZXksXG4gICAgICAgICAgICBzZXJpYWxpemVkS2V5OiB0eXBlb2YgcmF3S2V5ID09PSAnc3ltYm9sJ1xuICAgICAgICAgICAgICAgID8gYEBAc3ltYm9sOiR7U3RyaW5nKChfYSA9IHJhd0tleS5kZXNjcmlwdGlvbikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogcmF3S2V5KX1gXG4gICAgICAgICAgICAgICAgOiBTdHJpbmcocmF3S2V5KSxcbiAgICAgICAgfSk7XG4gICAgfSlcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuc2VyaWFsaXplZEtleS5sb2NhbGVDb21wYXJlKGIuc2VyaWFsaXplZEtleSkpO1xufTtcbmNvbnN0IHNlcmlhbGl6ZU51bWJlciA9ICh2YWx1ZSkgPT4ge1xuICAgIGlmIChOdW1iZXIuaXNOYU4odmFsdWUpKVxuICAgICAgICByZXR1cm4gJ251bWJlcjpOYU4nO1xuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKHZhbHVlKSlcbiAgICAgICAgcmV0dXJuIGBudW1iZXI6JHt2YWx1ZSA+IDAgPyAnSW5maW5pdHknIDogJy1JbmZpbml0eSd9YDtcbiAgICByZXR1cm4gYG51bWJlcjoke1N0cmluZyh2YWx1ZSl9YDtcbn07XG5jb25zdCBzZXJpYWxpemVPYmplY3QgPSAodmFsdWUsIGN0eCkgPT4ge1xuICAgIHZhciBfYSwgX2I7XG4gICAgaWYgKGN0eC5zZWVuLmhhcyh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGByZWY6JHtjdHguc2Vlbi5nZXQodmFsdWUpfWA7XG4gICAgfVxuICAgIGNvbnN0IGlkID0gZ2V0TmV4dFNlZW5JZChjdHgpO1xuICAgIGN0eC5zZWVuLnNldCh2YWx1ZSwgaWQpO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gYGFycmF5Olske3ZhbHVlLm1hcChpdGVtID0+IHNlcmlhbGl6ZVN0YWJsZVZhbHVlKGl0ZW0sIGN0eCkpLmpvaW4oJywnKX1dYDtcbiAgICB9XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICByZXR1cm4gYGRhdGU6JHtOdW1iZXIuaXNOYU4odmFsdWUuZ2V0VGltZSgpKSA/ICdJbnZhbGlkIERhdGUnIDogdmFsdWUudG9JU09TdHJpbmcoKX1gO1xuICAgIH1cbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgICAgcmV0dXJuIGByZWdleHA6JHt2YWx1ZS50b1N0cmluZygpfWA7XG4gICAgfVxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFNldCkge1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSBBcnJheS5mcm9tKHZhbHVlLnZhbHVlcygpKVxuICAgICAgICAgICAgLm1hcChpdGVtID0+IHNlcmlhbGl6ZVN0YWJsZVZhbHVlKGl0ZW0sIGN0eCkpXG4gICAgICAgICAgICAuc29ydCgpO1xuICAgICAgICByZXR1cm4gYHNldDp7JHt2YWx1ZXMuam9pbignLCcpfX1gO1xuICAgIH1cbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBNYXApIHtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IEFycmF5LmZyb20odmFsdWUuZW50cmllcygpKVxuICAgICAgICAgICAgLm1hcCgoW2tleSwgaXRlbV0pID0+ICh7XG4gICAgICAgICAgICBrZXk6IHNlcmlhbGl6ZVN0YWJsZVZhbHVlKGtleSwgY3R4KSxcbiAgICAgICAgICAgIHZhbHVlOiBzZXJpYWxpemVTdGFibGVWYWx1ZShpdGVtLCBjdHgpLFxuICAgICAgICB9KSlcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICBpZiAoYS5rZXkgPT09IGIua2V5KVxuICAgICAgICAgICAgICAgIHJldHVybiBhLnZhbHVlLmxvY2FsZUNvbXBhcmUoYi52YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gYS5rZXkubG9jYWxlQ29tcGFyZShiLmtleSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYG1hcDp7JHtlbnRyaWVzLm1hcChlbnRyeSA9PiBgJHtlbnRyeS5rZXl9LT4ke2VudHJ5LnZhbHVlfWApLmpvaW4oJywnKX19YDtcbiAgICB9XG4gICAgY29uc3QgY29uc3RydWN0b3JOYW1lID0gKF9iID0gKF9hID0gdmFsdWUuY29uc3RydWN0b3IpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5uYW1lKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnT2JqZWN0JztcbiAgICBjb25zdCBrZXlzID0gc29ydE9iamVjdEtleXModmFsdWUpO1xuICAgIGNvbnN0IHNlcmlhbGl6ZWRQYWlycyA9IGtleXMubWFwKCh7IHJhd0tleSwgc2VyaWFsaXplZEtleSB9KSA9PiB7XG4gICAgICAgIGNvbnN0IG5leHRWYWx1ZSA9IHZhbHVlW3Jhd0tleV07XG4gICAgICAgIHJldHVybiBgJHtzZXJpYWxpemVkS2V5fToke3NlcmlhbGl6ZVN0YWJsZVZhbHVlKG5leHRWYWx1ZSwgY3R4KX1gO1xuICAgIH0pO1xuICAgIHJldHVybiBgb2JqZWN0OiR7Y29uc3RydWN0b3JOYW1lfTp7JHtzZXJpYWxpemVkUGFpcnMuam9pbignLCcpfX1gO1xufTtcbmNvbnN0IHNlcmlhbGl6ZVN0YWJsZVZhbHVlID0gKHZhbHVlLCBjdHgpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKHZhbHVlID09PSBudWxsKVxuICAgICAgICByZXR1cm4gJ251bGwnO1xuICAgIHN3aXRjaCAodHlwZW9mIHZhbHVlKSB7XG4gICAgICAgIGNhc2UgJ3VuZGVmaW5lZCc6XG4gICAgICAgICAgICByZXR1cm4gJ3VuZGVmaW5lZCc7XG4gICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICByZXR1cm4gYHN0cmluZzoke0pTT04uc3RyaW5naWZ5KHZhbHVlKX1gO1xuICAgICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZU51bWJlcih2YWx1ZSk7XG4gICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgICAgcmV0dXJuIGBib29sZWFuOiR7dmFsdWUgPyAnMScgOiAnMCd9YDtcbiAgICAgICAgY2FzZSAnYmlnaW50JzpcbiAgICAgICAgICAgIHJldHVybiBgYmlnaW50OiR7U3RyaW5nKHZhbHVlKX1gO1xuICAgICAgICBjYXNlICdzeW1ib2wnOlxuICAgICAgICAgICAgcmV0dXJuIGBzeW1ib2w6JHtTdHJpbmcoKF9hID0gdmFsdWUuZGVzY3JpcHRpb24pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHZhbHVlKX1gO1xuICAgICAgICBjYXNlICdmdW5jdGlvbic6IHtcbiAgICAgICAgICAgIGNvbnN0IGZuID0gdmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gYGZ1bmN0aW9uOiR7Zm4ubmFtZSB8fCAnYW5vbnltb3VzJ306JHtmbi5sZW5ndGh9OiR7U3RyaW5nKGZuKX1gO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICByZXR1cm4gc2VyaWFsaXplT2JqZWN0KHZhbHVlLCBjdHgpO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGB1bmtub3duOiR7U3RyaW5nKHZhbHVlKX1gO1xuICAgIH1cbn07XG4vKipcbiAqIFByb2R1Y2VzIGEgZGV0ZXJtaW5pc3RpYywgdHlwZS1hd2FyZSBzdHJpbmcga2V5IGZvciBkZWVwIGNvbXBhcmlzb24uXG4gKiBIYW5kbGVzIG5vbi1KU09OLXNhZmUgdmFsdWVzIChlLmcuIGB1bmRlZmluZWRgLCBgc3ltYm9sYCwgYGZ1bmN0aW9uYCkgYW5kIGNpcmN1bGFyIHJlZmVyZW5jZXMuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHNlcmlhbGl6ZS5cbiAqIEByZXR1cm5zIEEgc3RhYmxlIHNlcmlhbGl6YXRpb24ga2V5LlxuICovXG5leHBvcnQgY29uc3Qgc3RhYmxlU2VyaWFsaXplID0gKHZhbHVlKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZVN0YWJsZVZhbHVlKHZhbHVlLCB7IHNlZW46IG5ldyBXZWFrTWFwKCksIG5leHRJZDogMCB9KTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcik7XG4gICAgICAgIHJldHVybiBgc2VyaWFsaXphdGlvbi1lcnJvcjoke21lc3NhZ2V9YDtcbiAgICB9XG59O1xuLyoqXG4gKiBSZW5kZXJzIGEgYm9vbGVhbiB2YWx1ZSBhcyBsb2NhbGl6ZWQgXCJZZXNcIiAvIFwiTm9cIiB0ZXh0IGZvciByZWFkb25seSBtb2RlLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBmaWVsZCB2YWx1ZS5cbiAqIEByZXR1cm5zIFRoZSBkaXNwbGF5IHN0cmluZy5cbiAqL1xuZXhwb3J0IGNvbnN0IHJlbmRlckJvb2xlYW5SZWFkb25seSA9ICh2YWx1ZSkgPT4gdmFsdWUgPyBERUZBVUxUX1RFWFQueWVzIDogREVGQVVMVF9URVhULm5vO1xuLyoqXG4gKiBSZW5kZXJzIGEgbnVtZXJpYyB2YWx1ZSBhcyBpdHMgc3RyaW5nIHJlcHJlc2VudGF0aW9uLCBvciBhIGRhc2ggZm9yIGVtcHR5IHZhbHVlcy5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgZmllbGQgdmFsdWUuXG4gKiBAcmV0dXJucyBUaGUgZGlzcGxheSBzdHJpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCByZW5kZXJOdW1lcmljUmVhZG9ubHkgPSAodmFsdWUpID0+IHZhbHVlID09IG51bGwgfHwgdmFsdWUgPT09ICcnID8gREVGQVVMVF9URVhULmVtcHR5IDogU3RyaW5nKHZhbHVlKTtcbi8qKlxuICogUmVuZGVycyBhIHRleHQgdmFsdWUgYXMtaXMsIG9yIGEgZGFzaCBmb3IgZW1wdHkgdmFsdWVzLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBmaWVsZCB2YWx1ZS5cbiAqIEByZXR1cm5zIFRoZSBkaXNwbGF5IHN0cmluZy5cbiAqL1xuZXhwb3J0IGNvbnN0IHJlbmRlclRleHRSZWFkb25seSA9ICh2YWx1ZSkgPT4gdmFsdWUgIT0gbnVsbCAmJiB2YWx1ZSAhPT0gJycgPyBTdHJpbmcodmFsdWUpIDogREVGQVVMVF9URVhULmVtcHR5O1xuLyoqXG4gKiBGaW5kcyB0aGUgZGlzcGxheSBsYWJlbCBmb3IgYSBnaXZlbiB2YWx1ZSB3aXRoaW4gYW4gb3B0aW9ucyBhcnJheS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgY3VycmVudCBmaWVsZCB2YWx1ZS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIGxpc3Qgb2YgYXZhaWxhYmxlIG9wdGlvbnMuXG4gKiBAcGFyYW0gdmFsdWVLZXkgLSBXaGljaCBvcHRpb24gcHJvcGVydHkgdG8gbWF0Y2ggYWdhaW5zdDogYCd2YWx1ZSdgLCBgJ2tleSdgLCBvciBgJ2JvdGgnYC5cbiAqIEByZXR1cm5zIFRoZSBtYXRjaGVkIG9wdGlvbidzIGxhYmVsLCBvciB0aGUgcmF3IHZhbHVlLCBvciBhIGRhc2ggcGxhY2Vob2xkZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBmaW5kT3B0aW9uTGFiZWwgPSAodmFsdWUsIG9wdGlvbnMsIHZhbHVlS2V5ID0gJ3ZhbHVlJykgPT4ge1xuICAgIHZhciBfYSwgX2I7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKVxuICAgICAgICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHZvaWQgMCA/IHZhbHVlIDogREVGQVVMVF9URVhULmVtcHR5O1xuICAgIGNvbnN0IG1hdGNoZWQgPSBvcHRpb25zLmZpbmQoKGl0ZW0pID0+IHtcbiAgICAgICAgaWYgKHZhbHVlS2V5ID09PSAnYm90aCcpIHtcbiAgICAgICAgICAgIHJldHVybiAoaXRlbSA9PT0gbnVsbCB8fCBpdGVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBpdGVtLmtleSkgPT09IHZhbHVlIHx8IChpdGVtID09PSBudWxsIHx8IGl0ZW0gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGl0ZW0udmFsdWUpID09PSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKGl0ZW0gPT09IG51bGwgfHwgaXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogaXRlbVt2YWx1ZUtleV0pID09PSB2YWx1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gKF9iID0gKF9hID0gbWF0Y2hlZCA9PT0gbnVsbCB8fCBtYXRjaGVkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBtYXRjaGVkLmxhYmVsKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB2YWx1ZSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogREVGQVVMVF9URVhULmVtcHR5O1xufTtcbi8qKlxuICogVHlwZSBndWFyZCB0aGF0IGNoZWNrcyB3aGV0aGVyIGEgc3VibWl0dGVyIGNvbmZpZ3VyYXRpb24gaXMgZW5hYmxlZFxuICogKGkuZS4gbm90IGBmYWxzZWAsIGBudWxsYCwgb3IgYHVuZGVmaW5lZGApLlxuICpcbiAqIEBwYXJhbSBzdWJtaXR0ZXIgLSBUaGUgc3VibWl0dGVyIHByb3AgdmFsdWUuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHN1Ym1pdHRlciBjb25maWcgb2JqZWN0IGlzIHByZXNlbnQuXG4gKi9cbmV4cG9ydCBjb25zdCBpc1N1Ym1pdHRlckVuYWJsZWQgPSAoc3VibWl0dGVyKSA9PiBzdWJtaXR0ZXIgIT09IGZhbHNlICYmIHN1Ym1pdHRlciAhPSBudWxsO1xuLyoqXG4gKiBFeHRyYWN0cyB3ZWxsLWtub3duIGJ1dHRvbiBwcm9wZXJ0aWVzIChgb25DbGlja2AsIGBkaXNhYmxlZGAsIGBjaGlsZHJlbmApXG4gKiBmcm9tIGFuIGljb24tcHJvcHMgY29uZmlndXJhdGlvbiBvYmplY3QsIHJldHVybmluZyB0aGUgcmVtYWluZGVyIGFzIGBkb21Qcm9wc2AuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gVGhlIGljb24vYnV0dG9uIHByb3BzLCBvciBgZmFsc2VgL2B1bmRlZmluZWRgIHRvIHNraXAuXG4gKiBAcmV0dXJucyBBIG5vcm1hbGl6ZWQge0BsaW5rIEV4dHJhY3RlZEJ1dHRvblByb3BzfSBvYmplY3QuXG4gKi9cbmV4cG9ydCBjb25zdCBleHRyYWN0QnV0dG9uUHJvcHMgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCBidG5Qcm9wcyA9IHByb3BzICYmIHR5cGVvZiBwcm9wcyA9PT0gJ29iamVjdCcgPyBwcm9wcyA6IHt9O1xuICAgIGNvbnN0IHsgb25DbGljaywgZGlzYWJsZWQsIGNoaWxkcmVuIH0gPSBidG5Qcm9wcywgZG9tUHJvcHMgPSBfX3Jlc3QoYnRuUHJvcHMsIFtcIm9uQ2xpY2tcIiwgXCJkaXNhYmxlZFwiLCBcImNoaWxkcmVuXCJdKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBvbkNsaWNrOiBvbkNsaWNrLFxuICAgICAgICBkaXNhYmxlZDogISFkaXNhYmxlZCxcbiAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuLFxuICAgICAgICBkb21Qcm9wcyxcbiAgICB9O1xufTsiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9