/**
 * Detects if string has a valid font size unit in it
 * @param value
 * @returns true it encounters a valid font size unit, otherwise false
 */
export const hasFontSizeUnit = (value: string | number) => {
  if (typeof value === 'string') {
    if (value.indexOf('rem') >= 0) {
      const newValue = value.replace('rem', '');
      if (newValue) return true;
    }
    if (value.indexOf('px') >= 0) {
      return true;
    }

    if (value.indexOf('pt') >= 0) {
      return true;
    }

    if (value.indexOf('sp') >= 0) {
      return true;
    }
  }
  return false;
};

/**
 * Checks if the value is a valid font size unit
 * @param value the string or number value to check
 * @returns boolean if true, the value is a valid font size unit
 */
export const isValidFontSizeUnit = (value: string | number): boolean => {
  if (typeof value === 'string') {
    if (hasFontSizeUnit(value)) {
      if (value.indexOf('rem') >= 0) {
        const newValue = value.replace('rem', '');
        if (newValue) {
          return !hasFontSizeUnit(newValue);
        }
      }
      if (value.indexOf('px') >= 0) {
        const newValue = value.replace('px', '');
        if (newValue) {
          return !hasFontSizeUnit(newValue);
        }
      }

      if (value.indexOf('pt') >= 0) {
        const newValue = value.replace('pt', '');
        if (newValue) {
          return !hasFontSizeUnit(newValue);
        }
      }

      if (value.indexOf('sp') >= 0) {
        const newValue = value.replace('sp', '');
        if (newValue) {
          return !hasFontSizeUnit(newValue);
        }
      }
    }
  }
  return false;
};
