@1money/react-ui 1.16.0 → 1.17.1-alpha.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 (274) 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 +140 -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/useLatest/index.d.ts +9 -0
  118. package/es/components/useLatest/index.js +15 -0
  119. package/es/components/useLayoutEffect/index.d.ts +11 -0
  120. package/es/components/useLayoutEffect/index.js +17 -0
  121. package/es/components/useLayoutState/index.d.ts +13 -0
  122. package/es/components/useLayoutState/index.js +71 -0
  123. package/es/components/useMemoizedFn/index.d.ts +12 -0
  124. package/es/components/useMemoizedFn/index.js +27 -0
  125. package/es/components/usePrevious/index.d.ts +11 -0
  126. package/es/components/usePrevious/index.js +19 -0
  127. package/es/components/useSafeState/index.d.ts +12 -0
  128. package/es/components/useSafeState/index.js +24 -0
  129. package/es/components/useSyncState/index.d.ts +14 -0
  130. package/es/components/useSyncState/index.js +37 -0
  131. package/es/components/useUpdateEffect/index.d.ts +9 -0
  132. package/es/components/useUpdateEffect/index.js +19 -0
  133. package/es/index.css +1 -1
  134. package/es/index.d.ts +21 -2
  135. package/es/index.js +19 -1
  136. package/jest.setup.d.ts +1 -0
  137. package/jest.setup.ts +1 -0
  138. package/lib/components/CheckboxGroup/CheckboxGroup.d.ts +3 -3
  139. package/lib/components/CheckboxGroup/CheckboxGroup.js +92 -89
  140. package/lib/components/CheckboxGroup/interface.d.ts +21 -15
  141. package/lib/components/CheckboxGroup/style/CheckboxGroup.scss +0 -7
  142. package/lib/components/Form/Form.d.ts +29 -0
  143. package/lib/components/Form/Form.js +199 -0
  144. package/lib/components/Form/FormItem.d.ts +4 -0
  145. package/lib/components/Form/FormItem.js +176 -0
  146. package/lib/components/Form/FormItemContent.d.ts +18 -0
  147. package/lib/components/Form/FormItemContent.js +156 -0
  148. package/lib/components/Form/constants.d.ts +46 -0
  149. package/lib/components/Form/constants.js +71 -0
  150. package/lib/components/Form/helper.d.ts +120 -0
  151. package/lib/components/Form/helper.js +290 -0
  152. package/lib/components/Form/index.d.ts +20 -0
  153. package/lib/components/Form/index.js +45 -0
  154. package/lib/components/Form/interface.d.ts +238 -0
  155. package/lib/components/Form/interface.js +6 -0
  156. package/lib/components/Form/style/Form.css +1 -0
  157. package/lib/components/Form/style/Form.scss +167 -0
  158. package/lib/components/Form/style/css.js +4 -0
  159. package/lib/components/Form/style/index.d.ts +1 -0
  160. package/lib/components/Form/style/index.js +4 -0
  161. package/lib/components/Form/useFormItemContext.d.ts +32 -0
  162. package/lib/components/Form/useFormItemContext.js +62 -0
  163. package/lib/components/Form/useFormItemWatch.d.ts +51 -0
  164. package/lib/components/Form/useFormItemWatch.js +76 -0
  165. package/lib/components/Form/useValidationTrigger.d.ts +40 -0
  166. package/lib/components/Form/useValidationTrigger.js +81 -0
  167. package/lib/components/Input/Input.js +71 -73
  168. package/lib/components/Input/interface.d.ts +9 -9
  169. package/lib/components/InputAmount/InputAmount.js +230 -278
  170. package/lib/components/InputAmount/helper.d.ts +46 -0
  171. package/lib/components/InputAmount/helper.js +122 -0
  172. package/lib/components/ProForm/ProForm.d.ts +33 -0
  173. package/lib/components/ProForm/ProForm.js +216 -0
  174. package/lib/components/ProForm/ProFormDependency.d.ts +12 -0
  175. package/lib/components/ProForm/ProFormDependency.js +67 -0
  176. package/lib/components/ProForm/ProFormList.d.ts +19 -0
  177. package/lib/components/ProForm/ProFormList.js +355 -0
  178. package/lib/components/ProForm/Submitter.d.ts +21 -0
  179. package/lib/components/ProForm/Submitter.js +83 -0
  180. package/lib/components/ProForm/constants.d.ts +34 -0
  181. package/lib/components/ProForm/constants.js +46 -0
  182. package/lib/components/ProForm/fields/ProFormCheckbox.d.ts +6 -0
  183. package/lib/components/ProForm/fields/ProFormCheckbox.js +18 -0
  184. package/lib/components/ProForm/fields/ProFormCheckboxGroup.d.ts +6 -0
  185. package/lib/components/ProForm/fields/ProFormCheckboxGroup.js +53 -0
  186. package/lib/components/ProForm/fields/ProFormDigit.d.ts +6 -0
  187. package/lib/components/ProForm/fields/ProFormDigit.js +22 -0
  188. package/lib/components/ProForm/fields/ProFormMoney.d.ts +6 -0
  189. package/lib/components/ProForm/fields/ProFormMoney.js +17 -0
  190. package/lib/components/ProForm/fields/ProFormMultiSelect.d.ts +6 -0
  191. package/lib/components/ProForm/fields/ProFormMultiSelect.js +34 -0
  192. package/lib/components/ProForm/fields/ProFormPassword.d.ts +6 -0
  193. package/lib/components/ProForm/fields/ProFormPassword.js +23 -0
  194. package/lib/components/ProForm/fields/ProFormRadio.d.ts +6 -0
  195. package/lib/components/ProForm/fields/ProFormRadio.js +20 -0
  196. package/lib/components/ProForm/fields/ProFormSelect.d.ts +6 -0
  197. package/lib/components/ProForm/fields/ProFormSelect.js +20 -0
  198. package/lib/components/ProForm/fields/ProFormSwitch.d.ts +6 -0
  199. package/lib/components/ProForm/fields/ProFormSwitch.js +18 -0
  200. package/lib/components/ProForm/fields/ProFormText.d.ts +6 -0
  201. package/lib/components/ProForm/fields/ProFormText.js +22 -0
  202. package/lib/components/ProForm/fields/ProFormTextArea.d.ts +6 -0
  203. package/lib/components/ProForm/fields/ProFormTextArea.js +23 -0
  204. package/lib/components/ProForm/fields/createProFormField.d.ts +43 -0
  205. package/lib/components/ProForm/fields/createProFormField.js +208 -0
  206. package/lib/components/ProForm/fields/index.d.ts +12 -0
  207. package/lib/components/ProForm/fields/index.js +90 -0
  208. package/lib/components/ProForm/index.d.ts +7 -0
  209. package/lib/components/ProForm/index.js +73 -0
  210. package/lib/components/ProForm/interface.d.ts +306 -0
  211. package/lib/components/ProForm/interface.js +6 -0
  212. package/lib/components/ProForm/layouts/DrawerForm.d.ts +16 -0
  213. package/lib/components/ProForm/layouts/DrawerForm.js +86 -0
  214. package/lib/components/ProForm/layouts/ModalForm.d.ts +16 -0
  215. package/lib/components/ProForm/layouts/ModalForm.js +96 -0
  216. package/lib/components/ProForm/layouts/QueryFilter.d.ts +21 -0
  217. package/lib/components/ProForm/layouts/QueryFilter.js +139 -0
  218. package/lib/components/ProForm/layouts/StepsForm.d.ts +13 -0
  219. package/lib/components/ProForm/layouts/StepsForm.js +302 -0
  220. package/lib/components/ProForm/layouts/index.d.ts +4 -0
  221. package/lib/components/ProForm/layouts/index.js +40 -0
  222. package/lib/components/ProForm/layouts/useOverlayForm.d.ts +53 -0
  223. package/lib/components/ProForm/layouts/useOverlayForm.js +147 -0
  224. package/lib/components/ProForm/style/ProForm.module.css +1 -0
  225. package/lib/components/ProForm/style/ProForm.module.scss +59 -0
  226. package/lib/components/ProForm/style/css.js +4 -0
  227. package/lib/components/ProForm/style/index.d.ts +1 -0
  228. package/lib/components/ProForm/style/index.js +4 -0
  229. package/lib/components/ProForm/utils.d.ts +72 -0
  230. package/lib/components/ProForm/utils.js +213 -0
  231. package/lib/components/RadioGroup/RadioGroup.js +45 -22
  232. package/lib/components/RadioGroup/interface.d.ts +3 -1
  233. package/lib/components/Select/Select.d.ts +1 -1
  234. package/lib/components/Select/Select.js +114 -107
  235. package/lib/components/Select/constants.d.ts +18 -0
  236. package/lib/components/Select/constants.js +25 -0
  237. package/lib/components/Sidebar/Sidebar.js +21 -23
  238. package/lib/components/Sidebar/SidebarLogo.d.ts +7 -0
  239. package/lib/components/Sidebar/SidebarLogo.js +39 -0
  240. package/lib/components/Sidebar/SimplySidebar.d.ts +2 -2
  241. package/lib/components/Sidebar/SimplySidebar.js +17 -21
  242. package/lib/components/Sidebar/Stepper.js +14 -14
  243. package/lib/components/Sidebar/constants.d.ts +16 -0
  244. package/lib/components/Sidebar/constants.js +23 -0
  245. package/lib/components/Sidebar/style/Stepper.css +1 -1
  246. package/lib/components/Sidebar/style/Stepper.scss +11 -1
  247. package/lib/components/Switch/Switch.js +27 -24
  248. package/lib/components/Switch/interface.d.ts +9 -4
  249. package/lib/components/useControlledState/index.d.ts +14 -0
  250. package/lib/components/useControlledState/index.js +39 -0
  251. package/lib/components/useEventCallback/index.d.ts +11 -0
  252. package/lib/components/useEventCallback/index.js +24 -0
  253. package/lib/components/useLatest/index.d.ts +9 -0
  254. package/lib/components/useLatest/index.js +21 -0
  255. package/lib/components/useLayoutEffect/index.d.ts +11 -0
  256. package/lib/components/useLayoutEffect/index.js +23 -0
  257. package/lib/components/useLayoutState/index.d.ts +13 -0
  258. package/lib/components/useLayoutState/index.js +79 -0
  259. package/lib/components/useMemoizedFn/index.d.ts +12 -0
  260. package/lib/components/useMemoizedFn/index.js +33 -0
  261. package/lib/components/usePrevious/index.d.ts +11 -0
  262. package/lib/components/usePrevious/index.js +25 -0
  263. package/lib/components/useSafeState/index.d.ts +12 -0
  264. package/lib/components/useSafeState/index.js +31 -0
  265. package/lib/components/useSyncState/index.d.ts +14 -0
  266. package/lib/components/useSyncState/index.js +44 -0
  267. package/lib/components/useUpdateEffect/index.d.ts +9 -0
  268. package/lib/components/useUpdateEffect/index.js +25 -0
  269. package/lib/index.css +1 -1
  270. package/lib/index.d.ts +21 -2
  271. package/lib/index.js +213 -1
  272. package/package.json +15 -1
  273. package/test/jsdom-global-register.d.ts +1 -0
  274. package/test/jsdom-global-register.js +1 -0
