@1money/component-ui 0.0.71 → 0.0.74

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 (103) hide show
  1. package/es/components/ProForm/ProForm.d.ts +10 -2
  2. package/es/components/ProForm/ProForm.js +241 -55
  3. package/es/components/ProForm/ProFormDependency.d.ts +11 -2
  4. package/es/components/ProForm/ProFormDependency.js +29 -133
  5. package/es/components/ProForm/ProFormItem.js +146 -52
  6. package/es/components/ProForm/ProFormList.js +114 -62
  7. package/es/components/ProForm/SchemaForm.d.ts +7 -0
  8. package/es/components/ProForm/SchemaForm.js +103 -0
  9. package/es/components/ProForm/Submitter.js +26 -5
  10. package/es/components/ProForm/context.d.ts +30 -3
  11. package/es/components/ProForm/context.js +69 -10
  12. package/es/components/ProForm/core/constants.d.ts +12 -3
  13. package/es/components/ProForm/core/constants.js +18 -7
  14. package/es/components/ProForm/core/formStore.d.ts +24 -0
  15. package/es/components/ProForm/core/formStore.js +101 -0
  16. package/es/components/ProForm/core/hooks/useForm.d.ts +4 -1
  17. package/es/components/ProForm/core/hooks/useForm.js +336 -212
  18. package/es/components/ProForm/core/hooks/useFormCore.d.ts +5 -1
  19. package/es/components/ProForm/core/hooks/useFormCore.js +151 -93
  20. package/es/components/ProForm/core/interface.d.ts +33 -12
  21. package/es/components/ProForm/core/runRules.d.ts +20 -8
  22. package/es/components/ProForm/core/runRules.js +105 -50
  23. package/es/components/ProForm/core/useFormItem.d.ts +10 -1
  24. package/es/components/ProForm/core/useFormItem.js +141 -56
  25. package/es/components/ProForm/fields/ProFormDatePicker.js +4 -1
  26. package/es/components/ProForm/fields/ProFormFieldSet.js +20 -7
  27. package/es/components/ProForm/fields/createProFormField.js +61 -32
  28. package/es/components/ProForm/hooks/useFieldRequest.d.ts +6 -1
  29. package/es/components/ProForm/hooks/useFieldRequest.js +54 -9
  30. package/es/components/ProForm/hooks/useUrlSync.d.ts +16 -0
  31. package/es/components/ProForm/hooks/useUrlSync.js +170 -0
  32. package/es/components/ProForm/index.d.ts +12 -5
  33. package/es/components/ProForm/index.js +7 -2
  34. package/es/components/ProForm/interface.d.ts +185 -28
  35. package/es/components/ProForm/layouts/DialogForm.d.ts +5 -1
  36. package/es/components/ProForm/layouts/DialogForm.js +18 -7
  37. package/es/components/ProForm/layouts/DrawerForm.d.ts +5 -1
  38. package/es/components/ProForm/layouts/DrawerForm.js +17 -7
  39. package/es/components/ProForm/layouts/QueryFilter.d.ts +5 -2
  40. package/es/components/ProForm/layouts/QueryFilter.js +47 -71
  41. package/es/components/ProForm/layouts/useOverlayForm.d.ts +2 -2
  42. package/es/components/ProForm/layouts/useOverlayForm.js +27 -8
  43. package/es/components/ProForm/style/ProForm.css +4 -4
  44. package/es/components/ProForm/utils.d.ts +12 -1
  45. package/es/components/ProForm/utils.js +101 -28
  46. package/es/components/ProTable/ProTable.js +3 -3
  47. package/es/components/Tooltip/style/Tooltip.css +1 -0
  48. package/es/index.css +1 -1
  49. package/es/index.d.ts +2 -2
  50. package/es/index.js +2 -2
  51. package/lib/components/ProForm/ProForm.d.ts +10 -2
  52. package/lib/components/ProForm/ProForm.js +239 -53
  53. package/lib/components/ProForm/ProFormDependency.d.ts +11 -2
  54. package/lib/components/ProForm/ProFormDependency.js +30 -135
  55. package/lib/components/ProForm/ProFormItem.js +143 -48
  56. package/lib/components/ProForm/ProFormList.js +112 -60
  57. package/lib/components/ProForm/SchemaForm.d.ts +7 -0
  58. package/lib/components/ProForm/SchemaForm.js +110 -0
  59. package/lib/components/ProForm/Submitter.js +26 -5
  60. package/lib/components/ProForm/context.d.ts +30 -3
  61. package/lib/components/ProForm/context.js +69 -10
  62. package/lib/components/ProForm/core/constants.d.ts +12 -3
  63. package/lib/components/ProForm/core/constants.js +19 -8
  64. package/lib/components/ProForm/core/formStore.d.ts +24 -0
  65. package/lib/components/ProForm/core/formStore.js +110 -0
  66. package/lib/components/ProForm/core/hooks/useForm.d.ts +4 -1
  67. package/lib/components/ProForm/core/hooks/useForm.js +336 -212
  68. package/lib/components/ProForm/core/hooks/useFormCore.d.ts +5 -1
  69. package/lib/components/ProForm/core/hooks/useFormCore.js +150 -92
  70. package/lib/components/ProForm/core/interface.d.ts +33 -12
  71. package/lib/components/ProForm/core/runRules.d.ts +20 -8
  72. package/lib/components/ProForm/core/runRules.js +106 -50
  73. package/lib/components/ProForm/core/useFormItem.d.ts +10 -1
  74. package/lib/components/ProForm/core/useFormItem.js +138 -53
  75. package/lib/components/ProForm/fields/ProFormDatePicker.js +4 -1
  76. package/lib/components/ProForm/fields/ProFormFieldSet.js +19 -6
  77. package/lib/components/ProForm/fields/createProFormField.js +61 -32
  78. package/lib/components/ProForm/hooks/useFieldRequest.d.ts +6 -1
  79. package/lib/components/ProForm/hooks/useFieldRequest.js +53 -8
  80. package/lib/components/ProForm/hooks/useUrlSync.d.ts +16 -0
  81. package/lib/components/ProForm/hooks/useUrlSync.js +178 -0
  82. package/lib/components/ProForm/index.d.ts +12 -5
  83. package/lib/components/ProForm/index.js +16 -1
  84. package/lib/components/ProForm/interface.d.ts +185 -28
  85. package/lib/components/ProForm/layouts/DialogForm.d.ts +5 -1
  86. package/lib/components/ProForm/layouts/DialogForm.js +18 -7
  87. package/lib/components/ProForm/layouts/DrawerForm.d.ts +5 -1
  88. package/lib/components/ProForm/layouts/DrawerForm.js +17 -7
  89. package/lib/components/ProForm/layouts/QueryFilter.d.ts +5 -2
  90. package/lib/components/ProForm/layouts/QueryFilter.js +46 -70
  91. package/lib/components/ProForm/layouts/useOverlayForm.d.ts +2 -2
  92. package/lib/components/ProForm/layouts/useOverlayForm.js +30 -8
  93. package/lib/components/ProForm/style/ProForm.css +4 -4
  94. package/lib/components/ProForm/utils.d.ts +12 -1
  95. package/lib/components/ProForm/utils.js +104 -28
  96. package/lib/components/ProTable/ProTable.js +3 -3
  97. package/lib/components/Tooltip/style/Tooltip.css +1 -0
  98. package/lib/index.css +1 -1
  99. package/lib/index.d.ts +2 -2
  100. package/lib/index.js +13 -1
  101. package/package.json +1 -1
  102. package/scripts/mcp-server/examples.generated.json +90 -0
  103. package/scripts/mcp-server/index.generated.json +1866 -212
