normalizeValue(value) {
    value = value || {};
    if (typeof value !== 'object') {
      if (typeof value === 'string') {
        value = {
          [value]: true
        };
      }
      else {
        value = {};
      }
    }
    if (Array.isArray(value)) {
      _.each(value, (val) => {
        value[val] = true;
      });
    }

    const checkedValues = _.keys(_.pickBy(value, (val) => val));
    if (this.isSelectURL && this.templateData && _.every(checkedValues, (val) => this.templateData[val])) {
      const submission = this.root.submission;
      if (!submission.metadata.selectData) {
        submission.metadata.selectData = {};
      }
      const selectData = [];
      checkedValues.forEach((value) => selectData.push(this.templateData[value]));
      _.set(submission.metadata.selectData, this.path, selectData);
    }

    // Ensure that for dataSrc == 'values' that there are not any other superfluous values.
    if (this.component.dataSrc === 'values') {
      for (const key in value) {
        if (!this.component.values.find((val) => val.value === key)) {
          delete value[key];
        }
      }
    }
    else if (_.isEmpty(this.loadedOptions) && !checkedValues.length) {
      value = {};
    }
    return value;
  }
Normalize values coming into updateValue.
@param {any} value - The value to normalize.
@returns {*} - The normalized value