@rjsf/core 4.1.1 → 4.2.2

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 (177) hide show
  1. package/dist/components/AddButton.d.ts +5 -0
  2. package/dist/components/ErrorList.d.ts +1 -0
  3. package/dist/components/Form.d.ts +48 -0
  4. package/dist/components/IconButton.d.ts +1 -0
  5. package/dist/components/fields/ArrayField.d.ts +51 -0
  6. package/dist/components/fields/BooleanField.d.ts +45 -0
  7. package/dist/components/fields/DescriptionField.d.ts +9 -0
  8. package/dist/components/fields/MultiSchemaField.d.ts +40 -0
  9. package/dist/components/fields/NullField.d.ts +6 -0
  10. package/dist/components/fields/NumberField.d.ts +63 -0
  11. package/dist/components/fields/ObjectField.d.ts +22 -0
  12. package/dist/components/fields/SchemaField.d.ts +39 -0
  13. package/dist/components/fields/StringField.d.ts +45 -0
  14. package/dist/components/fields/TitleField.d.ts +10 -0
  15. package/dist/components/fields/UnsupportedField.d.ts +14 -0
  16. package/dist/components/fields/index.d.ts +26 -0
  17. package/dist/components/widgets/AltDateTimeWidget.d.ts +22 -0
  18. package/dist/components/widgets/AltDateWidget.d.ts +22 -0
  19. package/dist/components/widgets/BaseInput.d.ts +23 -0
  20. package/dist/components/widgets/CheckboxWidget.d.ts +18 -0
  21. package/dist/components/widgets/CheckboxesWidget.d.ts +26 -0
  22. package/dist/components/widgets/ColorWidget.d.ts +15 -0
  23. package/dist/components/widgets/DateTimeWidget.d.ts +8 -0
  24. package/dist/components/widgets/DateWidget.d.ts +8 -0
  25. package/dist/components/widgets/EmailWidget.d.ts +8 -0
  26. package/dist/components/widgets/FileWidget.d.ts +19 -0
  27. package/dist/components/widgets/HiddenWidget.d.ts +12 -0
  28. package/dist/components/widgets/PasswordWidget.d.ts +8 -0
  29. package/dist/components/widgets/RadioWidget.d.ts +22 -0
  30. package/dist/components/widgets/RangeWidget.d.ts +8 -0
  31. package/dist/components/widgets/SelectWidget.d.ts +24 -0
  32. package/dist/components/widgets/SubmitButton.d.ts +3 -0
  33. package/dist/components/widgets/TextWidget.d.ts +9 -0
  34. package/dist/components/widgets/TextareaWidget.d.ts +25 -0
  35. package/dist/components/widgets/URLWidget.d.ts +8 -0
  36. package/dist/components/widgets/UpDownWidget.d.ts +8 -0
  37. package/dist/components/widgets/index.d.ts +43 -0
  38. package/dist/core.cjs.development.js +5714 -0
  39. package/dist/core.cjs.development.js.map +1 -0
  40. package/dist/core.cjs.production.min.js +2 -0
  41. package/dist/core.cjs.production.min.js.map +1 -0
  42. package/dist/core.esm.js +5706 -0
  43. package/dist/core.esm.js.map +1 -0
  44. package/dist/defaultRegistry.d.ts +41 -0
  45. package/dist/index.d.ts +71 -0
  46. package/dist/index.js +8 -0
  47. package/dist/react-jsonschema-form.js +18 -3
  48. package/dist/react-jsonschema-form.js.map +1 -1
  49. package/dist/types.d.ts +50 -0
  50. package/dist/utils.d.ts +81 -0
  51. package/dist/validate.d.ts +21 -0
  52. package/dist/withTheme.d.ts +10 -0
  53. package/index.d.ts +35 -14
  54. package/package.json +23 -24
  55. package/dist/cjs/components/AddButton.js +0 -32
  56. package/dist/cjs/components/ErrorList.js +0 -29
  57. package/dist/cjs/components/Form.js +0 -576
  58. package/dist/cjs/components/IconButton.js +0 -32
  59. package/dist/cjs/components/fields/ArrayField.js +0 -916
  60. package/dist/cjs/components/fields/BooleanField.js +0 -105
  61. package/dist/cjs/components/fields/DescriptionField.js +0 -44
  62. package/dist/cjs/components/fields/MultiSchemaField.js +0 -265
  63. package/dist/cjs/components/fields/NullField.js +0 -66
  64. package/dist/cjs/components/fields/NumberField.js +0 -153
  65. package/dist/cjs/components/fields/ObjectField.js +0 -345
  66. package/dist/cjs/components/fields/SchemaField.js +0 -475
  67. package/dist/cjs/components/fields/StringField.js +0 -96
  68. package/dist/cjs/components/fields/TitleField.js +0 -37
  69. package/dist/cjs/components/fields/UnsupportedField.js +0 -33
  70. package/dist/cjs/components/fields/index.js +0 -47
  71. package/dist/cjs/components/widgets/AltDateTimeWidget.js +0 -45
  72. package/dist/cjs/components/widgets/AltDateWidget.js +0 -282
  73. package/dist/cjs/components/widgets/BaseInput.js +0 -144
  74. package/dist/cjs/components/widgets/CheckboxWidget.js +0 -74
  75. package/dist/cjs/components/widgets/CheckboxesWidget.js +0 -106
  76. package/dist/cjs/components/widgets/ColorWidget.js +0 -42
  77. package/dist/cjs/components/widgets/DateTimeWidget.js +0 -40
  78. package/dist/cjs/components/widgets/DateWidget.js +0 -36
  79. package/dist/cjs/components/widgets/EmailWidget.js +0 -31
  80. package/dist/cjs/components/widgets/FileWidget.js +0 -198
  81. package/dist/cjs/components/widgets/HiddenWidget.js +0 -33
  82. package/dist/cjs/components/widgets/PasswordWidget.js +0 -31
  83. package/dist/cjs/components/widgets/RadioWidget.js +0 -92
  84. package/dist/cjs/components/widgets/RangeWidget.js +0 -39
  85. package/dist/cjs/components/widgets/SelectWidget.js +0 -143
  86. package/dist/cjs/components/widgets/TextWidget.js +0 -28
  87. package/dist/cjs/components/widgets/TextareaWidget.js +0 -78
  88. package/dist/cjs/components/widgets/URLWidget.js +0 -31
  89. package/dist/cjs/components/widgets/UpDownWidget.js +0 -33
  90. package/dist/cjs/components/widgets/index.js +0 -70
  91. package/dist/cjs/index.js +0 -28
  92. package/dist/cjs/types.js +0 -47
  93. package/dist/cjs/utils.js +0 -1381
  94. package/dist/cjs/validate.js +0 -354
  95. package/dist/cjs/withTheme.js +0 -50
  96. package/dist/es/components/AddButton.js +0 -21
  97. package/dist/es/components/ErrorList.js +0 -19
  98. package/dist/es/components/Form.js +0 -561
  99. package/dist/es/components/IconButton.js +0 -22
  100. package/dist/es/components/fields/ArrayField.js +0 -898
  101. package/dist/es/components/fields/BooleanField.js +0 -91
  102. package/dist/es/components/fields/DescriptionField.js +0 -33
  103. package/dist/es/components/fields/MultiSchemaField.js +0 -251
  104. package/dist/es/components/fields/NullField.js +0 -55
  105. package/dist/es/components/fields/NumberField.js +0 -138
  106. package/dist/es/components/fields/ObjectField.js +0 -330
  107. package/dist/es/components/fields/SchemaField.js +0 -457
  108. package/dist/es/components/fields/StringField.js +0 -82
  109. package/dist/es/components/fields/TitleField.js +0 -25
  110. package/dist/es/components/fields/UnsupportedField.js +0 -22
  111. package/dist/es/components/fields/index.js +0 -26
  112. package/dist/es/components/widgets/AltDateTimeWidget.js +0 -33
  113. package/dist/es/components/widgets/AltDateWidget.js +0 -268
  114. package/dist/es/components/widgets/BaseInput.js +0 -133
  115. package/dist/es/components/widgets/CheckboxWidget.js +0 -62
  116. package/dist/es/components/widgets/CheckboxesWidget.js +0 -93
  117. package/dist/es/components/widgets/ColorWidget.js +0 -31
  118. package/dist/es/components/widgets/DateTimeWidget.js +0 -28
  119. package/dist/es/components/widgets/DateWidget.js +0 -25
  120. package/dist/es/components/widgets/EmailWidget.js +0 -20
  121. package/dist/es/components/widgets/FileWidget.js +0 -184
  122. package/dist/es/components/widgets/HiddenWidget.js +0 -22
  123. package/dist/es/components/widgets/PasswordWidget.js +0 -20
  124. package/dist/es/components/widgets/RadioWidget.js +0 -79
  125. package/dist/es/components/widgets/RangeWidget.js +0 -27
  126. package/dist/es/components/widgets/SelectWidget.js +0 -130
  127. package/dist/es/components/widgets/TextWidget.js +0 -17
  128. package/dist/es/components/widgets/TextareaWidget.js +0 -67
  129. package/dist/es/components/widgets/URLWidget.js +0 -20
  130. package/dist/es/components/widgets/UpDownWidget.js +0 -21
  131. package/dist/es/components/widgets/index.js +0 -41
  132. package/dist/es/index.js +0 -6
  133. package/dist/es/types.js +0 -34
  134. package/dist/es/utils.js +0 -1281
  135. package/dist/es/validate.js +0 -338
  136. package/dist/es/withTheme.js +0 -36
  137. package/lib/components/AddButton.js +0 -21
  138. package/lib/components/ErrorList.js +0 -19
  139. package/lib/components/Form.js +0 -561
  140. package/lib/components/IconButton.js +0 -22
  141. package/lib/components/fields/ArrayField.js +0 -898
  142. package/lib/components/fields/BooleanField.js +0 -91
  143. package/lib/components/fields/DescriptionField.js +0 -33
  144. package/lib/components/fields/MultiSchemaField.js +0 -251
  145. package/lib/components/fields/NullField.js +0 -55
  146. package/lib/components/fields/NumberField.js +0 -138
  147. package/lib/components/fields/ObjectField.js +0 -330
  148. package/lib/components/fields/SchemaField.js +0 -457
  149. package/lib/components/fields/StringField.js +0 -82
  150. package/lib/components/fields/TitleField.js +0 -25
  151. package/lib/components/fields/UnsupportedField.js +0 -22
  152. package/lib/components/fields/index.js +0 -26
  153. package/lib/components/widgets/AltDateTimeWidget.js +0 -33
  154. package/lib/components/widgets/AltDateWidget.js +0 -268
  155. package/lib/components/widgets/BaseInput.js +0 -133
  156. package/lib/components/widgets/CheckboxWidget.js +0 -62
  157. package/lib/components/widgets/CheckboxesWidget.js +0 -93
  158. package/lib/components/widgets/ColorWidget.js +0 -31
  159. package/lib/components/widgets/DateTimeWidget.js +0 -28
  160. package/lib/components/widgets/DateWidget.js +0 -25
  161. package/lib/components/widgets/EmailWidget.js +0 -20
  162. package/lib/components/widgets/FileWidget.js +0 -184
  163. package/lib/components/widgets/HiddenWidget.js +0 -22
  164. package/lib/components/widgets/PasswordWidget.js +0 -20
  165. package/lib/components/widgets/RadioWidget.js +0 -79
  166. package/lib/components/widgets/RangeWidget.js +0 -27
  167. package/lib/components/widgets/SelectWidget.js +0 -130
  168. package/lib/components/widgets/TextWidget.js +0 -17
  169. package/lib/components/widgets/TextareaWidget.js +0 -67
  170. package/lib/components/widgets/URLWidget.js +0 -20
  171. package/lib/components/widgets/UpDownWidget.js +0 -21
  172. package/lib/components/widgets/index.js +0 -41
  173. package/lib/index.js +0 -6
  174. package/lib/types.js +0 -34
  175. package/lib/utils.js +0 -1281
  176. package/lib/validate.js +0 -338
  177. package/lib/withTheme.js +0 -36
