@rjsf/core 3.0.2 → 4.0.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 (127) hide show
  1. package/dist/cjs/components/AddButton.js +2 -1
  2. package/dist/cjs/components/ErrorList.js +2 -1
  3. package/dist/cjs/components/Form.js +17 -5
  4. package/dist/cjs/components/IconButton.js +2 -1
  5. package/dist/cjs/components/fields/ArrayField.js +108 -51
  6. package/dist/cjs/components/fields/BooleanField.js +3 -1
  7. package/dist/cjs/components/fields/DescriptionField.js +2 -1
  8. package/dist/cjs/components/fields/MultiSchemaField.js +4 -1
  9. package/dist/cjs/components/fields/NullField.js +2 -1
  10. package/dist/cjs/components/fields/NumberField.js +2 -1
  11. package/dist/cjs/components/fields/ObjectField.js +5 -2
  12. package/dist/cjs/components/fields/SchemaField.js +4 -2
  13. package/dist/cjs/components/fields/StringField.js +2 -1
  14. package/dist/cjs/components/fields/TitleField.js +2 -1
  15. package/dist/cjs/components/fields/UnsupportedField.js +2 -1
  16. package/dist/cjs/components/fields/index.js +2 -1
  17. package/dist/cjs/components/widgets/AltDateTimeWidget.js +2 -1
  18. package/dist/cjs/components/widgets/AltDateWidget.js +2 -1
  19. package/dist/cjs/components/widgets/BaseInput.js +2 -1
  20. package/dist/cjs/components/widgets/CheckboxWidget.js +2 -1
  21. package/dist/cjs/components/widgets/CheckboxesWidget.js +2 -1
  22. package/dist/cjs/components/widgets/ColorWidget.js +2 -1
  23. package/dist/cjs/components/widgets/DateTimeWidget.js +2 -1
  24. package/dist/cjs/components/widgets/DateWidget.js +2 -1
  25. package/dist/cjs/components/widgets/EmailWidget.js +2 -1
  26. package/dist/cjs/components/widgets/FileWidget.js +2 -1
  27. package/dist/cjs/components/widgets/HiddenWidget.js +2 -1
  28. package/dist/cjs/components/widgets/PasswordWidget.js +2 -1
  29. package/dist/cjs/components/widgets/RadioWidget.js +2 -1
  30. package/dist/cjs/components/widgets/RangeWidget.js +2 -1
  31. package/dist/cjs/components/widgets/SelectWidget.js +2 -1
  32. package/dist/cjs/components/widgets/TextWidget.js +2 -1
  33. package/dist/cjs/components/widgets/TextareaWidget.js +2 -1
  34. package/dist/cjs/components/widgets/URLWidget.js +2 -1
  35. package/dist/cjs/components/widgets/UpDownWidget.js +2 -1
  36. package/dist/cjs/components/widgets/index.js +2 -1
  37. package/dist/cjs/index.js +2 -1
  38. package/dist/cjs/types.js +2 -1
  39. package/dist/cjs/utils.js +19 -7
  40. package/dist/cjs/validate.js +2 -1
  41. package/dist/cjs/withTheme.js +2 -1
  42. package/dist/es/components/AddButton.js +2 -1
  43. package/dist/es/components/ErrorList.js +2 -1
  44. package/dist/es/components/Form.js +17 -5
  45. package/dist/es/components/IconButton.js +2 -1
  46. package/dist/es/components/fields/ArrayField.js +109 -52
  47. package/dist/es/components/fields/BooleanField.js +3 -1
  48. package/dist/es/components/fields/DescriptionField.js +2 -1
  49. package/dist/es/components/fields/MultiSchemaField.js +4 -1
  50. package/dist/es/components/fields/NullField.js +2 -1
  51. package/dist/es/components/fields/NumberField.js +2 -1
  52. package/dist/es/components/fields/ObjectField.js +5 -2
  53. package/dist/es/components/fields/SchemaField.js +4 -2
  54. package/dist/es/components/fields/StringField.js +2 -1
  55. package/dist/es/components/fields/TitleField.js +2 -1
  56. package/dist/es/components/fields/UnsupportedField.js +2 -1
  57. package/dist/es/components/fields/index.js +2 -1
  58. package/dist/es/components/widgets/AltDateTimeWidget.js +2 -1
  59. package/dist/es/components/widgets/AltDateWidget.js +2 -1
  60. package/dist/es/components/widgets/BaseInput.js +2 -1
  61. package/dist/es/components/widgets/CheckboxWidget.js +2 -1
  62. package/dist/es/components/widgets/CheckboxesWidget.js +2 -1
  63. package/dist/es/components/widgets/ColorWidget.js +2 -1
  64. package/dist/es/components/widgets/DateTimeWidget.js +2 -1
  65. package/dist/es/components/widgets/DateWidget.js +2 -1
  66. package/dist/es/components/widgets/EmailWidget.js +2 -1
  67. package/dist/es/components/widgets/FileWidget.js +2 -1
  68. package/dist/es/components/widgets/HiddenWidget.js +2 -1
  69. package/dist/es/components/widgets/PasswordWidget.js +2 -1
  70. package/dist/es/components/widgets/RadioWidget.js +2 -1
  71. package/dist/es/components/widgets/RangeWidget.js +2 -1
  72. package/dist/es/components/widgets/SelectWidget.js +2 -1
  73. package/dist/es/components/widgets/TextWidget.js +2 -1
  74. package/dist/es/components/widgets/TextareaWidget.js +2 -1
  75. package/dist/es/components/widgets/URLWidget.js +2 -1
  76. package/dist/es/components/widgets/UpDownWidget.js +2 -1
  77. package/dist/es/components/widgets/index.js +2 -1
  78. package/dist/es/index.js +2 -1
  79. package/dist/es/types.js +2 -1
  80. package/dist/es/utils.js +17 -7
  81. package/dist/es/validate.js +2 -1
  82. package/dist/es/withTheme.js +2 -1
  83. package/dist/react-jsonschema-form.js +3 -3
  84. package/dist/react-jsonschema-form.js.map +1 -1
  85. package/index.d.ts +31 -23
  86. package/lib/components/AddButton.js +2 -1
  87. package/lib/components/ErrorList.js +2 -1
  88. package/lib/components/Form.js +17 -5
  89. package/lib/components/IconButton.js +2 -1
  90. package/lib/components/fields/ArrayField.js +109 -52
  91. package/lib/components/fields/BooleanField.js +3 -1
  92. package/lib/components/fields/DescriptionField.js +2 -1
  93. package/lib/components/fields/MultiSchemaField.js +4 -1
  94. package/lib/components/fields/NullField.js +2 -1
  95. package/lib/components/fields/NumberField.js +2 -1
  96. package/lib/components/fields/ObjectField.js +5 -2
  97. package/lib/components/fields/SchemaField.js +4 -2
  98. package/lib/components/fields/StringField.js +2 -1
  99. package/lib/components/fields/TitleField.js +2 -1
  100. package/lib/components/fields/UnsupportedField.js +2 -1
  101. package/lib/components/fields/index.js +2 -1
  102. package/lib/components/widgets/AltDateTimeWidget.js +2 -1
  103. package/lib/components/widgets/AltDateWidget.js +2 -1
  104. package/lib/components/widgets/BaseInput.js +2 -1
  105. package/lib/components/widgets/CheckboxWidget.js +2 -1
  106. package/lib/components/widgets/CheckboxesWidget.js +2 -1
  107. package/lib/components/widgets/ColorWidget.js +2 -1
  108. package/lib/components/widgets/DateTimeWidget.js +2 -1
  109. package/lib/components/widgets/DateWidget.js +2 -1
  110. package/lib/components/widgets/EmailWidget.js +2 -1
  111. package/lib/components/widgets/FileWidget.js +2 -1
  112. package/lib/components/widgets/HiddenWidget.js +2 -1
  113. package/lib/components/widgets/PasswordWidget.js +2 -1
  114. package/lib/components/widgets/RadioWidget.js +2 -1
  115. package/lib/components/widgets/RangeWidget.js +2 -1
  116. package/lib/components/widgets/SelectWidget.js +2 -1
  117. package/lib/components/widgets/TextWidget.js +2 -1
  118. package/lib/components/widgets/TextareaWidget.js +2 -1
  119. package/lib/components/widgets/URLWidget.js +2 -1
  120. package/lib/components/widgets/UpDownWidget.js +2 -1
  121. package/lib/components/widgets/index.js +2 -1
  122. package/lib/index.js +2 -1
  123. package/lib/types.js +2 -1
  124. package/lib/utils.js +17 -7
  125. package/lib/validate.js +2 -1
  126. package/lib/withTheme.js +2 -1
  127. package/package.json +6 -7
