You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			9027 lines
		
	
	
		
			323 KiB
		
	
	
	
		
			JavaScript
		
	
			
		
		
	
	
			9027 lines
		
	
	
		
			323 KiB
		
	
	
	
		
			JavaScript
		
	
| (self["webpackChunk_JUPYTERLAB_CORE_OUTPUT"] = self["webpackChunk_JUPYTERLAB_CORE_OUTPUT"] || []).push([[7995],{
 | |
| 
 | |
| /***/ 57995:
 | |
| /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
 | |
| 
 | |
| "use strict";
 | |
| // ESM COMPAT FLAG
 | |
| __webpack_require__.r(__webpack_exports__);
 | |
| 
 | |
| // EXPORTS
 | |
| __webpack_require__.d(__webpack_exports__, {
 | |
|   ADDITIONAL_PROPERTIES_KEY: () => (/* reexport */ ADDITIONAL_PROPERTIES_KEY),
 | |
|   ADDITIONAL_PROPERTY_FLAG: () => (/* reexport */ ADDITIONAL_PROPERTY_FLAG),
 | |
|   ALL_OF_KEY: () => (/* reexport */ ALL_OF_KEY),
 | |
|   ANY_OF_KEY: () => (/* reexport */ ANY_OF_KEY),
 | |
|   CONST_KEY: () => (/* reexport */ CONST_KEY),
 | |
|   DEFAULT_KEY: () => (/* reexport */ DEFAULT_KEY),
 | |
|   DEFINITIONS_KEY: () => (/* reexport */ DEFINITIONS_KEY),
 | |
|   DEPENDENCIES_KEY: () => (/* reexport */ DEPENDENCIES_KEY),
 | |
|   ENUM_KEY: () => (/* reexport */ ENUM_KEY),
 | |
|   ERRORS_KEY: () => (/* reexport */ ERRORS_KEY),
 | |
|   ErrorSchemaBuilder: () => (/* reexport */ ErrorSchemaBuilder),
 | |
|   ID_KEY: () => (/* reexport */ ID_KEY),
 | |
|   IF_KEY: () => (/* reexport */ IF_KEY),
 | |
|   ITEMS_KEY: () => (/* reexport */ ITEMS_KEY),
 | |
|   JUNK_OPTION_ID: () => (/* reexport */ JUNK_OPTION_ID),
 | |
|   NAME_KEY: () => (/* reexport */ NAME_KEY),
 | |
|   ONE_OF_KEY: () => (/* reexport */ ONE_OF_KEY),
 | |
|   PROPERTIES_KEY: () => (/* reexport */ PROPERTIES_KEY),
 | |
|   REF_KEY: () => (/* reexport */ REF_KEY),
 | |
|   REQUIRED_KEY: () => (/* reexport */ REQUIRED_KEY),
 | |
|   RJSF_ADDITONAL_PROPERTIES_FLAG: () => (/* reexport */ RJSF_ADDITONAL_PROPERTIES_FLAG),
 | |
|   ROOT_SCHEMA_PREFIX: () => (/* reexport */ ROOT_SCHEMA_PREFIX),
 | |
|   SUBMIT_BTN_OPTIONS_KEY: () => (/* reexport */ SUBMIT_BTN_OPTIONS_KEY),
 | |
|   TranslatableString: () => (/* reexport */ TranslatableString),
 | |
|   UI_FIELD_KEY: () => (/* reexport */ UI_FIELD_KEY),
 | |
|   UI_GLOBAL_OPTIONS_KEY: () => (/* reexport */ UI_GLOBAL_OPTIONS_KEY),
 | |
|   UI_OPTIONS_KEY: () => (/* reexport */ UI_OPTIONS_KEY),
 | |
|   UI_WIDGET_KEY: () => (/* reexport */ UI_WIDGET_KEY),
 | |
|   allowAdditionalItems: () => (/* reexport */ allowAdditionalItems),
 | |
|   ariaDescribedByIds: () => (/* reexport */ ariaDescribedByIds),
 | |
|   asNumber: () => (/* reexport */ asNumber),
 | |
|   canExpand: () => (/* reexport */ canExpand),
 | |
|   createErrorHandler: () => (/* reexport */ createErrorHandler),
 | |
|   createSchemaUtils: () => (/* reexport */ createSchemaUtils),
 | |
|   dataURItoBlob: () => (/* reexport */ dataURItoBlob),
 | |
|   deepEquals: () => (/* reexport */ deepEquals),
 | |
|   descriptionId: () => (/* reexport */ descriptionId),
 | |
|   englishStringTranslator: () => (/* reexport */ englishStringTranslator),
 | |
|   enumOptionsDeselectValue: () => (/* reexport */ enumOptionsDeselectValue),
 | |
|   enumOptionsIndexForValue: () => (/* reexport */ enumOptionsIndexForValue),
 | |
|   enumOptionsIsSelected: () => (/* reexport */ enumOptionsIsSelected),
 | |
|   enumOptionsSelectValue: () => (/* reexport */ enumOptionsSelectValue),
 | |
|   enumOptionsValueForIndex: () => (/* reexport */ enumOptionsValueForIndex),
 | |
|   errorId: () => (/* reexport */ errorId),
 | |
|   examplesId: () => (/* reexport */ examplesId),
 | |
|   findSchemaDefinition: () => (/* reexport */ findSchemaDefinition),
 | |
|   getClosestMatchingOption: () => (/* reexport */ getClosestMatchingOption),
 | |
|   getDateElementProps: () => (/* reexport */ getDateElementProps),
 | |
|   getDefaultFormState: () => (/* reexport */ getDefaultFormState),
 | |
|   getDiscriminatorFieldFromSchema: () => (/* reexport */ getDiscriminatorFieldFromSchema),
 | |
|   getDisplayLabel: () => (/* reexport */ getDisplayLabel),
 | |
|   getFirstMatchingOption: () => (/* reexport */ getFirstMatchingOption),
 | |
|   getInputProps: () => (/* reexport */ getInputProps),
 | |
|   getMatchingOption: () => (/* reexport */ getMatchingOption),
 | |
|   getOptionMatchingSimpleDiscriminator: () => (/* reexport */ getOptionMatchingSimpleDiscriminator),
 | |
|   getSchemaType: () => (/* reexport */ getSchemaType),
 | |
|   getSubmitButtonOptions: () => (/* reexport */ getSubmitButtonOptions),
 | |
|   getTemplate: () => (/* reexport */ getTemplate),
 | |
|   getUiOptions: () => (/* reexport */ getUiOptions),
 | |
|   getWidget: () => (/* reexport */ getWidget),
 | |
|   guessType: () => (/* reexport */ guessType),
 | |
|   hasWidget: () => (/* reexport */ hasWidget),
 | |
|   hashForSchema: () => (/* reexport */ hashForSchema),
 | |
|   helpId: () => (/* reexport */ helpId),
 | |
|   isConstant: () => (/* reexport */ isConstant),
 | |
|   isCustomWidget: () => (/* reexport */ isCustomWidget),
 | |
|   isFilesArray: () => (/* reexport */ isFilesArray),
 | |
|   isFixedItems: () => (/* reexport */ isFixedItems),
 | |
|   isMultiSelect: () => (/* reexport */ isMultiSelect),
 | |
|   isObject: () => (/* reexport */ isObject),
 | |
|   isSelect: () => (/* reexport */ isSelect),
 | |
|   labelValue: () => (/* reexport */ labelValue),
 | |
|   localToUTC: () => (/* reexport */ localToUTC),
 | |
|   mergeDefaultsWithFormData: () => (/* reexport */ mergeDefaultsWithFormData),
 | |
|   mergeObjects: () => (/* reexport */ mergeObjects),
 | |
|   mergeSchemas: () => (/* reexport */ mergeSchemas),
 | |
|   mergeValidationData: () => (/* reexport */ mergeValidationData),
 | |
|   optionId: () => (/* reexport */ optionId),
 | |
|   optionsList: () => (/* reexport */ optionsList),
 | |
|   orderProperties: () => (/* reexport */ orderProperties),
 | |
|   pad: () => (/* reexport */ pad),
 | |
|   parseDateString: () => (/* reexport */ parseDateString),
 | |
|   rangeSpec: () => (/* reexport */ rangeSpec),
 | |
|   replaceStringParameters: () => (/* reexport */ replaceStringParameters),
 | |
|   retrieveSchema: () => (/* reexport */ retrieveSchema),
 | |
|   sanitizeDataForNewSchema: () => (/* reexport */ sanitizeDataForNewSchema),
 | |
|   schemaParser: () => (/* reexport */ schemaParser),
 | |
|   schemaRequiresTrueValue: () => (/* reexport */ schemaRequiresTrueValue),
 | |
|   shouldRender: () => (/* reexport */ shouldRender),
 | |
|   titleId: () => (/* reexport */ titleId),
 | |
|   toConstant: () => (/* reexport */ toConstant),
 | |
|   toDateString: () => (/* reexport */ toDateString),
 | |
|   toErrorList: () => (/* reexport */ toErrorList),
 | |
|   toErrorSchema: () => (/* reexport */ toErrorSchema),
 | |
|   toIdSchema: () => (/* reexport */ toIdSchema),
 | |
|   toPathSchema: () => (/* reexport */ toPathSchema),
 | |
|   unwrapErrorHandler: () => (/* reexport */ unwrapErrorHandler),
 | |
|   utcToLocal: () => (/* reexport */ utcToLocal),
 | |
|   validationDataMerge: () => (/* reexport */ validationDataMerge),
 | |
|   withIdRefPrefix: () => (/* reexport */ withIdRefPrefix)
 | |
| });
 | |
| 
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/isObject.js
 | |
| /** Determines whether a `thing` is an object for the purposes of RSJF. In this case, `thing` is an object if it has
 | |
|  * the type `object` but is NOT null, an array or a File.
 | |
|  *
 | |
|  * @param thing - The thing to check to see whether it is an object
 | |
|  * @returns - True if it is a non-null, non-array, non-File object
 | |
|  */
 | |
| function isObject(thing) {
 | |
|     if (typeof File !== 'undefined' && thing instanceof File) {
 | |
|         return false;
 | |
|     }
 | |
|     if (typeof Date !== 'undefined' && thing instanceof Date) {
 | |
|         return false;
 | |
|     }
 | |
|     return typeof thing === 'object' && thing !== null && !Array.isArray(thing);
 | |
| }
 | |
| //# sourceMappingURL=isObject.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/allowAdditionalItems.js
 | |
| 
 | |
| /** Checks the schema to see if it is allowing additional items, by verifying that `schema.additionalItems` is an
 | |
|  * object. The user is warned in the console if `schema.additionalItems` has the value `true`.
 | |
|  *
 | |
|  * @param schema - The schema object to check
 | |
|  * @returns - True if additional items is allowed, otherwise false
 | |
|  */
 | |
| function allowAdditionalItems(schema) {
 | |
|     if (schema.additionalItems === true) {
 | |
|         console.warn('additionalItems=true is currently not supported');
 | |
|     }
 | |
|     return isObject(schema.additionalItems);
 | |
| }
 | |
| //# sourceMappingURL=allowAdditionalItems.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/asNumber.js
 | |
| /** Attempts to convert the string into a number. If an empty string is provided, then `undefined` is returned. If a
 | |
|  * `null` is provided, it is returned. If the string ends in a `.` then the string is returned because the user may be
 | |
|  * in the middle of typing a float number. If a number ends in a pattern like `.0`, `.20`, `.030`, string is returned
 | |
|  * because the user may be typing number that will end in a non-zero digit. Otherwise, the string is wrapped by
 | |
|  * `Number()` and if that result is not `NaN`, that number will be returned, otherwise the string `value` will be.
 | |
|  *
 | |
|  * @param value - The string or null value to convert to a number
 | |
|  * @returns - The `value` converted to a number when appropriate, otherwise the `value`
 | |
|  */
 | |
| function asNumber(value) {
 | |
|     if (value === '') {
 | |
|         return undefined;
 | |
|     }
 | |
|     if (value === null) {
 | |
|         return null;
 | |
|     }
 | |
|     if (/\.$/.test(value)) {
 | |
|         // '3.' can't really be considered a number even if it parses in js. The
 | |
|         // user is most likely entering a float.
 | |
|         return value;
 | |
|     }
 | |
|     if (/\.0$/.test(value)) {
 | |
|         // we need to return this as a string here, to allow for input like 3.07
 | |
|         return value;
 | |
|     }
 | |
|     if (/\.\d*0$/.test(value)) {
 | |
|         // It's a number, that's cool - but we need it as a string so it doesn't screw
 | |
|         // with the user when entering dollar amounts or other values (such as those with
 | |
|         // specific precision or number of significant digits)
 | |
|         return value;
 | |
|     }
 | |
|     const n = Number(value);
 | |
|     const valid = typeof n === 'number' && !Number.isNaN(n);
 | |
|     return valid ? n : value;
 | |
| }
 | |
| //# sourceMappingURL=asNumber.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/constants.js
 | |
| /** Below are the list of all the keys into various elements of a RJSFSchema or UiSchema that are used by the various
 | |
|  * utility functions. In addition to those keys, there are the special `ADDITIONAL_PROPERTY_FLAG` and
 | |
|  * `RJSF_ADDITONAL_PROPERTIES_FLAG` flags that is added to a schema under certain conditions by the `retrieveSchema()`
 | |
|  * utility.
 | |
|  */
 | |
| const ADDITIONAL_PROPERTY_FLAG = '__additional_property';
 | |
| const ADDITIONAL_PROPERTIES_KEY = 'additionalProperties';
 | |
| const ALL_OF_KEY = 'allOf';
 | |
| const ANY_OF_KEY = 'anyOf';
 | |
| const CONST_KEY = 'const';
 | |
| const DEFAULT_KEY = 'default';
 | |
| const DEFINITIONS_KEY = 'definitions';
 | |
| const DEPENDENCIES_KEY = 'dependencies';
 | |
| const ENUM_KEY = 'enum';
 | |
| const ERRORS_KEY = '__errors';
 | |
| const ID_KEY = '$id';
 | |
| const IF_KEY = 'if';
 | |
| const ITEMS_KEY = 'items';
 | |
| const JUNK_OPTION_ID = '_$junk_option_schema_id$_';
 | |
| const NAME_KEY = '$name';
 | |
| const ONE_OF_KEY = 'oneOf';
 | |
| const PROPERTIES_KEY = 'properties';
 | |
| const REQUIRED_KEY = 'required';
 | |
| const SUBMIT_BTN_OPTIONS_KEY = 'submitButtonOptions';
 | |
| const REF_KEY = '$ref';
 | |
| const RJSF_ADDITONAL_PROPERTIES_FLAG = '__rjsf_additionalProperties';
 | |
| const ROOT_SCHEMA_PREFIX = '__rjsf_rootSchema';
 | |
| const UI_FIELD_KEY = 'ui:field';
 | |
| const UI_WIDGET_KEY = 'ui:widget';
 | |
| const UI_OPTIONS_KEY = 'ui:options';
 | |
| const UI_GLOBAL_OPTIONS_KEY = 'ui:globalOptions';
 | |
| //# sourceMappingURL=constants.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/getUiOptions.js
 | |
| 
 | |
| 
 | |
| /** Get all passed options from ui:options, and ui:<optionName>, returning them in an object with the `ui:`
 | |
|  * stripped off. Any `globalOptions` will always be returned, unless they are overridden by options in the `uiSchema`.
 | |
|  *
 | |
|  * @param [uiSchema={}] - The UI Schema from which to get any `ui:xxx` options
 | |
|  * @param [globalOptions={}] - The optional Global UI Schema from which to get any fallback `xxx` options
 | |
|  * @returns - An object containing all the `ui:xxx` options with the `ui:` stripped off along with all `globalOptions`
 | |
|  */
 | |
| function getUiOptions(uiSchema = {}, globalOptions = {}) {
 | |
|     return Object.keys(uiSchema)
 | |
|         .filter((key) => key.indexOf('ui:') === 0)
 | |
|         .reduce((options, key) => {
 | |
|         const value = uiSchema[key];
 | |
|         if (key === UI_WIDGET_KEY && isObject(value)) {
 | |
|             console.error('Setting options via ui:widget object is no longer supported, use ui:options instead');
 | |
|             return options;
 | |
|         }
 | |
|         if (key === UI_OPTIONS_KEY && isObject(value)) {
 | |
|             return { ...options, ...value };
 | |
|         }
 | |
|         return { ...options, [key.substring(3)]: value };
 | |
|     }, { ...globalOptions });
 | |
| }
 | |
| //# sourceMappingURL=getUiOptions.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/canExpand.js
 | |
| 
 | |
| /** Checks whether the field described by `schema`, having the `uiSchema` and `formData` supports expanding. The UI for
 | |
|  * the field can expand if it has additional properties, is not forced as non-expandable by the `uiSchema` and the
 | |
|  * `formData` object doesn't already have `schema.maxProperties` elements.
 | |
|  *
 | |
|  * @param schema - The schema for the field that is being checked
 | |
|  * @param [uiSchema={}] - The uiSchema for the field
 | |
|  * @param [formData] - The formData for the field
 | |
|  * @returns - True if the schema element has additionalProperties, is expandable, and not at the maxProperties limit
 | |
|  */
 | |
| function canExpand(schema, uiSchema = {}, formData) {
 | |
|     if (!schema.additionalProperties) {
 | |
|         return false;
 | |
|     }
 | |
|     const { expandable = true } = getUiOptions(uiSchema);
 | |
|     if (expandable === false) {
 | |
|         return expandable;
 | |
|     }
 | |
|     // if ui:options.expandable was not explicitly set to false, we can add
 | |
|     // another property if we have not exceeded maxProperties yet
 | |
|     if (schema.maxProperties !== undefined && formData) {
 | |
|         return Object.keys(formData).length < schema.maxProperties;
 | |
|     }
 | |
|     return true;
 | |
| }
 | |
| //# sourceMappingURL=canExpand.js.map
 | |
| // EXTERNAL MODULE: ../node_modules/lodash/isPlainObject.js
 | |
| var isPlainObject = __webpack_require__(40861);
 | |
| var isPlainObject_default = /*#__PURE__*/__webpack_require__.n(isPlainObject);
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/createErrorHandler.js
 | |
| 
 | |
| 
 | |
| /** Given a `formData` object, recursively creates a `FormValidation` error handling structure around it
 | |
|  *
 | |
|  * @param formData - The form data around which the error handler is created
 | |
|  * @returns - A `FormValidation` object based on the `formData` structure
 | |
|  */
 | |
| function createErrorHandler(formData) {
 | |
|     const handler = {
 | |
|         // We store the list of errors for this node in a property named __errors
 | |
|         // to avoid name collision with a possible sub schema field named
 | |
|         // 'errors' (see `utils.toErrorSchema`).
 | |
|         [ERRORS_KEY]: [],
 | |
|         addError(message) {
 | |
|             this[ERRORS_KEY].push(message);
 | |
|         },
 | |
|     };
 | |
|     if (Array.isArray(formData)) {
 | |
|         return formData.reduce((acc, value, key) => {
 | |
|             return { ...acc, [key]: createErrorHandler(value) };
 | |
|         }, handler);
 | |
|     }
 | |
|     if (isPlainObject_default()(formData)) {
 | |
|         const formObject = formData;
 | |
|         return Object.keys(formObject).reduce((acc, key) => {
 | |
|             return { ...acc, [key]: createErrorHandler(formObject[key]) };
 | |
|         }, handler);
 | |
|     }
 | |
|     return handler;
 | |
| }
 | |
| //# sourceMappingURL=createErrorHandler.js.map
 | |
| // EXTERNAL MODULE: ../node_modules/lodash/isEqualWith.js
 | |
| var isEqualWith = __webpack_require__(65191);
 | |
| var isEqualWith_default = /*#__PURE__*/__webpack_require__.n(isEqualWith);
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/deepEquals.js
 | |
| 
 | |
| /** Implements a deep equals using the `lodash.isEqualWith` function, that provides a customized comparator that
 | |
|  * assumes all functions are equivalent.
 | |
|  *
 | |
|  * @param a - The first element to compare
 | |
|  * @param b - The second element to compare
 | |
|  * @returns - True if the `a` and `b` are deeply equal, false otherwise
 | |
|  */
 | |
| function deepEquals(a, b) {
 | |
|     return isEqualWith_default()(a, b, (obj, other) => {
 | |
|         if (typeof obj === 'function' && typeof other === 'function') {
 | |
|             // Assume all functions are equivalent
 | |
|             // see https://github.com/rjsf-team/react-jsonschema-form/issues/255
 | |
|             return true;
 | |
|         }
 | |
|         return undefined; // fallback to default isEquals behavior
 | |
|     });
 | |
| }
 | |
| //# sourceMappingURL=deepEquals.js.map
 | |
| // EXTERNAL MODULE: ../node_modules/lodash/get.js
 | |
| var get = __webpack_require__(99729);
 | |
| var get_default = /*#__PURE__*/__webpack_require__.n(get);
 | |
| // EXTERNAL MODULE: ../node_modules/lodash/isEmpty.js
 | |
| var isEmpty = __webpack_require__(90104);
 | |
| var isEmpty_default = /*#__PURE__*/__webpack_require__.n(isEmpty);
 | |
| // EXTERNAL MODULE: ../node_modules/jsonpointer/jsonpointer.js
 | |
| var jsonpointer = __webpack_require__(88208);
 | |
| // EXTERNAL MODULE: ../node_modules/lodash/omit.js
 | |
| var omit = __webpack_require__(48159);
 | |
| var omit_default = /*#__PURE__*/__webpack_require__.n(omit);
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/findSchemaDefinition.js
 | |
| 
 | |
| 
 | |
| 
 | |
| /** Splits out the value at the `key` in `object` from the `object`, returning an array that contains in the first
 | |
|  * location, the `object` minus the `key: value` and in the second location the `value`.
 | |
|  *
 | |
|  * @param key - The key from the object to extract
 | |
|  * @param object - The object from which to extract the element
 | |
|  * @returns - An array with the first value being the object minus the `key` element and the second element being the
 | |
|  *      value from `object[key]`
 | |
|  */
 | |
| function splitKeyElementFromObject(key, object) {
 | |
|     const value = object[key];
 | |
|     const remaining = omit_default()(object, [key]);
 | |
|     return [remaining, value];
 | |
| }
 | |
| /** Given the name of a `$ref` from within a schema, using the `rootSchema`, look up and return the sub-schema using the
 | |
|  * path provided by that reference. If `#` is not the first character of the reference, or the path does not exist in
 | |
|  * the schema, then throw an Error. Otherwise return the sub-schema. Also deals with nested `$ref`s in the sub-schema.
 | |
|  *
 | |
|  * @param $ref - The ref string for which the schema definition is desired
 | |
|  * @param [rootSchema={}] - The root schema in which to search for the definition
 | |
|  * @returns - The sub-schema within the `rootSchema` which matches the `$ref` if it exists
 | |
|  * @throws - Error indicating that no schema for that reference exists
 | |
|  */
 | |
| function findSchemaDefinition($ref, rootSchema = {}) {
 | |
|     let ref = $ref || '';
 | |
|     if (ref.startsWith('#')) {
 | |
|         // Decode URI fragment representation.
 | |
|         ref = decodeURIComponent(ref.substring(1));
 | |
|     }
 | |
|     else {
 | |
|         throw new Error(`Could not find a definition for ${$ref}.`);
 | |
|     }
 | |
|     const current = jsonpointer.get(rootSchema, ref);
 | |
|     if (current === undefined) {
 | |
|         throw new Error(`Could not find a definition for ${$ref}.`);
 | |
|     }
 | |
|     if (current[REF_KEY]) {
 | |
|         const [remaining, theRef] = splitKeyElementFromObject(REF_KEY, current);
 | |
|         const subSchema = findSchemaDefinition(theRef, rootSchema);
 | |
|         if (Object.keys(remaining).length > 0) {
 | |
|             return { ...remaining, ...subSchema };
 | |
|         }
 | |
|         return subSchema;
 | |
|     }
 | |
|     return current;
 | |
| }
 | |
| //# sourceMappingURL=findSchemaDefinition.js.map
 | |
| // EXTERNAL MODULE: ../node_modules/lodash/has.js
 | |
| var has = __webpack_require__(73915);
 | |
| var has_default = /*#__PURE__*/__webpack_require__.n(has);
 | |
| // EXTERNAL MODULE: ../node_modules/lodash/isNumber.js
 | |
| var isNumber = __webpack_require__(78581);
 | |
| var isNumber_default = /*#__PURE__*/__webpack_require__.n(isNumber);
 | |
| // EXTERNAL MODULE: ../node_modules/lodash/isObject.js
 | |
| var lodash_isObject = __webpack_require__(11611);
 | |
| var isObject_default = /*#__PURE__*/__webpack_require__.n(lodash_isObject);
 | |
| // EXTERNAL MODULE: ../node_modules/lodash/isString.js
 | |
| var isString = __webpack_require__(47206);
 | |
| var isString_default = /*#__PURE__*/__webpack_require__.n(isString);
 | |
| // EXTERNAL MODULE: ../node_modules/lodash/reduce.js
 | |
| var reduce = __webpack_require__(34172);
 | |
| var reduce_default = /*#__PURE__*/__webpack_require__.n(reduce);
 | |
| // EXTERNAL MODULE: ../node_modules/lodash/times.js
 | |
| var times = __webpack_require__(41571);
 | |
| var times_default = /*#__PURE__*/__webpack_require__.n(times);
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/getOptionMatchingSimpleDiscriminator.js
 | |
| 
 | |
| 
 | |
| /** Compares the value of `discriminatorField` within `formData` against the value of `discriminatorField` within schema for each `option`.
 | |
|  * Returns index of first `option` whose discriminator matches formData. Returns `undefined` if there is no match.
 | |
|  * This function does not work with discriminators of `"type": "object"` and `"type": "array"`
 | |
|  *
 | |
|  * @param formData - The current formData, if any, used to figure out a match
 | |
|  * @param options - The list of options to find a matching options from
 | |
|  * @param [discriminatorField] - The optional name of the field within the options object whose value is used to
 | |
|  *          determine which option is selected
 | |
|  * @returns - The index of the matched option or undefined if there is no match
 | |
|  */
 | |
| function getOptionMatchingSimpleDiscriminator(formData, options, discriminatorField) {
 | |
|     var _a;
 | |
|     if (formData && discriminatorField) {
 | |
|         const value = get_default()(formData, discriminatorField);
 | |
|         if (value === undefined) {
 | |
|             return;
 | |
|         }
 | |
|         for (let i = 0; i < options.length; i++) {
 | |
|             const option = options[i];
 | |
|             const discriminator = get_default()(option, [PROPERTIES_KEY, discriminatorField], {});
 | |
|             if (discriminator.type === 'object' || discriminator.type === 'array') {
 | |
|                 continue;
 | |
|             }
 | |
|             if (discriminator.const === value) {
 | |
|                 return i;
 | |
|             }
 | |
|             if ((_a = discriminator.enum) === null || _a === void 0 ? void 0 : _a.includes(value)) {
 | |
|                 return i;
 | |
|             }
 | |
|         }
 | |
|     }
 | |
|     return;
 | |
| }
 | |
| //# sourceMappingURL=getOptionMatchingSimpleDiscriminator.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/schema/getMatchingOption.js
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| /** Given the `formData` and list of `options`, attempts to find the index of the option that best matches the data.
 | |
|  * Deprecated, use `getFirstMatchingOption()` instead.
 | |
|  *
 | |
|  * @param validator - An implementation of the `ValidatorType` interface that will be used when necessary
 | |
|  * @param formData - The current formData, if any, used to figure out a match
 | |
|  * @param options - The list of options to find a matching options from
 | |
|  * @param rootSchema - The root schema, used to primarily to look up `$ref`s
 | |
|  * @param [discriminatorField] - The optional name of the field within the options object whose value is used to
 | |
|  *          determine which option is selected
 | |
|  * @returns - The index of the matched option or 0 if none is available
 | |
|  * @deprecated
 | |
|  */
 | |
| function getMatchingOption(validator, formData, options, rootSchema, discriminatorField) {
 | |
|     // For performance, skip validating subschemas if formData is undefined. We just
 | |
|     // want to get the first option in that case.
 | |
|     if (formData === undefined) {
 | |
|         return 0;
 | |
|     }
 | |
|     const simpleDiscriminatorMatch = getOptionMatchingSimpleDiscriminator(formData, options, discriminatorField);
 | |
|     if (isNumber_default()(simpleDiscriminatorMatch)) {
 | |
|         return simpleDiscriminatorMatch;
 | |
|     }
 | |
|     for (let i = 0; i < options.length; i++) {
 | |
|         const option = options[i];
 | |
|         // If we have a discriminator field, then we will use this to make the determination
 | |
|         if (discriminatorField && has_default()(option, [PROPERTIES_KEY, discriminatorField])) {
 | |
|             const value = get_default()(formData, discriminatorField);
 | |
|             const discriminator = get_default()(option, [PROPERTIES_KEY, discriminatorField], {});
 | |
|             if (validator.isValid(discriminator, value, rootSchema)) {
 | |
|                 return i;
 | |
|             }
 | |
|         }
 | |
|         else if (option[PROPERTIES_KEY]) {
 | |
|             // If the schema describes an object then we need to add slightly more
 | |
|             // strict matching to the schema, because unless the schema uses the
 | |
|             // "requires" keyword, an object will match the schema as long as it
 | |
|             // doesn't have matching keys with a conflicting type. To do this we use an
 | |
|             // "anyOf" with an array of requires. This augmentation expresses that the
 | |
|             // schema should match if any of the keys in the schema are present on the
 | |
|             // object and pass validation.
 | |
|             //
 | |
|             // Create an "anyOf" schema that requires at least one of the keys in the
 | |
|             // "properties" object
 | |
|             const requiresAnyOf = {
 | |
|                 anyOf: Object.keys(option[PROPERTIES_KEY]).map((key) => ({
 | |
|                     required: [key],
 | |
|                 })),
 | |
|             };
 | |
|             let augmentedSchema;
 | |
|             // If the "anyOf" keyword already exists, wrap the augmentation in an "allOf"
 | |
|             if (option.anyOf) {
 | |
|                 // Create a shallow clone of the option
 | |
|                 const { ...shallowClone } = option;
 | |
|                 if (!shallowClone.allOf) {
 | |
|                     shallowClone.allOf = [];
 | |
|                 }
 | |
|                 else {
 | |
|                     // If "allOf" already exists, shallow clone the array
 | |
|                     shallowClone.allOf = shallowClone.allOf.slice();
 | |
|                 }
 | |
|                 shallowClone.allOf.push(requiresAnyOf);
 | |
|                 augmentedSchema = shallowClone;
 | |
|             }
 | |
|             else {
 | |
|                 augmentedSchema = Object.assign({}, option, requiresAnyOf);
 | |
|             }
 | |
|             // Remove the "required" field as it's likely that not all fields have
 | |
|             // been filled in yet, which will mean that the schema is not valid
 | |
|             delete augmentedSchema.required;
 | |
|             if (validator.isValid(augmentedSchema, formData, rootSchema)) {
 | |
|                 return i;
 | |
|             }
 | |
|         }
 | |
|         else if (validator.isValid(option, formData, rootSchema)) {
 | |
|             return i;
 | |
|         }
 | |
|     }
 | |
|     return 0;
 | |
| }
 | |
| //# sourceMappingURL=getMatchingOption.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/schema/getFirstMatchingOption.js
 | |
| 
 | |
| /** Given the `formData` and list of `options`, attempts to find the index of the first option that matches the data.
 | |
|  * Always returns the first option if there is nothing that matches.
 | |
|  *
 | |
|  * @param validator - An implementation of the `ValidatorType` interface that will be used when necessary
 | |
|  * @param formData - The current formData, if any, used to figure out a match
 | |
|  * @param options - The list of options to find a matching options from
 | |
|  * @param rootSchema - The root schema, used to primarily to look up `$ref`s
 | |
|  * @param [discriminatorField] - The optional name of the field within the options object whose value is used to
 | |
|  *          determine which option is selected
 | |
|  * @returns - The index of the first matched option or 0 if none is available
 | |
|  */
 | |
| function getFirstMatchingOption(validator, formData, options, rootSchema, discriminatorField) {
 | |
|     return getMatchingOption(validator, formData, options, rootSchema, discriminatorField);
 | |
| }
 | |
| //# sourceMappingURL=getFirstMatchingOption.js.map
 | |
| // EXTERNAL MODULE: ../node_modules/lodash/isEqual.js
 | |
| var isEqual = __webpack_require__(56141);
 | |
| var isEqual_default = /*#__PURE__*/__webpack_require__.n(isEqual);
 | |
| // EXTERNAL MODULE: ../node_modules/lodash/set.js
 | |
| var set = __webpack_require__(47215);
 | |
| var set_default = /*#__PURE__*/__webpack_require__.n(set);
 | |
| // EXTERNAL MODULE: ../node_modules/lodash/transform.js
 | |
| var transform = __webpack_require__(42673);
 | |
| var transform_default = /*#__PURE__*/__webpack_require__.n(transform);
 | |
| // EXTERNAL MODULE: ../node_modules/lodash/merge.js
 | |
| var merge = __webpack_require__(15409);
 | |
| var merge_default = /*#__PURE__*/__webpack_require__.n(merge);
 | |
| // EXTERNAL MODULE: ../node_modules/lodash/flattenDeep.js
 | |
| var flattenDeep = __webpack_require__(84812);
 | |
| var flattenDeep_default = /*#__PURE__*/__webpack_require__.n(flattenDeep);
 | |
| // EXTERNAL MODULE: ../node_modules/lodash/uniq.js
 | |
| var uniq = __webpack_require__(83766);
 | |
| var uniq_default = /*#__PURE__*/__webpack_require__.n(uniq);
 | |
| // EXTERNAL MODULE: ../node_modules/json-schema-merge-allof/src/index.js
 | |
| var src = __webpack_require__(64717);
 | |
| var src_default = /*#__PURE__*/__webpack_require__.n(src);
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/getDiscriminatorFieldFromSchema.js
 | |
| 
 | |
| 
 | |
| /** Returns the `discriminator.propertyName` when defined in the `schema` if it is a string. A warning is generated when
 | |
|  * it is not a string. Returns `undefined` when a valid discriminator is not present.
 | |
|  *
 | |
|  * @param schema - The schema from which the discriminator is potentially obtained
 | |
|  * @returns - The `discriminator.propertyName` if it exists in the schema, otherwise `undefined`
 | |
|  */
 | |
| function getDiscriminatorFieldFromSchema(schema) {
 | |
|     let discriminator;
 | |
|     const maybeString = get_default()(schema, 'discriminator.propertyName', undefined);
 | |
|     if (isString_default()(maybeString)) {
 | |
|         discriminator = maybeString;
 | |
|     }
 | |
|     else if (maybeString !== undefined) {
 | |
|         console.warn(`Expecting discriminator to be a string, got "${typeof maybeString}" instead`);
 | |
|     }
 | |
|     return discriminator;
 | |
| }
 | |
| //# sourceMappingURL=getDiscriminatorFieldFromSchema.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/guessType.js
 | |
| /** Given a specific `value` attempts to guess the type of a schema element. In the case where we have to implicitly
 | |
|  *  create a schema, it is useful to know what type to use based on the data we are defining.
 | |
|  *
 | |
|  * @param value - The value from which to guess the type
 | |
|  * @returns - The best guess for the object type
 | |
|  */
 | |
| function guessType(value) {
 | |
|     if (Array.isArray(value)) {
 | |
|         return 'array';
 | |
|     }
 | |
|     if (typeof value === 'string') {
 | |
|         return 'string';
 | |
|     }
 | |
|     if (value == null) {
 | |
|         return 'null';
 | |
|     }
 | |
|     if (typeof value === 'boolean') {
 | |
|         return 'boolean';
 | |
|     }
 | |
|     if (!isNaN(value)) {
 | |
|         return 'number';
 | |
|     }
 | |
|     if (typeof value === 'object') {
 | |
|         return 'object';
 | |
|     }
 | |
|     // Default to string if we can't figure it out
 | |
|     return 'string';
 | |
| }
 | |
| //# sourceMappingURL=guessType.js.map
 | |
| // EXTERNAL MODULE: ../node_modules/lodash/union.js
 | |
| var union = __webpack_require__(68946);
 | |
| var union_default = /*#__PURE__*/__webpack_require__.n(union);
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/getSchemaType.js
 | |
| 
 | |
| /** Gets the type of a given `schema`. If the type is not explicitly defined, then an attempt is made to infer it from
 | |
|  * other elements of the schema as follows:
 | |
|  * - schema.const: Returns the `guessType()` of that value
 | |
|  * - schema.enum: Returns `string`
 | |
|  * - schema.properties: Returns `object`
 | |
|  * - schema.additionalProperties: Returns `object`
 | |
|  * - type is an array with a length of 2 and one type is 'null': Returns the other type
 | |
|  *
 | |
|  * @param schema - The schema for which to get the type
 | |
|  * @returns - The type of the schema
 | |
|  */
 | |
| function getSchemaType(schema) {
 | |
|     let { type } = schema;
 | |
|     if (!type && schema.const) {
 | |
|         return guessType(schema.const);
 | |
|     }
 | |
|     if (!type && schema.enum) {
 | |
|         return 'string';
 | |
|     }
 | |
|     if (!type && (schema.properties || schema.additionalProperties)) {
 | |
|         return 'object';
 | |
|     }
 | |
|     if (Array.isArray(type)) {
 | |
|         if (type.length === 2 && type.includes('null')) {
 | |
|             type = type.find((type) => type !== 'null');
 | |
|         }
 | |
|         else {
 | |
|             type = type[0];
 | |
|         }
 | |
|     }
 | |
|     return type;
 | |
| }
 | |
| //# sourceMappingURL=getSchemaType.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/mergeSchemas.js
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| /** Recursively merge deeply nested schemas. The difference between `mergeSchemas` and `mergeObjects` is that
 | |
|  * `mergeSchemas` only concats arrays for values under the 'required' keyword, and when it does, it doesn't include
 | |
|  * duplicate values.
 | |
|  *
 | |
|  * @param obj1 - The first schema object to merge
 | |
|  * @param obj2 - The second schema object to merge
 | |
|  * @returns - The merged schema object
 | |
|  */
 | |
| function mergeSchemas(obj1, obj2) {
 | |
|     const acc = Object.assign({}, obj1); // Prevent mutation of source object.
 | |
|     return Object.keys(obj2).reduce((acc, key) => {
 | |
|         const left = obj1 ? obj1[key] : {}, right = obj2[key];
 | |
|         if (obj1 && key in obj1 && isObject(right)) {
 | |
|             acc[key] = mergeSchemas(left, right);
 | |
|         }
 | |
|         else if (obj1 &&
 | |
|             obj2 &&
 | |
|             (getSchemaType(obj1) === 'object' || getSchemaType(obj2) === 'object') &&
 | |
|             key === REQUIRED_KEY &&
 | |
|             Array.isArray(left) &&
 | |
|             Array.isArray(right)) {
 | |
|             // Don't include duplicate values when merging 'required' fields.
 | |
|             acc[key] = union_default()(left, right);
 | |
|         }
 | |
|         else {
 | |
|             acc[key] = right;
 | |
|         }
 | |
|         return acc;
 | |
|     }, acc);
 | |
| }
 | |
| //# sourceMappingURL=mergeSchemas.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/schema/retrieveSchema.js
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| /** Retrieves an expanded schema that has had all of its conditions, additional properties, references and dependencies
 | |
|  * resolved and merged into the `schema` given a `validator`, `rootSchema` and `rawFormData` that is used to do the
 | |
|  * potentially recursive resolution.
 | |
|  *
 | |
|  * @param validator - An implementation of the `ValidatorType` interface that will be forwarded to all the APIs
 | |
|  * @param schema - The schema for which retrieving a schema is desired
 | |
|  * @param [rootSchema={}] - The root schema that will be forwarded to all the APIs
 | |
|  * @param [rawFormData] - The current formData, if any, to assist retrieving a schema
 | |
|  * @returns - The schema having its conditions, additional properties, references and dependencies resolved
 | |
|  */
 | |
| function retrieveSchema(validator, schema, rootSchema = {}, rawFormData) {
 | |
|     return retrieveSchemaInternal(validator, schema, rootSchema, rawFormData)[0];
 | |
| }
 | |
| /** Resolves a conditional block (if/else/then) by removing the condition and merging the appropriate conditional branch
 | |
|  * with the rest of the schema. If `expandAllBranches` is true, then the `retrieveSchemaInteral()` results for both
 | |
|  * conditions will be returned.
 | |
|  *
 | |
|  * @param validator - An implementation of the `ValidatorType` interface that is used to detect valid schema conditions
 | |
|  * @param schema - The schema for which resolving a condition is desired
 | |
|  * @param rootSchema - The root schema that will be forwarded to all the APIs
 | |
|  * @param expandAllBranches - Flag, if true, will return all possible branches of conditions, any/oneOf and
 | |
|  *          dependencies as a list of schemas
 | |
|  * @param recurseList - The list of recursive references already processed
 | |
|  * @param [formData] - The current formData to assist retrieving a schema
 | |
|  * @returns - A list of schemas with the appropriate conditions resolved, possibly with all branches expanded
 | |
|  */
 | |
| function resolveCondition(validator, schema, rootSchema, expandAllBranches, recurseList, formData) {
 | |
|     const { if: expression, then, else: otherwise, ...resolvedSchemaLessConditional } = schema;
 | |
|     const conditionValue = validator.isValid(expression, formData || {}, rootSchema);
 | |
|     let resolvedSchemas = [resolvedSchemaLessConditional];
 | |
|     let schemas = [];
 | |
|     if (expandAllBranches) {
 | |
|         if (then && typeof then !== 'boolean') {
 | |
|             schemas = schemas.concat(retrieveSchemaInternal(validator, then, rootSchema, formData, expandAllBranches, recurseList));
 | |
|         }
 | |
|         if (otherwise && typeof otherwise !== 'boolean') {
 | |
|             schemas = schemas.concat(retrieveSchemaInternal(validator, otherwise, rootSchema, formData, expandAllBranches, recurseList));
 | |
|         }
 | |
|     }
 | |
|     else {
 | |
|         const conditionalSchema = conditionValue ? then : otherwise;
 | |
|         if (conditionalSchema && typeof conditionalSchema !== 'boolean') {
 | |
|             schemas = schemas.concat(retrieveSchemaInternal(validator, conditionalSchema, rootSchema, formData, expandAllBranches, recurseList));
 | |
|         }
 | |
|     }
 | |
|     if (schemas.length) {
 | |
|         resolvedSchemas = schemas.map((s) => mergeSchemas(resolvedSchemaLessConditional, s));
 | |
|     }
 | |
|     return resolvedSchemas.flatMap((s) => retrieveSchemaInternal(validator, s, rootSchema, formData, expandAllBranches, recurseList));
 | |
| }
 | |
| /** Given a list of lists of allOf, anyOf or oneOf values, create a list of lists of all permutations of the values. The
 | |
|  * `listOfLists` is expected to be all resolved values of the 1st...nth schemas within an `allOf`, `anyOf` or `oneOf`.
 | |
|  * From those lists, build a matrix for each `xxxOf` where there is more than one schema for a row in the list of lists.
 | |
|  *
 | |
|  * For example:
 | |
|  * - If there are three xxxOf rows (A, B, C) and they have been resolved such that there is only one A, two B and three
 | |
|  *   C schemas then:
 | |
|  *   - The permutation for the first row is `[[A]]`
 | |
|  *   - The permutations for the second row are `[[A,B1], [A,B2]]`
 | |
|  *   - The permutations for the third row are `[[A,B1,C1], [A,B1,C2], [A,B1,C3], [A,B2,C1], [A,B2,C2], [A,B2,C3]]`
 | |
|  *
 | |
|  * @param listOfLists - The list of lists of elements that represent the allOf, anyOf or oneOf resolved values in order
 | |
|  * @returns - The list of all permutations of schemas for a set of `xxxOf`s
 | |
|  */
 | |
| function getAllPermutationsOfXxxOf(listOfLists) {
 | |
|     const allPermutations = listOfLists.reduce((permutations, list) => {
 | |
|         // When there are more than one set of schemas for a row, duplicate the set of permutations and add in the values
 | |
|         if (list.length > 1) {
 | |
|             return list.flatMap((element) => times_default()(permutations.length, (i) => [...permutations[i]].concat(element)));
 | |
|         }
 | |
|         // Otherwise just push in the single value into the current set of permutations
 | |
|         permutations.forEach((permutation) => permutation.push(list[0]));
 | |
|         return permutations;
 | |
|     }, [[]] // Start with an empty list
 | |
|     );
 | |
|     return allPermutations;
 | |
| }
 | |
| /** Resolves references and dependencies within a schema and its 'allOf' children. Passes the `expandAllBranches` flag
 | |
|  * down to the `retrieveSchemaInternal()`, `resolveReference()` and `resolveDependencies()` helper calls. If
 | |
|  * `expandAllBranches` is true, then all possible dependencies and/or allOf branches are returned.
 | |
|  *
 | |
|  * @param validator - An implementation of the `ValidatorType` interface that will be forwarded to all the APIs
 | |
|  * @param schema - The schema for which resolving a schema is desired
 | |
|  * @param rootSchema - The root schema that will be forwarded to all the APIs
 | |
|  * @param expandAllBranches - Flag, if true, will return all possible branches of conditions, any/oneOf and dependencies
 | |
|  *          as a list of schemas
 | |
|  * @param recurseList - The list of recursive references already processed
 | |
|  * @param [formData] - The current formData, if any, to assist retrieving a schema
 | |
|  * @returns - The list of schemas having its references, dependencies and allOf schemas resolved
 | |
|  */
 | |
| function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurseList, formData) {
 | |
|     const updatedSchemas = resolveReference(validator, schema, rootSchema, expandAllBranches, recurseList, formData);
 | |
|     if (updatedSchemas.length > 1 || updatedSchemas[0] !== schema) {
 | |
|         // return the updatedSchemas array if it has either multiple schemas within it
 | |
|         // OR the first schema is not the same as the original schema
 | |
|         return updatedSchemas;
 | |
|     }
 | |
|     if (DEPENDENCIES_KEY in schema) {
 | |
|         const resolvedSchemas = resolveDependencies(validator, schema, rootSchema, expandAllBranches, recurseList, formData);
 | |
|         return resolvedSchemas.flatMap((s) => {
 | |
|             return retrieveSchemaInternal(validator, s, rootSchema, formData, expandAllBranches, recurseList);
 | |
|         });
 | |
|     }
 | |
|     if (ALL_OF_KEY in schema && Array.isArray(schema.allOf)) {
 | |
|         const allOfSchemaElements = schema.allOf.map((allOfSubschema) => retrieveSchemaInternal(validator, allOfSubschema, rootSchema, formData, expandAllBranches, recurseList));
 | |
|         const allPermutations = getAllPermutationsOfXxxOf(allOfSchemaElements);
 | |
|         return allPermutations.map((permutation) => ({ ...schema, allOf: permutation }));
 | |
|     }
 | |
|     // No $ref or dependencies or allOf attribute was found, returning the original schema.
 | |
|     return [schema];
 | |
| }
 | |
| /** Resolves all references within a schema and then returns the `retrieveSchemaInternal()` if the resolved schema is
 | |
|  * actually different than the original. Passes the `expandAllBranches` flag down to the `retrieveSchemaInternal()`
 | |
|  * helper call.
 | |
|  *
 | |
|  * @param validator - An implementation of the `ValidatorType` interface that will be forwarded to all the APIs
 | |
|  * @param schema - The schema for which resolving a reference is desired
 | |
|  * @param rootSchema - The root schema that will be forwarded to all the APIs
 | |
|  * @param expandAllBranches - Flag, if true, will return all possible branches of conditions, any/oneOf and dependencies
 | |
|  *          as a list of schemas
 | |
|  * @param recurseList - The list of recursive references already processed
 | |
|  * @param [formData] - The current formData, if any, to assist retrieving a schema
 | |
|  * @returns - The list schemas retrieved after having all references resolved
 | |
|  */
 | |
| function resolveReference(validator, schema, rootSchema, expandAllBranches, recurseList, formData) {
 | |
|     const updatedSchema = resolveAllReferences(schema, rootSchema, recurseList);
 | |
|     if (updatedSchema !== schema) {
 | |
|         // Only call this if the schema was actually changed by the `resolveAllReferences()` function
 | |
|         return retrieveSchemaInternal(validator, updatedSchema, rootSchema, formData, expandAllBranches, recurseList);
 | |
|     }
 | |
|     return [schema];
 | |
| }
 | |
| /** Resolves all references within the schema itself as well as any of its properties and array items.
 | |
|  *
 | |
|  * @param schema - The schema for which resolving all references is desired
 | |
|  * @param rootSchema - The root schema that will be forwarded to all the APIs
 | |
|  * @param recurseList - List of $refs already resolved to prevent recursion
 | |
|  * @returns - given schema will all references resolved or the original schema if no internal `$refs` were resolved
 | |
|  */
 | |
| function resolveAllReferences(schema, rootSchema, recurseList) {
 | |
|     if (!isObject(schema)) {
 | |
|         return schema;
 | |
|     }
 | |
|     let resolvedSchema = schema;
 | |
|     // resolve top level ref
 | |
|     if (REF_KEY in resolvedSchema) {
 | |
|         const { $ref, ...localSchema } = resolvedSchema;
 | |
|         // Check for a recursive reference and stop the loop
 | |
|         if (recurseList.includes($ref)) {
 | |
|             return resolvedSchema;
 | |
|         }
 | |
|         recurseList.push($ref);
 | |
|         // Retrieve the referenced schema definition.
 | |
|         const refSchema = findSchemaDefinition($ref, rootSchema);
 | |
|         resolvedSchema = { ...refSchema, ...localSchema };
 | |
|     }
 | |
|     if (PROPERTIES_KEY in resolvedSchema) {
 | |
|         const childrenLists = [];
 | |
|         const updatedProps = transform_default()(resolvedSchema[PROPERTIES_KEY], (result, value, key) => {
 | |
|             const childList = [...recurseList];
 | |
|             result[key] = resolveAllReferences(value, rootSchema, childList);
 | |
|             childrenLists.push(childList);
 | |
|         }, {});
 | |
|         merge_default()(recurseList, uniq_default()(flattenDeep_default()(childrenLists)));
 | |
|         resolvedSchema = { ...resolvedSchema, [PROPERTIES_KEY]: updatedProps };
 | |
|     }
 | |
|     if (ITEMS_KEY in resolvedSchema &&
 | |
|         !Array.isArray(resolvedSchema.items) &&
 | |
|         typeof resolvedSchema.items !== 'boolean') {
 | |
|         resolvedSchema = {
 | |
|             ...resolvedSchema,
 | |
|             items: resolveAllReferences(resolvedSchema.items, rootSchema, recurseList),
 | |
|         };
 | |
|     }
 | |
|     return isEqual_default()(schema, resolvedSchema) ? schema : resolvedSchema;
 | |
| }
 | |
| /** Creates new 'properties' items for each key in the `formData`
 | |
|  *
 | |
|  * @param validator - An implementation of the `ValidatorType` interface that will be used when necessary
 | |
|  * @param theSchema - The schema for which the existing additional properties is desired
 | |
|  * @param [rootSchema] - The root schema, used to primarily to look up `$ref`s * @param validator
 | |
|  * @param [aFormData] - The current formData, if any, to assist retrieving a schema
 | |
|  * @returns - The updated schema with additional properties stubbed
 | |
|  */
 | |
| function stubExistingAdditionalProperties(validator, theSchema, rootSchema, aFormData) {
 | |
|     // Clone the schema so that we don't ruin the consumer's original
 | |
|     const schema = {
 | |
|         ...theSchema,
 | |
|         properties: { ...theSchema.properties },
 | |
|     };
 | |
|     // make sure formData is an object
 | |
|     const formData = aFormData && isObject(aFormData) ? aFormData : {};
 | |
|     Object.keys(formData).forEach((key) => {
 | |
|         if (key in schema.properties) {
 | |
|             // No need to stub, our schema already has the property
 | |
|             return;
 | |
|         }
 | |
|         let additionalProperties = {};
 | |
|         if (typeof schema.additionalProperties !== 'boolean') {
 | |
|             if (REF_KEY in schema.additionalProperties) {
 | |
|                 additionalProperties = retrieveSchema(validator, { $ref: get_default()(schema.additionalProperties, [REF_KEY]) }, rootSchema, formData);
 | |
|             }
 | |
|             else if ('type' in schema.additionalProperties) {
 | |
|                 additionalProperties = { ...schema.additionalProperties };
 | |
|             }
 | |
|             else if (ANY_OF_KEY in schema.additionalProperties || ONE_OF_KEY in schema.additionalProperties) {
 | |
|                 additionalProperties = {
 | |
|                     type: 'object',
 | |
|                     ...schema.additionalProperties,
 | |
|                 };
 | |
|             }
 | |
|             else {
 | |
|                 additionalProperties = { type: guessType(get_default()(formData, [key])) };
 | |
|             }
 | |
|         }
 | |
|         else {
 | |
|             additionalProperties = { type: guessType(get_default()(formData, [key])) };
 | |
|         }
 | |
|         // The type of our new key should match the additionalProperties value;
 | |
|         schema.properties[key] = additionalProperties;
 | |
|         // Set our additional property flag so we know it was dynamically added
 | |
|         set_default()(schema.properties, [key, ADDITIONAL_PROPERTY_FLAG], true);
 | |
|     });
 | |
|     return schema;
 | |
| }
 | |
| /** Internal handler that retrieves an expanded schema that has had all of its conditions, additional properties,
 | |
|  * references and dependencies resolved and merged into the `schema` given a `validator`, `rootSchema` and `rawFormData`
 | |
|  * that is used to do the potentially recursive resolution. If `expandAllBranches` is true, then all possible branches
 | |
|  * of the schema and its references, conditions and dependencies are returned.
 | |
|  *
 | |
|  * @param validator - An implementation of the `ValidatorType` interface that will be forwarded to all the APIs
 | |
|  * @param schema - The schema for which retrieving a schema is desired
 | |
|  * @param rootSchema - The root schema that will be forwarded to all the APIs
 | |
|  * @param [rawFormData] - The current formData, if any, to assist retrieving a schema
 | |
|  * @param [expandAllBranches=false] - Flag, if true, will return all possible branches of conditions, any/oneOf and
 | |
|  *          dependencies as a list of schemas
 | |
|  * @param [recurseList=[]] - The optional, list of recursive references already processed
 | |
|  * @returns - The schema(s) resulting from having its conditions, additional properties, references and dependencies
 | |
|  *          resolved. Multiple schemas may be returned if `expandAllBranches` is true.
 | |
|  */
 | |
| function retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, expandAllBranches = false, recurseList = []) {
 | |
|     if (!isObject(schema)) {
 | |
|         return [{}];
 | |
|     }
 | |
|     const resolvedSchemas = resolveSchema(validator, schema, rootSchema, expandAllBranches, recurseList, rawFormData);
 | |
|     return resolvedSchemas.flatMap((s) => {
 | |
|         let resolvedSchema = s;
 | |
|         if (IF_KEY in resolvedSchema) {
 | |
|             return resolveCondition(validator, resolvedSchema, rootSchema, expandAllBranches, recurseList, rawFormData);
 | |
|         }
 | |
|         if (ALL_OF_KEY in resolvedSchema) {
 | |
|             // resolve allOf schemas
 | |
|             if (expandAllBranches) {
 | |
|                 const { allOf, ...restOfSchema } = resolvedSchema;
 | |
|                 return [...allOf, restOfSchema];
 | |
|             }
 | |
|             try {
 | |
|                 resolvedSchema = src_default()(resolvedSchema, {
 | |
|                     deep: false,
 | |
|                 });
 | |
|             }
 | |
|             catch (e) {
 | |
|                 console.warn('could not merge subschemas in allOf:\n', e);
 | |
|                 const { allOf, ...resolvedSchemaWithoutAllOf } = resolvedSchema;
 | |
|                 return resolvedSchemaWithoutAllOf;
 | |
|             }
 | |
|         }
 | |
|         const hasAdditionalProperties = ADDITIONAL_PROPERTIES_KEY in resolvedSchema && resolvedSchema.additionalProperties !== false;
 | |
|         if (hasAdditionalProperties) {
 | |
|             return stubExistingAdditionalProperties(validator, resolvedSchema, rootSchema, rawFormData);
 | |
|         }
 | |
|         return resolvedSchema;
 | |
|     });
 | |
| }
 | |
| /** Resolves an `anyOf` or `oneOf` within a schema (if present) to the list of schemas returned from
 | |
|  * `retrieveSchemaInternal()` for the best matching option. If `expandAllBranches` is true, then a list of schemas for ALL
 | |
|  * options are retrieved and returned.
 | |
|  *
 | |
|  * @param validator - An implementation of the `ValidatorType` interface that will be forwarded to all the APIs
 | |
|  * @param schema - The schema for which retrieving a schema is desired
 | |
|  * @param rootSchema - The root schema that will be forwarded to all the APIs
 | |
|  * @param expandAllBranches - Flag, if true, will return all possible branches of conditions, any/oneOf and dependencies
 | |
|  *          as a list of schemas
 | |
|  * @param [rawFormData] - The current formData, if any, to assist retrieving a schema, defaults to an empty object
 | |
|  * @returns - Either an array containing the best matching option or all options if `expandAllBranches` is true
 | |
|  */
 | |
| function resolveAnyOrOneOfSchemas(validator, schema, rootSchema, expandAllBranches, rawFormData) {
 | |
|     let anyOrOneOf;
 | |
|     const { oneOf, anyOf, ...remaining } = schema;
 | |
|     if (Array.isArray(oneOf)) {
 | |
|         anyOrOneOf = oneOf;
 | |
|     }
 | |
|     else if (Array.isArray(anyOf)) {
 | |
|         anyOrOneOf = anyOf;
 | |
|     }
 | |
|     if (anyOrOneOf) {
 | |
|         // Ensure that during expand all branches we pass an object rather than undefined so that all options are interrogated
 | |
|         const formData = rawFormData === undefined && expandAllBranches ? {} : rawFormData;
 | |
|         const discriminator = getDiscriminatorFieldFromSchema(schema);
 | |
|         anyOrOneOf = anyOrOneOf.map((s) => {
 | |
|             // Due to anyOf/oneOf possibly using the same $ref we always pass a fresh recurse list array so that each option
 | |
|             // can resolve recursive references independently
 | |
|             return resolveAllReferences(s, rootSchema, []);
 | |
|         });
 | |
|         // Call this to trigger the set of isValid() calls that the schema parser will need
 | |
|         const option = getFirstMatchingOption(validator, formData, anyOrOneOf, rootSchema, discriminator);
 | |
|         if (expandAllBranches) {
 | |
|             return anyOrOneOf.map((item) => mergeSchemas(remaining, item));
 | |
|         }
 | |
|         schema = mergeSchemas(remaining, anyOrOneOf[option]);
 | |
|     }
 | |
|     return [schema];
 | |
| }
 | |
| /** Resolves dependencies within a schema and its 'anyOf/oneOf' children. Passes the `expandAllBranches` flag down to
 | |
|  * the `resolveAnyOrOneOfSchema()` and `processDependencies()` helper calls.
 | |
|  *
 | |
|  * @param validator - An implementation of the `ValidatorType` interface that will be forwarded to all the APIs
 | |
|  * @param schema - The schema for which resolving a dependency is desired
 | |
|  * @param rootSchema - The root schema that will be forwarded to all the APIs
 | |
|  * @param expandAllBranches - Flag, if true, will return all possible branches of conditions, any/oneOf and dependencies
 | |
|  *          as a list of schemas
 | |
|  * @param recurseList - The list of recursive references already processed
 | |
|  * @param [formData] - The current formData, if any, to assist retrieving a schema
 | |
|  * @returns - The list of schemas with their dependencies resolved
 | |
|  */
 | |
| function resolveDependencies(validator, schema, rootSchema, expandAllBranches, recurseList, formData) {
 | |
|     // Drop the dependencies from the source schema.
 | |
|     const { dependencies, ...remainingSchema } = schema;
 | |
|     const resolvedSchemas = resolveAnyOrOneOfSchemas(validator, remainingSchema, rootSchema, expandAllBranches, formData);
 | |
|     return resolvedSchemas.flatMap((resolvedSchema) => processDependencies(validator, dependencies, resolvedSchema, rootSchema, expandAllBranches, recurseList, formData));
 | |
| }
 | |
| /** Processes all the `dependencies` recursively into the list of `resolvedSchema`s as needed. Passes the
 | |
|  * `expandAllBranches` flag down to the `withDependentSchema()` and the recursive `processDependencies()` helper calls.
 | |
|  *
 | |
|  * @param validator - An implementation of the `ValidatorType` interface that will be forwarded to all the APIs
 | |
|  * @param dependencies - The set of dependencies that needs to be processed
 | |
|  * @param resolvedSchema - The schema for which processing dependencies is desired
 | |
|  * @param rootSchema - The root schema that will be forwarded to all the APIs
 | |
|  * @param expandAllBranches - Flag, if true, will return all possible branches of conditions, any/oneOf and dependencies
 | |
|  *          as a list of schemas
 | |
|  * @param recurseList - The list of recursive references already processed
 | |
|  * @param [formData] - The current formData, if any, to assist retrieving a schema
 | |
|  * @returns - The schema with the `dependencies` resolved into it
 | |
|  */
 | |
| function processDependencies(validator, dependencies, resolvedSchema, rootSchema, expandAllBranches, recurseList, formData) {
 | |
|     let schemas = [resolvedSchema];
 | |
|     // Process dependencies updating the local schema properties as appropriate.
 | |
|     for (const dependencyKey in dependencies) {
 | |
|         // Skip this dependency if its trigger property is not present.
 | |
|         if (!expandAllBranches && get_default()(formData, [dependencyKey]) === undefined) {
 | |
|             continue;
 | |
|         }
 | |
|         // Skip this dependency if it is not included in the schema (such as when dependencyKey is itself a hidden dependency.)
 | |
|         if (resolvedSchema.properties && !(dependencyKey in resolvedSchema.properties)) {
 | |
|             continue;
 | |
|         }
 | |
|         const [remainingDependencies, dependencyValue] = splitKeyElementFromObject(dependencyKey, dependencies);
 | |
|         if (Array.isArray(dependencyValue)) {
 | |
|             schemas[0] = withDependentProperties(resolvedSchema, dependencyValue);
 | |
|         }
 | |
|         else if (isObject(dependencyValue)) {
 | |
|             schemas = withDependentSchema(validator, resolvedSchema, rootSchema, dependencyKey, dependencyValue, expandAllBranches, recurseList, formData);
 | |
|         }
 | |
|         return schemas.flatMap((schema) => processDependencies(validator, remainingDependencies, schema, rootSchema, expandAllBranches, recurseList, formData));
 | |
|     }
 | |
|     return schemas;
 | |
| }
 | |
| /** Updates a schema with additionally required properties added
 | |
|  *
 | |
|  * @param schema - The schema for which resolving a dependent properties is desired
 | |
|  * @param [additionallyRequired] - An optional array of additionally required names
 | |
|  * @returns - The schema with the additional required values merged in
 | |
|  */
 | |
| function withDependentProperties(schema, additionallyRequired) {
 | |
|     if (!additionallyRequired) {
 | |
|         return schema;
 | |
|     }
 | |
|     const required = Array.isArray(schema.required)
 | |
|         ? Array.from(new Set([...schema.required, ...additionallyRequired]))
 | |
|         : additionallyRequired;
 | |
|     return { ...schema, required: required };
 | |
| }
 | |
| /** Merges a dependent schema into the `schema` dealing with oneOfs and references. Passes the `expandAllBranches` flag
 | |
|  * down to the `retrieveSchemaInternal()`, `resolveReference()` and `withExactlyOneSubschema()` helper calls.
 | |
|  *
 | |
|  * @param validator - An implementation of the `ValidatorType` interface that will be forwarded to all the APIs
 | |
|  * @param schema - The schema for which resolving a dependent schema is desired
 | |
|  * @param rootSchema - The root schema that will be forwarded to all the APIs
 | |
|  * @param dependencyKey - The key name of the dependency
 | |
|  * @param dependencyValue - The potentially dependent schema
 | |
|  * @param expandAllBranches - Flag, if true, will return all possible branches of conditions, any/oneOf and dependencies
 | |
|  *          as a list of schemas
 | |
|  * @param recurseList - The list of recursive references already processed
 | |
|  * @param [formData]- The current formData to assist retrieving a schema
 | |
|  * @returns - The list of schemas with the dependent schema resolved into them
 | |
|  */
 | |
| function withDependentSchema(validator, schema, rootSchema, dependencyKey, dependencyValue, expandAllBranches, recurseList, formData) {
 | |
|     const dependentSchemas = retrieveSchemaInternal(validator, dependencyValue, rootSchema, formData, expandAllBranches, recurseList);
 | |
|     return dependentSchemas.flatMap((dependent) => {
 | |
|         const { oneOf, ...dependentSchema } = dependent;
 | |
|         schema = mergeSchemas(schema, dependentSchema);
 | |
|         // Since it does not contain oneOf, we return the original schema.
 | |
|         if (oneOf === undefined) {
 | |
|             return schema;
 | |
|         }
 | |
|         // Resolve $refs inside oneOf.
 | |
|         const resolvedOneOfs = oneOf.map((subschema) => {
 | |
|             if (typeof subschema === 'boolean' || !(REF_KEY in subschema)) {
 | |
|                 return [subschema];
 | |
|             }
 | |
|             return resolveReference(validator, subschema, rootSchema, expandAllBranches, recurseList, formData);
 | |
|         });
 | |
|         const allPermutations = getAllPermutationsOfXxxOf(resolvedOneOfs);
 | |
|         return allPermutations.flatMap((resolvedOneOf) => withExactlyOneSubschema(validator, schema, rootSchema, dependencyKey, resolvedOneOf, expandAllBranches, recurseList, formData));
 | |
|     });
 | |
| }
 | |
| /** Returns a list of `schema`s with the best choice from the `oneOf` options merged into it. If `expandAllBranches` is
 | |
|  * true, then a list of schemas for ALL options are retrieved and returned. Passes the `expandAllBranches` flag down to
 | |
|  * the `retrieveSchemaInternal()` helper call.
 | |
|  *
 | |
|  * @param validator - An implementation of the `ValidatorType` interface that will be used to validate oneOf options
 | |
|  * @param schema - The schema for which resolving a oneOf subschema is desired
 | |
|  * @param rootSchema - The root schema that will be forwarded to all the APIs
 | |
|  * @param dependencyKey - The key name of the oneOf dependency
 | |
|  * @param oneOf - The list of schemas representing the oneOf options
 | |
|  * @param expandAllBranches - Flag, if true, will return all possible branches of conditions, any/oneOf and dependencies
 | |
|  *          as a list of schemas
 | |
|  * @param recurseList - The list of recursive references already processed
 | |
|  * @param [formData] - The current formData to assist retrieving a schema
 | |
|  * @returns - Either an array containing the best matching option or all options if `expandAllBranches` is true
 | |
|  */
 | |
| function withExactlyOneSubschema(validator, schema, rootSchema, dependencyKey, oneOf, expandAllBranches, recurseList, formData) {
 | |
|     const validSubschemas = oneOf.filter((subschema) => {
 | |
|         if (typeof subschema === 'boolean' || !subschema || !subschema.properties) {
 | |
|             return false;
 | |
|         }
 | |
|         const { [dependencyKey]: conditionPropertySchema } = subschema.properties;
 | |
|         if (conditionPropertySchema) {
 | |
|             const conditionSchema = {
 | |
|                 type: 'object',
 | |
|                 properties: {
 | |
|                     [dependencyKey]: conditionPropertySchema,
 | |
|                 },
 | |
|             };
 | |
|             return validator.isValid(conditionSchema, formData, rootSchema) || expandAllBranches;
 | |
|         }
 | |
|         return false;
 | |
|     });
 | |
|     if (!expandAllBranches && validSubschemas.length !== 1) {
 | |
|         console.warn("ignoring oneOf in dependencies because there isn't exactly one subschema that is valid");
 | |
|         return [schema];
 | |
|     }
 | |
|     return validSubschemas.flatMap((s) => {
 | |
|         const subschema = s;
 | |
|         const [dependentSubschema] = splitKeyElementFromObject(dependencyKey, subschema.properties);
 | |
|         const dependentSchema = { ...subschema, properties: dependentSubschema };
 | |
|         const schemas = retrieveSchemaInternal(validator, dependentSchema, rootSchema, formData, expandAllBranches, recurseList);
 | |
|         return schemas.map((s) => mergeSchemas(schema, s));
 | |
|     });
 | |
| }
 | |
| //# sourceMappingURL=retrieveSchema.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/schema/getClosestMatchingOption.js
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| /** A junk option used to determine when the getFirstMatchingOption call really matches an option rather than returning
 | |
|  * the first item
 | |
|  */
 | |
| const JUNK_OPTION = {
 | |
|     type: 'object',
 | |
|     $id: JUNK_OPTION_ID,
 | |
|     properties: {
 | |
|         __not_really_there__: {
 | |
|             type: 'number',
 | |
|         },
 | |
|     },
 | |
| };
 | |
| /** Recursive function that calculates the score of a `formData` against the given `schema`. The computation is fairly
 | |
|  * simple. Initially the total score is 0. When `schema.properties` object exists, then all the `key/value` pairs within
 | |
|  * the object are processed as follows after obtaining the formValue from `formData` using the `key`:
 | |
|  * - If the `value` contains a `$ref`, `calculateIndexScore()` is called recursively with the formValue and the new
 | |
|  *   schema that is the result of the ref in the schema being resolved and that sub-schema's resulting score is added to
 | |
|  *   the total.
 | |
|  * - If the `value` contains a `oneOf` and there is a formValue, then score based on the index returned from calling
 | |
|  *   `getClosestMatchingOption()` of that oneOf.
 | |
|  * - If the type of the `value` is 'object', `calculateIndexScore()` is called recursively with the formValue and the
 | |
|  *   `value` itself as the sub-schema, and the score is added to the total.
 | |
|  * - If the type of the `value` matches the guessed-type of the `formValue`, the score is incremented by 1, UNLESS the
 | |
|  *   value has a `default` or `const`. In those case, if the `default` or `const` and the `formValue` match, the score
 | |
|  *   is incremented by another 1 otherwise it is decremented by 1.
 | |
|  *
 | |
|  * @param validator - An implementation of the `ValidatorType` interface that will be used when necessary
 | |
|  * @param rootSchema - The root JSON schema of the entire form
 | |
|  * @param schema - The schema for which the score is being calculated
 | |
|  * @param formData - The form data associated with the schema, used to calculate the score
 | |
|  * @returns - The score a schema against the formData
 | |
|  */
 | |
| function calculateIndexScore(validator, rootSchema, schema, formData = {}) {
 | |
|     let totalScore = 0;
 | |
|     if (schema) {
 | |
|         if (isObject_default()(schema.properties)) {
 | |
|             totalScore += reduce_default()(schema.properties, (score, value, key) => {
 | |
|                 const formValue = get_default()(formData, key);
 | |
|                 if (typeof value === 'boolean') {
 | |
|                     return score;
 | |
|                 }
 | |
|                 if (has_default()(value, REF_KEY)) {
 | |
|                     const newSchema = retrieveSchema(validator, value, rootSchema, formValue);
 | |
|                     return score + calculateIndexScore(validator, rootSchema, newSchema, formValue || {});
 | |
|                 }
 | |
|                 if ((has_default()(value, ONE_OF_KEY) || has_default()(value, ANY_OF_KEY)) && formValue) {
 | |
|                     const key = has_default()(value, ONE_OF_KEY) ? ONE_OF_KEY : ANY_OF_KEY;
 | |
|                     const discriminator = getDiscriminatorFieldFromSchema(value);
 | |
|                     return (score +
 | |
|                         getClosestMatchingOption(validator, rootSchema, formValue, get_default()(value, key), -1, discriminator));
 | |
|                 }
 | |
|                 if (value.type === 'object') {
 | |
|                     return score + calculateIndexScore(validator, rootSchema, value, formValue || {});
 | |
|                 }
 | |
|                 if (value.type === guessType(formValue)) {
 | |
|                     // If the types match, then we bump the score by one
 | |
|                     let newScore = score + 1;
 | |
|                     if (value.default) {
 | |
|                         // If the schema contains a readonly default value score the value that matches the default higher and
 | |
|                         // any non-matching value lower
 | |
|                         newScore += formValue === value.default ? 1 : -1;
 | |
|                     }
 | |
|                     else if (value.const) {
 | |
|                         // If the schema contains a const value score the value that matches the default higher and
 | |
|                         // any non-matching value lower
 | |
|                         newScore += formValue === value.const ? 1 : -1;
 | |
|                     }
 | |
|                     // TODO eventually, deal with enums/arrays
 | |
|                     return newScore;
 | |
|                 }
 | |
|                 return score;
 | |
|             }, 0);
 | |
|         }
 | |
|         else if (isString_default()(schema.type) && schema.type === guessType(formData)) {
 | |
|             totalScore += 1;
 | |
|         }
 | |
|     }
 | |
|     return totalScore;
 | |
| }
 | |
| /** Determines which of the given `options` provided most closely matches the `formData`. Using
 | |
|  * `getFirstMatchingOption()` to match two schemas that differ only by the readOnly, default or const value of a field
 | |
|  * based on the `formData` and returns 0 when there is no match. Rather than passing in all the `options` at once to
 | |
|  * this utility, instead an array of valid option indexes is created by iterating over the list of options, call
 | |
|  * `getFirstMatchingOptions` with a list of one junk option and one good option, seeing if the good option is considered
 | |
|  * matched.
 | |
|  *
 | |
|  * Once the list of valid indexes is created, if there is only one valid index, just return it. Otherwise, if there are
 | |
|  * no valid indexes, then fill the valid indexes array with the indexes of all the options. Next, the index of the
 | |
|  * option with the highest score is determined by iterating over the list of valid options, calling
 | |
|  * `calculateIndexScore()` on each, comparing it against the current best score, and returning the index of the one that
 | |
|  * eventually has the best score.
 | |
|  *
 | |
|  * @param validator - An implementation of the `ValidatorType` interface that will be used when necessary
 | |
|  * @param rootSchema - The root JSON schema of the entire form
 | |
|  * @param formData - The form data associated with the schema
 | |
|  * @param options - The list of options that can be selected from
 | |
|  * @param [selectedOption=-1] - The index of the currently selected option, defaulted to -1 if not specified
 | |
|  * @param [discriminatorField] - The optional name of the field within the options object whose value is used to
 | |
|  *          determine which option is selected
 | |
|  * @returns - The index of the option that is the closest match to the `formData` or the `selectedOption` if no match
 | |
|  */
 | |
| function getClosestMatchingOption(validator, rootSchema, formData, options, selectedOption = -1, discriminatorField) {
 | |
|     // First resolve any refs in the options
 | |
|     const resolvedOptions = options.map((option) => {
 | |
|         return resolveAllReferences(option, rootSchema, []);
 | |
|     });
 | |
|     const simpleDiscriminatorMatch = getOptionMatchingSimpleDiscriminator(formData, options, discriminatorField);
 | |
|     if (isNumber_default()(simpleDiscriminatorMatch)) {
 | |
|         return simpleDiscriminatorMatch;
 | |
|     }
 | |
|     // Reduce the array of options down to a list of the indexes that are considered matching options
 | |
|     const allValidIndexes = resolvedOptions.reduce((validList, option, index) => {
 | |
|         const testOptions = [JUNK_OPTION, option];
 | |
|         const match = getFirstMatchingOption(validator, formData, testOptions, rootSchema, discriminatorField);
 | |
|         // The match is the real option, so add its index to list of valid indexes
 | |
|         if (match === 1) {
 | |
|             validList.push(index);
 | |
|         }
 | |
|         return validList;
 | |
|     }, []);
 | |
|     // There is only one valid index, so return it!
 | |
|     if (allValidIndexes.length === 1) {
 | |
|         return allValidIndexes[0];
 | |
|     }
 | |
|     if (!allValidIndexes.length) {
 | |
|         // No indexes were valid, so we'll score all the options, add all the indexes
 | |
|         times_default()(resolvedOptions.length, (i) => allValidIndexes.push(i));
 | |
|     }
 | |
|     const scoreCount = new Set();
 | |
|     // Score all the options in the list of valid indexes and return the index with the best score
 | |
|     const { bestIndex } = allValidIndexes.reduce((scoreData, index) => {
 | |
|         const { bestScore } = scoreData;
 | |
|         const option = resolvedOptions[index];
 | |
|         const score = calculateIndexScore(validator, rootSchema, option, formData);
 | |
|         scoreCount.add(score);
 | |
|         if (score > bestScore) {
 | |
|             return { bestIndex: index, bestScore: score };
 | |
|         }
 | |
|         return scoreData;
 | |
|     }, { bestIndex: selectedOption, bestScore: 0 });
 | |
|     // if all scores are the same go with selectedOption
 | |
|     if (scoreCount.size === 1 && selectedOption >= 0) {
 | |
|         return selectedOption;
 | |
|     }
 | |
|     return bestIndex;
 | |
| }
 | |
| //# sourceMappingURL=getClosestMatchingOption.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/isFixedItems.js
 | |
| 
 | |
| /** Detects whether the given `schema` contains fixed items. This is the case when `schema.items` is a non-empty array
 | |
|  * that only contains objects.
 | |
|  *
 | |
|  * @param schema - The schema in which to check for fixed items
 | |
|  * @returns - True if there are fixed items in the schema, false otherwise
 | |
|  */
 | |
| function isFixedItems(schema) {
 | |
|     return Array.isArray(schema.items) && schema.items.length > 0 && schema.items.every((item) => isObject(item));
 | |
| }
 | |
| //# sourceMappingURL=isFixedItems.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/mergeDefaultsWithFormData.js
 | |
| 
 | |
| 
 | |
| /** Merges the `defaults` object of type `T` into the `formData` of type `T`
 | |
|  *
 | |
|  * When merging defaults and form data, we want to merge in this specific way:
 | |
|  * - objects are deeply merged
 | |
|  * - arrays are merged in such a way that:
 | |
|  *   - when the array is set in form data, only array entries set in form data
 | |
|  *     are deeply merged; additional entries from the defaults are ignored unless `mergeExtraArrayDefaults` is true, in
 | |
|  *     which case the extras are appended onto the end of the form data
 | |
|  *   - when the array is not set in form data, the default is copied over
 | |
|  * - scalars are overwritten/set by form data
 | |
|  *
 | |
|  * @param [defaults] - The defaults to merge
 | |
|  * @param [formData] - The form data into which the defaults will be merged
 | |
|  * @param [mergeExtraArrayDefaults=false] - If true, any additional default array entries are appended onto the formData
 | |
|  * @returns - The resulting merged form data with defaults
 | |
|  */
 | |
| function mergeDefaultsWithFormData(defaults, formData, mergeExtraArrayDefaults = false) {
 | |
|     if (Array.isArray(formData)) {
 | |
|         const defaultsArray = Array.isArray(defaults) ? defaults : [];
 | |
|         const mapped = formData.map((value, idx) => {
 | |
|             if (defaultsArray[idx]) {
 | |
|                 return mergeDefaultsWithFormData(defaultsArray[idx], value, mergeExtraArrayDefaults);
 | |
|             }
 | |
|             return value;
 | |
|         });
 | |
|         // Merge any extra defaults when mergeExtraArrayDefaults is true
 | |
|         if (mergeExtraArrayDefaults && mapped.length < defaultsArray.length) {
 | |
|             mapped.push(...defaultsArray.slice(mapped.length));
 | |
|         }
 | |
|         return mapped;
 | |
|     }
 | |
|     if (isObject(formData)) {
 | |
|         const acc = Object.assign({}, defaults); // Prevent mutation of source object.
 | |
|         return Object.keys(formData).reduce((acc, key) => {
 | |
|             acc[key] = mergeDefaultsWithFormData(defaults ? get_default()(defaults, key) : {}, get_default()(formData, key), mergeExtraArrayDefaults);
 | |
|             return acc;
 | |
|         }, acc);
 | |
|     }
 | |
|     return formData;
 | |
| }
 | |
| //# sourceMappingURL=mergeDefaultsWithFormData.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/mergeObjects.js
 | |
| 
 | |
| /** Recursively merge deeply nested objects.
 | |
|  *
 | |
|  * @param obj1 - The first object to merge
 | |
|  * @param obj2 - The second object to merge
 | |
|  * @param [concatArrays=false] - Optional flag that, when true, will cause arrays to be concatenated. Use
 | |
|  *          "preventDuplicates" to merge arrays in a manner that prevents any duplicate entries from being merged.
 | |
|  *          NOTE: Uses shallow comparison for the duplicate checking.
 | |
|  * @returns - A new object that is the merge of the two given objects
 | |
|  */
 | |
| function mergeObjects(obj1, obj2, concatArrays = false) {
 | |
|     return Object.keys(obj2).reduce((acc, key) => {
 | |
|         const left = obj1 ? obj1[key] : {}, right = obj2[key];
 | |
|         if (obj1 && key in obj1 && isObject(right)) {
 | |
|             acc[key] = mergeObjects(left, right, concatArrays);
 | |
|         }
 | |
|         else if (concatArrays && Array.isArray(left) && Array.isArray(right)) {
 | |
|             let toMerge = right;
 | |
|             if (concatArrays === 'preventDuplicates') {
 | |
|                 toMerge = right.reduce((result, value) => {
 | |
|                     if (!left.includes(value)) {
 | |
|                         result.push(value);
 | |
|                     }
 | |
|                     return result;
 | |
|                 }, []);
 | |
|             }
 | |
|             acc[key] = left.concat(toMerge);
 | |
|         }
 | |
|         else {
 | |
|             acc[key] = right;
 | |
|         }
 | |
|         return acc;
 | |
|     }, Object.assign({}, obj1)); // Prevent mutation of source object.
 | |
| }
 | |
| //# sourceMappingURL=mergeObjects.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/isConstant.js
 | |
| 
 | |
| /** This function checks if the given `schema` matches a single constant value. This happens when either the schema has
 | |
|  * an `enum` array with a single value or there is a `const` defined.
 | |
|  *
 | |
|  * @param schema - The schema for a field
 | |
|  * @returns - True if the `schema` has a single constant value, false otherwise
 | |
|  */
 | |
| function isConstant(schema) {
 | |
|     return (Array.isArray(schema.enum) && schema.enum.length === 1) || CONST_KEY in schema;
 | |
| }
 | |
| //# sourceMappingURL=isConstant.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/schema/isSelect.js
 | |
| 
 | |
| 
 | |
| /** Checks to see if the `schema` combination represents a select
 | |
|  *
 | |
|  * @param validator - An implementation of the `ValidatorType` interface that will be used when necessary
 | |
|  * @param theSchema - The schema for which check for a select flag is desired
 | |
|  * @param [rootSchema] - The root schema, used to primarily to look up `$ref`s
 | |
|  * @returns - True if schema contains a select, otherwise false
 | |
|  */
 | |
| function isSelect(validator, theSchema, rootSchema = {}) {
 | |
|     const schema = retrieveSchema(validator, theSchema, rootSchema, undefined);
 | |
|     const altSchemas = schema.oneOf || schema.anyOf;
 | |
|     if (Array.isArray(schema.enum)) {
 | |
|         return true;
 | |
|     }
 | |
|     if (Array.isArray(altSchemas)) {
 | |
|         return altSchemas.every((altSchemas) => typeof altSchemas !== 'boolean' && isConstant(altSchemas));
 | |
|     }
 | |
|     return false;
 | |
| }
 | |
| //# sourceMappingURL=isSelect.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/schema/isMultiSelect.js
 | |
| 
 | |
| /** Checks to see if the `schema` combination represents a multi-select
 | |
|  *
 | |
|  * @param validator - An implementation of the `ValidatorType` interface that will be used when necessary
 | |
|  * @param schema - The schema for which check for a multi-select flag is desired
 | |
|  * @param [rootSchema] - The root schema, used to primarily to look up `$ref`s
 | |
|  * @returns - True if schema contains a multi-select, otherwise false
 | |
|  */
 | |
| function isMultiSelect(validator, schema, rootSchema) {
 | |
|     if (!schema.uniqueItems || !schema.items || typeof schema.items === 'boolean') {
 | |
|         return false;
 | |
|     }
 | |
|     return isSelect(validator, schema.items, rootSchema);
 | |
| }
 | |
| //# sourceMappingURL=isMultiSelect.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/schema/getDefaultFormState.js
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| /** Enum that indicates how `schema.additionalItems` should be handled by the `getInnerSchemaForArrayItem()` function.
 | |
|  */
 | |
| var AdditionalItemsHandling;
 | |
| (function (AdditionalItemsHandling) {
 | |
|     AdditionalItemsHandling[AdditionalItemsHandling["Ignore"] = 0] = "Ignore";
 | |
|     AdditionalItemsHandling[AdditionalItemsHandling["Invert"] = 1] = "Invert";
 | |
|     AdditionalItemsHandling[AdditionalItemsHandling["Fallback"] = 2] = "Fallback";
 | |
| })(AdditionalItemsHandling || (AdditionalItemsHandling = {}));
 | |
| /** Given a `schema` will return an inner schema that for an array item. This is computed differently based on the
 | |
|  * `additionalItems` enum and the value of `idx`. There are four possible returns:
 | |
|  * 1. If `idx` is >= 0, then if `schema.items` is an array the `idx`th element of the array is returned if it is a valid
 | |
|  *    index and not a boolean, otherwise it falls through to 3.
 | |
|  * 2. If `schema.items` is not an array AND truthy and not a boolean, then `schema.items` is returned since it actually
 | |
|  *    is a schema, otherwise it falls through to 3.
 | |
|  * 3. If `additionalItems` is not `AdditionalItemsHandling.Ignore` and `schema.additionalItems` is an object, then
 | |
|  *    `schema.additionalItems` is returned since it actually is a schema, otherwise it falls through to 4.
 | |
|  * 4. {} is returned representing an empty schema
 | |
|  *
 | |
|  * @param schema - The schema from which to get the particular item
 | |
|  * @param [additionalItems=AdditionalItemsHandling.Ignore] - How do we want to handle additional items?
 | |
|  * @param [idx=-1] - Index, if non-negative, will be used to return the idx-th element in a `schema.items` array
 | |
|  * @returns - The best fit schema object from the `schema` given the `additionalItems` and `idx` modifiers
 | |
|  */
 | |
| function getInnerSchemaForArrayItem(schema, additionalItems = AdditionalItemsHandling.Ignore, idx = -1) {
 | |
|     if (idx >= 0) {
 | |
|         if (Array.isArray(schema.items) && idx < schema.items.length) {
 | |
|             const item = schema.items[idx];
 | |
|             if (typeof item !== 'boolean') {
 | |
|                 return item;
 | |
|             }
 | |
|         }
 | |
|     }
 | |
|     else if (schema.items && !Array.isArray(schema.items) && typeof schema.items !== 'boolean') {
 | |
|         return schema.items;
 | |
|     }
 | |
|     if (additionalItems !== AdditionalItemsHandling.Ignore && isObject(schema.additionalItems)) {
 | |
|         return schema.additionalItems;
 | |
|     }
 | |
|     return {};
 | |
| }
 | |
| /** Either add `computedDefault` at `key` into `obj` or not add it based on its value, the value of
 | |
|  * `includeUndefinedValues`, the value of `emptyObjectFields` and if its parent field is required. Generally undefined
 | |
|  * `computedDefault` values are added only when `includeUndefinedValues` is either true/"excludeObjectChildren". If `
 | |
|  * includeUndefinedValues` is false and `emptyObjectFields` is not "skipDefaults", then non-undefined and non-empty-object
 | |
|  * values will be added based on certain conditions.
 | |
|  *
 | |
|  * @param obj - The object into which the computed default may be added
 | |
|  * @param key - The key into the object at which the computed default may be added
 | |
|  * @param computedDefault - The computed default value that maybe should be added to the obj
 | |
|  * @param includeUndefinedValues - Optional flag, if true, cause undefined values to be added as defaults.
 | |
|  *          If "excludeObjectChildren", cause undefined values for this object and pass `includeUndefinedValues` as
 | |
|  *          false when computing defaults for any nested object properties. If "allowEmptyObject", prevents undefined
 | |
|  *          values in this object while allow the object itself to be empty and passing `includeUndefinedValues` as
 | |
|  *          false when computing defaults for any nested object properties.
 | |
|  * @param isParentRequired - The optional boolean that indicates whether the parent field is required
 | |
|  * @param requiredFields - The list of fields that are required
 | |
|  * @param experimental_defaultFormStateBehavior - Optional configuration object, if provided, allows users to override
 | |
|  *        default form state behavior
 | |
|  */
 | |
| function maybeAddDefaultToObject(obj, key, computedDefault, includeUndefinedValues, isParentRequired, requiredFields = [], experimental_defaultFormStateBehavior = {}) {
 | |
|     const { emptyObjectFields = 'populateAllDefaults' } = experimental_defaultFormStateBehavior;
 | |
|     if (includeUndefinedValues) {
 | |
|         obj[key] = computedDefault;
 | |
|     }
 | |
|     else if (emptyObjectFields !== 'skipDefaults') {
 | |
|         if (isObject(computedDefault)) {
 | |
|             // If isParentRequired is undefined, then we are at the root level of the schema so defer to the requiredness of
 | |
|             // the field key itself in the `requiredField` list
 | |
|             const isSelfOrParentRequired = isParentRequired === undefined ? requiredFields.includes(key) : isParentRequired;
 | |
|             // Store computedDefault if it's a non-empty object(e.g. not {}) and satisfies certain conditions
 | |
|             // Condition 1: If computedDefault is not empty or if the key is a required field
 | |
|             // Condition 2: If the parent object is required or emptyObjectFields is not 'populateRequiredDefaults'
 | |
|             if ((!isEmpty_default()(computedDefault) || requiredFields.includes(key)) &&
 | |
|                 (isSelfOrParentRequired || emptyObjectFields !== 'populateRequiredDefaults')) {
 | |
|                 obj[key] = computedDefault;
 | |
|             }
 | |
|         }
 | |
|         else if (
 | |
|         // Store computedDefault if it's a defined primitive (e.g., true) and satisfies certain conditions
 | |
|         // Condition 1: computedDefault is not undefined
 | |
|         // Condition 2: If emptyObjectFields is 'populateAllDefaults' or if the key is a required field
 | |
|         computedDefault !== undefined &&
 | |
|             (emptyObjectFields === 'populateAllDefaults' || requiredFields.includes(key))) {
 | |
|             obj[key] = computedDefault;
 | |
|         }
 | |
|     }
 | |
| }
 | |
| /** Computes the defaults for the current `schema` given the `rawFormData` and `parentDefaults` if any. This drills into
 | |
|  * each level of the schema, recursively, to fill out every level of defaults provided by the schema.
 | |
|  *
 | |
|  * @param validator - an implementation of the `ValidatorType` interface that will be used when necessary
 | |
|  * @param rawSchema - The schema for which the default state is desired
 | |
|  * @param [props] - Optional props for this function
 | |
|  * @param [props.parentDefaults] - Any defaults provided by the parent field in the schema
 | |
|  * @param [props.rootSchema] - The options root schema, used to primarily to look up `$ref`s
 | |
|  * @param [props.rawFormData] - The current formData, if any, onto which to provide any missing defaults
 | |
|  * @param [props.includeUndefinedValues=false] - Optional flag, if true, cause undefined values to be added as defaults.
 | |
|  *          If "excludeObjectChildren", cause undefined values for this object and pass `includeUndefinedValues` as
 | |
|  *          false when computing defaults for any nested object properties.
 | |
|  * @param [props._recurseList=[]] - The list of ref names currently being recursed, used to prevent infinite recursion
 | |
|  * @param [props.experimental_defaultFormStateBehavior] Optional configuration object, if provided, allows users to override default form state behavior
 | |
|  * @param [props.required] - Optional flag, if true, indicates this schema was required in the parent schema.
 | |
|  * @returns - The resulting `formData` with all the defaults provided
 | |
|  */
 | |
| function computeDefaults(validator, rawSchema, { parentDefaults, rawFormData, rootSchema = {}, includeUndefinedValues = false, _recurseList = [], experimental_defaultFormStateBehavior = undefined, required, } = {}) {
 | |
|     var _a, _b;
 | |
|     const formData = (isObject(rawFormData) ? rawFormData : {});
 | |
|     const schema = isObject(rawSchema) ? rawSchema : {};
 | |
|     // Compute the defaults recursively: give highest priority to deepest nodes.
 | |
|     let defaults = parentDefaults;
 | |
|     // If we get a new schema, then we need to recompute defaults again for the new schema found.
 | |
|     let schemaToCompute = null;
 | |
|     let updatedRecurseList = _recurseList;
 | |
|     if (isObject(defaults) && isObject(schema.default)) {
 | |
|         // For object defaults, only override parent defaults that are defined in
 | |
|         // schema.default.
 | |
|         defaults = mergeObjects(defaults, schema.default);
 | |
|     }
 | |
|     else if (DEFAULT_KEY in schema) {
 | |
|         defaults = schema.default;
 | |
|     }
 | |
|     else if (REF_KEY in schema) {
 | |
|         const refName = schema[REF_KEY];
 | |
|         // Use referenced schema defaults for this node.
 | |
|         if (!_recurseList.includes(refName)) {
 | |
|             updatedRecurseList = _recurseList.concat(refName);
 | |
|             schemaToCompute = findSchemaDefinition(refName, rootSchema);
 | |
|         }
 | |
|     }
 | |
|     else if (DEPENDENCIES_KEY in schema) {
 | |
|         const resolvedSchema = resolveDependencies(validator, schema, rootSchema, false, [], formData);
 | |
|         schemaToCompute = resolvedSchema[0]; // pick the first element from resolve dependencies
 | |
|     }
 | |
|     else if (isFixedItems(schema)) {
 | |
|         defaults = schema.items.map((itemSchema, idx) => computeDefaults(validator, itemSchema, {
 | |
|             rootSchema,
 | |
|             includeUndefinedValues,
 | |
|             _recurseList,
 | |
|             experimental_defaultFormStateBehavior,
 | |
|             parentDefaults: Array.isArray(parentDefaults) ? parentDefaults[idx] : undefined,
 | |
|             rawFormData: formData,
 | |
|             required,
 | |
|         }));
 | |
|     }
 | |
|     else if (ONE_OF_KEY in schema) {
 | |
|         const { oneOf, ...remaining } = schema;
 | |
|         if (oneOf.length === 0) {
 | |
|             return undefined;
 | |
|         }
 | |
|         const discriminator = getDiscriminatorFieldFromSchema(schema);
 | |
|         schemaToCompute = oneOf[getClosestMatchingOption(validator, rootSchema, isEmpty_default()(formData) ? undefined : formData, oneOf, 0, discriminator)];
 | |
|         schemaToCompute = mergeSchemas(remaining, schemaToCompute);
 | |
|     }
 | |
|     else if (ANY_OF_KEY in schema) {
 | |
|         const { anyOf, ...remaining } = schema;
 | |
|         if (anyOf.length === 0) {
 | |
|             return undefined;
 | |
|         }
 | |
|         const discriminator = getDiscriminatorFieldFromSchema(schema);
 | |
|         schemaToCompute = anyOf[getClosestMatchingOption(validator, rootSchema, isEmpty_default()(formData) ? undefined : formData, anyOf, 0, discriminator)];
 | |
|         schemaToCompute = mergeSchemas(remaining, schemaToCompute);
 | |
|     }
 | |
|     if (schemaToCompute) {
 | |
|         return computeDefaults(validator, schemaToCompute, {
 | |
|             rootSchema,
 | |
|             includeUndefinedValues,
 | |
|             _recurseList: updatedRecurseList,
 | |
|             experimental_defaultFormStateBehavior,
 | |
|             parentDefaults: defaults,
 | |
|             rawFormData: formData,
 | |
|             required,
 | |
|         });
 | |
|     }
 | |
|     // No defaults defined for this node, fallback to generic typed ones.
 | |
|     if (defaults === undefined) {
 | |
|         defaults = schema.default;
 | |
|     }
 | |
|     switch (getSchemaType(schema)) {
 | |
|         // We need to recurse for object schema inner default values.
 | |
|         case 'object': {
 | |
|             // This is a custom addition that fixes this issue:
 | |
|             // https://github.com/rjsf-team/react-jsonschema-form/issues/3832
 | |
|             const retrievedSchema = (experimental_defaultFormStateBehavior === null || experimental_defaultFormStateBehavior === void 0 ? void 0 : experimental_defaultFormStateBehavior.allOf) === 'populateDefaults' && ALL_OF_KEY in schema
 | |
|                 ? retrieveSchema(validator, schema, rootSchema, formData)
 | |
|                 : schema;
 | |
|             const objectDefaults = Object.keys(retrievedSchema.properties || {}).reduce((acc, key) => {
 | |
|                 var _a;
 | |
|                 // Compute the defaults for this node, with the parent defaults we might
 | |
|                 // have from a previous run: defaults[key].
 | |
|                 const computedDefault = computeDefaults(validator, get_default()(retrievedSchema, [PROPERTIES_KEY, key]), {
 | |
|                     rootSchema,
 | |
|                     _recurseList,
 | |
|                     experimental_defaultFormStateBehavior,
 | |
|                     includeUndefinedValues: includeUndefinedValues === true,
 | |
|                     parentDefaults: get_default()(defaults, [key]),
 | |
|                     rawFormData: get_default()(formData, [key]),
 | |
|                     required: (_a = retrievedSchema.required) === null || _a === void 0 ? void 0 : _a.includes(key),
 | |
|                 });
 | |
|                 maybeAddDefaultToObject(acc, key, computedDefault, includeUndefinedValues, required, retrievedSchema.required, experimental_defaultFormStateBehavior);
 | |
|                 return acc;
 | |
|             }, {});
 | |
|             if (retrievedSchema.additionalProperties) {
 | |
|                 // as per spec additionalProperties may be either schema or boolean
 | |
|                 const additionalPropertiesSchema = isObject(retrievedSchema.additionalProperties)
 | |
|                     ? retrievedSchema.additionalProperties
 | |
|                     : {};
 | |
|                 const keys = new Set();
 | |
|                 if (isObject(defaults)) {
 | |
|                     Object.keys(defaults)
 | |
|                         .filter((key) => !retrievedSchema.properties || !retrievedSchema.properties[key])
 | |
|                         .forEach((key) => keys.add(key));
 | |
|                 }
 | |
|                 const formDataRequired = [];
 | |
|                 Object.keys(formData)
 | |
|                     .filter((key) => !retrievedSchema.properties || !retrievedSchema.properties[key])
 | |
|                     .forEach((key) => {
 | |
|                     keys.add(key);
 | |
|                     formDataRequired.push(key);
 | |
|                 });
 | |
|                 keys.forEach((key) => {
 | |
|                     var _a;
 | |
|                     const computedDefault = computeDefaults(validator, additionalPropertiesSchema, {
 | |
|                         rootSchema,
 | |
|                         _recurseList,
 | |
|                         experimental_defaultFormStateBehavior,
 | |
|                         includeUndefinedValues: includeUndefinedValues === true,
 | |
|                         parentDefaults: get_default()(defaults, [key]),
 | |
|                         rawFormData: get_default()(formData, [key]),
 | |
|                         required: (_a = retrievedSchema.required) === null || _a === void 0 ? void 0 : _a.includes(key),
 | |
|                     });
 | |
|                     // Since these are additional properties we don't need to add the `experimental_defaultFormStateBehavior` prop
 | |
|                     maybeAddDefaultToObject(objectDefaults, key, computedDefault, includeUndefinedValues, required, formDataRequired);
 | |
|                 });
 | |
|             }
 | |
|             return objectDefaults;
 | |
|         }
 | |
|         case 'array': {
 | |
|             const neverPopulate = ((_a = experimental_defaultFormStateBehavior === null || experimental_defaultFormStateBehavior === void 0 ? void 0 : experimental_defaultFormStateBehavior.arrayMinItems) === null || _a === void 0 ? void 0 : _a.populate) === 'never';
 | |
|             const ignoreMinItemsFlagSet = ((_b = experimental_defaultFormStateBehavior === null || experimental_defaultFormStateBehavior === void 0 ? void 0 : experimental_defaultFormStateBehavior.arrayMinItems) === null || _b === void 0 ? void 0 : _b.populate) === 'requiredOnly';
 | |
|             // Inject defaults into existing array defaults
 | |
|             if (Array.isArray(defaults)) {
 | |
|                 defaults = defaults.map((item, idx) => {
 | |
|                     const schemaItem = getInnerSchemaForArrayItem(schema, AdditionalItemsHandling.Fallback, idx);
 | |
|                     return computeDefaults(validator, schemaItem, {
 | |
|                         rootSchema,
 | |
|                         _recurseList,
 | |
|                         experimental_defaultFormStateBehavior,
 | |
|                         parentDefaults: item,
 | |
|                         required,
 | |
|                     });
 | |
|                 });
 | |
|             }
 | |
|             // Deeply inject defaults into already existing form data
 | |
|             if (Array.isArray(rawFormData)) {
 | |
|                 const schemaItem = getInnerSchemaForArrayItem(schema);
 | |
|                 if (neverPopulate) {
 | |
|                     defaults = rawFormData;
 | |
|                 }
 | |
|                 else {
 | |
|                     defaults = rawFormData.map((item, idx) => {
 | |
|                         return computeDefaults(validator, schemaItem, {
 | |
|                             rootSchema,
 | |
|                             _recurseList,
 | |
|                             experimental_defaultFormStateBehavior,
 | |
|                             rawFormData: item,
 | |
|                             parentDefaults: get_default()(defaults, [idx]),
 | |
|                             required,
 | |
|                         });
 | |
|                     });
 | |
|                 }
 | |
|             }
 | |
|             if (neverPopulate) {
 | |
|                 return defaults !== null && defaults !== void 0 ? defaults : [];
 | |
|             }
 | |
|             if (ignoreMinItemsFlagSet && !required) {
 | |
|                 // If no form data exists or defaults are set leave the field empty/non-existent, otherwise
 | |
|                 // return form data/defaults
 | |
|                 return defaults ? defaults : undefined;
 | |
|             }
 | |
|             const defaultsLength = Array.isArray(defaults) ? defaults.length : 0;
 | |
|             if (!schema.minItems ||
 | |
|                 isMultiSelect(validator, schema, rootSchema) ||
 | |
|                 schema.minItems <= defaultsLength) {
 | |
|                 return defaults ? defaults : [];
 | |
|             }
 | |
|             const defaultEntries = (defaults || []);
 | |
|             const fillerSchema = getInnerSchemaForArrayItem(schema, AdditionalItemsHandling.Invert);
 | |
|             const fillerDefault = fillerSchema.default;
 | |
|             // Calculate filler entries for remaining items (minItems - existing raw data/defaults)
 | |
|             const fillerEntries = new Array(schema.minItems - defaultsLength).fill(computeDefaults(validator, fillerSchema, {
 | |
|                 parentDefaults: fillerDefault,
 | |
|                 rootSchema,
 | |
|                 _recurseList,
 | |
|                 experimental_defaultFormStateBehavior,
 | |
|                 required,
 | |
|             }));
 | |
|             // then fill up the rest with either the item default or empty, up to minItems
 | |
|             return defaultEntries.concat(fillerEntries);
 | |
|         }
 | |
|     }
 | |
|     return defaults;
 | |
| }
 | |
| /** Returns the superset of `formData` that includes the given set updated to include any missing fields that have
 | |
|  * computed to have defaults provided in the `schema`.
 | |
|  *
 | |
|  * @param validator - An implementation of the `ValidatorType` interface that will be used when necessary
 | |
|  * @param theSchema - The schema for which the default state is desired
 | |
|  * @param [formData] - The current formData, if any, onto which to provide any missing defaults
 | |
|  * @param [rootSchema] - The root schema, used to primarily to look up `$ref`s
 | |
|  * @param [includeUndefinedValues=false] - Optional flag, if true, cause undefined values to be added as defaults.
 | |
|  *          If "excludeObjectChildren", cause undefined values for this object and pass `includeUndefinedValues` as
 | |
|  *          false when computing defaults for any nested object properties.
 | |
|  * @param [experimental_defaultFormStateBehavior] Optional configuration object, if provided, allows users to override default form state behavior
 | |
|  * @returns - The resulting `formData` with all the defaults provided
 | |
|  */
 | |
| function getDefaultFormState(validator, theSchema, formData, rootSchema, includeUndefinedValues = false, experimental_defaultFormStateBehavior) {
 | |
|     if (!isObject(theSchema)) {
 | |
|         throw new Error('Invalid schema: ' + theSchema);
 | |
|     }
 | |
|     const schema = retrieveSchema(validator, theSchema, rootSchema, formData);
 | |
|     const defaults = computeDefaults(validator, schema, {
 | |
|         rootSchema,
 | |
|         includeUndefinedValues,
 | |
|         experimental_defaultFormStateBehavior,
 | |
|         rawFormData: formData,
 | |
|     });
 | |
|     if (formData === undefined || formData === null || (typeof formData === 'number' && isNaN(formData))) {
 | |
|         // No form data? Use schema defaults.
 | |
|         return defaults;
 | |
|     }
 | |
|     const { mergeExtraDefaults } = (experimental_defaultFormStateBehavior === null || experimental_defaultFormStateBehavior === void 0 ? void 0 : experimental_defaultFormStateBehavior.arrayMinItems) || {};
 | |
|     if (isObject(formData)) {
 | |
|         return mergeDefaultsWithFormData(defaults, formData, mergeExtraDefaults);
 | |
|     }
 | |
|     if (Array.isArray(formData)) {
 | |
|         return mergeDefaultsWithFormData(defaults, formData, mergeExtraDefaults);
 | |
|     }
 | |
|     return formData;
 | |
| }
 | |
| //# sourceMappingURL=getDefaultFormState.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/isCustomWidget.js
 | |
| 
 | |
| /** Checks to see if the `uiSchema` contains the `widget` field and that the widget is not `hidden`
 | |
|  *
 | |
|  * @param uiSchema - The UI Schema from which to detect if it is customized
 | |
|  * @returns - True if the `uiSchema` describes a custom widget, false otherwise
 | |
|  */
 | |
| function isCustomWidget(uiSchema = {}) {
 | |
|     return (
 | |
|     // TODO: Remove the `&& uiSchema['ui:widget'] !== 'hidden'` once we support hidden widgets for arrays.
 | |
|     // https://rjsf-team.github.io/react-jsonschema-form/docs/usage/widgets/#hidden-widgets
 | |
|     'widget' in getUiOptions(uiSchema) && getUiOptions(uiSchema)['widget'] !== 'hidden');
 | |
| }
 | |
| //# sourceMappingURL=isCustomWidget.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/schema/isFilesArray.js
 | |
| 
 | |
| 
 | |
| /** Checks to see if the `schema` and `uiSchema` combination represents an array of files
 | |
|  *
 | |
|  * @param validator - An implementation of the `ValidatorType` interface that will be used when necessary
 | |
|  * @param schema - The schema for which check for array of files flag is desired
 | |
|  * @param [uiSchema={}] - The UI schema from which to check the widget
 | |
|  * @param [rootSchema] - The root schema, used to primarily to look up `$ref`s
 | |
|  * @returns - True if schema/uiSchema contains an array of files, otherwise false
 | |
|  */
 | |
| function isFilesArray(validator, schema, uiSchema = {}, rootSchema) {
 | |
|     if (uiSchema[UI_WIDGET_KEY] === 'files') {
 | |
|         return true;
 | |
|     }
 | |
|     if (schema.items) {
 | |
|         const itemsSchema = retrieveSchema(validator, schema.items, rootSchema);
 | |
|         return itemsSchema.type === 'string' && itemsSchema.format === 'data-url';
 | |
|     }
 | |
|     return false;
 | |
| }
 | |
| //# sourceMappingURL=isFilesArray.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/schema/getDisplayLabel.js
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| /** Determines whether the combination of `schema` and `uiSchema` properties indicates that the label for the `schema`
 | |
|  * should be displayed in a UI.
 | |
|  *
 | |
|  * @param validator - An implementation of the `ValidatorType` interface that will be used when necessary
 | |
|  * @param schema - The schema for which the display label flag is desired
 | |
|  * @param [uiSchema={}] - The UI schema from which to derive potentially displayable information
 | |
|  * @param [rootSchema] - The root schema, used to primarily to look up `$ref`s
 | |
|  * @param [globalOptions={}] - The optional Global UI Schema from which to get any fallback `xxx` options
 | |
|  * @returns - True if the label should be displayed or false if it should not
 | |
|  */
 | |
| function getDisplayLabel(validator, schema, uiSchema = {}, rootSchema, globalOptions) {
 | |
|     const uiOptions = getUiOptions(uiSchema, globalOptions);
 | |
|     const { label = true } = uiOptions;
 | |
|     let displayLabel = !!label;
 | |
|     const schemaType = getSchemaType(schema);
 | |
|     if (schemaType === 'array') {
 | |
|         displayLabel =
 | |
|             isMultiSelect(validator, schema, rootSchema) ||
 | |
|                 isFilesArray(validator, schema, uiSchema, rootSchema) ||
 | |
|                 isCustomWidget(uiSchema);
 | |
|     }
 | |
|     if (schemaType === 'object') {
 | |
|         displayLabel = false;
 | |
|     }
 | |
|     if (schemaType === 'boolean' && !uiSchema[UI_WIDGET_KEY]) {
 | |
|         displayLabel = false;
 | |
|     }
 | |
|     if (uiSchema[UI_FIELD_KEY]) {
 | |
|         displayLabel = false;
 | |
|     }
 | |
|     return displayLabel;
 | |
| }
 | |
| //# sourceMappingURL=getDisplayLabel.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/schema/mergeValidationData.js
 | |
| 
 | |
| 
 | |
| /** Merges the errors in `additionalErrorSchema` into the existing `validationData` by combining the hierarchies in the
 | |
|  * two `ErrorSchema`s and then appending the error list from the `additionalErrorSchema` obtained by calling
 | |
|  * `validator.toErrorList()` onto the `errors` in the `validationData`. If no `additionalErrorSchema` is passed, then
 | |
|  * `validationData` is returned.
 | |
|  *
 | |
|  * @param validator - The validator used to convert an ErrorSchema to a list of errors
 | |
|  * @param validationData - The current `ValidationData` into which to merge the additional errors
 | |
|  * @param [additionalErrorSchema] - The additional set of errors in an `ErrorSchema`
 | |
|  * @returns - The `validationData` with the additional errors from `additionalErrorSchema` merged into it, if provided.
 | |
|  * @deprecated - Use the `validationDataMerge()` function exported from `@rjsf/utils` instead. This function will be
 | |
|  *        removed in the next major release.
 | |
|  */
 | |
| function mergeValidationData(validator, validationData, additionalErrorSchema) {
 | |
|     if (!additionalErrorSchema) {
 | |
|         return validationData;
 | |
|     }
 | |
|     const { errors: oldErrors, errorSchema: oldErrorSchema } = validationData;
 | |
|     let errors = validator.toErrorList(additionalErrorSchema);
 | |
|     let errorSchema = additionalErrorSchema;
 | |
|     if (!isEmpty_default()(oldErrorSchema)) {
 | |
|         errorSchema = mergeObjects(oldErrorSchema, additionalErrorSchema, true);
 | |
|         errors = [...oldErrors].concat(errors);
 | |
|     }
 | |
|     return { errorSchema, errors };
 | |
| }
 | |
| //# sourceMappingURL=mergeValidationData.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/schema/sanitizeDataForNewSchema.js
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| const NO_VALUE = Symbol('no Value');
 | |
| /** Sanitize the `data` associated with the `oldSchema` so it is considered appropriate for the `newSchema`. If the new
 | |
|  * schema does not contain any properties, then `undefined` is returned to clear all the form data. Due to the nature
 | |
|  * of schemas, this sanitization happens recursively for nested objects of data. Also, any properties in the old schema
 | |
|  * that are non-existent in the new schema are set to `undefined`. The data sanitization process has the following flow:
 | |
|  *
 | |
|  * - If the new schema is an object that contains a `properties` object then:
 | |
|  *   - Create a `removeOldSchemaData` object, setting each key in the `oldSchema.properties` having `data` to undefined
 | |
|  *   - Create an empty `nestedData` object for use in the key filtering below:
 | |
|  *   - Iterate over each key in the `newSchema.properties` as follows:
 | |
|  *     - Get the `formValue` of the key from the `data`
 | |
|  *     - Get the `oldKeySchema` and `newKeyedSchema` for the key, defaulting to `{}` when it doesn't exist
 | |
|  *     - Retrieve the schema for any refs within each `oldKeySchema` and/or `newKeySchema`
 | |
|  *     - Get the types of the old and new keyed schemas and if the old doesn't exist or the old & new are the same then:
 | |
|  *       - If `removeOldSchemaData` has an entry for the key, delete it since the new schema has the same property
 | |
|  *       - If type of the key in the new schema is `object`:
 | |
|  *         - Store the value from the recursive `sanitizeDataForNewSchema` call in `nestedData[key]`
 | |
|  *       - Otherwise, check for default or const values:
 | |
|  *         - Get the old and new `default` values from the schema and check:
 | |
|  *           - If the new `default` value does not match the form value:
 | |
|  *             - If the old `default` value DOES match the form value, then:
 | |
|  *               - Replace `removeOldSchemaData[key]` with the new `default`
 | |
|  *               - Otherwise, if the new schema is `readOnly` then replace `removeOldSchemaData[key]` with undefined
 | |
|  *         - Get the old and new `const` values from the schema and check:
 | |
|  *           - If the new `const` value does not match the form value:
 | |
|  *           - If the old `const` value DOES match the form value, then:
 | |
|  *             - Replace `removeOldSchemaData[key]` with the new `const`
 | |
|  *             - Otherwise, replace `removeOldSchemaData[key]` with undefined
 | |
|  *   - Once all keys have been processed, return an object built as follows:
 | |
|  *     - `{ ...removeOldSchemaData, ...nestedData, ...pick(data, keysToKeep) }`
 | |
|  * - If the new and old schema types are array and the `data` is an array then:
 | |
|  *   - If the type of the old and new schema `items` are a non-array objects:
 | |
|  *     - Retrieve the schema for any refs within each `oldKeySchema.items` and/or `newKeySchema.items`
 | |
|  *     - If the `type`s of both items are the same (or the old does not have a type):
 | |
|  *       - If the type is "object", then:
 | |
|  *         - For each element in the `data` recursively sanitize the data, stopping at `maxItems` if specified
 | |
|  *       - Otherwise, just return the `data` removing any values after `maxItems` if it is set
 | |
|  *   - If the type of the old and new schema `items` are booleans of the same value, return `data` as is
 | |
|  * - Otherwise return `undefined`
 | |
|  *
 | |
|  * @param validator - An implementation of the `ValidatorType` interface that will be used when necessary
 | |
|  * @param rootSchema - The root JSON schema of the entire form
 | |
|  * @param [newSchema] - The new schema for which the data is being sanitized
 | |
|  * @param [oldSchema] - The old schema from which the data originated
 | |
|  * @param [data={}] - The form data associated with the schema, defaulting to an empty object when undefined
 | |
|  * @returns - The new form data, with all the fields uniquely associated with the old schema set
 | |
|  *      to `undefined`. Will return `undefined` if the new schema is not an object containing properties.
 | |
|  */
 | |
| function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, data = {}) {
 | |
|     // By default, we will clear the form data
 | |
|     let newFormData;
 | |
|     // If the new schema is of type object and that object contains a list of properties
 | |
|     if (has_default()(newSchema, PROPERTIES_KEY)) {
 | |
|         // Create an object containing root-level keys in the old schema, setting each key to undefined to remove the data
 | |
|         const removeOldSchemaData = {};
 | |
|         if (has_default()(oldSchema, PROPERTIES_KEY)) {
 | |
|             const properties = get_default()(oldSchema, PROPERTIES_KEY, {});
 | |
|             Object.keys(properties).forEach((key) => {
 | |
|                 if (has_default()(data, key)) {
 | |
|                     removeOldSchemaData[key] = undefined;
 | |
|                 }
 | |
|             });
 | |
|         }
 | |
|         const keys = Object.keys(get_default()(newSchema, PROPERTIES_KEY, {}));
 | |
|         // Create a place to store nested data that will be a side-effect of the filter
 | |
|         const nestedData = {};
 | |
|         keys.forEach((key) => {
 | |
|             const formValue = get_default()(data, key);
 | |
|             let oldKeyedSchema = get_default()(oldSchema, [PROPERTIES_KEY, key], {});
 | |
|             let newKeyedSchema = get_default()(newSchema, [PROPERTIES_KEY, key], {});
 | |
|             // Resolve the refs if they exist
 | |
|             if (has_default()(oldKeyedSchema, REF_KEY)) {
 | |
|                 oldKeyedSchema = retrieveSchema(validator, oldKeyedSchema, rootSchema, formValue);
 | |
|             }
 | |
|             if (has_default()(newKeyedSchema, REF_KEY)) {
 | |
|                 newKeyedSchema = retrieveSchema(validator, newKeyedSchema, rootSchema, formValue);
 | |
|             }
 | |
|             // Now get types and see if they are the same
 | |
|             const oldSchemaTypeForKey = get_default()(oldKeyedSchema, 'type');
 | |
|             const newSchemaTypeForKey = get_default()(newKeyedSchema, 'type');
 | |
|             // Check if the old option has the same key with the same type
 | |
|             if (!oldSchemaTypeForKey || oldSchemaTypeForKey === newSchemaTypeForKey) {
 | |
|                 if (has_default()(removeOldSchemaData, key)) {
 | |
|                     // SIDE-EFFECT: remove the undefined value for a key that has the same type between the old and new schemas
 | |
|                     delete removeOldSchemaData[key];
 | |
|                 }
 | |
|                 // If it is an object, we'll recurse and store the resulting sanitized data for the key
 | |
|                 if (newSchemaTypeForKey === 'object' || (newSchemaTypeForKey === 'array' && Array.isArray(formValue))) {
 | |
|                     // SIDE-EFFECT: process the new schema type of object recursively to save iterations
 | |
|                     const itemData = sanitizeDataForNewSchema(validator, rootSchema, newKeyedSchema, oldKeyedSchema, formValue);
 | |
|                     if (itemData !== undefined || newSchemaTypeForKey === 'array') {
 | |
|                         // only put undefined values for the array type and not the object type
 | |
|                         nestedData[key] = itemData;
 | |
|                     }
 | |
|                 }
 | |
|                 else {
 | |
|                     // Ok, the non-object types match, let's make sure that a default or a const of a different value is replaced
 | |
|                     // with the new default or const. This allows the case where two schemas differ that only by the default/const
 | |
|                     // value to be properly selected
 | |
|                     const newOptionDefault = get_default()(newKeyedSchema, 'default', NO_VALUE);
 | |
|                     const oldOptionDefault = get_default()(oldKeyedSchema, 'default', NO_VALUE);
 | |
|                     if (newOptionDefault !== NO_VALUE && newOptionDefault !== formValue) {
 | |
|                         if (oldOptionDefault === formValue) {
 | |
|                             // If the old default matches the formValue, we'll update the new value to match the new default
 | |
|                             removeOldSchemaData[key] = newOptionDefault;
 | |
|                         }
 | |
|                         else if (get_default()(newKeyedSchema, 'readOnly') === true) {
 | |
|                             // If the new schema has the default set to read-only, treat it like a const and remove the value
 | |
|                             removeOldSchemaData[key] = undefined;
 | |
|                         }
 | |
|                     }
 | |
|                     const newOptionConst = get_default()(newKeyedSchema, 'const', NO_VALUE);
 | |
|                     const oldOptionConst = get_default()(oldKeyedSchema, 'const', NO_VALUE);
 | |
|                     if (newOptionConst !== NO_VALUE && newOptionConst !== formValue) {
 | |
|                         // Since this is a const, if the old value matches, replace the value with the new const otherwise clear it
 | |
|                         removeOldSchemaData[key] = oldOptionConst === formValue ? newOptionConst : undefined;
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|         });
 | |
|         newFormData = {
 | |
|             ...(typeof data == 'string' || Array.isArray(data) ? undefined : data),
 | |
|             ...removeOldSchemaData,
 | |
|             ...nestedData,
 | |
|         };
 | |
|         // First apply removing the old schema data, then apply the nested data, then apply the old data keys to keep
 | |
|     }
 | |
|     else if (get_default()(oldSchema, 'type') === 'array' && get_default()(newSchema, 'type') === 'array' && Array.isArray(data)) {
 | |
|         let oldSchemaItems = get_default()(oldSchema, 'items');
 | |
|         let newSchemaItems = get_default()(newSchema, 'items');
 | |
|         // If any of the array types `items` are arrays (remember arrays are objects) then we'll just drop the data
 | |
|         // Eventually, we may want to deal with when either of the `items` are arrays since those tuple validations
 | |
|         if (typeof oldSchemaItems === 'object' &&
 | |
|             typeof newSchemaItems === 'object' &&
 | |
|             !Array.isArray(oldSchemaItems) &&
 | |
|             !Array.isArray(newSchemaItems)) {
 | |
|             if (has_default()(oldSchemaItems, REF_KEY)) {
 | |
|                 oldSchemaItems = retrieveSchema(validator, oldSchemaItems, rootSchema, data);
 | |
|             }
 | |
|             if (has_default()(newSchemaItems, REF_KEY)) {
 | |
|                 newSchemaItems = retrieveSchema(validator, newSchemaItems, rootSchema, data);
 | |
|             }
 | |
|             // Now get types and see if they are the same
 | |
|             const oldSchemaType = get_default()(oldSchemaItems, 'type');
 | |
|             const newSchemaType = get_default()(newSchemaItems, 'type');
 | |
|             // Check if the old option has the same key with the same type
 | |
|             if (!oldSchemaType || oldSchemaType === newSchemaType) {
 | |
|                 const maxItems = get_default()(newSchema, 'maxItems', -1);
 | |
|                 if (newSchemaType === 'object') {
 | |
|                     newFormData = data.reduce((newValue, aValue) => {
 | |
|                         const itemValue = sanitizeDataForNewSchema(validator, rootSchema, newSchemaItems, oldSchemaItems, aValue);
 | |
|                         if (itemValue !== undefined && (maxItems < 0 || newValue.length < maxItems)) {
 | |
|                             newValue.push(itemValue);
 | |
|                         }
 | |
|                         return newValue;
 | |
|                     }, []);
 | |
|                 }
 | |
|                 else {
 | |
|                     newFormData = maxItems > 0 && data.length > maxItems ? data.slice(0, maxItems) : data;
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         else if (typeof oldSchemaItems === 'boolean' &&
 | |
|             typeof newSchemaItems === 'boolean' &&
 | |
|             oldSchemaItems === newSchemaItems) {
 | |
|             // If they are both booleans and have the same value just return the data as is otherwise fall-thru to undefined
 | |
|             newFormData = data;
 | |
|         }
 | |
|         // Also probably want to deal with `prefixItems` as tuples with the latest 2020 draft
 | |
|     }
 | |
|     return newFormData;
 | |
| }
 | |
| //# sourceMappingURL=sanitizeDataForNewSchema.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/schema/toIdSchema.js
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| /** An internal helper that generates an `IdSchema` object for the `schema`, recursively with protection against
 | |
|  * infinite recursion
 | |
|  *
 | |
|  * @param validator - An implementation of the `ValidatorType` interface that will be used when necessary
 | |
|  * @param schema - The schema for which the `IdSchema` is desired
 | |
|  * @param idPrefix - The prefix to use for the id
 | |
|  * @param idSeparator - The separator to use for the path segments in the id
 | |
|  * @param [id] - The base id for the schema
 | |
|  * @param [rootSchema] - The root schema, used to primarily to look up `$ref`s
 | |
|  * @param [formData] - The current formData, if any, to assist retrieving a schema
 | |
|  * @param [_recurseList=[]] - The list of retrieved schemas currently being recursed, used to prevent infinite recursion
 | |
|  * @returns - The `IdSchema` object for the `schema`
 | |
|  */
 | |
| function toIdSchemaInternal(validator, schema, idPrefix, idSeparator, id, rootSchema, formData, _recurseList = []) {
 | |
|     if (REF_KEY in schema || DEPENDENCIES_KEY in schema || ALL_OF_KEY in schema) {
 | |
|         const _schema = retrieveSchema(validator, schema, rootSchema, formData);
 | |
|         const sameSchemaIndex = _recurseList.findIndex((item) => isEqual_default()(item, _schema));
 | |
|         if (sameSchemaIndex === -1) {
 | |
|             return toIdSchemaInternal(validator, _schema, idPrefix, idSeparator, id, rootSchema, formData, _recurseList.concat(_schema));
 | |
|         }
 | |
|     }
 | |
|     if (ITEMS_KEY in schema && !get_default()(schema, [ITEMS_KEY, REF_KEY])) {
 | |
|         return toIdSchemaInternal(validator, get_default()(schema, ITEMS_KEY), idPrefix, idSeparator, id, rootSchema, formData, _recurseList);
 | |
|     }
 | |
|     const $id = id || idPrefix;
 | |
|     const idSchema = { $id };
 | |
|     if (getSchemaType(schema) === 'object' && PROPERTIES_KEY in schema) {
 | |
|         for (const name in schema.properties) {
 | |
|             const field = get_default()(schema, [PROPERTIES_KEY, name]);
 | |
|             const fieldId = idSchema[ID_KEY] + idSeparator + name;
 | |
|             idSchema[name] = toIdSchemaInternal(validator, isObject(field) ? field : {}, idPrefix, idSeparator, fieldId, rootSchema, 
 | |
|             // It's possible that formData is not an object -- this can happen if an
 | |
|             // array item has just been added, but not populated with data yet
 | |
|             get_default()(formData, [name]), _recurseList);
 | |
|         }
 | |
|     }
 | |
|     return idSchema;
 | |
| }
 | |
| /** Generates an `IdSchema` object for the `schema`, recursively
 | |
|  *
 | |
|  * @param validator - An implementation of the `ValidatorType` interface that will be used when necessary
 | |
|  * @param schema - The schema for which the `IdSchema` is desired
 | |
|  * @param [id] - The base id for the schema
 | |
|  * @param [rootSchema] - The root schema, used to primarily to look up `$ref`s
 | |
|  * @param [formData] - The current formData, if any, to assist retrieving a schema
 | |
|  * @param [idPrefix='root'] - The prefix to use for the id
 | |
|  * @param [idSeparator='_'] - The separator to use for the path segments in the id
 | |
|  * @returns - The `IdSchema` object for the `schema`
 | |
|  */
 | |
| function toIdSchema(validator, schema, id, rootSchema, formData, idPrefix = 'root', idSeparator = '_') {
 | |
|     return toIdSchemaInternal(validator, schema, idPrefix, idSeparator, id, rootSchema, formData);
 | |
| }
 | |
| //# sourceMappingURL=toIdSchema.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/schema/toPathSchema.js
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| /** An internal helper that generates an `PathSchema` object for the `schema`, recursively with protection against
 | |
|  * infinite recursion
 | |
|  *
 | |
|  * @param validator - An implementation of the `ValidatorType` interface that will be used when necessary
 | |
|  * @param schema - The schema for which the `PathSchema` is desired
 | |
|  * @param [name=''] - The base name for the schema
 | |
|  * @param [rootSchema] - The root schema, used to primarily to look up `$ref`s
 | |
|  * @param [formData] - The current formData, if any, to assist retrieving a schema
 | |
|  * @param [_recurseList=[]] - The list of retrieved schemas currently being recursed, used to prevent infinite recursion
 | |
|  * @returns - The `PathSchema` object for the `schema`
 | |
|  */
 | |
| function toPathSchemaInternal(validator, schema, name, rootSchema, formData, _recurseList = []) {
 | |
|     if (REF_KEY in schema || DEPENDENCIES_KEY in schema || ALL_OF_KEY in schema) {
 | |
|         const _schema = retrieveSchema(validator, schema, rootSchema, formData);
 | |
|         const sameSchemaIndex = _recurseList.findIndex((item) => isEqual_default()(item, _schema));
 | |
|         if (sameSchemaIndex === -1) {
 | |
|             return toPathSchemaInternal(validator, _schema, name, rootSchema, formData, _recurseList.concat(_schema));
 | |
|         }
 | |
|     }
 | |
|     let pathSchema = {
 | |
|         [NAME_KEY]: name.replace(/^\./, ''),
 | |
|     };
 | |
|     if (ONE_OF_KEY in schema || ANY_OF_KEY in schema) {
 | |
|         const xxxOf = ONE_OF_KEY in schema ? schema.oneOf : schema.anyOf;
 | |
|         const discriminator = getDiscriminatorFieldFromSchema(schema);
 | |
|         const index = getClosestMatchingOption(validator, rootSchema, formData, xxxOf, 0, discriminator);
 | |
|         const _schema = xxxOf[index];
 | |
|         pathSchema = {
 | |
|             ...pathSchema,
 | |
|             ...toPathSchemaInternal(validator, _schema, name, rootSchema, formData, _recurseList),
 | |
|         };
 | |
|     }
 | |
|     if (ADDITIONAL_PROPERTIES_KEY in schema && schema[ADDITIONAL_PROPERTIES_KEY] !== false) {
 | |
|         set_default()(pathSchema, RJSF_ADDITONAL_PROPERTIES_FLAG, true);
 | |
|     }
 | |
|     if (ITEMS_KEY in schema && Array.isArray(formData)) {
 | |
|         const { items: schemaItems, additionalItems: schemaAdditionalItems } = schema;
 | |
|         if (Array.isArray(schemaItems)) {
 | |
|             formData.forEach((element, i) => {
 | |
|                 if (schemaItems[i]) {
 | |
|                     pathSchema[i] = toPathSchemaInternal(validator, schemaItems[i], `${name}.${i}`, rootSchema, element, _recurseList);
 | |
|                 }
 | |
|                 else if (schemaAdditionalItems) {
 | |
|                     pathSchema[i] = toPathSchemaInternal(validator, schemaAdditionalItems, `${name}.${i}`, rootSchema, element, _recurseList);
 | |
|                 }
 | |
|                 else {
 | |
|                     console.warn(`Unable to generate path schema for "${name}.${i}". No schema defined for it`);
 | |
|                 }
 | |
|             });
 | |
|         }
 | |
|         else {
 | |
|             formData.forEach((element, i) => {
 | |
|                 pathSchema[i] = toPathSchemaInternal(validator, schemaItems, `${name}.${i}`, rootSchema, element, _recurseList);
 | |
|             });
 | |
|         }
 | |
|     }
 | |
|     else if (PROPERTIES_KEY in schema) {
 | |
|         for (const property in schema.properties) {
 | |
|             const field = get_default()(schema, [PROPERTIES_KEY, property]);
 | |
|             pathSchema[property] = toPathSchemaInternal(validator, field, `${name}.${property}`, rootSchema, 
 | |
|             // It's possible that formData is not an object -- this can happen if an
 | |
|             // array item has just been added, but not populated with data yet
 | |
|             get_default()(formData, [property]), _recurseList);
 | |
|         }
 | |
|     }
 | |
|     return pathSchema;
 | |
| }
 | |
| /** Generates an `PathSchema` object for the `schema`, recursively
 | |
|  *
 | |
|  * @param validator - An implementation of the `ValidatorType` interface that will be used when necessary
 | |
|  * @param schema - The schema for which the `PathSchema` is desired
 | |
|  * @param [name=''] - The base name for the schema
 | |
|  * @param [rootSchema] - The root schema, used to primarily to look up `$ref`s
 | |
|  * @param [formData] - The current formData, if any, to assist retrieving a schema
 | |
|  * @returns - The `PathSchema` object for the `schema`
 | |
|  */
 | |
| function toPathSchema(validator, schema, name = '', rootSchema, formData) {
 | |
|     return toPathSchemaInternal(validator, schema, name, rootSchema, formData);
 | |
| }
 | |
| //# sourceMappingURL=toPathSchema.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/schema/index.js
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| //# sourceMappingURL=index.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/createSchemaUtils.js
 | |
| 
 | |
| 
 | |
| /** The `SchemaUtils` class provides a wrapper around the publicly exported APIs in the `utils/schema` directory such
 | |
|  * that one does not have to explicitly pass the `validator`, `rootSchema`, or `experimental_defaultFormStateBehavior` to each method.
 | |
|  * Since these generally do not change across a `Form`, this allows for providing a simplified set of APIs to the
 | |
|  * `@rjsf/core` components and the various themes as well. This class implements the `SchemaUtilsType` interface.
 | |
|  */
 | |
| class SchemaUtils {
 | |
|     /** Constructs the `SchemaUtils` instance with the given `validator` and `rootSchema` stored as instance variables
 | |
|      *
 | |
|      * @param validator - An implementation of the `ValidatorType` interface that will be forwarded to all the APIs
 | |
|      * @param rootSchema - The root schema that will be forwarded to all the APIs
 | |
|      * @param experimental_defaultFormStateBehavior - Configuration flags to allow users to override default form state behavior
 | |
|      */
 | |
|     constructor(validator, rootSchema, experimental_defaultFormStateBehavior) {
 | |
|         this.rootSchema = rootSchema;
 | |
|         this.validator = validator;
 | |
|         this.experimental_defaultFormStateBehavior = experimental_defaultFormStateBehavior;
 | |
|     }
 | |
|     /** Returns the `ValidatorType` in the `SchemaUtilsType`
 | |
|      *
 | |
|      * @returns - The `ValidatorType`
 | |
|      */
 | |
|     getValidator() {
 | |
|         return this.validator;
 | |
|     }
 | |
|     /** Determines whether either the `validator` and `rootSchema` differ from the ones associated with this instance of
 | |
|      * the `SchemaUtilsType`. If either `validator` or `rootSchema` are falsy, then return false to prevent the creation
 | |
|      * of a new `SchemaUtilsType` with incomplete properties.
 | |
|      *
 | |
|      * @param validator - An implementation of the `ValidatorType` interface that will be compared against the current one
 | |
|      * @param rootSchema - The root schema that will be compared against the current one
 | |
|      * @param [experimental_defaultFormStateBehavior] Optional configuration object, if provided, allows users to override default form state behavior
 | |
|      * @returns - True if the `SchemaUtilsType` differs from the given `validator` or `rootSchema`
 | |
|      */
 | |
|     doesSchemaUtilsDiffer(validator, rootSchema, experimental_defaultFormStateBehavior = {}) {
 | |
|         if (!validator || !rootSchema) {
 | |
|             return false;
 | |
|         }
 | |
|         return (this.validator !== validator ||
 | |
|             !deepEquals(this.rootSchema, rootSchema) ||
 | |
|             !deepEquals(this.experimental_defaultFormStateBehavior, experimental_defaultFormStateBehavior));
 | |
|     }
 | |
|     /** Returns the superset of `formData` that includes the given set updated to include any missing fields that have
 | |
|      * computed to have defaults provided in the `schema`.
 | |
|      *
 | |
|      * @param schema - The schema for which the default state is desired
 | |
|      * @param [formData] - The current formData, if any, onto which to provide any missing defaults
 | |
|      * @param [includeUndefinedValues=false] - Optional flag, if true, cause undefined values to be added as defaults.
 | |
|      *          If "excludeObjectChildren", pass `includeUndefinedValues` as false when computing defaults for any nested
 | |
|      *          object properties.
 | |
|      * @returns - The resulting `formData` with all the defaults provided
 | |
|      */
 | |
|     getDefaultFormState(schema, formData, includeUndefinedValues = false) {
 | |
|         return getDefaultFormState(this.validator, schema, formData, this.rootSchema, includeUndefinedValues, this.experimental_defaultFormStateBehavior);
 | |
|     }
 | |
|     /** Determines whether the combination of `schema` and `uiSchema` properties indicates that the label for the `schema`
 | |
|      * should be displayed in a UI.
 | |
|      *
 | |
|      * @param schema - The schema for which the display label flag is desired
 | |
|      * @param [uiSchema] - The UI schema from which to derive potentially displayable information
 | |
|      * @param [globalOptions={}] - The optional Global UI Schema from which to get any fallback `xxx` options
 | |
|      * @returns - True if the label should be displayed or false if it should not
 | |
|      */
 | |
|     getDisplayLabel(schema, uiSchema, globalOptions) {
 | |
|         return getDisplayLabel(this.validator, schema, uiSchema, this.rootSchema, globalOptions);
 | |
|     }
 | |
|     /** Determines which of the given `options` provided most closely matches the `formData`.
 | |
|      * Returns the index of the option that is valid and is the closest match, or 0 if there is no match.
 | |
|      *
 | |
|      * The closest match is determined using the number of matching properties, and more heavily favors options with
 | |
|      * matching readOnly, default, or const values.
 | |
|      *
 | |
|      * @param formData - The form data associated with the schema
 | |
|      * @param options - The list of options that can be selected from
 | |
|      * @param [selectedOption] - The index of the currently selected option, defaulted to -1 if not specified
 | |
|      * @param [discriminatorField] - The optional name of the field within the options object whose value is used to
 | |
|      *          determine which option is selected
 | |
|      * @returns - The index of the option that is the closest match to the `formData` or the `selectedOption` if no match
 | |
|      */
 | |
|     getClosestMatchingOption(formData, options, selectedOption, discriminatorField) {
 | |
|         return getClosestMatchingOption(this.validator, this.rootSchema, formData, options, selectedOption, discriminatorField);
 | |
|     }
 | |
|     /** Given the `formData` and list of `options`, attempts to find the index of the first option that matches the data.
 | |
|      * Always returns the first option if there is nothing that matches.
 | |
|      *
 | |
|      * @param formData - The current formData, if any, used to figure out a match
 | |
|      * @param options - The list of options to find a matching options from
 | |
|      * @param [discriminatorField] - The optional name of the field within the options object whose value is used to
 | |
|      *          determine which option is selected
 | |
|      * @returns - The firstindex of the matched option or 0 if none is available
 | |
|      */
 | |
|     getFirstMatchingOption(formData, options, discriminatorField) {
 | |
|         return getFirstMatchingOption(this.validator, formData, options, this.rootSchema, discriminatorField);
 | |
|     }
 | |
|     /** Given the `formData` and list of `options`, attempts to find the index of the option that best matches the data.
 | |
|      * Deprecated, use `getFirstMatchingOption()` instead.
 | |
|      *
 | |
|      * @param formData - The current formData, if any, onto which to provide any missing defaults
 | |
|      * @param options - The list of options to find a matching options from
 | |
|      * @param [discriminatorField] - The optional name of the field within the options object whose value is used to
 | |
|      *          determine which option is selected
 | |
|      * @returns - The index of the matched option or 0 if none is available
 | |
|      * @deprecated
 | |
|      */
 | |
|     getMatchingOption(formData, options, discriminatorField) {
 | |
|         return getMatchingOption(this.validator, formData, options, this.rootSchema, discriminatorField);
 | |
|     }
 | |
|     /** Checks to see if the `schema` and `uiSchema` combination represents an array of files
 | |
|      *
 | |
|      * @param schema - The schema for which check for array of files flag is desired
 | |
|      * @param [uiSchema] - The UI schema from which to check the widget
 | |
|      * @returns - True if schema/uiSchema contains an array of files, otherwise false
 | |
|      */
 | |
|     isFilesArray(schema, uiSchema) {
 | |
|         return isFilesArray(this.validator, schema, uiSchema, this.rootSchema);
 | |
|     }
 | |
|     /** Checks to see if the `schema` combination represents a multi-select
 | |
|      *
 | |
|      * @param schema - The schema for which check for a multi-select flag is desired
 | |
|      * @returns - True if schema contains a multi-select, otherwise false
 | |
|      */
 | |
|     isMultiSelect(schema) {
 | |
|         return isMultiSelect(this.validator, schema, this.rootSchema);
 | |
|     }
 | |
|     /** Checks to see if the `schema` combination represents a select
 | |
|      *
 | |
|      * @param schema - The schema for which check for a select flag is desired
 | |
|      * @returns - True if schema contains a select, otherwise false
 | |
|      */
 | |
|     isSelect(schema) {
 | |
|         return isSelect(this.validator, schema, this.rootSchema);
 | |
|     }
 | |
|     /** Merges the errors in `additionalErrorSchema` into the existing `validationData` by combining the hierarchies in
 | |
|      * the two `ErrorSchema`s and then appending the error list from the `additionalErrorSchema` obtained by calling
 | |
|      * `getValidator().toErrorList()` onto the `errors` in the `validationData`. If no `additionalErrorSchema` is passed,
 | |
|      * then `validationData` is returned.
 | |
|      *
 | |
|      * @param validationData - The current `ValidationData` into which to merge the additional errors
 | |
|      * @param [additionalErrorSchema] - The additional set of errors
 | |
|      * @returns - The `validationData` with the additional errors from `additionalErrorSchema` merged into it, if provided.
 | |
|      * @deprecated - Use the `validationDataMerge()` function exported from `@rjsf/utils` instead. This function will be
 | |
|      *        removed in the next major release.
 | |
|      */
 | |
|     mergeValidationData(validationData, additionalErrorSchema) {
 | |
|         return mergeValidationData(this.validator, validationData, additionalErrorSchema);
 | |
|     }
 | |
|     /** Retrieves an expanded schema that has had all of its conditions, additional properties, references and
 | |
|      * dependencies resolved and merged into the `schema` given a `rawFormData` that is used to do the potentially
 | |
|      * recursive resolution.
 | |
|      *
 | |
|      * @param schema - The schema for which retrieving a schema is desired
 | |
|      * @param [rawFormData] - The current formData, if any, to assist retrieving a schema
 | |
|      * @returns - The schema having its conditions, additional properties, references and dependencies resolved
 | |
|      */
 | |
|     retrieveSchema(schema, rawFormData) {
 | |
|         return retrieveSchema(this.validator, schema, this.rootSchema, rawFormData);
 | |
|     }
 | |
|     /** Sanitize the `data` associated with the `oldSchema` so it is considered appropriate for the `newSchema`. If the
 | |
|      * new schema does not contain any properties, then `undefined` is returned to clear all the form data. Due to the
 | |
|      * nature of schemas, this sanitization happens recursively for nested objects of data. Also, any properties in the
 | |
|      * old schemas that are non-existent in the new schema are set to `undefined`.
 | |
|      *
 | |
|      * @param [newSchema] - The new schema for which the data is being sanitized
 | |
|      * @param [oldSchema] - The old schema from which the data originated
 | |
|      * @param [data={}] - The form data associated with the schema, defaulting to an empty object when undefined
 | |
|      * @returns - The new form data, with all the fields uniquely associated with the old schema set
 | |
|      *      to `undefined`. Will return `undefined` if the new schema is not an object containing properties.
 | |
|      */
 | |
|     sanitizeDataForNewSchema(newSchema, oldSchema, data) {
 | |
|         return sanitizeDataForNewSchema(this.validator, this.rootSchema, newSchema, oldSchema, data);
 | |
|     }
 | |
|     /** Generates an `IdSchema` object for the `schema`, recursively
 | |
|      *
 | |
|      * @param schema - The schema for which the display label flag is desired
 | |
|      * @param [id] - The base id for the schema
 | |
|      * @param [formData] - The current formData, if any, onto which to provide any missing defaults
 | |
|      * @param [idPrefix='root'] - The prefix to use for the id
 | |
|      * @param [idSeparator='_'] - The separator to use for the path segments in the id
 | |
|      * @returns - The `IdSchema` object for the `schema`
 | |
|      */
 | |
|     toIdSchema(schema, id, formData, idPrefix = 'root', idSeparator = '_') {
 | |
|         return toIdSchema(this.validator, schema, id, this.rootSchema, formData, idPrefix, idSeparator);
 | |
|     }
 | |
|     /** Generates an `PathSchema` object for the `schema`, recursively
 | |
|      *
 | |
|      * @param schema - The schema for which the display label flag is desired
 | |
|      * @param [name] - The base name for the schema
 | |
|      * @param [formData] - The current formData, if any, onto which to provide any missing defaults
 | |
|      * @returns - The `PathSchema` object for the `schema`
 | |
|      */
 | |
|     toPathSchema(schema, name, formData) {
 | |
|         return toPathSchema(this.validator, schema, name, this.rootSchema, formData);
 | |
|     }
 | |
| }
 | |
| /** Creates a `SchemaUtilsType` interface that is based around the given `validator` and `rootSchema` parameters. The
 | |
|  * resulting interface implementation will forward the `validator` and `rootSchema` to all the wrapped APIs.
 | |
|  *
 | |
|  * @param validator - an implementation of the `ValidatorType` interface that will be forwarded to all the APIs
 | |
|  * @param rootSchema - The root schema that will be forwarded to all the APIs
 | |
|  * @param [experimental_defaultFormStateBehavior] Optional configuration object, if provided, allows users to override default form state behavior
 | |
|  * @returns - An implementation of a `SchemaUtilsType` interface
 | |
|  */
 | |
| function createSchemaUtils(validator, rootSchema, experimental_defaultFormStateBehavior = {}) {
 | |
|     return new SchemaUtils(validator, rootSchema, experimental_defaultFormStateBehavior);
 | |
| }
 | |
| //# sourceMappingURL=createSchemaUtils.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/dataURItoBlob.js
 | |
| /** Given the `FileReader.readAsDataURL()` based `dataURI` extracts that data into an actual Blob along with the name
 | |
|  * of that Blob if provided in the URL. If no name is provided, then the name falls back to `unknown`.
 | |
|  *
 | |
|  * @param dataURI - The `DataUrl` potentially containing name and raw data to be converted to a Blob
 | |
|  * @returns - an object containing a Blob and its name, extracted from the URI
 | |
|  */
 | |
| function dataURItoBlob(dataURI) {
 | |
|     // Split metadata from data
 | |
|     const splitted = dataURI.split(',');
 | |
|     // Split params
 | |
|     const params = splitted[0].split(';');
 | |
|     // Get mime-type from params
 | |
|     const type = params[0].replace('data:', '');
 | |
|     // Filter the name property from params
 | |
|     const properties = params.filter((param) => {
 | |
|         return param.split('=')[0] === 'name';
 | |
|     });
 | |
|     // Look for the name and use unknown if no name property.
 | |
|     let name;
 | |
|     if (properties.length !== 1) {
 | |
|         name = 'unknown';
 | |
|     }
 | |
|     else {
 | |
|         // Because we filtered out the other property,
 | |
|         // we only have the name case here, which we decode to make it human-readable
 | |
|         name = decodeURI(properties[0].split('=')[1]);
 | |
|     }
 | |
|     // Built the Uint8Array Blob parameter from the base64 string.
 | |
|     try {
 | |
|         const binary = atob(splitted[1]);
 | |
|         const array = [];
 | |
|         for (let i = 0; i < binary.length; i++) {
 | |
|             array.push(binary.charCodeAt(i));
 | |
|         }
 | |
|         // Create the blob object
 | |
|         const blob = new window.Blob([new Uint8Array(array)], { type });
 | |
|         return { blob, name };
 | |
|     }
 | |
|     catch (error) {
 | |
|         return { blob: { size: 0, type: error.message }, name: dataURI };
 | |
|     }
 | |
| }
 | |
| //# sourceMappingURL=dataURItoBlob.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/replaceStringParameters.js
 | |
| /** Potentially substitutes all replaceable parameters with the associated value(s) from the `params` if available. When
 | |
|  * a `params` array is provided, each value in the array is used to replace any of the replaceable parameters in the
 | |
|  * `inputString` using the `%1`, `%2`, etc. replacement specifiers.
 | |
|  *
 | |
|  * @param inputString - The string which will be potentially updated with replacement parameters
 | |
|  * @param params - The optional list of replaceable parameter values to substitute into the english string
 | |
|  * @returns - The updated string with any replacement specifiers replaced
 | |
|  */
 | |
| function replaceStringParameters(inputString, params) {
 | |
|     let output = inputString;
 | |
|     if (Array.isArray(params)) {
 | |
|         const parts = output.split(/(%\d)/);
 | |
|         params.forEach((param, index) => {
 | |
|             const partIndex = parts.findIndex((part) => part === `%${index + 1}`);
 | |
|             if (partIndex >= 0) {
 | |
|                 parts[partIndex] = param;
 | |
|             }
 | |
|         });
 | |
|         output = parts.join('');
 | |
|     }
 | |
|     return output;
 | |
| }
 | |
| //# sourceMappingURL=replaceStringParameters.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/englishStringTranslator.js
 | |
| 
 | |
| /** Translates a `TranslatableString` value `stringToTranslate` into english. When a `params` array is provided, each
 | |
|  * value in the array is used to replace any of the replaceable parameters in the `stringToTranslate` using the `%1`,
 | |
|  * `%2`, etc. replacement specifiers.
 | |
|  *
 | |
|  * @param stringToTranslate - The `TranslatableString` value to convert to english
 | |
|  * @param params - The optional list of replaceable parameter values to substitute into the english string
 | |
|  * @returns - The `stringToTranslate` itself with any replaceable parameter values substituted
 | |
|  */
 | |
| function englishStringTranslator(stringToTranslate, params) {
 | |
|     return replaceStringParameters(stringToTranslate, params);
 | |
| }
 | |
| //# sourceMappingURL=englishStringTranslator.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/enumOptionsValueForIndex.js
 | |
| /** Returns the value(s) from `allEnumOptions` at the index(es) provided by `valueIndex`. If `valueIndex` is not an
 | |
|  * array AND the index is not valid for `allEnumOptions`, `emptyValue` is returned. If `valueIndex` is an array, AND it
 | |
|  * contains an invalid index, the returned array will have the resulting undefined values filtered out, leaving only
 | |
|  * valid values or in the worst case, an empty array.
 | |
|  *
 | |
|  * @param valueIndex - The index(es) of the value(s) that should be returned
 | |
|  * @param [allEnumOptions=[]] - The list of all the known enumOptions
 | |
|  * @param [emptyValue] - The value to return when the non-array `valueIndex` does not refer to a real option
 | |
|  * @returns - The single or list of values specified by the single or list of indexes if they are valid. Otherwise,
 | |
|  *        `emptyValue` or an empty list.
 | |
|  */
 | |
| function enumOptionsValueForIndex(valueIndex, allEnumOptions = [], emptyValue) {
 | |
|     if (Array.isArray(valueIndex)) {
 | |
|         return valueIndex.map((index) => enumOptionsValueForIndex(index, allEnumOptions)).filter((val) => val);
 | |
|     }
 | |
|     // So Number(null) and Number('') both return 0, so use emptyValue for those two values
 | |
|     const index = valueIndex === '' || valueIndex === null ? -1 : Number(valueIndex);
 | |
|     const option = allEnumOptions[index];
 | |
|     return option ? option.value : emptyValue;
 | |
| }
 | |
| //# sourceMappingURL=enumOptionsValueForIndex.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/enumOptionsDeselectValue.js
 | |
| 
 | |
| 
 | |
| /** Removes the enum option value at the `valueIndex` from the currently `selected` (list of) value(s). If `selected` is
 | |
|  * a list, then that list is updated to remove the enum option value with the `valueIndex` in `allEnumOptions`. If it is
 | |
|  * a single value, then if the enum option value with the `valueIndex` in `allEnumOptions` matches `selected`, undefined
 | |
|  * is returned, otherwise the `selected` value is returned.
 | |
|  *
 | |
|  * @param valueIndex - The index of the value to be removed from the selected list or single value
 | |
|  * @param selected - The current (list of) selected value(s)
 | |
|  * @param [allEnumOptions=[]] - The list of all the known enumOptions
 | |
|  * @returns - The updated `selected` with the enum option value at `valueIndex` in `allEnumOptions` removed from it,
 | |
|  *        unless `selected` is a single value. In that case, if the `valueIndex` value matches `selected`, returns
 | |
|  *        undefined, otherwise `selected`.
 | |
|  */
 | |
| function enumOptionsDeselectValue(valueIndex, selected, allEnumOptions = []) {
 | |
|     const value = enumOptionsValueForIndex(valueIndex, allEnumOptions);
 | |
|     if (Array.isArray(selected)) {
 | |
|         return selected.filter((v) => !isEqual_default()(v, value));
 | |
|     }
 | |
|     return isEqual_default()(value, selected) ? undefined : selected;
 | |
| }
 | |
| //# sourceMappingURL=enumOptionsDeselectValue.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/enumOptionsIsSelected.js
 | |
| 
 | |
| /** Determines whether the given `value` is (one of) the `selected` value(s).
 | |
|  *
 | |
|  * @param value - The value being checked to see if it is selected
 | |
|  * @param selected - The current selected value or list of values
 | |
|  * @returns - true if the `value` is one of the `selected` ones, false otherwise
 | |
|  */
 | |
| function enumOptionsIsSelected(value, selected) {
 | |
|     if (Array.isArray(selected)) {
 | |
|         return selected.some((sel) => isEqual_default()(sel, value));
 | |
|     }
 | |
|     return isEqual_default()(selected, value);
 | |
| }
 | |
| //# sourceMappingURL=enumOptionsIsSelected.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/enumOptionsIndexForValue.js
 | |
| 
 | |
| /** Returns the index(es) of the options in `allEnumOptions` whose value(s) match the ones in `value`. All the
 | |
|  * `enumOptions` are filtered based on whether they are a "selected" `value` and the index of each selected one is then
 | |
|  * stored in an array. If `multiple` is true, that array is returned, otherwise the first element in the array is
 | |
|  * returned.
 | |
|  *
 | |
|  * @param value - The single value or list of values for which indexes are desired
 | |
|  * @param [allEnumOptions=[]] - The list of all the known enumOptions
 | |
|  * @param [multiple=false] - Optional flag, if true will return a list of index, otherwise a single one
 | |
|  * @returns - A single string index for the first `value` in `allEnumOptions`, if not `multiple`. Otherwise, the list
 | |
|  *        of indexes for (each of) the value(s) in `value`.
 | |
|  */
 | |
| function enumOptionsIndexForValue(value, allEnumOptions = [], multiple = false) {
 | |
|     const selectedIndexes = allEnumOptions
 | |
|         .map((opt, index) => (enumOptionsIsSelected(opt.value, value) ? String(index) : undefined))
 | |
|         .filter((opt) => typeof opt !== 'undefined');
 | |
|     if (!multiple) {
 | |
|         return selectedIndexes[0];
 | |
|     }
 | |
|     return selectedIndexes;
 | |
| }
 | |
| //# sourceMappingURL=enumOptionsIndexForValue.js.map
 | |
| // EXTERNAL MODULE: ../node_modules/lodash/isNil.js
 | |
| var isNil = __webpack_require__(30644);
 | |
| var isNil_default = /*#__PURE__*/__webpack_require__.n(isNil);
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/enumOptionsSelectValue.js
 | |
| 
 | |
| 
 | |
| /** Add the enum option value at the `valueIndex` to the list of `selected` values in the proper order as defined by
 | |
|  * `allEnumOptions`
 | |
|  *
 | |
|  * @param valueIndex - The index of the value that should be selected
 | |
|  * @param selected - The current list of selected values
 | |
|  * @param [allEnumOptions=[]] - The list of all the known enumOptions
 | |
|  * @returns - The updated list of selected enum values with enum value at the `valueIndex` added to it
 | |
|  */
 | |
| function enumOptionsSelectValue(valueIndex, selected, allEnumOptions = []) {
 | |
|     const value = enumOptionsValueForIndex(valueIndex, allEnumOptions);
 | |
|     if (!isNil_default()(value)) {
 | |
|         const index = allEnumOptions.findIndex((opt) => value === opt.value);
 | |
|         const all = allEnumOptions.map(({ value: val }) => val);
 | |
|         const updated = selected.slice(0, index).concat(value, selected.slice(index));
 | |
|         // As inserting values at predefined index positions doesn't work with empty
 | |
|         // arrays, we need to reorder the updated selection to match the initial order
 | |
|         return updated.sort((a, b) => Number(all.indexOf(a) > all.indexOf(b)));
 | |
|     }
 | |
|     return selected;
 | |
| }
 | |
| //# sourceMappingURL=enumOptionsSelectValue.js.map
 | |
| // EXTERNAL MODULE: ../node_modules/lodash/cloneDeep.js
 | |
| var cloneDeep = __webpack_require__(30454);
 | |
| var cloneDeep_default = /*#__PURE__*/__webpack_require__.n(cloneDeep);
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/ErrorSchemaBuilder.js
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| /** The `ErrorSchemaBuilder<T>` is used to build an `ErrorSchema<T>` since the definition of the `ErrorSchema` type is
 | |
|  * designed for reading information rather than writing it. Use this class to add, replace or clear errors in an error
 | |
|  * schema by using either dotted path or an array of path names. Once you are done building the `ErrorSchema`, you can
 | |
|  * get the result and/or reset all the errors back to an initial set and start again.
 | |
|  */
 | |
| class ErrorSchemaBuilder {
 | |
|     /** Construct an `ErrorSchemaBuilder` with an optional initial set of errors in an `ErrorSchema`.
 | |
|      *
 | |
|      * @param [initialSchema] - The optional set of initial errors, that will be cloned into the class
 | |
|      */
 | |
|     constructor(initialSchema) {
 | |
|         /** The error schema being built
 | |
|          *
 | |
|          * @private
 | |
|          */
 | |
|         this.errorSchema = {};
 | |
|         this.resetAllErrors(initialSchema);
 | |
|     }
 | |
|     /** Returns the `ErrorSchema` that has been updated by the methods of the `ErrorSchemaBuilder`
 | |
|      */
 | |
|     get ErrorSchema() {
 | |
|         return this.errorSchema;
 | |
|     }
 | |
|     /** Will get an existing `ErrorSchema` at the specified `pathOfError` or create and return one.
 | |
|      *
 | |
|      * @param [pathOfError] - The optional path into the `ErrorSchema` at which to add the error(s)
 | |
|      * @returns - The error block for the given `pathOfError` or the root if not provided
 | |
|      * @private
 | |
|      */
 | |
|     getOrCreateErrorBlock(pathOfError) {
 | |
|         const hasPath = (Array.isArray(pathOfError) && pathOfError.length > 0) || typeof pathOfError === 'string';
 | |
|         let errorBlock = hasPath ? get_default()(this.errorSchema, pathOfError) : this.errorSchema;
 | |
|         if (!errorBlock && pathOfError) {
 | |
|             errorBlock = {};
 | |
|             set_default()(this.errorSchema, pathOfError, errorBlock);
 | |
|         }
 | |
|         return errorBlock;
 | |
|     }
 | |
|     /** Resets all errors in the `ErrorSchemaBuilder` back to the `initialSchema` if provided, otherwise an empty set.
 | |
|      *
 | |
|      * @param [initialSchema] - The optional set of initial errors, that will be cloned into the class
 | |
|      * @returns - The `ErrorSchemaBuilder` object for chaining purposes
 | |
|      */
 | |
|     resetAllErrors(initialSchema) {
 | |
|         this.errorSchema = initialSchema ? cloneDeep_default()(initialSchema) : {};
 | |
|         return this;
 | |
|     }
 | |
|     /** Adds the `errorOrList` to the list of errors in the `ErrorSchema` at either the root level or the location within
 | |
|      * the schema described by the `pathOfError`. For more information about how to specify the path see the
 | |
|      * [eslint lodash plugin docs](https://github.com/wix/eslint-plugin-lodash/blob/master/docs/rules/path-style.md).
 | |
|      *
 | |
|      * @param errorOrList - The error or list of errors to add into the `ErrorSchema`
 | |
|      * @param [pathOfError] - The optional path into the `ErrorSchema` at which to add the error(s)
 | |
|      * @returns - The `ErrorSchemaBuilder` object for chaining purposes
 | |
|      */
 | |
|     addErrors(errorOrList, pathOfError) {
 | |
|         const errorBlock = this.getOrCreateErrorBlock(pathOfError);
 | |
|         let errorsList = get_default()(errorBlock, ERRORS_KEY);
 | |
|         if (!Array.isArray(errorsList)) {
 | |
|             errorsList = [];
 | |
|             errorBlock[ERRORS_KEY] = errorsList;
 | |
|         }
 | |
|         if (Array.isArray(errorOrList)) {
 | |
|             errorsList.push(...errorOrList);
 | |
|         }
 | |
|         else {
 | |
|             errorsList.push(errorOrList);
 | |
|         }
 | |
|         return this;
 | |
|     }
 | |
|     /** Sets/replaces the `errorOrList` as the error(s) in the `ErrorSchema` at either the root level or the location
 | |
|      * within the schema described by the `pathOfError`. For more information about how to specify the path see the
 | |
|      * [eslint lodash plugin docs](https://github.com/wix/eslint-plugin-lodash/blob/master/docs/rules/path-style.md).
 | |
|      *
 | |
|      * @param errorOrList - The error or list of errors to set into the `ErrorSchema`
 | |
|      * @param [pathOfError] - The optional path into the `ErrorSchema` at which to set the error(s)
 | |
|      * @returns - The `ErrorSchemaBuilder` object for chaining purposes
 | |
|      */
 | |
|     setErrors(errorOrList, pathOfError) {
 | |
|         const errorBlock = this.getOrCreateErrorBlock(pathOfError);
 | |
|         // Effectively clone the array being given to prevent accidental outside manipulation of the given list
 | |
|         const listToAdd = Array.isArray(errorOrList) ? [...errorOrList] : [errorOrList];
 | |
|         set_default()(errorBlock, ERRORS_KEY, listToAdd);
 | |
|         return this;
 | |
|     }
 | |
|     /** Clears the error(s) in the `ErrorSchema` at either the root level or the location within the schema described by
 | |
|      * the `pathOfError`. For more information about how to specify the path see the
 | |
|      * [eslint lodash plugin docs](https://github.com/wix/eslint-plugin-lodash/blob/master/docs/rules/path-style.md).
 | |
|      *
 | |
|      * @param [pathOfError] - The optional path into the `ErrorSchema` at which to clear the error(s)
 | |
|      * @returns - The `ErrorSchemaBuilder` object for chaining purposes
 | |
|      */
 | |
|     clearErrors(pathOfError) {
 | |
|         const errorBlock = this.getOrCreateErrorBlock(pathOfError);
 | |
|         set_default()(errorBlock, ERRORS_KEY, []);
 | |
|         return this;
 | |
|     }
 | |
| }
 | |
| //# sourceMappingURL=ErrorSchemaBuilder.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/getDateElementProps.js
 | |
| /** Given date & time information with optional yearRange & format, returns props for DateElement
 | |
|  *
 | |
|  * @param date - Object containing date with optional time information
 | |
|  * @param time - Determines whether to include time or not
 | |
|  * @param [yearRange=[1900, new Date().getFullYear() + 2]] - Controls the list of years to be displayed
 | |
|  * @param [format='YMD'] - Controls the order in which day, month and year input element will be displayed
 | |
|  * @returns Array of props for DateElement
 | |
|  */
 | |
| function getDateElementProps(date, time, yearRange = [1900, new Date().getFullYear() + 2], format = 'YMD') {
 | |
|     const { day, month, year, hour, minute, second } = date;
 | |
|     const dayObj = { type: 'day', range: [1, 31], value: day };
 | |
|     const monthObj = { type: 'month', range: [1, 12], value: month };
 | |
|     const yearObj = { type: 'year', range: yearRange, value: year };
 | |
|     const dateElementProp = [];
 | |
|     switch (format) {
 | |
|         case 'MDY':
 | |
|             dateElementProp.push(monthObj, dayObj, yearObj);
 | |
|             break;
 | |
|         case 'DMY':
 | |
|             dateElementProp.push(dayObj, monthObj, yearObj);
 | |
|             break;
 | |
|         case 'YMD':
 | |
|         default:
 | |
|             dateElementProp.push(yearObj, monthObj, dayObj);
 | |
|     }
 | |
|     if (time) {
 | |
|         dateElementProp.push({ type: 'hour', range: [0, 23], value: hour }, { type: 'minute', range: [0, 59], value: minute }, { type: 'second', range: [0, 59], value: second });
 | |
|     }
 | |
|     return dateElementProp;
 | |
| }
 | |
| //# sourceMappingURL=getDateElementProps.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/rangeSpec.js
 | |
| /** Extracts the range spec information `{ step?: number, min?: number, max?: number }` that can be spread onto an HTML
 | |
|  * input from the range analog in the schema `{ multipleOf?: number, minimum?: number, maximum?: number }`.
 | |
|  *
 | |
|  * @param schema - The schema from which to extract the range spec
 | |
|  * @returns - A range specification from the schema
 | |
|  */
 | |
| function rangeSpec(schema) {
 | |
|     const spec = {};
 | |
|     if (schema.multipleOf) {
 | |
|         spec.step = schema.multipleOf;
 | |
|     }
 | |
|     if (schema.minimum || schema.minimum === 0) {
 | |
|         spec.min = schema.minimum;
 | |
|     }
 | |
|     if (schema.maximum || schema.maximum === 0) {
 | |
|         spec.max = schema.maximum;
 | |
|     }
 | |
|     return spec;
 | |
| }
 | |
| //# sourceMappingURL=rangeSpec.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/getInputProps.js
 | |
| 
 | |
| /** Using the `schema`, `defaultType` and `options`, extract out the props for the <input> element that make sense.
 | |
|  *
 | |
|  * @param schema - The schema for the field provided by the widget
 | |
|  * @param [defaultType] - The default type, if any, for the field provided by the widget
 | |
|  * @param [options={}] - The UI Options for the field provided by the widget
 | |
|  * @param [autoDefaultStepAny=true] - Determines whether to auto-default step=any when the type is number and no step
 | |
|  * @returns - The extracted `InputPropsType` object
 | |
|  */
 | |
| function getInputProps(schema, defaultType, options = {}, autoDefaultStepAny = true) {
 | |
|     const inputProps = {
 | |
|         type: defaultType || 'text',
 | |
|         ...rangeSpec(schema),
 | |
|     };
 | |
|     // If options.inputType is set use that as the input type
 | |
|     if (options.inputType) {
 | |
|         inputProps.type = options.inputType;
 | |
|     }
 | |
|     else if (!defaultType) {
 | |
|         // If the schema is of type number or integer, set the input type to number
 | |
|         if (schema.type === 'number') {
 | |
|             inputProps.type = 'number';
 | |
|             // Only add step if one isn't already defined and we are auto-defaulting the "any" step
 | |
|             if (autoDefaultStepAny && inputProps.step === undefined) {
 | |
|                 // Setting step to 'any' fixes a bug in Safari where decimals are not
 | |
|                 // allowed in number inputs
 | |
|                 inputProps.step = 'any';
 | |
|             }
 | |
|         }
 | |
|         else if (schema.type === 'integer') {
 | |
|             inputProps.type = 'number';
 | |
|             // Only add step if one isn't already defined
 | |
|             if (inputProps.step === undefined) {
 | |
|                 // Since this is integer, you always want to step up or down in multiples of 1
 | |
|                 inputProps.step = 1;
 | |
|             }
 | |
|         }
 | |
|     }
 | |
|     if (options.autocomplete) {
 | |
|         inputProps.autoComplete = options.autocomplete;
 | |
|     }
 | |
|     return inputProps;
 | |
| }
 | |
| //# sourceMappingURL=getInputProps.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/getSubmitButtonOptions.js
 | |
| 
 | |
| 
 | |
| /** The default submit button options, exported for testing purposes
 | |
|  */
 | |
| const DEFAULT_OPTIONS = {
 | |
|     props: {
 | |
|         disabled: false,
 | |
|     },
 | |
|     submitText: 'Submit',
 | |
|     norender: false,
 | |
| };
 | |
| /** Extracts any `ui:submitButtonOptions` from the `uiSchema` and merges them onto the `DEFAULT_OPTIONS`
 | |
|  *
 | |
|  * @param [uiSchema={}] - the UI Schema from which to extract submit button props
 | |
|  * @returns - The merging of the `DEFAULT_OPTIONS` with any custom ones
 | |
|  */
 | |
| function getSubmitButtonOptions(uiSchema = {}) {
 | |
|     const uiOptions = getUiOptions(uiSchema);
 | |
|     if (uiOptions && uiOptions[SUBMIT_BTN_OPTIONS_KEY]) {
 | |
|         const options = uiOptions[SUBMIT_BTN_OPTIONS_KEY];
 | |
|         return { ...DEFAULT_OPTIONS, ...options };
 | |
|     }
 | |
|     return DEFAULT_OPTIONS;
 | |
| }
 | |
| //# sourceMappingURL=getSubmitButtonOptions.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/getTemplate.js
 | |
| /** Returns the template with the given `name` from either the `uiSchema` if it is defined or from the `registry`
 | |
|  * otherwise. NOTE, since `ButtonTemplates` are not overridden in `uiSchema` only those in the `registry` are returned.
 | |
|  *
 | |
|  * @param name - The name of the template to fetch, restricted to the keys of `TemplatesType`
 | |
|  * @param registry - The `Registry` from which to read the template
 | |
|  * @param [uiOptions={}] - The `UIOptionsType` from which to read an alternate template
 | |
|  * @returns - The template from either the `uiSchema` or `registry` for the `name`
 | |
|  */
 | |
| function getTemplate(name, registry, uiOptions = {}) {
 | |
|     const { templates } = registry;
 | |
|     if (name === 'ButtonTemplates') {
 | |
|         return templates[name];
 | |
|     }
 | |
|     return (
 | |
|     // Evaluating uiOptions[name] results in TS2590: Expression produces a union type that is too complex to represent
 | |
|     // To avoid that, we cast uiOptions to `any` before accessing the name field
 | |
|     uiOptions[name] || templates[name]);
 | |
| }
 | |
| //# sourceMappingURL=getTemplate.js.map
 | |
| // EXTERNAL MODULE: ../node_modules/react/jsx-runtime.js
 | |
| var jsx_runtime = __webpack_require__(24246);
 | |
| // EXTERNAL MODULE: consume shared module (default) react@~18.2.0 (singleton) (fallback: ../node_modules/react/index.js)
 | |
| var index_js_ = __webpack_require__(78156);
 | |
| // EXTERNAL MODULE: ../node_modules/react-is/index.js
 | |
| var react_is = __webpack_require__(19185);
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/getWidget.js
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| /** The map of schema types to widget type to widget name
 | |
|  */
 | |
| const widgetMap = {
 | |
|     boolean: {
 | |
|         checkbox: 'CheckboxWidget',
 | |
|         radio: 'RadioWidget',
 | |
|         select: 'SelectWidget',
 | |
|         hidden: 'HiddenWidget',
 | |
|     },
 | |
|     string: {
 | |
|         text: 'TextWidget',
 | |
|         password: 'PasswordWidget',
 | |
|         email: 'EmailWidget',
 | |
|         hostname: 'TextWidget',
 | |
|         ipv4: 'TextWidget',
 | |
|         ipv6: 'TextWidget',
 | |
|         uri: 'URLWidget',
 | |
|         'data-url': 'FileWidget',
 | |
|         radio: 'RadioWidget',
 | |
|         select: 'SelectWidget',
 | |
|         textarea: 'TextareaWidget',
 | |
|         hidden: 'HiddenWidget',
 | |
|         date: 'DateWidget',
 | |
|         datetime: 'DateTimeWidget',
 | |
|         'date-time': 'DateTimeWidget',
 | |
|         'alt-date': 'AltDateWidget',
 | |
|         'alt-datetime': 'AltDateTimeWidget',
 | |
|         time: 'TimeWidget',
 | |
|         color: 'ColorWidget',
 | |
|         file: 'FileWidget',
 | |
|     },
 | |
|     number: {
 | |
|         text: 'TextWidget',
 | |
|         select: 'SelectWidget',
 | |
|         updown: 'UpDownWidget',
 | |
|         range: 'RangeWidget',
 | |
|         radio: 'RadioWidget',
 | |
|         hidden: 'HiddenWidget',
 | |
|     },
 | |
|     integer: {
 | |
|         text: 'TextWidget',
 | |
|         select: 'SelectWidget',
 | |
|         updown: 'UpDownWidget',
 | |
|         range: 'RangeWidget',
 | |
|         radio: 'RadioWidget',
 | |
|         hidden: 'HiddenWidget',
 | |
|     },
 | |
|     array: {
 | |
|         select: 'SelectWidget',
 | |
|         checkboxes: 'CheckboxesWidget',
 | |
|         files: 'FileWidget',
 | |
|         hidden: 'HiddenWidget',
 | |
|     },
 | |
| };
 | |
| /** Wraps the given widget with stateless functional component that will merge any `defaultProps.options` with the
 | |
|  * `options` that are provided in the props. It will add the wrapper component as a `MergedWidget` property onto the
 | |
|  * `Widget` so that future attempts to wrap `AWidget` will return the already existing wrapper.
 | |
|  *
 | |
|  * @param AWidget - A widget that will be wrapped or one that is already wrapped
 | |
|  * @returns - The wrapper widget
 | |
|  */
 | |
| function mergeWidgetOptions(AWidget) {
 | |
|     let MergedWidget = get_default()(AWidget, 'MergedWidget');
 | |
|     // cache return value as property of widget for proper react reconciliation
 | |
|     if (!MergedWidget) {
 | |
|         const defaultOptions = (AWidget.defaultProps && AWidget.defaultProps.options) || {};
 | |
|         MergedWidget = ({ options, ...props }) => {
 | |
|             return (0,jsx_runtime.jsx)(AWidget, { options: { ...defaultOptions, ...options }, ...props });
 | |
|         };
 | |
|         set_default()(AWidget, 'MergedWidget', MergedWidget);
 | |
|     }
 | |
|     return MergedWidget;
 | |
| }
 | |
| /** Given a schema representing a field to render and either the name or actual `Widget` implementation, returns the
 | |
|  * React component that is used to render the widget. If the `widget` is already a React component, then it is wrapped
 | |
|  * with a `MergedWidget`. Otherwise an attempt is made to look up the widget inside of the `registeredWidgets` map based
 | |
|  * on the schema type and `widget` name. If no widget component can be found an `Error` is thrown.
 | |
|  *
 | |
|  * @param schema - The schema for the field
 | |
|  * @param [widget] - Either the name of the widget OR a `Widget` implementation to use
 | |
|  * @param [registeredWidgets={}] - A registry of widget name to `Widget` implementation
 | |
|  * @returns - The `Widget` component to use
 | |
|  * @throws - An error if there is no `Widget` component that can be returned
 | |
|  */
 | |
| function getWidget(schema, widget, registeredWidgets = {}) {
 | |
|     const type = getSchemaType(schema);
 | |
|     if (typeof widget === 'function' ||
 | |
|         (widget && react_is.isForwardRef((0,index_js_.createElement)(widget))) ||
 | |
|         react_is.isMemo(widget)) {
 | |
|         return mergeWidgetOptions(widget);
 | |
|     }
 | |
|     if (typeof widget !== 'string') {
 | |
|         throw new Error(`Unsupported widget definition: ${typeof widget}`);
 | |
|     }
 | |
|     if (widget in registeredWidgets) {
 | |
|         const registeredWidget = registeredWidgets[widget];
 | |
|         return getWidget(schema, registeredWidget, registeredWidgets);
 | |
|     }
 | |
|     if (typeof type === 'string') {
 | |
|         if (!(type in widgetMap)) {
 | |
|             throw new Error(`No widget for type '${type}'`);
 | |
|         }
 | |
|         if (widget in widgetMap[type]) {
 | |
|             const registeredWidget = registeredWidgets[widgetMap[type][widget]];
 | |
|             return getWidget(schema, registeredWidget, registeredWidgets);
 | |
|         }
 | |
|     }
 | |
|     throw new Error(`No widget '${widget}' for type '${type}'`);
 | |
| }
 | |
| //# sourceMappingURL=getWidget.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/hashForSchema.js
 | |
| /** JS has no built-in hashing function, so rolling our own
 | |
|  *  based on Java's hashing fn:
 | |
|  *  http://www.java2s.com/example/nodejs-utility-method/string-hash/hashcode-4dc2b.html
 | |
|  *
 | |
|  * @param string - The string for which to get the hash
 | |
|  * @returns - The resulting hash of the string in hex format
 | |
|  */
 | |
| function hashString(string) {
 | |
|     let hash = 0;
 | |
|     for (let i = 0; i < string.length; i += 1) {
 | |
|         const chr = string.charCodeAt(i);
 | |
|         hash = (hash << 5) - hash + chr;
 | |
|         hash = hash & hash; // Convert to 32bit integer
 | |
|     }
 | |
|     return hash.toString(16);
 | |
| }
 | |
| /** Stringifies the schema and returns the hash of the resulting string. Sorts schema fields
 | |
|  * in consistent order before stringify to prevent different hash ids for the same schema.
 | |
|  *
 | |
|  * @param schema - The schema for which the hash is desired
 | |
|  * @returns - The string obtained from the hash of the stringified schema
 | |
|  */
 | |
| function hashForSchema(schema) {
 | |
|     const allKeys = new Set();
 | |
|     // solution source: https://stackoverflow.com/questions/16167581/sort-object-properties-and-json-stringify/53593328#53593328
 | |
|     JSON.stringify(schema, (key, value) => (allKeys.add(key), value));
 | |
|     return hashString(JSON.stringify(schema, Array.from(allKeys).sort()));
 | |
| }
 | |
| //# sourceMappingURL=hashForSchema.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/hasWidget.js
 | |
| 
 | |
| /** Detects whether the `widget` exists for the `schema` with the associated `registryWidgets` and returns true if it
 | |
|  * does, or false if it doesn't.
 | |
|  *
 | |
|  * @param schema - The schema for the field
 | |
|  * @param widget - Either the name of the widget OR a `Widget` implementation to use
 | |
|  * @param [registeredWidgets={}] - A registry of widget name to `Widget` implementation
 | |
|  * @returns - True if the widget exists, false otherwise
 | |
|  */
 | |
| function hasWidget(schema, widget, registeredWidgets = {}) {
 | |
|     try {
 | |
|         getWidget(schema, widget, registeredWidgets);
 | |
|         return true;
 | |
|     }
 | |
|     catch (e) {
 | |
|         const err = e;
 | |
|         if (err.message && (err.message.startsWith('No widget') || err.message.startsWith('Unsupported widget'))) {
 | |
|             return false;
 | |
|         }
 | |
|         throw e;
 | |
|     }
 | |
| }
 | |
| //# sourceMappingURL=hasWidget.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/idGenerators.js
 | |
| 
 | |
| 
 | |
| /** Generates a consistent `id` pattern for a given `id` and a `suffix`
 | |
|  *
 | |
|  * @param id - Either simple string id or an IdSchema from which to extract it
 | |
|  * @param suffix - The suffix to append to the id
 | |
|  */
 | |
| function idGenerator(id, suffix) {
 | |
|     const theId = isString_default()(id) ? id : id[ID_KEY];
 | |
|     return `${theId}__${suffix}`;
 | |
| }
 | |
| /** Return a consistent `id` for the field description element
 | |
|  *
 | |
|  * @param id - Either simple string id or an IdSchema from which to extract it
 | |
|  * @returns - The consistent id for the field description element from the given `id`
 | |
|  */
 | |
| function descriptionId(id) {
 | |
|     return idGenerator(id, 'description');
 | |
| }
 | |
| /** Return a consistent `id` for the field error element
 | |
|  *
 | |
|  * @param id - Either simple string id or an IdSchema from which to extract it
 | |
|  * @returns - The consistent id for the field error element from the given `id`
 | |
|  */
 | |
| function errorId(id) {
 | |
|     return idGenerator(id, 'error');
 | |
| }
 | |
| /** Return a consistent `id` for the field examples element
 | |
|  *
 | |
|  * @param id - Either simple string id or an IdSchema from which to extract it
 | |
|  * @returns - The consistent id for the field examples element from the given `id`
 | |
|  */
 | |
| function examplesId(id) {
 | |
|     return idGenerator(id, 'examples');
 | |
| }
 | |
| /** Return a consistent `id` for the field help element
 | |
|  *
 | |
|  * @param id - Either simple string id or an IdSchema from which to extract it
 | |
|  * @returns - The consistent id for the field help element from the given `id`
 | |
|  */
 | |
| function helpId(id) {
 | |
|     return idGenerator(id, 'help');
 | |
| }
 | |
| /** Return a consistent `id` for the field title element
 | |
|  *
 | |
|  * @param id - Either simple string id or an IdSchema from which to extract it
 | |
|  * @returns - The consistent id for the field title element from the given `id`
 | |
|  */
 | |
| function titleId(id) {
 | |
|     return idGenerator(id, 'title');
 | |
| }
 | |
| /** Return a list of element ids that contain additional information about the field that can be used to as the aria
 | |
|  * description of the field. This is correctly omitting `titleId` which would be "labeling" rather than "describing" the
 | |
|  * element.
 | |
|  *
 | |
|  * @param id - Either simple string id or an IdSchema from which to extract it
 | |
|  * @param [includeExamples=false] - Optional flag, if true, will add the `examplesId` into the list
 | |
|  * @returns - The string containing the list of ids for use in an `aria-describedBy` attribute
 | |
|  */
 | |
| function ariaDescribedByIds(id, includeExamples = false) {
 | |
|     const examples = includeExamples ? ` ${examplesId(id)}` : '';
 | |
|     return `${errorId(id)} ${descriptionId(id)} ${helpId(id)}${examples}`;
 | |
| }
 | |
| /** Return a consistent `id` for the `optionIndex`s of a `Radio` or `Checkboxes` widget
 | |
|  *
 | |
|  * @param id - The id of the parent component for the option
 | |
|  * @param optionIndex - The index of the option for which the id is desired
 | |
|  * @returns - An id for the option index based on the parent `id`
 | |
|  */
 | |
| function optionId(id, optionIndex) {
 | |
|     return `${id}-${optionIndex}`;
 | |
| }
 | |
| //# sourceMappingURL=idGenerators.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/labelValue.js
 | |
| function labelValue(label, hideLabel, fallback) {
 | |
|     return hideLabel ? fallback : label;
 | |
| }
 | |
| //# sourceMappingURL=labelValue.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/localToUTC.js
 | |
| /** Converts a local Date string into a UTC date string
 | |
|  *
 | |
|  * @param dateString - The string representation of a date as accepted by the `Date()` constructor
 | |
|  * @returns - A UTC date string if `dateString` is truthy, otherwise undefined
 | |
|  */
 | |
| function localToUTC(dateString) {
 | |
|     return dateString ? new Date(dateString).toJSON() : undefined;
 | |
| }
 | |
| //# sourceMappingURL=localToUTC.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/toConstant.js
 | |
| 
 | |
| /** Returns the constant value from the schema when it is either a single value enum or has a const key. Otherwise
 | |
|  * throws an error.
 | |
|  *
 | |
|  * @param schema - The schema from which to obtain the constant value
 | |
|  * @returns - The constant value for the schema
 | |
|  * @throws - Error when the schema does not have a constant value
 | |
|  */
 | |
| function toConstant(schema) {
 | |
|     if (ENUM_KEY in schema && Array.isArray(schema.enum) && schema.enum.length === 1) {
 | |
|         return schema.enum[0];
 | |
|     }
 | |
|     if (CONST_KEY in schema) {
 | |
|         return schema.const;
 | |
|     }
 | |
|     throw new Error('schema cannot be inferred as a constant');
 | |
| }
 | |
| //# sourceMappingURL=toConstant.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/optionsList.js
 | |
| 
 | |
| /** Gets the list of options from the schema. If the schema has an enum list, then those enum values are returned. The
 | |
|  * labels for the options will be extracted from the non-standard, RJSF-deprecated `enumNames` if it exists, otherwise
 | |
|  * the label will be the same as the `value`. If the schema has a `oneOf` or `anyOf`, then the value is the list of
 | |
|  * `const` values from the schema and the label is either the `schema.title` or the value.
 | |
|  *
 | |
|  * @param schema - The schema from which to extract the options list
 | |
|  * @returns - The list of options from the schema
 | |
|  */
 | |
| function optionsList(schema) {
 | |
|     // enumNames was deprecated in v5 and is intentionally omitted from the RJSFSchema type.
 | |
|     // Cast the type to include enumNames so the feature still works.
 | |
|     const schemaWithEnumNames = schema;
 | |
|     if (schemaWithEnumNames.enumNames && "production" !== 'production') {}
 | |
|     if (schema.enum) {
 | |
|         return schema.enum.map((value, i) => {
 | |
|             const label = (schemaWithEnumNames.enumNames && schemaWithEnumNames.enumNames[i]) || String(value);
 | |
|             return { label, value };
 | |
|         });
 | |
|     }
 | |
|     const altSchemas = schema.oneOf || schema.anyOf;
 | |
|     return (altSchemas &&
 | |
|         altSchemas.map((aSchemaDef) => {
 | |
|             const aSchema = aSchemaDef;
 | |
|             const value = toConstant(aSchema);
 | |
|             const label = aSchema.title || String(value);
 | |
|             return {
 | |
|                 schema: aSchema,
 | |
|                 label,
 | |
|                 value,
 | |
|             };
 | |
|         }));
 | |
| }
 | |
| //# sourceMappingURL=optionsList.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/orderProperties.js
 | |
| /** Given a list of `properties` and an `order` list, returns a list that contains the `properties` ordered correctly.
 | |
|  * If `order` is not an array, then the untouched `properties` list is returned. Otherwise `properties` is ordered per
 | |
|  * the `order` list. If `order` contains a '*' then any `properties` that are not mentioned explicity in `order` will be
 | |
|  * places in the location of the `*`.
 | |
|  *
 | |
|  * @param properties - The list of property keys to be ordered
 | |
|  * @param order - An array of property keys to be ordered first, with an optional '*' property
 | |
|  * @returns - A list with the `properties` ordered
 | |
|  * @throws - Error when the properties cannot be ordered correctly
 | |
|  */
 | |
| function orderProperties(properties, order) {
 | |
|     if (!Array.isArray(order)) {
 | |
|         return properties;
 | |
|     }
 | |
|     const arrayToHash = (arr) => arr.reduce((prev, curr) => {
 | |
|         prev[curr] = true;
 | |
|         return prev;
 | |
|     }, {});
 | |
|     const errorPropList = (arr) => arr.length > 1 ? `properties '${arr.join("', '")}'` : `property '${arr[0]}'`;
 | |
|     const propertyHash = arrayToHash(properties);
 | |
|     const orderFiltered = order.filter((prop) => prop === '*' || propertyHash[prop]);
 | |
|     const orderHash = arrayToHash(orderFiltered);
 | |
|     const rest = properties.filter((prop) => !orderHash[prop]);
 | |
|     const restIndex = orderFiltered.indexOf('*');
 | |
|     if (restIndex === -1) {
 | |
|         if (rest.length) {
 | |
|             throw new Error(`uiSchema order list does not contain ${errorPropList(rest)}`);
 | |
|         }
 | |
|         return orderFiltered;
 | |
|     }
 | |
|     if (restIndex !== orderFiltered.lastIndexOf('*')) {
 | |
|         throw new Error('uiSchema order list contains more than one wildcard item');
 | |
|     }
 | |
|     const complete = [...orderFiltered];
 | |
|     complete.splice(restIndex, 1, ...rest);
 | |
|     return complete;
 | |
| }
 | |
| //# sourceMappingURL=orderProperties.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/pad.js
 | |
| /** Returns a string representation of the `num` that is padded with leading "0"s if necessary
 | |
|  *
 | |
|  * @param num - The number to pad
 | |
|  * @param width - The width of the string at which no lead padding is necessary
 | |
|  * @returns - The number converted to a string with leading zero padding if the number of digits is less than `width`
 | |
|  */
 | |
| function pad(num, width) {
 | |
|     let s = String(num);
 | |
|     while (s.length < width) {
 | |
|         s = '0' + s;
 | |
|     }
 | |
|     return s;
 | |
| }
 | |
| //# sourceMappingURL=pad.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/parseDateString.js
 | |
| /** Parses the `dateString` into a `DateObject`, including the time information when `includeTime` is true
 | |
|  *
 | |
|  * @param dateString - The date string to parse into a DateObject
 | |
|  * @param [includeTime=true] - Optional flag, if false, will not include the time data into the object
 | |
|  * @returns - The date string converted to a `DateObject`
 | |
|  * @throws - Error when the date cannot be parsed from the string
 | |
|  */
 | |
| function parseDateString(dateString, includeTime = true) {
 | |
|     if (!dateString) {
 | |
|         return {
 | |
|             year: -1,
 | |
|             month: -1,
 | |
|             day: -1,
 | |
|             hour: includeTime ? -1 : 0,
 | |
|             minute: includeTime ? -1 : 0,
 | |
|             second: includeTime ? -1 : 0,
 | |
|         };
 | |
|     }
 | |
|     const date = new Date(dateString);
 | |
|     if (Number.isNaN(date.getTime())) {
 | |
|         throw new Error('Unable to parse date ' + dateString);
 | |
|     }
 | |
|     return {
 | |
|         year: date.getUTCFullYear(),
 | |
|         month: date.getUTCMonth() + 1,
 | |
|         day: date.getUTCDate(),
 | |
|         hour: includeTime ? date.getUTCHours() : 0,
 | |
|         minute: includeTime ? date.getUTCMinutes() : 0,
 | |
|         second: includeTime ? date.getUTCSeconds() : 0,
 | |
|     };
 | |
| }
 | |
| //# sourceMappingURL=parseDateString.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/schemaRequiresTrueValue.js
 | |
| /** Check to see if a `schema` specifies that a value must be true. This happens when:
 | |
|  * - `schema.const` is truthy
 | |
|  * - `schema.enum` == `[true]`
 | |
|  * - `schema.anyOf` or `schema.oneOf` has a single value which recursively returns true
 | |
|  * - `schema.allOf` has at least one value which recursively returns true
 | |
|  *
 | |
|  * @param schema - The schema to check
 | |
|  * @returns - True if the schema specifies a value that must be true, false otherwise
 | |
|  */
 | |
| function schemaRequiresTrueValue(schema) {
 | |
|     // Check if const is a truthy value
 | |
|     if (schema.const) {
 | |
|         return true;
 | |
|     }
 | |
|     // Check if an enum has a single value of true
 | |
|     if (schema.enum && schema.enum.length === 1 && schema.enum[0] === true) {
 | |
|         return true;
 | |
|     }
 | |
|     // If anyOf has a single value, evaluate the subschema
 | |
|     if (schema.anyOf && schema.anyOf.length === 1) {
 | |
|         return schemaRequiresTrueValue(schema.anyOf[0]);
 | |
|     }
 | |
|     // If oneOf has a single value, evaluate the subschema
 | |
|     if (schema.oneOf && schema.oneOf.length === 1) {
 | |
|         return schemaRequiresTrueValue(schema.oneOf[0]);
 | |
|     }
 | |
|     // Evaluate each subschema in allOf, to see if one of them requires a true value
 | |
|     if (schema.allOf) {
 | |
|         const schemaSome = (subSchema) => schemaRequiresTrueValue(subSchema);
 | |
|         return schema.allOf.some(schemaSome);
 | |
|     }
 | |
|     return false;
 | |
| }
 | |
| //# sourceMappingURL=schemaRequiresTrueValue.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/shouldRender.js
 | |
| 
 | |
| /** Determines whether the given `component` should be rerendered by comparing its current set of props and state
 | |
|  * against the next set. If either of those two sets are not the same, then the component should be rerendered.
 | |
|  *
 | |
|  * @param component - A React component being checked
 | |
|  * @param nextProps - The next set of props against which to check
 | |
|  * @param nextState - The next set of state against which to check
 | |
|  * @returns - True if the component should be re-rendered, false otherwise
 | |
|  */
 | |
| function shouldRender(component, nextProps, nextState) {
 | |
|     const { props, state } = component;
 | |
|     return !deepEquals(props, nextProps) || !deepEquals(state, nextState);
 | |
| }
 | |
| //# sourceMappingURL=shouldRender.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/toDateString.js
 | |
| /** Returns a UTC date string for the given `dateObject`. If `time` is false, then the time portion of the string is
 | |
|  * removed.
 | |
|  *
 | |
|  * @param dateObject - The `DateObject` to convert to a date string
 | |
|  * @param [time=true] - Optional flag used to remove the time portion of the date string if false
 | |
|  * @returns - The UTC date string
 | |
|  */
 | |
| function toDateString(dateObject, time = true) {
 | |
|     const { year, month, day, hour = 0, minute = 0, second = 0 } = dateObject;
 | |
|     const utcTime = Date.UTC(year, month - 1, day, hour, minute, second);
 | |
|     const datetime = new Date(utcTime).toJSON();
 | |
|     return time ? datetime : datetime.slice(0, 10);
 | |
| }
 | |
| //# sourceMappingURL=toDateString.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/toErrorList.js
 | |
| 
 | |
| 
 | |
| /** Converts an `errorSchema` into a list of `RJSFValidationErrors`
 | |
|  *
 | |
|  * @param errorSchema - The `ErrorSchema` instance to convert
 | |
|  * @param [fieldPath=[]] - The current field path, defaults to [] if not specified
 | |
|  * @returns - The list of `RJSFValidationErrors` extracted from the `errorSchema`
 | |
|  */
 | |
| function toErrorList(errorSchema, fieldPath = []) {
 | |
|     if (!errorSchema) {
 | |
|         return [];
 | |
|     }
 | |
|     let errorList = [];
 | |
|     if (ERRORS_KEY in errorSchema) {
 | |
|         errorList = errorList.concat(errorSchema[ERRORS_KEY].map((message) => {
 | |
|             const property = `.${fieldPath.join('.')}`;
 | |
|             return {
 | |
|                 property,
 | |
|                 message,
 | |
|                 stack: `${property} ${message}`,
 | |
|             };
 | |
|         }));
 | |
|     }
 | |
|     return Object.keys(errorSchema).reduce((acc, key) => {
 | |
|         if (key !== ERRORS_KEY) {
 | |
|             const childSchema = errorSchema[key];
 | |
|             if (isPlainObject_default()(childSchema)) {
 | |
|                 acc = acc.concat(toErrorList(childSchema, [...fieldPath, key]));
 | |
|             }
 | |
|         }
 | |
|         return acc;
 | |
|     }, errorList);
 | |
| }
 | |
| //# sourceMappingURL=toErrorList.js.map
 | |
| // EXTERNAL MODULE: ../node_modules/lodash/toPath.js
 | |
| var toPath = __webpack_require__(40110);
 | |
| var toPath_default = /*#__PURE__*/__webpack_require__.n(toPath);
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/toErrorSchema.js
 | |
| 
 | |
| 
 | |
| /** Transforms a rjsf validation errors list:
 | |
|  * [
 | |
|  *   {property: '.level1.level2[2].level3', message: 'err a'},
 | |
|  *   {property: '.level1.level2[2].level3', message: 'err b'},
 | |
|  *   {property: '.level1.level2[4].level3', message: 'err b'},
 | |
|  * ]
 | |
|  * Into an error tree:
 | |
|  * {
 | |
|  *   level1: {
 | |
|  *     level2: {
 | |
|  *       2: {level3: {errors: ['err a', 'err b']}},
 | |
|  *       4: {level3: {errors: ['err b']}},
 | |
|  *     }
 | |
|  *   }
 | |
|  * };
 | |
|  *
 | |
|  * @param errors - The list of RJSFValidationError objects
 | |
|  * @returns - The `ErrorSchema` built from the list of `RJSFValidationErrors`
 | |
|  */
 | |
| function toErrorSchema(errors) {
 | |
|     const builder = new ErrorSchemaBuilder();
 | |
|     if (errors.length) {
 | |
|         errors.forEach((error) => {
 | |
|             const { property, message } = error;
 | |
|             // When the property is the root element, just use an empty array for the path
 | |
|             const path = property === '.' ? [] : toPath_default()(property);
 | |
|             // If the property is at the root (.level1) then toPath creates
 | |
|             // an empty array element at the first index. Remove it.
 | |
|             if (path.length > 0 && path[0] === '') {
 | |
|                 path.splice(0, 1);
 | |
|             }
 | |
|             if (message) {
 | |
|                 builder.addErrors(message, path);
 | |
|             }
 | |
|         });
 | |
|     }
 | |
|     return builder.ErrorSchema;
 | |
| }
 | |
| //# sourceMappingURL=toErrorSchema.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/unwrapErrorHandler.js
 | |
| 
 | |
| /** Unwraps the `errorHandler` structure into the associated `ErrorSchema`, stripping the `addError()` functions from it
 | |
|  *
 | |
|  * @param errorHandler - The `FormValidation` error handling structure
 | |
|  * @returns - The `ErrorSchema` resulting from the stripping of the `addError()` function
 | |
|  */
 | |
| function unwrapErrorHandler(errorHandler) {
 | |
|     return Object.keys(errorHandler).reduce((acc, key) => {
 | |
|         if (key === 'addError') {
 | |
|             return acc;
 | |
|         }
 | |
|         else {
 | |
|             const childSchema = errorHandler[key];
 | |
|             if (isPlainObject_default()(childSchema)) {
 | |
|                 return {
 | |
|                     ...acc,
 | |
|                     [key]: unwrapErrorHandler(childSchema),
 | |
|                 };
 | |
|             }
 | |
|             return { ...acc, [key]: childSchema };
 | |
|         }
 | |
|     }, {});
 | |
| }
 | |
| //# sourceMappingURL=unwrapErrorHandler.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/utcToLocal.js
 | |
| 
 | |
| /** Converts a UTC date string into a local Date format
 | |
|  *
 | |
|  * @param jsonDate - A UTC date string
 | |
|  * @returns - An empty string when `jsonDate` is falsey, otherwise a date string in local format
 | |
|  */
 | |
| function utcToLocal(jsonDate) {
 | |
|     if (!jsonDate) {
 | |
|         return '';
 | |
|     }
 | |
|     // required format of `'yyyy-MM-ddThh:mm' followed by optional ':ss' or ':ss.SSS'
 | |
|     // https://html.spec.whatwg.org/multipage/input.html#local-date-and-time-state-(type%3Ddatetime-local)
 | |
|     // > should be a _valid local date and time string_ (not GMT)
 | |
|     // Note - date constructor passed local ISO-8601 does not correctly
 | |
|     // change time to UTC in node pre-8
 | |
|     const date = new Date(jsonDate);
 | |
|     const yyyy = pad(date.getFullYear(), 4);
 | |
|     const MM = pad(date.getMonth() + 1, 2);
 | |
|     const dd = pad(date.getDate(), 2);
 | |
|     const hh = pad(date.getHours(), 2);
 | |
|     const mm = pad(date.getMinutes(), 2);
 | |
|     const ss = pad(date.getSeconds(), 2);
 | |
|     const SSS = pad(date.getMilliseconds(), 3);
 | |
|     return `${yyyy}-${MM}-${dd}T${hh}:${mm}:${ss}.${SSS}`;
 | |
| }
 | |
| //# sourceMappingURL=utcToLocal.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/validationDataMerge.js
 | |
| 
 | |
| 
 | |
| 
 | |
| /** Merges the errors in `additionalErrorSchema` into the existing `validationData` by combining the hierarchies in the
 | |
|  * two `ErrorSchema`s and then appending the error list from the `additionalErrorSchema` obtained by calling
 | |
|  * `toErrorList()` on the `errors` in the `validationData`. If no `additionalErrorSchema` is passed, then
 | |
|  * `validationData` is returned.
 | |
|  *
 | |
|  * @param validationData - The current `ValidationData` into which to merge the additional errors
 | |
|  * @param [additionalErrorSchema] - The optional additional set of errors in an `ErrorSchema`
 | |
|  * @returns - The `validationData` with the additional errors from `additionalErrorSchema` merged into it, if provided.
 | |
|  */
 | |
| function validationDataMerge(validationData, additionalErrorSchema) {
 | |
|     if (!additionalErrorSchema) {
 | |
|         return validationData;
 | |
|     }
 | |
|     const { errors: oldErrors, errorSchema: oldErrorSchema } = validationData;
 | |
|     let errors = toErrorList(additionalErrorSchema);
 | |
|     let errorSchema = additionalErrorSchema;
 | |
|     if (!isEmpty_default()(oldErrorSchema)) {
 | |
|         errorSchema = mergeObjects(oldErrorSchema, additionalErrorSchema, true);
 | |
|         errors = [...oldErrors].concat(errors);
 | |
|     }
 | |
|     return { errorSchema, errors };
 | |
| }
 | |
| //# sourceMappingURL=validationDataMerge.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/withIdRefPrefix.js
 | |
| 
 | |
| 
 | |
| /** Takes a `node` object and transforms any contained `$ref` node variables with a prefix, recursively calling
 | |
|  * `withIdRefPrefix` for any other elements.
 | |
|  *
 | |
|  * @param node - The object node to which a ROOT_SCHEMA_PREFIX is added when a REF_KEY is part of it
 | |
|  */
 | |
| function withIdRefPrefixObject(node) {
 | |
|     for (const key in node) {
 | |
|         const realObj = node;
 | |
|         const value = realObj[key];
 | |
|         if (key === REF_KEY && typeof value === 'string' && value.startsWith('#')) {
 | |
|             realObj[key] = ROOT_SCHEMA_PREFIX + value;
 | |
|         }
 | |
|         else {
 | |
|             realObj[key] = withIdRefPrefix(value);
 | |
|         }
 | |
|     }
 | |
|     return node;
 | |
| }
 | |
| /** Takes a `node` object list and transforms any contained `$ref` node variables with a prefix, recursively calling
 | |
|  * `withIdRefPrefix` for any other elements.
 | |
|  *
 | |
|  * @param node - The list of object nodes to which a ROOT_SCHEMA_PREFIX is added when a REF_KEY is part of it
 | |
|  */
 | |
| function withIdRefPrefixArray(node) {
 | |
|     for (let i = 0; i < node.length; i++) {
 | |
|         node[i] = withIdRefPrefix(node[i]);
 | |
|     }
 | |
|     return node;
 | |
| }
 | |
| /** Recursively prefixes all `$ref`s in a schema with the value of the `ROOT_SCHEMA_PREFIX` constant.
 | |
|  * This is used in isValid to make references to the rootSchema
 | |
|  *
 | |
|  * @param schemaNode - The object node to which a ROOT_SCHEMA_PREFIX is added when a REF_KEY is part of it
 | |
|  * @returns - A copy of the `schemaNode` with updated `$ref`s
 | |
|  */
 | |
| function withIdRefPrefix(schemaNode) {
 | |
|     if (Array.isArray(schemaNode)) {
 | |
|         return withIdRefPrefixArray([...schemaNode]);
 | |
|     }
 | |
|     if (isObject_default()(schemaNode)) {
 | |
|         return withIdRefPrefixObject({ ...schemaNode });
 | |
|     }
 | |
|     return schemaNode;
 | |
| }
 | |
| //# sourceMappingURL=withIdRefPrefix.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/enums.js
 | |
| /** An enumeration of all the translatable strings used by `@rjsf/core` and its themes. The value of each of the
 | |
|  * enumeration keys is expected to be the actual english string. Some strings contain replaceable parameter values
 | |
|  * as indicated by `%1`, `%2`, etc. The number after the `%` indicates the order of the parameter. The ordering of
 | |
|  * parameters is important because some languages may choose to put the second parameter before the first in its
 | |
|  * translation. Also, some strings are rendered using `markdown-to-jsx` and thus support markdown and inline html.
 | |
|  */
 | |
| var TranslatableString;
 | |
| (function (TranslatableString) {
 | |
|     /** Fallback title of an array item, used by ArrayField */
 | |
|     TranslatableString["ArrayItemTitle"] = "Item";
 | |
|     /** Missing items reason, used by ArrayField */
 | |
|     TranslatableString["MissingItems"] = "Missing items definition";
 | |
|     /** Yes label, used by BooleanField */
 | |
|     TranslatableString["YesLabel"] = "Yes";
 | |
|     /** No label, used by BooleanField */
 | |
|     TranslatableString["NoLabel"] = "No";
 | |
|     /** Close label, used by ErrorList */
 | |
|     TranslatableString["CloseLabel"] = "Close";
 | |
|     /** Errors label, used by ErrorList */
 | |
|     TranslatableString["ErrorsLabel"] = "Errors";
 | |
|     /** New additionalProperties string default value, used by ObjectField */
 | |
|     TranslatableString["NewStringDefault"] = "New Value";
 | |
|     /** Add button title, used by AddButton */
 | |
|     TranslatableString["AddButton"] = "Add";
 | |
|     /** Add button title, used by AddButton */
 | |
|     TranslatableString["AddItemButton"] = "Add Item";
 | |
|     /** Copy button title, used by IconButton */
 | |
|     TranslatableString["CopyButton"] = "Copy";
 | |
|     /** Move down button title, used by IconButton */
 | |
|     TranslatableString["MoveDownButton"] = "Move down";
 | |
|     /** Move up button title, used by IconButton */
 | |
|     TranslatableString["MoveUpButton"] = "Move up";
 | |
|     /** Remove button title, used by IconButton */
 | |
|     TranslatableString["RemoveButton"] = "Remove";
 | |
|     /** Now label, used by AltDateWidget */
 | |
|     TranslatableString["NowLabel"] = "Now";
 | |
|     /** Clear label, used by AltDateWidget */
 | |
|     TranslatableString["ClearLabel"] = "Clear";
 | |
|     /** Aria date label, used by DateWidget */
 | |
|     TranslatableString["AriaDateLabel"] = "Select a date";
 | |
|     /** File preview label, used by FileWidget */
 | |
|     TranslatableString["PreviewLabel"] = "Preview";
 | |
|     /** Decrement button aria label, used by UpDownWidget */
 | |
|     TranslatableString["DecrementAriaLabel"] = "Decrease value by 1";
 | |
|     /** Increment button aria label, used by UpDownWidget */
 | |
|     TranslatableString["IncrementAriaLabel"] = "Increase value by 1";
 | |
|     // Strings with replaceable parameters
 | |
|     /** Unknown field type reason, where %1 will be replaced with the type as provided by SchemaField */
 | |
|     TranslatableString["UnknownFieldType"] = "Unknown field type %1";
 | |
|     /** Option prefix, where %1 will be replaced with the option index as provided by MultiSchemaField */
 | |
|     TranslatableString["OptionPrefix"] = "Option %1";
 | |
|     /** Option prefix, where %1 and %2 will be replaced by the schema title and option index, respectively as provided by
 | |
|      * MultiSchemaField
 | |
|      */
 | |
|     TranslatableString["TitleOptionPrefix"] = "%1 option %2";
 | |
|     /** Key label, where %1 will be replaced by the label as provided by WrapIfAdditionalTemplate */
 | |
|     TranslatableString["KeyLabel"] = "%1 Key";
 | |
|     // Strings with replaceable parameters AND/OR that support markdown and html
 | |
|     /** Invalid object field configuration as provided by the ObjectField */
 | |
|     TranslatableString["InvalidObjectField"] = "Invalid \"%1\" object field configuration: <em>%2</em>.";
 | |
|     /** Unsupported field schema, used by UnsupportedField */
 | |
|     TranslatableString["UnsupportedField"] = "Unsupported field schema.";
 | |
|     /** Unsupported field schema, where %1 will be replaced by the idSchema.$id as provided by UnsupportedField */
 | |
|     TranslatableString["UnsupportedFieldWithId"] = "Unsupported field schema for field <code>%1</code>.";
 | |
|     /** Unsupported field schema, where %1 will be replaced by the reason string as provided by UnsupportedField */
 | |
|     TranslatableString["UnsupportedFieldWithReason"] = "Unsupported field schema: <em>%1</em>.";
 | |
|     /** Unsupported field schema, where %1 and %2 will be replaced by the idSchema.$id and reason strings, respectively,
 | |
|      * as provided by UnsupportedField
 | |
|      */
 | |
|     TranslatableString["UnsupportedFieldWithIdAndReason"] = "Unsupported field schema for field <code>%1</code>: <em>%2</em>.";
 | |
|     /** File name, type and size info, where %1, %2 and %3 will be replaced by the file name, file type and file size as
 | |
|      * provided by FileWidget
 | |
|      */
 | |
|     TranslatableString["FilesInfo"] = "<strong>%1</strong> (%2, %3 bytes)";
 | |
| })(TranslatableString || (TranslatableString = {}));
 | |
| //# sourceMappingURL=enums.js.map
 | |
| // EXTERNAL MODULE: ../node_modules/lodash/forEach.js
 | |
| var forEach = __webpack_require__(47003);
 | |
| var forEach_default = /*#__PURE__*/__webpack_require__.n(forEach);
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/parser/ParserValidator.js
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| /** An implementation of the `ValidatorType` interface that is designed for use in capturing schemas used by the
 | |
|  * `isValid()` function. The rest of the implementation of the interface throws errors when it is attempted to be used.
 | |
|  * An instance of the object allows the caller to capture the schemas used in calls to the `isValid()` function. These
 | |
|  * captured schema, along with the root schema used to construct the object are stored in the map of schemas keyed by
 | |
|  * the hashed value of the schema. NOTE: After hashing the schema, an $id with the hash value is added to the
 | |
|  * schema IF that schema doesn't already have an $id, prior to putting the schema into the map.
 | |
|  */
 | |
| class ParserValidator {
 | |
|     /** Construct the ParserValidator for the given `rootSchema`. This `rootSchema` will be stashed in the `schemaMap`
 | |
|      * first.
 | |
|      *
 | |
|      * @param rootSchema - The root schema against which this validator will be executed
 | |
|      */
 | |
|     constructor(rootSchema) {
 | |
|         /** The map of schemas encountered by the ParserValidator */
 | |
|         this.schemaMap = {};
 | |
|         this.rootSchema = rootSchema;
 | |
|         this.addSchema(rootSchema, hashForSchema(rootSchema));
 | |
|     }
 | |
|     /** Adds the given `schema` to the `schemaMap` keyed by the `hash` or `ID_KEY` if present on the `schema`. If the
 | |
|      * schema does not have an `ID_KEY`, then the `hash` will be added as the `ID_KEY` to allow the schema to be
 | |
|      * associated with it's `hash` for future use (by a schema compiler).
 | |
|      *
 | |
|      * @param schema - The schema which is to be added to the map
 | |
|      * @param hash - The hash value at which to map the schema
 | |
|      */
 | |
|     addSchema(schema, hash) {
 | |
|         const key = get_default()(schema, ID_KEY, hash);
 | |
|         const identifiedSchema = { ...schema, [ID_KEY]: key };
 | |
|         const existing = this.schemaMap[key];
 | |
|         if (!existing) {
 | |
|             this.schemaMap[key] = identifiedSchema;
 | |
|         }
 | |
|         else if (!isEqual_default()(existing, identifiedSchema)) {
 | |
|             console.error('existing schema:', JSON.stringify(existing, null, 2));
 | |
|             console.error('new schema:', JSON.stringify(identifiedSchema, null, 2));
 | |
|             throw new Error(`Two different schemas exist with the same key ${key}! What a bad coincidence. If possible, try adding an $id to one of the schemas`);
 | |
|         }
 | |
|     }
 | |
|     /** Returns the current `schemaMap` to the caller
 | |
|      */
 | |
|     getSchemaMap() {
 | |
|         return this.schemaMap;
 | |
|     }
 | |
|     /** Implements the `ValidatorType` `isValid()` method to capture the `schema` in the `schemaMap`. Throws an error when
 | |
|      * the `rootSchema` is not the same as the root schema provided during construction.
 | |
|      *
 | |
|      * @param schema - The schema to record in the `schemaMap`
 | |
|      * @param _formData - The formData parameter that is ignored
 | |
|      * @param rootSchema - The root schema associated with the schema
 | |
|      * @throws - Error when the given `rootSchema` differs from the root schema provided during construction
 | |
|      */
 | |
|     isValid(schema, _formData, rootSchema) {
 | |
|         if (!isEqual_default()(rootSchema, this.rootSchema)) {
 | |
|             throw new Error('Unexpectedly calling isValid() with a rootSchema that differs from the construction rootSchema');
 | |
|         }
 | |
|         this.addSchema(schema, hashForSchema(schema));
 | |
|         return false;
 | |
|     }
 | |
|     /** Implements the `ValidatorType` `rawValidation()` method to throw an error since it is never supposed to be called
 | |
|      *
 | |
|      * @param _schema - The schema parameter that is ignored
 | |
|      * @param _formData - The formData parameter that is ignored
 | |
|      */
 | |
|     rawValidation(_schema, _formData) {
 | |
|         throw new Error('Unexpectedly calling the `rawValidation()` method during schema parsing');
 | |
|     }
 | |
|     /** Implements the `ValidatorType` `toErrorList()` method to throw an error since it is never supposed to be called
 | |
|      *
 | |
|      * @param _errorSchema - The error schema parameter that is ignored
 | |
|      * @param _fieldPath - The field path parameter that is ignored
 | |
|      */
 | |
|     toErrorList(_errorSchema, _fieldPath) {
 | |
|         throw new Error('Unexpectedly calling the `toErrorList()` method during schema parsing');
 | |
|     }
 | |
|     /** Implements the `ValidatorType` `validateFormData()` method to throw an error since it is never supposed to be
 | |
|      * called
 | |
|      *
 | |
|      * @param _formData - The formData parameter that is ignored
 | |
|      * @param _schema - The schema parameter that is ignored
 | |
|      * @param _customValidate - The customValidate parameter that is ignored
 | |
|      * @param _transformErrors - The transformErrors parameter that is ignored
 | |
|      * @param _uiSchema - The uiSchema parameter that is ignored
 | |
|      */
 | |
|     validateFormData(_formData, _schema, _customValidate, _transformErrors, _uiSchema) {
 | |
|         throw new Error('Unexpectedly calling the `validateFormData()` method during schema parsing');
 | |
|     }
 | |
| }
 | |
| //# sourceMappingURL=ParserValidator.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/parser/schemaParser.js
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| /** Recursive function used to parse the given `schema` belonging to the `rootSchema`. The `validator` is used to
 | |
|  * capture the sub-schemas that the `isValid()` function is called with. For each schema returned by the
 | |
|  * `retrieveSchemaInternal()`, the `resolveAnyOrOneOfSchemas()` function is called. For each of the schemas returned
 | |
|  * from THAT call have `properties`, then each of the sub-schema property objects are then recursively parsed.
 | |
|  *
 | |
|  * @param validator - The `ParserValidator` implementation used to capture `isValid()` calls during parsing
 | |
|  * @param recurseList - The list of schemas returned from the `retrieveSchemaInternal`, preventing infinite recursion
 | |
|  * @param rootSchema - The root schema from which the schema parsing began
 | |
|  * @param schema - The current schema element being parsed
 | |
|  */
 | |
| function parseSchema(validator, recurseList, rootSchema, schema) {
 | |
|     const schemas = retrieveSchemaInternal(validator, schema, rootSchema, undefined, true);
 | |
|     schemas.forEach((schema) => {
 | |
|         const sameSchemaIndex = recurseList.findIndex((item) => isEqual_default()(item, schema));
 | |
|         if (sameSchemaIndex === -1) {
 | |
|             recurseList.push(schema);
 | |
|             const allOptions = resolveAnyOrOneOfSchemas(validator, schema, rootSchema, true);
 | |
|             allOptions.forEach((s) => {
 | |
|                 if (PROPERTIES_KEY in s && s[PROPERTIES_KEY]) {
 | |
|                     forEach_default()(schema[PROPERTIES_KEY], (value) => {
 | |
|                         parseSchema(validator, recurseList, rootSchema, value);
 | |
|                     });
 | |
|                 }
 | |
|             });
 | |
|             if (ITEMS_KEY in schema && !Array.isArray(schema.items) && typeof schema.items !== 'boolean') {
 | |
|                 parseSchema(validator, recurseList, rootSchema, schema.items);
 | |
|             }
 | |
|         }
 | |
|     });
 | |
| }
 | |
| /** Parses the given `rootSchema` to extract out all the sub-schemas that maybe contained within it. Returns a map of
 | |
|  * the hash of the schema to schema/sub-schema.
 | |
|  *
 | |
|  * @param rootSchema - The root schema to parse for sub-schemas used by `isValid()` calls
 | |
|  * @returns - The `SchemaMap` of all schemas that were parsed
 | |
|  */
 | |
| function schemaParser(rootSchema) {
 | |
|     const validator = new ParserValidator(rootSchema);
 | |
|     const recurseList = [];
 | |
|     parseSchema(validator, recurseList, rootSchema, rootSchema);
 | |
|     return validator.getSchemaMap();
 | |
| }
 | |
| //# sourceMappingURL=schemaParser.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/parser/index.js
 | |
| 
 | |
| 
 | |
| //# sourceMappingURL=index.js.map
 | |
| ;// CONCATENATED MODULE: ../node_modules/@rjsf/utils/lib/index.js
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| //# sourceMappingURL=index.js.map
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 15422:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| // MODULES //
 | |
| 
 | |
| var isArray = __webpack_require__( 17604 ),
 | |
| 	isIntegerArray = __webpack_require__( 9333 ),
 | |
| 	isFunction = __webpack_require__( 86401 );
 | |
| 
 | |
| 
 | |
| // VARIABLES //
 | |
| 
 | |
| var MAXINT = Math.pow( 2, 31 ) - 1;
 | |
| 
 | |
| 
 | |
| // FUNCTIONS //
 | |
| 
 | |
| /**
 | |
| * FUNCTION: gcd( a, b )
 | |
| *	Computes the greatest common divisor of two integers `a` and `b`, using the binary GCD algorithm.
 | |
| *
 | |
| * @param {Number} a - integer
 | |
| * @param {Number} b - integer
 | |
| * @returns {Number} greatest common divisor
 | |
| */
 | |
| function gcd( a, b ) {
 | |
| 	var k = 1,
 | |
| 		t;
 | |
| 	// Simple cases:
 | |
| 	if ( a === 0 ) {
 | |
| 		return b;
 | |
| 	}
 | |
| 	if ( b === 0 ) {
 | |
| 		return a;
 | |
| 	}
 | |
| 	// Reduce `a` and/or `b` to odd numbers and keep track of the greatest power of 2 dividing both `a` and `b`...
 | |
| 	while ( a%2 === 0 && b%2 === 0 ) {
 | |
| 		a = a / 2; // right shift
 | |
| 		b = b / 2; // right shift
 | |
| 		k = k * 2; // left shift
 | |
| 	}
 | |
| 	// Reduce `a` to an odd number...
 | |
| 	while ( a%2 === 0 ) {
 | |
| 		a = a / 2; // right shift
 | |
| 	}
 | |
| 	// Henceforth, `a` is always odd...
 | |
| 	while ( b ) {
 | |
| 		// Remove all factors of 2 in `b`, as they are not common...
 | |
| 		while ( b%2 === 0 ) {
 | |
| 			b = b / 2; // right shift
 | |
| 		}
 | |
| 		// `a` and `b` are both odd. Swap values such that `b` is the larger of the two values, and then set `b` to the difference (which is even)...
 | |
| 		if ( a > b ) {
 | |
| 			t = b;
 | |
| 			b = a;
 | |
| 			a = t;
 | |
| 		}
 | |
| 		b = b - a; // b=0 iff b=a
 | |
| 	}
 | |
| 	// Restore common factors of 2...
 | |
| 	return k * a;
 | |
| } // end FUNCTION gcd()
 | |
| 
 | |
| /**
 | |
| * FUNCTION: bitwise( a, b )
 | |
| *	Computes the greatest common divisor of two integers `a` and `b`, using the binary GCD algorithm and bitwise operations.
 | |
| *
 | |
| * @param {Number} a - safe integer
 | |
| * @param {Number} b - safe integer
 | |
| * @returns {Number} greatest common divisor
 | |
| */
 | |
| function bitwise( a, b ) {
 | |
| 	var k = 0,
 | |
| 		t;
 | |
| 	// Simple cases:
 | |
| 	if ( a === 0 ) {
 | |
| 		return b;
 | |
| 	}
 | |
| 	if ( b === 0 ) {
 | |
| 		return a;
 | |
| 	}
 | |
| 	// Reduce `a` and/or `b` to odd numbers and keep track of the greatest power of 2 dividing both `a` and `b`...
 | |
| 	while ( (a & 1) === 0 && (b & 1) === 0 ) {
 | |
| 		a >>>= 1; // right shift
 | |
| 		b >>>= 1; // right shift
 | |
| 		k++;
 | |
| 	}
 | |
| 	// Reduce `a` to an odd number...
 | |
| 	while ( (a & 1) === 0 ) {
 | |
| 		a >>>= 1; // right shift
 | |
| 	}
 | |
| 	// Henceforth, `a` is always odd...
 | |
| 	while ( b ) {
 | |
| 		// Remove all factors of 2 in `b`, as they are not common...
 | |
| 		while ( (b & 1) === 0 ) {
 | |
| 			b >>>= 1; // right shift
 | |
| 		}
 | |
| 		// `a` and `b` are both odd. Swap values such that `b` is the larger of the two values, and then set `b` to the difference (which is even)...
 | |
| 		if ( a > b ) {
 | |
| 			t = b;
 | |
| 			b = a;
 | |
| 			a = t;
 | |
| 		}
 | |
| 		b = b - a; // b=0 iff b=a
 | |
| 	}
 | |
| 	// Restore common factors of 2...
 | |
| 	return a << k;
 | |
| } // end FUNCTION bitwise()
 | |
| 
 | |
| 
 | |
| // GREATEST COMMON DIVISOR //
 | |
| 
 | |
| /**
 | |
| * FUNCTION: compute( arr[, clbk] )
 | |
| *	Computes the greatest common divisor.
 | |
| *
 | |
| * @param {Number[]|Number} arr - input array of integers
 | |
| * @param {Function|Number} [clbk] - accessor function for accessing array values
 | |
| * @returns {Number|Null} greatest common divisor or null
 | |
| */
 | |
| function compute() {
 | |
| 	var nargs = arguments.length,
 | |
| 		args,
 | |
| 		clbk,
 | |
| 		arr,
 | |
| 		len,
 | |
| 		a, b,
 | |
| 		i;
 | |
| 
 | |
| 	// Copy the input arguments to an array...
 | |
| 	args = new Array( nargs );
 | |
| 	for ( i = 0; i < nargs; i++ ) {
 | |
| 		args[ i ] = arguments[ i ];
 | |
| 	}
 | |
| 	// Have we been provided with integer arguments?
 | |
| 	if ( isIntegerArray( args ) ) {
 | |
| 		if ( nargs === 2 ) {
 | |
| 			a = args[ 0 ];
 | |
| 			b = args[ 1 ];
 | |
| 			if ( a < 0 ) {
 | |
| 				a = -a;
 | |
| 			}
 | |
| 			if ( b < 0 ) {
 | |
| 				b = -b;
 | |
| 			}
 | |
| 			if ( a <= MAXINT && b <= MAXINT ) {
 | |
| 				return bitwise( a, b );
 | |
| 			} else {
 | |
| 				return gcd( a, b );
 | |
| 			}
 | |
| 		}
 | |
| 		arr = args;
 | |
| 	}
 | |
| 	// If not integers, ensure the first argument is an array...
 | |
| 	else if ( !isArray( args[ 0 ] ) ) {
 | |
| 		throw new TypeError( 'gcd()::invalid input argument. Must provide an array of integers. Value: `' + args[ 0 ] + '`.' );
 | |
| 	}
 | |
| 	// Have we been provided with more than one argument? If so, ensure that the accessor argument is a function...
 | |
| 	else if ( nargs > 1 ) {
 | |
| 		arr = args[ 0 ];
 | |
| 		clbk = args[ 1 ];
 | |
| 		if ( !isFunction( clbk ) ) {
 | |
| 			throw new TypeError( 'gcd()::invalid input argument. Accessor must be a function. Value: `' + clbk + '`.' );
 | |
| 		}
 | |
| 	}
 | |
| 	// We have been provided an array...
 | |
| 	else {
 | |
| 		arr = args[ 0 ];
 | |
| 	}
 | |
| 	len = arr.length;
 | |
| 
 | |
| 	// Check if a sufficient number of values have been provided...
 | |
| 	if ( len < 2 ) {
 | |
| 		return null;
 | |
| 	}
 | |
| 	// If an accessor is provided, extract the array values...
 | |
| 	if ( clbk ) {
 | |
| 		a = new Array( len );
 | |
| 		for ( i = 0; i < len; i++ ) {
 | |
| 			a[ i ] = clbk( arr[ i ], i );
 | |
| 		}
 | |
| 		arr = a;
 | |
| 	}
 | |
| 	// Given an input array, ensure all array values are integers...
 | |
| 	if ( nargs < 3 ) {
 | |
| 		if ( !isIntegerArray( arr ) ) {
 | |
| 			throw new TypeError( 'gcd()::invalid input argument. Accessed array values must be integers. Value: `' + arr + '`.' );
 | |
| 		}
 | |
| 	}
 | |
| 	// Convert any negative integers to positive integers...
 | |
| 	for ( i = 0; i < len; i++ ) {
 | |
| 		a = arr[ i ];
 | |
| 		if ( a < 0 ) {
 | |
| 			arr[ i ] = -a;
 | |
| 		}
 | |
| 	}
 | |
| 	// Exploit the fact that the gcd is an associative function...
 | |
| 	a = arr[ 0 ];
 | |
| 	for ( i = 1; i < len; i++ ) {
 | |
| 		b = arr[ i ];
 | |
| 		if ( b <= MAXINT && a <= MAXINT ) {
 | |
| 			a = bitwise( a, b );
 | |
| 		} else {
 | |
| 			a = gcd( a, b );
 | |
| 		}
 | |
| 	}
 | |
| 	return a;
 | |
| } // end FUNCTION compute()
 | |
| 
 | |
| 
 | |
| // EXPORTS //
 | |
| 
 | |
| module.exports = compute;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 72982:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| // MODULES //
 | |
| 
 | |
| var gcd = __webpack_require__( 15422 ),
 | |
| 	isArray = __webpack_require__( 17604 ),
 | |
| 	isIntegerArray = __webpack_require__( 9333 ),
 | |
| 	isFunction = __webpack_require__( 86401 );
 | |
| 
 | |
| 
 | |
| // LEAST COMMON MULTIPLE //
 | |
| 
 | |
| /**
 | |
| * FUNCTION: lcm( arr[, clbk] )
 | |
| *	Computes the least common multiple (lcm).
 | |
| *
 | |
| * @param {Number[]|Number} arr - input array of integers
 | |
| * @param {Function|Number} [accessor] - accessor function for accessing array values
 | |
| * @returns {Number|Null} least common multiple or null
 | |
| */
 | |
| function lcm() {
 | |
| 	var nargs = arguments.length,
 | |
| 		args,
 | |
| 		clbk,
 | |
| 		arr,
 | |
| 		len,
 | |
| 		a, b,
 | |
| 		i;
 | |
| 
 | |
| 	// Copy the input arguments to an array...
 | |
| 	args = new Array( nargs );
 | |
| 	for ( i = 0; i < nargs; i++ ) {
 | |
| 		args[ i ] = arguments[ i ];
 | |
| 	}
 | |
| 	// Have we been provided with integer arguments?
 | |
| 	if ( isIntegerArray( args ) ) {
 | |
| 		if ( nargs === 2 ) {
 | |
| 			a = args[ 0 ];
 | |
| 			b = args[ 1 ];
 | |
| 			if ( a < 0 ) {
 | |
| 				a = -a;
 | |
| 			}
 | |
| 			if ( b < 0 ) {
 | |
| 				b = -b;
 | |
| 			}
 | |
| 			if ( a === 0 || b === 0 ) {
 | |
| 				return 0;
 | |
| 			}
 | |
| 			return ( a/gcd(a,b) ) * b;
 | |
| 		}
 | |
| 		arr = args;
 | |
| 	}
 | |
| 	// If not integers, ensure that the first argument is an array...
 | |
| 	else if ( !isArray( args[ 0 ] ) ) {
 | |
| 		throw new TypeError( 'lcm()::invalid input argument. Must provide an array of integers. Value: `' + args[ 0 ] + '`.' );
 | |
| 	}
 | |
| 	// Have we been provided with more than one argument? If so, ensure that the accessor argument is a function...
 | |
| 	else if ( nargs > 1 ) {
 | |
| 		arr = args[ 0 ];
 | |
| 		clbk = args[ 1 ];
 | |
| 		if ( !isFunction( clbk ) ) {
 | |
| 			throw new TypeError( 'lcm()::invalid input argument. Accessor must be a function. Value: `' + clbk + '`.' );
 | |
| 		}
 | |
| 	}
 | |
| 	// We have been provided an array...
 | |
| 	else {
 | |
| 		arr = args[ 0 ];
 | |
| 	}
 | |
| 	len = arr.length;
 | |
| 
 | |
| 	// Check if a sufficient number of values have been provided...
 | |
| 	if ( len < 2 ) {
 | |
| 		return null;
 | |
| 	}
 | |
| 	// If an accessor is provided, extract the array values...
 | |
| 	if ( clbk ) {
 | |
| 		a = new Array( len );
 | |
| 		for ( i = 0; i < len; i++ ) {
 | |
| 			a[ i ] = clbk( arr[ i ], i );
 | |
| 		}
 | |
| 		arr = a;
 | |
| 	}
 | |
| 	// Given an input array, ensure all array values are integers...
 | |
| 	if ( nargs < 3 ) {
 | |
| 		if ( !isIntegerArray( arr ) ) {
 | |
| 			throw new TypeError( 'lcm()::invalid input argument. Accessed array values must be integers. Value: `' + arr + '`.' );
 | |
| 		}
 | |
| 	}
 | |
| 	// Convert any negative integers to positive integers...
 | |
| 	for ( i = 0; i < len; i++ ) {
 | |
| 		a = arr[ i ];
 | |
| 		if ( a < 0 ) {
 | |
| 			arr[ i ] = -a;
 | |
| 		}
 | |
| 	}
 | |
| 	// Exploit the fact that the lcm is an associative function...
 | |
| 	a = arr[ 0 ];
 | |
| 	for ( i = 1; i < len; i++ ) {
 | |
| 		b = arr[ i ];
 | |
| 		if ( a === 0 || b === 0 ) {
 | |
| 			return 0;
 | |
| 		}
 | |
| 		a = ( a/gcd(a,b) ) * b;
 | |
| 	}
 | |
| 	return a;
 | |
| } // end FUNCTION lcm()
 | |
| 
 | |
| 
 | |
| // EXPORTS //
 | |
| 
 | |
| module.exports = lcm;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 64316:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var isEqual = __webpack_require__(56141)
 | |
| var sortBy = __webpack_require__(95099)
 | |
| var uniq = __webpack_require__(83766)
 | |
| var uniqWith = __webpack_require__(52929)
 | |
| var defaults = __webpack_require__(70236)
 | |
| var intersectionWith = __webpack_require__(28054)
 | |
| var isPlainObject = __webpack_require__(40861)
 | |
| var isBoolean = __webpack_require__(3819)
 | |
| 
 | |
| var normalizeArray = val => Array.isArray(val)
 | |
|   ? val : [val]
 | |
| var undef = val => val === undefined
 | |
| var keys = obj => isPlainObject(obj) || Array.isArray(obj) ? Object.keys(obj) : []
 | |
| var has = (obj, key) => obj.hasOwnProperty(key)
 | |
| var stringArray = arr => sortBy(uniq(arr))
 | |
| var undefEmpty = val => undef(val) || (Array.isArray(val) && val.length === 0)
 | |
| var keyValEqual = (a, b, key, compare) => b && has(b, key) && a && has(a, key) && compare(a[key], b[key])
 | |
| var undefAndZero = (a, b) => (undef(a) && b === 0) || (undef(b) && a === 0) || isEqual(a, b)
 | |
| var falseUndefined = (a, b) => (undef(a) && b === false) || (undef(b) && a === false) || isEqual(a, b)
 | |
| var emptySchema = schema => undef(schema) || isEqual(schema, {}) || schema === true
 | |
| var emptyObjUndef = schema => undef(schema) || isEqual(schema, {})
 | |
| var isSchema = val => undef(val) || isPlainObject(val) || val === true || val === false
 | |
| 
 | |
| function undefArrayEqual(a, b) {
 | |
|   if (undefEmpty(a) && undefEmpty(b)) {
 | |
|     return true
 | |
|   } else {
 | |
|     return isEqual(stringArray(a), stringArray(b))
 | |
|   }
 | |
| }
 | |
| 
 | |
| function unsortedNormalizedArray(a, b) {
 | |
|   a = normalizeArray(a)
 | |
|   b = normalizeArray(b)
 | |
|   return isEqual(stringArray(a), stringArray(b))
 | |
| }
 | |
| 
 | |
| function schemaGroup(a, b, key, compare) {
 | |
|   var allProps = uniq(keys(a).concat(keys(b)))
 | |
|   if (emptyObjUndef(a) && emptyObjUndef(b)) {
 | |
|     return true
 | |
|   } else if (emptyObjUndef(a) && keys(b).length) {
 | |
|     return false
 | |
|   } else if (emptyObjUndef(b) && keys(a).length) {
 | |
|     return false
 | |
|   }
 | |
| 
 | |
|   return allProps.every(function(key) {
 | |
|     var aVal = a[key]
 | |
|     var bVal = b[key]
 | |
|     if (Array.isArray(aVal) && Array.isArray(bVal)) {
 | |
|       return isEqual(stringArray(a), stringArray(b))
 | |
|     } else if (Array.isArray(aVal) && !Array.isArray(bVal)) {
 | |
|       return false
 | |
|     } else if (Array.isArray(bVal) && !Array.isArray(aVal)) {
 | |
|       return false
 | |
|     }
 | |
|     return keyValEqual(a, b, key, compare)
 | |
|   })
 | |
| }
 | |
| 
 | |
| function items(a, b, key, compare) {
 | |
|   if (isPlainObject(a) && isPlainObject(b)) {
 | |
|     return compare(a, b)
 | |
|   } else if (Array.isArray(a) && Array.isArray(b)) {
 | |
|     return schemaGroup(a, b, key, compare)
 | |
|   } else {
 | |
|     return isEqual(a, b)
 | |
|   }
 | |
| }
 | |
| 
 | |
| function unsortedArray(a, b, key, compare) {
 | |
|   var uniqueA = uniqWith(a, compare)
 | |
|   var uniqueB = uniqWith(b, compare)
 | |
|   var inter = intersectionWith(uniqueA, uniqueB, compare)
 | |
|   return inter.length === Math.max(uniqueA.length, uniqueB.length)
 | |
| }
 | |
| 
 | |
| var comparers = {
 | |
|   title: isEqual,
 | |
|   uniqueItems: falseUndefined,
 | |
|   minLength: undefAndZero,
 | |
|   minItems: undefAndZero,
 | |
|   minProperties: undefAndZero,
 | |
|   required: undefArrayEqual,
 | |
|   enum: undefArrayEqual,
 | |
|   type: unsortedNormalizedArray,
 | |
|   items: items,
 | |
|   anyOf: unsortedArray,
 | |
|   allOf: unsortedArray,
 | |
|   oneOf: unsortedArray,
 | |
|   properties: schemaGroup,
 | |
|   patternProperties: schemaGroup,
 | |
|   dependencies: schemaGroup
 | |
| }
 | |
| 
 | |
| var acceptsUndefined = [
 | |
|   'properties',
 | |
|   'patternProperties',
 | |
|   'dependencies',
 | |
|   'uniqueItems',
 | |
|   'minLength',
 | |
|   'minItems',
 | |
|   'minProperties',
 | |
|   'required'
 | |
| ]
 | |
| 
 | |
| var schemaProps = ['additionalProperties', 'additionalItems', 'contains', 'propertyNames', 'not']
 | |
| 
 | |
| function compare(a, b, options) {
 | |
|   options = defaults(options, {
 | |
|     ignore: []
 | |
|   })
 | |
| 
 | |
|   if (emptySchema(a) && emptySchema(b)) {
 | |
|     return true
 | |
|   }
 | |
| 
 | |
|   if (!isSchema(a) || !isSchema(b)) {
 | |
|     throw new Error('Either of the values are not a JSON schema.')
 | |
|   }
 | |
|   if (a === b) {
 | |
|     return true
 | |
|   }
 | |
| 
 | |
|   if (isBoolean(a) && isBoolean(b)) {
 | |
|     return a === b
 | |
|   }
 | |
| 
 | |
|   if ((a === undefined && b === false) || (b === undefined && a === false)) {
 | |
|     return false
 | |
|   }
 | |
| 
 | |
|   if ((undef(a) && !undef(b)) || (!undef(a) && undef(b))) {
 | |
|     return false
 | |
|   }
 | |
| 
 | |
|   var allKeys = uniq(Object.keys(a).concat(Object.keys(b)))
 | |
| 
 | |
|   if (options.ignore.length) {
 | |
|     allKeys = allKeys.filter(k => options.ignore.indexOf(k) === -1)
 | |
|   }
 | |
| 
 | |
|   if (!allKeys.length) {
 | |
|     return true
 | |
|   }
 | |
| 
 | |
|   function innerCompare(a, b) {
 | |
|     return compare(a, b, options)
 | |
|   }
 | |
| 
 | |
|   return allKeys.every(function(key) {
 | |
|     var aValue = a[key]
 | |
|     var bValue = b[key]
 | |
| 
 | |
|     if (schemaProps.indexOf(key) !== -1) {
 | |
|       return compare(aValue, bValue, options)
 | |
|     }
 | |
| 
 | |
|     var comparer = comparers[key]
 | |
|     if (!comparer) {
 | |
|       comparer = isEqual
 | |
|     }
 | |
| 
 | |
|     // do simple lodash check first
 | |
|     if (isEqual(aValue, bValue)) {
 | |
|       return true
 | |
|     }
 | |
| 
 | |
|     if (acceptsUndefined.indexOf(key) === -1) {
 | |
|       if ((!has(a, key) && has(b, key)) || (has(a, key) && !has(b, key))) {
 | |
|         return aValue === bValue
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     var result = comparer(aValue, bValue, key, innerCompare)
 | |
|     if (!isBoolean(result)) {
 | |
|       throw new Error('Comparer must return true or false')
 | |
|     }
 | |
|     return result
 | |
|   })
 | |
| }
 | |
| 
 | |
| module.exports = compare
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 2143:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| const flatten = __webpack_require__(89754)
 | |
| const flattenDeep = __webpack_require__(84812)
 | |
| const isPlainObject = __webpack_require__(40861)
 | |
| const uniq = __webpack_require__(83766)
 | |
| const uniqWith = __webpack_require__(52929)
 | |
| const without = __webpack_require__(81889)
 | |
| 
 | |
| function deleteUndefinedProps(returnObject) {
 | |
|   // cleanup empty
 | |
|   for (const prop in returnObject) {
 | |
|     if (has(returnObject, prop) && isEmptySchema(returnObject[prop])) {
 | |
|       delete returnObject[prop]
 | |
|     }
 | |
|   }
 | |
|   return returnObject
 | |
| }
 | |
| 
 | |
| const allUniqueKeys = (arr) => uniq(flattenDeep(arr.map(keys)))
 | |
| const getValues = (schemas, key) => schemas.map(schema => schema && schema[key])
 | |
| const has = (obj, propName) => Object.prototype.hasOwnProperty.call(obj, propName)
 | |
| const keys = obj => {
 | |
|   if (isPlainObject(obj) || Array.isArray(obj)) {
 | |
|     return Object.keys(obj)
 | |
|   } else {
 | |
|     return []
 | |
|   }
 | |
| }
 | |
| 
 | |
| const notUndefined = (val) => val !== undefined
 | |
| const isSchema = (val) => isPlainObject(val) || val === true || val === false
 | |
| const isEmptySchema = (obj) => (!keys(obj).length) && obj !== false && obj !== true
 | |
| const withoutArr = (arr, ...rest) => without.apply(null, [arr].concat(flatten(rest)))
 | |
| 
 | |
| module.exports = {
 | |
|   allUniqueKeys,
 | |
|   deleteUndefinedProps,
 | |
|   getValues,
 | |
|   has,
 | |
|   isEmptySchema,
 | |
|   isSchema,
 | |
|   keys,
 | |
|   notUndefined,
 | |
|   uniqWith,
 | |
|   withoutArr
 | |
| }
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 71020:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| 
 | |
| const compare = __webpack_require__(64316)
 | |
| const forEach = __webpack_require__(47003)
 | |
| const {
 | |
|   allUniqueKeys,
 | |
|   deleteUndefinedProps,
 | |
|   has,
 | |
|   isSchema,
 | |
|   notUndefined,
 | |
|   uniqWith
 | |
| } = __webpack_require__(2143)
 | |
| 
 | |
| function removeFalseSchemasFromArray(target) {
 | |
|   forEach(target, function(schema, index) {
 | |
|     if (schema === false) {
 | |
|       target.splice(index, 1)
 | |
|     }
 | |
|   })
 | |
| }
 | |
| 
 | |
| function getItemSchemas(subSchemas, key) {
 | |
|   return subSchemas.map(function(sub) {
 | |
|     if (!sub) {
 | |
|       return undefined
 | |
|     }
 | |
| 
 | |
|     if (Array.isArray(sub.items)) {
 | |
|       const schemaAtPos = sub.items[key]
 | |
|       if (isSchema(schemaAtPos)) {
 | |
|         return schemaAtPos
 | |
|       } else if (has(sub, 'additionalItems')) {
 | |
|         return sub.additionalItems
 | |
|       }
 | |
|     } else {
 | |
|       return sub.items
 | |
|     }
 | |
| 
 | |
|     return undefined
 | |
|   })
 | |
| }
 | |
| 
 | |
| function getAdditionalSchemas(subSchemas) {
 | |
|   return subSchemas.map(function(sub) {
 | |
|     if (!sub) {
 | |
|       return undefined
 | |
|     }
 | |
|     if (Array.isArray(sub.items)) {
 | |
|       return sub.additionalItems
 | |
|     }
 | |
|     return sub.items
 | |
|   })
 | |
| }
 | |
| 
 | |
| // Provide source when array
 | |
| function mergeItems(group, mergeSchemas, items) {
 | |
|   const allKeys = allUniqueKeys(items)
 | |
|   return allKeys.reduce(function(all, key) {
 | |
|     const schemas = getItemSchemas(group, key)
 | |
|     const compacted = uniqWith(schemas.filter(notUndefined), compare)
 | |
|     all[key] = mergeSchemas(compacted, key)
 | |
|     return all
 | |
|   }, [])
 | |
| }
 | |
| 
 | |
| module.exports = {
 | |
|   keywords: ['items', 'additionalItems'],
 | |
|   resolver(values, parents, mergers) {
 | |
|     // const createSubMerger = groupKey => (schemas, key) => mergeSchemas(schemas, parents.concat(groupKey, key))
 | |
|     const items = values.map(s => s.items)
 | |
|     const itemsCompacted = items.filter(notUndefined)
 | |
|     const returnObject = {}
 | |
| 
 | |
|     // if all items keyword values are schemas, we can merge them as simple schemas
 | |
|     // if not we need to merge them as mixed
 | |
|     if (itemsCompacted.every(isSchema)) {
 | |
|       returnObject.items = mergers.items(items)
 | |
|     } else {
 | |
|       returnObject.items = mergeItems(values, mergers.items, items)
 | |
|     }
 | |
| 
 | |
|     let schemasAtLastPos
 | |
|     if (itemsCompacted.every(Array.isArray)) {
 | |
|       schemasAtLastPos = values.map(s => s.additionalItems)
 | |
|     } else if (itemsCompacted.some(Array.isArray)) {
 | |
|       schemasAtLastPos = getAdditionalSchemas(values)
 | |
|     }
 | |
| 
 | |
|     if (schemasAtLastPos) {
 | |
|       returnObject.additionalItems = mergers.additionalItems(schemasAtLastPos)
 | |
|     }
 | |
| 
 | |
|     if (returnObject.additionalItems === false && Array.isArray(returnObject.items)) {
 | |
|       removeFalseSchemasFromArray(returnObject.items)
 | |
|     }
 | |
| 
 | |
|     return deleteUndefinedProps(returnObject)
 | |
|   }
 | |
| }
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 88807:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| 
 | |
| const compare = __webpack_require__(64316)
 | |
| const forEach = __webpack_require__(47003)
 | |
| const {
 | |
|   allUniqueKeys,
 | |
|   deleteUndefinedProps,
 | |
|   getValues,
 | |
|   keys,
 | |
|   notUndefined,
 | |
|   uniqWith,
 | |
|   withoutArr
 | |
| } = __webpack_require__(2143)
 | |
| 
 | |
| function removeFalseSchemas(target) {
 | |
|   forEach(target, function(schema, prop) {
 | |
|     if (schema === false) {
 | |
|       delete target[prop]
 | |
|     }
 | |
|   })
 | |
| }
 | |
| 
 | |
| function mergeSchemaGroup(group, mergeSchemas) {
 | |
|   const allKeys = allUniqueKeys(group)
 | |
|   return allKeys.reduce(function(all, key) {
 | |
|     const schemas = getValues(group, key)
 | |
|     const compacted = uniqWith(schemas.filter(notUndefined), compare)
 | |
|     all[key] = mergeSchemas(compacted, key)
 | |
|     return all
 | |
|   }, {})
 | |
| }
 | |
| 
 | |
| module.exports = {
 | |
|   keywords: ['properties', 'patternProperties', 'additionalProperties'],
 | |
|   resolver(values, parents, mergers, options) {
 | |
|     // first get rid of all non permitted properties
 | |
|     if (!options.ignoreAdditionalProperties) {
 | |
|       values.forEach(function(subSchema) {
 | |
|         const otherSubSchemas = values.filter(s => s !== subSchema)
 | |
|         const ownKeys = keys(subSchema.properties)
 | |
|         const ownPatternKeys = keys(subSchema.patternProperties)
 | |
|         const ownPatterns = ownPatternKeys.map(k => new RegExp(k))
 | |
|         otherSubSchemas.forEach(function(other) {
 | |
|           const allOtherKeys = keys(other.properties)
 | |
|           const keysMatchingPattern = allOtherKeys.filter(k => ownPatterns.some(pk => pk.test(k)))
 | |
|           const additionalKeys = withoutArr(allOtherKeys, ownKeys, keysMatchingPattern)
 | |
|           additionalKeys.forEach(function(key) {
 | |
|             other.properties[key] = mergers.properties([
 | |
|               other.properties[key], subSchema.additionalProperties
 | |
|             ], key)
 | |
|           })
 | |
|         })
 | |
|       })
 | |
| 
 | |
|       // remove disallowed patternProperties
 | |
|       values.forEach(function(subSchema) {
 | |
|         const otherSubSchemas = values.filter(s => s !== subSchema)
 | |
|         const ownPatternKeys = keys(subSchema.patternProperties)
 | |
|         if (subSchema.additionalProperties === false) {
 | |
|           otherSubSchemas.forEach(function(other) {
 | |
|             const allOtherPatterns = keys(other.patternProperties)
 | |
|             const additionalPatternKeys = withoutArr(allOtherPatterns, ownPatternKeys)
 | |
|             additionalPatternKeys.forEach(key => delete other.patternProperties[key])
 | |
|           })
 | |
|         }
 | |
|       })
 | |
|     }
 | |
| 
 | |
|     const returnObject = {
 | |
|       additionalProperties: mergers.additionalProperties(values.map(s => s.additionalProperties)),
 | |
|       patternProperties: mergeSchemaGroup(values.map(s => s.patternProperties), mergers.patternProperties),
 | |
|       properties: mergeSchemaGroup(values.map(s => s.properties), mergers.properties)
 | |
|     }
 | |
| 
 | |
|     if (returnObject.additionalProperties === false) {
 | |
|       removeFalseSchemas(returnObject.properties)
 | |
|     }
 | |
| 
 | |
|     return deleteUndefinedProps(returnObject)
 | |
|   }
 | |
| }
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 64717:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| const cloneDeep = __webpack_require__(30454)
 | |
| const compare = __webpack_require__(64316)
 | |
| const computeLcm = __webpack_require__(72982)
 | |
| const defaultsDeep = __webpack_require__(53533)
 | |
| const flatten = __webpack_require__(89754)
 | |
| const flattenDeep = __webpack_require__(84812)
 | |
| const intersection = __webpack_require__(27921)
 | |
| const intersectionWith = __webpack_require__(28054)
 | |
| const isEqual = __webpack_require__(56141)
 | |
| const isPlainObject = __webpack_require__(40861)
 | |
| const pullAll = __webpack_require__(90254)
 | |
| const sortBy = __webpack_require__(95099)
 | |
| const uniq = __webpack_require__(83766)
 | |
| const uniqWith = __webpack_require__(52929)
 | |
| 
 | |
| const propertiesResolver = __webpack_require__(88807)
 | |
| const itemsResolver = __webpack_require__(71020)
 | |
| 
 | |
| const contains = (arr, val) => arr.indexOf(val) !== -1
 | |
| const isSchema = (val) => isPlainObject(val) || val === true || val === false
 | |
| const isFalse = (val) => val === false
 | |
| const isTrue = (val) => val === true
 | |
| const schemaResolver = (compacted, key, mergeSchemas) => mergeSchemas(compacted)
 | |
| const stringArray = (values) => sortBy(uniq(flattenDeep(values)))
 | |
| const notUndefined = (val) => val !== undefined
 | |
| const allUniqueKeys = (arr) => uniq(flattenDeep(arr.map(keys)))
 | |
| 
 | |
| // resolvers
 | |
| const first = compacted => compacted[0]
 | |
| const required = compacted => stringArray(compacted)
 | |
| const maximumValue = compacted => Math.max.apply(Math, compacted)
 | |
| const minimumValue = compacted => Math.min.apply(Math, compacted)
 | |
| const uniqueItems = compacted => compacted.some(isTrue)
 | |
| const examples = compacted => uniqWith(flatten(compacted), isEqual)
 | |
| 
 | |
| function compareProp(key) {
 | |
|   return function(a, b) {
 | |
|     return compare({
 | |
|       [key]: a
 | |
|     }, { [key]: b })
 | |
|   }
 | |
| }
 | |
| 
 | |
| function getAllOf(schema) {
 | |
|   let { allOf = [], ...copy } = schema
 | |
|   copy = isPlainObject(schema) ? copy : schema // if schema is boolean
 | |
|   return [copy, ...allOf.map(getAllOf)]
 | |
| }
 | |
| 
 | |
| function getValues(schemas, key) {
 | |
|   return schemas.map(schema => schema && schema[key])
 | |
| }
 | |
| 
 | |
| function tryMergeSchemaGroups(schemaGroups, mergeSchemas) {
 | |
|   return schemaGroups.map(function(schemas, index) {
 | |
|     try {
 | |
|       return mergeSchemas(schemas, index)
 | |
|     } catch (e) {
 | |
|       return undefined
 | |
|     }
 | |
|   }).filter(notUndefined)
 | |
| }
 | |
| 
 | |
| function keys(obj) {
 | |
|   if (isPlainObject(obj) || Array.isArray(obj)) {
 | |
|     return Object.keys(obj)
 | |
|   } else {
 | |
|     return []
 | |
|   }
 | |
| }
 | |
| 
 | |
| function getAnyOfCombinations(arrOfArrays, combinations) {
 | |
|   combinations = combinations || []
 | |
|   if (!arrOfArrays.length) {
 | |
|     return combinations
 | |
|   }
 | |
| 
 | |
|   const values = arrOfArrays.slice(0).shift()
 | |
|   const rest = arrOfArrays.slice(1)
 | |
|   if (combinations.length) {
 | |
|     return getAnyOfCombinations(rest, flatten(combinations.map(combination => values.map(item => ([item].concat(combination))))))
 | |
|   }
 | |
|   return getAnyOfCombinations(rest, values.map(item => (item)))
 | |
| }
 | |
| 
 | |
| function throwIncompatible(values, paths) {
 | |
|   let asJSON
 | |
|   try {
 | |
|     asJSON = values.map(function(val) {
 | |
|       return JSON.stringify(val, null, 2)
 | |
|     }).join('\n')
 | |
|   } catch (variable) {
 | |
|     asJSON = values.join(', ')
 | |
|   }
 | |
|   throw new Error('Could not resolve values for path:"' + paths.join('.') + '". They are probably incompatible. Values: \n' + asJSON)
 | |
| }
 | |
| 
 | |
| function callGroupResolver(complexKeywords, resolverName, schemas, mergeSchemas, options, parents) {
 | |
|   if (complexKeywords.length) {
 | |
|     const resolverConfig = options.complexResolvers[resolverName]
 | |
|     if (!resolverConfig || !resolverConfig.resolver) {
 | |
|       throw new Error('No resolver found for ' + resolverName)
 | |
|     }
 | |
| 
 | |
|     // extract all keywords from all the schemas that have one or more
 | |
|     // then remove all undefined ones and not unique
 | |
|     const extractedKeywordsOnly = schemas.map(schema => complexKeywords.reduce((all, key) => {
 | |
|       if (schema[key] !== undefined) all[key] = schema[key]
 | |
|       return all
 | |
|     }, {}))
 | |
|     const unique = uniqWith(extractedKeywordsOnly, compare)
 | |
| 
 | |
|     // create mergers that automatically add the path of the keyword for use in the complex resolver
 | |
|     const mergers = resolverConfig.keywords.reduce((all, key) => ({
 | |
|       ...all,
 | |
|       [key]: (schemas, extraKey = []) => mergeSchemas(schemas, null, parents.concat(key, extraKey))
 | |
|     }), {})
 | |
| 
 | |
|     const result = resolverConfig.resolver(unique, parents.concat(resolverName), mergers, options)
 | |
| 
 | |
|     if (!isPlainObject(result)) {
 | |
|       throwIncompatible(unique, parents.concat(resolverName))
 | |
|     }
 | |
| 
 | |
|     return result
 | |
|   }
 | |
| }
 | |
| 
 | |
| function createRequiredMetaArray(arr) {
 | |
|   return { required: arr }
 | |
| }
 | |
| 
 | |
| const schemaGroupProps = ['properties', 'patternProperties', 'definitions', 'dependencies']
 | |
| const schemaArrays = ['anyOf', 'oneOf']
 | |
| const schemaProps = [
 | |
|   'additionalProperties',
 | |
|   'additionalItems',
 | |
|   'contains',
 | |
|   'propertyNames',
 | |
|   'not',
 | |
|   'items'
 | |
| ]
 | |
| 
 | |
| const defaultResolvers = {
 | |
|   type(compacted) {
 | |
|     if (compacted.some(Array.isArray)) {
 | |
|       const normalized = compacted.map(function(val) {
 | |
|         return Array.isArray(val)
 | |
|           ? val
 | |
|           : [val]
 | |
|       })
 | |
|       const common = intersection.apply(null, normalized)
 | |
| 
 | |
|       if (common.length === 1) {
 | |
|         return common[0]
 | |
|       } else if (common.length > 1) {
 | |
|         return uniq(common)
 | |
|       }
 | |
|     }
 | |
|   },
 | |
|   dependencies(compacted, paths, mergeSchemas) {
 | |
|     const allChildren = allUniqueKeys(compacted)
 | |
| 
 | |
|     return allChildren.reduce(function(all, childKey) {
 | |
|       const childSchemas = getValues(compacted, childKey)
 | |
|       let innerCompacted = uniqWith(childSchemas.filter(notUndefined), isEqual)
 | |
| 
 | |
|       // to support dependencies
 | |
|       const innerArrays = innerCompacted.filter(Array.isArray)
 | |
| 
 | |
|       if (innerArrays.length) {
 | |
|         if (innerArrays.length === innerCompacted.length) {
 | |
|           all[childKey] = stringArray(innerCompacted)
 | |
|         } else {
 | |
|           const innerSchemas = innerCompacted.filter(isSchema)
 | |
|           const arrayMetaScheams = innerArrays.map(createRequiredMetaArray)
 | |
|           all[childKey] = mergeSchemas(innerSchemas.concat(arrayMetaScheams), childKey)
 | |
|         }
 | |
|         return all
 | |
|       }
 | |
| 
 | |
|       innerCompacted = uniqWith(innerCompacted, compare)
 | |
| 
 | |
|       all[childKey] = mergeSchemas(innerCompacted, childKey)
 | |
|       return all
 | |
|     }, {})
 | |
|   },
 | |
|   oneOf(compacted, paths, mergeSchemas) {
 | |
|     const combinations = getAnyOfCombinations(cloneDeep(compacted))
 | |
|     const result = tryMergeSchemaGroups(combinations, mergeSchemas)
 | |
|     const unique = uniqWith(result, compare)
 | |
| 
 | |
|     if (unique.length) {
 | |
|       return unique
 | |
|     }
 | |
|   },
 | |
|   not(compacted) {
 | |
|     return { anyOf: compacted }
 | |
|   },
 | |
|   pattern(compacted) {
 | |
|     return compacted.map(r => '(?=' + r + ')').join('')
 | |
|   },
 | |
|   multipleOf(compacted) {
 | |
|     let integers = compacted.slice(0)
 | |
|     let factor = 1
 | |
|     while (integers.some(n => !Number.isInteger(n))) {
 | |
|       integers = integers.map(n => n * 10)
 | |
|       factor = factor * 10
 | |
|     }
 | |
|     return computeLcm(integers) / factor
 | |
|   },
 | |
|   enum(compacted) {
 | |
|     const enums = intersectionWith.apply(null, compacted.concat(isEqual))
 | |
|     if (enums.length) {
 | |
|       return sortBy(enums)
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| defaultResolvers.$id = first
 | |
| defaultResolvers.$ref = first
 | |
| defaultResolvers.$schema = first
 | |
| defaultResolvers.additionalItems = schemaResolver
 | |
| defaultResolvers.additionalProperties = schemaResolver
 | |
| defaultResolvers.anyOf = defaultResolvers.oneOf
 | |
| defaultResolvers.contains = schemaResolver
 | |
| defaultResolvers.default = first
 | |
| defaultResolvers.definitions = defaultResolvers.dependencies
 | |
| defaultResolvers.description = first
 | |
| defaultResolvers.examples = examples
 | |
| defaultResolvers.exclusiveMaximum = minimumValue
 | |
| defaultResolvers.exclusiveMinimum = maximumValue
 | |
| defaultResolvers.items = itemsResolver
 | |
| defaultResolvers.maximum = minimumValue
 | |
| defaultResolvers.maxItems = minimumValue
 | |
| defaultResolvers.maxLength = minimumValue
 | |
| defaultResolvers.maxProperties = minimumValue
 | |
| defaultResolvers.minimum = maximumValue
 | |
| defaultResolvers.minItems = maximumValue
 | |
| defaultResolvers.minLength = maximumValue
 | |
| defaultResolvers.minProperties = maximumValue
 | |
| defaultResolvers.properties = propertiesResolver
 | |
| defaultResolvers.propertyNames = schemaResolver
 | |
| defaultResolvers.required = required
 | |
| defaultResolvers.title = first
 | |
| defaultResolvers.uniqueItems = uniqueItems
 | |
| 
 | |
| const defaultComplexResolvers = {
 | |
|   properties: propertiesResolver,
 | |
|   items: itemsResolver
 | |
| }
 | |
| 
 | |
| function merger(rootSchema, options, totalSchemas) {
 | |
|   totalSchemas = totalSchemas || []
 | |
|   options = defaultsDeep(options, {
 | |
|     ignoreAdditionalProperties: false,
 | |
|     resolvers: defaultResolvers,
 | |
|     complexResolvers: defaultComplexResolvers,
 | |
|     deep: true
 | |
|   })
 | |
| 
 | |
|   const complexResolvers = Object.entries(options.complexResolvers)
 | |
| 
 | |
|   function mergeSchemas(schemas, base, parents) {
 | |
|     schemas = cloneDeep(schemas.filter(notUndefined))
 | |
|     parents = parents || []
 | |
|     const merged = isPlainObject(base)
 | |
|       ? base
 | |
|       : {}
 | |
| 
 | |
|     // return undefined, an empty schema
 | |
|     if (!schemas.length) {
 | |
|       return
 | |
|     }
 | |
| 
 | |
|     if (schemas.some(isFalse)) {
 | |
|       return false
 | |
|     }
 | |
| 
 | |
|     if (schemas.every(isTrue)) {
 | |
|       return true
 | |
|     }
 | |
| 
 | |
|     // there are no false and we don't need the true ones as they accept everything
 | |
|     schemas = schemas.filter(isPlainObject)
 | |
| 
 | |
|     const allKeys = allUniqueKeys(schemas)
 | |
|     if (options.deep && contains(allKeys, 'allOf')) {
 | |
|       return merger({
 | |
|         allOf: schemas
 | |
|       }, options, totalSchemas)
 | |
|     }
 | |
| 
 | |
|     const complexKeysArr = complexResolvers.map(([mainKeyWord, resolverConf]) =>
 | |
|       allKeys.filter(k => resolverConf.keywords.includes(k)))
 | |
| 
 | |
|     // remove all complex keys before simple resolvers
 | |
|     complexKeysArr.forEach(keys => pullAll(allKeys, keys))
 | |
| 
 | |
|     // call all simple resolvers for relevant keywords
 | |
|     allKeys.forEach(function(key) {
 | |
|       const values = getValues(schemas, key)
 | |
|       const compacted = uniqWith(values.filter(notUndefined), compareProp(key))
 | |
| 
 | |
|       // arrayprops like anyOf and oneOf must be merged first, as they contains schemas
 | |
|       // allOf is treated differently alltogether
 | |
|       if (compacted.length === 1 && contains(schemaArrays, key)) {
 | |
|         merged[key] = compacted[0].map(schema => mergeSchemas([schema], schema))
 | |
|         // prop groups must always be resolved
 | |
|       } else if (compacted.length === 1 && !contains(schemaGroupProps, key) && !contains(schemaProps, key)) {
 | |
|         merged[key] = compacted[0]
 | |
|       } else {
 | |
|         const resolver = options.resolvers[key] || options.resolvers.defaultResolver
 | |
|         if (!resolver) throw new Error('No resolver found for key ' + key + '. You can provide a resolver for this keyword in the options, or provide a default resolver.')
 | |
| 
 | |
|         const merger = (schemas, extraKey = []) => mergeSchemas(schemas, null, parents.concat(key, extraKey))
 | |
|         merged[key] = resolver(compacted, parents.concat(key), merger, options)
 | |
| 
 | |
|         if (merged[key] === undefined) {
 | |
|           throwIncompatible(compacted, parents.concat(key))
 | |
|         } else if (merged[key] === undefined) {
 | |
|           delete merged[key]
 | |
|         }
 | |
|       }
 | |
|     })
 | |
| 
 | |
|     return complexResolvers.reduce((all, [resolverKeyword, config], index) => ({
 | |
|       ...all,
 | |
|       ...callGroupResolver(complexKeysArr[index], resolverKeyword, schemas, mergeSchemas, options, parents)
 | |
|     }), merged)
 | |
|   }
 | |
| 
 | |
|   const allSchemas = flattenDeep(getAllOf(rootSchema))
 | |
|   const merged = mergeSchemas(allSchemas)
 | |
| 
 | |
|   return merged
 | |
| }
 | |
| 
 | |
| merger.options = {
 | |
|   resolvers: defaultResolvers
 | |
| }
 | |
| 
 | |
| module.exports = merger
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 88208:
 | |
| /***/ ((__unused_webpack_module, exports) => {
 | |
| 
 | |
| var hasExcape = /~/
 | |
| var escapeMatcher = /~[01]/g
 | |
| function escapeReplacer (m) {
 | |
|   switch (m) {
 | |
|     case '~1': return '/'
 | |
|     case '~0': return '~'
 | |
|   }
 | |
|   throw new Error('Invalid tilde escape: ' + m)
 | |
| }
 | |
| 
 | |
| function untilde (str) {
 | |
|   if (!hasExcape.test(str)) return str
 | |
|   return str.replace(escapeMatcher, escapeReplacer)
 | |
| }
 | |
| 
 | |
| function setter (obj, pointer, value) {
 | |
|   var part
 | |
|   var hasNextPart
 | |
| 
 | |
|   for (var p = 1, len = pointer.length; p < len;) {
 | |
|     if (pointer[p] === 'constructor' || pointer[p] === 'prototype' || pointer[p] === '__proto__') return obj
 | |
| 
 | |
|     part = untilde(pointer[p++])
 | |
|     hasNextPart = len > p
 | |
| 
 | |
|     if (typeof obj[part] === 'undefined') {
 | |
|       // support setting of /-
 | |
|       if (Array.isArray(obj) && part === '-') {
 | |
|         part = obj.length
 | |
|       }
 | |
| 
 | |
|       // support nested objects/array when setting values
 | |
|       if (hasNextPart) {
 | |
|         if ((pointer[p] !== '' && pointer[p] < Infinity) || pointer[p] === '-') obj[part] = []
 | |
|         else obj[part] = {}
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     if (!hasNextPart) break
 | |
|     obj = obj[part]
 | |
|   }
 | |
| 
 | |
|   var oldValue = obj[part]
 | |
|   if (value === undefined) delete obj[part]
 | |
|   else obj[part] = value
 | |
|   return oldValue
 | |
| }
 | |
| 
 | |
| function compilePointer (pointer) {
 | |
|   if (typeof pointer === 'string') {
 | |
|     pointer = pointer.split('/')
 | |
|     if (pointer[0] === '') return pointer
 | |
|     throw new Error('Invalid JSON pointer.')
 | |
|   } else if (Array.isArray(pointer)) {
 | |
|     for (const part of pointer) {
 | |
|       if (typeof part !== 'string' && typeof part !== 'number') {
 | |
|         throw new Error('Invalid JSON pointer. Must be of type string or number.')
 | |
|       }
 | |
|     }
 | |
|     return pointer
 | |
|   }
 | |
| 
 | |
|   throw new Error('Invalid JSON pointer.')
 | |
| }
 | |
| 
 | |
| function get (obj, pointer) {
 | |
|   if (typeof obj !== 'object') throw new Error('Invalid input object.')
 | |
|   pointer = compilePointer(pointer)
 | |
|   var len = pointer.length
 | |
|   if (len === 1) return obj
 | |
| 
 | |
|   for (var p = 1; p < len;) {
 | |
|     obj = obj[untilde(pointer[p++])]
 | |
|     if (len === p) return obj
 | |
|     if (typeof obj !== 'object' || obj === null) return undefined
 | |
|   }
 | |
| }
 | |
| 
 | |
| function set (obj, pointer, value) {
 | |
|   if (typeof obj !== 'object') throw new Error('Invalid input object.')
 | |
|   pointer = compilePointer(pointer)
 | |
|   if (pointer.length === 0) throw new Error('Invalid JSON pointer for set.')
 | |
|   return setter(obj, pointer, value)
 | |
| }
 | |
| 
 | |
| function compile (pointer) {
 | |
|   var compiled = compilePointer(pointer)
 | |
|   return {
 | |
|     get: function (object) {
 | |
|       return get(object, compiled)
 | |
|     },
 | |
|     set: function (object, value) {
 | |
|       return set(object, compiled, value)
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| exports.get = get
 | |
| exports.set = set
 | |
| exports.compile = compile
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 52485:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var MapCache = __webpack_require__(74554),
 | |
|     setCacheAdd = __webpack_require__(38639),
 | |
|     setCacheHas = __webpack_require__(88379);
 | |
| 
 | |
| /**
 | |
|  *
 | |
|  * Creates an array cache object to store unique values.
 | |
|  *
 | |
|  * @private
 | |
|  * @constructor
 | |
|  * @param {Array} [values] The values to cache.
 | |
|  */
 | |
| function SetCache(values) {
 | |
|   var index = -1,
 | |
|       length = values == null ? 0 : values.length;
 | |
| 
 | |
|   this.__data__ = new MapCache;
 | |
|   while (++index < length) {
 | |
|     this.add(values[index]);
 | |
|   }
 | |
| }
 | |
| 
 | |
| // Add methods to `SetCache`.
 | |
| SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
 | |
| SetCache.prototype.has = setCacheHas;
 | |
| 
 | |
| module.exports = SetCache;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 58095:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var baseIndexOf = __webpack_require__(8817);
 | |
| 
 | |
| /**
 | |
|  * A specialized version of `_.includes` for arrays without support for
 | |
|  * specifying an index to search from.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Array} [array] The array to inspect.
 | |
|  * @param {*} target The value to search for.
 | |
|  * @returns {boolean} Returns `true` if `target` is found, else `false`.
 | |
|  */
 | |
| function arrayIncludes(array, value) {
 | |
|   var length = array == null ? 0 : array.length;
 | |
|   return !!length && baseIndexOf(array, value, 0) > -1;
 | |
| }
 | |
| 
 | |
| module.exports = arrayIncludes;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 21796:
 | |
| /***/ ((module) => {
 | |
| 
 | |
| /**
 | |
|  * This function is like `arrayIncludes` except that it accepts a comparator.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Array} [array] The array to inspect.
 | |
|  * @param {*} target The value to search for.
 | |
|  * @param {Function} comparator The comparator invoked per element.
 | |
|  * @returns {boolean} Returns `true` if `target` is found, else `false`.
 | |
|  */
 | |
| function arrayIncludesWith(array, value, comparator) {
 | |
|   var index = -1,
 | |
|       length = array == null ? 0 : array.length;
 | |
| 
 | |
|   while (++index < length) {
 | |
|     if (comparator(value, array[index])) {
 | |
|       return true;
 | |
|     }
 | |
|   }
 | |
|   return false;
 | |
| }
 | |
| 
 | |
| module.exports = arrayIncludesWith;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 6446:
 | |
| /***/ ((module) => {
 | |
| 
 | |
| /**
 | |
|  * A specialized version of `_.reduce` for arrays without support for
 | |
|  * iteratee shorthands.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Array} [array] The array to iterate over.
 | |
|  * @param {Function} iteratee The function invoked per iteration.
 | |
|  * @param {*} [accumulator] The initial value.
 | |
|  * @param {boolean} [initAccum] Specify using the first element of `array` as
 | |
|  *  the initial value.
 | |
|  * @returns {*} Returns the accumulated value.
 | |
|  */
 | |
| function arrayReduce(array, iteratee, accumulator, initAccum) {
 | |
|   var index = -1,
 | |
|       length = array == null ? 0 : array.length;
 | |
| 
 | |
|   if (initAccum && length) {
 | |
|     accumulator = array[++index];
 | |
|   }
 | |
|   while (++index < length) {
 | |
|     accumulator = iteratee(accumulator, array[index], index, array);
 | |
|   }
 | |
|   return accumulator;
 | |
| }
 | |
| 
 | |
| module.exports = arrayReduce;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 90756:
 | |
| /***/ ((module) => {
 | |
| 
 | |
| /**
 | |
|  * A specialized version of `_.some` for arrays without support for iteratee
 | |
|  * shorthands.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Array} [array] The array to iterate over.
 | |
|  * @param {Function} predicate The function invoked per iteration.
 | |
|  * @returns {boolean} Returns `true` if any element passes the predicate check,
 | |
|  *  else `false`.
 | |
|  */
 | |
| function arraySome(array, predicate) {
 | |
|   var index = -1,
 | |
|       length = array == null ? 0 : array.length;
 | |
| 
 | |
|   while (++index < length) {
 | |
|     if (predicate(array[index], index, array)) {
 | |
|       return true;
 | |
|     }
 | |
|   }
 | |
|   return false;
 | |
| }
 | |
| 
 | |
| module.exports = arraySome;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 73140:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var baseAssignValue = __webpack_require__(88799),
 | |
|     eq = __webpack_require__(85638);
 | |
| 
 | |
| /**
 | |
|  * This function is like `assignValue` except that it doesn't assign
 | |
|  * `undefined` values.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Object} object The object to modify.
 | |
|  * @param {string} key The key of the property to assign.
 | |
|  * @param {*} value The value to assign.
 | |
|  */
 | |
| function assignMergeValue(object, key, value) {
 | |
|   if ((value !== undefined && !eq(object[key], value)) ||
 | |
|       (value === undefined && !(key in object))) {
 | |
|     baseAssignValue(object, key, value);
 | |
|   }
 | |
| }
 | |
| 
 | |
| module.exports = assignMergeValue;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 11005:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var SetCache = __webpack_require__(52485),
 | |
|     arrayIncludes = __webpack_require__(58095),
 | |
|     arrayIncludesWith = __webpack_require__(21796),
 | |
|     arrayMap = __webpack_require__(66070),
 | |
|     baseUnary = __webpack_require__(39334),
 | |
|     cacheHas = __webpack_require__(65581);
 | |
| 
 | |
| /** Used as the size to enable large array optimizations. */
 | |
| var LARGE_ARRAY_SIZE = 200;
 | |
| 
 | |
| /**
 | |
|  * The base implementation of methods like `_.difference` without support
 | |
|  * for excluding multiple arrays or iteratee shorthands.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Array} array The array to inspect.
 | |
|  * @param {Array} values The values to exclude.
 | |
|  * @param {Function} [iteratee] The iteratee invoked per element.
 | |
|  * @param {Function} [comparator] The comparator invoked per element.
 | |
|  * @returns {Array} Returns the new array of filtered values.
 | |
|  */
 | |
| function baseDifference(array, values, iteratee, comparator) {
 | |
|   var index = -1,
 | |
|       includes = arrayIncludes,
 | |
|       isCommon = true,
 | |
|       length = array.length,
 | |
|       result = [],
 | |
|       valuesLength = values.length;
 | |
| 
 | |
|   if (!length) {
 | |
|     return result;
 | |
|   }
 | |
|   if (iteratee) {
 | |
|     values = arrayMap(values, baseUnary(iteratee));
 | |
|   }
 | |
|   if (comparator) {
 | |
|     includes = arrayIncludesWith;
 | |
|     isCommon = false;
 | |
|   }
 | |
|   else if (values.length >= LARGE_ARRAY_SIZE) {
 | |
|     includes = cacheHas;
 | |
|     isCommon = false;
 | |
|     values = new SetCache(values);
 | |
|   }
 | |
|   outer:
 | |
|   while (++index < length) {
 | |
|     var value = array[index],
 | |
|         computed = iteratee == null ? value : iteratee(value);
 | |
| 
 | |
|     value = (comparator || value !== 0) ? value : 0;
 | |
|     if (isCommon && computed === computed) {
 | |
|       var valuesIndex = valuesLength;
 | |
|       while (valuesIndex--) {
 | |
|         if (values[valuesIndex] === computed) {
 | |
|           continue outer;
 | |
|         }
 | |
|       }
 | |
|       result.push(value);
 | |
|     }
 | |
|     else if (!includes(values, computed, comparator)) {
 | |
|       result.push(value);
 | |
|     }
 | |
|   }
 | |
|   return result;
 | |
| }
 | |
| 
 | |
| module.exports = baseDifference;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 52033:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var baseForOwn = __webpack_require__(26194),
 | |
|     createBaseEach = __webpack_require__(26789);
 | |
| 
 | |
| /**
 | |
|  * The base implementation of `_.forEach` without support for iteratee shorthands.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Array|Object} collection The collection to iterate over.
 | |
|  * @param {Function} iteratee The function invoked per iteration.
 | |
|  * @returns {Array|Object} Returns `collection`.
 | |
|  */
 | |
| var baseEach = createBaseEach(baseForOwn);
 | |
| 
 | |
| module.exports = baseEach;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 95372:
 | |
| /***/ ((module) => {
 | |
| 
 | |
| /**
 | |
|  * The base implementation of `_.findIndex` and `_.findLastIndex` without
 | |
|  * support for iteratee shorthands.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Array} array The array to inspect.
 | |
|  * @param {Function} predicate The function invoked per iteration.
 | |
|  * @param {number} fromIndex The index to search from.
 | |
|  * @param {boolean} [fromRight] Specify iterating from right to left.
 | |
|  * @returns {number} Returns the index of the matched value, else `-1`.
 | |
|  */
 | |
| function baseFindIndex(array, predicate, fromIndex, fromRight) {
 | |
|   var length = array.length,
 | |
|       index = fromIndex + (fromRight ? 1 : -1);
 | |
| 
 | |
|   while ((fromRight ? index-- : ++index < length)) {
 | |
|     if (predicate(array[index], index, array)) {
 | |
|       return index;
 | |
|     }
 | |
|   }
 | |
|   return -1;
 | |
| }
 | |
| 
 | |
| module.exports = baseFindIndex;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 49819:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var createBaseFor = __webpack_require__(18911);
 | |
| 
 | |
| /**
 | |
|  * The base implementation of `baseForOwn` which iterates over `object`
 | |
|  * properties returned by `keysFunc` and invokes `iteratee` for each property.
 | |
|  * Iteratee functions may exit iteration early by explicitly returning `false`.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Object} object The object to iterate over.
 | |
|  * @param {Function} iteratee The function invoked per iteration.
 | |
|  * @param {Function} keysFunc The function to get the keys of `object`.
 | |
|  * @returns {Object} Returns `object`.
 | |
|  */
 | |
| var baseFor = createBaseFor();
 | |
| 
 | |
| module.exports = baseFor;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 26194:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var baseFor = __webpack_require__(49819),
 | |
|     keys = __webpack_require__(50098);
 | |
| 
 | |
| /**
 | |
|  * The base implementation of `_.forOwn` without support for iteratee shorthands.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Object} object The object to iterate over.
 | |
|  * @param {Function} iteratee The function invoked per iteration.
 | |
|  * @returns {Object} Returns `object`.
 | |
|  */
 | |
| function baseForOwn(object, iteratee) {
 | |
|   return object && baseFor(object, iteratee, keys);
 | |
| }
 | |
| 
 | |
| module.exports = baseForOwn;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 8817:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var baseFindIndex = __webpack_require__(95372),
 | |
|     baseIsNaN = __webpack_require__(1129),
 | |
|     strictIndexOf = __webpack_require__(58263);
 | |
| 
 | |
| /**
 | |
|  * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Array} array The array to inspect.
 | |
|  * @param {*} value The value to search for.
 | |
|  * @param {number} fromIndex The index to search from.
 | |
|  * @returns {number} Returns the index of the matched value, else `-1`.
 | |
|  */
 | |
| function baseIndexOf(array, value, fromIndex) {
 | |
|   return value === value
 | |
|     ? strictIndexOf(array, value, fromIndex)
 | |
|     : baseFindIndex(array, baseIsNaN, fromIndex);
 | |
| }
 | |
| 
 | |
| module.exports = baseIndexOf;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 56006:
 | |
| /***/ ((module) => {
 | |
| 
 | |
| /**
 | |
|  * This function is like `baseIndexOf` except that it accepts a comparator.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Array} array The array to inspect.
 | |
|  * @param {*} value The value to search for.
 | |
|  * @param {number} fromIndex The index to search from.
 | |
|  * @param {Function} comparator The comparator invoked per element.
 | |
|  * @returns {number} Returns the index of the matched value, else `-1`.
 | |
|  */
 | |
| function baseIndexOfWith(array, value, fromIndex, comparator) {
 | |
|   var index = fromIndex - 1,
 | |
|       length = array.length;
 | |
| 
 | |
|   while (++index < length) {
 | |
|     if (comparator(array[index], value)) {
 | |
|       return index;
 | |
|     }
 | |
|   }
 | |
|   return -1;
 | |
| }
 | |
| 
 | |
| module.exports = baseIndexOfWith;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 96638:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var SetCache = __webpack_require__(52485),
 | |
|     arrayIncludes = __webpack_require__(58095),
 | |
|     arrayIncludesWith = __webpack_require__(21796),
 | |
|     arrayMap = __webpack_require__(66070),
 | |
|     baseUnary = __webpack_require__(39334),
 | |
|     cacheHas = __webpack_require__(65581);
 | |
| 
 | |
| /* Built-in method references for those with the same name as other `lodash` methods. */
 | |
| var nativeMin = Math.min;
 | |
| 
 | |
| /**
 | |
|  * The base implementation of methods like `_.intersection`, without support
 | |
|  * for iteratee shorthands, that accepts an array of arrays to inspect.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Array} arrays The arrays to inspect.
 | |
|  * @param {Function} [iteratee] The iteratee invoked per element.
 | |
|  * @param {Function} [comparator] The comparator invoked per element.
 | |
|  * @returns {Array} Returns the new array of shared values.
 | |
|  */
 | |
| function baseIntersection(arrays, iteratee, comparator) {
 | |
|   var includes = comparator ? arrayIncludesWith : arrayIncludes,
 | |
|       length = arrays[0].length,
 | |
|       othLength = arrays.length,
 | |
|       othIndex = othLength,
 | |
|       caches = Array(othLength),
 | |
|       maxLength = Infinity,
 | |
|       result = [];
 | |
| 
 | |
|   while (othIndex--) {
 | |
|     var array = arrays[othIndex];
 | |
|     if (othIndex && iteratee) {
 | |
|       array = arrayMap(array, baseUnary(iteratee));
 | |
|     }
 | |
|     maxLength = nativeMin(array.length, maxLength);
 | |
|     caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))
 | |
|       ? new SetCache(othIndex && array)
 | |
|       : undefined;
 | |
|   }
 | |
|   array = arrays[0];
 | |
| 
 | |
|   var index = -1,
 | |
|       seen = caches[0];
 | |
| 
 | |
|   outer:
 | |
|   while (++index < length && result.length < maxLength) {
 | |
|     var value = array[index],
 | |
|         computed = iteratee ? iteratee(value) : value;
 | |
| 
 | |
|     value = (comparator || value !== 0) ? value : 0;
 | |
|     if (!(seen
 | |
|           ? cacheHas(seen, computed)
 | |
|           : includes(result, computed, comparator)
 | |
|         )) {
 | |
|       othIndex = othLength;
 | |
|       while (--othIndex) {
 | |
|         var cache = caches[othIndex];
 | |
|         if (!(cache
 | |
|               ? cacheHas(cache, computed)
 | |
|               : includes(arrays[othIndex], computed, comparator))
 | |
|             ) {
 | |
|           continue outer;
 | |
|         }
 | |
|       }
 | |
|       if (seen) {
 | |
|         seen.push(computed);
 | |
|       }
 | |
|       result.push(value);
 | |
|     }
 | |
|   }
 | |
|   return result;
 | |
| }
 | |
| 
 | |
| module.exports = baseIntersection;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 32866:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var baseIsEqualDeep = __webpack_require__(12772),
 | |
|     isObjectLike = __webpack_require__(92360);
 | |
| 
 | |
| /**
 | |
|  * The base implementation of `_.isEqual` which supports partial comparisons
 | |
|  * and tracks traversed objects.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {*} value The value to compare.
 | |
|  * @param {*} other The other value to compare.
 | |
|  * @param {boolean} bitmask The bitmask flags.
 | |
|  *  1 - Unordered comparison
 | |
|  *  2 - Partial comparison
 | |
|  * @param {Function} [customizer] The function to customize comparisons.
 | |
|  * @param {Object} [stack] Tracks traversed `value` and `other` objects.
 | |
|  * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
 | |
|  */
 | |
| function baseIsEqual(value, other, bitmask, customizer, stack) {
 | |
|   if (value === other) {
 | |
|     return true;
 | |
|   }
 | |
|   if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
 | |
|     return value !== value && other !== other;
 | |
|   }
 | |
|   return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
 | |
| }
 | |
| 
 | |
| module.exports = baseIsEqual;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 12772:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var Stack = __webpack_require__(23694),
 | |
|     equalArrays = __webpack_require__(27042),
 | |
|     equalByTag = __webpack_require__(370),
 | |
|     equalObjects = __webpack_require__(39584),
 | |
|     getTag = __webpack_require__(3533),
 | |
|     isArray = __webpack_require__(19785),
 | |
|     isBuffer = __webpack_require__(43854),
 | |
|     isTypedArray = __webpack_require__(48519);
 | |
| 
 | |
| /** Used to compose bitmasks for value comparisons. */
 | |
| var COMPARE_PARTIAL_FLAG = 1;
 | |
| 
 | |
| /** `Object#toString` result references. */
 | |
| var argsTag = '[object Arguments]',
 | |
|     arrayTag = '[object Array]',
 | |
|     objectTag = '[object Object]';
 | |
| 
 | |
| /** Used for built-in method references. */
 | |
| var objectProto = Object.prototype;
 | |
| 
 | |
| /** Used to check objects for own properties. */
 | |
| var hasOwnProperty = objectProto.hasOwnProperty;
 | |
| 
 | |
| /**
 | |
|  * A specialized version of `baseIsEqual` for arrays and objects which performs
 | |
|  * deep comparisons and tracks traversed objects enabling objects with circular
 | |
|  * references to be compared.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Object} object The object to compare.
 | |
|  * @param {Object} other The other object to compare.
 | |
|  * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
 | |
|  * @param {Function} customizer The function to customize comparisons.
 | |
|  * @param {Function} equalFunc The function to determine equivalents of values.
 | |
|  * @param {Object} [stack] Tracks traversed `object` and `other` objects.
 | |
|  * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
 | |
|  */
 | |
| function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
 | |
|   var objIsArr = isArray(object),
 | |
|       othIsArr = isArray(other),
 | |
|       objTag = objIsArr ? arrayTag : getTag(object),
 | |
|       othTag = othIsArr ? arrayTag : getTag(other);
 | |
| 
 | |
|   objTag = objTag == argsTag ? objectTag : objTag;
 | |
|   othTag = othTag == argsTag ? objectTag : othTag;
 | |
| 
 | |
|   var objIsObj = objTag == objectTag,
 | |
|       othIsObj = othTag == objectTag,
 | |
|       isSameTag = objTag == othTag;
 | |
| 
 | |
|   if (isSameTag && isBuffer(object)) {
 | |
|     if (!isBuffer(other)) {
 | |
|       return false;
 | |
|     }
 | |
|     objIsArr = true;
 | |
|     objIsObj = false;
 | |
|   }
 | |
|   if (isSameTag && !objIsObj) {
 | |
|     stack || (stack = new Stack);
 | |
|     return (objIsArr || isTypedArray(object))
 | |
|       ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
 | |
|       : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
 | |
|   }
 | |
|   if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
 | |
|     var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
 | |
|         othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
 | |
| 
 | |
|     if (objIsWrapped || othIsWrapped) {
 | |
|       var objUnwrapped = objIsWrapped ? object.value() : object,
 | |
|           othUnwrapped = othIsWrapped ? other.value() : other;
 | |
| 
 | |
|       stack || (stack = new Stack);
 | |
|       return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
 | |
|     }
 | |
|   }
 | |
|   if (!isSameTag) {
 | |
|     return false;
 | |
|   }
 | |
|   stack || (stack = new Stack);
 | |
|   return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
 | |
| }
 | |
| 
 | |
| module.exports = baseIsEqualDeep;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 19850:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var Stack = __webpack_require__(23694),
 | |
|     baseIsEqual = __webpack_require__(32866);
 | |
| 
 | |
| /** Used to compose bitmasks for value comparisons. */
 | |
| var COMPARE_PARTIAL_FLAG = 1,
 | |
|     COMPARE_UNORDERED_FLAG = 2;
 | |
| 
 | |
| /**
 | |
|  * The base implementation of `_.isMatch` without support for iteratee shorthands.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Object} object The object to inspect.
 | |
|  * @param {Object} source The object of property values to match.
 | |
|  * @param {Array} matchData The property names, values, and compare flags to match.
 | |
|  * @param {Function} [customizer] The function to customize comparisons.
 | |
|  * @returns {boolean} Returns `true` if `object` is a match, else `false`.
 | |
|  */
 | |
| function baseIsMatch(object, source, matchData, customizer) {
 | |
|   var index = matchData.length,
 | |
|       length = index,
 | |
|       noCustomizer = !customizer;
 | |
| 
 | |
|   if (object == null) {
 | |
|     return !length;
 | |
|   }
 | |
|   object = Object(object);
 | |
|   while (index--) {
 | |
|     var data = matchData[index];
 | |
|     if ((noCustomizer && data[2])
 | |
|           ? data[1] !== object[data[0]]
 | |
|           : !(data[0] in object)
 | |
|         ) {
 | |
|       return false;
 | |
|     }
 | |
|   }
 | |
|   while (++index < length) {
 | |
|     data = matchData[index];
 | |
|     var key = data[0],
 | |
|         objValue = object[key],
 | |
|         srcValue = data[1];
 | |
| 
 | |
|     if (noCustomizer && data[2]) {
 | |
|       if (objValue === undefined && !(key in object)) {
 | |
|         return false;
 | |
|       }
 | |
|     } else {
 | |
|       var stack = new Stack;
 | |
|       if (customizer) {
 | |
|         var result = customizer(objValue, srcValue, key, object, source, stack);
 | |
|       }
 | |
|       if (!(result === undefined
 | |
|             ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)
 | |
|             : result
 | |
|           )) {
 | |
|         return false;
 | |
|       }
 | |
|     }
 | |
|   }
 | |
|   return true;
 | |
| }
 | |
| 
 | |
| module.exports = baseIsMatch;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 1129:
 | |
| /***/ ((module) => {
 | |
| 
 | |
| /**
 | |
|  * The base implementation of `_.isNaN` without support for number objects.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {*} value The value to check.
 | |
|  * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
 | |
|  */
 | |
| function baseIsNaN(value) {
 | |
|   return value !== value;
 | |
| }
 | |
| 
 | |
| module.exports = baseIsNaN;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 89278:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var baseMatches = __webpack_require__(71410),
 | |
|     baseMatchesProperty = __webpack_require__(57518),
 | |
|     identity = __webpack_require__(31137),
 | |
|     isArray = __webpack_require__(19785),
 | |
|     property = __webpack_require__(96001);
 | |
| 
 | |
| /**
 | |
|  * The base implementation of `_.iteratee`.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {*} [value=_.identity] The value to convert to an iteratee.
 | |
|  * @returns {Function} Returns the iteratee.
 | |
|  */
 | |
| function baseIteratee(value) {
 | |
|   // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
 | |
|   // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
 | |
|   if (typeof value == 'function') {
 | |
|     return value;
 | |
|   }
 | |
|   if (value == null) {
 | |
|     return identity;
 | |
|   }
 | |
|   if (typeof value == 'object') {
 | |
|     return isArray(value)
 | |
|       ? baseMatchesProperty(value[0], value[1])
 | |
|       : baseMatches(value);
 | |
|   }
 | |
|   return property(value);
 | |
| }
 | |
| 
 | |
| module.exports = baseIteratee;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 67375:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var baseEach = __webpack_require__(52033),
 | |
|     isArrayLike = __webpack_require__(80068);
 | |
| 
 | |
| /**
 | |
|  * The base implementation of `_.map` without support for iteratee shorthands.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Array|Object} collection The collection to iterate over.
 | |
|  * @param {Function} iteratee The function invoked per iteration.
 | |
|  * @returns {Array} Returns the new mapped array.
 | |
|  */
 | |
| function baseMap(collection, iteratee) {
 | |
|   var index = -1,
 | |
|       result = isArrayLike(collection) ? Array(collection.length) : [];
 | |
| 
 | |
|   baseEach(collection, function(value, key, collection) {
 | |
|     result[++index] = iteratee(value, key, collection);
 | |
|   });
 | |
|   return result;
 | |
| }
 | |
| 
 | |
| module.exports = baseMap;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 71410:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var baseIsMatch = __webpack_require__(19850),
 | |
|     getMatchData = __webpack_require__(68125),
 | |
|     matchesStrictComparable = __webpack_require__(65042);
 | |
| 
 | |
| /**
 | |
|  * The base implementation of `_.matches` which doesn't clone `source`.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Object} source The object of property values to match.
 | |
|  * @returns {Function} Returns the new spec function.
 | |
|  */
 | |
| function baseMatches(source) {
 | |
|   var matchData = getMatchData(source);
 | |
|   if (matchData.length == 1 && matchData[0][2]) {
 | |
|     return matchesStrictComparable(matchData[0][0], matchData[0][1]);
 | |
|   }
 | |
|   return function(object) {
 | |
|     return object === source || baseIsMatch(object, source, matchData);
 | |
|   };
 | |
| }
 | |
| 
 | |
| module.exports = baseMatches;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 57518:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var baseIsEqual = __webpack_require__(32866),
 | |
|     get = __webpack_require__(99729),
 | |
|     hasIn = __webpack_require__(79749),
 | |
|     isKey = __webpack_require__(40318),
 | |
|     isStrictComparable = __webpack_require__(68302),
 | |
|     matchesStrictComparable = __webpack_require__(65042),
 | |
|     toKey = __webpack_require__(37948);
 | |
| 
 | |
| /** Used to compose bitmasks for value comparisons. */
 | |
| var COMPARE_PARTIAL_FLAG = 1,
 | |
|     COMPARE_UNORDERED_FLAG = 2;
 | |
| 
 | |
| /**
 | |
|  * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {string} path The path of the property to get.
 | |
|  * @param {*} srcValue The value to match.
 | |
|  * @returns {Function} Returns the new spec function.
 | |
|  */
 | |
| function baseMatchesProperty(path, srcValue) {
 | |
|   if (isKey(path) && isStrictComparable(srcValue)) {
 | |
|     return matchesStrictComparable(toKey(path), srcValue);
 | |
|   }
 | |
|   return function(object) {
 | |
|     var objValue = get(object, path);
 | |
|     return (objValue === undefined && objValue === srcValue)
 | |
|       ? hasIn(object, path)
 | |
|       : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
 | |
|   };
 | |
| }
 | |
| 
 | |
| module.exports = baseMatchesProperty;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 40015:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var Stack = __webpack_require__(23694),
 | |
|     assignMergeValue = __webpack_require__(73140),
 | |
|     baseFor = __webpack_require__(49819),
 | |
|     baseMergeDeep = __webpack_require__(68867),
 | |
|     isObject = __webpack_require__(11611),
 | |
|     keysIn = __webpack_require__(53893),
 | |
|     safeGet = __webpack_require__(97494);
 | |
| 
 | |
| /**
 | |
|  * The base implementation of `_.merge` without support for multiple sources.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Object} object The destination object.
 | |
|  * @param {Object} source The source object.
 | |
|  * @param {number} srcIndex The index of `source`.
 | |
|  * @param {Function} [customizer] The function to customize merged values.
 | |
|  * @param {Object} [stack] Tracks traversed source values and their merged
 | |
|  *  counterparts.
 | |
|  */
 | |
| function baseMerge(object, source, srcIndex, customizer, stack) {
 | |
|   if (object === source) {
 | |
|     return;
 | |
|   }
 | |
|   baseFor(source, function(srcValue, key) {
 | |
|     stack || (stack = new Stack);
 | |
|     if (isObject(srcValue)) {
 | |
|       baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
 | |
|     }
 | |
|     else {
 | |
|       var newValue = customizer
 | |
|         ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)
 | |
|         : undefined;
 | |
| 
 | |
|       if (newValue === undefined) {
 | |
|         newValue = srcValue;
 | |
|       }
 | |
|       assignMergeValue(object, key, newValue);
 | |
|     }
 | |
|   }, keysIn);
 | |
| }
 | |
| 
 | |
| module.exports = baseMerge;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 68867:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var assignMergeValue = __webpack_require__(73140),
 | |
|     cloneBuffer = __webpack_require__(2734),
 | |
|     cloneTypedArray = __webpack_require__(63428),
 | |
|     copyArray = __webpack_require__(37561),
 | |
|     initCloneObject = __webpack_require__(9560),
 | |
|     isArguments = __webpack_require__(2900),
 | |
|     isArray = __webpack_require__(19785),
 | |
|     isArrayLikeObject = __webpack_require__(36468),
 | |
|     isBuffer = __webpack_require__(43854),
 | |
|     isFunction = __webpack_require__(28338),
 | |
|     isObject = __webpack_require__(11611),
 | |
|     isPlainObject = __webpack_require__(40861),
 | |
|     isTypedArray = __webpack_require__(48519),
 | |
|     safeGet = __webpack_require__(97494),
 | |
|     toPlainObject = __webpack_require__(89328);
 | |
| 
 | |
| /**
 | |
|  * A specialized version of `baseMerge` for arrays and objects which performs
 | |
|  * deep merges and tracks traversed objects enabling objects with circular
 | |
|  * references to be merged.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Object} object The destination object.
 | |
|  * @param {Object} source The source object.
 | |
|  * @param {string} key The key of the value to merge.
 | |
|  * @param {number} srcIndex The index of `source`.
 | |
|  * @param {Function} mergeFunc The function to merge values.
 | |
|  * @param {Function} [customizer] The function to customize assigned values.
 | |
|  * @param {Object} [stack] Tracks traversed source values and their merged
 | |
|  *  counterparts.
 | |
|  */
 | |
| function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
 | |
|   var objValue = safeGet(object, key),
 | |
|       srcValue = safeGet(source, key),
 | |
|       stacked = stack.get(srcValue);
 | |
| 
 | |
|   if (stacked) {
 | |
|     assignMergeValue(object, key, stacked);
 | |
|     return;
 | |
|   }
 | |
|   var newValue = customizer
 | |
|     ? customizer(objValue, srcValue, (key + ''), object, source, stack)
 | |
|     : undefined;
 | |
| 
 | |
|   var isCommon = newValue === undefined;
 | |
| 
 | |
|   if (isCommon) {
 | |
|     var isArr = isArray(srcValue),
 | |
|         isBuff = !isArr && isBuffer(srcValue),
 | |
|         isTyped = !isArr && !isBuff && isTypedArray(srcValue);
 | |
| 
 | |
|     newValue = srcValue;
 | |
|     if (isArr || isBuff || isTyped) {
 | |
|       if (isArray(objValue)) {
 | |
|         newValue = objValue;
 | |
|       }
 | |
|       else if (isArrayLikeObject(objValue)) {
 | |
|         newValue = copyArray(objValue);
 | |
|       }
 | |
|       else if (isBuff) {
 | |
|         isCommon = false;
 | |
|         newValue = cloneBuffer(srcValue, true);
 | |
|       }
 | |
|       else if (isTyped) {
 | |
|         isCommon = false;
 | |
|         newValue = cloneTypedArray(srcValue, true);
 | |
|       }
 | |
|       else {
 | |
|         newValue = [];
 | |
|       }
 | |
|     }
 | |
|     else if (isPlainObject(srcValue) || isArguments(srcValue)) {
 | |
|       newValue = objValue;
 | |
|       if (isArguments(objValue)) {
 | |
|         newValue = toPlainObject(objValue);
 | |
|       }
 | |
|       else if (!isObject(objValue) || isFunction(objValue)) {
 | |
|         newValue = initCloneObject(srcValue);
 | |
|       }
 | |
|     }
 | |
|     else {
 | |
|       isCommon = false;
 | |
|     }
 | |
|   }
 | |
|   if (isCommon) {
 | |
|     // Recursively merge objects and arrays (susceptible to call stack limits).
 | |
|     stack.set(srcValue, newValue);
 | |
|     mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
 | |
|     stack['delete'](srcValue);
 | |
|   }
 | |
|   assignMergeValue(object, key, newValue);
 | |
| }
 | |
| 
 | |
| module.exports = baseMergeDeep;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 98497:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var arrayMap = __webpack_require__(66070),
 | |
|     baseGet = __webpack_require__(79867),
 | |
|     baseIteratee = __webpack_require__(89278),
 | |
|     baseMap = __webpack_require__(67375),
 | |
|     baseSortBy = __webpack_require__(73303),
 | |
|     baseUnary = __webpack_require__(39334),
 | |
|     compareMultiple = __webpack_require__(96348),
 | |
|     identity = __webpack_require__(31137),
 | |
|     isArray = __webpack_require__(19785);
 | |
| 
 | |
| /**
 | |
|  * The base implementation of `_.orderBy` without param guards.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Array|Object} collection The collection to iterate over.
 | |
|  * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.
 | |
|  * @param {string[]} orders The sort orders of `iteratees`.
 | |
|  * @returns {Array} Returns the new sorted array.
 | |
|  */
 | |
| function baseOrderBy(collection, iteratees, orders) {
 | |
|   if (iteratees.length) {
 | |
|     iteratees = arrayMap(iteratees, function(iteratee) {
 | |
|       if (isArray(iteratee)) {
 | |
|         return function(value) {
 | |
|           return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);
 | |
|         }
 | |
|       }
 | |
|       return iteratee;
 | |
|     });
 | |
|   } else {
 | |
|     iteratees = [identity];
 | |
|   }
 | |
| 
 | |
|   var index = -1;
 | |
|   iteratees = arrayMap(iteratees, baseUnary(baseIteratee));
 | |
| 
 | |
|   var result = baseMap(collection, function(value, key, collection) {
 | |
|     var criteria = arrayMap(iteratees, function(iteratee) {
 | |
|       return iteratee(value);
 | |
|     });
 | |
|     return { 'criteria': criteria, 'index': ++index, 'value': value };
 | |
|   });
 | |
| 
 | |
|   return baseSortBy(result, function(object, other) {
 | |
|     return compareMultiple(object, other, orders);
 | |
|   });
 | |
| }
 | |
| 
 | |
| module.exports = baseOrderBy;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 50517:
 | |
| /***/ ((module) => {
 | |
| 
 | |
| /**
 | |
|  * The base implementation of `_.property` without support for deep paths.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {string} key The key of the property to get.
 | |
|  * @returns {Function} Returns the new accessor function.
 | |
|  */
 | |
| function baseProperty(key) {
 | |
|   return function(object) {
 | |
|     return object == null ? undefined : object[key];
 | |
|   };
 | |
| }
 | |
| 
 | |
| module.exports = baseProperty;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 10301:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var baseGet = __webpack_require__(79867);
 | |
| 
 | |
| /**
 | |
|  * A specialized version of `baseProperty` which supports deep paths.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Array|string} path The path of the property to get.
 | |
|  * @returns {Function} Returns the new accessor function.
 | |
|  */
 | |
| function basePropertyDeep(path) {
 | |
|   return function(object) {
 | |
|     return baseGet(object, path);
 | |
|   };
 | |
| }
 | |
| 
 | |
| module.exports = basePropertyDeep;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 61933:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var arrayMap = __webpack_require__(66070),
 | |
|     baseIndexOf = __webpack_require__(8817),
 | |
|     baseIndexOfWith = __webpack_require__(56006),
 | |
|     baseUnary = __webpack_require__(39334),
 | |
|     copyArray = __webpack_require__(37561);
 | |
| 
 | |
| /** Used for built-in method references. */
 | |
| var arrayProto = Array.prototype;
 | |
| 
 | |
| /** Built-in value references. */
 | |
| var splice = arrayProto.splice;
 | |
| 
 | |
| /**
 | |
|  * The base implementation of `_.pullAllBy` without support for iteratee
 | |
|  * shorthands.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Array} array The array to modify.
 | |
|  * @param {Array} values The values to remove.
 | |
|  * @param {Function} [iteratee] The iteratee invoked per element.
 | |
|  * @param {Function} [comparator] The comparator invoked per element.
 | |
|  * @returns {Array} Returns `array`.
 | |
|  */
 | |
| function basePullAll(array, values, iteratee, comparator) {
 | |
|   var indexOf = comparator ? baseIndexOfWith : baseIndexOf,
 | |
|       index = -1,
 | |
|       length = values.length,
 | |
|       seen = array;
 | |
| 
 | |
|   if (array === values) {
 | |
|     values = copyArray(values);
 | |
|   }
 | |
|   if (iteratee) {
 | |
|     seen = arrayMap(array, baseUnary(iteratee));
 | |
|   }
 | |
|   while (++index < length) {
 | |
|     var fromIndex = 0,
 | |
|         value = values[index],
 | |
|         computed = iteratee ? iteratee(value) : value;
 | |
| 
 | |
|     while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {
 | |
|       if (seen !== array) {
 | |
|         splice.call(seen, fromIndex, 1);
 | |
|       }
 | |
|       splice.call(array, fromIndex, 1);
 | |
|     }
 | |
|   }
 | |
|   return array;
 | |
| }
 | |
| 
 | |
| module.exports = basePullAll;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 19356:
 | |
| /***/ ((module) => {
 | |
| 
 | |
| /**
 | |
|  * The base implementation of `_.reduce` and `_.reduceRight`, without support
 | |
|  * for iteratee shorthands, which iterates over `collection` using `eachFunc`.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Array|Object} collection The collection to iterate over.
 | |
|  * @param {Function} iteratee The function invoked per iteration.
 | |
|  * @param {*} accumulator The initial value.
 | |
|  * @param {boolean} initAccum Specify using the first or last element of
 | |
|  *  `collection` as the initial value.
 | |
|  * @param {Function} eachFunc The function to iterate over `collection`.
 | |
|  * @returns {*} Returns the accumulated value.
 | |
|  */
 | |
| function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
 | |
|   eachFunc(collection, function(value, index, collection) {
 | |
|     accumulator = initAccum
 | |
|       ? (initAccum = false, value)
 | |
|       : iteratee(accumulator, value, index, collection);
 | |
|   });
 | |
|   return accumulator;
 | |
| }
 | |
| 
 | |
| module.exports = baseReduce;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 1197:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var identity = __webpack_require__(31137),
 | |
|     overRest = __webpack_require__(11871),
 | |
|     setToString = __webpack_require__(63132);
 | |
| 
 | |
| /**
 | |
|  * The base implementation of `_.rest` which doesn't validate or coerce arguments.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Function} func The function to apply a rest parameter to.
 | |
|  * @param {number} [start=func.length-1] The start position of the rest parameter.
 | |
|  * @returns {Function} Returns the new function.
 | |
|  */
 | |
| function baseRest(func, start) {
 | |
|   return setToString(overRest(func, start, identity), func + '');
 | |
| }
 | |
| 
 | |
| module.exports = baseRest;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 73303:
 | |
| /***/ ((module) => {
 | |
| 
 | |
| /**
 | |
|  * The base implementation of `_.sortBy` which uses `comparer` to define the
 | |
|  * sort order of `array` and replaces criteria objects with their corresponding
 | |
|  * values.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Array} array The array to sort.
 | |
|  * @param {Function} comparer The function to define sort order.
 | |
|  * @returns {Array} Returns `array`.
 | |
|  */
 | |
| function baseSortBy(array, comparer) {
 | |
|   var length = array.length;
 | |
| 
 | |
|   array.sort(comparer);
 | |
|   while (length--) {
 | |
|     array[length] = array[length].value;
 | |
|   }
 | |
|   return array;
 | |
| }
 | |
| 
 | |
| module.exports = baseSortBy;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 74833:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var trimmedEndIndex = __webpack_require__(56127);
 | |
| 
 | |
| /** Used to match leading whitespace. */
 | |
| var reTrimStart = /^\s+/;
 | |
| 
 | |
| /**
 | |
|  * The base implementation of `_.trim`.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {string} string The string to trim.
 | |
|  * @returns {string} Returns the trimmed string.
 | |
|  */
 | |
| function baseTrim(string) {
 | |
|   return string
 | |
|     ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')
 | |
|     : string;
 | |
| }
 | |
| 
 | |
| module.exports = baseTrim;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 92198:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var SetCache = __webpack_require__(52485),
 | |
|     arrayIncludes = __webpack_require__(58095),
 | |
|     arrayIncludesWith = __webpack_require__(21796),
 | |
|     cacheHas = __webpack_require__(65581),
 | |
|     createSet = __webpack_require__(47111),
 | |
|     setToArray = __webpack_require__(43735);
 | |
| 
 | |
| /** Used as the size to enable large array optimizations. */
 | |
| var LARGE_ARRAY_SIZE = 200;
 | |
| 
 | |
| /**
 | |
|  * The base implementation of `_.uniqBy` without support for iteratee shorthands.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Array} array The array to inspect.
 | |
|  * @param {Function} [iteratee] The iteratee invoked per element.
 | |
|  * @param {Function} [comparator] The comparator invoked per element.
 | |
|  * @returns {Array} Returns the new duplicate free array.
 | |
|  */
 | |
| function baseUniq(array, iteratee, comparator) {
 | |
|   var index = -1,
 | |
|       includes = arrayIncludes,
 | |
|       length = array.length,
 | |
|       isCommon = true,
 | |
|       result = [],
 | |
|       seen = result;
 | |
| 
 | |
|   if (comparator) {
 | |
|     isCommon = false;
 | |
|     includes = arrayIncludesWith;
 | |
|   }
 | |
|   else if (length >= LARGE_ARRAY_SIZE) {
 | |
|     var set = iteratee ? null : createSet(array);
 | |
|     if (set) {
 | |
|       return setToArray(set);
 | |
|     }
 | |
|     isCommon = false;
 | |
|     includes = cacheHas;
 | |
|     seen = new SetCache;
 | |
|   }
 | |
|   else {
 | |
|     seen = iteratee ? [] : result;
 | |
|   }
 | |
|   outer:
 | |
|   while (++index < length) {
 | |
|     var value = array[index],
 | |
|         computed = iteratee ? iteratee(value) : value;
 | |
| 
 | |
|     value = (comparator || value !== 0) ? value : 0;
 | |
|     if (isCommon && computed === computed) {
 | |
|       var seenIndex = seen.length;
 | |
|       while (seenIndex--) {
 | |
|         if (seen[seenIndex] === computed) {
 | |
|           continue outer;
 | |
|         }
 | |
|       }
 | |
|       if (iteratee) {
 | |
|         seen.push(computed);
 | |
|       }
 | |
|       result.push(value);
 | |
|     }
 | |
|     else if (!includes(seen, computed, comparator)) {
 | |
|       if (seen !== result) {
 | |
|         seen.push(computed);
 | |
|       }
 | |
|       result.push(value);
 | |
|     }
 | |
|   }
 | |
|   return result;
 | |
| }
 | |
| 
 | |
| module.exports = baseUniq;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 65581:
 | |
| /***/ ((module) => {
 | |
| 
 | |
| /**
 | |
|  * Checks if a `cache` value for `key` exists.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Object} cache The cache to query.
 | |
|  * @param {string} key The key of the entry to check.
 | |
|  * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
 | |
|  */
 | |
| function cacheHas(cache, key) {
 | |
|   return cache.has(key);
 | |
| }
 | |
| 
 | |
| module.exports = cacheHas;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 60923:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var isArrayLikeObject = __webpack_require__(36468);
 | |
| 
 | |
| /**
 | |
|  * Casts `value` to an empty array if it's not an array like object.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {*} value The value to inspect.
 | |
|  * @returns {Array|Object} Returns the cast array-like object.
 | |
|  */
 | |
| function castArrayLikeObject(value) {
 | |
|   return isArrayLikeObject(value) ? value : [];
 | |
| }
 | |
| 
 | |
| module.exports = castArrayLikeObject;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 62079:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var identity = __webpack_require__(31137);
 | |
| 
 | |
| /**
 | |
|  * Casts `value` to `identity` if it's not a function.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {*} value The value to inspect.
 | |
|  * @returns {Function} Returns cast function.
 | |
|  */
 | |
| function castFunction(value) {
 | |
|   return typeof value == 'function' ? value : identity;
 | |
| }
 | |
| 
 | |
| module.exports = castFunction;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 17845:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var isSymbol = __webpack_require__(55193);
 | |
| 
 | |
| /**
 | |
|  * Compares values to sort them in ascending order.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {*} value The value to compare.
 | |
|  * @param {*} other The other value to compare.
 | |
|  * @returns {number} Returns the sort order indicator for `value`.
 | |
|  */
 | |
| function compareAscending(value, other) {
 | |
|   if (value !== other) {
 | |
|     var valIsDefined = value !== undefined,
 | |
|         valIsNull = value === null,
 | |
|         valIsReflexive = value === value,
 | |
|         valIsSymbol = isSymbol(value);
 | |
| 
 | |
|     var othIsDefined = other !== undefined,
 | |
|         othIsNull = other === null,
 | |
|         othIsReflexive = other === other,
 | |
|         othIsSymbol = isSymbol(other);
 | |
| 
 | |
|     if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||
 | |
|         (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||
 | |
|         (valIsNull && othIsDefined && othIsReflexive) ||
 | |
|         (!valIsDefined && othIsReflexive) ||
 | |
|         !valIsReflexive) {
 | |
|       return 1;
 | |
|     }
 | |
|     if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||
 | |
|         (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||
 | |
|         (othIsNull && valIsDefined && valIsReflexive) ||
 | |
|         (!othIsDefined && valIsReflexive) ||
 | |
|         !othIsReflexive) {
 | |
|       return -1;
 | |
|     }
 | |
|   }
 | |
|   return 0;
 | |
| }
 | |
| 
 | |
| module.exports = compareAscending;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 96348:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var compareAscending = __webpack_require__(17845);
 | |
| 
 | |
| /**
 | |
|  * Used by `_.orderBy` to compare multiple properties of a value to another
 | |
|  * and stable sort them.
 | |
|  *
 | |
|  * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,
 | |
|  * specify an order of "desc" for descending or "asc" for ascending sort order
 | |
|  * of corresponding values.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Object} object The object to compare.
 | |
|  * @param {Object} other The other object to compare.
 | |
|  * @param {boolean[]|string[]} orders The order to sort by for each property.
 | |
|  * @returns {number} Returns the sort order indicator for `object`.
 | |
|  */
 | |
| function compareMultiple(object, other, orders) {
 | |
|   var index = -1,
 | |
|       objCriteria = object.criteria,
 | |
|       othCriteria = other.criteria,
 | |
|       length = objCriteria.length,
 | |
|       ordersLength = orders.length;
 | |
| 
 | |
|   while (++index < length) {
 | |
|     var result = compareAscending(objCriteria[index], othCriteria[index]);
 | |
|     if (result) {
 | |
|       if (index >= ordersLength) {
 | |
|         return result;
 | |
|       }
 | |
|       var order = orders[index];
 | |
|       return result * (order == 'desc' ? -1 : 1);
 | |
|     }
 | |
|   }
 | |
|   // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications
 | |
|   // that causes it, under certain circumstances, to provide the same value for
 | |
|   // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247
 | |
|   // for more details.
 | |
|   //
 | |
|   // This also ensures a stable sort in V8 and other engines.
 | |
|   // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.
 | |
|   return object.index - other.index;
 | |
| }
 | |
| 
 | |
| module.exports = compareMultiple;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 7270:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var baseRest = __webpack_require__(1197),
 | |
|     isIterateeCall = __webpack_require__(57535);
 | |
| 
 | |
| /**
 | |
|  * Creates a function like `_.assign`.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Function} assigner The function to assign values.
 | |
|  * @returns {Function} Returns the new assigner function.
 | |
|  */
 | |
| function createAssigner(assigner) {
 | |
|   return baseRest(function(object, sources) {
 | |
|     var index = -1,
 | |
|         length = sources.length,
 | |
|         customizer = length > 1 ? sources[length - 1] : undefined,
 | |
|         guard = length > 2 ? sources[2] : undefined;
 | |
| 
 | |
|     customizer = (assigner.length > 3 && typeof customizer == 'function')
 | |
|       ? (length--, customizer)
 | |
|       : undefined;
 | |
| 
 | |
|     if (guard && isIterateeCall(sources[0], sources[1], guard)) {
 | |
|       customizer = length < 3 ? undefined : customizer;
 | |
|       length = 1;
 | |
|     }
 | |
|     object = Object(object);
 | |
|     while (++index < length) {
 | |
|       var source = sources[index];
 | |
|       if (source) {
 | |
|         assigner(object, source, index, customizer);
 | |
|       }
 | |
|     }
 | |
|     return object;
 | |
|   });
 | |
| }
 | |
| 
 | |
| module.exports = createAssigner;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 26789:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var isArrayLike = __webpack_require__(80068);
 | |
| 
 | |
| /**
 | |
|  * Creates a `baseEach` or `baseEachRight` function.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Function} eachFunc The function to iterate over a collection.
 | |
|  * @param {boolean} [fromRight] Specify iterating from right to left.
 | |
|  * @returns {Function} Returns the new base function.
 | |
|  */
 | |
| function createBaseEach(eachFunc, fromRight) {
 | |
|   return function(collection, iteratee) {
 | |
|     if (collection == null) {
 | |
|       return collection;
 | |
|     }
 | |
|     if (!isArrayLike(collection)) {
 | |
|       return eachFunc(collection, iteratee);
 | |
|     }
 | |
|     var length = collection.length,
 | |
|         index = fromRight ? length : -1,
 | |
|         iterable = Object(collection);
 | |
| 
 | |
|     while ((fromRight ? index-- : ++index < length)) {
 | |
|       if (iteratee(iterable[index], index, iterable) === false) {
 | |
|         break;
 | |
|       }
 | |
|     }
 | |
|     return collection;
 | |
|   };
 | |
| }
 | |
| 
 | |
| module.exports = createBaseEach;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 18911:
 | |
| /***/ ((module) => {
 | |
| 
 | |
| /**
 | |
|  * Creates a base function for methods like `_.forIn` and `_.forOwn`.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {boolean} [fromRight] Specify iterating from right to left.
 | |
|  * @returns {Function} Returns the new base function.
 | |
|  */
 | |
| function createBaseFor(fromRight) {
 | |
|   return function(object, iteratee, keysFunc) {
 | |
|     var index = -1,
 | |
|         iterable = Object(object),
 | |
|         props = keysFunc(object),
 | |
|         length = props.length;
 | |
| 
 | |
|     while (length--) {
 | |
|       var key = props[fromRight ? length : ++index];
 | |
|       if (iteratee(iterable[key], key, iterable) === false) {
 | |
|         break;
 | |
|       }
 | |
|     }
 | |
|     return object;
 | |
|   };
 | |
| }
 | |
| 
 | |
| module.exports = createBaseFor;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 47111:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var Set = __webpack_require__(46151),
 | |
|     noop = __webpack_require__(50344),
 | |
|     setToArray = __webpack_require__(43735);
 | |
| 
 | |
| /** Used as references for various `Number` constants. */
 | |
| var INFINITY = 1 / 0;
 | |
| 
 | |
| /**
 | |
|  * Creates a set object of `values`.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Array} values The values to add to the set.
 | |
|  * @returns {Object} Returns the new set.
 | |
|  */
 | |
| var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {
 | |
|   return new Set(values);
 | |
| };
 | |
| 
 | |
| module.exports = createSet;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 19491:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var baseMerge = __webpack_require__(40015),
 | |
|     isObject = __webpack_require__(11611);
 | |
| 
 | |
| /**
 | |
|  * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source
 | |
|  * objects into destination objects that are passed thru.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {*} objValue The destination value.
 | |
|  * @param {*} srcValue The source value.
 | |
|  * @param {string} key The key of the property to merge.
 | |
|  * @param {Object} object The parent object of `objValue`.
 | |
|  * @param {Object} source The parent object of `srcValue`.
 | |
|  * @param {Object} [stack] Tracks traversed source values and their merged
 | |
|  *  counterparts.
 | |
|  * @returns {*} Returns the value to assign.
 | |
|  */
 | |
| function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {
 | |
|   if (isObject(objValue) && isObject(srcValue)) {
 | |
|     // Recursively merge objects and arrays (susceptible to call stack limits).
 | |
|     stack.set(srcValue, objValue);
 | |
|     baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);
 | |
|     stack['delete'](srcValue);
 | |
|   }
 | |
|   return objValue;
 | |
| }
 | |
| 
 | |
| module.exports = customDefaultsMerge;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 27042:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var SetCache = __webpack_require__(52485),
 | |
|     arraySome = __webpack_require__(90756),
 | |
|     cacheHas = __webpack_require__(65581);
 | |
| 
 | |
| /** Used to compose bitmasks for value comparisons. */
 | |
| var COMPARE_PARTIAL_FLAG = 1,
 | |
|     COMPARE_UNORDERED_FLAG = 2;
 | |
| 
 | |
| /**
 | |
|  * A specialized version of `baseIsEqualDeep` for arrays with support for
 | |
|  * partial deep comparisons.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Array} array The array to compare.
 | |
|  * @param {Array} other The other array to compare.
 | |
|  * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
 | |
|  * @param {Function} customizer The function to customize comparisons.
 | |
|  * @param {Function} equalFunc The function to determine equivalents of values.
 | |
|  * @param {Object} stack Tracks traversed `array` and `other` objects.
 | |
|  * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
 | |
|  */
 | |
| function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
 | |
|   var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
 | |
|       arrLength = array.length,
 | |
|       othLength = other.length;
 | |
| 
 | |
|   if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
 | |
|     return false;
 | |
|   }
 | |
|   // Check that cyclic values are equal.
 | |
|   var arrStacked = stack.get(array);
 | |
|   var othStacked = stack.get(other);
 | |
|   if (arrStacked && othStacked) {
 | |
|     return arrStacked == other && othStacked == array;
 | |
|   }
 | |
|   var index = -1,
 | |
|       result = true,
 | |
|       seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;
 | |
| 
 | |
|   stack.set(array, other);
 | |
|   stack.set(other, array);
 | |
| 
 | |
|   // Ignore non-index properties.
 | |
|   while (++index < arrLength) {
 | |
|     var arrValue = array[index],
 | |
|         othValue = other[index];
 | |
| 
 | |
|     if (customizer) {
 | |
|       var compared = isPartial
 | |
|         ? customizer(othValue, arrValue, index, other, array, stack)
 | |
|         : customizer(arrValue, othValue, index, array, other, stack);
 | |
|     }
 | |
|     if (compared !== undefined) {
 | |
|       if (compared) {
 | |
|         continue;
 | |
|       }
 | |
|       result = false;
 | |
|       break;
 | |
|     }
 | |
|     // Recursively compare arrays (susceptible to call stack limits).
 | |
|     if (seen) {
 | |
|       if (!arraySome(other, function(othValue, othIndex) {
 | |
|             if (!cacheHas(seen, othIndex) &&
 | |
|                 (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
 | |
|               return seen.push(othIndex);
 | |
|             }
 | |
|           })) {
 | |
|         result = false;
 | |
|         break;
 | |
|       }
 | |
|     } else if (!(
 | |
|           arrValue === othValue ||
 | |
|             equalFunc(arrValue, othValue, bitmask, customizer, stack)
 | |
|         )) {
 | |
|       result = false;
 | |
|       break;
 | |
|     }
 | |
|   }
 | |
|   stack['delete'](array);
 | |
|   stack['delete'](other);
 | |
|   return result;
 | |
| }
 | |
| 
 | |
| module.exports = equalArrays;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 370:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var Symbol = __webpack_require__(96539),
 | |
|     Uint8Array = __webpack_require__(59942),
 | |
|     eq = __webpack_require__(85638),
 | |
|     equalArrays = __webpack_require__(27042),
 | |
|     mapToArray = __webpack_require__(19383),
 | |
|     setToArray = __webpack_require__(43735);
 | |
| 
 | |
| /** Used to compose bitmasks for value comparisons. */
 | |
| var COMPARE_PARTIAL_FLAG = 1,
 | |
|     COMPARE_UNORDERED_FLAG = 2;
 | |
| 
 | |
| /** `Object#toString` result references. */
 | |
| var boolTag = '[object Boolean]',
 | |
|     dateTag = '[object Date]',
 | |
|     errorTag = '[object Error]',
 | |
|     mapTag = '[object Map]',
 | |
|     numberTag = '[object Number]',
 | |
|     regexpTag = '[object RegExp]',
 | |
|     setTag = '[object Set]',
 | |
|     stringTag = '[object String]',
 | |
|     symbolTag = '[object Symbol]';
 | |
| 
 | |
| var arrayBufferTag = '[object ArrayBuffer]',
 | |
|     dataViewTag = '[object DataView]';
 | |
| 
 | |
| /** Used to convert symbols to primitives and strings. */
 | |
| var symbolProto = Symbol ? Symbol.prototype : undefined,
 | |
|     symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
 | |
| 
 | |
| /**
 | |
|  * A specialized version of `baseIsEqualDeep` for comparing objects of
 | |
|  * the same `toStringTag`.
 | |
|  *
 | |
|  * **Note:** This function only supports comparing values with tags of
 | |
|  * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Object} object The object to compare.
 | |
|  * @param {Object} other The other object to compare.
 | |
|  * @param {string} tag The `toStringTag` of the objects to compare.
 | |
|  * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
 | |
|  * @param {Function} customizer The function to customize comparisons.
 | |
|  * @param {Function} equalFunc The function to determine equivalents of values.
 | |
|  * @param {Object} stack Tracks traversed `object` and `other` objects.
 | |
|  * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
 | |
|  */
 | |
| function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
 | |
|   switch (tag) {
 | |
|     case dataViewTag:
 | |
|       if ((object.byteLength != other.byteLength) ||
 | |
|           (object.byteOffset != other.byteOffset)) {
 | |
|         return false;
 | |
|       }
 | |
|       object = object.buffer;
 | |
|       other = other.buffer;
 | |
| 
 | |
|     case arrayBufferTag:
 | |
|       if ((object.byteLength != other.byteLength) ||
 | |
|           !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
 | |
|         return false;
 | |
|       }
 | |
|       return true;
 | |
| 
 | |
|     case boolTag:
 | |
|     case dateTag:
 | |
|     case numberTag:
 | |
|       // Coerce booleans to `1` or `0` and dates to milliseconds.
 | |
|       // Invalid dates are coerced to `NaN`.
 | |
|       return eq(+object, +other);
 | |
| 
 | |
|     case errorTag:
 | |
|       return object.name == other.name && object.message == other.message;
 | |
| 
 | |
|     case regexpTag:
 | |
|     case stringTag:
 | |
|       // Coerce regexes to strings and treat strings, primitives and objects,
 | |
|       // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
 | |
|       // for more details.
 | |
|       return object == (other + '');
 | |
| 
 | |
|     case mapTag:
 | |
|       var convert = mapToArray;
 | |
| 
 | |
|     case setTag:
 | |
|       var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
 | |
|       convert || (convert = setToArray);
 | |
| 
 | |
|       if (object.size != other.size && !isPartial) {
 | |
|         return false;
 | |
|       }
 | |
|       // Assume cyclic values are equal.
 | |
|       var stacked = stack.get(object);
 | |
|       if (stacked) {
 | |
|         return stacked == other;
 | |
|       }
 | |
|       bitmask |= COMPARE_UNORDERED_FLAG;
 | |
| 
 | |
|       // Recursively compare objects (susceptible to call stack limits).
 | |
|       stack.set(object, other);
 | |
|       var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
 | |
|       stack['delete'](object);
 | |
|       return result;
 | |
| 
 | |
|     case symbolTag:
 | |
|       if (symbolValueOf) {
 | |
|         return symbolValueOf.call(object) == symbolValueOf.call(other);
 | |
|       }
 | |
|   }
 | |
|   return false;
 | |
| }
 | |
| 
 | |
| module.exports = equalByTag;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 39584:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var getAllKeys = __webpack_require__(51385);
 | |
| 
 | |
| /** Used to compose bitmasks for value comparisons. */
 | |
| var COMPARE_PARTIAL_FLAG = 1;
 | |
| 
 | |
| /** Used for built-in method references. */
 | |
| var objectProto = Object.prototype;
 | |
| 
 | |
| /** Used to check objects for own properties. */
 | |
| var hasOwnProperty = objectProto.hasOwnProperty;
 | |
| 
 | |
| /**
 | |
|  * A specialized version of `baseIsEqualDeep` for objects with support for
 | |
|  * partial deep comparisons.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Object} object The object to compare.
 | |
|  * @param {Object} other The other object to compare.
 | |
|  * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
 | |
|  * @param {Function} customizer The function to customize comparisons.
 | |
|  * @param {Function} equalFunc The function to determine equivalents of values.
 | |
|  * @param {Object} stack Tracks traversed `object` and `other` objects.
 | |
|  * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
 | |
|  */
 | |
| function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
 | |
|   var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
 | |
|       objProps = getAllKeys(object),
 | |
|       objLength = objProps.length,
 | |
|       othProps = getAllKeys(other),
 | |
|       othLength = othProps.length;
 | |
| 
 | |
|   if (objLength != othLength && !isPartial) {
 | |
|     return false;
 | |
|   }
 | |
|   var index = objLength;
 | |
|   while (index--) {
 | |
|     var key = objProps[index];
 | |
|     if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
 | |
|       return false;
 | |
|     }
 | |
|   }
 | |
|   // Check that cyclic values are equal.
 | |
|   var objStacked = stack.get(object);
 | |
|   var othStacked = stack.get(other);
 | |
|   if (objStacked && othStacked) {
 | |
|     return objStacked == other && othStacked == object;
 | |
|   }
 | |
|   var result = true;
 | |
|   stack.set(object, other);
 | |
|   stack.set(other, object);
 | |
| 
 | |
|   var skipCtor = isPartial;
 | |
|   while (++index < objLength) {
 | |
|     key = objProps[index];
 | |
|     var objValue = object[key],
 | |
|         othValue = other[key];
 | |
| 
 | |
|     if (customizer) {
 | |
|       var compared = isPartial
 | |
|         ? customizer(othValue, objValue, key, other, object, stack)
 | |
|         : customizer(objValue, othValue, key, object, other, stack);
 | |
|     }
 | |
|     // Recursively compare objects (susceptible to call stack limits).
 | |
|     if (!(compared === undefined
 | |
|           ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
 | |
|           : compared
 | |
|         )) {
 | |
|       result = false;
 | |
|       break;
 | |
|     }
 | |
|     skipCtor || (skipCtor = key == 'constructor');
 | |
|   }
 | |
|   if (result && !skipCtor) {
 | |
|     var objCtor = object.constructor,
 | |
|         othCtor = other.constructor;
 | |
| 
 | |
|     // Non `Object` object instances with different constructors are not equal.
 | |
|     if (objCtor != othCtor &&
 | |
|         ('constructor' in object && 'constructor' in other) &&
 | |
|         !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
 | |
|           typeof othCtor == 'function' && othCtor instanceof othCtor)) {
 | |
|       result = false;
 | |
|     }
 | |
|   }
 | |
|   stack['delete'](object);
 | |
|   stack['delete'](other);
 | |
|   return result;
 | |
| }
 | |
| 
 | |
| module.exports = equalObjects;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 68125:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var isStrictComparable = __webpack_require__(68302),
 | |
|     keys = __webpack_require__(50098);
 | |
| 
 | |
| /**
 | |
|  * Gets the property names, values, and compare flags of `object`.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Object} object The object to query.
 | |
|  * @returns {Array} Returns the match data of `object`.
 | |
|  */
 | |
| function getMatchData(object) {
 | |
|   var result = keys(object),
 | |
|       length = result.length;
 | |
| 
 | |
|   while (length--) {
 | |
|     var key = result[length],
 | |
|         value = object[key];
 | |
| 
 | |
|     result[length] = [key, value, isStrictComparable(value)];
 | |
|   }
 | |
|   return result;
 | |
| }
 | |
| 
 | |
| module.exports = getMatchData;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 57535:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var eq = __webpack_require__(85638),
 | |
|     isArrayLike = __webpack_require__(80068),
 | |
|     isIndex = __webpack_require__(42383),
 | |
|     isObject = __webpack_require__(11611);
 | |
| 
 | |
| /**
 | |
|  * Checks if the given arguments are from an iteratee call.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {*} value The potential iteratee value argument.
 | |
|  * @param {*} index The potential iteratee index or key argument.
 | |
|  * @param {*} object The potential iteratee object argument.
 | |
|  * @returns {boolean} Returns `true` if the arguments are from an iteratee call,
 | |
|  *  else `false`.
 | |
|  */
 | |
| function isIterateeCall(value, index, object) {
 | |
|   if (!isObject(object)) {
 | |
|     return false;
 | |
|   }
 | |
|   var type = typeof index;
 | |
|   if (type == 'number'
 | |
|         ? (isArrayLike(object) && isIndex(index, object.length))
 | |
|         : (type == 'string' && index in object)
 | |
|       ) {
 | |
|     return eq(object[index], value);
 | |
|   }
 | |
|   return false;
 | |
| }
 | |
| 
 | |
| module.exports = isIterateeCall;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 68302:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var isObject = __webpack_require__(11611);
 | |
| 
 | |
| /**
 | |
|  * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {*} value The value to check.
 | |
|  * @returns {boolean} Returns `true` if `value` if suitable for strict
 | |
|  *  equality comparisons, else `false`.
 | |
|  */
 | |
| function isStrictComparable(value) {
 | |
|   return value === value && !isObject(value);
 | |
| }
 | |
| 
 | |
| module.exports = isStrictComparable;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 19383:
 | |
| /***/ ((module) => {
 | |
| 
 | |
| /**
 | |
|  * Converts `map` to its key-value pairs.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Object} map The map to convert.
 | |
|  * @returns {Array} Returns the key-value pairs.
 | |
|  */
 | |
| function mapToArray(map) {
 | |
|   var index = -1,
 | |
|       result = Array(map.size);
 | |
| 
 | |
|   map.forEach(function(value, key) {
 | |
|     result[++index] = [key, value];
 | |
|   });
 | |
|   return result;
 | |
| }
 | |
| 
 | |
| module.exports = mapToArray;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 65042:
 | |
| /***/ ((module) => {
 | |
| 
 | |
| /**
 | |
|  * A specialized version of `matchesProperty` for source values suitable
 | |
|  * for strict equality comparisons, i.e. `===`.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {string} key The key of the property to get.
 | |
|  * @param {*} srcValue The value to match.
 | |
|  * @returns {Function} Returns the new spec function.
 | |
|  */
 | |
| function matchesStrictComparable(key, srcValue) {
 | |
|   return function(object) {
 | |
|     if (object == null) {
 | |
|       return false;
 | |
|     }
 | |
|     return object[key] === srcValue &&
 | |
|       (srcValue !== undefined || (key in Object(object)));
 | |
|   };
 | |
| }
 | |
| 
 | |
| module.exports = matchesStrictComparable;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 97494:
 | |
| /***/ ((module) => {
 | |
| 
 | |
| /**
 | |
|  * Gets the value at `key`, unless `key` is "__proto__" or "constructor".
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Object} object The object to query.
 | |
|  * @param {string} key The key of the property to get.
 | |
|  * @returns {*} Returns the property value.
 | |
|  */
 | |
| function safeGet(object, key) {
 | |
|   if (key === 'constructor' && typeof object[key] === 'function') {
 | |
|     return;
 | |
|   }
 | |
| 
 | |
|   if (key == '__proto__') {
 | |
|     return;
 | |
|   }
 | |
| 
 | |
|   return object[key];
 | |
| }
 | |
| 
 | |
| module.exports = safeGet;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 38639:
 | |
| /***/ ((module) => {
 | |
| 
 | |
| /** Used to stand-in for `undefined` hash values. */
 | |
| var HASH_UNDEFINED = '__lodash_hash_undefined__';
 | |
| 
 | |
| /**
 | |
|  * Adds `value` to the array cache.
 | |
|  *
 | |
|  * @private
 | |
|  * @name add
 | |
|  * @memberOf SetCache
 | |
|  * @alias push
 | |
|  * @param {*} value The value to cache.
 | |
|  * @returns {Object} Returns the cache instance.
 | |
|  */
 | |
| function setCacheAdd(value) {
 | |
|   this.__data__.set(value, HASH_UNDEFINED);
 | |
|   return this;
 | |
| }
 | |
| 
 | |
| module.exports = setCacheAdd;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 88379:
 | |
| /***/ ((module) => {
 | |
| 
 | |
| /**
 | |
|  * Checks if `value` is in the array cache.
 | |
|  *
 | |
|  * @private
 | |
|  * @name has
 | |
|  * @memberOf SetCache
 | |
|  * @param {*} value The value to search for.
 | |
|  * @returns {number} Returns `true` if `value` is found, else `false`.
 | |
|  */
 | |
| function setCacheHas(value) {
 | |
|   return this.__data__.has(value);
 | |
| }
 | |
| 
 | |
| module.exports = setCacheHas;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 43735:
 | |
| /***/ ((module) => {
 | |
| 
 | |
| /**
 | |
|  * Converts `set` to an array of its values.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Object} set The set to convert.
 | |
|  * @returns {Array} Returns the values.
 | |
|  */
 | |
| function setToArray(set) {
 | |
|   var index = -1,
 | |
|       result = Array(set.size);
 | |
| 
 | |
|   set.forEach(function(value) {
 | |
|     result[++index] = value;
 | |
|   });
 | |
|   return result;
 | |
| }
 | |
| 
 | |
| module.exports = setToArray;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 58263:
 | |
| /***/ ((module) => {
 | |
| 
 | |
| /**
 | |
|  * A specialized version of `_.indexOf` which performs strict equality
 | |
|  * comparisons of values, i.e. `===`.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {Array} array The array to inspect.
 | |
|  * @param {*} value The value to search for.
 | |
|  * @param {number} fromIndex The index to search from.
 | |
|  * @returns {number} Returns the index of the matched value, else `-1`.
 | |
|  */
 | |
| function strictIndexOf(array, value, fromIndex) {
 | |
|   var index = fromIndex - 1,
 | |
|       length = array.length;
 | |
| 
 | |
|   while (++index < length) {
 | |
|     if (array[index] === value) {
 | |
|       return index;
 | |
|     }
 | |
|   }
 | |
|   return -1;
 | |
| }
 | |
| 
 | |
| module.exports = strictIndexOf;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 56127:
 | |
| /***/ ((module) => {
 | |
| 
 | |
| /** Used to match a single whitespace character. */
 | |
| var reWhitespace = /\s/;
 | |
| 
 | |
| /**
 | |
|  * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace
 | |
|  * character of `string`.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {string} string The string to inspect.
 | |
|  * @returns {number} Returns the index of the last non-whitespace character.
 | |
|  */
 | |
| function trimmedEndIndex(string) {
 | |
|   var index = string.length;
 | |
| 
 | |
|   while (index-- && reWhitespace.test(string.charAt(index))) {}
 | |
|   return index;
 | |
| }
 | |
| 
 | |
| module.exports = trimmedEndIndex;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 70236:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var baseRest = __webpack_require__(1197),
 | |
|     eq = __webpack_require__(85638),
 | |
|     isIterateeCall = __webpack_require__(57535),
 | |
|     keysIn = __webpack_require__(53893);
 | |
| 
 | |
| /** Used for built-in method references. */
 | |
| var objectProto = Object.prototype;
 | |
| 
 | |
| /** Used to check objects for own properties. */
 | |
| var hasOwnProperty = objectProto.hasOwnProperty;
 | |
| 
 | |
| /**
 | |
|  * Assigns own and inherited enumerable string keyed properties of source
 | |
|  * objects to the destination object for all destination properties that
 | |
|  * resolve to `undefined`. Source objects are applied from left to right.
 | |
|  * Once a property is set, additional values of the same property are ignored.
 | |
|  *
 | |
|  * **Note:** This method mutates `object`.
 | |
|  *
 | |
|  * @static
 | |
|  * @since 0.1.0
 | |
|  * @memberOf _
 | |
|  * @category Object
 | |
|  * @param {Object} object The destination object.
 | |
|  * @param {...Object} [sources] The source objects.
 | |
|  * @returns {Object} Returns `object`.
 | |
|  * @see _.defaultsDeep
 | |
|  * @example
 | |
|  *
 | |
|  * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
 | |
|  * // => { 'a': 1, 'b': 2 }
 | |
|  */
 | |
| var defaults = baseRest(function(object, sources) {
 | |
|   object = Object(object);
 | |
| 
 | |
|   var index = -1;
 | |
|   var length = sources.length;
 | |
|   var guard = length > 2 ? sources[2] : undefined;
 | |
| 
 | |
|   if (guard && isIterateeCall(sources[0], sources[1], guard)) {
 | |
|     length = 1;
 | |
|   }
 | |
| 
 | |
|   while (++index < length) {
 | |
|     var source = sources[index];
 | |
|     var props = keysIn(source);
 | |
|     var propsIndex = -1;
 | |
|     var propsLength = props.length;
 | |
| 
 | |
|     while (++propsIndex < propsLength) {
 | |
|       var key = props[propsIndex];
 | |
|       var value = object[key];
 | |
| 
 | |
|       if (value === undefined ||
 | |
|           (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {
 | |
|         object[key] = source[key];
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   return object;
 | |
| });
 | |
| 
 | |
| module.exports = defaults;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 53533:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var apply = __webpack_require__(79349),
 | |
|     baseRest = __webpack_require__(1197),
 | |
|     customDefaultsMerge = __webpack_require__(19491),
 | |
|     mergeWith = __webpack_require__(73952);
 | |
| 
 | |
| /**
 | |
|  * This method is like `_.defaults` except that it recursively assigns
 | |
|  * default properties.
 | |
|  *
 | |
|  * **Note:** This method mutates `object`.
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 3.10.0
 | |
|  * @category Object
 | |
|  * @param {Object} object The destination object.
 | |
|  * @param {...Object} [sources] The source objects.
 | |
|  * @returns {Object} Returns `object`.
 | |
|  * @see _.defaults
 | |
|  * @example
 | |
|  *
 | |
|  * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });
 | |
|  * // => { 'a': { 'b': 2, 'c': 3 } }
 | |
|  */
 | |
| var defaultsDeep = baseRest(function(args) {
 | |
|   args.push(undefined, customDefaultsMerge);
 | |
|   return apply(mergeWith, undefined, args);
 | |
| });
 | |
| 
 | |
| module.exports = defaultsDeep;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 84812:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var baseFlatten = __webpack_require__(23545);
 | |
| 
 | |
| /** Used as references for various `Number` constants. */
 | |
| var INFINITY = 1 / 0;
 | |
| 
 | |
| /**
 | |
|  * Recursively flattens `array`.
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 3.0.0
 | |
|  * @category Array
 | |
|  * @param {Array} array The array to flatten.
 | |
|  * @returns {Array} Returns the new flattened array.
 | |
|  * @example
 | |
|  *
 | |
|  * _.flattenDeep([1, [2, [3, [4]], 5]]);
 | |
|  * // => [1, 2, 3, 4, 5]
 | |
|  */
 | |
| function flattenDeep(array) {
 | |
|   var length = array == null ? 0 : array.length;
 | |
|   return length ? baseFlatten(array, INFINITY) : [];
 | |
| }
 | |
| 
 | |
| module.exports = flattenDeep;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 47003:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var arrayEach = __webpack_require__(80594),
 | |
|     baseEach = __webpack_require__(52033),
 | |
|     castFunction = __webpack_require__(62079),
 | |
|     isArray = __webpack_require__(19785);
 | |
| 
 | |
| /**
 | |
|  * Iterates over elements of `collection` and invokes `iteratee` for each element.
 | |
|  * The iteratee is invoked with three arguments: (value, index|key, collection).
 | |
|  * Iteratee functions may exit iteration early by explicitly returning `false`.
 | |
|  *
 | |
|  * **Note:** As with other "Collections" methods, objects with a "length"
 | |
|  * property are iterated like arrays. To avoid this behavior use `_.forIn`
 | |
|  * or `_.forOwn` for object iteration.
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 0.1.0
 | |
|  * @alias each
 | |
|  * @category Collection
 | |
|  * @param {Array|Object} collection The collection to iterate over.
 | |
|  * @param {Function} [iteratee=_.identity] The function invoked per iteration.
 | |
|  * @returns {Array|Object} Returns `collection`.
 | |
|  * @see _.forEachRight
 | |
|  * @example
 | |
|  *
 | |
|  * _.forEach([1, 2], function(value) {
 | |
|  *   console.log(value);
 | |
|  * });
 | |
|  * // => Logs `1` then `2`.
 | |
|  *
 | |
|  * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
 | |
|  *   console.log(key);
 | |
|  * });
 | |
|  * // => Logs 'a' then 'b' (iteration order is not guaranteed).
 | |
|  */
 | |
| function forEach(collection, iteratee) {
 | |
|   var func = isArray(collection) ? arrayEach : baseEach;
 | |
|   return func(collection, castFunction(iteratee));
 | |
| }
 | |
| 
 | |
| module.exports = forEach;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 27921:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var arrayMap = __webpack_require__(66070),
 | |
|     baseIntersection = __webpack_require__(96638),
 | |
|     baseRest = __webpack_require__(1197),
 | |
|     castArrayLikeObject = __webpack_require__(60923);
 | |
| 
 | |
| /**
 | |
|  * Creates an array of unique values that are included in all given arrays
 | |
|  * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
 | |
|  * for equality comparisons. The order and references of result values are
 | |
|  * determined by the first array.
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 0.1.0
 | |
|  * @category Array
 | |
|  * @param {...Array} [arrays] The arrays to inspect.
 | |
|  * @returns {Array} Returns the new array of intersecting values.
 | |
|  * @example
 | |
|  *
 | |
|  * _.intersection([2, 1], [2, 3]);
 | |
|  * // => [2]
 | |
|  */
 | |
| var intersection = baseRest(function(arrays) {
 | |
|   var mapped = arrayMap(arrays, castArrayLikeObject);
 | |
|   return (mapped.length && mapped[0] === arrays[0])
 | |
|     ? baseIntersection(mapped)
 | |
|     : [];
 | |
| });
 | |
| 
 | |
| module.exports = intersection;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 28054:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var arrayMap = __webpack_require__(66070),
 | |
|     baseIntersection = __webpack_require__(96638),
 | |
|     baseRest = __webpack_require__(1197),
 | |
|     castArrayLikeObject = __webpack_require__(60923),
 | |
|     last = __webpack_require__(31159);
 | |
| 
 | |
| /**
 | |
|  * This method is like `_.intersection` except that it accepts `comparator`
 | |
|  * which is invoked to compare elements of `arrays`. The order and references
 | |
|  * of result values are determined by the first array. The comparator is
 | |
|  * invoked with two arguments: (arrVal, othVal).
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 4.0.0
 | |
|  * @category Array
 | |
|  * @param {...Array} [arrays] The arrays to inspect.
 | |
|  * @param {Function} [comparator] The comparator invoked per element.
 | |
|  * @returns {Array} Returns the new array of intersecting values.
 | |
|  * @example
 | |
|  *
 | |
|  * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
 | |
|  * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
 | |
|  *
 | |
|  * _.intersectionWith(objects, others, _.isEqual);
 | |
|  * // => [{ 'x': 1, 'y': 2 }]
 | |
|  */
 | |
| var intersectionWith = baseRest(function(arrays) {
 | |
|   var comparator = last(arrays),
 | |
|       mapped = arrayMap(arrays, castArrayLikeObject);
 | |
| 
 | |
|   comparator = typeof comparator == 'function' ? comparator : undefined;
 | |
|   if (comparator) {
 | |
|     mapped.pop();
 | |
|   }
 | |
|   return (mapped.length && mapped[0] === arrays[0])
 | |
|     ? baseIntersection(mapped, undefined, comparator)
 | |
|     : [];
 | |
| });
 | |
| 
 | |
| module.exports = intersectionWith;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 36468:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var isArrayLike = __webpack_require__(80068),
 | |
|     isObjectLike = __webpack_require__(92360);
 | |
| 
 | |
| /**
 | |
|  * This method is like `_.isArrayLike` except that it also checks if `value`
 | |
|  * is an object.
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 4.0.0
 | |
|  * @category Lang
 | |
|  * @param {*} value The value to check.
 | |
|  * @returns {boolean} Returns `true` if `value` is an array-like object,
 | |
|  *  else `false`.
 | |
|  * @example
 | |
|  *
 | |
|  * _.isArrayLikeObject([1, 2, 3]);
 | |
|  * // => true
 | |
|  *
 | |
|  * _.isArrayLikeObject(document.body.children);
 | |
|  * // => true
 | |
|  *
 | |
|  * _.isArrayLikeObject('abc');
 | |
|  * // => false
 | |
|  *
 | |
|  * _.isArrayLikeObject(_.noop);
 | |
|  * // => false
 | |
|  */
 | |
| function isArrayLikeObject(value) {
 | |
|   return isObjectLike(value) && isArrayLike(value);
 | |
| }
 | |
| 
 | |
| module.exports = isArrayLikeObject;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 3819:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var baseGetTag = __webpack_require__(99736),
 | |
|     isObjectLike = __webpack_require__(92360);
 | |
| 
 | |
| /** `Object#toString` result references. */
 | |
| var boolTag = '[object Boolean]';
 | |
| 
 | |
| /**
 | |
|  * Checks if `value` is classified as a boolean primitive or object.
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 0.1.0
 | |
|  * @category Lang
 | |
|  * @param {*} value The value to check.
 | |
|  * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.
 | |
|  * @example
 | |
|  *
 | |
|  * _.isBoolean(false);
 | |
|  * // => true
 | |
|  *
 | |
|  * _.isBoolean(null);
 | |
|  * // => false
 | |
|  */
 | |
| function isBoolean(value) {
 | |
|   return value === true || value === false ||
 | |
|     (isObjectLike(value) && baseGetTag(value) == boolTag);
 | |
| }
 | |
| 
 | |
| module.exports = isBoolean;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 56141:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var baseIsEqual = __webpack_require__(32866);
 | |
| 
 | |
| /**
 | |
|  * Performs a deep comparison between two values to determine if they are
 | |
|  * equivalent.
 | |
|  *
 | |
|  * **Note:** This method supports comparing arrays, array buffers, booleans,
 | |
|  * date objects, error objects, maps, numbers, `Object` objects, regexes,
 | |
|  * sets, strings, symbols, and typed arrays. `Object` objects are compared
 | |
|  * by their own, not inherited, enumerable properties. Functions and DOM
 | |
|  * nodes are compared by strict equality, i.e. `===`.
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 0.1.0
 | |
|  * @category Lang
 | |
|  * @param {*} value The value to compare.
 | |
|  * @param {*} other The other value to compare.
 | |
|  * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
 | |
|  * @example
 | |
|  *
 | |
|  * var object = { 'a': 1 };
 | |
|  * var other = { 'a': 1 };
 | |
|  *
 | |
|  * _.isEqual(object, other);
 | |
|  * // => true
 | |
|  *
 | |
|  * object === other;
 | |
|  * // => false
 | |
|  */
 | |
| function isEqual(value, other) {
 | |
|   return baseIsEqual(value, other);
 | |
| }
 | |
| 
 | |
| module.exports = isEqual;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 65191:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var baseIsEqual = __webpack_require__(32866);
 | |
| 
 | |
| /**
 | |
|  * This method is like `_.isEqual` except that it accepts `customizer` which
 | |
|  * is invoked to compare values. If `customizer` returns `undefined`, comparisons
 | |
|  * are handled by the method instead. The `customizer` is invoked with up to
 | |
|  * six arguments: (objValue, othValue [, index|key, object, other, stack]).
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 4.0.0
 | |
|  * @category Lang
 | |
|  * @param {*} value The value to compare.
 | |
|  * @param {*} other The other value to compare.
 | |
|  * @param {Function} [customizer] The function to customize comparisons.
 | |
|  * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
 | |
|  * @example
 | |
|  *
 | |
|  * function isGreeting(value) {
 | |
|  *   return /^h(?:i|ello)$/.test(value);
 | |
|  * }
 | |
|  *
 | |
|  * function customizer(objValue, othValue) {
 | |
|  *   if (isGreeting(objValue) && isGreeting(othValue)) {
 | |
|  *     return true;
 | |
|  *   }
 | |
|  * }
 | |
|  *
 | |
|  * var array = ['hello', 'goodbye'];
 | |
|  * var other = ['hi', 'goodbye'];
 | |
|  *
 | |
|  * _.isEqualWith(array, other, customizer);
 | |
|  * // => true
 | |
|  */
 | |
| function isEqualWith(value, other, customizer) {
 | |
|   customizer = typeof customizer == 'function' ? customizer : undefined;
 | |
|   var result = customizer ? customizer(value, other) : undefined;
 | |
|   return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;
 | |
| }
 | |
| 
 | |
| module.exports = isEqualWith;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 30644:
 | |
| /***/ ((module) => {
 | |
| 
 | |
| /**
 | |
|  * Checks if `value` is `null` or `undefined`.
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 4.0.0
 | |
|  * @category Lang
 | |
|  * @param {*} value The value to check.
 | |
|  * @returns {boolean} Returns `true` if `value` is nullish, else `false`.
 | |
|  * @example
 | |
|  *
 | |
|  * _.isNil(null);
 | |
|  * // => true
 | |
|  *
 | |
|  * _.isNil(void 0);
 | |
|  * // => true
 | |
|  *
 | |
|  * _.isNil(NaN);
 | |
|  * // => false
 | |
|  */
 | |
| function isNil(value) {
 | |
|   return value == null;
 | |
| }
 | |
| 
 | |
| module.exports = isNil;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 78581:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var baseGetTag = __webpack_require__(99736),
 | |
|     isObjectLike = __webpack_require__(92360);
 | |
| 
 | |
| /** `Object#toString` result references. */
 | |
| var numberTag = '[object Number]';
 | |
| 
 | |
| /**
 | |
|  * Checks if `value` is classified as a `Number` primitive or object.
 | |
|  *
 | |
|  * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are
 | |
|  * classified as numbers, use the `_.isFinite` method.
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 0.1.0
 | |
|  * @category Lang
 | |
|  * @param {*} value The value to check.
 | |
|  * @returns {boolean} Returns `true` if `value` is a number, else `false`.
 | |
|  * @example
 | |
|  *
 | |
|  * _.isNumber(3);
 | |
|  * // => true
 | |
|  *
 | |
|  * _.isNumber(Number.MIN_VALUE);
 | |
|  * // => true
 | |
|  *
 | |
|  * _.isNumber(Infinity);
 | |
|  * // => true
 | |
|  *
 | |
|  * _.isNumber('3');
 | |
|  * // => false
 | |
|  */
 | |
| function isNumber(value) {
 | |
|   return typeof value == 'number' ||
 | |
|     (isObjectLike(value) && baseGetTag(value) == numberTag);
 | |
| }
 | |
| 
 | |
| module.exports = isNumber;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 47206:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var baseGetTag = __webpack_require__(99736),
 | |
|     isArray = __webpack_require__(19785),
 | |
|     isObjectLike = __webpack_require__(92360);
 | |
| 
 | |
| /** `Object#toString` result references. */
 | |
| var stringTag = '[object String]';
 | |
| 
 | |
| /**
 | |
|  * Checks if `value` is classified as a `String` primitive or object.
 | |
|  *
 | |
|  * @static
 | |
|  * @since 0.1.0
 | |
|  * @memberOf _
 | |
|  * @category Lang
 | |
|  * @param {*} value The value to check.
 | |
|  * @returns {boolean} Returns `true` if `value` is a string, else `false`.
 | |
|  * @example
 | |
|  *
 | |
|  * _.isString('abc');
 | |
|  * // => true
 | |
|  *
 | |
|  * _.isString(1);
 | |
|  * // => false
 | |
|  */
 | |
| function isString(value) {
 | |
|   return typeof value == 'string' ||
 | |
|     (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);
 | |
| }
 | |
| 
 | |
| module.exports = isString;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 15409:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var baseMerge = __webpack_require__(40015),
 | |
|     createAssigner = __webpack_require__(7270);
 | |
| 
 | |
| /**
 | |
|  * This method is like `_.assign` except that it recursively merges own and
 | |
|  * inherited enumerable string keyed properties of source objects into the
 | |
|  * destination object. Source properties that resolve to `undefined` are
 | |
|  * skipped if a destination value exists. Array and plain object properties
 | |
|  * are merged recursively. Other objects and value types are overridden by
 | |
|  * assignment. Source objects are applied from left to right. Subsequent
 | |
|  * sources overwrite property assignments of previous sources.
 | |
|  *
 | |
|  * **Note:** This method mutates `object`.
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 0.5.0
 | |
|  * @category Object
 | |
|  * @param {Object} object The destination object.
 | |
|  * @param {...Object} [sources] The source objects.
 | |
|  * @returns {Object} Returns `object`.
 | |
|  * @example
 | |
|  *
 | |
|  * var object = {
 | |
|  *   'a': [{ 'b': 2 }, { 'd': 4 }]
 | |
|  * };
 | |
|  *
 | |
|  * var other = {
 | |
|  *   'a': [{ 'c': 3 }, { 'e': 5 }]
 | |
|  * };
 | |
|  *
 | |
|  * _.merge(object, other);
 | |
|  * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }
 | |
|  */
 | |
| var merge = createAssigner(function(object, source, srcIndex) {
 | |
|   baseMerge(object, source, srcIndex);
 | |
| });
 | |
| 
 | |
| module.exports = merge;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 73952:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var baseMerge = __webpack_require__(40015),
 | |
|     createAssigner = __webpack_require__(7270);
 | |
| 
 | |
| /**
 | |
|  * This method is like `_.merge` except that it accepts `customizer` which
 | |
|  * is invoked to produce the merged values of the destination and source
 | |
|  * properties. If `customizer` returns `undefined`, merging is handled by the
 | |
|  * method instead. The `customizer` is invoked with six arguments:
 | |
|  * (objValue, srcValue, key, object, source, stack).
 | |
|  *
 | |
|  * **Note:** This method mutates `object`.
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 4.0.0
 | |
|  * @category Object
 | |
|  * @param {Object} object The destination object.
 | |
|  * @param {...Object} sources The source objects.
 | |
|  * @param {Function} customizer The function to customize assigned values.
 | |
|  * @returns {Object} Returns `object`.
 | |
|  * @example
 | |
|  *
 | |
|  * function customizer(objValue, srcValue) {
 | |
|  *   if (_.isArray(objValue)) {
 | |
|  *     return objValue.concat(srcValue);
 | |
|  *   }
 | |
|  * }
 | |
|  *
 | |
|  * var object = { 'a': [1], 'b': [2] };
 | |
|  * var other = { 'a': [3], 'b': [4] };
 | |
|  *
 | |
|  * _.mergeWith(object, other, customizer);
 | |
|  * // => { 'a': [1, 3], 'b': [2, 4] }
 | |
|  */
 | |
| var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {
 | |
|   baseMerge(object, source, srcIndex, customizer);
 | |
| });
 | |
| 
 | |
| module.exports = mergeWith;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 50344:
 | |
| /***/ ((module) => {
 | |
| 
 | |
| /**
 | |
|  * This method returns `undefined`.
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 2.3.0
 | |
|  * @category Util
 | |
|  * @example
 | |
|  *
 | |
|  * _.times(2, _.noop);
 | |
|  * // => [undefined, undefined]
 | |
|  */
 | |
| function noop() {
 | |
|   // No operation performed.
 | |
| }
 | |
| 
 | |
| module.exports = noop;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 96001:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var baseProperty = __webpack_require__(50517),
 | |
|     basePropertyDeep = __webpack_require__(10301),
 | |
|     isKey = __webpack_require__(40318),
 | |
|     toKey = __webpack_require__(37948);
 | |
| 
 | |
| /**
 | |
|  * Creates a function that returns the value at `path` of a given object.
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 2.4.0
 | |
|  * @category Util
 | |
|  * @param {Array|string} path The path of the property to get.
 | |
|  * @returns {Function} Returns the new accessor function.
 | |
|  * @example
 | |
|  *
 | |
|  * var objects = [
 | |
|  *   { 'a': { 'b': 2 } },
 | |
|  *   { 'a': { 'b': 1 } }
 | |
|  * ];
 | |
|  *
 | |
|  * _.map(objects, _.property('a.b'));
 | |
|  * // => [2, 1]
 | |
|  *
 | |
|  * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
 | |
|  * // => [1, 2]
 | |
|  */
 | |
| function property(path) {
 | |
|   return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
 | |
| }
 | |
| 
 | |
| module.exports = property;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 90254:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var basePullAll = __webpack_require__(61933);
 | |
| 
 | |
| /**
 | |
|  * This method is like `_.pull` except that it accepts an array of values to remove.
 | |
|  *
 | |
|  * **Note:** Unlike `_.difference`, this method mutates `array`.
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 4.0.0
 | |
|  * @category Array
 | |
|  * @param {Array} array The array to modify.
 | |
|  * @param {Array} values The values to remove.
 | |
|  * @returns {Array} Returns `array`.
 | |
|  * @example
 | |
|  *
 | |
|  * var array = ['a', 'b', 'c', 'a', 'b', 'c'];
 | |
|  *
 | |
|  * _.pullAll(array, ['a', 'c']);
 | |
|  * console.log(array);
 | |
|  * // => ['b', 'b']
 | |
|  */
 | |
| function pullAll(array, values) {
 | |
|   return (array && array.length && values && values.length)
 | |
|     ? basePullAll(array, values)
 | |
|     : array;
 | |
| }
 | |
| 
 | |
| module.exports = pullAll;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 34172:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var arrayReduce = __webpack_require__(6446),
 | |
|     baseEach = __webpack_require__(52033),
 | |
|     baseIteratee = __webpack_require__(89278),
 | |
|     baseReduce = __webpack_require__(19356),
 | |
|     isArray = __webpack_require__(19785);
 | |
| 
 | |
| /**
 | |
|  * Reduces `collection` to a value which is the accumulated result of running
 | |
|  * each element in `collection` thru `iteratee`, where each successive
 | |
|  * invocation is supplied the return value of the previous. If `accumulator`
 | |
|  * is not given, the first element of `collection` is used as the initial
 | |
|  * value. The iteratee is invoked with four arguments:
 | |
|  * (accumulator, value, index|key, collection).
 | |
|  *
 | |
|  * Many lodash methods are guarded to work as iteratees for methods like
 | |
|  * `_.reduce`, `_.reduceRight`, and `_.transform`.
 | |
|  *
 | |
|  * The guarded methods are:
 | |
|  * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,
 | |
|  * and `sortBy`
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 0.1.0
 | |
|  * @category Collection
 | |
|  * @param {Array|Object} collection The collection to iterate over.
 | |
|  * @param {Function} [iteratee=_.identity] The function invoked per iteration.
 | |
|  * @param {*} [accumulator] The initial value.
 | |
|  * @returns {*} Returns the accumulated value.
 | |
|  * @see _.reduceRight
 | |
|  * @example
 | |
|  *
 | |
|  * _.reduce([1, 2], function(sum, n) {
 | |
|  *   return sum + n;
 | |
|  * }, 0);
 | |
|  * // => 3
 | |
|  *
 | |
|  * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
 | |
|  *   (result[value] || (result[value] = [])).push(key);
 | |
|  *   return result;
 | |
|  * }, {});
 | |
|  * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)
 | |
|  */
 | |
| function reduce(collection, iteratee, accumulator) {
 | |
|   var func = isArray(collection) ? arrayReduce : baseReduce,
 | |
|       initAccum = arguments.length < 3;
 | |
| 
 | |
|   return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);
 | |
| }
 | |
| 
 | |
| module.exports = reduce;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 95099:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var baseFlatten = __webpack_require__(23545),
 | |
|     baseOrderBy = __webpack_require__(98497),
 | |
|     baseRest = __webpack_require__(1197),
 | |
|     isIterateeCall = __webpack_require__(57535);
 | |
| 
 | |
| /**
 | |
|  * Creates an array of elements, sorted in ascending order by the results of
 | |
|  * running each element in a collection thru each iteratee. This method
 | |
|  * performs a stable sort, that is, it preserves the original sort order of
 | |
|  * equal elements. The iteratees are invoked with one argument: (value).
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 0.1.0
 | |
|  * @category Collection
 | |
|  * @param {Array|Object} collection The collection to iterate over.
 | |
|  * @param {...(Function|Function[])} [iteratees=[_.identity]]
 | |
|  *  The iteratees to sort by.
 | |
|  * @returns {Array} Returns the new sorted array.
 | |
|  * @example
 | |
|  *
 | |
|  * var users = [
 | |
|  *   { 'user': 'fred',   'age': 48 },
 | |
|  *   { 'user': 'barney', 'age': 36 },
 | |
|  *   { 'user': 'fred',   'age': 30 },
 | |
|  *   { 'user': 'barney', 'age': 34 }
 | |
|  * ];
 | |
|  *
 | |
|  * _.sortBy(users, [function(o) { return o.user; }]);
 | |
|  * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]
 | |
|  *
 | |
|  * _.sortBy(users, ['user', 'age']);
 | |
|  * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]
 | |
|  */
 | |
| var sortBy = baseRest(function(collection, iteratees) {
 | |
|   if (collection == null) {
 | |
|     return [];
 | |
|   }
 | |
|   var length = iteratees.length;
 | |
|   if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {
 | |
|     iteratees = [];
 | |
|   } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {
 | |
|     iteratees = [iteratees[0]];
 | |
|   }
 | |
|   return baseOrderBy(collection, baseFlatten(iteratees, 1), []);
 | |
| });
 | |
| 
 | |
| module.exports = sortBy;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 41571:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var baseTimes = __webpack_require__(24701),
 | |
|     castFunction = __webpack_require__(62079),
 | |
|     toInteger = __webpack_require__(47991);
 | |
| 
 | |
| /** Used as references for various `Number` constants. */
 | |
| var MAX_SAFE_INTEGER = 9007199254740991;
 | |
| 
 | |
| /** Used as references for the maximum length and index of an array. */
 | |
| var MAX_ARRAY_LENGTH = 4294967295;
 | |
| 
 | |
| /* Built-in method references for those with the same name as other `lodash` methods. */
 | |
| var nativeMin = Math.min;
 | |
| 
 | |
| /**
 | |
|  * Invokes the iteratee `n` times, returning an array of the results of
 | |
|  * each invocation. The iteratee is invoked with one argument; (index).
 | |
|  *
 | |
|  * @static
 | |
|  * @since 0.1.0
 | |
|  * @memberOf _
 | |
|  * @category Util
 | |
|  * @param {number} n The number of times to invoke `iteratee`.
 | |
|  * @param {Function} [iteratee=_.identity] The function invoked per iteration.
 | |
|  * @returns {Array} Returns the array of results.
 | |
|  * @example
 | |
|  *
 | |
|  * _.times(3, String);
 | |
|  * // => ['0', '1', '2']
 | |
|  *
 | |
|  *  _.times(4, _.constant(0));
 | |
|  * // => [0, 0, 0, 0]
 | |
|  */
 | |
| function times(n, iteratee) {
 | |
|   n = toInteger(n);
 | |
|   if (n < 1 || n > MAX_SAFE_INTEGER) {
 | |
|     return [];
 | |
|   }
 | |
|   var index = MAX_ARRAY_LENGTH,
 | |
|       length = nativeMin(n, MAX_ARRAY_LENGTH);
 | |
| 
 | |
|   iteratee = castFunction(iteratee);
 | |
|   n -= MAX_ARRAY_LENGTH;
 | |
| 
 | |
|   var result = baseTimes(length, iteratee);
 | |
|   while (++index < n) {
 | |
|     iteratee(index);
 | |
|   }
 | |
|   return result;
 | |
| }
 | |
| 
 | |
| module.exports = times;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 94919:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var toNumber = __webpack_require__(91936);
 | |
| 
 | |
| /** Used as references for various `Number` constants. */
 | |
| var INFINITY = 1 / 0,
 | |
|     MAX_INTEGER = 1.7976931348623157e+308;
 | |
| 
 | |
| /**
 | |
|  * Converts `value` to a finite number.
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 4.12.0
 | |
|  * @category Lang
 | |
|  * @param {*} value The value to convert.
 | |
|  * @returns {number} Returns the converted number.
 | |
|  * @example
 | |
|  *
 | |
|  * _.toFinite(3.2);
 | |
|  * // => 3.2
 | |
|  *
 | |
|  * _.toFinite(Number.MIN_VALUE);
 | |
|  * // => 5e-324
 | |
|  *
 | |
|  * _.toFinite(Infinity);
 | |
|  * // => 1.7976931348623157e+308
 | |
|  *
 | |
|  * _.toFinite('3.2');
 | |
|  * // => 3.2
 | |
|  */
 | |
| function toFinite(value) {
 | |
|   if (!value) {
 | |
|     return value === 0 ? value : 0;
 | |
|   }
 | |
|   value = toNumber(value);
 | |
|   if (value === INFINITY || value === -INFINITY) {
 | |
|     var sign = (value < 0 ? -1 : 1);
 | |
|     return sign * MAX_INTEGER;
 | |
|   }
 | |
|   return value === value ? value : 0;
 | |
| }
 | |
| 
 | |
| module.exports = toFinite;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 47991:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var toFinite = __webpack_require__(94919);
 | |
| 
 | |
| /**
 | |
|  * Converts `value` to an integer.
 | |
|  *
 | |
|  * **Note:** This method is loosely based on
 | |
|  * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 4.0.0
 | |
|  * @category Lang
 | |
|  * @param {*} value The value to convert.
 | |
|  * @returns {number} Returns the converted integer.
 | |
|  * @example
 | |
|  *
 | |
|  * _.toInteger(3.2);
 | |
|  * // => 3
 | |
|  *
 | |
|  * _.toInteger(Number.MIN_VALUE);
 | |
|  * // => 0
 | |
|  *
 | |
|  * _.toInteger(Infinity);
 | |
|  * // => 1.7976931348623157e+308
 | |
|  *
 | |
|  * _.toInteger('3.2');
 | |
|  * // => 3
 | |
|  */
 | |
| function toInteger(value) {
 | |
|   var result = toFinite(value),
 | |
|       remainder = result % 1;
 | |
| 
 | |
|   return result === result ? (remainder ? result - remainder : result) : 0;
 | |
| }
 | |
| 
 | |
| module.exports = toInteger;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 91936:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var baseTrim = __webpack_require__(74833),
 | |
|     isObject = __webpack_require__(11611),
 | |
|     isSymbol = __webpack_require__(55193);
 | |
| 
 | |
| /** Used as references for various `Number` constants. */
 | |
| var NAN = 0 / 0;
 | |
| 
 | |
| /** Used to detect bad signed hexadecimal string values. */
 | |
| var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
 | |
| 
 | |
| /** Used to detect binary string values. */
 | |
| var reIsBinary = /^0b[01]+$/i;
 | |
| 
 | |
| /** Used to detect octal string values. */
 | |
| var reIsOctal = /^0o[0-7]+$/i;
 | |
| 
 | |
| /** Built-in method references without a dependency on `root`. */
 | |
| var freeParseInt = parseInt;
 | |
| 
 | |
| /**
 | |
|  * Converts `value` to a number.
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 4.0.0
 | |
|  * @category Lang
 | |
|  * @param {*} value The value to process.
 | |
|  * @returns {number} Returns the number.
 | |
|  * @example
 | |
|  *
 | |
|  * _.toNumber(3.2);
 | |
|  * // => 3.2
 | |
|  *
 | |
|  * _.toNumber(Number.MIN_VALUE);
 | |
|  * // => 5e-324
 | |
|  *
 | |
|  * _.toNumber(Infinity);
 | |
|  * // => Infinity
 | |
|  *
 | |
|  * _.toNumber('3.2');
 | |
|  * // => 3.2
 | |
|  */
 | |
| function toNumber(value) {
 | |
|   if (typeof value == 'number') {
 | |
|     return value;
 | |
|   }
 | |
|   if (isSymbol(value)) {
 | |
|     return NAN;
 | |
|   }
 | |
|   if (isObject(value)) {
 | |
|     var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
 | |
|     value = isObject(other) ? (other + '') : other;
 | |
|   }
 | |
|   if (typeof value != 'string') {
 | |
|     return value === 0 ? value : +value;
 | |
|   }
 | |
|   value = baseTrim(value);
 | |
|   var isBinary = reIsBinary.test(value);
 | |
|   return (isBinary || reIsOctal.test(value))
 | |
|     ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
 | |
|     : (reIsBadHex.test(value) ? NAN : +value);
 | |
| }
 | |
| 
 | |
| module.exports = toNumber;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 89328:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var copyObject = __webpack_require__(35159),
 | |
|     keysIn = __webpack_require__(53893);
 | |
| 
 | |
| /**
 | |
|  * Converts `value` to a plain object flattening inherited enumerable string
 | |
|  * keyed properties of `value` to own properties of the plain object.
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 3.0.0
 | |
|  * @category Lang
 | |
|  * @param {*} value The value to convert.
 | |
|  * @returns {Object} Returns the converted plain object.
 | |
|  * @example
 | |
|  *
 | |
|  * function Foo() {
 | |
|  *   this.b = 2;
 | |
|  * }
 | |
|  *
 | |
|  * Foo.prototype.c = 3;
 | |
|  *
 | |
|  * _.assign({ 'a': 1 }, new Foo);
 | |
|  * // => { 'a': 1, 'b': 2 }
 | |
|  *
 | |
|  * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));
 | |
|  * // => { 'a': 1, 'b': 2, 'c': 3 }
 | |
|  */
 | |
| function toPlainObject(value) {
 | |
|   return copyObject(value, keysIn(value));
 | |
| }
 | |
| 
 | |
| module.exports = toPlainObject;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 42673:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var arrayEach = __webpack_require__(80594),
 | |
|     baseCreate = __webpack_require__(80158),
 | |
|     baseForOwn = __webpack_require__(26194),
 | |
|     baseIteratee = __webpack_require__(89278),
 | |
|     getPrototype = __webpack_require__(2173),
 | |
|     isArray = __webpack_require__(19785),
 | |
|     isBuffer = __webpack_require__(43854),
 | |
|     isFunction = __webpack_require__(28338),
 | |
|     isObject = __webpack_require__(11611),
 | |
|     isTypedArray = __webpack_require__(48519);
 | |
| 
 | |
| /**
 | |
|  * An alternative to `_.reduce`; this method transforms `object` to a new
 | |
|  * `accumulator` object which is the result of running each of its own
 | |
|  * enumerable string keyed properties thru `iteratee`, with each invocation
 | |
|  * potentially mutating the `accumulator` object. If `accumulator` is not
 | |
|  * provided, a new object with the same `[[Prototype]]` will be used. The
 | |
|  * iteratee is invoked with four arguments: (accumulator, value, key, object).
 | |
|  * Iteratee functions may exit iteration early by explicitly returning `false`.
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 1.3.0
 | |
|  * @category Object
 | |
|  * @param {Object} object The object to iterate over.
 | |
|  * @param {Function} [iteratee=_.identity] The function invoked per iteration.
 | |
|  * @param {*} [accumulator] The custom accumulator value.
 | |
|  * @returns {*} Returns the accumulated value.
 | |
|  * @example
 | |
|  *
 | |
|  * _.transform([2, 3, 4], function(result, n) {
 | |
|  *   result.push(n *= n);
 | |
|  *   return n % 2 == 0;
 | |
|  * }, []);
 | |
|  * // => [4, 9]
 | |
|  *
 | |
|  * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
 | |
|  *   (result[value] || (result[value] = [])).push(key);
 | |
|  * }, {});
 | |
|  * // => { '1': ['a', 'c'], '2': ['b'] }
 | |
|  */
 | |
| function transform(object, iteratee, accumulator) {
 | |
|   var isArr = isArray(object),
 | |
|       isArrLike = isArr || isBuffer(object) || isTypedArray(object);
 | |
| 
 | |
|   iteratee = baseIteratee(iteratee, 4);
 | |
|   if (accumulator == null) {
 | |
|     var Ctor = object && object.constructor;
 | |
|     if (isArrLike) {
 | |
|       accumulator = isArr ? new Ctor : [];
 | |
|     }
 | |
|     else if (isObject(object)) {
 | |
|       accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};
 | |
|     }
 | |
|     else {
 | |
|       accumulator = {};
 | |
|     }
 | |
|   }
 | |
|   (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {
 | |
|     return iteratee(accumulator, value, index, object);
 | |
|   });
 | |
|   return accumulator;
 | |
| }
 | |
| 
 | |
| module.exports = transform;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 68946:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var baseFlatten = __webpack_require__(23545),
 | |
|     baseRest = __webpack_require__(1197),
 | |
|     baseUniq = __webpack_require__(92198),
 | |
|     isArrayLikeObject = __webpack_require__(36468);
 | |
| 
 | |
| /**
 | |
|  * Creates an array of unique values, in order, from all given arrays using
 | |
|  * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
 | |
|  * for equality comparisons.
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 0.1.0
 | |
|  * @category Array
 | |
|  * @param {...Array} [arrays] The arrays to inspect.
 | |
|  * @returns {Array} Returns the new array of combined values.
 | |
|  * @example
 | |
|  *
 | |
|  * _.union([2], [1, 2]);
 | |
|  * // => [2, 1]
 | |
|  */
 | |
| var union = baseRest(function(arrays) {
 | |
|   return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));
 | |
| });
 | |
| 
 | |
| module.exports = union;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 83766:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var baseUniq = __webpack_require__(92198);
 | |
| 
 | |
| /**
 | |
|  * Creates a duplicate-free version of an array, using
 | |
|  * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
 | |
|  * for equality comparisons, in which only the first occurrence of each element
 | |
|  * is kept. The order of result values is determined by the order they occur
 | |
|  * in the array.
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 0.1.0
 | |
|  * @category Array
 | |
|  * @param {Array} array The array to inspect.
 | |
|  * @returns {Array} Returns the new duplicate free array.
 | |
|  * @example
 | |
|  *
 | |
|  * _.uniq([2, 1, 2]);
 | |
|  * // => [2, 1]
 | |
|  */
 | |
| function uniq(array) {
 | |
|   return (array && array.length) ? baseUniq(array) : [];
 | |
| }
 | |
| 
 | |
| module.exports = uniq;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 52929:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var baseUniq = __webpack_require__(92198);
 | |
| 
 | |
| /**
 | |
|  * This method is like `_.uniq` except that it accepts `comparator` which
 | |
|  * is invoked to compare elements of `array`. The order of result values is
 | |
|  * determined by the order they occur in the array.The comparator is invoked
 | |
|  * with two arguments: (arrVal, othVal).
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 4.0.0
 | |
|  * @category Array
 | |
|  * @param {Array} array The array to inspect.
 | |
|  * @param {Function} [comparator] The comparator invoked per element.
 | |
|  * @returns {Array} Returns the new duplicate free array.
 | |
|  * @example
 | |
|  *
 | |
|  * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];
 | |
|  *
 | |
|  * _.uniqWith(objects, _.isEqual);
 | |
|  * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]
 | |
|  */
 | |
| function uniqWith(array, comparator) {
 | |
|   comparator = typeof comparator == 'function' ? comparator : undefined;
 | |
|   return (array && array.length) ? baseUniq(array, undefined, comparator) : [];
 | |
| }
 | |
| 
 | |
| module.exports = uniqWith;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 81889:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| var baseDifference = __webpack_require__(11005),
 | |
|     baseRest = __webpack_require__(1197),
 | |
|     isArrayLikeObject = __webpack_require__(36468);
 | |
| 
 | |
| /**
 | |
|  * Creates an array excluding all given values using
 | |
|  * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
 | |
|  * for equality comparisons.
 | |
|  *
 | |
|  * **Note:** Unlike `_.pull`, this method returns a new array.
 | |
|  *
 | |
|  * @static
 | |
|  * @memberOf _
 | |
|  * @since 0.1.0
 | |
|  * @category Array
 | |
|  * @param {Array} array The array to inspect.
 | |
|  * @param {...*} [values] The values to exclude.
 | |
|  * @returns {Array} Returns the new array of filtered values.
 | |
|  * @see _.difference, _.xor
 | |
|  * @example
 | |
|  *
 | |
|  * _.without([2, 1, 2, 3], 1, 2);
 | |
|  * // => [3]
 | |
|  */
 | |
| var without = baseRest(function(array, values) {
 | |
|   return isArrayLikeObject(array)
 | |
|     ? baseDifference(array, values)
 | |
|     : [];
 | |
| });
 | |
| 
 | |
| module.exports = without;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 58702:
 | |
| /***/ ((__unused_webpack_module, exports) => {
 | |
| 
 | |
| "use strict";
 | |
| /**
 | |
|  * @license React
 | |
|  * react-is.production.min.js
 | |
|  *
 | |
|  * Copyright (c) Facebook, Inc. and its affiliates.
 | |
|  *
 | |
|  * This source code is licensed under the MIT license found in the
 | |
|  * LICENSE file in the root directory of this source tree.
 | |
|  */
 | |
| var b=Symbol.for("react.element"),c=Symbol.for("react.portal"),d=Symbol.for("react.fragment"),e=Symbol.for("react.strict_mode"),f=Symbol.for("react.profiler"),g=Symbol.for("react.provider"),h=Symbol.for("react.context"),k=Symbol.for("react.server_context"),l=Symbol.for("react.forward_ref"),m=Symbol.for("react.suspense"),n=Symbol.for("react.suspense_list"),p=Symbol.for("react.memo"),q=Symbol.for("react.lazy"),t=Symbol.for("react.offscreen"),u;u=Symbol.for("react.module.reference");
 | |
| function v(a){if("object"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;
 | |
| exports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return"object"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};
 | |
| exports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};
 | |
| exports.isValidElementType=function(a){return"string"===typeof a||"function"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||"object"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 19185:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| if (true) {
 | |
|   module.exports = __webpack_require__(58702);
 | |
| } else {}
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 17604:
 | |
| /***/ ((module) => {
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| 
 | |
| /**
 | |
| * FUNCTION: isArray( value )
 | |
| *	Validates if a value is an array.
 | |
| *
 | |
| * @param {*} value - value to be validated
 | |
| * @returns {Boolean} boolean indicating whether value is an array
 | |
| */
 | |
| function isArray( value ) {
 | |
| 	return Object.prototype.toString.call( value ) === '[object Array]';
 | |
| } // end FUNCTION isArray()
 | |
| 
 | |
| // EXPORTS //
 | |
| 
 | |
| module.exports = Array.isArray || isArray;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 86401:
 | |
| /***/ ((module) => {
 | |
| 
 | |
| "use strict";
 | |
| /**
 | |
| *
 | |
| *	VALIDATE: function
 | |
| *
 | |
| *
 | |
| *	DESCRIPTION:
 | |
| *		- Validates if a value is a function.
 | |
| *
 | |
| *
 | |
| *	NOTES:
 | |
| *		[1]
 | |
| *
 | |
| *
 | |
| *	TODO:
 | |
| *		[1]
 | |
| *
 | |
| *
 | |
| *	LICENSE:
 | |
| *		MIT
 | |
| *
 | |
| *	Copyright (c) 2014. Athan Reines.
 | |
| *
 | |
| *
 | |
| *	AUTHOR:
 | |
| *		Athan Reines. kgryte@gmail.com. 2014.
 | |
| *
 | |
| */
 | |
| 
 | |
| 
 | |
| 
 | |
| /**
 | |
| * FUNCTION: isFunction( value )
 | |
| *	Validates if a value is a function.
 | |
| *
 | |
| * @param {*} value - value to be validated
 | |
| * @returns {Boolean} boolean indicating whether value is a function
 | |
| */
 | |
| function isFunction( value ) {
 | |
| 	return ( typeof value === 'function' );
 | |
| } // end FUNCTION isFunction()
 | |
| 
 | |
| 
 | |
| // EXPORTS //
 | |
| 
 | |
| module.exports = isFunction;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 9333:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| "use strict";
 | |
| /**
 | |
| *
 | |
| *	VALIDATE: integer-array
 | |
| *
 | |
| *
 | |
| *	DESCRIPTION:
 | |
| *		- Validates if a value is an integer array.
 | |
| *
 | |
| *
 | |
| *	NOTES:
 | |
| *		[1]
 | |
| *
 | |
| *
 | |
| *	TODO:
 | |
| *		[1]
 | |
| *
 | |
| *
 | |
| *	LICENSE:
 | |
| *		MIT
 | |
| *
 | |
| *	Copyright (c) 2015. Athan Reines.
 | |
| *
 | |
| *
 | |
| *	AUTHOR:
 | |
| *		Athan Reines. kgryte@gmail.com. 2015.
 | |
| *
 | |
| */
 | |
| 
 | |
| 
 | |
| 
 | |
| // MODULES //
 | |
| 
 | |
| var isArray = __webpack_require__( 17604 ),
 | |
| 	isInteger = __webpack_require__( 50459 );
 | |
| 
 | |
| 
 | |
| // IS INTEGER ARRAY //
 | |
| 
 | |
| /**
 | |
| * FUNCTION: isIntegerArray( value )
 | |
| *	Validates if a value is an integer array.
 | |
| *
 | |
| * @param {*} value - value to be validated
 | |
| * @returns {Boolean} boolean indicating if a value is an integer array
 | |
| */
 | |
| function isIntegerArray( value ) {
 | |
| 	var len;
 | |
| 	if ( !isArray( value ) ) {
 | |
| 		return false;
 | |
| 	}
 | |
| 	len = value.length;
 | |
| 	if ( !len ) {
 | |
| 		return false;
 | |
| 	}
 | |
| 	for ( var i = 0; i < len; i++ ) {
 | |
| 		if ( !isInteger( value[i] ) ) {
 | |
| 			return false;
 | |
| 		}
 | |
| 	}
 | |
| 	return true;
 | |
| } // end FUNCTION isIntegerArray()
 | |
| 
 | |
| 
 | |
| // EXPORTS //
 | |
| 
 | |
| module.exports = isIntegerArray;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 50459:
 | |
| /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
 | |
| 
 | |
| "use strict";
 | |
| /**
 | |
| *
 | |
| *	VALIDATE: integer
 | |
| *
 | |
| *
 | |
| *	DESCRIPTION:
 | |
| *		- Validates if a value is an integer.
 | |
| *
 | |
| *
 | |
| *	NOTES:
 | |
| *		[1]
 | |
| *
 | |
| *
 | |
| *	TODO:
 | |
| *		[1]
 | |
| *
 | |
| *
 | |
| *	LICENSE:
 | |
| *		MIT
 | |
| *
 | |
| *	Copyright (c) 2014. Athan Reines.
 | |
| *
 | |
| *
 | |
| *	AUTHOR:
 | |
| *		Athan Reines. kgryte@gmail.com. 2014.
 | |
| *
 | |
| */
 | |
| 
 | |
| 
 | |
| 
 | |
| // MODULES //
 | |
| 
 | |
| var isNumber = __webpack_require__( 7365 );
 | |
| 
 | |
| 
 | |
| // ISINTEGER //
 | |
| 
 | |
| /**
 | |
| * FUNCTION: isInteger( value )
 | |
| *	Validates if a value is an integer.
 | |
| *
 | |
| * @param {Number} value - value to be validated
 | |
| * @returns {Boolean} boolean indicating whether value is an integer
 | |
| */
 | |
| function isInteger( value ) {
 | |
| 	return isNumber( value ) && value%1 === 0;
 | |
| } // end FUNCTION isInteger()
 | |
| 
 | |
| 
 | |
| // EXPORTS //
 | |
| 
 | |
| module.exports = isInteger;
 | |
| 
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ 7365:
 | |
| /***/ ((module) => {
 | |
| 
 | |
| "use strict";
 | |
| /**
 | |
| *
 | |
| *	VALIDATE: number
 | |
| *
 | |
| *
 | |
| *	DESCRIPTION:
 | |
| *		- Validates if a value is a number.
 | |
| *
 | |
| *
 | |
| *	NOTES:
 | |
| *		[1]
 | |
| *
 | |
| *
 | |
| *	TODO:
 | |
| *		[1]
 | |
| *
 | |
| *
 | |
| *	LICENSE:
 | |
| *		MIT
 | |
| *
 | |
| *	Copyright (c) 2014. Athan Reines.
 | |
| *
 | |
| *
 | |
| *	AUTHOR:
 | |
| *		Athan Reines. kgryte@gmail.com. 2014.
 | |
| *
 | |
| */
 | |
| 
 | |
| 
 | |
| 
 | |
| /**
 | |
| * FUNCTION: isNumber( value )
 | |
| *	Validates if a value is a number.
 | |
| *
 | |
| * @param {*} value - value to be validated
 | |
| * @returns {Boolean} boolean indicating whether value is a number
 | |
| */
 | |
| function isNumber( value ) {
 | |
| 	return ( typeof value === 'number' || Object.prototype.toString.call( value ) === '[object Number]' ) && value.valueOf() === value.valueOf();
 | |
| } // end FUNCTION isNumber()
 | |
| 
 | |
| 
 | |
| // EXPORTS //
 | |
| 
 | |
| module.exports = isNumber;
 | |
| 
 | |
| 
 | |
| /***/ })
 | |
| 
 | |
| }]);
 | |
| //# sourceMappingURL=7995.45be6443b704da1daafc.js.map?v=45be6443b704da1daafc
 |