22 lines
696 B
TypeScript
22 lines
696 B
TypeScript
/** One indent step — 0.5 in at 96 CSS px/in (Google Docs default). */
|
|
export const DOCS_INDENT_STEP_PX = 36
|
|
|
|
export const DOCS_MAX_INDENT_LEVEL = 8
|
|
|
|
export function clampIndentLevel(level: number): number {
|
|
if (!Number.isFinite(level)) return 0
|
|
return Math.max(0, Math.min(DOCS_MAX_INDENT_LEVEL, Math.round(level)))
|
|
}
|
|
|
|
export function nextIndentLevel(current: number, delta: number): number {
|
|
return clampIndentLevel(current + delta)
|
|
}
|
|
|
|
export function indentLevelToMarginPx(level: number): number {
|
|
return clampIndentLevel(level) * DOCS_INDENT_STEP_PX
|
|
}
|
|
|
|
export function isIndentableBlockType(typeName: string): boolean {
|
|
return typeName === "paragraph" || typeName === "heading"
|
|
}
|