package/index.d.ts CHANGED
@@ -19,6 +19,7 @@ declare module '@rjsf/core' {
19
19
  className?: string;
20
20
  customFormats?: { [k: string]: string | RegExp | ((data: string) => boolean) };
21
21
  disabled?: boolean;
22
+ readonly?: boolean;
22
23
  enctype?: string;
23
24
  extraErrors?: any;
24
25
  ErrorList?: React.StatelessComponent<ErrorListProps>;
@@ -28,6 +29,7 @@ declare module '@rjsf/core' {
28
29
  formData?: T;
29
30
  id?: string;
30
31
  idPrefix?: string;
32
+ idSeparator?: string;
31
33
  liveOmit?: boolean;
32
34
  liveValidate?: boolean;
33
35
  method?: string;
@@ -114,12 +116,22 @@ declare module '@rjsf/core' {
114
116
  label: string;
115
117
  multiple: boolean;
116
118
  rawErrors: string[];
119
+ registry: Registry;
120
+ [prop: string]: any; // Allow for other props
117
121
  }
118
122
 
119
123
  export type Widget = React.StatelessComponent<WidgetProps> | React.ComponentClass<WidgetProps>;
120
124
 
125
+ export interface Registry {
126
+ fields: { [name: string]: Field };
127
+ widgets: { [name: string]: Widget };
128
+ definitions: { [name: string]: any };
129
+ formContext: any;
130
+ rootSchema: JSONSchema7;
131
+ }
132
+
121
133
  export interface FieldProps<T = any>
122
- extends Pick<React.HTMLAttributes<HTMLElement>, Exclude<keyof React.HTMLAttributes<HTMLElement>, 'onBlur'>> {
134
+ extends Pick<React.HTMLAttributes<HTMLElement>, Exclude<keyof React.HTMLAttributes<HTMLElement>, 'onBlur' | 'onFocus'>> {
123
135
  schema: JSONSchema7;
124
136
  uiSchema: UiSchema;
125
137
  idSchema: IdSchema;
@@ -127,19 +139,15 @@ declare module '@rjsf/core' {
127
139
  errorSchema: ErrorSchema;
128
140
  onChange: (e: IChangeEvent<T> | any, es?: ErrorSchema) => any;
129
141
  onBlur: (id: string, value: any) => void;
130
- registry: {
131
- fields: { [name: string]: Field };
132
- widgets: { [name: string]: Widget };
133
- definitions: { [name: string]: any };
134
- formContext: any;
135
- };
142
+ onFocus: (id: string, value: any) => void;
143
+ registry: Registry;
136
144
  formContext: any;
137
145
  autofocus: boolean;
138
146
  disabled: boolean;
139
147
  readonly: boolean;
140
148
  required: boolean;
141
149
  name: string;
142
- [prop: string]: any;
150
+ [prop: string]: any; // Allow for other props
143
151
  }
144
152
 
145
153
  export type Field = React.StatelessComponent<FieldProps> | React.ComponentClass<FieldProps>;
@@ -168,7 +176,7 @@ declare module '@rjsf/core' {
168
176
  onChange: (value: T) => void;
169
177
  onKeyChange: (value: string) => () => void;
170
178
  onDropPropertyClick: (value: string) => () => void;
171
- registry: FieldProps['registry'];
179
+ registry: Registry;
172
180
  };
173
181
 
174
182
  export type ArrayFieldTemplateProps<T = any> = {
@@ -201,7 +209,7 @@ declare module '@rjsf/core' {
201
209
  title: string;
202
210
  formContext: any;
203
211
  formData: T;
204
- registry: FieldProps['registry'];
212
+ registry: Registry;
205
213
  };
206
214
 
207
215
  export type ObjectFieldTemplateProps<T = any> = {
@@ -225,7 +233,7 @@ declare module '@rjsf/core' {
225
233
  idSchema: IdSchema;
226
234
  formData: T;
227
235
  formContext: any;
228
- registry: FieldProps['registry'];
236
+ registry: Registry;
229
237
  };
230
238
 
231
239
  export type AjvError = {
@@ -290,7 +298,7 @@ declare module '@rjsf/core' {
290
298
 
291
299
  export function canExpand(schema: JSONSchema7, uiSchema: UiSchema, formData: any): boolean;
292
300
 
293
- export function getDefaultRegistry(): FieldProps['registry'];
301
+ export function getDefaultRegistry(): Registry;
294
302
 
295
303
  export function getSchemaType(schema: JSONSchema7): string;
296
304
 
@@ -309,7 +317,7 @@ declare module '@rjsf/core' {
309
317
  export function computeDefaults<T = any>(
310
318
  schema: JSONSchema7,
311
319
  parentDefaults: JSONSchema7['default'][],
312
- definitions: FieldProps['registry']['definitions'],
320
+ definitions: Registry['definitions'],
313
321
  rawFormData?: T,
314
322
  includeUndefinedValues?: boolean,
315
323
  ): JSONSchema7['default'][];
@@ -317,7 +325,7 @@ declare module '@rjsf/core' {
317
325
  export function getDefaultFormState<T = any>(
318
326
  schema: JSONSchema7,
319
327
  formData: T,
320
- definitions?: FieldProps['registry']['definitions'],
328
+ definitions?: Registry['definitions'],
321
329
  includeUndefinedValues?: boolean,
322
330
  ): T | JSONSchema7['default'][];
323
331
 
@@ -337,14 +345,14 @@ declare module '@rjsf/core' {
337
345
 
338
346
  export function toConstant(schema: JSONSchema7): JSONSchema7Type | JSONSchema7['const'];
339
347
 
340
- export function isSelect(_schema: JSONSchema7, definitions?: FieldProps['registry']['definitions']): boolean;
348
+ export function isSelect(_schema: JSONSchema7, definitions?: Registry['definitions']): boolean;
341
349
 
342
- export function isMultiSelect(schema: JSONSchema7, definitions?: FieldProps['registry']['definitions']): boolean;
350
+ export function isMultiSelect(schema: JSONSchema7, definitions?: Registry['definitions']): boolean;
343
351
 
344
352
  export function isFilesArray(
345
353
  schema: JSONSchema7,
346
354
  uiSchema: UiSchema,
347
- definitions?: FieldProps['registry']['definitions'],
355
+ definitions?: Registry['definitions'],
348
356
  ): boolean;
349
357
 
350
358
  export function isFixedItems(schema: JSONSchema7): boolean;
@@ -361,19 +369,19 @@ declare module '@rjsf/core' {
361
369
 
362
370
  export function stubExistingAdditionalProperties<T = any>(
363
371
  schema: JSONSchema7,
364
- definitions?: FieldProps['registry']['definitions'],
372
+ definitions?: Registry['definitions'],
365
373
  formData?: T,
366
374
  ): JSONSchema7;
367
375
 
368
376
  export function resolveSchema<T = any>(
369
377
  schema: JSONSchema7Definition,
370
- definitions?: FieldProps['registry']['definitions'],
378
+ definitions?: Registry['definitions'],
371
379
  formData?: T,
372
380
  ): JSONSchema7;
373
381
 
374
382
  export function retrieveSchema<T = any>(
375
383
  schema: JSONSchema7Definition,
376
- definitions?: FieldProps['registry']['definitions'],
384
+ definitions?: Registry['definitions'],
377
385
  formData?: T,
378
386
  ): JSONSchema7;
379
387
 
@@ -384,7 +392,7 @@ declare module '@rjsf/core' {
384
392
  export function toIdSchema<T = any>(
385
393
  schema: JSONSchema7Definition,
386
394
  id: string,
387
- definitions: FieldProps['registry']['definitions'],
395
+ definitions: Registry['definitions'],
388
396
  formData?: T,
389
397
  idPredix?: string,
390
398
  ): IdSchema | IdSchema[];
@@ -392,7 +400,7 @@ declare module '@rjsf/core' {
392
400
  export function toPathSchema<T = any>(
393
401
  schema: JSONSchema7Definition,
394
402
  name: string | undefined,
395
- definitions: FieldProps['registry']['definitions'],
403
+ definitions: Registry['definitions'],
396
404
  formData?: T,
397
405
  ): PathSchema | PathSchema[];
398
406
 
@@ -430,7 +438,7 @@ declare module '@rjsf/core' {
430
438
  export function getMatchingOption(
431
439
  formData: any,
432
440
  options: JSONSchema7[],
433
- definitions: FieldProps['registry']['definitions'],
441
+ definitions: Registry['definitions'],
434
442
  ): number;
435
443
 
436
444
  export function schemaRequiresTrueValue(schema: JSONSchema7): boolean;
@@ -17,4 +17,5 @@ export default function AddButton(_ref) {
17
17
  onClick: onClick,
18
18
  disabled: disabled
19
19
  })));
20
- }
20
+ }
21
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL0FkZEJ1dHRvbi5qcyJdLCJuYW1lcyI6WyJSZWFjdCIsIkljb25CdXR0b24iLCJBZGRCdXR0b24iLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwiZGlzYWJsZWQiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLEtBQVAsTUFBa0IsT0FBbEI7QUFDQSxPQUFPQyxVQUFQLE1BQXVCLGNBQXZCO0FBRUEsZUFBZSxTQUFTQyxTQUFULE9BQXFEO0FBQUEsTUFBaENDLFNBQWdDLFFBQWhDQSxTQUFnQztBQUFBLE1BQXJCQyxPQUFxQixRQUFyQkEsT0FBcUI7QUFBQSxNQUFaQyxRQUFZLFFBQVpBLFFBQVk7QUFDbEUsU0FDRTtBQUFLLElBQUEsU0FBUyxFQUFDO0FBQWYsS0FDRTtBQUFHLElBQUEsU0FBUyxnREFBeUNGLFNBQXpDO0FBQVosS0FDRSxvQkFBQyxVQUFEO0FBQ0UsSUFBQSxJQUFJLEVBQUMsTUFEUDtBQUVFLElBQUEsSUFBSSxFQUFDLE1BRlA7QUFHRSxJQUFBLFNBQVMsRUFBQyxtQkFIWjtBQUlFLGtCQUFXLEtBSmI7QUFLRSxJQUFBLFFBQVEsRUFBQyxHQUxYO0FBTUUsSUFBQSxPQUFPLEVBQUVDLE9BTlg7QUFPRSxJQUFBLFFBQVEsRUFBRUM7QUFQWixJQURGLENBREYsQ0FERjtBQWVEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IEljb25CdXR0b24gZnJvbSBcIi4vSWNvbkJ1dHRvblwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBBZGRCdXR0b24oeyBjbGFzc05hbWUsIG9uQ2xpY2ssIGRpc2FibGVkIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgPHAgY2xhc3NOYW1lPXtgY29sLXhzLTMgY29sLXhzLW9mZnNldC05IHRleHQtcmlnaHQgJHtjbGFzc05hbWV9YH0+XG4gICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgdHlwZT1cImluZm9cIlxuICAgICAgICAgIGljb249XCJwbHVzXCJcbiAgICAgICAgICBjbGFzc05hbWU9XCJidG4tYWRkIGNvbC14cy0xMlwiXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIkFkZFwiXG4gICAgICAgICAgdGFiSW5kZXg9XCIwXCJcbiAgICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgLz5cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiJdfQ==
@@ -15,4 +15,5 @@ export default function ErrorList(props) {
15
15
  className: "list-group-item text-danger"
16
16
  }, error.stack);
17
17
  })));
18
- }
18
+ }
19
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL0Vycm9yTGlzdC5qcyJdLCJuYW1lcyI6WyJSZWFjdCIsIkVycm9yTGlzdCIsInByb3BzIiwiZXJyb3JzIiwibWFwIiwiZXJyb3IiLCJpIiwic3RhY2siXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLEtBQVAsTUFBa0IsT0FBbEI7QUFFQSxlQUFlLFNBQVNDLFNBQVQsQ0FBbUJDLEtBQW5CLEVBQTBCO0FBQUEsTUFDL0JDLE1BRCtCLEdBQ3BCRCxLQURvQixDQUMvQkMsTUFEK0I7QUFFdkMsU0FDRTtBQUFLLElBQUEsU0FBUyxFQUFDO0FBQWYsS0FDRTtBQUFLLElBQUEsU0FBUyxFQUFDO0FBQWYsS0FDRTtBQUFJLElBQUEsU0FBUyxFQUFDO0FBQWQsY0FERixDQURGLEVBSUU7QUFBSSxJQUFBLFNBQVMsRUFBQztBQUFkLEtBQ0dBLE1BQU0sQ0FBQ0MsR0FBUCxDQUFXLFVBQUNDLEtBQUQsRUFBUUMsQ0FBUixFQUFjO0FBQ3hCLFdBQ0U7QUFBSSxNQUFBLEdBQUcsRUFBRUEsQ0FBVDtBQUFZLE1BQUEsU0FBUyxFQUFDO0FBQXRCLE9BQ0dELEtBQUssQ0FBQ0UsS0FEVCxDQURGO0FBS0QsR0FOQSxDQURILENBSkYsQ0FERjtBQWdCRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRXJyb3JMaXN0KHByb3BzKSB7XG4gIGNvbnN0IHsgZXJyb3JzIH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInBhbmVsIHBhbmVsLWRhbmdlciBlcnJvcnNcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGFuZWwtaGVhZGluZ1wiPlxuICAgICAgICA8aDMgY2xhc3NOYW1lPVwicGFuZWwtdGl0bGVcIj5FcnJvcnM8L2gzPlxuICAgICAgPC9kaXY+XG4gICAgICA8dWwgY2xhc3NOYW1lPVwibGlzdC1ncm91cFwiPlxuICAgICAgICB7ZXJyb3JzLm1hcCgoZXJyb3IsIGkpID0+IHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGxpIGtleT17aX0gY2xhc3NOYW1lPVwibGlzdC1ncm91cC1pdGVtIHRleHQtZGFuZ2VyXCI+XG4gICAgICAgICAgICAgIHtlcnJvci5zdGFja31cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgKTtcbiAgICAgICAgfSl9XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuICApO1xufVxuIl19
@@ -218,7 +218,9 @@ function (_Component) {
218
218
 
219
219
  return;
220
220
  }
221
- }
221
+ } // There are no errors generated through schema validation.
222
+ // Check for user provided errors and update state accordingly.
223
+
222
224
 
223
225
  var errorSchema;
224
226
  var errors;
@@ -234,7 +236,9 @@ function (_Component) {
234
236
  _this.setState({
235
237
  formData: newFormData,
236
238
  errors: errors,
237
- errorSchema: errorSchema
239
+ errorSchema: errorSchema,
240
+ schemaValidationErrors: [],
241
+ schemaValidationErrorSchema: {}
238
242
  }, function () {
239
243
  if (_this.props.onSubmit) {
240
244
  _this.props.onSubmit(_objectSpread({}, _this.state, {
@@ -321,7 +325,7 @@ function (_Component) {
321
325
  errors = toErrorList(errorSchema);
322
326
  }
323
327
 
324
- var idSchema = toIdSchema(retrievedSchema, uiSchema["ui:rootFieldId"], rootSchema, formData, props.idPrefix);
328
+ var idSchema = toIdSchema(retrievedSchema, uiSchema["ui:rootFieldId"], rootSchema, formData, props.idPrefix, props.idSeparator);
325
329
  var nextState = {
326
330
  schema: schema,
327
331
  uiSchema: uiSchema,
@@ -424,6 +428,7 @@ function (_Component) {
424
428
  children = _this$props5.children,
425
429
  id = _this$props5.id,
426
430
  idPrefix = _this$props5.idPrefix,
431
+ idSeparator = _this$props5.idSeparator,
427
432
  className = _this$props5.className,
428
433
  tagName = _this$props5.tagName,
429
434
  name = _this$props5.name,
@@ -436,6 +441,7 @@ function (_Component) {
436
441
  acceptcharset = _this$props5.acceptcharset,
437
442
  noHtml5Validate = _this$props5.noHtml5Validate,
438
443
  disabled = _this$props5.disabled,
444
+ readonly = _this$props5.readonly,
439
445
  formContext = _this$props5.formContext;
440
446
  var _this$state2 = this.state,
441
447
  schema = _this$state2.schema,
@@ -473,13 +479,15 @@ function (_Component) {
473
479
  errorSchema: errorSchema,
474
480
  idSchema: idSchema,
475
481
  idPrefix: idPrefix,
482
+ idSeparator: idSeparator,
476
483
  formContext: formContext,
477
484
  formData: formData,
478
485
  onChange: this.onChange,
479
486
  onBlur: this.onBlur,
480
487
  onFocus: this.onFocus,
481
488
  registry: registry,
482
- disabled: disabled
489
+ disabled: disabled,
490
+ readonly: readonly
483
491
  }), children ? children : React.createElement("div", null, React.createElement("button", {
484
492
  type: "submit",
485
493
  className: "btn btn-info"
@@ -495,6 +503,7 @@ _defineProperty(Form, "defaultProps", {
495
503
  noValidate: false,
496
504
  liveValidate: false,
497
505
  disabled: false,
506
+ readonly: false,
498
507
  noHtml5Validate: false,
499
508
  ErrorList: DefaultErrorList,
500
509
  omitExtraData: false
@@ -507,6 +516,8 @@ if (process.env.NODE_ENV !== "production") {
507
516
  schema: PropTypes.object.isRequired,
508
517
  uiSchema: PropTypes.object,
509
518
  formData: PropTypes.any,
519
+ disabled: PropTypes.bool,
520
+ readonly: PropTypes.bool,
510
521
  widgets: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object])),
511
522
  fields: PropTypes.objectOf(PropTypes.elementType),
512
523
  ArrayFieldTemplate: PropTypes.elementType,
@@ -539,4 +550,5 @@ if (process.env.NODE_ENV !== "production") {
539
550
  omitExtraData: PropTypes.bool,
540
551
  extraErrors: PropTypes.object
541
552
  };
542
- }
553
+ }
554
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL0Zvcm0uanMiXSwibmFtZXMiOlsiUmVhY3QiLCJDb21wb25lbnQiLCJQcm9wVHlwZXMiLCJfcGljayIsIl9nZXQiLCJfaXNFbXB0eSIsImRlZmF1bHQiLCJEZWZhdWx0RXJyb3JMaXN0IiwiZ2V0RGVmYXVsdEZvcm1TdGF0ZSIsInJldHJpZXZlU2NoZW1hIiwic2hvdWxkUmVuZGVyIiwidG9JZFNjaGVtYSIsImdldERlZmF1bHRSZWdpc3RyeSIsImRlZXBFcXVhbHMiLCJ0b1BhdGhTY2hlbWEiLCJpc09iamVjdCIsInZhbGlkYXRlRm9ybURhdGEiLCJ0b0Vycm9yTGlzdCIsIm1lcmdlT2JqZWN0cyIsIkZvcm0iLCJwcm9wcyIsImZvcm1EYXRhIiwiZmllbGRzIiwibGVuZ3RoIiwiZGF0YSIsIkFycmF5IiwiaXNBcnJheSIsIk9iamVjdCIsImtleXMiLCJtYXAiLCJrZXkiLCJwYXRoU2NoZW1hIiwiZ2V0QWxsUGF0aHMiLCJfb2JqIiwiYWNjIiwicGF0aHMiLCJmb3JFYWNoIiwibmV3UGF0aHMiLCJwYXRoIiwiX19yanNmX2FkZGl0aW9uYWxQcm9wZXJ0aWVzIiwiJG5hbWUiLCJwdXNoIiwicmVwbGFjZSIsImZvcm1WYWx1ZSIsIm5ld0Vycm9yU2NoZW1hIiwibmV3U3RhdGUiLCJnZXRTdGF0ZUZyb21Qcm9wcyIsIm11c3RWYWxpZGF0ZSIsIm5vVmFsaWRhdGUiLCJsaXZlVmFsaWRhdGUiLCJzdGF0ZSIsIm5ld0Zvcm1EYXRhIiwib21pdEV4dHJhRGF0YSIsImxpdmVPbWl0IiwicmV0cmlldmVkU2NoZW1hIiwic2NoZW1hIiwiZmllbGROYW1lcyIsImdldEZpZWxkTmFtZXMiLCJnZXRVc2VkRm9ybURhdGEiLCJzY2hlbWFWYWxpZGF0aW9uIiwidmFsaWRhdGUiLCJlcnJvcnMiLCJlcnJvclNjaGVtYSIsInNjaGVtYVZhbGlkYXRpb25FcnJvcnMiLCJzY2hlbWFWYWxpZGF0aW9uRXJyb3JTY2hlbWEiLCJleHRyYUVycm9ycyIsInNldFN0YXRlIiwib25DaGFuZ2UiLCJvbkJsdXIiLCJvbkZvY3VzIiwiZXZlbnQiLCJwcmV2ZW50RGVmYXVsdCIsInRhcmdldCIsImN1cnJlbnRUYXJnZXQiLCJwZXJzaXN0Iiwib25FcnJvciIsImNvbnNvbGUiLCJlcnJvciIsIm9uU3VibWl0Iiwic3RhdHVzIiwiZm9ybUVsZW1lbnQiLCJuZXh0UHJvcHMiLCJuZXh0U3RhdGUiLCJpbnB1dEZvcm1EYXRhIiwidWlTY2hlbWEiLCJlZGl0Iiwicm9vdFNjaGVtYSIsImN1c3RvbUZvcm1hdHMiLCJhZGRpdGlvbmFsTWV0YVNjaGVtYXMiLCJnZXRDdXJyZW50RXJyb3JzIiwiY3VycmVudEVycm9ycyIsImlkU2NoZW1hIiwiaWRQcmVmaXgiLCJpZFNlcGFyYXRvciIsInRyYW5zZm9ybUVycm9ycyIsImdldFJlZ2lzdHJ5IiwicmVzb2x2ZWRTY2hlbWEiLCJFcnJvckxpc3QiLCJzaG93RXJyb3JMaXN0IiwiZm9ybUNvbnRleHQiLCJ3aWRnZXRzIiwiQXJyYXlGaWVsZFRlbXBsYXRlIiwiT2JqZWN0RmllbGRUZW1wbGF0ZSIsIkZpZWxkVGVtcGxhdGUiLCJkZWZpbml0aW9ucyIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsImNhbmNlbGFibGUiLCJjaGlsZHJlbiIsImlkIiwiY2xhc3NOYW1lIiwidGFnTmFtZSIsIm5hbWUiLCJtZXRob2QiLCJhY3Rpb24iLCJkZXByZWNhdGVkQXV0b2NvbXBsZXRlIiwiYXV0b2NvbXBsZXRlIiwiY3VycmVudEF1dG9Db21wbGV0ZSIsImF1dG9Db21wbGV0ZSIsImVuY3R5cGUiLCJhY2NlcHRjaGFyc2V0Iiwibm9IdG1sNVZhbGlkYXRlIiwiZGlzYWJsZWQiLCJyZWFkb25seSIsInJlZ2lzdHJ5IiwiX1NjaGVtYUZpZWxkIiwiU2NoZW1hRmllbGQiLCJGb3JtVGFnIiwid2FybiIsImZvcm0iLCJyZW5kZXJFcnJvcnMiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJwcm9wVHlwZXMiLCJvYmplY3QiLCJpc1JlcXVpcmVkIiwiYW55IiwiYm9vbCIsIm9iamVjdE9mIiwib25lT2ZUeXBlIiwiZnVuYyIsImVsZW1lbnRUeXBlIiwic3RyaW5nIiwiYXJyYXlPZiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU9BLEtBQVAsSUFBZ0JDLFNBQWhCLFFBQWlDLE9BQWpDO0FBQ0EsT0FBT0MsU0FBUCxNQUFzQixZQUF0QjtBQUNBLE9BQU9DLEtBQVAsTUFBa0IsYUFBbEI7QUFDQSxPQUFPQyxJQUFQLE1BQWlCLFlBQWpCO0FBQ0EsT0FBT0MsUUFBUCxNQUFxQixnQkFBckI7QUFFQSxTQUFTQyxPQUFPLElBQUlDLGdCQUFwQixRQUE0QyxhQUE1QztBQUNBLFNBQ0VDLG1CQURGLEVBRUVDLGNBRkYsRUFHRUMsWUFIRixFQUlFQyxVQUpGLEVBS0VDLGtCQUxGLEVBTUVDLFVBTkYsRUFPRUMsWUFQRixFQVFFQyxRQVJGLFFBU08sVUFUUDtBQVVBLE9BQU9DLGdCQUFQLElBQTJCQyxXQUEzQixRQUE4QyxhQUE5QztBQUNBLFNBQVNDLFlBQVQsUUFBNkIsVUFBN0I7O0lBRXFCQyxJOzs7OztBQVluQixnQkFBWUMsS0FBWixFQUFtQjtBQUFBOztBQUFBOztBQUNqQiw4RUFBTUEsS0FBTjs7QUFEaUIsc0VBcUpELFVBQUNDLFFBQUQsRUFBV0MsTUFBWCxFQUFzQjtBQUN0QztBQUNBLFVBQUlBLE1BQU0sQ0FBQ0MsTUFBUCxLQUFrQixDQUFsQixJQUF1QixRQUFPRixRQUFQLE1BQW9CLFFBQS9DLEVBQXlEO0FBQ3ZELGVBQU9BLFFBQVA7QUFDRDs7QUFFRCxVQUFJRyxJQUFJLEdBQUdyQixLQUFLLENBQUNrQixRQUFELEVBQVdDLE1BQVgsQ0FBaEI7O0FBQ0EsVUFBSUcsS0FBSyxDQUFDQyxPQUFOLENBQWNMLFFBQWQsQ0FBSixFQUE2QjtBQUMzQixlQUFPTSxNQUFNLENBQUNDLElBQVAsQ0FBWUosSUFBWixFQUFrQkssR0FBbEIsQ0FBc0IsVUFBQUMsR0FBRztBQUFBLGlCQUFJTixJQUFJLENB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LE1BbENSO0FBbUNmaEQsSUFBQUEsYUFBYSxFQUFFckYsU0FBUyxDQUFDcUksTUFuQ1Y7QUFvQ2YvQyxJQUFBQSxxQkFBcUIsRUFBRXRGLFNBQVMsQ0FBQzhJLE9BQVYsQ0FBa0I5SSxTQUFTLENBQUNxSSxNQUE1QixDQXBDUjtBQXFDZm5GLElBQUFBLGFBQWEsRUFBRWxELFNBQVMsQ0FBQ3dJLElBckNWO0FBc0NmekUsSUFBQUEsV0FBVyxFQUFFL0QsU0FBUyxDQUFDcUk7QUF0Q1IsR0FBakI7QUF3Q0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgX3BpY2sgZnJvbSBcImxvZGFzaC9waWNrXCI7XG5pbXBvcnQgX2dldCBmcm9tIFwibG9kYXNoL2dldFwiO1xuaW1wb3J0IF9pc0VtcHR5IGZyb20gXCJsb2Rhc2gvaXNFbXB0eVwiO1xuXG5pbXBvcnQgeyBkZWZhdWx0IGFzIERlZmF1bHRFcnJvckxpc3QgfSBmcm9tIFwiLi9FcnJvckxpc3RcIjtcbmltcG9ydCB7XG4gIGdldERlZmF1bHRGb3JtU3RhdGUsXG4gIHJldHJpZXZlU2NoZW1hLFxuICBzaG91bGRSZW5kZXIsXG4gIHRvSWRTY2hlbWEsXG4gIGdldERlZmF1bHRSZWdpc3RyeSxcbiAgZGVlcEVxdWFscyxcbiAgdG9QYXRoU2NoZW1hLFxuICBpc09iamVjdCxcbn0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgdmFsaWRhdGVGb3JtRGF0YSwgeyB0b0Vycm9yTGlzdCB9IGZyb20gXCIuLi92YWxpZGF0ZVwiO1xuaW1wb3J0IHsgbWVyZ2VPYmplY3RzIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZvcm0gZXh0ZW5kcyBDb21wb25lbnQge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIHVpU2NoZW1hOiB7fSxcbiAgICBub1ZhbGlkYXRlOiBmYWxzZSxcbiAgICBsaXZlVmFsaWRhdGU6IGZhbHNlLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICByZWFkb25seTogZmFsc2UsXG4gICAgbm9IdG1sNVZhbGlkYXRlOiBmYWxzZSxcbiAgICBFcnJvckxpc3Q6IERlZmF1bHRFcnJvckxpc3QsXG4gICAgb21pdEV4dHJhRGF0YTogZmFsc2UsXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5zdGF0ZSA9IHRoaXMuZ2V0U3RhdGVGcm9tUHJvcHMocHJvcHMsIHByb3BzLmZvcm1EYXRhKTtcbiAgICBpZiAoXG4gICAgICB0aGlzLnByb3BzLm9uQ2hhbmdlICYmXG4gICAgICAhZGVlcEVxdWFscyh0aGlzLnN0YXRlLmZvcm1EYXRhLCB0aGlzLnByb3BzLmZvcm1EYXRhKVxuICAgICkge1xuICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZSh0aGlzLnN0YXRlKTtcbiAgICB9XG4gICAgdGhpcy5mb3JtRWxlbWVudCA9IG51bGw7XG4gIH1cblxuICBVTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMpIHtcbiAgICBjb25zdCBuZXh0U3RhdGUgPSB0aGlzLmdldFN0YXRlRnJvbVByb3BzKG5leHRQcm9wcywgbmV4dFByb3BzLmZvcm1EYXRhKTtcbiAgICBpZiAoXG4gICAgICAhZGVlcEVxdWFscyhuZXh0U3RhdGUuZm9ybURhdGEsIG5leHRQcm9wcy5mb3JtRGF0YSkgJiZcbiAgICAgICFkZWVwRXF1YWxzKG5leHRTdGF0ZS5mb3JtRGF0YSwgdGhpcy5zdGF0ZS5mb3JtRGF0YSkgJiZcbiAgICAgIHRoaXMucHJvcHMub25DaGFuZ2VcbiAgICApIHtcbiAgICAgIHRoaXMucHJvcHMub25DaGFuZ2UobmV4dFN0YXRlKTtcbiAgICB9XG4gICAgdGhpcy5zZXRTdGF0ZShuZXh0U3RhdGUpO1xuICB9XG5cbiAgZ2V0U3RhdGVGcm9tUHJvcHMocHJvcHMsIGlucHV0Rm9ybURhdGEpIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGUgfHwge307XG4gICAgY29uc3Qgc2NoZW1hID0gXCJzY2hlbWFcIiBpbiBwcm9wcyA/IHByb3BzLnNjaGVtYSA6IHRoaXMucHJvcHMuc2NoZW1hO1xuICAgIGNvbnN0IHVpU2NoZW1hID0gXCJ1aVNjaGVtYVwiIGluIHByb3BzID8gcHJvcHMudWlTY2hlbWEgOiB0aGlzLnByb3BzLnVpU2NoZW1hO1xuICAgIGNvbnN0IGVkaXQgPSB0eXBlb2YgaW5wdXRGb3JtRGF0YSAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgICBjb25zdCBsaXZlVmFsaWRhdGUgPVxuICAgICAgXCJsaXZlVmFsaWRhdGVcIiBpbiBwcm9wcyA/IHByb3BzLmxpdmVWYWxpZGF0ZSA6IHRoaXMucHJvcHMubGl2ZVZhbGlkYXRlO1xuICAgIGNvbnN0IG11c3RWYWxpZGF0ZSA9IGVkaXQgJiYgIXByb3BzLm5vVmFsaWRhdGUgJiYgbGl2ZVZhbGlkYXRlO1xuICAgIGNvbnN0IHJvb3RTY2hlbWEgPSBzY2hlbWE7XG4gICAgY29uc3QgZm9ybURhdGEgPSBnZXREZWZhdWx0Rm9ybVN0YXRlKHNjaGVtYSwgaW5wdXRGb3JtRGF0YSwgcm9vdFNjaGVtYSk7XG4gICAgY29uc3QgcmV0cmlldmVkU2NoZW1hID0gcmV0cmlldmVTY2hlbWEoc2NoZW1hLCByb290U2NoZW1hLCBmb3JtRGF0YSk7XG4gICAgY29uc3QgY3VzdG9tRm9ybWF0cyA9IHByb3BzLmN1c3RvbUZvcm1hdHM7XG4gICAgY29uc3QgYWRkaXRpb25hbE1ldGFTY2hlbWFzID0gcHJvcHMuYWRkaXRpb25hbE1ldGFTY2hlbWFzO1xuXG4gICAgY29uc3QgZ2V0Q3VycmVudEVycm9ycyA9ICgpID0+IHtcbiAgICAgIGlmIChwcm9wcy5ub1ZhbGlkYXRlKSB7XG4gICAgICAgIHJldHVybiB7IGVycm9yczogW10sIGVycm9yU2NoZW1hOiB7fSB9O1xuICAgICAgfSBlbHNlIGlmICghcHJvcHMubGl2ZVZhbGlkYXRlKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZXJyb3JzOiBzdGF0ZS5zY2hlbWFWYWxpZGF0aW9uRXJyb3JzIHx8IFtdLFxuICAgICAgICAgIGVycm9yU2NoZW1hOiBzdGF0ZS5zY2hlbWFWYWxpZGF0aW9uRXJyb3JTY2hlbWEgfHwge30sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBlcnJvcnM6IHN0YXRlLmVycm9ycyB8fCBbXSxcbiAgICAgICAgZXJyb3JTY2hlbWE6IHN0YXRlLmVycm9yU2NoZW1hIHx8IHt9LFxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgbGV0IGVycm9ycyxcbiAgICAgIGVycm9yU2NoZW1hLFxuICAgICAgc2NoZW1hVmFsaWRhdGlvbkVycm9ycyxcbiAgICAgIHNjaGVtYVZhbGlkYXRpb25FcnJvclNjaGVtYTtcbiAgICBpZiAobXVzdFZhbGlkYXRlKSB7XG4gICAgICBjb25zdCBzY2hlbWFWYWxpZGF0aW9uID0gdGhpcy52YWxpZGF0ZShcbiAgICAgICAgZm9ybURhdGEsXG4gICAgICAgIHNjaGVtYSxcbiAgICAgICAgYWRkaXRpb25hbE1ldGFTY2hlbWFzLFxuICAgICAgICBjdXN0b21Gb3JtYXRzXG4gICAgICApO1xuICAgICAgZXJyb3JzID0gc2NoZW1hVmFsaWRhdGlvbi5lcnJvcnM7XG4gICAgICBlcnJvclNjaGVtYSA9IHNjaGVtYVZhbGlkYXRpb24uZXJyb3JTY2hlbWE7XG4gICAgICBzY2hlbWFWYWxpZGF0aW9uRXJyb3JzID0gZXJyb3JzO1xuICAgICAgc2NoZW1hVmFsaWRhdGlvbkVycm9yU2NoZW1hID0gZXJyb3JTY2hlbWE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRFcnJvcnMgPSBnZXRDdXJyZW50RXJyb3JzKCk7XG4gICAgICBlcnJvcnMgPSBjdXJyZW50RXJyb3JzLmVycm9ycztcbiAgICAgIGVycm9yU2NoZW1hID0gY3VycmVudEVycm9ycy5lcnJvclNjaGVtYTtcbiAgICAgIHNjaGVtYVZhbGlkYXRpb25FcnJvcnMgPSBzdGF0ZS5zY2hlbWFWYWxpZGF0aW9uRXJyb3JzO1xuICAgICAgc2NoZW1hVmFsaWRhdGlvbkVycm9yU2NoZW1hID0gc3RhdGUuc2NoZW1hVmFsaWRhdGlvbkVycm9yU2NoZW1hO1xuICAgIH1cbiAgICBpZiAocHJvcHMuZXh0cmFFcnJvcnMpIHtcbiAgICAgIGVycm9yU2NoZW1hID0gbWVyZ2VPYmplY3RzKFxuICAgICAgICBlcnJvclNjaGVtYSxcbiAgICAgICAgcHJvcHMuZXh0cmFFcnJvcnMsXG4gICAgICAgICEhXCJjb25jYXQgYXJyYXlzXCJcbiAgICAgICk7XG4gICAgICBlcnJvcnMgPSB0b0Vycm9yTGlzdChlcnJvclNjaGVtYSk7XG4gICAgfVxuICAgIGNvbnN0IGlkU2NoZW1hID0gdG9JZFNjaGVtYShcbiAgICAgIHJldHJpZXZlZFNjaGVtYSxcbiAgICAgIHVpU2NoZW1hW1widWk6cm9vdEZpZWxkSWRcIl0sXG4gICAgICByb290U2NoZW1hLFxuICAgICAgZm9ybURhdGEsXG4gICAgICBwcm9wcy5pZFByZWZpeCxcbiAgICAgIHByb3BzLmlkU2VwYXJhdG9yXG4gICAgKTtcbiAgICBjb25zdCBuZXh0U3RhdGUgPSB7XG4gICAgICBzY2hlbWEsXG4gICAgICB1aVNjaGVtYSxcbiAgICAgIGlkU2NoZW1hLFxuICAgICAgZm9ybURhdGEsXG4gICAgICBlZGl0LFxuICAgICAgZXJyb3JzLFxuICAgICAgZXJyb3JTY2hlbWEsXG4gICAgICBhZGRpdGlvbmFsTWV0YVNjaGVtYXMsXG4gICAgfTtcbiAgICBpZiAoc2NoZW1hVmFsaWRhdGlvbkVycm9ycykge1xuICAgICAgbmV4dFN0YXRlLnNjaGVtYVZhbGlkYXRpb25FcnJvcnMgPSBzY2hlbWFWYWxpZGF0aW9uRXJyb3JzO1xuICAgICAgbmV4dFN0YXRlLnNjaGVtYVZhbGlkYXRpb25FcnJvclNjaGVtYSA9IHNjaGVtYVZhbGlkYXRpb25FcnJvclNjaGVtYTtcbiAgICB9XG4gICAgcmV0dXJuIG5leHRTdGF0ZTtcbiAgfVxuXG4gIHNob3VsZENvbXBvbmVudFVwZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0ZSkge1xuICAgIHJldHVybiBzaG91bGRSZW5kZXIodGhpcywgbmV4dFByb3BzLCBuZXh0U3RhdGUpO1xuICB9XG5cbiAgdmFsaWRhdGUoXG4gICAgZm9ybURhdGEsXG4gICAgc2NoZW1hID0gdGhpcy5wcm9wcy5zY2hlbWEsXG4gICAgYWRkaXRpb25hbE1ldGFTY2hlbWFzID0gdGhpcy5wcm9wcy5hZGRpdGlvbmFsTWV0YVNjaGVtYXMsXG4gICAgY3VzdG9tRm9ybWF0cyA9IHRoaXMucHJvcHMuY3VzdG9tRm9ybWF0c1xuICApIHtcbiAgICBjb25zdCB7IHZhbGlkYXRlLCB0cmFuc2Zvcm1FcnJvcnMgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgeyByb290U2NoZW1hIH0gPSB0aGlzLmdldFJlZ2lzdHJ5KCk7XG4gICAgY29uc3QgcmVzb2x2ZWRTY2hlbWEgPSByZXRyaWV2ZVNjaGVtYShzY2hlbWEsIHJvb3RTY2hlbWEsIGZvcm1EYXRhKTtcbiAgICByZXR1cm4gdmFsaWRhdGVGb3JtRGF0YShcbiAgICAgIGZvcm1EYXRhLFxuICAgICAgcmVzb2x2ZWRTY2hlbWEsXG4gICAgICB2YWxpZGF0ZSxcbiAgICAgIHRyYW5zZm9ybUVycm9ycyxcbiAgICAgIGFkZGl0aW9uYWxNZXRhU2NoZW1hcyxcbiAgICAgIGN1c3RvbUZvcm1hdHNcbiAgICApO1xuICB9XG5cbiAgcmVuZGVyRXJyb3JzKCkge1xuICAgIGNvbnN0IHsgZXJyb3JzLCBlcnJvclNjaGVtYSwgc2NoZW1hLCB1aVNjaGVtYSB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCB7IEVycm9yTGlzdCwgc2hvd0Vycm9yTGlzdCwgZm9ybUNvbnRleHQgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBpZiAoZXJyb3JzLmxlbmd0aCAmJiBzaG93RXJyb3JMaXN0ICE9IGZhbHNlKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8RXJyb3JMaXN0XG4gICAgICAgICAgZXJyb3JzPXtlcnJvcnN9XG4gICAgICAgICAgZXJyb3JTY2hlbWE9e2Vycm9yU2NoZW1hfVxuICAgICAgICAgIHNjaGVtYT17c2NoZW1hfVxuICAgICAgICAgIHVpU2NoZW1hPXt1aVNjaGVtYX1cbiAgICAgICAgICBmb3JtQ29udGV4dD17Zm9ybUNvbnRleHR9XG4gICAgICAgIC8+XG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldFVzZWRGb3JtRGF0YSA9IChmb3JtRGF0YSwgZmllbGRzKSA9PiB7XG4gICAgLy9mb3IgdGhlIGNhc2Ugb2YgYSBzaW5nbGUgaW5wdXQgZm9ybVxuICAgIGlmIChmaWVsZHMubGVuZ3RoID09PSAwICYmIHR5cGVvZiBmb3JtRGF0YSAhPT0gXCJvYmplY3RcIikge1xuICAgICAgcmV0dXJuIGZvcm1EYXRhO1xuICAgIH1cblxuICAgIGxldCBkYXRhID0gX3BpY2soZm9ybURhdGEsIGZpZWxkcyk7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZm9ybURhdGEpKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmtleXMoZGF0YSkubWFwKGtleSA9PiBkYXRhW2tleV0pO1xuICAgIH1cblxuICAgIHJldHVybiBkYXRhO1xuICB9O1xuXG4gIGdldEZpZWxkTmFtZXMgPSAocGF0aFNjaGVtYSwgZm9ybURhdGEpID0+IHtcbiAgICBjb25zdCBnZXRBbGxQYXRocyA9IChfb2JqLCBhY2MgPSBbXSwgcGF0aHMgPSBbXCJcIl0pID0+IHtcbiAgICAgIE9iamVjdC5rZXlzKF9vYmopLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBfb2JqW2tleV0gPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICBsZXQgbmV3UGF0aHMgPSBwYXRocy5tYXAocGF0aCA9PiBgJHtwYXRofS4ke2tleX1gKTtcbiAgICAgICAgICAvLyBJZiBhbiBvYmplY3QgaXMgbWFya2VkIHdpdGggYWRkaXRpb25hbFByb3BlcnRpZXMsIGFsbCBpdHMga2V5cyBhcmUgdmFsaWRcbiAgICAgICAgICBpZiAoX29ialtrZXldLl9fcmpzZl9hZGRpdGlvbmFsUHJvcGVydGllcyAmJiBfb2JqW2tleV0uJG5hbWUgIT09IFwiXCIpIHtcbiAgICAgICAgICAgIGFjYy5wdXNoKF9vYmpba2V5XS4kbmFtZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGdldEFsbFBhdGhzKF9vYmpba2V5XSwgYWNjLCBuZXdQYXRocyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gXCIkbmFtZVwiICYmIF9vYmpba2V5XSAhPT0gXCJcIikge1xuICAgICAgICAgIHBhdGhzLmZvckVhY2gocGF0aCA9PiB7XG4gICAgICAgICAgICBwYXRoID0gcGF0aC5yZXBsYWNlKC9eXFwuLywgXCJcIik7XG4gICAgICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSBfZ2V0KGZvcm1EYXRhLCBwYXRoKTtcbiAgICAgICAgICAgIC8vIGFkZHMgcGF0aCB0byBmaWVsZE5hbWVzIGlmIGl0IHBvaW50cyB0byBhIHZhbHVlXG4gICAgICAgICAgICAvLyBvciBhbiBlbXB0eSBvYmplY3QvYXJyYXlcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZm9ybVZhbHVlICE9PSBcIm9iamVjdFwiIHx8IF9pc0VtcHR5KGZvcm1WYWx1ZSkpIHtcbiAgICAgICAgICAgICAgYWNjLnB1c2gocGF0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9O1xuXG4gICAgcmV0dXJuIGdldEFsbFBhdGhzKHBhdGhTY2hlbWEpO1xuICB9O1xuXG4gIG9uQ2hhbmdlID0gKGZvcm1EYXRhLCBuZXdFcnJvclNjaGVtYSkgPT4ge1xuICAgIGlmIChpc09iamVjdChmb3JtRGF0YSkgfHwgQXJyYXkuaXNBcnJheShmb3JtRGF0YSkpIHtcbiAgICAgIGNvbnN0IG5ld1N0YXRlID0gdGhpcy5nZXRTdGF0ZUZyb21Qcm9wcyh0aGlzLnByb3BzLCBmb3JtRGF0YSk7XG4gICAgICBmb3JtRGF0YSA9IG5ld1N0YXRlLmZvcm1EYXRhO1xuICAgIH1cbiAgICBjb25zdCBtdXN0VmFsaWRhdGUgPSAhdGhpcy5wcm9wcy5ub1ZhbGlkYXRlICYmIHRoaXMucHJvcHMubGl2ZVZhbGlkYXRlO1xuICAgIGxldCBzdGF0ZSA9IHsgZm9ybURhdGEgfTtcbiAgICBsZXQgbmV3Rm9ybURhdGEgPSBmb3JtRGF0YTtcblxuICAgIGlmICh0aGlzLnByb3BzLm9taXRFeHRyYURhdGEgPT09IHRydWUgJiYgdGhpcy5wcm9wcy5saXZlT21pdCA9PT0gdHJ1ZSkge1xuICAgICAgY29uc3QgcmV0cmlldmVkU2NoZW1hID0gcmV0cmlldmVTY2hlbWEoXG4gICAgICAgIHRoaXMuc3RhdGUuc2NoZW1hLFxuICAgICAgICB0aGlzLnN0YXRlLnNjaGVtYSxcbiAgICAgICAgZm9ybURhdGFcbiAgICAgICk7XG4gICAgICBjb25zdCBwYXRoU2NoZW1hID0gdG9QYXRoU2NoZW1hKFxuICAgICAgICByZXRyaWV2ZWRTY2hlbWEsXG4gICAgICAgIFwiXCIsXG4gICAgICAgIHRoaXMuc3RhdGUuc2NoZW1hLFxuICAgICAgICBmb3JtRGF0YVxuICAgICAgKTtcblxuICAgICAgY29uc3QgZmllbGROYW1lcyA9IHRoaXMuZ2V0RmllbGROYW1lcyhwYXRoU2NoZW1hLCBmb3JtRGF0YSk7XG5cbiAgICAgIG5ld0Zvcm1EYXRhID0gdGhpcy5nZXRVc2VkRm9ybURhdGEoZm9ybURhdGEsIGZpZWxkTmFtZXMpO1xuICAgICAgc3RhdGUgPSB7XG4gICAgICAgIGZvcm1EYXRhOiBuZXdGb3JtRGF0YSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKG11c3RWYWxpZGF0ZSkge1xuICAgICAgbGV0IHNjaGVtYVZhbGlkYXRpb24gPSB0aGlzLnZhbGlkYXRlKG5ld0Zvcm1EYXRhKTtcbiAgICAgIGxldCBlcnJvcnMgPSBzY2hlbWFWYWxpZGF0aW9uLmVycm9ycztcbiAgICAgIGxldCBlcnJvclNjaGVtYSA9IHNjaGVtYVZhbGlkYXRpb24uZXJyb3JTY2hlbWE7XG4gICAgICBjb25zdCBzY2hlbWFWYWxpZGF0aW9uRXJyb3JzID0gZXJyb3JzO1xuICAgICAgY29uc3Qgc2NoZW1hVmFsaWRhdGlvbkVycm9yU2NoZW1hID0gZXJyb3JTY2hlbWE7XG4gICAgICBpZiAodGhpcy5wcm9wcy5leHRyYUVycm9ycykge1xuICAgICAgICBlcnJvclNjaGVtYSA9IG1lcmdlT2JqZWN0cyhcbiAgICAgICAgICBlcnJvclNjaGVtYSxcbiAgICAgICAgICB0aGlzLnByb3BzLmV4dHJhRXJyb3JzLFxuICAgICAgICAgICEhXCJjb25jYXQgYXJyYXlzXCJcbiAgICAgICAgKTtcbiAgICAgICAgZXJyb3JzID0gdG9FcnJvckxpc3QoZXJyb3JTY2hlbWEpO1xuICAgICAgfVxuICAgICAgc3RhdGUgPSB7XG4gICAgICAgIGZvcm1EYXRhOiBuZXdGb3JtRGF0YSxcbiAgICAgICAgZXJyb3JzLFxuICAgICAgICBlcnJvclNjaGVtYSxcbiAgICAgICAgc2NoZW1hVmFsaWRhdGlvbkVycm9ycyxcbiAgICAgICAgc2NoZW1hVmFsaWRhdGlvbkVycm9yU2NoZW1hLFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnByb3BzLm5vVmFsaWRhdGUgJiYgbmV3RXJyb3JTY2hlbWEpIHtcbiAgICAgIGNvbnN0IGVycm9yU2NoZW1hID0gdGhpcy5wcm9wcy5leHRyYUVycm9yc1xuICAgICAgICA/IG1lcmdlT2JqZWN0cyhcbiAgICAgICAgICAgIG5ld0Vycm9yU2NoZW1hLFxuICAgICAgICAgICAgdGhpcy5wcm9wcy5leHRyYUVycm9ycyxcbiAgICAgICAgICAgICEhXCJjb25jYXQgYXJyYXlzXCJcbiAgICAgICAgICApXG4gICAgICAgIDogbmV3RXJyb3JTY2hlbWE7XG4gICAgICBzdGF0ZSA9IHtcbiAgICAgICAgZm9ybURhdGE6IG5ld0Zvcm1EYXRhLFxuICAgICAgICBlcnJvclNjaGVtYTogZXJyb3JTY2hlbWEsXG4gICAgICAgIGVycm9yczogdG9FcnJvckxpc3QoZXJyb3JTY2hlbWEpLFxuICAgICAgfTtcbiAgICB9XG4gICAgdGhpcy5zZXRTdGF0ZShcbiAgICAgIHN0YXRlLFxuICAgICAgKCkgPT4gdGhpcy5wcm9wcy5vbkNoYW5nZSAmJiB0aGlzLnByb3BzLm9uQ2hhbmdlKHRoaXMuc3RhdGUpXG4gICAgKTtcbiAgfTtcblxuICBvbkJsdXIgPSAoLi4uYXJncykgPT4ge1xuICAgIGlmICh0aGlzLnByb3BzLm9uQmx1cikge1xuICAgICAgdGhpcy5wcm9wcy5vbkJsdXIoLi4uYXJncyk7XG4gICAgfVxuICB9O1xuXG4gIG9uRm9jdXMgPSAoLi4uYXJncykgPT4ge1xuICAgIGlmICh0aGlzLnByb3BzLm9uRm9jdXMpIHtcbiAgICAgIHRoaXMucHJvcHMub25Gb2N1cyguLi5hcmdzKTtcbiAgICB9XG4gIH07XG5cbiAgb25TdWJtaXQgPSBldmVudCA9PiB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSBldmVudC5jdXJyZW50VGFyZ2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZXZlbnQucGVyc2lzdCgpO1xuICAgIGxldCBuZXdGb3JtRGF0YSA9IHRoaXMuc3RhdGUuZm9ybURhdGE7XG5cbiAgICBpZiAodGhpcy5wcm9wcy5vbWl0RXh0cmFEYXRhID09PSB0cnVlKSB7XG4gICAgICBjb25zdCByZXRyaWV2ZWRTY2hlbWEgPSByZXRyaWV2ZVNjaGVtYShcbiAgICAgICAgdGhpcy5zdGF0ZS5zY2hlbWEsXG4gICAgICAgIHRoaXMuc3RhdGUuc2NoZW1hLFxuICAgICAgICBuZXdGb3JtRGF0YVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHBhdGhTY2hlbWEgPSB0b1BhdGhTY2hlbWEoXG4gICAgICAgIHJldHJpZXZlZFNjaGVtYSxcbiAgICAgICAgXCJcIixcbiAgICAgICAgdGhpcy5zdGF0ZS5zY2hlbWEsXG4gICAgICAgIG5ld0Zvcm1EYXRhXG4gICAgICApO1xuXG4gICAgICBjb25zdCBmaWVsZE5hbWVzID0gdGhpcy5nZXRGaWVsZE5hbWVzKHBhdGhTY2hlbWEsIG5ld0Zvcm1EYXRhKTtcblxuICAgICAgbmV3Rm9ybURhdGEgPSB0aGlzLmdldFVzZWRGb3JtRGF0YShuZXdGb3JtRGF0YSwgZmllbGROYW1lcyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnByb3BzLm5vVmFsaWRhdGUpIHtcbiAgICAgIGxldCBzY2hlbWFWYWxpZGF0aW9uID0gdGhpcy52YWxpZGF0ZShuZXdGb3JtRGF0YSk7XG4gICAgICBsZXQgZXJyb3JzID0gc2NoZW1hVmFsaWRhdGlvbi5lcnJvcnM7XG4gICAgICBsZXQgZXJyb3JTY2hlbWEgPSBzY2hlbWFWYWxpZGF0aW9uLmVycm9yU2NoZW1hO1xuICAgICAgY29uc3Qgc2NoZW1hVmFsaWRhdGlvbkVycm9ycyA9IGVycm9ycztcbiAgICAgIGNvbnN0IHNjaGVtYVZhbGlkYXRpb25FcnJvclNjaGVtYSA9IGVycm9yU2NoZW1hO1xuICAgICAgaWYgKE9iamVjdC5rZXlzKGVycm9ycykubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5leHRyYUVycm9ycykge1xuICAgICAgICAgIGVycm9yU2NoZW1hID0gbWVyZ2VPYmplY3RzKFxuICAgICAgICAgICAgZXJyb3JTY2hlbWEsXG4gICAgICAgICAgICB0aGlzLnByb3BzLmV4dHJhRXJyb3JzLFxuICAgICAgICAgICAgISFcImNvbmNhdCBhcnJheXNcIlxuICAgICAgICAgICk7XG4gICAgICAgICAgZXJyb3JzID0gdG9FcnJvckxpc3QoZXJyb3JTY2hlbWEpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoXG4gICAgICAgICAge1xuICAgICAgICAgICAgZXJyb3JzLFxuICAgICAgICAgICAgZXJyb3JTY2hlbWEsXG4gICAgICAgICAgICBzY2hlbWFWYWxpZGF0aW9uRXJyb3JzLFxuICAgICAgICAgICAgc2NoZW1hVmFsaWRhdGlvbkVycm9yU2NoZW1hLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25FcnJvcikge1xuICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uRXJyb3IoZXJyb3JzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGb3JtIHZhbGlkYXRpb24gZmFpbGVkXCIsIGVycm9ycyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGhlcmUgYXJlIG5vIGVycm9ycyBnZW5lcmF0ZWQgdGhyb3VnaCBzY2hlbWEgdmFsaWRhdGlvbi5cbiAgICAvLyBDaGVjayBmb3IgdXNlciBwcm92aWRlZCBlcnJvcnMgYW5kIHVwZGF0ZSBzdGF0ZSBhY2NvcmRpbmdseS5cbiAgICBsZXQgZXJyb3JTY2hlbWE7XG4gICAgbGV0IGVycm9ycztcbiAgICBpZiAodGhpcy5wcm9wcy5leHRyYUVycm9ycykge1xuICAgICAgZXJyb3JTY2hlbWEgPSB0aGlzLnByb3BzLmV4dHJhRXJyb3JzO1xuICAgICAgZXJyb3JzID0gdG9FcnJvckxpc3QoZXJyb3JTY2hlbWEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlcnJvclNjaGVtYSA9IHt9O1xuICAgICAgZXJyb3JzID0gW107XG4gICAgfVxuXG4gICAgdGhpcy5zZXRTdGF0ZShcbiAgICAgIHtcbiAgICAgICAgZm9ybURhdGE6IG5ld0Zvcm1EYXRhLFxuICAgICAgICBlcnJvcnM6IGVycm9ycyxcbiAgICAgICAgZXJyb3JTY2hlbWE6IGVycm9yU2NoZW1hLFxuICAgICAgICBzY2hlbWFWYWxpZGF0aW9uRXJyb3JzOiBbXSxcbiAgICAgICAgc2NoZW1hVmFsaWRhdGlvbkVycm9yU2NoZW1hOiB7fSxcbiAgICAgIH0sXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLm9uU3VibWl0KSB7XG4gICAgICAgICAgdGhpcy5wcm9wcy5vblN1Ym1pdChcbiAgICAgICAgICAgIHsgLi4udGhpcy5zdGF0ZSwgZm9ybURhdGE6IG5ld0Zvcm1EYXRhLCBzdGF0dXM6IFwic3VibWl0dGVkXCIgfSxcbiAgICAgICAgICAgIGV2ZW50XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gIH07XG5cbiAgZ2V0UmVnaXN0cnkoKSB7XG4gICAgLy8gRm9yIEJDLCBhY2NlcHQgcGFzc2VkIFNjaGVtYUZpZWxkIGFuZCBUaXRsZUZpZWxkIHByb3BzIGFuZCBwYXNzIHRoZW0gdG9cbiAgICAvLyB0aGUgXCJmaWVsZHNcIiByZWdpc3RyeSBvbmUuXG4gICAgY29uc3QgeyBmaWVsZHMsIHdpZGdldHMgfSA9IGdldERlZmF1bHRSZWdpc3RyeSgpO1xuICAgIHJldHVybiB7XG4gICAgICBmaWVsZHM6IHsgLi4uZmllbGRzLCAuLi50aGlzLnByb3BzLmZpZWxkcyB9LFxuICAgICAgd2lkZ2V0czogeyAuLi53aWRnZXRzLCAuLi50aGlzLnByb3BzLndpZGdldHMgfSxcbiAgICAgIEFycmF5RmllbGRUZW1wbGF0ZTogdGhpcy5wcm9wcy5BcnJheUZpZWxkVGVtcGxhdGUsXG4gICAgICBPYmplY3RGaWVsZFRlbXBsYXRlOiB0aGlzLnByb3BzLk9iamVjdEZpZWxkVGVtcGxhdGUsXG4gICAgICBGaWVsZFRlbXBsYXRlOiB0aGlzLnByb3BzLkZpZWxkVGVtcGxhdGUsXG4gICAgICBkZWZpbml0aW9uczogdGhpcy5wcm9wcy5zY2hlbWEuZGVmaW5pdGlvbnMgfHwge30sXG4gICAgICByb290U2NoZW1hOiB0aGlzLnByb3BzLnNjaGVtYSxcbiAgICAgIGZvcm1Db250ZXh0OiB0aGlzLnByb3BzLmZvcm1Db250ZXh0IHx8IHt9LFxuICAgIH07XG4gIH1cblxuICBzdWJtaXQoKSB7XG4gICAgaWYgKHRoaXMuZm9ybUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuZm9ybUVsZW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgbmV3IEN1c3RvbUV2ZW50KFwic3VibWl0XCIsIHtcbiAgICAgICAgICBjYW5jZWxhYmxlOiB0cnVlLFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgY2hpbGRyZW4sXG4gICAgICBpZCxcbiAgICAgIGlkUHJlZml4LFxuICAgICAgaWRTZXBhcmF0b3IsXG4gICAgICBjbGFzc05hbWUsXG4gICAgICB0YWdOYW1lLFxuICAgICAgbmFtZSxcbiAgICAgIG1ldGhvZCxcbiAgICAgIHRhcmdldCxcbiAgICAgIGFjdGlvbixcbiAgICAgIGF1dG9jb21wbGV0ZTogZGVwcmVjYXRlZEF1dG9jb21wbGV0ZSxcbiAgICAgIGF1dG9Db21wbGV0ZTogY3VycmVudEF1dG9Db21wbGV0ZSxcbiAgICAgIGVuY3R5cGUsXG4gICAgICBhY2NlcHRjaGFyc2V0LFxuICAgICAgbm9IdG1sNVZhbGlkYXRlLFxuICAgICAgZGlzYWJsZWQsXG4gICAgICByZWFkb25seSxcbiAgICAgIGZvcm1Db250ZXh0LFxuICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgY29uc3QgeyBzY2hlbWEsIHVpU2NoZW1hLCBmb3JtRGF0YSwgZXJyb3JTY2hlbWEsIGlkU2NoZW1hIH0gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IHJlZ2lzdHJ5ID0gdGhpcy5nZXRSZWdpc3RyeSgpO1xuICAgIGNvbnN0IF9TY2hlbWFGaWVsZCA9IHJlZ2lzdHJ5LmZpZWxkcy5TY2hlbWFGaWVsZDtcbiAgICBjb25zdCBGb3JtVGFnID0gdGFnTmFtZSA/IHRhZ05hbWUgOiBcImZvcm1cIjtcbiAgICBpZiAoZGVwcmVjYXRlZEF1dG9jb21wbGV0ZSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBcIlVzaW5nIGF1dG9jb21wbGV0ZSBwcm9wZXJ0eSBvZiBGb3JtIGlzIGRlcHJlY2F0ZWQsIHVzZSBhdXRvQ29tcGxldGUgaW5zdGVhZC5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgYXV0b0NvbXBsZXRlID0gY3VycmVudEF1dG9Db21wbGV0ZVxuICAgICAgPyBjdXJyZW50QXV0b0NvbXBsZXRlXG4gICAgICA6IGRlcHJlY2F0ZWRBdXRvY29tcGxldGU7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEZvcm1UYWdcbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWUgPyBjbGFzc05hbWUgOiBcInJqc2ZcIn1cbiAgICAgICAgaWQ9e2lkfVxuICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICBtZXRob2Q9e21ldGhvZH1cbiAgICAgICAgdGFyZ2V0PXt0YXJnZXR9XG4gICAgICAgIGFjdGlvbj17YWN0aW9ufVxuICAgICAgICBhdXRvQ29tcGxldGU9e2F1dG9Db21wbGV0ZX1cbiAgICAgICAgZW5jVHlwZT17ZW5jdHlwZX1cbiAgICAgICAgYWNjZXB0Q2hhcnNldD17YWNjZXB0Y2hhcnNldH1cbiAgICAgICAgbm9WYWxpZGF0ZT17bm9IdG1sNVZhbGlkYXRlfVxuICAgICAgICBvblN1Ym1pdD17dGhpcy5vblN1Ym1pdH1cbiAgICAgICAgcmVmPXtmb3JtID0+IHtcbiAgICAgICAgICB0aGlzLmZvcm1FbGVtZW50ID0gZm9ybTtcbiAgICAgICAgfX0+XG4gICAgICAgIHt0aGlzLnJlbmRlckVycm9ycygpfVxuICAgICAgICA8X1NjaGVtYUZpZWxkXG4gICAgICAgICAgc2NoZW1hPXtzY2hlbWF9XG4gICAgICAgICAgdWlTY2hlbWE9e3VpU2NoZW1hfVxuICAgICAgICAgIGVycm9yU2NoZW1hPXtlcnJvclNjaGVtYX1cbiAgICAgICAgICBpZFNjaGVtYT17aWRTY2hlbWF9XG4gICAgICAgICAgaWRQcmVmaXg9e2lkUHJlZml4fVxuICAgICAgICAgIGlkU2VwYXJhdG9yPXtpZFNlcGFyYXRvcn1cbiAgICAgICAgICBmb3JtQ29udGV4dD17Zm9ybUNvbnRleHR9XG4gICAgICAgICAgZm9ybURhdGE9e2Zvcm1EYXRhfVxuICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17dGhpcy5vbkJsdXJ9XG4gICAgICAgICAgb25Gb2N1cz17dGhpcy5vbkZvY3VzfVxuICAgICAgICAgIHJlZ2lzdHJ5PXtyZWdpc3RyeX1cbiAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgcmVhZG9ubHk9e3JlYWRvbmx5fVxuICAgICAgICAvPlxuICAgICAgICB7Y2hpbGRyZW4gPyAoXG4gICAgICAgICAgY2hpbGRyZW5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3NOYW1lPVwiYnRuIGJ0bi1pbmZvXCI+XG4gICAgICAgICAgICAgIFN1Ym1pdFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICA8L0Zvcm1UYWc+XG4gICAgKTtcbiAgfVxufVxuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gIEZvcm0ucHJvcFR5cGVzID0ge1xuICAgIHNjaGVtYTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIHVpU2NoZW1hOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGZvcm1EYXRhOiBQcm9wVHlwZXMuYW55LFxuICAgIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICByZWFkb25seTogUHJvcFR5cGVzLmJvb2wsXG4gICAgd2lkZ2V0czogUHJvcFR5cGVzLm9iamVjdE9mKFxuICAgICAgUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKVxuICAgICksXG4gICAgZmllbGRzOiBQcm9wVHlwZXMub2JqZWN0T2YoUHJvcFR5cGVzLmVsZW1lbnRUeXBlKSxcbiAgICBBcnJheUZpZWxkVGVtcGxhdGU6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgICBPYmplY3RGaWVsZFRlbXBsYXRlOiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gICAgRmllbGRUZW1wbGF0ZTogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAgIEVycm9yTGlzdDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uRXJyb3I6IFByb3BUeXBlcy5mdW5jLFxuICAgIHNob3dFcnJvckxpc3Q6IFByb3BUeXBlcy5ib29sLFxuICAgIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdGFnTmFtZTogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAgIG5hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgbWV0aG9kOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHRhcmdldDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBhY3Rpb246IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgYXV0b2NvbXBsZXRlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGF1dG9Db21wbGV0ZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBlbmN0eXBlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGFjY2VwdGNoYXJzZXQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgbm9WYWxpZGF0ZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgbm9IdG1sNVZhbGlkYXRlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBsaXZlVmFsaWRhdGU6IFByb3BUeXBlcy5ib29sLFxuICAgIHZhbGlkYXRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICB0cmFuc2Zvcm1FcnJvcnM6IFByb3BUeXBlcy5mdW5jLFxuICAgIGZvcm1Db250ZXh0OiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGN1c3RvbUZvcm1hdHM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgYWRkaXRpb25hbE1ldGFTY2hlbWFzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub2JqZWN0KSxcbiAgICBvbWl0RXh0cmFEYXRhOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBleHRyYUVycm9yczogUHJvcFR5cGVzLm9iamVjdCxcbiAgfTtcbn1cbiJdfQ==
@@ -18,4 +18,5 @@ export default function IconButton(props) {
18
18
  }, otherProps), React.createElement("i", {
19
19
  className: "glyphicon glyphicon-".concat(icon)
20
20
  }));
21
- }
21
+ }
22
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL0ljb25CdXR0b24uanMiXSwibmFtZXMiOlsiUmVhY3QiLCJJY29uQnV0dG9uIiwicHJvcHMiLCJ0eXBlIiwiaWNvbiIsImNsYXNzTmFtZSIsIm90aGVyUHJvcHMiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU9BLEtBQVAsTUFBa0IsT0FBbEI7QUFFQSxlQUFlLFNBQVNDLFVBQVQsQ0FBb0JDLEtBQXBCLEVBQTJCO0FBQUEsb0JBQ3FCQSxLQURyQixDQUNoQ0MsSUFEZ0M7QUFBQSxNQUNoQ0EsSUFEZ0MsNEJBQ3pCLFNBRHlCO0FBQUEsTUFDZEMsSUFEYyxHQUNxQkYsS0FEckIsQ0FDZEUsSUFEYztBQUFBLE1BQ1JDLFNBRFEsR0FDcUJILEtBRHJCLENBQ1JHLFNBRFE7QUFBQSxNQUNNQyxVQUROLDRCQUNxQkosS0FEckI7O0FBRXhDLFNBQ0U7QUFDRSxJQUFBLElBQUksRUFBQyxRQURQO0FBRUUsSUFBQSxTQUFTLG9CQUFhQyxJQUFiLGNBQXFCRSxTQUFyQjtBQUZYLEtBR01DLFVBSE4sR0FJRTtBQUFHLElBQUEsU0FBUyxnQ0FBeUJGLElBQXpCO0FBQVosSUFKRixDQURGO0FBUUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEljb25CdXR0b24ocHJvcHMpIHtcbiAgY29uc3QgeyB0eXBlID0gXCJkZWZhdWx0XCIsIGljb24sIGNsYXNzTmFtZSwgLi4ub3RoZXJQcm9wcyB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzc05hbWU9e2BidG4gYnRuLSR7dHlwZX0gJHtjbGFzc05hbWV9YH1cbiAgICAgIHsuLi5vdGhlclByb3BzfT5cbiAgICAgIDxpIGNsYXNzTmFtZT17YGdseXBoaWNvbiBnbHlwaGljb24tJHtpY29ufWB9IC8+XG4gICAgPC9idXR0b24+XG4gICk7XG59XG4iXX0=