export function transformItem()

in modules/material-parser/src/parse/transform.ts [253:306]


export function transformItem(name: string, item: any) {
  const {
    description,
    flowType,
    tsType,
    type = tsType || flowType,
    optional,
    required = optional,
    defaultValue,
    ...others
  } = item;
  const result: any = {
    name,
  };

  if (type) {
    result.propType = transformType({
      ...type,
      ...omit(others, ['name']),
      required: !!required,
    });
  }
  if (description) {
    if (description.includes('\n')) {
      result.description = description.split('\n')[0];
    } else {
      result.description = description;
    }
  }
  if (!isNil(defaultValue) && typeof defaultValue === 'object' && isEvaluable(defaultValue)) {
    if (defaultValue === null) {
      result.defaultValue = defaultValue;
    } else if ('computed' in defaultValue) {
      // parsed data from react-docgen
      try {
        if (isEvaluable(defaultValue.value)) {
          result.defaultValue = safeEval(defaultValue.value);
        } else {
          result.defaultValue = defaultValue.value;
        }
      } catch (e) {
        log(e);
      }
    } else {
      // parsed data from react-docgen-typescript
      result.defaultValue = defaultValue.value;
    }
  }
  if (result.propType === undefined) {
    delete result.propType;
  }

  return result;
}