Skip to content

Data Grid Formatting

interface DataGridAdvancedFormatsConfig {
/** Disable or override individual built-ins by stable id. */
readonly formats?: Readonly<Record<
string,
false | DataGridAdvancedFormatOverride
>>;
/** Application formats appended to the built-in catalog. */
readonly customFormats?: readonly DataGridAdvancedFormatDefinition[];
/** Optional editors for ordinary value presets such as `date`. */
readonly presetEditors?: Partial<Record<
DataGridValueFormatPreset,
false | EditorCtr | string
>>;
/** Allow presentations to replace application cell templates globally. */
readonly replaceAuthoredTemplates?: boolean;
/** Allow format-resolved editors to replace application editors globally. */
readonly replaceAuthoredEditors?: boolean
}

HTMLRevoGridElementEventMap (Extended from global)

Section titled “HTMLRevoGridElementEventMap (Extended from global)”
interface HTMLRevoGridElementEventMap {
[DATA_GRID_FORMATTING_CONFIGURATION_CHANGE_EVENT]: Readonly<DataGridFormattingConfig>
}

HTMLRevoGridElement (Extended from global)

Section titled “HTMLRevoGridElement (Extended from global)”
interface HTMLRevoGridElement {
/** Reactive declarative formats consumed by DataGridFormattingPlugin. */
dataGridFormatting?: DataGridFormattingPresetState;
'data-grid-formatting'?: DataGridFormattingPresetState
}

ColumnRegular (Extended from @revolist/revogrid)

Section titled “ColumnRegular (Extended from @revolist/revogrid)”
interface ColumnRegular {
/** Static or cell-resolved declarative Format Cells configuration. */
dataGridFormat?: DataGridFormatDefinition<TModel, P>
}

AdditionalData (Extended from @revolist/revogrid)

Section titled “AdditionalData (Extended from @revolist/revogrid)”
interface AdditionalData {
/** @deprecated Prefer `grid.dataGridFormatting`. */
dataGridFormatting?: DataGridFormattingPresetState
}

@internal Coordinates reciprocal plugin installation.

interface DataGridFormattingPluginOptions {
readonly installContextMenu?: boolean;
readonly installPanel?: boolean
}

Spreadsheet-style value, visual presentation, appearance, and editor configuration for RevoGrid cells, rows, and columns.

Register this plugin once in grid.plugins. It installs the task-oriented data-grid context menu, Format Cells dialog, and visual-format tooltips automatically. It also installs the formatting-panel runtime; set grid.dataGridFormattingPanel = true to show the opt-in toolbar. Formatting can then be declared through column.dataGridFormat or grid.dataGridFormatting, inferred from a registered renderer assigned to column.cellTemplate, or changed at runtime through this plugin’s API. Source values are never modified.

Numeric values and numeric presets are right-aligned automatically. Set appearance.horizontal to left, center, or right to override it. Configure autoAlignNumericValues: false to disable this derived alignment. Effective advanced presentations retain their own layout unless an explicit horizontal alignment is authored.

Example: Declarative column, row, and cell formatting

import type { ColumnRegular } from '@revolist/revogrid';
import {
DataGridFormattingPlugin,
type DataGridCellFormat,
} from '@revolist/revogrid-pro';
type InvoiceRow = { id: string; customer: string; amount: number };
const money: DataGridCellFormat = {
value: {
preset: 'currency',
locale: 'en-GB',
currency: 'GBP',
decimalPlaces: 2,
},
};
const columns: ColumnRegular<string, InvoiceRow>[] = [
{ prop: 'customer', name: 'Customer' },
{ prop: 'amount', name: 'Amount', dataGridFormat: money },
];
grid.plugins = [DataGridFormattingPlugin];
grid.columns = columns;
grid.dataGridFormatting = {
rows: [{ row: 0, format: { appearance: { bold: true } } }],
cells: [{ range: { start: { row: 1, column: 1 } }, format: {
...money,
appearance: { ...money.appearance, bold: true, fillColor: '#fef3c7' },
} }],
};
grid.source = [
{ id: 'invoice-1', customer: 'Acme Ltd', amount: 1200 },
{ id: 'invoice-2', customer: 'Northwind', amount: -350.5 },
];

Example: Save and restore application-owned formatting state

const saved = loadFormatting();
grid.plugins = [DataGridFormattingPlugin];
grid.dataGridFormatting = {
state: saved,
};
grid.addEventListener('datagridformattingchange', ({ detail }) => {
saveFormatting(detail.state);
});

Example: Configure advanced formats and application-owned editors

import DateColumnType from '@revolist/revogrid-column-date';
import {
DataGridFormattingPlugin,
type DataGridFormattingConfig,
} from '@revolist/revogrid-pro';
const dateType = new DateColumnType();
const formatting: DataGridFormattingConfig = {
advancedFormats: {
// Compatible built-ins are enabled unless explicitly disabled.
formats: {
pie: false,
heatmap: { defaults: { minValue: 0, maxValue: 100 } },
},
// Editor packages stay optional and are supplied by the application.
presetEditors: { date: dateType.editor },
},
};
grid.plugins = [DataGridFormattingPlugin];
grid.dataGridContextMenu = { formatting };
grid.columns = [{
prop: 'completion',
name: 'Completion',
dataGridFormat: {
presentation: {
id: 'progress-line',
options: { minValue: 0, maxValue: 100 },
},
},
}];
  • Auto-installed EventManagerPlugin: Normalizes edits and paste operations through the unified grid edit pipeline.
  • Auto-installed AutoFillPlugin: Generates spreadsheet-style value sequences while formatting follows the filled range.
  • Auto-installed ClipboardPlugin: Provides rich Excel-compatible clipboard formatting.
  • Auto-installed DataGridFormatDialogPlugin: Uses the Format Cells dialog for advanced formatting.
  • Optional FormulaPlugin: Formats evaluated formula results while preserving raw formula source values.
  • Auto-installed DataGridContextMenuPlugin: Provides Format Cells commands through the task-oriented data-grid context menu.
  • Auto-installed TooltipPlugin: Displays details for visual-format parts such as Timeline events.
  • Auto-installed DataGridFormattingPanelPlugin: Provides the opt-in single-row formatting toolbar runtime.
