autoFormat = (typedValue, columnFormat, columnUnitSummary = undefined) => {
	if (columnFormat._autoFormat?.autoFormatFunction) {
		return columnFormat._autoFormat.autoFormatFunction(typedValue, columnFormat, columnUnitSummary);
	} else if (columnFormat._autoFormat.autoFormatCode) {
		let autoFormatCode = columnFormat?._autoFormat?.autoFormatCode;
		let valueType = columnFormat.valueType;
		if ('number' === valueType) {
			let truncateUnits = columnFormat?._autoFormat?.truncateUnits;

			let unitValue = typedValue;
			let unit = '';

			if (truncateUnits && columnUnitSummary?.median !== undefined) {
				//use of median is a bit detached here. Perhaps _autoFormat.truncateUnits could instead be _autoFormat.columnUnits=k|M|B (already done for default currency)
				//this will affect the auto currency formatting since they simply rely on the median. Perhaps they should be functions instead.
				unit = getAutoColumnUnit(columnUnitSummary.median);
				unitValue = applyColumnUnits(typedValue, unit);
			}
			return ssf.format(autoFormatCode, unitValue) + unit;
		} else {
			return ssf.format(autoFormatCode, typedValue);
		}
	} else {
		console.warn('autoFormat called without a formatCode or function');
	}
	return typedValue;
}
Formatting logic for formats with formatCode=AUTO_FORMAT_CODE
@param {*} typedValue the value to be formatted
@param {*} columnFormat the auto formatting description with _autoFormat settings
@param {*} columnUnitSummary the summary of units in the column (only applicable to numbered columns)
@returns formattedv value