@@ -1,4 +1,13 @@
1
- import React from 'react';
1
+ import type { ReactElement } from 'react';
2
2
  import type { ProFormDependencyProps } from './interface';
3
- export declare const ProFormDependency: React.NamedExoticComponent<ProFormDependencyProps>;
3
+ /**
4
+ * Generic-aware component type — `memo()` erases generics, so the export is
5
+ * re-asserted to keep `<ProForm.Dependency<MyValues> name={['a']}>` fully
6
+ * typed (autocompleted `name`, typed `form` in children).
7
+ */
8
+ export interface ProFormDependencyComponent {
9
+ <Values = Record<string, unknown>>(props: ProFormDependencyProps<Values>): ReactElement | null;
10
+ displayName?: string;
11
+ }
12
+ export declare const ProFormDependency: ProFormDependencyComponent;
4
13
  export default ProFormDependency;
@@ -1,42 +1,15 @@
1
- import _regeneratorRuntime from "@babel/runtime/regenerator";
2
- var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) {
4
- return value instanceof P ? value : new P(function (resolve) {
5
- resolve(value);
6
- });
7
- }
8
- return new (P || (P = Promise))(function (resolve, reject) {
9
- function fulfilled(value) {
10
- try {
11
- step(generator.next(value));
12
- } catch (e) {
13
- reject(e);
14
- }
15
- }
16
- function rejected(value) {
17
- try {
18
- step(generator["throw"](value));
19
- } catch (e) {
20
- reject(e);
21
- }
22
- }
23
- function step(result) {
24
- result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
25
- }
26
- step((generator = generator.apply(thisArg, _arguments || [])).next());
27
- });
28
- };
29
1
  import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
30
2
  import React, { memo, useMemo } from 'react';
31
- import { useProFormContext, useFormListContext } from './context';
3
+ import { useProFormStable, useProFormStore, useFormListContext } from './context';
4
+ import { useStoreSelector, shallowEqualArrays } from './core/formStore';
32
5
  import { getNestedValue } from './utils';