class DataGridFormattingPlugin {
/**
* Replace the runtime options used by dialog and programmatic formatting.
*
* Context-menu applications can set the same options reactively through
* `grid.dataGridContextMenu.formatting`.
*
* @param config Locale, dialog, value-kind, advanced-format,
* and optional editor settings.
*/
configure(config: DataGridFormattingConfig<T> = {}): void;
/** Return the active formatting options used by the dialog and toolbar. */
getConfiguration(): Readonly<DataGridFormattingConfig<T>>;
/** Convert safe Excel HTML declarations into canonical formatting options. */
importExcelClipboardFormat(
declarations: readonly string[],
): DataGridCellFormat | undefined;
/** Convert display-only Excel HTML text using its canonical imported format. */
importExcelClipboardValue(displayText: string, format?: DataGridCellFormat): unknown;
/** Convert canonical formatting options into Excel-compatible HTML declarations. */
exportExcelClipboardFormat(format: DataGridCellFormat): string | undefined;
/** Convert a source value into the typed/display pair written to Excel HTML. */
exportExcelClipboardValue(value: unknown, format: DataGridCellFormat);
/**
* Apply a complete value, advanced-presentation, and appearance format to a
* physical cell, complete-row, or complete-column selection. This runtime format takes precedence over
* declarative presets.
*
* @param target Physical cell, complete-row, or complete-column source coordinates to format.
* @param format Complete format to apply.
*/
apply(target: DataGridFormattingTarget, format: DataGridCellFormat): void;
/** @internal Applies one clipboard/import batch with a single refresh and change event. */
applyBatch(entries: readonly {
target: DataGridFormattingTarget;
/** `null` records an explicit clipboard clear for the target. */
format: DataGridCellFormat | null;
}[]): void;
/** @internal Applies accepted autofill formatting as one runtime mutation. */
applyAutofillBatch(entries: readonly AutofillFormattingBatchEntry[]): void;
/**
* Select an ordinary value presentation while retaining font, fill,
* alignment, and other appearance settings. A concrete value presentation
* replaces any active advanced visualization for the same target.
*
* @param target Physical cell, complete-row, or complete-column source coordinates to format.
* @param value Value-format layer to apply.
*/
applyValueFormat(
target: DataGridFormattingTarget,
value: DataGridCellFormat['value'],
): void;
/**
* Patch selected formats without erasing unrelated value, appearance, or
* presentation settings. A resolver can return a different patch per cell.
*/
patch(
target: DataGridFormattingTarget,
patch: DataGridCellFormatPatch | DataGridFormattingPatchResolver<T>,
): void;
/**
* Clear runtime formatting for a physical cell selection without changing
* source values. The explicit clear suppresses lower-priority declarative
* formatting for that target.
*
* @param target Physical cell, complete-row, or complete-column source coordinates to clear.
*/
clear(target: DataGridFormattingTarget): void;
/**
* Return the effective format for a cell after runtime and
* declarative precedence has been resolved.
*
* @param address Physical source address of the cell.
* @returns The effective format, or `undefined` when no format applies.
*/
getFormat(address: PhysicalCellAddress): DataGridCellFormat | undefined;
/** Return the effective coordinate-owned format for a complete column. */
getColumnFormat(address: PhysicalColumnAddress): DataGridCellFormat | undefined;
/** Return the coordinate-owned format for a complete row. */
getRowFormat(address: PhysicalRowAddress): DataGridCellFormat | undefined;
/**
* Return the effective built-in, overridden, or application-defined advanced
* format definition by its stable presentation id.
*
* Export integrations use this to apply presentation-owned scalar export
* values without inspecting rendered cells.
*/
getAdvancedFormatDefinition(id: string): DataGridAdvancedFormatDefinition | undefined;
/**
* Return a portable snapshot of coordinate-owned runtime operations.
*/
getState(): DataGridFormattingRuntimeState;
/**
* Replace runtime Apply and Clear operations from a previous `getState()`
* snapshot, refresh the grid, and emit `datagridformattingchange`.
*/
setState(state: DataGridFormattingRuntimeState): void;
/** @internal Replays a formatting state from HistoryPlugin. */
applyHistoryState(state: DataGridFormattingRuntimeState): boolean;
/** @internal Called by HistoryPlugin around an atomic structural snapshot replay. */
beginHistoryStructureReplay(): void;
/** @internal Called by HistoryPlugin after formatting and structure are both restored. */
endHistoryStructureReplay(): void;
/** @internal Keeps partial structural commands inside their History transaction. */
flushPendingStructuralTransaction(transactionId: number): void;
/**
* Open the Format Cells dialog for a selection. Context-menu users do not
* need to call this method directly.
*
* @param target Physical cells, complete rows, or complete columns to edit.
* @param valueKind Value category used to choose available presets.
* @param valueFormatting Set to `false` for appearance-only editing.
*/
openDialog(
target: DataGridFormattingTarget,
valueKind: DataGridFormattingValueKind,
valueFormatting = true,
): void;
/** Return the effective value kind, including evaluated formula results. */
inferValueKind(target: DataGridFormattingTarget): DataGridFormattingValueKind;
resolveCellValue(
model: T,
column: ColumnRegular,
rowType?: DimensionRows,
value: unknown = model[column.prop],
): unknown;
}

export function isDataGridFormattingRuntime(
value: unknown,
): value is DataGridFormattingRuntime;

DATA_GRID_FORMATTING_PLUGIN: string;

DATA_GRID_FORMATTING_CHANGE_EVENT: string;

DATA_GRID_FORMATTING_CONFIGURATION_CHANGE_EVENT

Section titled “DATA_GRID_FORMATTING_CONFIGURATION_CHANGE_EVENT”
DATA_GRID_FORMATTING_CONFIGURATION_CHANGE_EVENT: string;

DataGridFormattingRuntime (Extended from index.ts)

Section titled “DataGridFormattingRuntime (Extended from index.ts)”
interface DataGridFormattingRuntime {
readonly [DATA_GRID_FORMATTING_PLUGIN]: true;
getFormat(address: PhysicalCellAddress): DataGridCellFormat | undefined;
getColumnFormat(address: PhysicalColumnAddress): DataGridCellFormat | undefined;
getRowFormat(address: PhysicalRowAddress): DataGridCellFormat | undefined;
getAdvancedFormatDefinition(id: string): DataGridAdvancedFormatDefinition | undefined;
getState(): DataGridFormattingRuntimeState;
apply(target: DataGridFormattingTarget, format: DataGridCellFormat): void;
applyBatch(entries: readonly {
target: DataGridFormattingTarget;
format: DataGridCellFormat | null;
}[]): void;
importExcelClipboardFormat(declarations: readonly string[]): DataGridCellFormat | undefined;
importExcelClipboardValue(displayText: string, format?: DataGridCellFormat): unknown;
exportExcelClipboardFormat(format: DataGridCellFormat): string | undefined;
exportExcelClipboardValue(
value: unknown,
format: DataGridCellFormat,
): DataGridExcelClipboardValue;
resolveCellValue(
model: DataType,
column: ColumnRegular,
rowType?: DimensionRows,
value?: unknown,
): unknown
}

interface DataGridExcelClipboardValue {
/** Typed value written to Excel HTML. Source data is never mutated. */
readonly value: unknown;
/** Canonically formatted text shown by Excel before/recalculation. */
readonly displayText: string
}

export function resolveDataGridFormattingLocale(
localeText?: DataGridFormattingDialogConfig['localeText'],
): DataGridFormattingLocaleText;

DATA_GRID_FORMATTING_LOCALE: {
title: string;
close: string;
description: string;
selectionSummary: string;
selectionCells: string;
selectionColumns: string;
valueSection: string;
automaticDescription: string;
advancedSection: string;
advancedNone: string;
advancedDescription: string;
numberSection: string;
category: string;
locale: string;
browserDefault: string;
decimals: string;
grouping: string;
currency: string;
negativeNumbers: string;
dateStyle: string;
timeStyle: string;
custom: string;
formatCode: string;
invalidFormatCode: string;
fontSection: string;
typographySection: string;
colorsSection: string;
fontFamily: string;
defaultFont: string;
fontSize: string;
bold: string;
italic: string;
underline: string;
strike: string;
textColor: string;
fillColor: string;
useTextColor: string;
useFillColor: string;
defaultColor: string;
noFill: string;
customColor: string;
customColorHex: string;
invalidColor: string;
colorLabels: { [k: string]: string; };
advancedGroupLabels: { Advanced: string; Indicators: string; Charts: string; Values: string; Identity: string; Summaries: string; };
advancedFormatLabels: { 'progress-line': string; 'progress-line-value': string; 'circular-progress': string; heatmap: string; rating: string; change: string; threshold: string; boolean: string; thumbs: string; badge: string; sparkline: string; bar: string; pie: string; timeline: string; avatar: string; 'avatar-with-text': string; 'summary-percentage': string; 'summary-aggregate': string; };
advancedFormatDescriptions: { 'progress-line': string; 'progress-line-value': string; threshold: string; };
advancedControlLabels: { 'progress-line.minValue': string; 'progress-line.maxValue': string; 'progress-line-value.minValue': string; 'progress-line-value.maxValue': string; 'circular-progress.minValue': string; 'circular-progress.maxValue': string; 'circular-progress.showValue': string; 'heatmap.minValue': string; 'heatmap.midValue': string; 'heatmap.maxValue': string; 'heatmap.lowColor': string; 'heatmap.midColor': string; 'heatmap.highColor': string; 'rating.maxStars': string; 'badge.rectangular': string; 'sparkline.minValue': string; 'sparkline.maxValue': string; 'bar.minValue': string; 'bar.maxValue': string; 'bar.barPosition': string; 'avatar.avatarSize': string; 'avatar.rectangular': string; 'avatar-with-text.avatarSize': string; 'avatar-with-text.rectangular': string; 'summary-percentage.maxItems': string; 'summary-aggregate.showSum': string; 'summary-aggregate.showAvg': string; };
advancedOptionLabels: { 'bar.barPosition.bottom': string; 'bar.barPosition.top': string; };
expandSection: string;
collapseSection: string;
alignmentSection: string;
horizontal: string;
vertical: string;
wrap: string;
borderSection: string;
borderStyle: string;
borderColor: string;
preview: string;
previewOriginal: string;
previewFormatted: string;
previewHint: string;
clear: string;
cancel: string;
apply: string;
textExample: string;
presetLabels: { automatic: string; number: string; currency: string; accounting: string; percent: string; scientific: string; date: string; datetime: string; time: string; text: string; };
optionLabels: { automatic: string; left: string; center: string; right: string; top: string; middle: string; bottom: string; none: string; solid: string; dashed: string; dotted: string; double: string; short: string; medium: string; long: string; full: string; negativeMinus: string; negativeRed: string; negativeParentheses: string; };
dataEditor: { chartTitle: string; timelineTitle: string; close: string; preview: string; pointSummary: string; pointsSummary: string; eventSummary: string; eventsSummary: string; value: string; pointValue: string; label: string; start: string; end: string; eventLabel: string; eventStart: string; eventEnd: string; addPoint: string; addEvent: string; deletePoint: string; deleteEvent: string; reorderPoint: string; moveEvent: string; reorderEvent: string; pasteValues: string; pasteHint: string; replaceValues: string; appendValues: string; editRawJson: string; visualEditor: string; rawJsonHint: string; invalidNumber: string; invalidPaste: string; invalidTimeline: string; invalidJson: string; outsideRange: string; emptyPoints: string; emptyEvents: string; cancel: string; apply: string; validationSummary: string; resizeStart: string; resizeEnd: string; };
};

  • Auto-installed DialogPlugin: Uses the shared Pro dialog runtime for Format Cells.