@@ -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,147 @@
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 _useMemoizedFn = _interopRequireDefault(require("../../useMemoizedFn"));
12
+ var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) {
14
+ return value instanceof P ? value : new P(function (resolve) {
15
+ resolve(value);
16
+ });
17
+ }
18
+ return new (P || (P = Promise))(function (resolve, reject) {
19
+ function fulfilled(value) {
20
+ try {
21
+ step(generator.next(value));
22
+ } catch (e) {
23
+ reject(e);
24
+ }
25
+ }
26
+ function rejected(value) {
27
+ try {
28
+ step(generator["throw"](value));
29
+ } catch (e) {
30
+ reject(e);
31
+ }
32
+ }
33
+ function step(result) {
34
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
35
+ }
36
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
37
+ });
38
+ };
39
+ /**
40
+ * Shared hook that powers both {@link ModalForm} and {@link DrawerForm}.
41
+ *
42
+ * Manages open/close state, trigger element cloning, auto-close with optional
43
+ * timeout after submit, and overlay visibility lifecycle.
44
+ *
45
+ * @typeParam TValues - The form values type.
46
+ * @param options - Configuration options.
47
+ * @returns An object with `mergedOpen`, `triggerNode`, `handleFinish`, `handleHide`, and more.
48
+ */
49
+ function useOverlayForm(_ref) {
50
+ var _this = this;
51
+ var open = _ref.open,
52
+ onOpenChange = _ref.onOpenChange,
53
+ trigger = _ref.trigger,
54
+ submitTimeout = _ref.submitTimeout,
55
+ _ref$autoClose = _ref.autoClose,
56
+ autoClose = _ref$autoClose === void 0 ? true : _ref$autoClose,
57
+ _ref$destroyOnClose = _ref.destroyOnClose,
58
+ destroyOnClose = _ref$destroyOnClose === void 0 ? true : _ref$destroyOnClose,
59
+ width = _ref.width,
60
+ onFinish = _ref.onFinish,
61
+ overlayStyle = _ref.overlayStyle,
62
+ onOverlayHide = _ref.onOverlayHide;
63
+ var _useState = (0, _react.useState)(false),
64
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
65
+ innerOpen = _useState2[0],
66
+ setInnerOpen = _useState2[1];
67
+ var closeTimerRef = (0, _react.useRef)(null);
68
+ var mergedOpen = open !== null && open !== void 0 ? open : innerOpen;
69
+ var changeOpen = (0, _useMemoizedFn["default"])(function (nextOpen) {
70
+ if (open === undefined) {
71
+ setInnerOpen(nextOpen);
72
+ }
73
+ onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(nextOpen);
74
+ });
75
+ var clearCloseTimer = (0, _useMemoizedFn["default"])(function () {
76
+ if (!closeTimerRef.current) return;
77
+ clearTimeout(closeTimerRef.current);
78
+ closeTimerRef.current = null;
79
+ });
80
+ var handleFinish = (0, _useMemoizedFn["default"])(function (values) {
81
+ return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regenerator["default"].mark(function _callee() {
82
+ var result;
83
+ return _regenerator["default"].wrap(function _callee$(_context) {
84
+ while (1) switch (_context.prev = _context.next) {
85
+ case 0:
86
+ _context.next = 2;
87
+ return onFinish === null || onFinish === void 0 ? void 0 : onFinish(values);
88
+ case 2:
89
+ result = _context.sent;
90
+ if (autoClose && result !== false) {
91
+ clearCloseTimer();
92
+ if (typeof submitTimeout === 'number' && submitTimeout > 0) {
93
+ closeTimerRef.current = setTimeout(function () {
94
+ changeOpen(false);
95
+ closeTimerRef.current = null;
96
+ }, submitTimeout);
97
+ } else {
98
+ changeOpen(false);
99
+ }
100
+ }
101
+ return _context.abrupt("return", result);
102
+ case 5:
103
+ case "end":
104
+ return _context.stop();
105
+ }
106
+ }, _callee);
107
+ }));
108
+ });
109
+ var triggerNode = (0, _react.useMemo)(function () {
110
+ if (!trigger || ! /*#__PURE__*/(0, _react.isValidElement)(trigger)) return null;
111
+ return /*#__PURE__*/(0, _react.cloneElement)(trigger, {
112
+ onClick: function onClick(event) {
113
+ var _a;
114
+ var triggerOnClick = (_a = trigger.props) === null || _a === void 0 ? void 0 : _a.onClick;
115
+ triggerOnClick === null || triggerOnClick === void 0 ? void 0 : triggerOnClick(event);
116
+ if (event.defaultPrevented) return;
117
+ changeOpen(true);
118
+ }
119
+ });
120
+ }, [changeOpen, trigger]);
121
+ var handleHide = (0, _useMemoizedFn["default"])(function () {
122
+ clearCloseTimer();
123
+ onOverlayHide === null || onOverlayHide === void 0 ? void 0 : onOverlayHide.apply(void 0, arguments);
124
+ changeOpen(false);
125
+ });
126
+ var shouldRenderPanel = mergedOpen || !destroyOnClose;
127
+ var mergedStyle = (0, _react.useMemo)(function () {
128
+ return Object.assign(Object.assign({}, overlayStyle || {}), width !== undefined ? {
129
+ width: width
130
+ } : {});
131
+ }, [overlayStyle, width]);
132
+ (0, _react.useEffect)(function () {
133
+ return function () {
134
+ clearCloseTimer();
135
+ };
136
+ }, [clearCloseTimer]);
137
+ return {
138
+ mergedOpen: mergedOpen,
139
+ shouldRenderPanel: shouldRenderPanel,
140
+ triggerNode: triggerNode,
141
+ handleFinish: handleFinish,
142
+ handleHide: handleHide,
143
+ mergedStyle: mergedStyle,
144
+ changeOpen: changeOpen
145
+ };
146
+ }
147
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL2xheW91dHMvdXNlT3ZlcmxheUZvcm0udHMiLCJjb21wb25lbnRzL1Byb0Zvcm0vbGF5b3V0cy91c2VPdmVybGF5Rm9ybS5qcyJdLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX3VzZU1lbW9pemVkRm4iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX19hd2FpdGVyIiwidGhpc0FyZyIsIl9hcmd1bWVudHMiLCJQIiwiZ2VuZXJhdG9yIiwiYWRvcHQiLCJ2YWx1ZSIsInJlc29sdmUiLCJQcm9taXNlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwic3RlcCIsIm5leHQiLCJlIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJkb25lIiwidGhlbiIsImFwcGx5IiwidXNlT3ZlcmxheUZvcm0iLCJfcmVmIiwiX3RoaXMiLCJvcGVuIiwib25PcGVuQ2hhbmdlIiwidHJpZ2dlciIsInN1Ym1pdFRpbWVvdXQiLCJfcmVmJGF1dG9DbG9zZSIsImF1dG9DbG9zZSIsIl9yZWYkZGVzdHJveU9uQ2xvc2UiLCJkZXN0cm95T25DbG9zZSIsIndpZHRoIiwib25GaW5pc2giLCJvdmVybGF5U3R5bGUiLCJvbk92ZXJsYXlIaWRlIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiaW5uZXJPcGVuIiwic2V0SW5uZXJPcGVuIiwiY2xvc2VUaW1lclJlZiIsInVzZVJlZiIsIm1lcmdlZE9wZW4iLCJjaGFuZ2VPcGVuIiwidXNlTWVtb2l6ZWRGbiIsIm5leHRPcGVuIiwidW5kZWZpbmVkIiwiY2xlYXJDbG9zZVRpbWVyIiwiY3VycmVudCIsImNsZWFyVGltZW91dCIsImhhbmRsZUZpbmlzaCIsInZhbHVlcyIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2Iiwic2VudCIsInNldFRpbWVvdXQiLCJhYnJ1cHQiLCJzdG9wIiwidHJpZ2dlck5vZGUiLCJ1c2VNZW1vIiwiaXNWYWxpZEVsZW1lbnQiLCJjbG9uZUVsZW1lbnQiLCJvbkNsaWNrIiwiZXZlbnQiLCJfYSIsInRyaWdnZXJPbkNsaWNrIiwicHJvcHMiLCJkZWZhdWx0UHJldmVudGVkIiwiaGFuZGxlSGlkZSIsImFyZ3VtZW50cyIsInNob3VsZFJlbmRlclBhbmVsIiwibWVyZ2VkU3R5bGUiLCJPYmplY3QiLCJhc3NpZ24iLCJ1c2VFZmZlY3QiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLGNBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQ0ZBLElBQUlHLFNBQVMsR0FBSSxVQUFRLFNBQUtBLFNBQVMsSUFBSyxVQUFVQyxPQUFPLEVBQUVDLFVBQVUsRUFBRUMsQ0FBQyxFQUFFQyxTQUFTLEVBQUU7RUFDckYsU0FBU0MsS0FBS0EsQ0FBQ0MsS0FBSyxFQUFFO0lBQUUsT0FBT0EsS0FBSyxZQUFZSCxDQUFDLEdBQUdHLEtBQUssR0FBRyxJQUFJSCxDQUFDLENBQUMsVUFBVUksT0FBTyxFQUFFO01BQUVBLE9BQU8sQ0FBQ0QsS0FBSyxDQUFDO0lBQUUsQ0FBQyxDQUFDO0VBQUU7RUFDM0csT0FBTyxLQUFLSCxDQUFDLEtBQUtBLENBQUMsR0FBR0ssT0FBTyxDQUFDLEVBQUUsVUFBVUQsT0FBTyxFQUFFRSxNQUFNLEVBQUU7SUFDdkQsU0FBU0MsU0FBU0EsQ0FBQ0osS0FBSyxFQUFFO01BQUUsSUFBSTtRQUFFSyxJQUFJLENBQUNQLFNBQVMsQ0FBQ1EsSUFBSSxDQUFDTixLQUFLLENBQUMsQ0FBQztNQUFFLENBQUMsQ0FBQyxPQUFPTyxDQUFDLEVBQUU7UUFBRUosTUFBTSxDQUFDSSxDQUFDLENBQUM7TUFBRTtJQUFFO0lBQzFGLFNBQVNDLFFBQVFBLENBQUNSLEtBQUssRUFBRTtNQUFFLElBQUk7UUFBRUssSUFBSSxDQUFDUCxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUNF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T0FBTyxZQUFLO01BQ1ZoQyxlQUFlLENBQUEsQ0FBRTtJQUNuQixDQUFDO0VBQ0gsQ0FBQyxFQUFFLENBQUNBLGVBQWUsQ0FBQyxDQUFDO0VBRXJCLE9BQU87SUFDTEwsVUFBVSxFQUFWQSxVQUFVO0lBQ1ZpQyxpQkFBaUIsRUFBakJBLGlCQUFpQjtJQUNqQlosV0FBVyxFQUFYQSxXQUFXO0lBQ1hiLFlBQVksRUFBWkEsWUFBWTtJQUNadUIsVUFBVSxFQUFWQSxVQUFVO0lBQ1ZHLFdBQVcsRUFBWEEsV0FBVztJQUNYakMsVUFBVSxFQUFWQTtFQ3REQSxDRHVERDtBQUNIIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvRm9ybS9sYXlvdXRzL3VzZU92ZXJsYXlGb3JtLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCB7IGNsb25lRWxlbWVudCwgaXNWYWxpZEVsZW1lbnQsIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VNZW1vaXplZEZuIGZyb20gJy4uLy4uL3VzZU1lbW9pemVkRm4nO1xuLyoqXG4gKiBTaGFyZWQgaG9vayB0aGF0IHBvd2VycyBib3RoIHtAbGluayBNb2RhbEZvcm19IGFuZCB7QGxpbmsgRHJhd2VyRm9ybX0uXG4gKlxuICogTWFuYWdlcyBvcGVuL2Nsb3NlIHN0YXRlLCB0cmlnZ2VyIGVsZW1lbnQgY2xvbmluZywgYXV0by1jbG9zZSB3aXRoIG9wdGlvbmFsXG4gKiB0aW1lb3V0IGFmdGVyIHN1Ym1pdCwgYW5kIG92ZXJsYXkgdmlzaWJpbGl0eSBsaWZlY3ljbGUuXG4gKlxuICogQHR5cGVQYXJhbSBUVmFsdWVzIC0gVGhlIGZvcm0gdmFsdWVzIHR5cGUuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucy5cbiAqIEByZXR1cm5zIEFuIG9iamVjdCB3aXRoIGBtZXJnZWRPcGVuYCwgYHRyaWdnZXJOb2RlYCwgYGhhbmRsZUZpbmlzaGAsIGBoYW5kbGVIaWRlYCwgYW5kIG1vcmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VPdmVybGF5Rm9ybSh7IG9wZW4sIG9uT3BlbkNoYW5nZSwgdHJpZ2dlciwgc3VibWl0VGltZW91dCwgYXV0b0Nsb3NlID0gdHJ1ZSwgZGVzdHJveU9uQ2xvc2UgPSB0cnVlLCB3aWR0aCwgb25GaW5pc2gsIG92ZXJsYXlTdHlsZSwgb25PdmVybGF5SGlkZSwgfSkge1xuICAgIGNvbnN0IFtpbm5lck9wZW4sIHNldElubmVyT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgY2xvc2VUaW1lclJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBtZXJnZWRPcGVuID0gb3BlbiAhPT0gbnVsbCAmJiBvcGVuICE9PSB2b2lkIDAgPyBvcGVuIDogaW5uZXJPcGVuO1xuICAgIGNvbnN0IGNoYW5nZU9wZW4gPSB1c2VNZW1vaXplZEZuKChuZXh0T3BlbikgPT4ge1xuICAgICAgICBpZiAob3BlbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBzZXRJbm5lck9wZW4obmV4dE9wZW4pO1xuICAgICAgICB9XG4gICAgICAgIG9uT3BlbkNoYW5nZSA9PT0gbnVsbCB8fCBvbk9wZW5DaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uT3BlbkNoYW5nZShuZXh0T3Blbik7XG4gICAgfSk7XG4gICAgY29uc3QgY2xlYXJDbG9zZVRpbWVyID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIGlmICghY2xvc2VUaW1lclJlZi5jdXJyZW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjbGVhclRpbWVvdXQoY2xvc2VUaW1lclJlZi5jdXJyZW50KTtcbiAgICAgICAgY2xvc2VUaW1lclJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVGaW5pc2ggPSB1c2VNZW1vaXplZEZuKCh2YWx1ZXMpID0+IF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0geWllbGQgKG9uRmluaXNoID09PSBudWxsIHx8IG9uRmluaXNoID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZpbmlzaCh2YWx1ZXMpKTtcbiAgICAgICAgaWYgKGF1dG9DbG9zZSAmJiByZXN1bHQgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBjbGVhckNsb3NlVGltZXIoKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc3VibWl0VGltZW91dCA9PT0gJ251bWJlcicgJiYgc3VibWl0VGltZW91dCA+IDApIHtcbiAgICAgICAgICAgICAgICBjbG9zZVRpbWVyUmVmLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlT3BlbihmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIGNsb3NlVGltZXJSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICAgICAgICAgICAgfSwgc3VibWl0VGltZW91dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VPcGVuKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pKTtcbiAgICBjb25zdCB0cmlnZ2VyTm9kZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBpZiAoIXRyaWdnZXIgfHwgIWlzVmFsaWRFbGVtZW50KHRyaWdnZXIpKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiBjbG9uZUVsZW1lbnQodHJpZ2dlciwge1xuICAgICAgICAgICAgb25DbGljazogKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJPbkNsaWNrID0gKF9hID0gdHJpZ2dlci5wcm9wcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm9uQ2xpY2s7XG4gICAgICAgICAgICAgICAgdHJpZ2dlck9uQ2xpY2sgPT09IG51bGwgfHwgdHJpZ2dlck9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRyaWdnZXJPbkNsaWNrKGV2ZW50KTtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGVmYXVsdFByZXZlbnRlZClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNoYW5nZU9wZW4odHJ1ZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9LCBbY2hhbmdlT3BlbiwgdHJpZ2dlcl0pO1xuICAgIGNvbnN0IGhhbmRsZUhpZGUgPSB1c2VNZW1vaXplZEZuKCguLi5hcmdzKSA9PiB7XG4gICAgICAgIGNsZWFyQ2xvc2VUaW1lcigpO1xuICAgICAgICBvbk92ZXJsYXlIaWRlID09PSBudWxsIHx8IG9uT3ZlcmxheUhpZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uT3ZlcmxheUhpZGUoLi4uYXJncyk7XG4gICAgICAgIGNoYW5nZU9wZW4oZmFsc2UpO1xuICAgIH0pO1xuICAgIGNvbnN0IHNob3VsZFJlbmRlclBhbmVsID0gbWVyZ2VkT3BlbiB8fCAhZGVzdHJveU9uQ2xvc2U7XG4gICAgY29uc3QgbWVyZ2VkU3R5bGUgPSB1c2VNZW1vKCgpID0+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