@sahabaplus/mushaf-engine
Version:
TypeScript implementation of a Quran Mushaf navigation engine
74 lines (73 loc) • 2.42 kB
TypeScript
import { Mushaf, QuranMetadata, Verse } from '../mushaf';
import { Direction } from './direction';
/**
* A class responsible for navigating through verses in the Mushaf
*/
export declare class VersesNavigator {
private mushaf;
private quranMetadata;
private currentPageIdx;
private currentVerseIdx;
/**
* Create a new VersesNavigator
*
* @param mushaf - The Mushaf to navigate through
* @param metadata - Metadata about the Quran
*/
constructor(mushaf: Mushaf, metadata: QuranMetadata);
/**
* Reset the navigator to a specific verse position
*
* @param suraNumber - Sura number (1-114)
* @param verseNumber - Verse number within the sura
* @returns The current verse after reset, or undefined if not found
*/
resetPosition(suraNumber: number, verseNumber: number): Verse | undefined;
/**
* Get the current verse
*
* @returns The current verse
*/
currentVerse(): Verse;
/**
* Move to the next verse based on direction
*
* @param direction - Direction to navigate
* @returns The next verse, or undefined if not found
*/
nextVerse(direction: Direction): Verse | undefined;
/**
* Move to the next verse in downward direction
*
* @returns The next verse, or undefined if not found
*/
nextVerseDownward(): Verse | undefined;
/**
* Move to the previous sura
*
* @param currentSura - Current sura number
* @returns The first verse of the previous sura, or undefined if not found
*/
private movePreSura;
/**
* Move to the next verse in upward direction
*
* @returns The next verse, or undefined if not found
*/
nextVerseUpward(): Verse | undefined;
/**
* Find a verse in the mushaf and return its location (Verse, page, index_of_verse)
*
* @param suraNumber - Sura number (1-114)
* @param verseNumber - Verse number within the sura
* @returns The verse and its location, or undefined if not found
*/
findVerse(suraNumber: number, verseNumber: number): [Verse, number, number] | undefined;
/**
* Calculate the lines taken by a verse including any sura headers
*
* @param verse - The verse to calculate lines for
* @returns The total number of lines taken by the verse
*/
calculateVerseLines(verse: Verse): number;
}