class DataGridFormatDialogPlugin {
open(options: DataGridFormattingDialogOpenOptions<T>): void;
close(): void;
}

export function createDataGridFormattingEditor(
document: Document,
options: DataGridFormattingDialogOpenOptions,
locale: DataGridFormattingLocaleText,
): DataGridFormattingEditor;

interface DataGridFormattingEditor {
readonly element: HTMLElement;
readonly preview: HTMLElement;
readonly descriptionId: string;
getDraft(): DataGridCellFormat;
isValid(): boolean;
onValidityChange(listener: (valid: boolean) => void): () => void;
destroy(): void
}

Convert raw Excel HTML declarations into the canonical formatting options. Clipboard codecs deliberately do not interpret or render these declarations.

export function importDataGridExcelClipboardFormat(
declarations: readonly string[],
): DataGridCellFormat | undefined;

Convert canonical formatting options into the Excel HTML representation.

export function exportDataGridExcelClipboardFormat(
format: DataGridCellFormat,
): string | undefined;

Convert a raw value into Excel HTML’s typed value plus canonical display.

export function exportDataGridExcelClipboardValue(
value: unknown,
format: DataGridCellFormat,
);

Map canonical value-format options to one native Excel number-format code.

export function createDataGridExcelNumberFormat(
format: import('../types').DataGridValueFormat,
): string | undefined;

Convert display-only Excel HTML text into a canonical typed value.

export function importDataGridExcelClipboardDisplayValue(
displayText: string,
format?: DataGridCellFormat,
): unknown;

export function resolveDataGridAdvancedFormats(
config?: false | DataGridAdvancedFormatsConfig,
): readonly DataGridAdvancedFormatDefinition[];

export function compatibleDataGridAdvancedFormats<T extends DataType>(
definitions: readonly DataGridAdvancedFormatDefinition[],
selection: DataGridFormattingResolvedSelection<T>,
fallbackKind: DataGridFormattingValueKind = 'unknown',
resolveValue?: (context: DataGridAdvancedFormatCompatibilityContext) => unknown,
): readonly DataGridAdvancedFormatDefinition[];

export function isDataGridAdvancedFormatCompatible(
definition: DataGridAdvancedFormatDefinition,
context: DataGridAdvancedFormatCompatibilityContext,
): boolean;

export function findDataGridAdvancedFormat(
definitions: readonly DataGridAdvancedFormatDefinition[],
id: string | undefined,
): DataGridAdvancedFormatDefinition | undefined;

Resolve the authored advanced-format baseline advertised by a cell renderer.

export function resolveDataGridRendererFormat(
definitions: readonly DataGridAdvancedFormatDefinition[],
column: ColumnRegular | undefined,
): DataGridCellFormat | undefined;

Map generic appearance colors either to the cell or renderer-owned variables.

export function dataGridAdvancedAppearanceColorStyle(
appearance: DataGridCellFormat['appearance'],
definition?: DataGridAdvancedFormatDefinition,
textColor = appearance?.textColor,
): Record<string, string | undefined>;

Cell-capable visualizations shipped with RevoGrid Pro.

DATA_GRID_BUILT_IN_ADVANCED_FORMATS: readonly DataGridAdvancedFormatDefinition[];

export function createDataGridValueFormat(
preset: DataGridValueFormatPreset,
locale?: string,
currency = 'USD',
): DataGridCellFormat;

export function createDataGridCodeFormat(
formatCode: string,
locale?: string,
): DataGridCellFormat;

export function isDataGridPresetValueFormat(
format: DataGridValueFormat | undefined,
): format is DataGridPresetValueFormat;

export function isDataGridCodeValueFormat(
format: DataGridValueFormat | undefined,
): format is DataGridCodeValueFormat;

export function inferDataGridFormattingKind<T extends DataType>(
selection: DataGridFormattingResolvedSelection<T>,
columnTypeKinds: Readonly<Record<string, DataGridFormattingValueKind>> = {},
resolveValue: DataGridFormattingValueResolver<T> = ({ model, column }) => model[column.prop],
): DataGridFormattingValueKind;

export function formatDataGridValue(
value: unknown,
format?: DataGridValueFormat,
): string;

Formats the common Excel custom-number-code families used by HTML clipboard data.

export function formatDataGridExcelCode(value: unknown, code: string): string;

export function classifyDataGridValueFormat(format?: DataGridValueFormat);

Readable default display for scalar and structured values.

export function formatDataGridAutomaticValue(value: unknown): string;

export function isDataGridNumberPreset(preset: DataGridValueFormatPreset): boolean;

export function isDataGridDatePreset(preset: DataGridValueFormatPreset): boolean;

export function normalizeDataGridLocale(locale?: string): string | undefined;

export function normalizeDataGridCurrency(currency?: string): string;

export function toDataGridDate(value: unknown): Date | undefined;

export type DataGridFormattingValueResolver<T extends DataType = DataType> = (
cell: DataGridFormattingCell<T>,
) => unknown;

export function compileDataGridFormatCode(code: string): ParsedDataGridFormatCode;

export function validateDataGridFormatCode(code: string): readonly DataGridFormatCodeDiagnostic[];

export function formatDataGridCodeValue(
value: unknown,
code: string,
locale?: string,
): DataGridFormattedCodeValue;

export function classifyDataGridCodeValue(code: string);

@internal Test hook for proving bounded cache behavior.

export function getDataGridFormatCodeCacheSize();

MAX_DATA_GRID_FORMAT_CODE_LENGTH: 4096;

export type DataGridFormatCodeValueKind = 'number' | 'date' | 'time' | 'text' | 'automatic';

interface DataGridFormatCodeDiagnostic {
readonly index: number;
readonly message: string
}

export type DataGridFormatCodeSegment =
| { readonly kind: 'text'; readonly value: string }
| { readonly kind: 'space'; readonly character: string }
| { readonly kind: 'fill'; readonly character: string };

interface DataGridFormattedCodeValue {
readonly text: string;
readonly color?: string;
readonly kind: DataGridFormatCodeValueKind;
readonly segments: readonly DataGridFormatCodeSegment[]
}

export type DataGridFormatCodeConditionOperator = '<' | '<=' | '>' | '>=' | '=' | '<>';

interface DataGridFormatCodeCondition {
readonly operator: DataGridFormatCodeConditionOperator;
readonly value: number
}

export type DataGridFormatCodeToken =
| { readonly kind: 'literal'; readonly value: string }
| { readonly kind: 'placeholder'; readonly value: string }
| { readonly kind: 'decimal' }
| { readonly kind: 'comma' }
| { readonly kind: 'percent' }
| { readonly kind: 'fraction' }
| { readonly kind: 'exponent'; readonly value: string }
| { readonly kind: 'date'; readonly symbol: 'y' | 'm' | 'd' | 'h' | 's'; readonly length: number }
| { readonly kind: 'elapsed'; readonly symbol: 'h' | 'm' | 's'; readonly length: number }
| { readonly kind: 'ampm'; readonly short: boolean }
| { readonly kind: 'text' }
| { readonly kind: 'general' }
| { readonly kind: 'space'; readonly character: string }
| { readonly kind: 'fill'; readonly character: string }
| { readonly kind: 'currency'; readonly symbol: string; readonly localeId?: string };