33
6
  var ProFormDependencyBase = function ProFormDependencyBase(_ref) {
34
7
  var name = _ref.name,
35
8
  ignoreFormListField = _ref.ignoreFormListField,
36
9
  children = _ref.children;
37
- var _useProFormContext = useProFormContext(),
38
- values = _useProFormContext.values,
39
- formInstance = _useProFormContext.formInstance;
10
+ var _useProFormStable = useProFormStable(),
11
+ formInstance = _useProFormStable.formInstance;
12
+ var store = useProFormStore();
40
13
  var formListCtx = useFormListContext();
41
14
  // Resolve the actual paths to watch, considering FormList scope
42
15
  var resolvedPaths = useMemo(function () {
@@ -45,116 +18,39 @@ var ProFormDependencyBase = function ProFormDependencyBase(_ref) {
45
18
  return shouldPrefix ? "".concat(formListCtx.listName, ".").concat(fieldName) : fieldName;
46
19
  });
47
20
  }, [name, ignoreFormListField, formListCtx.listName]);
21
+ // Subscribe ONLY to the watched paths: a commit that leaves every watched
22
+ // value Object.is-equal short-circuits, so children are NOT re-invoked when
23
+ // unrelated fields change. Reactivity tracks the RAW values; the payload
24
+ // below is derived from the FORMATTED values.
25
+ var watchedArray = useStoreSelector(store, function (state) {
26
+ return resolvedPaths.map(function (path) {
27
+ return path.includes('.') ? getNestedValue(state.values, path) : state.values[path];
28
+ });
29
+ }, shallowEqualArrays);
48
30
  var watchedValues = useMemo(function () {
31
+ // Children receive FORMATTED values (dateFormatter + transform applied),
32
+ // matching what onFinish would submit for those fields. A transform that
33
+ // RENAMES its key deletes the original path from the formatted object —
34
+ // fall back to the raw value so the watcher still sees the field.
35
+ var formatted = formInstance.getFieldFormatValueObject();
49
36
  var result = {};
50
37
  for (var i = 0; i < name.length; i++) {
51
- var originalName = name[i];
52
- var resolvedPath = resolvedPaths[i];
53
38
  // Use the original name as key so children get clean keys
54
- result[originalName] = resolvedPath.includes('.') ? getNestedValue(values, resolvedPath) : values[resolvedPath];
39
+ var path = resolvedPaths[i];
40
+ var value = watchedArray[i];
41
+ var formattedValue = path.includes('.') ? getNestedValue(formatted, path) : path in formatted ? formatted[path] : undefined;
42
+ if (formattedValue !== undefined) {
43
+ value = formattedValue;
44
+ }
45
+ result[name[i]] = value;
55
46
  }
56
47
  return result;
57
- }, [name, resolvedPaths, values]);
58
- // Fallback form instance for standalone usage (outside ProForm)
59
- var fallbackInstance = useMemo(function () {
60
- return {
61
- submit: function submit() {
62
- return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
63
- return _regeneratorRuntime.wrap(function (_context) {
64
- while (1) switch (_context.prev = _context.next) {
65
- case 0:
66
- return _context.abrupt("return", undefined);
67
- case 1:
68
- case "end":
69
- return _context.stop();
70
- }
71
- }, _callee);
72
- }));
73
- },
74
- resetFields: function resetFields() {},
75
- getFieldValue: function getFieldValue(n) {
76
- return n.includes('.') ? getNestedValue(values, n) : values[n];
77
- },
78
- getFieldsValue: function getFieldsValue() {
79
- return values;
80
- },
81
- setFieldsValue: function setFieldsValue() {},
82
- setFieldValue: function setFieldValue() {},
83
- validateFields: function validateFields() {
84
- return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
85
- return _regeneratorRuntime.wrap(function (_context2) {
86
- while (1) switch (_context2.prev = _context2.next) {
87
- case 0:
88
- return _context2.abrupt("return", values);
89
- case 1:
90
- case "end":
91
- return _context2.stop();
92
- }
93
- }, _callee2);
94
- }));
95
- },
96
- getFieldError: function getFieldError() {
97
- return undefined;
98
- },
99
- getFieldsError: function getFieldsError() {
100
- return {};
101
- },
102
- isFieldTouched: function isFieldTouched() {
103
- return false;
104
- },
105
- isFieldsTouched: function isFieldsTouched() {
106
- return false;
107
- },
108
- isFieldValidating: function isFieldValidating() {
109
- return false;
110
- },
111
- setFieldError: function setFieldError() {},
112
- setFieldsError: function setFieldsError() {},
113
- setFieldTouched: function setFieldTouched() {},
114
- setFieldsTouched: function setFieldsTouched() {},
115
- defineField: function defineField() {
116
- return function () {
117
- return null;
118
- };
119
- },
120
- registerField: function registerField() {},
121
- unregisterField: function unregisterField() {},
122
- getFieldsFormatValue: function getFieldsFormatValue() {
123
- return values;
124
- },
125
- validateFieldsReturnFormatValue: function validateFieldsReturnFormatValue() {
126
- return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
127
- return _regeneratorRuntime.wrap(function (_context3) {
128
- while (1) switch (_context3.prev = _context3.next) {
129
- case 0:
130
- return _context3.abrupt("return", {
131
- success: false
132
- });
133
- case 1:
134
- case "end":
135
- return _context3.stop();
136
- }
137
- }, _callee3);
138
- }));
139
- },
140
- submitForm: function submitForm() {
141
- return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
142
- return _regeneratorRuntime.wrap(function (_context4) {
143
- while (1) switch (_context4.prev = _context4.next) {
144
- case 0:
145
- case "end":
146
- return _context4.stop();
147
- }
148
- }, _callee4);
149
- }));
150
- }
151
- };
152
- }, [values]);
48
+ }, [name, resolvedPaths, watchedArray, formInstance]);
153
49
  return _jsx(_Fragment, {
154
- children: children(watchedValues, formInstance !== null && formInstance !== void 0 ? formInstance : fallbackInstance)
50
+ children: children(watchedValues, formInstance)
155
51
  });
