/** * Grid-level metrics measured from a hidden sample chip rendered by `GridMultiSelectMeasurer`. * Used by chip cells to size the `+N` overflow chip without hardcoding font/style assumptions. */ export interface GridMultiSelectOverflowMetrics { /** * Width (in CSS pixels) of the `+N` overflow chip, indexed by digit count. * `overflowChipWidths[0]` = width for 1-digit "+9", `[1]` = "+99", `[2]` = "+999". * For `hiddenCount` ≥ 10⁴, the last entry is reused. */ overflowChipWidths: number[]; /** Gap between sibling chips, read from the chip row's computed style. */ gap: number; } /** * Per-grid cache for multiSelect runtime data. * `getOverflowMetrics` / `setOverflowMetrics` / `subscribeOverflowMetrics`: grid-level overflow * chip metrics produced by the single `GridMultiSelectMeasurer` mounted in the grid root, * consumed by every multiSelect chip cell (the metrics are identical across columns). */ export interface GridMultiSelectInternalCache { getOverflowMetrics: () => GridMultiSelectOverflowMetrics | null; setOverflowMetrics: (metrics: GridMultiSelectOverflowMetrics) => void; subscribeOverflowMetrics: (callback: (metrics: GridMultiSelectOverflowMetrics | null) => void) => () => void; teardown: () => void; }