interface ParsedDataGridFormatCodeSection {
readonly tokens: readonly DataGridFormatCodeToken[];
readonly condition?: DataGridFormatCodeCondition;
readonly color?: string
}

interface ParsedDataGridFormatCode {
readonly code: string;
readonly sections: readonly ParsedDataGridFormatCodeSection[];
readonly diagnostics: readonly DataGridFormatCodeDiagnostic[]
}

export function resolveDataGridFormatCodeLocale(
parsed: ParsedDataGridFormatCode,
): string | undefined;

export function resolveDataGridFormatSectionLocale(
section: ParsedDataGridFormatCodeSection,
): string | undefined;

Merge one public format patch into an effective format.

export function applyDataGridCellFormatPatch(
current: DataGridCellFormat | undefined,
patch: DataGridCellFormatPatch,
): DataGridCellFormat;

Select a value presentation while retaining only the appearance layer.

export function formatWithValuePresentation(
current: DataGridCellFormat | undefined,
value: DataGridCellFormat['value'],
): DataGridCellFormat;

Mark a cell renderer as the authored baseline for an advanced format.

The marker is declarative metadata only. It never talks to a grid or plugin while the renderer runs, so renderers remain pure and safe to reuse.

export function markDataGridFormatRenderer<T extends CellTemplate>(
renderer: T,
presentation: string | DataGridCellPresentation,
): T;

Return the advanced-format presentation declared by a renderer, if any.

export function getDataGridFormatRendererPresentation(
renderer: CellTemplate | undefined,
): DataGridCellPresentation | undefined;

Public metadata key used by renderers that represent a Format Cells presentation.

DATA_GRID_FORMAT_RENDERER: typeof DATA_GRID_FORMAT_RENDERER;

export function isDataGridFormattingRuntimeState(
value: unknown,
): value is DataGridFormattingRuntimeState;

export function cloneDataGridFormattingRuntimeState(
state: DataGridFormattingRuntimeState,
): DataGridFormattingRuntimeState;

Public value-format categories supported by the formatting plugin.

/** Public value-format categories supported by the formatting plugin. */
export type DataGridValueFormatPreset =
| 'automatic'
| 'number'
| 'currency'
| 'accounting'
| 'percent'
| 'scientific'
| 'date'
| 'datetime'
| 'time'
| 'text';

export type DataGridFormattingValueKind =
| 'number'
| 'date'
| 'text'
| 'boolean'
| 'mixed'
| 'unknown';

interface DataGridPresetValueFormat {
readonly kind: 'preset';
readonly preset: DataGridValueFormatPreset;
readonly locale?: string;
readonly decimalPlaces?: number;
readonly useGrouping?: boolean;
readonly currency?: string;
readonly dateStyle?: 'short' | 'medium' | 'long' | 'full';
readonly timeStyle?: 'short' | 'medium' | 'long';
readonly timeZone?: string;
readonly negativeStyle?: 'minus' | 'red' | 'parentheses'
}

Exact spreadsheet number-format code used by Excel-compatible transports.

interface DataGridCodeValueFormat {
readonly kind: 'code';
readonly formatCode: string;
/** Locale used when the code does not carry an explicit locale token. */
readonly locale?: string
}

One canonical value-format representation. Presets and exact codes cannot conflict.

/** One canonical value-format representation. Presets and exact codes cannot conflict. */
export type DataGridValueFormat = DataGridPresetValueFormat | DataGridCodeValueFormat;

interface DataGridCellBorder {
readonly style: 'none' | 'solid' | 'dashed' | 'dotted' | 'double';
readonly color?: string;
readonly width?: number
}

interface DataGridCellAppearance {
readonly fontFamily?: string;
readonly fontSize?: number;
readonly bold?: boolean;
readonly italic?: boolean;
readonly underline?: boolean;
readonly strike?: boolean;
readonly textColor?: string;
readonly fillColor?: string;
readonly horizontal?: 'automatic' | 'left' | 'center' | 'right' | 'justify';
readonly vertical?: 'top' | 'middle' | 'bottom';
readonly wrap?: boolean;
readonly borderStyle?: 'none' | 'solid' | 'dashed' | 'dotted' | 'double';
readonly borderColor?: string;
/** Per-edge borders take precedence over the legacy uniform border fields. */
readonly borders?: Readonly<Partial<Record<'top' | 'right' | 'bottom' | 'left', DataGridCellBorder>>>;
readonly indent?: number;
readonly textRotation?: number;
readonly shrinkToFit?: boolean
}

A registry-backed cell visualization selected by Format Cells.

interface DataGridCellPresentation {
/** Stable built-in or application-defined format id. */
readonly id: string;
/** Serializable values consumed by the format definition. */
readonly options?: Readonly<Record<string, unknown>>
}

interface DataGridCellFormat {
/** Controls how the raw value is rendered without changing source data. */
readonly value?: DataGridValueFormat;
/** Controls typography, colors, alignment, wrapping, and borders. */
readonly appearance?: DataGridCellAppearance;
/** Optional advanced visualization such as a progress bar or sparkline. */
readonly presentation?: DataGridCellPresentation
}

A non-destructive update to one effective cell format.

interface DataGridCellFormatPatch {
/** Replaces the value layer. `null` removes it. */
readonly value?: DataGridValueFormat | null;
/** Merges only the supplied appearance properties. `null` removes the layer. */
readonly appearance?: Partial<DataGridCellAppearance> | null;
/** Replaces the advanced presentation. `null` removes it. */
readonly presentation?: DataGridCellPresentation | null
}

Per-target context supplied to a runtime format patch resolver.

interface DataGridFormattingPatchTarget {
readonly current?: DataGridCellFormat;
readonly model?: T;
readonly column: ColumnRegular;
readonly rowType?: DimensionRows
}

export type DataGridFormattingPatchResolver<T extends DataType = DataType> = (
target: DataGridFormattingPatchTarget<T>,
) => DataGridCellFormatPatch;

export type DataGridAdvancedFormatValueKind =
| 'number'
| 'boolean'
| 'text'
| 'scalar'
| 'numberArray'
| 'pieArray'
| 'timelineArray'
| 'summaryRecord';

DataGridAdvancedFormatCompatibilityContext

Section titled “DataGridAdvancedFormatCompatibilityContext”
interface DataGridAdvancedFormatCompatibilityContext {
readonly value: unknown;
readonly model?: DataType;
readonly column?: ColumnRegular;
readonly rowType?: DimensionRows
}

export type DataGridAdvancedFormatControl =
| {
readonly type: 'number';
readonly key: string;
readonly label: string;
readonly min?: number;
readonly max?: number;
readonly step?: number;
}
| {
readonly type: 'boolean';
readonly key: string;
readonly label: string;
}
| {
readonly type: 'select';
readonly key: string;
readonly label: string;
readonly options: readonly { readonly value: string; readonly label: string }[];
}
| {
readonly type: 'color';
readonly key: string;
readonly label: string;
};

interface DataGridAdvancedFormatAppearanceSections {
/** Whether generic text/fill color controls apply to this renderer. */
readonly colors?: boolean;
/**
* Routes generic appearance colors into renderer-owned CSS custom properties
* instead of painting the complete cell.
*/
readonly colorVariables?: {
readonly text?: `--${string}`;
readonly fill?: `--${string}`;
}
}

Runtime context available to advanced-format structured editor factories.

interface DataGridAdvancedFormatEditorContext {
readonly schema: ColumnDataSchemaModel;
readonly format?: DataGridCellFormat;
readonly presentation: DataGridAdvancedFormatDefinition;
readonly localeText: DataGridFormattingLocaleText;
readonly revogrid: HTMLRevoGridElement;
readonly providers: PluginProviders;
readonly save: (value?: unknown, preventFocus?: boolean) => void;
readonly close: (focusNext?: boolean) => void
}

export type DataGridAdvancedFormatEditorFactory = (
context: DataGridAdvancedFormatEditorContext,
) => EditorBase;

Context passed to an advanced presentation’s workbook export formatter.

