/**
 * Text-rendering constants shared across measurement, bounds, and render code.
 *
 * Before this module: `1.2`, `12`, and similar magic numbers were repeated
 * across `textGeometry.js`, `elementBounds.js`, and `TextElement.jsx`. If
 * Konva's defaults ever changed (or the design system picked a different
 * line-height ratio), every site had to be updated in lockstep — and there
 * was no way to grep for "the line-height ratio" since it was just `1.2`.
 *
 * Centralizing here keeps those callers honest. New text-related constants
 * that show up in 2+ places should land here.
 *
 * Note on per-component font-family defaults
 * ──────────────────────────────────────────
 * `TextElement.jsx` defaults `fontFamily = 'DM Sans'` (the body face) for
 * its prop. `textGeometry.js` defaulted to `'Pacifico'` (the display face)
 * for its measurement-fallback path. Those are intentionally different —
 * an element rendered without a fontFamily uses DM Sans, but the
 * measurement helpers fall back to the display face that matches new-text
 * placement defaults. We keep that distinction by exposing both names
 * here and letting each call site pick the one that matches its semantics.
 */

// Konva's default line-height ratio. Multiply by fontSize to get the
// rendered height of a single text line.
export const LINE_HEIGHT_RATIO = 1.2;

// Floor for fontSize during scale-down operations. Below this, text becomes
// hard to read and the rounded display in the Text tab starts losing
// precision (12 → 11 → 10 each cost ~10% of legibility).
export const MIN_FONT_SIZE = 12;

// Ceiling for auto-computed fontSize values (e.g. width-preservation
// when swapping to a narrower font). The Text tab's slider tops out at
// 120 for typical fine-tuning, but width-preservation can legitimately
// land above that when going from a wide display face to a very
// condensed one. 200 gives plenty of headroom (about 2/3 of the
// 300-design-unit canvas height) while preventing pathological growth
// on a font whose measureText returns near-zero for a particular glyph.
// The user can still corner-drag the text on canvas past this value;
// the cap only governs the auto-preserve math.
export const MAX_FONT_SIZE = 200;

// Default fontSize when an element doesn't specify one. Matches the
// historical TEXT default in textGeometry.placeTextCentered.
export const DEFAULT_FONT_SIZE = 32;

// Display face used by the freeform "Add text" button and as the
// measurement fallback when an element has no explicit fontFamily.
export const DEFAULT_DISPLAY_FONT = 'Pacifico';

// Body face used by TextElement's prop default (so Konva renders something
// reasonable when the prop is omitted).
export const DEFAULT_BODY_FONT = 'DM Sans';
