Skip to content

API reference / Common / Engine types / TextParagraphProperty

Type Alias: TextParagraphProperty ​

ts
type TextParagraphProperty = 
  | {
  styleRef: TextParagraphStyleId;
}
  | {
  level: number;
}
  | {
  outlineLevel: number;
}
  | {
  align: TextParagraphAlign;
}
  | {
  rtl: boolean;
}
  | {
  direction: TextDirection;
}
  | {
  fontAlign: TextFontAlign;
}
  | {
  indentLeft: number;
}
  | {
  indentRight: number;
}
  | {
  indentFirstLine: number;
}
  | {
  mirrorIndents: boolean;
}
  | {
  lineSpacing: TextLineSpacing;
}
  | {
  spacingBefore: TextParagraphSpacing;
}
  | {
  spacingAfter: TextParagraphSpacing;
}
  | {
  contextualSpacing: boolean;
}
  | {
  tabStops: TextTabStop[];
}
  | {
  defaultTabSize: number;
}
  | {
  numbering: TextNumbering;
}
  | {
  keepWithNext: boolean;
}
  | {
  keepLinesTogether: boolean;
}
  | {
  pageBreakBefore: boolean;
}
  | {
  widowOrphanControl: boolean;
}
  | {
  suppressLineNumbers: boolean;
}
  | {
  suppressAutoHyphens: boolean;
}
  | {
  borders: TextParagraphBorders;
}
  | {
  shading: PaintFill;
}
  | {
  lineBreakEastAsian: boolean;
}
  | {
  lineBreakLatin: boolean;
}
  | {
  hangingPunctuation: boolean;
}
  | {
  topLinePunctuation: boolean;
}
  | {
  autoSpaceLatin: boolean;
}
  | {
  autoSpaceNumeric: boolean;
}
  | {
  snapToGrid: boolean;
}
  | {
  defaultCharacterProperties: TextCharacterProperties;
};

One specified paragraph property — a [TextParagraphPropertyKey] carrying its value. The value-bearing twin of the key: set takes one, iter yields them, and the Loro mark builder maps each to a (key, value).

The wide payloads — the bullet, the six border edges, the shading fill — are boxed so the enum (and every enum that carries it) stays small; the tab list and the nested character properties are already Vec-backed, so boxing them would only add a hop.