interface DataGridAdvancedFormatExportContext {
/** Raw source value rendered by the presentation. */
readonly value: unknown;
/** Source row that owns the exported cell. */
readonly model: DataType;
/** Column that owns the exported cell. */
readonly column: ColumnRegular;
/** Body or pinned-row segment containing the source row. */
readonly rowType: DimensionRows;
/** Complete effective cell format. */
readonly format: DataGridCellFormat;
/** Definition defaults merged with the selected presentation options. */
readonly options: Readonly<Record<string, unknown>>
}

export type DataGridAdvancedFormatExportValue =
| string
| number
| boolean
| Date
| null
| undefined;

Produces a workbook-safe scalar value for an advanced presentation.

/** Produces a workbook-safe scalar value for an advanced presentation. */
export type DataGridAdvancedFormatExportFormatter = (
context: DataGridAdvancedFormatExportContext,
) => DataGridAdvancedFormatExportValue;

Public registry entry for a built-in override or custom advanced format.

interface DataGridAdvancedFormatDefinition {
readonly id: string;
readonly label: string;
readonly description?: string;
readonly group?: string;
readonly order?: number;
readonly icon?: string;
/**
* Renderer applied by this presentation. Use `markDataGridFormatRenderer`
* when the same renderer is also authored directly on columns and should be
* recognized as their Format Cells baseline.
*/
readonly cellTemplate: CellTemplate;
/** Optional provider-free renderer used by the detached Format Cells preview. */
readonly previewTemplate?: CellTemplate;
/** Keeps intrinsic preview content from stretching to the preview cell height. */
readonly previewLayout?: 'fill' | 'intrinsic';
/** Shorthand compatibility used by the built-in catalog. */
readonly valueKind?: DataGridAdvancedFormatValueKind;
/** Custom compatibility predicate. It must be true for every selected value. */
readonly isCompatible?: (
context: DataGridAdvancedFormatCompatibilityContext,
) => boolean;
readonly defaults?: Readonly<Record<string, unknown>>;
readonly controls?: readonly DataGridAdvancedFormatControl[];
/** Generic appearance sections supported by this presentation. */
readonly appearanceSections?: DataGridAdvancedFormatAppearanceSections;
/** Optional editor used only when this presentation is effective for a cell. */
readonly editor?: EditorCtr | string;
/** Context-aware editor factory. Preferred over `editor` when supplied. */
readonly editorFactory?: DataGridAdvancedFormatEditorFactory;
/**
* Converts structured presentation data to a workbook-safe scalar value.
* Source data is not modified.
*/
readonly exportValue?: DataGridAdvancedFormatExportFormatter;
/** Native Excel number format applied when this presentation is effective. */
readonly excelNumberFormat?: string;
/** Allows this definition to replace an authored cell template. */
readonly replaceAuthoredTemplate?: boolean;
/** Allows this definition to replace an authored editor. */
readonly replaceAuthoredEditor?: boolean
}

interface DataGridAdvancedFormatOverride {
readonly label?: string;
readonly description?: string;
readonly defaults?: Readonly<Record<string, unknown>>;
readonly controls?: readonly DataGridAdvancedFormatControl[];
readonly appearanceSections?: DataGridAdvancedFormatAppearanceSections;
readonly previewTemplate?: CellTemplate;
readonly editor?: EditorCtr | string;
readonly editorFactory?: DataGridAdvancedFormatEditorFactory;
readonly exportValue?: DataGridAdvancedFormatExportFormatter;
readonly excelNumberFormat?: string;
readonly replaceAuthoredTemplate?: boolean;
readonly replaceAuthoredEditor?: boolean
}

interface DataGridFormatContext {
readonly model: T;
readonly value: unknown;
readonly prop: P;
readonly rowType?: DimensionRows
}

export type DataGridFormatDefinition<
T extends DataType = DataType,
P extends ColumnProp = ColumnProp,
> =
| DataGridCellFormat
| ((context: DataGridFormatContext<T, P>) => DataGridCellFormat | undefined);

A zero-based cell coordinate in physical row and column source stores.

interface CellCoordinate {
/** Physical index in the selected row type's `source` array. */
readonly row: number;
/** Physical index in the selected column type's `source` array. */
readonly column: number
}

PhysicalCellAddress (Extended from index.ts)

Section titled “PhysicalCellAddress (Extended from index.ts)”

A physical cell coordinate qualified by its row and column source stores.

interface PhysicalCellAddress {
/** Row source containing the cell. Defaults to `rgRow`. */
readonly rowType?: DimensionRows;
/** Column source containing the cell. Defaults to `rgCol`. */
readonly colType?: DimensionCols
}

A physical column coordinate qualified by its source store.

interface PhysicalColumnAddress {
readonly column: number;
/** Column source containing the column. Defaults to `rgCol`. */
readonly colType?: DimensionCols
}

A physical row coordinate qualified by its source store.

interface PhysicalRowAddress {
readonly row: number;
/** Row source containing the row. Defaults to `rgRow`. */
readonly rowType?: DimensionRows
}

An inclusive range of complete columns in one physical column source.

interface PhysicalColumnRange {
/** First physical column index. */
readonly start: number;
/** Inclusive last physical column index. Defaults to `start`. */
readonly end?: number;
/** Column source containing the target. Defaults to `rgCol`. */
readonly colType?: DimensionCols
}

An inclusive range of complete rows in one physical row source.

interface PhysicalRowRange {
/** First physical row index. */
readonly start: number;
/** Inclusive last physical row index. Defaults to `start`. */
readonly end?: number;
/** Row source containing the target. Defaults to `rgRow`. */
readonly rowType?: DimensionRows
}

A rectangular target expressed by inclusive physical source coordinates.

interface PhysicalCellRange {
/** First physical source coordinate. */
readonly start: CellCoordinate;
/** Inclusive opposite corner. Defaults to `start`; reversed corners are normalized. */
readonly end?: CellCoordinate;
/** Row source containing the target. Defaults to `rgRow`. */
readonly rowType?: DimensionRows;
/** Column source containing the target. Defaults to `rgCol`. */
readonly colType?: DimensionCols
}

One physical range, or several independent/overlapping physical ranges.

/** One physical range, or several independent/overlapping physical ranges. */
export type DataGridFormattingSelection =
| PhysicalCellRange
| readonly PhysicalCellRange[];

Complete-column formatting target, including rows added in the future.

interface DataGridFormattingColumnSelection {
readonly scope: 'columns';
readonly ranges: PhysicalColumnRange | readonly PhysicalColumnRange[]
}

Complete-row formatting target, including columns added in the future.

interface DataGridFormattingRowSelection {
readonly scope: 'rows';
readonly ranges: PhysicalRowRange | readonly PhysicalRowRange[]
}

Coordinate-only target accepted by formatting mutation and dialog APIs.

/** Coordinate-only target accepted by formatting mutation and dialog APIs. */
export type DataGridFormattingTarget =
| DataGridFormattingSelection
| DataGridFormattingColumnSelection
| DataGridFormattingRowSelection;

DataGridFormattingColumnPreset (Extended from index.ts)

Section titled “DataGridFormattingColumnPreset (Extended from index.ts)”
interface DataGridFormattingColumnPreset {
/** Format applied to cells in the column. */
readonly format: DataGridCellFormat
}

DataGridFormattingRowPreset (Extended from index.ts)

Section titled “DataGridFormattingRowPreset (Extended from index.ts)”
interface DataGridFormattingRowPreset {
/** Format applied to cells in the row. */
readonly format: DataGridCellFormat
}

interface DataGridFormattingCellPreset {
/** Physical range receiving the declarative format. */
readonly range: PhysicalCellRange;
readonly format: DataGridCellFormat
}

DataGridFormattingRuntimeColumnState (Extended from index.ts)

Section titled “DataGridFormattingRuntimeColumnState (Extended from index.ts)”

One persisted runtime formatting operation for a complete column.

interface DataGridFormattingRuntimeColumnState {
/** `null` preserves an explicit Clear formatting operation. */
readonly format: DataGridCellFormat | null;
/** Monotonic operation order used for cell/row/column precedence. */
readonly revision: number
}

DataGridFormattingRuntimeRowState (Extended from index.ts)

Section titled “DataGridFormattingRuntimeRowState (Extended from index.ts)”

One persisted runtime formatting operation for a complete row.

interface DataGridFormattingRuntimeRowState {
/** `null` preserves an explicit Clear formatting operation. */
readonly format: DataGridCellFormat | null;
/** Monotonic operation order used for row/column/cell precedence. */
readonly revision: number
}

