UNPKG

@sahabaplus/mushaf-engine

Version:

TypeScript implementation of a Quran Mushaf navigation engine

74 lines (73 loc) 2.42 kB
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; }