156
52
  };
157
53
  ProFormDependencyBase.displayName = 'ProFormDependency';
158
54
  export var ProFormDependency = /*#__PURE__*/memo(ProFormDependencyBase);
159
55
  export default ProFormDependency;
160
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtRGVwZW5kZW5jeS5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtRGVwZW5kZW5jeS50c3giXSwibmFtZXMiOlsiX19hd2FpdGVyIiwidGhpc0FyZyIsIl9hcmd1bWVudHMiLCJQIiwiZ2VuZXJhdG9yIiwiYWRvcHQiLCJ2YWx1ZSIsInJlc29sdmUiLCJQcm9taXNlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwic3RlcCIsIm5leHQiLCJlIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJkb25lIiwidGhlbiIsImFwcGx5IiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJqc3giLCJfanN4IiwiUmVhY3QiLCJtZW1vIiwidXNlTWVtbyIsInVzZVByb0Zvcm1Db250ZXh0IiwidXNlRm9ybUxpc3RDb250ZXh0IiwiZ2V0TmVzdGVkVmFsdWUiLCJQcm9Gb3JtRGVwZW5kZW5jeUJhc2UiLCJfcmVmIiwibmFtZSIsImlnbm9yZUZvcm1MaXN0RmllbGQiLCJjaGlsZHJlbiIsIl91c2VQcm9Gb3JtQ29udGV4dCIsInZhbHVlcyIsImZvcm1JbnN0YW5jZSIsImZvcm1MaXN0Q3R4IiwicmVzb2x2ZWRQYXRocyIsInNob3VsZFByZWZpeCIsImxpc3ROYW1lIiwidW5kZWZpbmVkIiwibWFwIiwiZmllbGROYW1lIiwiY29uY2F0Iiwid2F0Y2hlZFZhbHVlcyIsImkiLCJsZW5ndGgiLCJvcmlnaW5hbE5hbWUiLCJyZXNvbHZlZFBhdGgiLCJpbmNsdWRlcyIsImZhbGxiYWNrSW5zdGFuY2UiLCJzdWJtaXQiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwiYWJydXB0Iiwic3RvcCIsInJlc2V0RmllbGRzIiwiZ2V0RmllbGRWYWx1ZSIsIm4iLCJnZXRGaWVsZHNWYWx1ZSIsInNldEZpZWxkc1ZhbHVlIiwic2V0RmllbGRWYWx1ZSIsInZhbGlkYXRlRmllbGRzIiwiX2NhbGxlZTIiLCJfY29udGV4dDIiLCJnZXRGaWVsZEVycm9yIiwiZ2V0RmllbGRzRXJyb3IiLCJpc0ZpZWxkVG91Y2hlZCIsImlzRmllbGRzVG91Y2hlZCIsImlzRmllbGRWYWxpZGF0aW5nIiwic2V0RmllbGRFcnJvciIsInNldEZpZWxkc0Vycm9yIiwic2V0RmllbGRUb3VjaGVkIiwic2V0RmllbGRzVG91Y2hlZCIsImRlZmluZUZpZWxkIiwicmVnaXN0ZXJGaWVsZCIsInVucmVnaXN0ZXJGaWVsZCIsImdldEZpZWxkc0Zvcm1hdFZhbHVlIiwidmFsaWRhdGVGaWVsZHNSZXR1cm5Gb3JtYXRWYWx1ZSIsIl9jYWxsZWUzIiwiX2NvbnRleHQzIiwic3VjY2VzcyIsInN1Ym1pdEZvcm0iLCJfY2FsbGVlNCIsIl9jb250ZXh0NCIsImRpc3BsYXlOYW1lIiwiUHJvRm9ybURlcGVuZGVuY3kiXSwibWFwcGluZ3MiOiI7QUFBQSxJQUFJQSxTQUFTLEdBQUksSUFBSSxJQUFJLElBQUksQ0FBQ0EsU0FBUyxJQUFLLFVBQVVDLE9BQU8sRUFBRUMsVUFBVSxFQUFFQyxDQUFDLEVBQUVDLFNBQVMsRUFBRTtFQUNyRixTQUFTQyxLQUFLQSxDQUFDQyxLQUFLLEVBQUU7SUFBRSxPQUFPQSxLQUFLLFlBQVlILENBQUMsR0FBR0csS0FBSyxHQUFHLElBQUlILENBQUMsQ0FBQyxVQUFVSSxPQUFPLEVBQUU7TUFBRUEsT0FBTyxDQUFDRCxLQUFLLENBQUM7SUFBRSxDQUFDLENBQUM7RUFBRTtFQUMzRyxPQUFPLEtBQUtILENBQUMsS0FBS0EsQ0FBQyxHQUFHSyxPQUFPLENBQUMsRUFBRSxVQUFVRCxPQUFPLEVBQUVFLE1BQU0sRUFBRTtJQUN2RCxTQUFTQyxTQUFTQSxDQUFDSixLQUFLLEVBQUU7TUFBRSxJQUFJO1FBQUVLLElBQUksQ0FBQ1AsU0FBUyxDQUFDUSxJQUFJLENBQUNOLEtBQUssQ0FBQyxDQUFDO01BQUUsQ0FBQyxDQUFDLE9BQU9PLENBQUMsRUFBRTtRQUFFSixNQUFNLENBQUNJLENB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R0FBWkEsWUFBWSxHQUFJZSxnQkFBZ0I7RUFBQyxDQUFBLENBQUk7QUFDekUsQ0FBQztBQUVEdEIscUJBQXFCLENBQUM2RCxXQUFXLEdBQUcsbUJBQW1CO0FBRXZELE9BQU8sSUFBTUMsaUJBQWlCLGdCQUFHbkUsSUFBSSxDQUFDSyxxQkFBcUIsQ0FBQztBQUU1RCxlQUFlOEQsaUJBQWlCIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtRGVwZW5kZW5jeS5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0IHsgRnJhZ21lbnQgYXMgX0ZyYWdtZW50LCBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IFJlYWN0LCB7IG1lbW8sIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VQcm9Gb3JtQ29udGV4dCwgdXNlRm9ybUxpc3RDb250ZXh0IH0gZnJvbSAnLi9jb250ZXh0JztcbmltcG9ydCB7IGdldE5lc3RlZFZhbHVlIH0gZnJvbSAnLi91dGlscyc7XG5jb25zdCBQcm9Gb3JtRGVwZW5kZW5jeUJhc2UgPSAoeyBuYW1lLCBpZ25vcmVGb3JtTGlzdEZpZWxkLCBjaGlsZHJlbiwgfSkgPT4ge1xuICAgIGNvbnN0IHsgdmFsdWVzLCBmb3JtSW5zdGFuY2UgfSA9IHVzZVByb0Zvcm1Db250ZXh0KCk7XG4gICAgY29uc3QgZm9ybUxpc3RDdHggPSB1c2VGb3JtTGlzdENvbnRleHQoKTtcbiAgICAvLyBSZXNvbHZlIHRoZSBhY3R1YWwgcGF0aHMgdG8gd2F0Y2gsIGNvbnNpZGVyaW5nIEZvcm1MaXN0IHNjb3BlXG4gICAgY29uc3QgcmVzb2x2ZWRQYXRocyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBjb25zdCBzaG91bGRQcmVmaXggPSAhaWdub3JlRm9ybUxpc3RGaWVsZCAmJiBmb3JtTGlzdEN0eC5saXN0TmFtZSAhPT0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gbmFtZS5tYXAoKGZpZWxkTmFtZSkgPT4gc2hvdWxkUHJlZml4ID8gYCR7Zm9ybUxpc3RDdHgubGlzdE5hbWV9LiR7ZmllbGROYW1lfWAgOiBmaWVsZE5hbWUpO1xuICAgIH0sIFtuYW1lLCBpZ25vcmVGb3JtTGlzdEZpZWxkLCBmb3JtTGlzdEN0eC5saXN0TmFtZV0pO1xuICAgIGNvbnN0IHdhdGNoZWRWYWx1ZXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxOYW1lID0gbmFtZVtpXTtcbiAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkUGF0aCA9IHJlc29sdmVkUGF0aHNbaV07XG4gICAgICAgICAgICAvLyBVc2UgdGhlIG9yaWdpbmFsIG5hbWUgYXMga2V5IHNvIGNoaWxkcmVuIGdldCBjbGVhbiBrZXlzXG4gICAgICAgICAgICByZXN1bHRbb3JpZ2luYWxOYW1lXSA9IHJlc29sdmVkUGF0aC5pbmNsdWRlcygnLicpXG4gICAgICAgICAgICAgICAgPyBnZXROZXN0ZWRWYWx1ZSh2YWx1ZXMsIHJlc29sdmVkUGF0aClcbiAgICAgICAgICAgICAgICA6IHZhbHVlc1tyZXNvbHZlZFBhdGhdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSwgW25hbWUsIHJlc29sdmVkUGF0aHMsIHZhbHVlc10pO1xuICAgIC8vIEZhbGxiYWNrIGZvcm0gaW5zdGFuY2UgZm9yIHN0YW5kYWxvbmUgdXNhZ2UgKG91dHNpZGUgUHJvRm9ybSlcbiAgICBjb25zdCBmYWxsYmFja0luc3RhbmNlID0gdXNlTWVtbygoKSA9PiAoe1xuICAgICAgICBzdWJtaXQ6ICgpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9KSxcbiAgICAgICAgcmVzZXRGaWVsZHM6ICgpID0+IHsgfSxcbiAgICAgICAgZ2V0RmllbGRWYWx1ZTogKG4pID0+IG4uaW5jbHVkZXMoJy4nKSA/IGdldE5lc3RlZFZhbHVlKHZhbHVlcywgbikgOiB2YWx1ZXNbbl0sXG4gICAgICAgIGdldEZpZWxkc1ZhbHVlOiAoKSA9PiB2YWx1ZXMsXG4gICAgICAgIHNldEZpZWxkc1ZhbHVlOiAoKSA9PiB7IH0sXG4gICAgICAgIHNldEZpZWxkVmFsdWU6ICgpID0+IHsgfSxcbiAgICAgICAgdmFsaWRhdGVGaWVsZHM6ICgpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkgeyByZXR1cm4gdmFsdWVzOyB9KSxcbiAgICAgICAgZ2V0RmllbGRFcnJvcjogKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgICBnZXRGaWVsZHNFcnJvcjogKCkgPT4gKHt9KSxcbiAgICAgICAgaXNGaWVsZFRvdWNoZWQ6ICgpID0+IGZhbHNlLFxuICAgICAgICBpc0ZpZWxkc1RvdWNoZWQ6ICgpID0+IGZhbHNlLFxuICAgICAgICBpc0ZpZWxkVmFsaWRhdGluZzogKCkgPT4gZmFsc2UsXG4gICAgICAgIHNldEZpZWxkRXJyb3I6ICgpID0+IHsgfSxcbiAgICAgICAgc2V0RmllbGRzRXJyb3I6ICgpID0+IHsgfSxcbiAgICAgICAgc2V0RmllbGRUb3VjaGVkOiAoKSA9PiB7IH0sXG4gICAgICAgIHNldEZpZWxkc1RvdWNoZWQ6ICgpID0+IHsgfSxcbiAgICAgICAgZGVmaW5lRmllbGQ6ICgpID0+ICgoKSA9PiBudWxsKSxcbiAgICAgICAgcmVnaXN0ZXJGaWVsZDogKCkgPT4geyB9LFxuICAgICAgICB1bnJlZ2lzdGVyRmllbGQ6ICgpID0+IHsgfSxcbiAgICAgICAgZ2V0RmllbGRzRm9ybWF0VmFsdWU6ICgpID0+IHZhbHVlcyxcbiAgICAgICAgdmFsaWRhdGVGaWVsZHNSZXR1cm5Gb3JtYXRWYWx1ZTogKCkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7IHJldHVybiAoeyBzdWNjZXNzOiBmYWxzZSB9KTsgfSksXG4gICAgICAgIHN1Ym1pdEZvcm06ICgpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkgeyB9KSxcbiAgICB9KSwgW3ZhbHVlc10pO1xuICAgIHJldHVybiBfanN4KF9GcmFnbWVudCwgeyBjaGlsZHJlbjogY2hpbGRyZW4od2F0Y2hlZFZhbHVlcywgZm9ybUluc3RhbmNlICE9PSBudWxsICYmIGZvcm1JbnN0YW5jZSAhPT0gdm9pZCAwID8gZm9ybUluc3RhbmNlIDogZmFsbGJhY2tJbnN0YW5jZSkgfSk7XG59O1xuUHJvRm9ybURlcGVuZGVuY3lCYXNlLmRpc3BsYXlOYW1lID0gJ1Byb0Zvcm1EZXBlbmRlbmN5JztcbmV4cG9ydCBjb25zdCBQcm9Gb3JtRGVwZW5kZW5jeSA9IG1lbW8oUHJvRm9ybURlcGVuZGVuY3lCYXNlKTtcbmV4cG9ydCBkZWZhdWx0IFByb0Zvcm1EZXBlbmRlbmN5OyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
56
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtRGVwZW5kZW5jeS5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtRGVwZW5kZW5jeS50c3giXSwibmFtZXMiOlsiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJqc3giLCJfanN4IiwiUmVhY3QiLCJtZW1vIiwidXNlTWVtbyIsInVzZVByb0Zvcm1TdGFibGUiLCJ1c2VQcm9Gb3JtU3RvcmUiLCJ1c2VGb3JtTGlzdENvbnRleHQiLCJ1c2VTdG9yZVNlbGVjdG9yIiwic2hhbGxvd0VxdWFsQXJyYXlzIiwiZ2V0TmVzdGVkVmFsdWUiLCJQcm9Gb3JtRGVwZW5kZW5jeUJhc2UiLCJfcmVmIiwibmFtZSIsImlnbm9yZUZvcm1MaXN0RmllbGQiLCJjaGlsZHJlbiIsIl91c2VQcm9Gb3JtU3RhYmxlIiwiZm9ybUluc3RhbmNlIiwic3RvcmUiLCJmb3JtTGlzdEN0eCIsInJlc29sdmVkUGF0aHMiLCJzaG91bGRQcmVmaXgiLCJsaXN0TmFtZSIsInVuZGVmaW5lZCIsIm1hcCIsImZpZWxkTmFtZSIsImNvbmNhdCIsIndhdGNoZWRBcnJheSIsInN0YXRlIiwicGF0aCIsImluY2x1ZGVzIiwidmFsdWVzIiwid2F0Y2hlZFZhbHVlcyIsImZvcm1hdHRlZCIsImdldEZpZWxkRm9ybWF0VmFsdWVPYmplY3QiLCJyZXN1bHQiLCJpIiwibGVuZ3RoIiwidmFsdWUiLCJmb3JtYXR0ZWRWYWx1ZSIsImRpc3BsYXlOYW1lIiwiUHJvRm9ybURlcGVuZGVuY3kiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFFBQVEsSUFBSUMsU0FBUyxFQUFFQyxHQUFHLElBQUlDLElBQUksUUFBUSxtQkFBbUI7QUNBdEUsT0FBT0MsS0FBSyxJQUFJQyxJQUFJLEVBQUVDLE9BQU8sUUFBUSxPQUFPO0FBRTVDLFNBQVNDLGdCQUFnQixFQUFFQyxlQUFlLEVBQUVDLGtCQUFrQixRQUFRLFdBQVc7QUFDakYsU0FBU0MsZ0JBQWdC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QixDQUFDNkIsV0FBVyxHQUFHLG1CQUFtQjtBQWN2RCxPQUFPLElBQU1DLGlCQUFpQixnQkFBR3RDLElBQUksQ0FDbkNRLHFCQUFxQixDQUNtQjtBQUUxQyxlQUFlOEIsaUJBQWlCIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtRGVwZW5kZW5jeS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZyYWdtZW50IGFzIF9GcmFnbWVudCwganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBSZWFjdCwgeyBtZW1vLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlUHJvRm9ybVN0YWJsZSwgdXNlUHJvRm9ybVN0b3JlLCB1c2VGb3JtTGlzdENvbnRleHQgfSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHsgdXNlU3RvcmVTZWxlY3Rvciwgc2hhbGxvd0VxdWFsQXJyYXlzIH0gZnJvbSAnLi9jb3JlL2Zvcm1TdG9yZSc7XG5pbXBvcnQgeyBnZXROZXN0ZWRWYWx1ZSB9IGZyb20gJy4vdXRpbHMnO1xuY29uc3QgUHJvRm9ybURlcGVuZGVuY3lCYXNlID0gKHsgbmFtZSwgaWdub3JlRm9ybUxpc3RGaWVsZCwgY2hpbGRyZW4sIH0pID0+IHtcbiAgICBjb25zdCB7IGZvcm1JbnN0YW5jZSB9ID0gdXNlUHJvRm9ybVN0YWJsZSgpO1xuICAgIGNvbnN0IHN0b3JlID0gdXNlUHJvRm9ybVN0b3JlKCk7XG4gICAgY29uc3QgZm9ybUxpc3RDdHggPSB1c2VGb3JtTGlzdENvbnRleHQoKTtcbiAgICAvLyBSZXNvbHZlIHRoZSBhY3R1YWwgcGF0aHMgdG8gd2F0Y2gsIGNvbnNpZGVyaW5nIEZvcm1MaXN0IHNjb3BlXG4gICAgY29uc3QgcmVzb2x2ZWRQYXRocyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBjb25zdCBzaG91bGRQcmVmaXggPSAhaWdub3JlRm9ybUxpc3RGaWVsZCAmJiBmb3JtTGlzdEN0eC5saXN0TmFtZSAhPT0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gbmFtZS5tYXAoKGZpZWxkTmFtZSkgPT4gc2hvdWxkUHJlZml4ID8gYCR7Zm9ybUxpc3RDdHgubGlzdE5hbWV9LiR7ZmllbGROYW1lfWAgOiBmaWVsZE5hbWUpO1xuICAgIH0sIFtuYW1lLCBpZ25vcmVGb3JtTGlzdEZpZWxkLCBmb3JtTGlzdEN0eC5saXN0TmFtZV0pO1xuICAgIC8vIFN1YnNjcmliZSBPTkxZIHRvIHRoZSB3YXRjaGVkIHBhdGhzOiBhIGNvbW1pdCB0aGF0IGxlYXZlcyBldmVyeSB3YXRjaGVkXG4gICAgLy8gdmFsdWUgT2JqZWN0LmlzLWVxdWFsIHNob3J0LWNpcmN1aXRzLCBzbyBjaGlsZHJlbiBhcmUgTk9UIHJlLWludm9rZWQgd2hlblxuICAgIC8vIHVucmVsYXRlZCBmaWVsZHMgY2hhbmdlLiBSZWFjdGl2aXR5IHRyYWNrcyB0aGUgUkFXIHZhbHVlczsgdGhlIHBheWxvYWRcbiAgICAvLyBiZWxvdyBpcyBkZXJpdmVkIGZyb20gdGhlIEZPUk1BVFRFRCB2YWx1ZXMuXG4gICAgY29uc3Qgd2F0Y2hlZEFycmF5ID0gdXNlU3RvcmVTZWxlY3RvcihzdG9yZSwgKHN0YXRlKSA9PiByZXNvbHZlZFBhdGhzLm1hcCgocGF0aCkgPT4gcGF0aC5pbmNsdWRlcygnLicpID8gZ2V0TmVzdGVkVmFsdWUoc3RhdGUudmFsdWVzLCBwYXRoKSA6IHN0YXRlLnZhbHVlc1twYXRoXSksIHNoYWxsb3dFcXVhbEFycmF5cyk7XG4gICAgY29uc3Qgd2F0Y2hlZFZhbHVlcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICAvLyBDaGlsZHJlbiByZWNlaXZlIEZPUk1BVFRFRCB2YWx1ZXMgKGRhdGVGb3JtYXR0ZXIgKyB0cmFuc2Zvcm0gYXBwbGllZCksXG4gICAgICAgIC8vIG1hdGNoaW5nIHdoYXQgb25GaW5pc2ggd291bGQgc3VibWl0IGZvciB0aG9zZSBmaWVsZHMuIEEgdHJhbnNmb3JtIHRoYXRcbiAgICAgICAgLy8gUkVOQU1FUyBpdHMga2V5IGRlbGV0ZXMgdGhlIG9yaWdpbmFsIHBhdGggZnJvbSB0aGUgZm9ybWF0dGVkIG9iamVjdCDigJRcbiAgICAgICAgLy8gZmFsbCBiYWNrIHRvIHRoZSByYXcgdmFsdWUgc28gdGhlIHdhdGNoZXIgc3RpbGwgc2VlcyB0aGUgZmllbGQuXG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IGZvcm1JbnN0YW5jZS5nZXRGaWVsZEZvcm1hdFZhbHVlT2JqZWN0KCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIC8vIFVzZSB0aGUgb3JpZ2luYWwgbmFtZSBhcyBrZXkgc28gY2hpbGRyZW4gZ2V0IGNsZWFuIGtleXNcbiAgICAgICAgICAgIGNvbnN0IHBhdGggPSByZXNvbHZlZFBhdGhzW2ldO1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gd2F0Y2hlZEFycmF5W2ldO1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkVmFsdWUgPSBwYXRoLmluY2x1ZGVzKCcuJylcbiAgICAgICAgICAgICAgICA/IGdldE5lc3RlZFZhbHVlKGZvcm1hdHRlZCwgcGF0aClcbiAgICAgICAgICAgICAgICA6IChwYXRoIGluIGZvcm1hdHRlZCA/IGZvcm1hdHRlZFtwYXRoXSA6IHVuZGVmaW5lZCk7XG4gICAgICAgICAgICBpZiAoZm9ybWF0dGVkVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gZm9ybWF0dGVkVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHRbbmFtZVtpXV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sIFtuYW1lLCByZXNvbHZlZFBhdGhzLCB3YXRjaGVkQXJyYXksIGZvcm1JbnN0YW5jZV0pO1xuICAgIHJldHVybiBfanN4KF9GcmFnbWVudCwgeyBjaGlsZHJlbjogY2hpbGRyZW4od2F0Y2hlZFZhbHVlcywgZm9ybUluc3RhbmNlKSB9KTtcbn07XG5Qcm9Gb3JtRGVwZW5kZW5jeUJhc2UuZGlzcGxheU5hbWUgPSAnUHJvRm9ybURlcGVuZGVuY3knO1xuZXhwb3J0IGNvbnN0IFByb0Zvcm1EZXBlbmRlbmN5ID0gbWVtbyhQcm9Gb3JtRGVwZW5kZW5jeUJhc2UpO1xuZXhwb3J0IGRlZmF1bHQgUHJvRm9ybURlcGVuZGVuY3k7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9