DataGridFormattingRuntimeCellState (Extended from index.ts)

Section titled “DataGridFormattingRuntimeCellState (Extended from index.ts)”

One persisted runtime formatting operation for a physical cell.

interface DataGridFormattingRuntimeCellState {
readonly rowType?: DimensionRows;
readonly colType?: DimensionCols;
/** `null` preserves an explicit Clear formatting operation. */
readonly format: DataGridCellFormat | null;
/** Monotonic operation order used for cell/row/column precedence. */
readonly revision: number
}

Versioned coordinate state for formats created through the dialog or plugin API.

interface DataGridFormattingRuntimeState {
readonly version: 3;
readonly revision: number;
readonly columns: readonly DataGridFormattingRuntimeColumnState[];
readonly rows: readonly DataGridFormattingRuntimeRowState[];
readonly cells: readonly DataGridFormattingRuntimeCellState[]
}

Why a runtime formatting state changed.

/** Why a runtime formatting state changed. */
export type DataGridFormattingChangeSource =
| 'apply'
| 'clear'
| 'set-state'
| 'history'
| 'autofill'
| 'structure';

Complete application-facing payload emitted after a runtime formatting change.

interface DataGridFormattingChangeEvent {
/** Complete state to persist. */
readonly state: DataGridFormattingRuntimeState;
/** Complete state before this operation, used by HistoryPlugin. */
readonly previousState: DataGridFormattingRuntimeState;
/** Operation that produced the state. */
readonly source: DataGridFormattingChangeSource
}

Runtime contract used by HistoryPlugin to replay formatting entries.

interface DataGridFormattingHistoryRuntime {
applyHistoryState(state: DataGridFormattingRuntimeState): boolean;
/** @internal Prevent coordinate remapping while a structural snapshot is replayed. */
beginHistoryStructureReplay?(): void;
/** @internal Resume ordinary structural coordinate reconciliation. */
endHistoryStructureReplay?(): void;
/** @internal Flush a partially applied structural context-menu transaction. */
flushPendingStructuralTransaction?(transactionId: number): void
}

Declarative formats and optional runtime state assigned through grid.dataGridFormatting. Reassign the property to replace presets reactively. Applications own persistence and can restore a state received from datagridformattingchange through the state property.

Cell presets are physical ranges, so replacing source objects does not require row identity configuration.

interface DataGridFormattingPresetState {
readonly columns?: readonly DataGridFormattingColumnPreset[];
readonly rows?: readonly DataGridFormattingRowPreset[];
readonly cells?: readonly DataGridFormattingCellPreset[];
/** Runtime Apply and Clear operations previously emitted by the plugin. */
readonly state?: DataGridFormattingRuntimeState
}

@internal Model-backed target resolved from coordinates or UI selection.

interface DataGridFormattingResolvedSelection {
/** Whether the operation targets explicit cells, complete rows, or complete columns. */
readonly scope: 'cells' | 'rows' | 'columns';
/** Columns included in the operation. */
readonly columns: readonly ColumnRegular[];
/** Exact cell targets. Required when `scope` is `cells`. */
readonly cells: readonly DataGridFormattingCell<T>[];
/** Useful for type resolution and dialog preview in column scope. */
readonly rows: readonly T[];
/** Physical row addresses retained for complete-row storage operations. */
readonly rowAddresses?: readonly Required<PhysicalRowAddress>[]
}

interface DataGridFormattingCell {
/** Source row containing the cell. */
readonly model: T;
/** Column containing the cell. */
readonly column: ColumnRegular;
/** Body or pinned-row dimension containing the cell. */
readonly rowType?: DimensionRows;
/** Physical address resolved for coordinate-owned formatting storage. */
readonly address?: PhysicalCellAddress
}

DataGridFormattingConfig (Extended from index.ts)

Section titled “DataGridFormattingConfig (Extended from index.ts)”
interface DataGridFormattingConfig {
/** Overrides automatic value-kind inference for the complete selection. */
readonly resolveValueKind?: (
selection: DataGridFormattingResolvedSelection<T>,
) => DataGridFormattingValueKind;
/** Maps application column-type names to formatting value kinds. */
readonly columnTypeKinds?: Readonly<Record<string, DataGridFormattingValueKind>>;
/** Context-menu surfaces allowed to create formatting selections. */
readonly scopes?: readonly ('cell' | 'columnHeader')[];
/**
* Stable application identity used to retain formatting when a
* length-changing source update replaces row objects immutably.
*/
readonly resolveStructuralRowIdentity?: (
model: T,
context: { readonly row: number; readonly rowType: DimensionRows },
) => unknown;
/** Advanced visual formats and format-resolved editors. `false` disables them. */
readonly advancedFormats?: false | DataGridAdvancedFormatsConfig
}

interface DataGridFormattingLocaleText {
readonly title: string;
readonly close: string;
readonly description: string;
readonly selectionSummary: string;
readonly selectionCells: string;
readonly selectionColumns: string;
readonly valueSection: string;
readonly advancedSection: string;
readonly advancedNone: string;
readonly advancedDescription: string;
readonly automaticDescription: string;
readonly numberSection: string;
readonly category: string;
readonly locale: string;
readonly browserDefault: string;
readonly decimals: string;
readonly grouping: string;
readonly currency: string;
readonly negativeNumbers: string;
readonly dateStyle: string;
readonly timeStyle: string;
readonly custom: string;
readonly formatCode: string;
readonly invalidFormatCode: string;
readonly fontSection: string;
readonly typographySection: string;
readonly colorsSection: string;
readonly fontFamily: string;
readonly defaultFont: string;
readonly fontSize: string;
readonly bold: string;
readonly italic: string;
readonly underline: string;
readonly strike: string;
readonly textColor: string;
readonly fillColor: string;
readonly useTextColor: string;
readonly useFillColor: string;
readonly defaultColor: string;
readonly noFill: string;
readonly customColor: string;
readonly customColorHex: string;
readonly invalidColor: string;
readonly colorLabels: Readonly<Record<string, string>>;
/** Labels for registry groups, keyed by the definition's `group` value. */
readonly advancedGroupLabels: Readonly<Record<string, string>>;
/** Advanced-format names keyed by stable format id. */
readonly advancedFormatLabels: Readonly<Record<string, string>>;
/** Advanced-format descriptions keyed by stable format id. */
readonly advancedFormatDescriptions: Readonly<Record<string, string>>;
/** Control labels keyed as `<format id>.<control key>`. */
readonly advancedControlLabels: Readonly<Record<string, string>>;
/** Select-option labels keyed as `<format id>.<control key>.<option value>`. */
readonly advancedOptionLabels: Readonly<Record<string, string>>;
readonly expandSection: string;
readonly collapseSection: string;
readonly alignmentSection: string;
readonly horizontal: string;
readonly vertical: string;
readonly wrap: string;
readonly borderSection: string;
readonly borderStyle: string;
readonly borderColor: string;
readonly preview: string;
readonly previewOriginal: string;
readonly previewFormatted: string;
readonly previewHint: string;
readonly clear: string;
readonly cancel: string;
readonly apply: string;
readonly textExample: string;
readonly presetLabels: Record<DataGridValueFormatPreset, string>;
readonly optionLabels: DataGridFormattingOptionLocaleText;
readonly dataEditor: DataGridFormattingDataEditorLocaleText
}

export type DataGridFormattingDataEditorLocaleText = StructuredDataEditorLocaleText;

interface DataGridFormattingOptionLocaleText {
readonly automatic: string;
readonly left: string;
readonly center: string;
readonly right: string;
readonly top: string;
readonly middle: string;
readonly bottom: string;
readonly none: string;
readonly solid: string;
readonly dashed: string;
readonly dotted: string;
readonly double: string;
readonly short: string;
readonly medium: string;
readonly long: string;
readonly full: string;
readonly negativeMinus: string;
readonly negativeRed: string;
readonly negativeParentheses: string
}