@@ -1,153 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports["default"] = void 0;
7
-
8
- var _react = _interopRequireDefault(require("react"));
9
-
10
- var types = _interopRequireWildcard(require("../../types"));
11
-
12
- var _utils = require("../../utils");
13
-
14
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } }
15
-
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
17
-
18
- function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
19
-
20
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
21
-
22
- function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
23
-
24
- function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
25
-
26
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
27
-
28
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
29
-
30
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
31
-
32
- function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
33
-
34
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
35
-
36
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
37
-
38
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
39
-
40
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
41
-
42
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
43
-
44
- // Matches a string that ends in a . character, optionally followed by a sequence of
45
- // digits followed by any number of 0 characters up until the end of the line.
46
- // Ensuring that there is at least one prefixed character is important so that
47
- // you don't incorrectly match against "0".
48
- var trailingCharMatcherWithPrefix = /\.([0-9]*0)*$/; // This is used for trimming the trailing 0 and . characters without affecting
49
- // the rest of the string. Its possible to use one RegEx with groups for this
50
- // functionality, but it is fairly complex compared to simply defining two
51
- // different matchers.
52
-
53
- var trailingCharMatcher = /[0.]0*$/;
54
- /**
55
- * The NumberField class has some special handling for dealing with trailing
56
- * decimal points and/or zeroes. This logic is designed to allow trailing values
57
- * to be visible in the input element, but not be represented in the
58
- * corresponding form data.
59
- *
60
- * The algorithm is as follows:
61
- *
62
- * 1. When the input value changes the value is cached in the component state
63
- *
64
- * 2. The value is then normalized, removing trailing decimal points and zeros,
65
- * then passed to the "onChange" callback
66
- *
67
- * 3. When the component is rendered, the formData value is checked against the
68
- * value cached in the state. If it matches the cached value, the cached
69
- * value is passed to the input instead of the formData value
70
- */
71
-
72
- var NumberField =
73
- /*#__PURE__*/
74
- function (_React$Component) {
75
- _inherits(NumberField, _React$Component);
76
-
77
- function NumberField(props) {
78
- var _this;
79
-
80
- _classCallCheck(this, NumberField);
81
-
82
- _this = _possibleConstructorReturn(this, _getPrototypeOf(NumberField).call(this, props));
83
-
84
- _defineProperty(_assertThisInitialized(_this), "handleChange", function (value) {
85
- // Cache the original value in component state
86
- _this.setState({
87
- lastValue: value
88
- }); // Normalize decimals that don't start with a zero character in advance so
89
- // that the rest of the normalization logic is simpler
90
-
91
-
92
- if ("".concat(value).charAt(0) === ".") {
93
- value = "0".concat(value);
94
- } // Check that the value is a string (this can happen if the widget used is a
95
- // <select>, due to an enum declaration etc) then, if the value ends in a
96
- // trailing decimal point or multiple zeroes, strip the trailing values
97
-
98
-
99
- var processed = typeof value === "string" && value.match(trailingCharMatcherWithPrefix) ? (0, _utils.asNumber)(value.replace(trailingCharMatcher, "")) : (0, _utils.asNumber)(value);
100
-
101
- _this.props.onChange(processed);
102
- });
103
-
104
- _this.state = {
105
- lastValue: props.value
106
- };
107
- return _this;
108
- }
109
-
110
- _createClass(NumberField, [{
111
- key: "render",
112
- value: function render() {
113
- var StringField = this.props.registry.fields.StringField;
114
-
115
- var _this$props = this.props,
116
- formData = _this$props.formData,
117
- props = _objectWithoutProperties(_this$props, ["formData"]);
118
-
119
- var lastValue = this.state.lastValue;
120
- var value = formData;
121
-
122
- if (typeof lastValue === "string" && typeof value === "number") {
123
- // Construct a regular expression that checks for a string that consists
124
- // of the formData value suffixed with zero or one '.' characters and zero
125
- // or more '0' characters
126
- var re = new RegExp("".concat(value).replace(".", "\\.") + "\\.?0*$"); // If the cached "lastValue" is a match, use that instead of the formData
127
- // value to prevent the input value from changing in the UI
128
-
129
- if (lastValue.match(re)) {
130
- value = lastValue;
131
- }
132
- }
133
-
134
- return _react["default"].createElement(StringField, _extends({}, props, {
135
- formData: value,
136
- onChange: this.handleChange
137
- }));
138
- }
139
- }]);
140
-
141
- return NumberField;
142
- }(_react["default"].Component);
143
-
144
- if (process.env.NODE_ENV !== "production") {
145
- NumberField.propTypes = types.fieldProps;
146
- }
147
-
148
- NumberField.defaultProps = {
149
- uiSchema: {}
150
- };
151
- var _default = NumberField;
152
- exports["default"] = _default;
153
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2ZpZWxkcy9OdW1iZXJGaWVsZC5qcyJdLCJuYW1lcyI6WyJ0cmFpbGluZ0NoYXJNYXRjaGVyV2l0aFByZWZpeCIsInRyYWlsaW5nQ2hhck1hdGNoZXIiLCJOdW1iZXJGaWVsZCIsInByb3BzIiwidmFsdWUiLCJzZXRTdGF0ZSIsImxhc3RWYWx1ZSIsImNoYXJBdCIsInByb2Nlc3NlZCIsIm1hdGNoIiwicmVwbGFjZSIsIm9uQ2hhbmdlIiwic3RhdGUiLCJTdHJpbmdGaWVsZCIsInJlZ2lzdHJ5IiwiZmllbGRzIiwiZm9ybURhdGEiLCJyZSIsIlJlZ0V4cCIsImhhbmRsZUNoYW5nZSIsIlJlYWN0IiwiQ29tcG9uZW50IiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwicHJvcFR5cGVzIiwidHlwZXMiLCJmaWVsZFByb3BzIiwiZGVmYXVsdFByb3BzIiwidWlTY2hlbWEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1BLDZCQUE2QixHQUFHLGVBQXRDLEMsQ0FFQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxJQUFNQyxtQkFBbUIsR0FBRyxTQUE1QjtBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFpQk1DLFc7Ozs7O0FBQ0osdUJBQVlDLEtBQVosRUFBbUI7QUFBQTs7QUFBQTs7QUFDakIscUZBQU1BLEtBQU47O0FBRGlCLG1FQVFKLFVBQUFDLEtBQUssRUFBSTtBQUN0QjtBQUNBLFlBQUtDLFFBQUwsQ0FBYztBQUFFQyxRQUFBQSxTQUFTLEVBQUVGO0FBQWIsT0FBZCxFQUZzQixDQUl0QjtBQUNBOzs7QUFDQSxVQUFJLFVBQUdBLEtBQUgsRUFBV0csTUFBWCxDQUFrQixDQUFsQixNQUF5QixHQUE3QixFQUFrQztBQUNoQ0gsUUFBQUEsS0FBSyxjQUFPQSxLQUFQLENBQUw7QUFDRCxPQVJxQixDQVV0QjtBQUNBO0FBQ0E7OztBQUNBLFVBQUlJLFNBQVMsR0FDWCxPQUFPSixLQUFQLEtBQWlCLFFBQWpCLElBQTZCQSxLQUFLLENBQUNLLEtBQU4sQ0FBWVQsNkJBQVosQ0FBN0IsR0FDSSxxQkFBU0ksS0FBSyxDQUFDTSxPQUFOLENBQWNULG1CQUFkLEVBQW1DLEVBQW5DLENBQVQsQ0FESixHQUVJLHFCQUFTRyxLQUFULENBSE47O0FBS0EsWUFBS0QsS0FBTCxDQUFXUSxRQUFYLENBQW9CSCxTQUFwQjtBQUNELEtBM0JrQjs7QUFHakIsVUFBS0ksS0FBTCxHQUFhO0FBQ1hOLE1BQUFBLFNBQVMsRUFBRUgsS0FBSyxDQUFDQztBQUROLEtBQWI7QUFIaUI7QUFNbEI7Ozs7NkJBdUJRO0FBQUEsVUFDQ1MsV0FERCxHQUNpQixLQUFLVixLQUFMLENBQVdXLFFBQVgsQ0FBb0JDLE1BRHJDLENBQ0NGLFdBREQ7O0FBQUEsd0JBRXdCLEtBQUtWLEtBRjdCO0FBQUEsVUFFQ2EsUUFGRCxlQUVDQSxRQUZEO0FBQUEsVUFFY2IsS0FGZDs7QUFBQSxVQUdDRyxTQUhELEdBR2UsS0FBS00sS0FIcEIsQ0FHQ04sU0FIRDtBQUtQLFVBQUlGLEtBQUssR0FBR1ksUUFBWjs7QUFFQSxVQUFJLE9BQU9WLFNBQVAsS0FBcUIsUUFBckIsSUFBaUMsT0FBT0YsS0FBUCxLQUFpQixRQUF0RCxFQUFnRTtBQUM5RDtBQUNBO0FBQ0E7QUFDQSxZQUFNYSxFQUFFLEdBQUcsSUFBSUMsTUFBSixDQUFXLFVBQUdkLEtBQUgsRUFBV00sT0FBWCxDQUFtQixHQUFuQixFQUF3QixLQUF4QixJQUFpQyxTQUE1QyxDQUFYLENBSjhELENBTTlEO0FBQ0E7O0FBQ0EsWUFBSUosU0FBUyxDQUFDRyxLQUFWLENBQWdCUSxFQUFoQixDQUFKLEVBQXlCO0FBQ3ZCYixVQUFBQSxLQUFLLEdBQUdFLFNBQVI7QUFDRDtBQUNGOztBQUVELGFBQ0UsZ0NBQUMsV0FBRCxlQUFpQkgsS0FBakI7QUFBd0IsUUFBQSxRQUFRLEVBQUVDLEtBQWxDO0FBQXlDLFFBQUEsUUFBUSxFQUFFLEtBQUtlO0FBQXhELFNBREY7QUFHRDs7OztFQXJEdUJDLGtCQUFNQyxTOztBQXdEaEMsSUFBSUMsT0FBTyxDQUFDQyxHQUFSLENBQVlDLFFBQVosS0FBeUIsWUFBN0IsRUFBMkM7QUFDekN0QixFQUFBQSxXQUFXLENBQUN1QixTQUFaLEdBQXdCQyxLQUFLLENBQUNDLFVBQTlCO0FBQ0Q7O0FBRUR6QixXQUFXLENBQUMwQixZQUFaLEdBQTJCO0FBQ3pCQyxFQUFBQSxRQUFRLEVBQUU7QUFEZSxDQUEzQjtlQUllM0IsVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0ICogYXMgdHlwZXMgZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5pbXBvcnQgeyBhc051bWJlciB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuXG4vLyBNYXRjaGVzIGEgc3RyaW5nIHRoYXQgZW5kcyBpbiBhIC4gY2hhcmFjdGVyLCBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IGEgc2VxdWVuY2Ugb2Zcbi8vIGRpZ2l0cyBmb2xsb3dlZCBieSBhbnkgbnVtYmVyIG9mIDAgY2hhcmFjdGVycyB1cCB1bnRpbCB0aGUgZW5kIG9mIHRoZSBsaW5lLlxuLy8gRW5zdXJpbmcgdGhhdCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcHJlZml4ZWQgY2hhcmFjdGVyIGlzIGltcG9ydGFudCBzbyB0aGF0XG4vLyB5b3UgZG9uJ3QgaW5jb3JyZWN0bHkgbWF0Y2ggYWdhaW5zdCBcIjBcIi5cbmNvbnN0IHRyYWlsaW5nQ2hhck1hdGNoZXJXaXRoUHJlZml4ID0gL1xcLihbMC05XSowKSokLztcblxuLy8gVGhpcyBpcyB1c2VkIGZvciB0cmltbWluZyB0aGUgdHJhaWxpbmcgMCBhbmQgLiBjaGFyYWN0ZXJzIHdpdGhvdXQgYWZmZWN0aW5nXG4vLyB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nLiBJdHMgcG9zc2libGUgdG8gdXNlIG9uZSBSZWdFeCB3aXRoIGdyb3VwcyBmb3IgdGhpc1xuLy8gZnVuY3Rpb25hbGl0eSwgYnV0IGl0IGlzIGZhaXJseSBjb21wbGV4IGNvbXBhcmVkIHRvIHNpbXBseSBkZWZpbmluZyB0d29cbi8vIGRpZmZlcmVudCBtYXRjaGVycy5cbmNvbnN0IHRyYWlsaW5nQ2hhck1hdGNoZXIgPSAvWzAuXTAqJC87XG5cbi8qKlxuICogVGhlIE51bWJlckZpZWxkIGNsYXNzIGhhcyBzb21lIHNwZWNpYWwgaGFuZGxpbmcgZm9yIGRlYWxpbmcgd2l0aCB0cmFpbGluZ1xuICogZGVjaW1hbCBwb2ludHMgYW5kL29yIHplcm9lcy4gVGhpcyBsb2dpYyBpcyBkZXNpZ25lZCB0byBhbGxvdyB0cmFpbGluZyB2YWx1ZXNcbiAqIHRvIGJlIHZpc2libGUgaW4gdGhlIGlucHV0IGVsZW1lbnQsIGJ1dCBub3QgYmUgcmVwcmVzZW50ZWQgaW4gdGhlXG4gKiBjb3JyZXNwb25kaW5nIGZvcm0gZGF0YS5cbiAqXG4gKiBUaGUgYWxnb3JpdGhtIGlzIGFzIGZvbGxvd3M6XG4gKlxuICogMS4gV2hlbiB0aGUgaW5wdXQgdmFsdWUgY2hhbmdlcyB0aGUgdmFsdWUgaXMgY2FjaGVkIGluIHRoZSBjb21wb25lbnQgc3RhdGVcbiAqXG4gKiAyLiBUaGUgdmFsdWUgaXMgdGhlbiBub3JtYWxpemVkLCByZW1vdmluZyB0cmFpbGluZyBkZWNpbWFsIHBvaW50cyBhbmQgemVyb3MsXG4gKiAgICB0aGVuIHBhc3NlZCB0byB0aGUgXCJvbkNoYW5nZVwiIGNhbGxiYWNrXG4gKlxuICogMy4gV2hlbiB0aGUgY29tcG9uZW50IGlzIHJlbmRlcmVkLCB0aGUgZm9ybURhdGEgdmFsdWUgaXMgY2hlY2tlZCBhZ2FpbnN0IHRoZVxuICogICAgdmFsdWUgY2FjaGVkIGluIHRoZSBzdGF0ZS4gSWYgaXQgbWF0Y2hlcyB0aGUgY2FjaGVkIHZhbHVlLCB0aGUgY2FjaGVkXG4gKiAgICB2YWx1ZSBpcyBwYXNzZWQgdG8gdGhlIGlucHV0IGluc3RlYWQgb2YgdGhlIGZvcm1EYXRhIHZhbHVlXG4gKi9cbmNsYXNzIE51bWJlckZpZWxkIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgbGFzdFZhbHVlOiBwcm9wcy52YWx1ZSxcbiAgICB9O1xuICB9XG5cbiAgaGFuZGxlQ2hhbmdlID0gdmFsdWUgPT4ge1xuICAgIC8vIENhY2hlIHRoZSBvcmlnaW5hbCB2YWx1ZSBpbiBjb21wb25lbnQgc3RhdGVcbiAgICB0aGlzLnNldFN0YXRlKHsgbGFzdFZhbHVlOiB2YWx1ZSB9KTtcblxuICAgIC8vIE5vcm1hbGl6ZSBkZWNpbWFscyB0aGF0IGRvbid0IHN0YXJ0IHdpdGggYSB6ZXJvIGNoYXJhY3RlciBpbiBhZHZhbmNlIHNvXG4gICAgLy8gdGhhdCB0aGUgcmVzdCBvZiB0aGUgbm9ybWFsaXphdGlvbiBsb2dpYyBpcyBzaW1wbGVyXG4gICAgaWYgKGAke3ZhbHVlfWAuY2hhckF0KDApID09PSBcIi5cIikge1xuICAgICAgdmFsdWUgPSBgMCR7dmFsdWV9YDtcbiAgICB9XG5cbiAgICAvLyBDaGVjayB0aGF0IHRoZSB2YWx1ZSBpcyBhIHN0cmluZyAodGhpcyBjYW4gaGFwcGVuIGlmIHRoZSB3aWRnZXQgdXNlZCBpcyBhXG4gICAgLy8gPHNlbGVjdD4sIGR1ZSB0byBhbiBlbnVtIGRlY2xhcmF0aW9uIGV0YykgdGhlbiwgaWYgdGhlIHZhbHVlIGVuZHMgaW4gYVxuICAgIC8vIHRyYWlsaW5nIGRlY2ltYWwgcG9pbnQgb3IgbXVsdGlwbGUgemVyb2VzLCBzdHJpcCB0aGUgdHJhaWxpbmcgdmFsdWVzXG4gICAgbGV0IHByb2Nlc3NlZCA9XG4gICAgICB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgdmFsdWUubWF0Y2godHJhaWxpbmdDaGFyTWF0Y2hlcldpdGhQcmVmaXgpXG4gICAgICAgID8gYXNOdW1iZXIodmFsdWUucmVwbGFjZSh0cmFpbGluZ0NoYXJNYXRjaGVyLCBcIlwiKSlcbiAgICAgICAgOiBhc051bWJlcih2YWx1ZSk7XG5cbiAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKHByb2Nlc3NlZCk7XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgU3RyaW5nRmllbGQgfSA9IHRoaXMucHJvcHMucmVnaXN0cnkuZmllbGRzO1xuICAgIGNvbnN0IHsgZm9ybURhdGEsIC4uLnByb3BzIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHsgbGFzdFZhbHVlIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgbGV0IHZhbHVlID0gZm9ybURhdGE7XG5cbiAgICBpZiAodHlwZW9mIGxhc3RWYWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgIC8vIENvbnN0cnVjdCBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IGNoZWNrcyBmb3IgYSBzdHJpbmcgdGhhdCBjb25zaXN0c1xuICAgICAgLy8gb2YgdGhlIGZvcm1EYXRhIHZhbHVlIHN1ZmZpeGVkIHdpdGggemVybyBvciBvbmUgJy4nIGNoYXJhY3RlcnMgYW5kIHplcm9cbiAgICAgIC8vIG9yIG1vcmUgJzAnIGNoYXJhY3RlcnNcbiAgICAgIGNvbnN0IHJlID0gbmV3IFJlZ0V4cChgJHt2YWx1ZX1gLnJlcGxhY2UoXCIuXCIsIFwiXFxcXC5cIikgKyBcIlxcXFwuPzAqJFwiKTtcblxuICAgICAgLy8gSWYgdGhlIGNhY2hlZCBcImxhc3RWYWx1ZVwiIGlzIGEgbWF0Y2gsIHVzZSB0aGF0IGluc3RlYWQgb2YgdGhlIGZvcm1EYXRhXG4gICAgICAvLyB2YWx1ZSB0byBwcmV2ZW50IHRoZSBpbnB1dCB2YWx1ZSBmcm9tIGNoYW5naW5nIGluIHRoZSBVSVxuICAgICAgaWYgKGxhc3RWYWx1ZS5tYXRjaChyZSkpIHtcbiAgICAgICAgdmFsdWUgPSBsYXN0VmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTdHJpbmdGaWVsZCB7Li4ucHJvcHN9IGZvcm1EYXRhPXt2YWx1ZX0gb25DaGFuZ2U9e3RoaXMuaGFuZGxlQ2hhbmdlfSAvPlxuICAgICk7XG4gIH1cbn1cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICBOdW1iZXJGaWVsZC5wcm9wVHlwZXMgPSB0eXBlcy5maWVsZFByb3BzO1xufVxuXG5OdW1iZXJGaWVsZC5kZWZhdWx0UHJvcHMgPSB7XG4gIHVpU2NoZW1hOiB7fSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE51bWJlckZpZWxkO1xuIl19
@@ -1,345 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports["default"] = void 0;
7
-
8
- var _AddButton = _interopRequireDefault(require("../AddButton"));
9
-
10
- var _react = _interopRequireWildcard(require("react"));
11
-
12
- var types = _interopRequireWildcard(require("../../types"));
13
-
14
- var _utils = require("../../utils");
15
-
16
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } }
17
-
18
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
19
-
20
- function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
21
-
22
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
23
-
24
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
25
-
26
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
27
-
28
- function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
29
-
30
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
31
-
32
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
33
-
34
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
35
-
36
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
37
-
38
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
39
-
40
- function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
41
-
42
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
43
-
44
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
45
-
46
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
47
-
48
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
49
-
50
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
51
-
52
- function DefaultObjectFieldTemplate(props) {
53
- var TitleField = props.TitleField,
54
- DescriptionField = props.DescriptionField;
55
- return _react["default"].createElement("fieldset", {
56
- id: props.idSchema.$id
57
- }, (props.uiSchema["ui:title"] || props.title) && _react["default"].createElement(TitleField, {
58
- id: "".concat(props.idSchema.$id, "__title"),
59
- title: props.title || props.uiSchema["ui:title"],
60
- required: props.required,
61
- formContext: props.formContext
62
- }), props.description && _react["default"].createElement(DescriptionField, {
63
- id: "".concat(props.idSchema.$id, "__description"),
64
- description: props.description,
65
- formContext: props.formContext
66
- }), props.properties.map(function (prop) {
67
- return prop.content;
68
- }), (0, _utils.canExpand)(props.schema, props.uiSchema, props.formData) && _react["default"].createElement(_AddButton["default"], {
69
- className: "object-property-expand",
70
- onClick: props.onAddClick(props.schema),
71
- disabled: props.disabled || props.readonly
72
- }));
73
- }
74
-
75
- var ObjectField =
76
- /*#__PURE__*/
77
- function (_Component) {
78
- _inherits(ObjectField, _Component);
79
-
80
- function ObjectField() {
81
- var _getPrototypeOf2;
82
-
83
- var _this;
84
-
85
- _classCallCheck(this, ObjectField);
86
-
87
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
88
- args[_key] = arguments[_key];
89
- }
90
-
91
- _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ObjectField)).call.apply(_getPrototypeOf2, [this].concat(args)));
92
-
93
- _defineProperty(_assertThisInitialized(_this), "state", {
94
- wasPropertyKeyModified: false,
95
- additionalProperties: {}
96
- });
97
-
98
- _defineProperty(_assertThisInitialized(_this), "onPropertyChange", function (name) {
99
- var addedByAdditionalProperties = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
100
- return function (value, errorSchema) {
101
- if (value === undefined && addedByAdditionalProperties) {
102
- // Don't set value = undefined for fields added by
103
- // additionalProperties. Doing so removes them from the
104
- // formData, which causes them to completely disappear
105
- // (including the input field for the property name). Unlike
106
- // fields which are "mandated" by the schema, these fields can
107
- // be set to undefined by clicking a "delete field" button, so
108
- // set empty values to the empty string.
109
- value = "";
110
- }
111
-
112
- var newFormData = _objectSpread({}, _this.props.formData, _defineProperty({}, name, value));
113
-
114
- _this.props.onChange(newFormData, errorSchema && _this.props.errorSchema && _objectSpread({}, _this.props.errorSchema, _defineProperty({}, name, errorSchema)));
115
- };
116
- });
117
-
118
- _defineProperty(_assertThisInitialized(_this), "onDropPropertyClick", function (key) {
119
- return function (event) {
120
- event.preventDefault();
121
- var _this$props = _this.props,
122
- onChange = _this$props.onChange,
123
- formData = _this$props.formData;
124
-
125
- var copiedFormData = _objectSpread({}, formData);
126
-
127
- delete copiedFormData[key];
128
- onChange(copiedFormData);
129
- };
130
- });
131
-
132
- _defineProperty(_assertThisInitialized(_this), "getAvailableKey", function (preferredKey, formData) {
133
- var index = 0;
134
- var newKey = preferredKey;
135
-
136
- while (formData.hasOwnProperty(newKey)) {
137
- newKey = "".concat(preferredKey, "-").concat(++index);
138
- }
139
-
140
- return newKey;
141
- });
142
-
143
- _defineProperty(_assertThisInitialized(_this), "onKeyChange", function (oldValue) {
144
- return function (value, errorSchema) {
145
- if (oldValue === value) {
146
- return;
147
- }
148
-
149
- value = _this.getAvailableKey(value, _this.props.formData);
150
-
151
- var newFormData = _objectSpread({}, _this.props.formData);
152
-
153
- var newKeys = _defineProperty({}, oldValue, value);
154
-
155
- var keyValues = Object.keys(newFormData).map(function (key) {
156
- var newKey = newKeys[key] || key;
157
- return _defineProperty({}, newKey, newFormData[key]);
158
- });
159
- var renamedObj = Object.assign.apply(Object, [{}].concat(_toConsumableArray(keyValues)));
160
-
161
- _this.setState({
162
- wasPropertyKeyModified: true
163
- });
164
-
165
- _this.props.onChange(renamedObj, errorSchema && _this.props.errorSchema && _objectSpread({}, _this.props.errorSchema, _defineProperty({}, value, errorSchema)));
166
- };
167
- });
168
-
169
- _defineProperty(_assertThisInitialized(_this), "handleAddClick", function (schema) {
170
- return function () {
171
- var type = schema.additionalProperties.type;
172
-
173
- var newFormData = _objectSpread({}, _this.props.formData);
174
-
175
- if (schema.additionalProperties.hasOwnProperty("$ref")) {
176
- var _this$props$registry = _this.props.registry,
177
- registry = _this$props$registry === void 0 ? (0, _utils.getDefaultRegistry)() : _this$props$registry;
178
- var refSchema = (0, _utils.retrieveSchema)({
179
- $ref: schema.additionalProperties["$ref"]
180
- }, registry.rootSchema, _this.props.formData);
181
- type = refSchema.type;
182
- }
183
-
184
- newFormData[_this.getAvailableKey("newKey", newFormData)] = _this.getDefaultValue(type);
185
-
186
- _this.props.onChange(newFormData);
187
- };
188
- });
189
-
190
- return _this;
191
- }
192
-
193
- _createClass(ObjectField, [{
194
- key: "isRequired",
195
- value: function isRequired(name) {
196
- var schema = this.props.schema;
197
- return Array.isArray(schema.required) && schema.required.indexOf(name) !== -1;
198
- }
199
- }, {
200
- key: "getDefaultValue",
201
- value: function getDefaultValue(type) {
202
- switch (type) {
203
- case "string":
204
- return "New Value";
205
-
206
- case "array":
207
- return [];
208
-
209
- case "boolean":
210
- return false;
211
-
212
- case "null":
213
- return null;
214
-
215
- case "number":
216
- return 0;
217
-
218
- case "object":
219
- return {};
220
-
221
- default:
222
- // We don't have a datatype for some reason (perhaps additionalProperties was true)
223
- return "New Value";
224
- }
225
- }
226
- }, {
227
- key: "render",
228
- value: function render() {
229
- var _this2 = this;
230
-
231
- var _this$props2 = this.props,
232
- uiSchema = _this$props2.uiSchema,
233
- formData = _this$props2.formData,
234
- errorSchema = _this$props2.errorSchema,
235
- idSchema = _this$props2.idSchema,
236
- name = _this$props2.name,
237
- required = _this$props2.required,
238
- disabled = _this$props2.disabled,
239
- readonly = _this$props2.readonly,
240
- hideError = _this$props2.hideError,
241
- idPrefix = _this$props2.idPrefix,
242
- idSeparator = _this$props2.idSeparator,
243
- onBlur = _this$props2.onBlur,
244
- onFocus = _this$props2.onFocus,
245
- _this$props2$registry = _this$props2.registry,
246
- registry = _this$props2$registry === void 0 ? (0, _utils.getDefaultRegistry)() : _this$props2$registry;
247
- var rootSchema = registry.rootSchema,
248
- fields = registry.fields,
249
- formContext = registry.formContext;
250
- var SchemaField = fields.SchemaField,
251
- TitleField = fields.TitleField,
252
- DescriptionField = fields.DescriptionField;
253
- var schema = (0, _utils.retrieveSchema)(this.props.schema, rootSchema, formData);
254
- var title = schema.title === undefined ? name : schema.title;
255
- var description = uiSchema["ui:description"] || schema.description;
256
- var orderedProperties;
257
-
258
- try {
259
- var properties = Object.keys(schema.properties || {});
260
- orderedProperties = (0, _utils.orderProperties)(properties, uiSchema["ui:order"]);
261
- } catch (err) {
262
- return _react["default"].createElement("div", null, _react["default"].createElement("p", {
263
- className: "config-error",
264
- style: {
265
- color: "red"
266
- }
267
- }, "Invalid ", name || "root", " object field configuration:", _react["default"].createElement("em", null, err.message), "."), _react["default"].createElement("pre", null, JSON.stringify(schema)));
268
- }
269
-
270
- var Template = uiSchema["ui:ObjectFieldTemplate"] || registry.ObjectFieldTemplate || DefaultObjectFieldTemplate;
271
- var templateProps = {
272
- title: uiSchema["ui:title"] || title,
273
- description: description,
274
- TitleField: TitleField,
275
- DescriptionField: DescriptionField,
276
- properties: orderedProperties.map(function (name) {
277
- var addedByAdditionalProperties = schema.properties[name].hasOwnProperty(_utils.ADDITIONAL_PROPERTY_FLAG);
278
- var fieldUiSchema = addedByAdditionalProperties ? uiSchema.additionalProperties : uiSchema[name];
279
- var hidden = fieldUiSchema && fieldUiSchema["ui:widget"] === "hidden";
280
- return {
281
- content: _react["default"].createElement(SchemaField, {
282
- key: name,
283
- name: name,
284
- required: _this2.isRequired(name),
285
- schema: schema.properties[name],
286
- uiSchema: fieldUiSchema,
287
- errorSchema: errorSchema[name],
288
- idSchema: idSchema[name],
289
- idPrefix: idPrefix,
290
- idSeparator: idSeparator,
291
- formData: (formData || {})[name],
292
- wasPropertyKeyModified: _this2.state.wasPropertyKeyModified,
293
- onKeyChange: _this2.onKeyChange(name),
294
- onChange: _this2.onPropertyChange(name, addedByAdditionalProperties),
295
- onBlur: onBlur,
296
- onFocus: onFocus,
297
- registry: registry,
298
- disabled: disabled,
299
- readonly: readonly,
300
- hideError: hideError,
301
- onDropPropertyClick: _this2.onDropPropertyClick
302
- }),
303
- name: name,
304
- readonly: readonly,
305
- disabled: disabled,
306
- required: required,
307
- hidden: hidden
308
- };
309
- }),
310
- readonly: readonly,
311
- disabled: disabled,
312
- required: required,
313
- idSchema: idSchema,
314
- uiSchema: uiSchema,
315
- schema: schema,
316
- formData: formData,
317
- formContext: formContext,
318
- registry: registry
319
- };
320
- return _react["default"].createElement(Template, _extends({}, templateProps, {
321
- onAddClick: this.handleAddClick
322
- }));
323
- }
324
- }]);
325
-
326
- return ObjectField;
327
- }(_react.Component);
328
-
329
- _defineProperty(ObjectField, "defaultProps", {
330
- uiSchema: {},
331
- formData: {},
332
- errorSchema: {},
333
- idSchema: {},
334
- required: false,
335
- disabled: false,
336
- readonly: false
337
- });
338
-
339
- if (process.env.NODE_ENV !== "production") {
340
- ObjectField.propTypes = types.fieldProps;
341
- }
342
-
343
- var _default = ObjectField;
344
- exports["default"] = _default;
345
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2ZpZWxkcy9PYmplY3RGaWVsZC5qcyJdLCJuYW1lcyI6WyJEZWZhdWx0T2JqZWN0RmllbGRUZW1wbGF0ZSIsInByb3BzIiwiVGl0bGVGaWVsZCIsIkRlc2NyaXB0aW9uRmllbGQiLCJpZFNjaGVtYSIsIiRpZCIsInVpU2NoZW1hIiwidGl0bGUiLCJyZXF1aXJlZCIsImZvcm1Db250ZXh0IiwiZGVzY3JpcHRpb24iLCJwcm9wZXJ0aWVzIiwibWFwIiwicHJvcCIsImNvbnRlbnQiLCJzY2hlbWEiLCJmb3JtRGF0YSIsIm9uQWRkQ2xpY2siLCJkaXNhYmxlZCIsInJlYWRvbmx5IiwiT2JqZWN0RmllbGQiLCJ3YXNQcm9wZXJ0eUtleU1vZGlmaWVkIiwiYWRkaXRpb25hbFByb3BlcnRpZXMiLCJuYW1lIiwiYWRkZWRCeUFkZGl0aW9uYWxQcm9wZXJ0aWVzIiwidmFsdWUiLCJlcnJvclNjaGVtYSIsInVuZGVmaW5lZCIsIm5ld0Zvcm1EYXRhIiwib25DaGFuZ2UiLCJrZXkiLCJldmVudCIsInByZXZlbnREZWZhdWx0IiwiY29waWVkRm9ybURhdGEiLCJwcmVmZXJyZWRLZXkiLCJpbmRleCIsIm5ld0tleSIsImhhc093blByb3BlcnR5Iiwib2xkVmFsdWUiLCJnZXRBdmFpbGFibGVLZXkiLCJuZXdLZXlzIiwia2V5VmFsdWVzIiwiT2JqZWN0Iiwia2V5cyIsInJlbmFtZWRPYmoiLCJhc3NpZ24iLCJzZXRTdGF0ZSIsInR5cGUiLCJyZWdpc3RyeSIsInJlZlNjaGVtYSIsIiRyZWYiLCJyb290U2NoZW1hIiwiZ2V0RGVmYXVsdFZhbHVlIiwiQXJyYXkiLCJpc0FycmF5IiwiaW5kZXhPZiIsImhpZGVFcnJvciIsImlkUHJlZml4IiwiaWRTZXBhcmF0b3IiLCJvbkJsdXIiLCJvbkZvY3VzIiwiZmllbGRzIiwiU2NoZW1hRmllbGQiLCJvcmRlcmVkUHJvcGVydGllcyIsImVyciIsImNvbG9yIiwibWVzc2FnZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJUZW1wbGF0ZSIsIk9iamVjdEZpZWxkVGVtcGxhdGUiLCJ0ZW1wbGF0ZVByb3BzIiwiQURESVRJT05BTF9QUk9QRVJUWV9GTEFHIiwiZmllbGRVaVNjaGVtYSIsImhpZGRlbiIsImlzUmVxdWlyZWQiLCJzdGF0ZSIsIm9uS2V5Q2hhbmdlIiwib25Qcm9wZXJ0eUNoYW5nZSIsIm9uRHJvcFByb3BlcnR5Q2xpY2siLCJoYW5kbGVBZGRDbGljayIsIkNvbXBvbmVudCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInByb3BUeXBlcyIsInR5cGVzIiwiZmllbGRQcm9wcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFBLFNBQVNBLDBCQUFULENBQW9DQyxLQUFwQyxFQUEyQztBQUFBLE1BQ2pDQyxVQURpQyxHQUNBRCxLQURBLENBQ2pDQyxVQURpQztBQUFBLE1BQ3JCQyxnQkFEcUIsR0FDQUYsS0FEQSxDQUNyQkUsZ0JBRHFCO0FBRXpDLFNBQ0U7QUFBVSxJQUFBLEVBQUUsRUFBRUYsS0FBSyxDQUFDRyxRQUFOLENBQWVDO0FBQTdCLEtBQ0csQ0FBQ0osS0FBSyxDQUFDSyxRQUFOLENBQWUsVUFBZixLQUE4QkwsS0FBSyxDQUFDTSxLQUFyQyxLQUNDLGdDQUFDLFVBQUQ7QUFDRSxJQUFBLEVBQUUsWUFBS04sS0FBSyxDQUFDRyxRQUFOLENBQWVDLEdBQXBCLFlBREo7QUFFRSxJQUFBLEtBQUssRUFBRUosS0FBSyxDQUFDTSxLQUFOLElBQWVOLEtBQUssQ0FBQ0ssUUFBTixDQUFlLFVBQWYsQ0FGeEI7QUFHRSxJQUFBLFFBQVEsRUFBRUwsS0FBSyxDQUFDTyxRQUhsQjtBQUlFLElBQUEsV0FBVyxFQUFFUCxLQUFLLENBQUNRO0FBSnJCLElBRkosRUFTR1IsS0FBSyxDQUFDUyxXQUFOLElBQ0MsZ0NBQUMsZ0JBQUQ7QUFDRSxJQUFBLEVBQUUsWUFBS1QsS0FBSyxDQUFDRyxR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aW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0ICogYXMgdHlwZXMgZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5cbmltcG9ydCB7XG4gIG9yZGVyUHJvcGVydGllcyxcbiAgcmV0cmlldmVTY2hlbWEsXG4gIGdldERlZmF1bHRSZWdpc3RyeSxcbiAgY2FuRXhwYW5kLFxuICBBRERJVElPTkFMX1BST1BFUlRZX0ZMQUcsXG59IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuXG5mdW5jdGlvbiBEZWZhdWx0T2JqZWN0RmllbGRUZW1wbGF0ZShwcm9wcykge1xuICBjb25zdCB7IFRpdGxlRmllbGQsIERlc2NyaXB0aW9uRmllbGQgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxmaWVsZHNldCBpZD17cHJvcHMuaWRTY2hlbWEuJGlkfT5cbiAgICAgIHsocHJvcHMudWlTY2hlbWFbXCJ1aTp0aXRsZVwiXSB8fCBwcm9wcy50aXRsZSkgJiYgKFxuICAgICAgICA8VGl0bGVGaWVsZFxuICAgICAgICAgIGlkPXtgJHtwcm9wcy5pZFNjaGVtYS4kaWR9X190aXRsZWB9XG4gICAgICAgICAgdGl0bGU9e3Byb3BzLnRpdGxlIHx8IHByb3BzLnVpU2NoZW1hW1widWk6dGl0bGVcIl19XG4gICAgICAgICAgcmVxdWlyZWQ9e3Byb3BzLnJlcXVpcmVkfVxuICAgICAgICAgIGZvcm1Db250ZXh0PXtwcm9wcy5mb3JtQ29udGV4dH1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICB7cHJvcHMuZGVzY3JpcHRpb24gJiYgKFxuICAgICAgICA8RGVzY3JpcHRpb25GaWVsZFxuICAgICAgICAgIGlkPXtgJHtwcm9wcy5pZFNjaGVtYS4kaWR9X19kZXNjcmlwdGlvbmB9XG4gICAgICAgICAgZGVzY3JpcHRpb249e3Byb3BzLmRlc2NyaXB0aW9ufVxuICAgICAgICAgIGZvcm1Db250ZXh0PXtwcm9wcy5mb3JtQ29udGV4dH1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICB7cHJvcHMucHJvcGVydGllcy5tYXAocHJvcCA9PiBwcm9wLmNvbnRlbnQpfVxuICAgICAge2NhbkV4cGFuZChwcm9wcy5zY2hlbWEsIHByb3BzLnVpU2NoZW1hLCBwcm9wcy5mb3JtRGF0YSkgJiYgKFxuICAgICAgICA8QWRkQnV0dG9uXG4gICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LXByb3BlcnR5LWV4cGFuZFwiXG4gICAgICAgICAgb25DbGljaz17cHJvcHMub25BZGRDbGljayhwcm9wcy5zY2hlbWEpfVxuICAgICAgICAgIGRpc2FibGVkPXtwcm9wcy5kaXNhYmxlZCB8fCBwcm9wcy5yZWFkb25seX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9maWVsZHNldD5cbiAgKTtcbn1cblxuY2xhc3MgT2JqZWN0RmllbGQgZXh0ZW5kcyBDb21wb25lbnQge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIHVpU2NoZW1hOiB7fSxcbiAgICBmb3JtRGF0YToge30sXG4gICAgZXJyb3JTY2hlbWE6IHt9LFxuICAgIGlkU2NoZW1hOiB7fSxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIHJlYWRvbmx5OiBmYWxzZSxcbiAgfTtcblxuICBzdGF0ZSA9IHtcbiAgICB3YXNQcm9wZXJ0eUtleU1vZGlmaWVkOiBmYWxzZSxcbiAgICBhZGRpdGlvbmFsUHJvcGVydGllczoge30sXG4gIH07XG5cbiAgaXNSZXF1aXJlZChuYW1lKSB7XG4gICAgY29uc3Qgc2NoZW1hID0gdGhpcy5wcm9wcy5zY2hlbWE7XG4gICAgcmV0dXJuIChcbiAgICAgIEFycmF5LmlzQXJyYXkoc2NoZW1hLnJlcXVpcmVkKSAmJiBzY2hlbWEucmVxdWlyZWQuaW5kZXhPZihuYW1lKSAhPT0gLTFcbiAgICApO1xuICB9XG5cbiAgb25Qcm9wZXJ0eUNoYW5nZSA9IChuYW1lLCBhZGRlZEJ5QWRkaXRpb25hbFByb3BlcnRpZXMgPSBmYWxzZSkgPT4ge1xuICAgIHJldHVybiAodmFsdWUsIGVycm9yU2NoZW1hKSA9PiB7XG4gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiBhZGRlZEJ5QWRkaXRpb25hbFByb3BlcnRpZXMpIHtcbiAgICAgICAgLy8gRG9uJ3Qgc2V0IHZhbHVlID0gdW5kZWZpbmVkIGZvciBmaWVsZHMgYWRkZWQgYnlcbiAgICAgICAgLy8gYWRkaXRpb25hbFByb3BlcnRpZXMuIERvaW5nIHNvIHJlbW92ZXMgdGhlbSBmcm9tIHRoZVxuICAgICAgICAvLyBmb3JtRGF0YSwgd2hpY2ggY2F1c2VzIHRoZW0gdG8gY29tcGxldGVseSBkaXNhcHBlYXJcbiAgICAgICAgLy8gKGluY2x1ZGluZyB0aGUgaW5wdXQgZmllbGQgZm9yIHRoZSBwcm9wZXJ0eSBuYW1lKS4gVW5saWtlXG4gICAgICAgIC8vIGZpZWxkcyB3aGljaCBhcmUgXCJtYW5kYXRlZFwiIGJ5IHRoZSBzY2hlbWEsIHRoZXNlIGZpZWxkcyBjYW5cbiAgICAgICAgLy8gYmUgc2V0IHRvIHVuZGVmaW5lZCBieSBjbGlja2luZyBhIFwiZGVsZXRlIGZpZWxkXCIgYnV0dG9uLCBzb1xuICAgICAgICAvLyBzZXQgZW1wdHkgdmFsdWVzIHRvIHRoZSBlbXB0eSBzdHJpbmcuXG4gICAgICAgIHZhbHVlID0gXCJcIjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG5ld0Zvcm1EYXRhID0geyAuLi50aGlzLnByb3BzLmZvcm1EYXRhLCBbbmFtZV06IHZhbHVlIH07XG4gICAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKFxuICAgICAgICBuZXdGb3JtRGF0YSxcbiAgICAgICAgZXJyb3JTY2hlbWEgJiZcbiAgICAgICAgICB0aGlzLnByb3BzLmVycm9yU2NoZW1hICYmIHtcbiAgICAgICAgICAgIC4uLnRoaXMucHJvcHMuZXJyb3JTY2hlbWEsXG4gICAgICAgICAgICBbbmFtZV06IGVycm9yU2NoZW1hLFxuICAgICAgICAgIH1cbiAgICAgICk7XG4gICAgfTtcbiAgfTtcblxuICBvbkRyb3BQcm9wZXJ0eUNsaWNrID0ga2V5ID0+IHtcbiAgICByZXR1cm4gZXZlbnQgPT4ge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGNvbnN0IHsgb25DaGFuZ2UsIGZvcm1EYXRhIH0gPSB0aGlzLnByb3BzO1xuICAgICAgY29uc3QgY29waWVkRm9ybURhdGEgPSB7IC4uLmZvcm1EYXRhIH07XG4gICAgICBkZWxldGUgY29waWVkRm9ybURhdGFba2V5XTtcbiAgICAgIG9uQ2hhbmdlKGNvcGllZEZvcm1EYXRhKTtcbiAgICB9O1xuICB9O1xuXG4gIGdldEF2YWlsYWJsZUtleSA9IChwcmVmZXJyZWRLZXksIGZvcm1EYXRhKSA9PiB7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgbmV3S2V5ID0gcHJlZmVycmVkS2V5O1xuICAgIHdoaWxlIChmb3JtRGF0YS5oYXNPd25Qcm9wZXJ0eShuZXdLZXkpKSB7XG4gICAgICBuZXdLZXkgPSBgJHtwcmVmZXJyZWRLZXl9LSR7KytpbmRleH1gO1xuICAgIH1cbiAgICByZXR1cm4gbmV3S2V5O1xuICB9O1xuXG4gIG9uS2V5Q2hhbmdlID0gb2xkVmFsdWUgPT4ge1xuICAgIHJldHVybiAodmFsdWUsIGVycm9yU2NoZW1hKSA9PiB7XG4gICAgICBpZiAob2xkVmFsdWUgPT09IHZhbHVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFsdWUgPSB0aGlzLmdldEF2YWlsYWJsZUtleSh2YWx1ZSwgdGhpcy5wcm9wcy5mb3JtRGF0YSk7XG4gICAgICBjb25zdCBuZXdGb3JtRGF0YSA9IHsgLi4udGhpcy5wcm9wcy5mb3JtRGF0YSB9O1xuICAgICAgY29uc3QgbmV3S2V5cyA9IHsgW29sZFZhbHVlXTogdmFsdWUgfTtcbiAgICAgIGNvbnN0IGtleVZhbHVlcyA9IE9iamVjdC5rZXlzKG5ld0Zvcm1EYXRhKS5tYXAoa2V5ID0+IHtcbiAgICAgICAgY29uc3QgbmV3S2V5ID0gbmV3S2V5c1trZXldIHx8IGtleTtcbiAgICAgICAgcmV0dXJuIHsgW25ld0tleV06IG5ld0Zvcm1EYXRhW2tleV0gfTtcbiAgICAgIH0pO1xuICAgICAgY29uc3QgcmVuYW1lZE9iaiA9IE9iamVjdC5hc3NpZ24oe30sIC4uLmtleVZhbHVlcyk7XG5cbiAgICAgIHRoaXMuc2V0U3RhdGUoeyB3YXNQcm9wZXJ0eUtleU1vZGlmaWVkOiB0cnVlIH0pO1xuXG4gICAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKFxuICAgICAgICByZW5hbWVkT2JqLFxuICAgICAgICBlcnJvclNjaGVtYSAmJlxuICAgICAgICAgIHRoaXMucHJvcHMuZXJyb3JTY2hlbWEgJiYge1xuICAgICAgICAgICAgLi4udGhpcy5wcm9wcy5lcnJvclNjaGVtYSxcbiAgICAgICAgICAgIFt2YWx1ZV06IGVycm9yU2NoZW1hLFxuICAgICAgICAgIH1cbiAgICAgICk7XG4gICAgfTtcbiAgfTtcblxuICBnZXREZWZhdWx0VmFsdWUodHlwZSkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgICByZXR1cm4gXCJOZXcgVmFsdWVcIjtcbiAgICAgIGNhc2UgXCJhcnJheVwiOlxuICAgICAgICByZXR1cm4gW107XG4gICAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBjYXNlIFwibnVsbFwiOlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIFdlIGRvbid0IGhhdmUgYSBkYXRhdHlwZSBmb3Igc29tZSByZWFzb24gKHBlcmhhcHMgYWRkaXRpb25hbFByb3BlcnRpZXMgd2FzIHRydWUpXG4gICAgICAgIHJldHVybiBcIk5ldyBWYWx1ZVwiO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUFkZENsaWNrID0gc2NoZW1hID0+ICgpID0+IHtcbiAgICBsZXQgdHlwZSA9IHNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllcy50eXBlO1xuICAgIGNvbnN0IG5ld0Zvcm1EYXRhID0geyAuLi50aGlzLnByb3BzLmZvcm1EYXRhIH07XG5cbiAgICBpZiAoc2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KFwiJHJlZlwiKSkge1xuICAgICAgY29uc3QgeyByZWdpc3RyeSA9IGdldERlZmF1bHRSZWdpc3RyeSgpIH0gPSB0aGlzLnByb3BzO1xuICAgICAgY29uc3QgcmVmU2NoZW1hID0gcmV0cmlldmVTY2hlbWEoXG4gICAgICAgIHsgJHJlZjogc2NoZW1hLmFkZGl0aW9uYWxQcm9wZXJ0aWVzW1wiJHJlZlwiXSB9LFxuICAgICAgICByZWdpc3RyeS5yb290U2NoZW1hLFxuICAgICAgICB0aGlzLnByb3BzLmZvcm1EYXRhXG4gICAgICApO1xuXG4gICAgICB0eXBlID0gcmVmU2NoZW1hLnR5cGU7XG4gICAgfVxuXG4gICAgbmV3Rm9ybURhdGFbXG4gICAgICB0aGlzLmdldEF2YWlsYWJsZUtleShcIm5ld0tleVwiLCBuZXdGb3JtRGF0YSlcbiAgICBdID0gdGhpcy5nZXREZWZhdWx0VmFsdWUodHlwZSk7XG5cbiAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKG5ld0Zvcm1EYXRhKTtcbiAgfTtcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgdWlTY2hlbWEsXG4gICAgICBmb3JtRGF0YSxcbiAgICAgIGVycm9yU2NoZW1hLFxuICAgICAgaWRTY2hlbWEsXG4gICAgICBuYW1lLFxuICAgICAgcmVxdWlyZWQsXG4gICAgICBkaXNhYmxlZCxcbiAgICAgIHJlYWRvbmx5LFxuICAgICAgaGlkZUVycm9yLFxuICAgICAgaWRQcmVmaXgsXG4gICAgICBpZFNlcGFyYXRvcixcbiAgICAgIG9uQmx1cixcbiAgICAgIG9uRm9jdXMsXG4gICAgICByZWdpc3RyeSA9IGdldERlZmF1bHRSZWdpc3RyeSgpLFxuICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgY29uc3QgeyByb290U2NoZW1hLCBmaWVsZHMsIGZvcm1Db250ZXh0IH0gPSByZWdpc3RyeTtcbiAgICBjb25zdCB7IFNjaGVtYUZpZWxkLCBUaXRsZUZpZWxkLCBEZXNjcmlwdGlvbkZpZWxkIH0gPSBmaWVsZHM7XG4gICAgY29uc3Qgc2NoZW1hID0gcmV0cmlldmVTY2hlbWEodGhpcy5wcm9wcy5zY2hlbWEsIHJvb3RTY2hlbWEsIGZvcm1EYXRhKTtcblxuICAgIGNvbnN0IHRpdGxlID0gc2NoZW1hLnRpdGxlID09PSB1bmRlZmluZWQgPyBuYW1lIDogc2NoZW1hLnRpdGxlO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gdWlTY2hlbWFbXCJ1aTpkZXNjcmlwdGlvblwiXSB8fCBzY2hlbWEuZGVzY3JpcHRpb247XG4gICAgbGV0IG9yZGVyZWRQcm9wZXJ0aWVzO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwcm9wZXJ0aWVzID0gT2JqZWN0LmtleXMoc2NoZW1hLnByb3BlcnRpZXMgfHwge30pO1xuICAgICAgb3JkZXJlZFByb3BlcnRpZXMgPSBvcmRlclByb3BlcnRpZXMocHJvcGVydGllcywgdWlTY2hlbWFbXCJ1aTpvcmRlclwiXSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxwIGNsYXNzTmFtZT1cImNvbmZpZy1lcnJvclwiIHN0eWxlPXt7IGNvbG9yOiBcInJlZFwiIH19PlxuICAgICAgICAgICAgSW52YWxpZCB7bmFtZSB8fCBcInJvb3RcIn0gb2JqZWN0IGZpZWxkIGNvbmZpZ3VyYXRpb246XG4gICAgICAgICAgICA8ZW0+e2Vyci5tZXNzYWdlfTwvZW0+LlxuICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8cHJlPntKU09OLnN0cmluZ2lmeShzY2hlbWEpfTwvcHJlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgVGVtcGxhdGUgPVxuICAgICAgdWlTY2hlbWFbXCJ1aTpPYmplY3RGaWVsZFRlbXBsYXRlXCJdIHx8XG4gICAgICByZWdpc3RyeS5PYmplY3RGaWVsZFRlbXBsYXRlIHx8XG4gICAgICBEZWZhdWx0T2JqZWN0RmllbGRUZW1wbGF0ZTtcblxuICAgIGNvbnN0IHRlbXBsYXRlUHJvcHMgPSB7XG4gICAgICB0aXRsZTogdWlTY2hlbWFbXCJ1aTp0aXRsZVwiXSB8fCB0aXRsZSxcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgVGl0bGVGaWVsZCxcbiAgICAgIERlc2NyaXB0aW9uRmllbGQsXG4gICAgICBwcm9wZXJ0aWVzOiBvcmRlcmVkUHJvcGVydGllcy5tYXAobmFtZSA9PiB7XG4gICAgICAgIGNvbnN0IGFkZGVkQnlBZGRpdGlvbmFsUHJvcGVydGllcyA9IHNjaGVtYS5wcm9wZXJ0aWVzW1xuICAgICAgICAgIG5hbWVcbiAgICAgICAgXS5oYXNPd25Qcm9wZXJ0eShBRERJVElPTkFMX1BST1BFUlRZX0ZMQUcpO1xuICAgICAgICBjb25zdCBmaWVsZFVpU2NoZW1hID0gYWRkZWRCeUFkZGl0aW9uYWxQcm9wZXJ0aWVzXG4gICAgICAgICAgPyB1aVNjaGVtYS5hZGRpdGlvbmFsUHJvcGVydGllc1xuICAgICAgICAgIDogdWlTY2hlbWFbbmFtZV07XG4gICAgICAgIGNvbnN0IGhpZGRlbiA9IGZpZWxkVWlTY2hlbWEgJiYgZmllbGRVaVNjaGVtYVtcInVpOndpZGdldFwiXSA9PT0gXCJoaWRkZW5cIjtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnQ6IChcbiAgICAgICAgICAgIDxTY2hlbWFGaWVsZFxuICAgICAgICAgICAgICBrZXk9e25hbWV9XG4gICAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICAgIHJlcXVpcmVkPXt0aGlzLmlzUmVxdWlyZWQobmFtZSl9XG4gICAgICAgICAgICAgIHNjaGVtYT17c2NoZW1hLnByb3BlcnRpZXNbbmFtZV19XG4gICAgICAgICAgICAgIHVpU2NoZW1hPXtmaWVsZFVpU2NoZW1hfVxuICAgICAgICAgICAgICBlcnJvclNjaGVtYT17ZXJyb3JTY2hlbWFbbmFtZV19XG4gICAgICAgICAgICAgIGlkU2NoZW1hPXtpZFNjaGVtYVtuYW1lXX1cbiAgICAgICAgICAgICAgaWRQcmVmaXg9e2lkUHJlZml4fVxuICAgICAgICAgICAgICBpZFNlcGFyYXRvcj17aWRTZXBhcmF0b3J9XG4gICAgICAgICAgICAgIGZvcm1EYXRhPXsoZm9ybURhdGEgfHwge30pW25hbWVdfVxuICAgICAgICAgICAgICB3YXNQcm9wZXJ0eUtleU1vZGlmaWVkPXt0aGlzLnN0YXRlLndhc1Byb3BlcnR5S2V5TW9kaWZpZWR9XG4gICAgICAgICAgICAgIG9uS2V5Q2hhbmdlPXt0aGlzLm9uS2V5Q2hhbmdlKG5hbWUpfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5vblByb3BlcnR5Q2hhbmdlKFxuICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgYWRkZWRCeUFkZGl0aW9uYWxQcm9wZXJ0aWVzXG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIG9uQmx1cj17b25CbHVyfVxuICAgICAgICAgICAgICBvbkZvY3VzPXtvbkZvY3VzfVxuICAgICAgICAgICAgICByZWdpc3RyeT17cmVnaXN0cnl9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgcmVhZG9ubHk9e3JlYWRvbmx5fVxuICAgICAgICAgICAgICBoaWRlRXJyb3I9e2hpZGVFcnJvcn1cbiAgICAgICAgICAgICAgb25Ecm9wUHJvcGVydHlDbGljaz17dGhpcy5vbkRyb3BQcm9wZXJ0eUNsaWNrfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApLFxuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgcmVhZG9ubHksXG4gICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgcmVxdWlyZWQsXG4gICAgICAgICAgaGlkZGVuLFxuICAgICAgICB9O1xuICAgICAgfSksXG4gICAgICByZWFkb25seSxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgcmVxdWlyZWQsXG4gICAgICBpZFNjaGVtYSxcbiAgICAgIHVpU2NoZW1hLFxuICAgICAgc2NoZW1hLFxuICAgICAgZm9ybURhdGEsXG4gICAgICBmb3JtQ29udGV4dCxcbiAgICAgIHJlZ2lzdHJ5LFxuICAgIH07XG4gICAgcmV0dXJuIDxUZW1wbGF0ZSB7Li4udGVtcGxhdGVQcm9wc30gb25BZGRDbGljaz17dGhpcy5oYW5kbGVBZGRDbGlja30gLz47XG4gIH1cbn1cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICBPYmplY3RGaWVsZC5wcm9wVHlwZXMgPSB0eXBlcy5maWVsZFByb3BzO1xufVxuXG5leHBvcnQgZGVmYXVsdCBPYmplY3RGaWVsZDtcbiJdfQ==