import type { Formatter, IFormatters } from '../interfaces/formatter.interface.js'; import { getAllDateFieldTypes } from '../services/utilities.js'; import { arrayObjectToCsvFormatter } from './arrayObjectToCsvFormatter.js'; import { arrayToCsvFormatter } from './arrayToCsvFormatter.js'; import { checkmarkMaterialFormatter } from './checkmarkMaterialFormatter.js'; import { collectionEditorFormatter } from './collectionEditorFormatter.js'; import { collectionFormatter } from './collectionFormatter.js'; import { complexObjectFormatter } from './complexObjectFormatter.js'; import { currencyFormatter } from './currencyFormatter.js'; import { decimalFormatter } from './decimalFormatter.js'; import { dollarColoredBoldFormatter } from './dollarColoredBoldFormatter.js'; import { dollarColoredFormatter } from './dollarColoredFormatter.js'; import { dollarFormatter } from './dollarFormatter.js'; import { getAssociatedDateFormatter, getBaseDateFormatter } from './formatterUtilities.js'; import { htmlDecodeFormatter } from './htmlDecodeFormatter.js'; import { hyperlinkFormatter } from './hyperlinkFormatter.js'; import { iconBooleanFormatter } from './iconBooleanFormatter.js'; import { iconFormatter } from './iconFormatter.js'; import { maskFormatter } from './maskFormatter.js'; import { multipleFormatter } from './multipleFormatter.js'; import { percentCompleteBarFormatter } from './percentCompleteBarFormatter.js'; import { percentCompleteBarWithTextFormatter } from './percentCompleteBarWithTextFormatter.js'; import { percentCompleteFormatter } from './percentCompleteFormatter.js'; import { percentFormatter } from './percentFormatter.js'; import { percentSymbolFormatter } from './percentSymbolFormatter.js'; import { progressBarFormatter } from './progressBarFormatter.js'; import { translateBooleanFormatter } from './translateBooleanFormatter.js'; import { translateFormatter } from './translateFormatter.js'; import { treeExportFormatter } from './treeExportFormatter.js'; import { treeFormatter } from './treeFormatter.js'; import { treeParseTotalsFormatter } from './treeParseTotalsFormatter.js'; /** Provides a list of different Formatters that will change the cell value displayed in the UI */ const allFormatters: Record = { arrayObjectToCsv: arrayObjectToCsvFormatter, arrayToCsv: arrayToCsvFormatter, checkmarkMaterial: checkmarkMaterialFormatter, complex: complexObjectFormatter, complexObject: complexObjectFormatter, collection: collectionFormatter, collectionEditor: collectionEditorFormatter, currency: currencyFormatter, date: getBaseDateFormatter(), // -- // add all the date Formatters dynamically below decimal: decimalFormatter, dollar: dollarFormatter, dollarColored: dollarColoredFormatter, dollarColoredBold: dollarColoredBoldFormatter, hyperlink: hyperlinkFormatter, icon: iconFormatter, htmlDecode: htmlDecodeFormatter, iconBoolean: iconBooleanFormatter, mask: maskFormatter, multiple: multipleFormatter, percent: percentFormatter, percentComplete: percentCompleteFormatter, percentCompleteBar: percentCompleteBarFormatter, percentCompleteBarWithText: percentCompleteBarWithTextFormatter, percentSymbol: percentSymbolFormatter, progressBar: progressBarFormatter, translate: translateFormatter, translateBoolean: translateBooleanFormatter, tree: treeFormatter, treeParseTotals: treeParseTotalsFormatter, treeExport: treeExportFormatter, }; // add date Formatters dynamically but exclude "date" since that one was created above // and it has a different implementation getAllDateFieldTypes().forEach((dateType) => { if (dateType !== 'date') { allFormatters[dateType] = getAssociatedDateFormatter(dateType, dateType); } }); /** * All available Formatters, including static and dynamically added date formatters. * * - Static: see IFormatters interface * - Dynamic: all date field types (see {@link getAllDateFieldTypes}) */ export const Formatters: IFormatters = allFormatters as unknown as IFormatters;