interface DataGridFormattingDialogConfig {
/** Right-align numeric values and numeric presets when horizontal alignment is automatic. Defaults to true. */
readonly autoAlignNumericValues?: boolean;
readonly locale?: string;
/** Locale choices shown in the Format Cells dialog. Common US and European locales are used by default. */
readonly locales?: readonly string[];
readonly currencies?: readonly string[];
readonly fontFamilies?: readonly string[];
readonly localeText?: Partial<Omit<
DataGridFormattingLocaleText,
| 'presetLabels'
| 'optionLabels'
| 'colorLabels'
| 'advancedGroupLabels'
| 'advancedFormatLabels'
| 'advancedFormatDescriptions'
| 'advancedControlLabels'
| 'advancedOptionLabels'
| 'dataEditor'
>> & {
readonly presetLabels?: Partial<DataGridFormattingLocaleText['presetLabels']>;
readonly optionLabels?: Partial<DataGridFormattingOptionLocaleText>;
readonly colorLabels?: Readonly<Record<string, string>>;
readonly advancedGroupLabels?: Readonly<Record<string, string>>;
readonly advancedFormatLabels?: Readonly<Record<string, string>>;
readonly advancedFormatDescriptions?: Readonly<Record<string, string>>;
readonly advancedControlLabels?: Readonly<Record<string, string>>;
readonly advancedOptionLabels?: Readonly<Record<string, string>>;
readonly dataEditor?: Partial<DataGridFormattingDataEditorLocaleText>;
}
}

DataGridFormattingDialogOpenOptions (Extended from index.ts)

Section titled “DataGridFormattingDialogOpenOptions (Extended from index.ts)”
interface DataGridFormattingDialogOpenOptions {
readonly selection: DataGridFormattingResolvedSelection<T>;
readonly initialValue?: DataGridCellFormat;
readonly sampleValue?: unknown;
readonly valueKind: DataGridFormattingValueKind;
/** False when selected columns cannot safely replace their visual value presentation. */
readonly valueFormatting?: boolean;
/** Resolved compatible advanced-format catalog for this selection. */
readonly advancedFormatDefinitions?: readonly DataGridAdvancedFormatDefinition[];
readonly onApply: (format: DataGridCellFormat) => void;
readonly onClear: () => void
}

export function createAutofillFormattingEntries({
providers,
owner,
oldRange,
newRange,
rowType,
colType,
}: {
providers: PluginProviders;
owner: Pick<AutofillFormattingOwner, 'getFormat'>;
oldRange: RangeArea;
newRange: RangeArea;
rowType: DimensionRows;
colType: DimensionCols;
}): AutofillFormattingBatchEntry[];

interface AutofillFormattingBatchEntry {
readonly target: DataGridFormattingTarget;
readonly format: DataGridCellFormat | undefined
}

Couples accepted range edits to formatting without moving value generation out of Core or AutoFillPlugin.

class AutofillFormattingController {
destroy(): void;
}

Compose formatting into one core before-cell-render schema.

export function applyDataGridFormattingRender<T extends DataType>(
event: CustomEvent<HTMLRevogrDataElementEventMap['beforecellrender']>,
context: DataGridFormattingRenderContext<T>,
): void;

interface DataGridFormattingRenderContext {
readonly providers: PluginProviders;
readonly config: Readonly<DataGridFormattingConfig<T>>;
readonly advancedFormatDefinitions: readonly DataGridAdvancedFormatDefinition[];
readonly resolveCellValue: (
model: T,
column: ColumnRegular,
rowType?: DimensionRows,
value?: unknown,
) => unknown;
readonly resolveFormat: (
address: PhysicalCellAddress,
column?: ColumnRegular,
model?: T,
value?: unknown,
includeRenderer?: boolean,
) => DataGridCellFormat | undefined;
readonly resolveAuthoredFormat: (
column: ColumnRegular,
model?: T,
value?: unknown,
rowType?: DimensionRows,
includeRenderer?: boolean,
) => DataGridCellFormat | undefined
}

interface StoredDataGridFormat {
readonly revision: number;
readonly value?: DataGridCellFormat
}

interface DataGridFormattingStructuralRemapResult {
readonly runtimeChanged: boolean;
readonly presetsChanged: boolean
}

Resolve public physical coordinates into the plugin’s model-backed target.

export function resolveDataGridFormattingSelection<T extends DataType>(
target: DataGridFormattingTarget,
providers: PluginProviders,
): DataGridFormattingResolvedSelection<T> | undefined;

Expand and deduplicate complete-column coordinate ranges.

export function expandPhysicalColumnSelection(
target: Extract<DataGridFormattingTarget, { scope: 'columns' }>,
): Required<PhysicalColumnAddress>[];

Expand and deduplicate complete-row coordinate ranges.

export function expandPhysicalRowSelection(
target: Extract<DataGridFormattingTarget, { scope: 'rows' }>,
): Required<PhysicalRowAddress>[];

Convert an internal model-backed UI selection to the public coordinate target.

export function resolvedFormattingSelectionToTarget<T extends DataType>(
selection: DataGridFormattingResolvedSelection<T>,
providers: PluginProviders,
): DataGridFormattingTarget | undefined;

Expand and deduplicate physical ranges without consulting current grid data.

export function expandPhysicalFormattingSelection(
target: DataGridFormattingSelection,
): Required<PhysicalCellAddress>[];

Resolve a physical address to its current model and column context.

export function resolvePhysicalFormattingCell<T extends DataType>(
providers: PluginProviders,
address: PhysicalCellAddress,
): DataGridFormattingCell<T> | undefined;

Resolve transient render/editor models to their current physical source address.

export function resolvePhysicalFormattingAddress<T extends DataType>(
providers: PluginProviders,
model: T,
column: ColumnRegular,
rowType: DimensionRows = 'rgRow',
colType?: DimensionCols,
): PhysicalCellAddress | undefined;

Resolve a column object to its physical source address.

export function resolvePhysicalFormattingColumn(
providers: PluginProviders,
column: ColumnRegular,
preferredType?: DimensionCols,
): PhysicalColumnAddress | undefined;

Resolve a row object to its physical source address.

export function resolvePhysicalFormattingRow<T extends DataType>(
providers: PluginProviders,
model: T,
preferredType?: DimensionRows,
): PhysicalRowAddress | undefined;

Translate a rendered virtual cell into a physical address.

export function visibleCellToPhysicalFormattingAddress(
providers: PluginProviders,
{
row,
column,
rowType = 'rgRow',
colType = 'rgCol',
}: PhysicalCellAddress,
): PhysicalCellAddress | undefined;

Convert one visible range into physical formatting coordinates.

export function visibleRangeToPhysicalFormattingSelection(
providers: PluginProviders,
range: {
readonly x: number;
readonly y: number;
readonly x1: number;
readonly y1: number;
readonly rowType?: DimensionRows;
readonly colType?: DimensionCols;
},
): DataGridFormattingSelection;

export function AdvancedFormatPanel({
definitions,
presentation,
locale,
localeText,
onChange,
}: {
readonly definitions: readonly DataGridAdvancedFormatDefinition[];
readonly presentation?: DataGridCellPresentation;
readonly locale: DataGridFormattingLocaleText;
readonly localeText?: DataGridFormattingDialogConfig['localeText'];
readonly onChange: (value: DataGridCellPresentation | undefined) => void;
});

export function AlignmentSection({ appearance, locale, onChange }: SectionProps);

export function AppearancePanel({ appearance, sections, options, locale, onChange }: {
readonly appearance: DataGridCellAppearance;
readonly sections?: DataGridAdvancedFormatAppearanceSections;
readonly options: DataGridFormattingDialogOpenOptions;
readonly locale: DataGridFormattingLocaleText;
readonly onChange: (value: DataGridCellAppearance) => void;
});

export function BordersSection({ appearance, locale, onChange }: SectionProps);

export function FormattingColorPicker({
label,
value,
defaultLabel,
customLabel,
customHexLabel,
invalidColor,
colorLabels,
optional = true,
onChange,
}: {
readonly label: string;
readonly value?: string;
readonly defaultLabel: string;
readonly customLabel: string;
readonly customHexLabel: string;
readonly invalidColor: string;
readonly colorLabels: Readonly<Record<string, string>>;
readonly optional?: boolean;
readonly onChange: (value: string | undefined) => void;
});

export function normalizeHexColor(value: string | undefined): string | undefined;

export function ColorsSection({ appearance, locale, onChange }: SectionProps);

export function useControlTooltip(text: string);

export function ControlTooltip({ id, text, visible }: {
readonly id: string;
readonly text: string;
readonly visible: boolean;
});

export function FormatPreview({
sampleValue,
format,
locale,
advancedFormatDefinitions,
autoAlignNumericValues,
}: {
readonly sampleValue: unknown;
readonly format: DataGridCellFormat;
readonly locale: DataGridFormattingLocaleText;
readonly advancedFormatDefinitions?: readonly DataGridAdvancedFormatDefinition[];
readonly autoAlignNumericValues: boolean;
});

export function FormatIcon({ icon, className = 'rv-format-icon' }: {
readonly icon: string;
readonly className?: string;
});

FORMAT_ICONS: { readonly accounting: string; readonly alignCenter: string; readonly alignLeft: string; readonly alignRight: string; readonly arrowLeft: string; readonly arrowRight: string; readonly automatic: string; readonly ban: string; readonly bold: string; readonly border: string; readonly calendar: string; readonly chevronDown: string; readonly clock: string; readonly currency: string; readonly ellipsis: string; readonly eraser: string; readonly fill: string; readonly italic: string; readonly number: string; readonly palette: string; readonly percent: string; readonly scientific: string; readonly sliders: string; readonly strike: string; readonly text: string; readonly underline: string; readonly verticalBottom: string; readonly verticalMiddle: string; readonly verticalTop: string; readonly wrap: string; };

ADVANCED_FORMAT_ICONS: { readonly progressLine: string; readonly progressWithValue: string; readonly circularProgress: string; readonly heatmap: string; readonly rating: string; readonly change: string; readonly threshold: string; readonly thumbs: string; readonly badge: string; readonly sparkline: string; readonly bar: string; readonly pie: string; readonly timeline: string; readonly avatar: string; readonly avatarWithText: string; readonly summaryPercentage: string; readonly summaryAggregate: string; };

export function InspectorSection({
title,
icon,
locale,
open = false,
children,
}: {
readonly title: string;
readonly icon: string;
readonly locale: DataGridFormattingLocaleText;
readonly open?: boolean;
readonly children: ComponentChildren;
});

export function resolveDataGridFormattingLocaleOptions(
configuredLocales?: readonly string[],
selectedLocale?: string,
): readonly DataGridFormattingLocaleOption[];

interface DataGridFormattingLocaleOption {
readonly value: string;
readonly label: string
}

DEFAULT_DATA_GRID_FORMATTING_LOCALES: readonly string[];

export function formatLocaleTemplate(
template: string,
values: Readonly<Record<string, string>>,
): string;

Owns editor proxy installation and effective editor construction.

class DataGridFormattingEditorRuntime {
install(collection: ColumnCollection): void;
installCurrent(): void;
}

export function SegmentedControl<Value extends string>({
value,
options,
ariaLabel,
onChange,
}: {
readonly value: Value;
readonly options: readonly SegmentedOption<Value>[];
readonly ariaLabel: string;
readonly onChange: (value: Value) => void;
});

export function ToggleIconButton({
value,
label,
icon,
onChange,
}: {
readonly value: boolean;
readonly label: string;
readonly icon: string;
readonly onChange: (value: boolean) => void;
});

interface SegmentedOption {
readonly value: Value;
readonly label: string;
readonly icon: string
}

export function TypographySection({ appearance, options, locale, onChange }: SectionProps);

interface SectionProps {
readonly appearance: DataGridCellAppearance;
readonly options: DataGridFormattingDialogOpenOptions;
readonly locale: DataGridFormattingLocaleText;
readonly onChange: (value: Partial<DataGridCellAppearance>) => void
}

export function ValueFormatPanel({
value,
presentation,
options,
locale,
onChange,
onValidityChange,
onPresentationChange,
}: {
readonly value: DataGridValueFormat;
readonly presentation?: DataGridCellPresentation;
readonly options: DataGridFormattingDialogOpenOptions;
readonly locale: DataGridFormattingLocaleText;
readonly onChange: (value: DataGridValueFormat) => void;
readonly onValidityChange: (valid: boolean) => void;
readonly onPresentationChange: (value: DataGridCellPresentation | undefined) => void;
});

export function ValueFormatPresets({
value,
formatLocale,
currency,
locale,
advancedAvailable,
onChange,
}: {
readonly value: FormatCategory;
readonly formatLocale?: string;
readonly currency?: string;
readonly locale: DataGridFormattingLocaleText;
readonly advancedAvailable: boolean;
readonly onChange: (value: FormatCategory) => void;
});

export type FormatCategory = DataGridValueFormatPreset | 'custom' | 'advanced';

Chooses the horizontal alignment that a formatted cell should display.

Explicit left, center, and right appearance values always win. When alignment is omitted or automatic, ordinary numeric values and numeric presets resolve to right. An active advanced presentation keeps control of its own layout unless the user explicitly selected an alignment.

This function only calculates the effective value. It does not modify the cell format, source value, column, or persisted formatting state.

@param options Cell value and formatting context used to resolve alignment.

@returns The alignment to apply, or undefined when the existing cell or presentation layout should remain unchanged.

export function resolveDataGridHorizontalAlignment(
options: {
/** Raw cell value before display formatting. */
readonly value: unknown;
/** Effective cell format, including value preset and authored appearance. */
readonly format?: DataGridCellFormat;
/** Whether omitted or Automatic alignment may be derived from numeric data. */
readonly autoAlignNumericValues?: boolean;
/** True when an active advanced renderer owns the cell's visual layout. */
readonly hasEffectivePresentation?: boolean;
},
): DataGridHorizontalAlignment | undefined;

Reports whether a raw cell value participates in automatic numeric alignment.

Finite JavaScript numbers and all bigint values are numeric. NaN, positive or negative infinity, numeric strings, and boxed numbers are intentionally excluded so their existing grid alignment is preserved.

@param value Raw source value to classify.

@returns true when automatic numeric alignment may apply to the value.

export function isDataGridNumericValue(value: unknown): boolean;

export function structuralAddressKey<T extends string>(type: T, index: number): string;

Match retained records by identity, including duplicate references, then preserve coordinates for a same-size immutable source replacement.

export function createRowStructuralMap(
previous: Readonly<Record<DimensionRows, readonly DataType[]>>,
next: Readonly<Record<DimensionRows, readonly DataType[]>>,
fallbackIdentity?: (
row: DataType,
address: StructuralAddress<DimensionRows>,
) => unknown,
): StructuralAddressMap<DimensionRows>;

Match columns by identity and fall back to their stable data property.

export function createColumnStructuralMap(
previous: Readonly<Record<DimensionCols, readonly ColumnRegular[]>>,
next: Readonly<Record<DimensionCols, readonly ColumnRegular[]>>,
): StructuralAddressMap<DimensionCols>;

interface StructuralAddress {
readonly type: T;
readonly index: number
}

export type StructuralAddressMap<T extends string> = ReadonlyMap<
string,
StructuralAddress<T>
>;

FORMATTING_ROW_TYPES: readonly DimensionRows[];

FORMATTING_COLUMN_TYPES: readonly DimensionCols[];

export function normalizeFormattingCellAddress(
address: PhysicalCellAddress,
): Required<PhysicalCellAddress>;

export function normalizeFormattingColumnAddress(
address: PhysicalColumnAddress,
): Required<PhysicalColumnAddress>;

export function normalizeFormattingRowAddress(
address: PhysicalRowAddress,
): Required<PhysicalRowAddress>;

export function formattingCellAddressKey(address: PhysicalCellAddress): string;

export function formattingColumnAddressKey(address: PhysicalColumnAddress): string;

export function formattingRowAddressKey(address: PhysicalRowAddress): string;

DEFAULT_FORMATTING_ROW_TYPE: DimensionRows;

DEFAULT_FORMATTING_COLUMN_TYPE: DimensionCols;

export function evaluateDataGridFormatCode(
parsed: ParsedDataGridFormatCode,
value: unknown,
locale?: string,
): DataGridFormattedCodeValue;

export function classifyDataGridFormatCode(
parsed: ParsedDataGridFormatCode,
): DataGridFormattedCodeValue['kind'];

export function parseDataGridFormatCode(code: string): ParsedDataGridFormatCode;

Convert display-only Excel HTML text into a canonical typed value.

export function importDataGridExcelClipboardDisplayValue(
displayText: string,
format?: DataGridCellFormat,
): unknown;

export function normalizeExcelLanguage(value?: string): string | undefined;

export function normalizeExcelNamedNumberFormat(
value: string | undefined,
language?: string,
): NormalizedExcelNumberFormat;

interface NormalizedExcelNumberFormat {
readonly formatCode?: string;
readonly locale?: string
}