64564.js.map 131 KB

1
  1. {"version":3,"file":"64564.js","mappings":"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","sources":["webpack://quran.com/./src/components/Radio/curatedStations.ts","webpack://quran.com/./src/components/Radio/types.ts","webpack://quran.com/./src/xstate/AudioPlayerMachineContext.tsx","webpack://quran.com/./src/xstate/actors/radio/radioMachine.ts","webpack://quran.com/./src/xstate/actors/verseCycle/verseCycleMachine.ts","webpack://quran.com/./src/xstate/actors/rangeCycle/rangeCycleMachine.ts","webpack://quran.com/./src/xstate/actors/repeatMachine/repeatMachine.ts","webpack://quran.com/./src/xstate/actors/audioPlayer/audioPlayerMachine.ts","webpack://quran.com/./src/components/AudioPlayer/hooks/isCurrentTimeInRange.ts","webpack://quran.com/./src/xstate/actors/audioPlayer/audioPlayerMachineHelper.ts","webpack://quran.com/./src/xstate/actors/audioPlayer/audioPlayerPersistHelper.ts"],"sourcesContent":["import range from 'lodash/range';\nimport sample from 'lodash/sample';\n\nimport { AudioTrack, CuratedStation } from './types';\n\nconst QURAN_CHAPTERS_COUNT = 114;\n\nconst popularRecitersId = ['7', '3', '10', '4'];\n\nconst generatePopularRecitersAudioTracks = (): AudioTrack[] => {\n return popularRecitersId\n .map((reciter) =>\n range(1, QURAN_CHAPTERS_COUNT).map((chapter) => ({\n surah: chapter.toString(),\n reciterId: reciter.toString(),\n })),\n )\n .flat();\n};\n\nconst JUZ_AMMA_FIRST_CHAPTER = 78;\nconst generateJuzAmmaAudioTracks = (): AudioTrack[] => {\n return popularRecitersId\n .map((reciter) =>\n range(JUZ_AMMA_FIRST_CHAPTER, QURAN_CHAPTERS_COUNT).map((chapter) => ({\n surah: chapter.toString(),\n reciterId: reciter.toString(),\n })),\n )\n .flat();\n};\n\nconst generateSurahAlKahfAudioTracks = (): AudioTrack[] => {\n return popularRecitersId.map((reciterId) => ({\n surah: '18',\n reciterId,\n }));\n};\n\nconst curatedStations: Record<string, CuratedStation> = {\n '1': {\n title: 'popular-recitations.title',\n description: 'popular-recitations.description',\n bannerImgSrc: '/images/stations/1.jpeg',\n audioTracks: generatePopularRecitersAudioTracks(),\n },\n '2': {\n title: 'yaseen-alwaqiah-al-mulk.title',\n description: 'yaseen-alwaqiah-al-mulk.description',\n bannerImgSrc: '/images/stations/2.jpg',\n audioTracks: [\n {\n surah: '36',\n reciterId: '7',\n },\n {\n surah: '96',\n reciterId: '7',\n },\n {\n surah: '67',\n reciterId: '7',\n },\n ],\n },\n '3': {\n title: 'surah-al-kahf.title',\n description: 'surah-al-kahf.description',\n bannerImgSrc: '/images/stations/3.jpeg',\n audioTracks: generateSurahAlKahfAudioTracks(),\n },\n '4': {\n title: 'juz-amma.title',\n description: 'juz-amma.description',\n bannerImgSrc: '/images/stations/4.jpeg',\n audioTracks: generateJuzAmmaAudioTracks(),\n },\n};\n\nexport const getRandomCuratedStationId = () => {\n return sample(Object.keys(curatedStations));\n};\n\nexport default curatedStations;\n","export type AudioTrack = {\n reciterId: string;\n surah: string;\n};\n\nexport enum StationType {\n Curated = 'curated',\n Reciter = 'reciter',\n}\n\nexport type StationState = {\n type: StationType;\n id: string;\n reciterId: string;\n chapterId: string;\n};\n\nexport type StationOperator = {\n getNextAudioTrack: (stationState: StationState) => AudioTrack;\n};\n\nexport type CuratedStation = {\n audioTracks: AudioTrack[];\n title: string;\n description: string;\n bannerImgSrc?: string;\n};\n\nexport type StationInfo = {\n title: string;\n description: string;\n};\n","/* eslint-disable import/prefer-default-export */\nimport { createContext } from 'react';\n\nimport { useInterpret } from '@xstate/react';\nimport useTranslation from 'next-translate/useTranslation';\nimport { InterpreterFrom } from 'xstate';\n\nimport { audioPlayerMachine } from './actors/audioPlayer/audioPlayerMachine';\nimport {\n getXstateStateFromLocalStorage,\n persistXstateToLocalStorage,\n} from './actors/audioPlayer/audioPlayerPersistHelper';\n\nimport { ToastStatus, useToast } from '@/dls/Toast/Toast';\nimport { DEFAULT_RECITER } from '@/redux/defaultSettings/defaultSettings';\n\nexport const AudioPlayerMachineContext = createContext(\n {} as InterpreterFrom<typeof audioPlayerMachine>,\n);\n\nconst LOCAL_STORAGE_PERSISTENCE_EVENT_TRIGGER = [\n 'CHANGE_RECITER',\n 'SET_PLAYBACK_SPEED',\n 'UPDATE_VOLUME',\n];\n\nexport const AudioPlayerMachineProvider = ({ children }) => {\n const toast = useToast();\n const { t } = useTranslation('common');\n const initialXstateContext = getXstateStateFromLocalStorage();\n const defaultLocaleContext = {\n reciterId: DEFAULT_RECITER.id,\n };\n\n const audioPlayerService = useInterpret(\n audioPlayerMachine,\n {\n context: {\n ...audioPlayerMachine.initialState.context,\n ...defaultLocaleContext,\n ...initialXstateContext,\n },\n },\n (state) => {\n const { playbackRate, reciterId, volume } = state.context;\n if (state.matches('VISIBLE.FAILED')) {\n toast(t('error.general'), { status: ToastStatus.Error });\n }\n\n if (LOCAL_STORAGE_PERSISTENCE_EVENT_TRIGGER.includes(state.event.type)) {\n persistXstateToLocalStorage({ playbackRate, reciterId, volume });\n }\n },\n );\n\n return (\n <AudioPlayerMachineContext.Provider value={audioPlayerService}>\n {children}\n </AudioPlayerMachineContext.Provider>\n );\n};\n","/* eslint-disable react-func/max-lines-per-function */\n/* eslint-disable import/prefer-default-export */\nimport random from 'lodash/random';\nimport sample from 'lodash/sample';\nimport { assign, createMachine } from 'xstate';\nimport { sendParent } from 'xstate/lib/actions';\n\nimport RadioContext from './types/RadioContext';\nimport RadioEventType from './types/RadioEventType';\n\nimport curatedStations from '@/components/Radio/curatedStations';\nimport { AudioTrack, StationType } from '@/components/Radio/types';\n\nexport const createRadioMachine = () => {\n return createMachine(\n {\n tsTypes: {} as import('./radioMachine.typegen').Typegen0,\n schema: {\n context: {} as RadioContext,\n events: {} as RadioEventType,\n },\n id: 'radioMachine',\n initial: 'on',\n context: {\n type: StationType.Curated,\n },\n states: {\n on: {\n on: {\n PLAY_STATION: {\n actions: ['setStation', 'generateRadioAudioTrack'],\n },\n TRACK_ENDED: {\n actions: 'generateNextAudioTrack',\n },\n },\n },\n },\n },\n {\n actions: {\n setStation: assign({\n type: (context, event) => event.stationType,\n id: (context, event) => event.id,\n }),\n generateNextAudioTrack: sendParent((context) => {\n const { type, id } = context;\n let randomAudioTrack: AudioTrack;\n if (type === StationType.Curated) {\n const station = curatedStations[id];\n randomAudioTrack = sample(station.audioTracks);\n } else {\n randomAudioTrack = {\n reciterId: id,\n surah: random(1, 114).toString(),\n };\n }\n return {\n type: 'PLAY_RADIO_TRACK',\n shouldPlayFromRandomTimeStamp: false,\n reciterId: Number(randomAudioTrack.reciterId),\n surah: Number(randomAudioTrack.surah),\n };\n }),\n generateRadioAudioTrack: sendParent((context, event) => {\n const { stationType, id } = event;\n let randomAudioTrack: AudioTrack;\n if (stationType === StationType.Curated) {\n const station = curatedStations[id];\n randomAudioTrack = sample(station.audioTracks);\n } else {\n randomAudioTrack = {\n reciterId: id,\n surah: random(1, 114).toString(),\n };\n }\n return {\n type: 'PLAY_RADIO_TRACK',\n shouldPlayFromRandomTimeStamp: true,\n reciterId: Number(randomAudioTrack.reciterId),\n surah: Number(randomAudioTrack.surah),\n };\n }),\n },\n },\n );\n};\n","/* eslint-disable jsdoc/check-tag-names */\n/* eslint-disable camelcase */\n/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable react-func/max-lines-per-function */\n/* eslint-disable import/prefer-default-export */\nimport { assign, createMachine } from 'xstate';\nimport { pure, sendParent } from 'xstate/lib/actions';\n\nexport const createVerseCycleMachine = ({ timestampFrom, timestampTo, totalVerseCycle }) =>\n /** @xstate-layout N4IgpgJg5mDOIC5QDcwCdZgMIE8DGANmAIJ4AuA9mgHQCWAdgApoVRpywDEAqowCLEAKgFEA+oICSAWQkA5AOKJQABwqxaZWhXpKQAD0QBaAEwB2AJzULxgCznjAZgAMTgBxOLAGhA5EAVktzIKDXP2MARlsbJ3CAX1jvVAxsfCJSShokzGF6CEhOXVV1TW1dAwRwu2oANjdq8PqG41dmh29fBAdTcOpzU1C3G1dw8OdHeISQego8+CQQLJTCEnIqOiYWNg5CtQ0tHXnyw2qHG2obRwdRroHzNp9-B2o-Fxs32vDTCxtq+MT0TC4ZbpNaLHJ5CA7Yr7MqIYxuaiuIYudzhO7mEbtRDhJx+c6uaqmALdGxo0nmP4LAFLNKrGgAMwYtFgAAtIFC9qVDtiHK5eqY7Gi3F9og4-FiEPY+aYImZqh9zNU-KZKYsgbSMhySgdQEclXyLg4rkb+i87hLDGj8S8PFdXATusZfhMgA */\n createMachine(\n {\n context: {\n timestampFrom,\n timestampTo,\n totalVerseCycle,\n currentVerseCycle: 1,\n },\n tsTypes: {} as import('./verseCycleMachine.typegen').Typegen0,\n id: 'verseCycleActor',\n initial: 'inProgress',\n states: {\n inProgress: {\n on: {\n UPDATE_VERSE_TIMING: {\n actions: 'updateVerseTiming',\n },\n TIMESTAMP_UPDATED: {\n cond: 'verseEnded',\n target: 'verseEnded',\n },\n },\n },\n verseEnded: {\n always: [\n {\n actions: 'repeatSameAyah',\n description: 'Inc context.currentVerseCycleNumber and sendParent(REPEAT_SAME_AYAH)',\n cond: 'verseRepeatOnProgress',\n target: 'inProgress',\n },\n {\n description: 'When repeat cycle is done, transition to finished state',\n target: 'finished',\n },\n ],\n },\n finished: {\n entry: 'sendVerseRepeatFinished',\n description: 'Send VERSE_REPEAT_FINISHED event',\n type: 'final',\n },\n },\n },\n {\n guards: {\n verseEnded: (context, event: { timestamp: number }) => {\n return (\n event.timestamp >= context.timestampTo - 200 // 200ms is a buffer for the verse end time\n // TODO: discuss this\n );\n },\n verseRepeatOnProgress: (context) => {\n return context.currentVerseCycle < context.totalVerseCycle;\n },\n },\n actions: {\n updateVerseTiming: pure((context, event: any) => {\n return assign({\n timestampFrom: event.timestampFrom,\n timestampTo: event.timestampTo,\n });\n }),\n sendVerseRepeatFinished: sendParent(() => {\n return {\n type: 'VERSE_REPEAT_FINISHED',\n };\n }),\n repeatSameAyah: pure((context) => {\n return [\n assign({\n currentVerseCycle: context.currentVerseCycle + 1,\n }),\n sendParent({\n type: 'REPEAT_SAME_AYAH',\n }),\n ];\n }),\n },\n },\n );\n","/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable jsdoc/check-tag-names */\n/* eslint-disable react-func/max-lines-per-function */\n/* eslint-disable import/prefer-default-export */\nimport { createMachine, ActorRefFrom, spawn } from 'xstate';\nimport { forwardTo, pure, sendParent, stop, assign, send } from 'xstate/lib/actions';\n\nimport { createVerseCycleMachine } from '../verseCycle/verseCycleMachine';\n\nimport VerseTiming from 'types/VerseTiming';\n\nexport const createRangeCycleMachine = ({\n totalRangeCycle,\n totalVerseCycle,\n verseTimings,\n fromVerseNumber,\n toVerseNumber,\n}) =>\n /** @xstate-layout N4IgpgJg5mDOIC5QCcCGA7GBhAngYwBswBBPAFwHtkA6AS3QAVkKpk5YBiAFQEkBZAKIBlLsT4MA+gFUGAEWJcBsxKAAOFWLTK0K6FSAAeiAGwB2AIzUALACZTAVnMAOZ1fsAGYwBoQORI+pjAGYnKwBOELdw+2NjAF84nzRMMFxCEnIqOkZmVnYOACUBBgEFCSExAQliAE1iAAl9dU1tXX0jBCszajCnd3cnIKtPczDzUysfPwQAWnGransxoLD3GydTTatxhKSMbHwiUkoaeiYWNlhOIpKygDkBAA0uarrGpBBmrR09D46YsLUCY2MZhexDGz2KxOKaIWyWcxQjaOdzbIJBey7EDJA7pY5ZM65S7XYqlF4MIoANVeDSaGm+bT+-mMgOBoPBtiRsIQQVMQWoiOhDnMqPM6MxiWx+1ShwyJ2y5zyVw4lIEBSEVRuZIkADEeHceEJ6ko6S0fu1EDMbCyBcEgu4xZs7PZuXN3IFrWZwqZUT6nMYbFicTK8ZkaMGBOgIJAOKaGb9QB0hvyHGEbNb7FD3B5Jr44TbBciRWiMQlJegKNH4B9g2kjmGFUT2HHWgnDIh1gtzFYgnYwsZtmYzNzTE5Ar2QRYwtEVk4g9K63KshGo5AW+ambMMQswhFeQN+k5kdyzGPjODwTYMU4bOZ5ylF-iaAAzei0WAACzXHy+rYtW+zRZwhZUxgncXsb25MFLD6exIWCMUYicMJ71xesTnXRlE0tXkx13dE-UPY881mGwrFMRZQNCOw3HMMj1jLOIgA */\n createMachine(\n {\n context: {\n verseCycleActor: null as ActorRefFrom<ReturnType<typeof createVerseCycleMachine>>,\n totalVerseCycle,\n totalRangeCycle,\n currentRangeCycle: 1,\n fromVerseNumber,\n toVerseNumber,\n currentVerseNumber: fromVerseNumber,\n verseTimings: verseTimings as VerseTiming[],\n },\n tsTypes: {} as import('./rangeCycleMachine.typegen').Typegen0,\n id: 'rangeCycleActor',\n initial: 'inProgress',\n states: {\n inProgress: {\n entry: 'spawnVerseCycleActor',\n on: {\n UPDATE_VERSE_TIMINGS: {\n actions: 'updateVerseTimings',\n },\n TIMESTAMP_UPDATED: {\n actions: 'forwardtimestampToVerseActor',\n description:\n 'Receive TIMESTAMP_UPDATED event from parent. Forward to verseCycleActor',\n },\n REPEAT_SAME_AYAH: {\n actions: 'repeatSameAyah',\n description: 'Event from verseCycleActor. forward sendParent(REPEAT_SAME_AYAH)',\n },\n REPEAT_NEXT_AYAH: {\n actions: 'repeatNextAyah',\n },\n REPEAT_PREV_AYAH: {\n actions: 'repeatPreviousAyah',\n },\n REPEAT_SELECTED_AYAH: {\n actions: 'repeatSelectedAyah',\n },\n VERSE_REPEAT_FINISHED: [\n {\n cond: 'rangeEnded',\n target: 'rangeEnded',\n },\n {\n actions: 'spawnNextAyahActor',\n },\n ],\n },\n },\n rangeEnded: {\n description:\n 'State where we reached the end of the range. Deciding whether to repeat or finish',\n always: [\n {\n actions: 'repeatCycle',\n description:\n 'When range cycle is not finished yet. Inc context.currentRangeCycle, respawn verseCycleActor and sendPlayFromAyah',\n cond: 'rangeCycleOnProgress',\n target: 'inProgress',\n },\n {\n description: 'When range cycle is finished, transition to finished state',\n cond: 'rangeCycleFinished',\n target: 'finished',\n },\n ],\n },\n finished: {\n entry: 'sendRangeRepeatFinished',\n description: 'Send RANGE_REPEAT_FINISHED to parent',\n type: 'final',\n },\n },\n },\n {\n guards: {\n rangeEnded: (context) => {\n return context.currentVerseNumber === toVerseNumber;\n },\n rangeCycleOnProgress: (context) => {\n return context.currentRangeCycle < context.totalRangeCycle;\n },\n rangeCycleFinished: (context) => {\n return context.currentRangeCycle >= context.totalRangeCycle;\n },\n },\n actions: {\n repeatSelectedAyah: pure((context, event: any) => {\n const { ayahNumber } = event;\n const selectedVerseTiming: VerseTiming = context.verseTimings[ayahNumber - 1];\n\n return [\n stop(context.verseCycleActor.id),\n assign({\n currentVerseNumber: ayahNumber,\n verseCycleActor: spawn(\n createVerseCycleMachine({\n timestampFrom: selectedVerseTiming.timestampFrom,\n timestampTo: selectedVerseTiming.timestampTo,\n totalVerseCycle: context.totalVerseCycle,\n }),\n ),\n }),\n ];\n }),\n // @ts-ignore\n updateVerseTimings: pure((context, event: any) => {\n const curentVerseTiming = event.verseTimings[context.currentVerseNumber - 1];\n return [\n assign({\n verseTimings: event.verseTimings,\n }),\n send(\n {\n type: 'UPDATE_VERSE_TIMING',\n timestampFrom: curentVerseTiming.timestampFrom,\n timestampTo: curentVerseTiming.timestampTo,\n },\n {\n to: context.verseCycleActor.id,\n },\n ),\n ];\n }),\n repeatNextAyah: pure((context) => {\n const currentIndex = context.currentVerseNumber - 1;\n const nextVerseTiming: VerseTiming = context.verseTimings[currentIndex + 1];\n const nextVerseNumber = context.currentVerseNumber + 1;\n\n if (nextVerseNumber > toVerseNumber) {\n return [\n stop(context.verseCycleActor.id),\n sendParent({ type: 'RANGE_REPEAT_FINISHED' }),\n ];\n }\n\n return [\n stop(context.verseCycleActor.id),\n assign({\n currentVerseNumber: nextVerseNumber,\n verseCycleActor: spawn(\n createVerseCycleMachine({\n timestampFrom: nextVerseTiming.timestampFrom,\n timestampTo: nextVerseTiming.timestampTo,\n totalVerseCycle: context.totalVerseCycle,\n }),\n ),\n }),\n ];\n }),\n repeatPreviousAyah: pure((context) => {\n const currentIndex = context.currentVerseNumber - 1;\n const prevVerseTiming: VerseTiming = context.verseTimings[currentIndex - 1];\n const prevVerseNumber = context.currentVerseNumber - 1;\n\n return [\n stop(context.verseCycleActor.id),\n assign({\n currentVerseNumber: prevVerseNumber,\n verseCycleActor: spawn(\n createVerseCycleMachine({\n timestampFrom: prevVerseTiming.timestampFrom,\n timestampTo: prevVerseTiming.timestampTo,\n totalVerseCycle: context.totalVerseCycle,\n }),\n ),\n }),\n ];\n }),\n spawnNextAyahActor: pure((context) => {\n const currentIndex = context.currentVerseNumber - 1;\n const currentVerseTiming: VerseTiming = context.verseTimings[currentIndex];\n const nextVerseTiming: VerseTiming = context.verseTimings[currentIndex + 1];\n\n const nextVerseNumber = context.currentVerseNumber + 1;\n const previousVerseDuration = Math.abs(currentVerseTiming.duration);\n\n return [\n stop(context.verseCycleActor.id),\n sendParent({\n type: 'REPEAT_AYAH',\n verseNumber: nextVerseNumber,\n verseDuration: previousVerseDuration,\n }),\n assign({\n verseCycleActor: spawn(\n createVerseCycleMachine({\n timestampFrom: nextVerseTiming.timestampFrom,\n timestampTo: nextVerseTiming.timestampTo,\n totalVerseCycle: context.totalVerseCycle,\n }),\n ),\n currentVerseNumber: nextVerseNumber,\n }),\n ];\n }),\n /**\n * forward TIMESTAMP_UPDATED event to verseCycleActor\n */\n forwardtimestampToVerseActor: forwardTo((context) => {\n return context.verseCycleActor;\n }),\n\n /**\n * Forward the event to parent\n */\n repeatSameAyah: sendParent((context) => {\n const verseTiming = context.verseTimings[context.currentVerseNumber - 1];\n const verseDuration = verseTiming.duration;\n return { type: 'REPEAT_AYAH', verseNumber: context.currentVerseNumber, verseDuration };\n }),\n\n /**\n * Repeat Cycle\n * - Increment currentRangeCycle\n * - respawn verseCycleActor\n * - send to parent PLAY_FROM_AYAH\n */\n repeatCycle: pure((context) => {\n const verseTiming = context.verseTimings[fromVerseNumber - 1];\n const verseDuration = verseTiming.duration;\n return [\n stop(context.verseCycleActor.id), // stop verseCycleActor\n assign({\n currentRangeCycle: context.currentRangeCycle + 1,\n verseCycleActor: spawn(\n createVerseCycleMachine({\n timestampFrom: verseTiming.timestampFrom,\n timestampTo: verseTiming.timestampTo,\n totalVerseCycle: context.totalVerseCycle,\n }),\n ),\n currentVerseNumber: fromVerseNumber,\n }),\n sendParent({\n type: 'REPEAT_AYAH',\n verseNumber: context.fromVerseNumber,\n verseDuration,\n }),\n ];\n }),\n\n sendRangeRepeatFinished: pure(() => {\n return sendParent({ type: 'RANGE_REPEAT_FINISHED' });\n }),\n\n /**\n * Spawn verseCycleActor, and assign it to context\n */\n spawnVerseCycleActor: assign({\n verseCycleActor: (context) => {\n const curentVerseTiming = context.verseTimings[context.currentVerseNumber - 1];\n return spawn(\n createVerseCycleMachine({\n timestampFrom: curentVerseTiming.timestampFrom,\n timestampTo: curentVerseTiming.timestampTo,\n totalVerseCycle: context.totalVerseCycle,\n }),\n );\n },\n }),\n },\n },\n );\n","/* eslint-disable jsdoc/check-tag-names */\n/* eslint-disable react-func/max-lines-per-function */\n/* eslint-disable import/prefer-default-export */\nimport { ActorRefFrom, assign, createMachine, spawn } from 'xstate';\nimport { forwardTo, pure, send, sendParent } from 'xstate/lib/actions';\n\nimport { createRangeCycleMachine } from '../rangeCycle/rangeCycleMachine';\n\nexport const createRepeatMachine = ({\n totalRangeCycle,\n totalVerseCycle,\n verseTimings,\n fromVerseNumber,\n toVerseNumber,\n delayMultiplier,\n}) =>\n /** @xstate-layout N4IgpgJg5mDOIC5QCcwAcwEMAuBZTAxgBYCWAdmAHTkAKyA9lKrLAMQT0XVkBu9A1lWSYyMAMIBPAgBsw+YuTCJQaerBLYSnZSAAeiACwGAzJQAcARgAMAVmMWzATmOOrZswBoQExNceVHdwB2CwsbCwMguwA2AF94rzJ6CDgdVAwceVIuWgYmOHgkEFV1TW0i-QQrLx8EaLjYr3SsPEJsqgAzchJYIkgdEo0tMh1Kg0cLSisAJgMbRyC3aKsgoLmaxGMzA0pohetZ6LszNZsEkGbMtsUBtSHy0EqAWlmNhCfogLMbOZsbbbszlm8XiQA */\n createMachine(\n {\n context: {\n verseTimings,\n fromVerseNumber,\n toVerseNumber,\n delayMultiplier,\n repeatSettings: {\n totalRangeCycle,\n totalVerseCycle,\n },\n rangeCycleActor: null as ActorRefFrom<ReturnType<typeof createRangeCycleMachine>>,\n },\n tsTypes: {} as import('./repeatMachine.typegen').Typegen0,\n id: 'repeatMachine',\n initial: 'inProgress',\n states: {\n inProgress: {\n entry: 'spawnRangeCycleActor',\n on: {\n UPDATE_VERSE_TIMINGS: {\n actions: 'updateVerseTimings',\n },\n TIMESTAMP_UPDATED: {\n actions: 'forwardToRangeCycleActor',\n },\n REPEAT_AYAH: {\n actions: 'repeatAyah',\n },\n RANGE_REPEAT_FINISHED: {\n target: 'finished',\n },\n REPEAT_NEXT_AYAH: {\n actions: 'repeatNextAyah',\n },\n REPEAT_PREV_AYAH: {\n actions: 'repeatPreviousAyah',\n },\n REPEAT_SELECTED_AYAH: [\n {\n cond: 'selectedAyahIsNotInRange',\n target: 'finished',\n },\n {\n actions: 'repeatSelectedAyah',\n },\n ],\n },\n },\n finished: {\n type: 'final',\n entry: 'sendRepeatFinished',\n },\n },\n },\n {\n guards: {\n selectedAyahIsNotInRange: (context, event: any) => {\n const { ayahNumber } = event;\n return ayahNumber < fromVerseNumber || ayahNumber > toVerseNumber;\n },\n },\n actions: {\n repeatSelectedAyah: pure((context, event: any) => {\n return send(\n { type: 'REPEAT_SELECTED_AYAH', ayahNumber: event.ayahNumber },\n { to: context.rangeCycleActor.id },\n );\n }),\n repeatNextAyah: pure(() => {\n return send({ type: 'REPEAT_NEXT_AYAH' }, { to: (context) => context.rangeCycleActor });\n }),\n repeatPreviousAyah: pure(() => {\n return send({ type: 'REPEAT_PREV_AYAH' }, { to: (context) => context.rangeCycleActor });\n }),\n sendRepeatFinished: sendParent({ type: 'REPEAT_FINISHED' }),\n repeatAyah: pure((context, event: any) => {\n const verseDelay = event.verseDuration * context.delayMultiplier;\n return sendParent({ type: 'REPEAT_AYAH', ayahNumber: event.verseNumber, verseDelay });\n }),\n forwardToRangeCycleActor: forwardTo((context) => {\n return context.rangeCycleActor;\n }),\n updateVerseTimings: pure((context, event: any) => [\n assign({\n verseTimings: event.verseTimings,\n }),\n send(\n { type: 'UPDATE_VERSE_TIMINGS', verseTimings: event.verseTimings },\n { to: context.rangeCycleActor.id },\n ),\n ]),\n spawnRangeCycleActor: assign({\n rangeCycleActor: (context) => {\n return spawn(\n createRangeCycleMachine({\n totalRangeCycle: context.repeatSettings.totalRangeCycle,\n totalVerseCycle: context.repeatSettings.totalVerseCycle,\n verseTimings: context.verseTimings,\n fromVerseNumber: context.fromVerseNumber,\n toVerseNumber: context.toVerseNumber,\n }),\n );\n },\n }),\n },\n },\n );\n","/* eslint-disable no-param-reassign */\n/* eslint-disable import/prefer-default-export */\n/* eslint-disable no-restricted-syntax */\n/* eslint-disable jsdoc/check-tag-names */\n/* eslint-disable max-lines */\n\nimport random from 'lodash/random';\nimport { assign, createMachine, send, spawn } from 'xstate';\nimport { pure, stop } from 'xstate/lib/actions';\n\nimport { createRadioMachine } from '../radio/radioMachine';\nimport { createRepeatMachine } from '../repeatMachine/repeatMachine';\n\nimport {\n getActiveAyahNumber,\n getActiveVerseTiming,\n getActiveWordLocation,\n executeFetchReciter,\n executeFetchReciterFromEvent,\n getRecitersList,\n getMediaSessionMetaData,\n getAyahNumberByTimestamp,\n} from './audioPlayerMachineHelper';\nimport AudioPlayerContext from './types/AudioPlayerContext';\nimport AudioPlayerEventType from './types/AudioPlayerEventType';\n\nimport { StationType } from '@/components/Radio/types';\nimport { milliSecondsToSeconds, secondsToMilliSeconds } from '@/utils/datetime';\nimport AudioData from 'types/AudioData';\n\n/**\n * Note on Safari `onWaiting` hack.\n * ----\n * ISSUES\n * 1) Safari does not fire `onWaiting` event when audio is buffering.\n * It will just triggger `PAUSE` and immediately followed by `ENDED` state.\n * as the result, the audio player will enter the `ended` state.\n *\n * If we `.play()` the audio player again, it will start playing from the beginning.\n *\n * 2) If we set the currentTime to be, audioplayer.currentTime = context.elapsed - 000.1\n * And then do `.play()`\n * - The audio player will continue playing the audio, the onTimeUpdate event will continue to be triggered\n * - But there will be no sound. Since the data is actually not yet available\n * - On the background, safari will attempt to continue fetch mp3 data. Once the data is available. PROGRESS event will be triggered\n * - and then the audio player will continue from the last played position (based on `context.elapsed`)\n *\n * Workaround we do right now\n * 1) When the audio PAUSE, is trigger, we enter PAUSED.ACTIVE state.\n * 2) Followed by an END state, we just trigger `continueFromLastTimestamp`. Which basically set the currentTime to be `context.elapsed` + `.play()`\n * 3) The audio will enter PLAYING.LOADING, (and then enter PLAYING.ACTIVE for a split second caused by SEEKED, and the enter PLAYING.LOADING again caused by WAITING event)\n * 4) The audioplayer will continue download progress in the background. And then CAN_PLAY will be triggered. -> The audio player will enter PLAYING.ACTIVE again\n *\n * Note\n * - CAN_PLAY and WAITING here. Are not natively triggered by the browser. It's artifial/simulated @see AudioPlayer.tsx onTimeUpdate for the implementation details\n * - continueFromLastTimestamp will not be called when the audio is `isAudioAlmostEnded`. Because in this case the safari behavior is correct. The audio is ended.\n * so no need to continue downloading and playing the audio\n *\n */\n\nexport const audioPlayerMachine =\n /** @xstate-layout N4IgpgJg5mDOIC5QEMCuECWB7ACgG2QE8wAnAOgAkBJAERoFEA5AYhwBkBBATQH0AlDjSoB5RKAAOWWBgAu2AHZiQAD0QAOAJxkADJo0A2DWu0B2AIxqTAZgBMAGhCFEAVltkALBq-7DJ5140rAF8ghzRMXAJicmo6JlZOXgEhYR4AFQEAYQBpJUlpOSxFJBVEK20zMhNNGzV9GzN3bWcLBycEG2sPAM99E20GmytnELD0bHwiUkpaBhZ2bh5uDgo8qVkFJVUEcsrqjVr6xubWx0R3KzVur2H9Y2MbZ3dRkHCJqOnYuYTFgGUAVQEqxK+Q2RS2ZQqVRqdQaTRaajaiH0Zkqni87mM7gad2eoVe40iUxis3iv3oaR4Cy4ACEODkeL8cPR6DQ1gVNiVtmZtFYyGp-O4fEN9M41FYDEidmoruiNCYbF5nNptEKTC83kTojM4ixMhQOIwAOL0fj0TJUNL0PjssHFUDcixkMxWXH+ZV+Mz+KU2dzua4GEw3cVeDWEybagBqVF+VBpbHoZABQJ4AFkY6mOGl9cxMsJGAAxKh8VNUxJpjNZ-WsxmAla2wr20oIVGi508-qGMz6Wx1KUtCVVF0yqyuoXisMRCPTaOx+OJ5MrCu-TPZii5w2ZehsMuLdMrqsUGuL4ESdaNiEtizOdumbRdnuHKVex5kALmKx+J4KtST97EshZzjBMyA4f4Ul3LhrR4KhGEtKgs1ZMgcDA8kaFAzI0ioSN6GYNJhCNI0EwbTkHUhfRtDIRUFU8MwNG7FUTB9GUTCo45nBsQY+ncdV8U1adyCA+dQPAkRIOg2D4MQ9CUP+NCMKwnDmHJehchBc9SObR5zB0ao-B4lFDF9H0-T2F1+gefplTxMYpw+QSY2AxMwIg6kJLgrDpOQ1CkPpRTcN+NIODYNgSPBLlEG0ypTEsb9DIOdwfUMf0P3MDR3DMGxtA0Zo-y1GdHOElyxLcvgYI8hCrRknz0L87DcOpMKm22coKKo+VfXo+iKNMKVyi6BpLiMCpdDo4I+PDezAMKkDitSUryqkqrvLk3zMPq5gmDZdSOXCsidlVSjqM6uiGN6s4dkCG9UvFXozGqfQ8oE6a51m0T5sSdylqQ2T5LYYRBFgo1mEYegAA1KWWU8QFBC8Io6awbwFLK1B49xnCDEy7iHT9UYeTKnqmoS3tcz6yskzzlt+pD-sB41WD4ehIyWLh6x2u1L06YZ+Q43Q0YxjQfSy1iP1FTRVXS0dCYA4nnPe8TyYqrzqfQ2mhHpgsOCoUL2bh-b0fo517mcayeKGZ8Whvd9MRldLON-Ca7Jlma5dJ7gvspn6arINWgY3RhIKazmKJsMhXAMUVamol0fQlPkP00YwXVsIZpajF2RLdqDFe+9CGESP3QYhlm2bPXbmshYx2porqzqYi77pla4rMVQxmhsNOCte12SrJxbPbz7duD9nBGeZqGg-h8oq+O2jusYkzLDYiV-DUIYcod2z-3T7vM9792c4Hsh8+H+nlFgGRkBkMAyGQAAza+SAAChwvhyR4E+uAASmYfiiYzuaCt+6VSQp-IGk99qtSOh1OeddmKDkGrbE2wxVSdwcrvQBC0KYgJkgXY0CkNr4UIsRXWmkWqfi0CYC4qIYTUT6llLQg1rD3isNiAYaCXpOT3h9A+wDlZ4KNAQpSjNmRZhLtDWGZCygUKqNQiwBw17yj6tif0TDOjNB4mKXiW98roK4Zgvu2D+Gn0EXVJSKk1Jlw5lPUUlQJRGA0MqCUMV67tAaPeHmfQvCmGcD2DhstuFAKMVTARQiApBRChA5sroWhkHsZoJxOU9Kx38J4tQPIhT3m0QSJ2O99HyywUrEJJiwmbUYNtKxetmwZTaiiHK6U-BGAVElV8ApuJZJysg-xACCmGKKT9UJZjcL-BwDQRC6QqDpmNFElqQoUpyNoUoi6jwPG3B8LCRothHqO23l3fJWcPY4OQoM9aSlqYzOkUGWRVgaEKLoRdV0zRl4mFFC8u4SpukYN6bw4JAySm+3pkXSGrMJEaT2tE8U+hnTWE4sqIY90MY+k2W+LwVl6gDBRJ8-Z+9s58OKVwIGPsAbq2BqPJm4iLnSldNClOcKbl+FcYgCwa8UXyl8aqMUzRsl-2dl8g5h8jnUkJQC4GmttaUsyZUCwugTaqjNlYZ8tgrZeFRmKYYDDuWTV5dinhuLfm4P+cSv2mRDSB1IeClqdxQ51F0M0dlwxGUdGaFcNpDj7x0XYTs3RnCirfL1f09CW1WTKRZJYmGYKK4dFYVcAwBgZTZXSfdBVF0mgHBxmvAUHETYaCxb6-leKkJBpoD8LglLRxXKoTc+RUclntE-K4HG+h0amFYd+XNJMcWHK8kWktFLzWRuvFoVULzeydBNj2KUmJfTpruDKROm8cm7L0XmztAru3lODdSWsQJKWDp0AZUdX4J0psuNdYc9j62hi9c9AJBifkBrID2ohRF6ASuOGQOp2VNFNPsA3DirF0RBmsPUG5fjr3-z5augtgaN3Fq3ckMSGR6RhskRaplAoh0Hqjke5N7RXCqhnT4DJJhNW5L2Su3VXaqrMBEfQMRRY4K-CPBU8N5dObdi0J4WoK8m2OPuj6JJ-IDg9lMPKIw2ydE3p6fm-VINwbAtLqx6xkDWofvKIqV0jjXR+ClAcViAR5SjkMmvUjS6fUdso2u6jZLx4grLapkTGnDCuD6M4fsfhWWOO-KYGwYHJMQa4SKs0ForRlTGUFZgEAig3wwPIAAblgAA1jfO+YAZAAGMAAWfAwDpdkKQXdGH90juw+O3DTKfB8nfAOVuHZ22JiC4zEL0FwscGYKQEgWByDiAIDIO+XWAC2ZBUsZey7l-LJBCupOHY+EzZX+zKjMpcZtGNuL1aJXTI0ZpRGUla5F6LZBYsJeS8NtLWWcviDAFfGgV9kC7oqHyC4zqjAZU4ulfsFxPOpsCCRxx63Gv0B2x-LMbWOtdbID1q+-WSBDZG+dsAl3ru3fuy6Dw5QxQvcyoqRKKbuyecMA0vo5QbKLu9bLXM-1ySUqeNa+iVavF9EVFKTQnnqjpMuCR8a-ntXzhDZSakdIGRMhZCx1DkbOiBHap+HibPfPin7OKMyTRm3o14-V3MBpjSmia5aa0lLDJhweq89KfoXkfcMOmjiRwsnq-g4DVISGcj67xxjOoxu-QGX7MTwjKJh2mbJy7XtE9+2XgN67nwAsPdm4bncSovim3WBuba-3Unu69pPM7qF4f3em-0M+HilF48OrXsMQMtvywIdECH+GnRqhh19I8F0YpLC-rw1Qs9lxuINA+eB4kfOljy0ZgWSljfWIJJdIYWwnuLo9TPRlcwcu7gjF79EfvtGxHkjSFhaZ1f9qIobi81nmgXnSoMCEfE8gsAQDgEoHl2ovhMH1635EQwAxWpeYEBo62TzLlXPqSl8olEzKyovI5gPYdwFsJscSqKTwhmnEfo62d6-qucK08kQyI+FwMahgs6CaqI1gAm6Mzo2I46ji942IXOpOqeOqQSD6KsG2JKI+Lyqi8KXoicIBbmyy1gKULo9E94XgrciBfqVGXsq0ouEanMGU-osaOBRgeB5WTqRgOMTBPYziy+3OeSFGNBKBYCO+lSUiHQHG3Q3GjivGLQjqdEyo0BgYlwzQoGFBd+5GFmWhR8Qq+C6Bu+0Sng-oLQvgMSHq94SUUBtwQYmIHuhgghMmtBoSIqZadQ3hfoFEMog0TOyyqarKPELEdEf2K+jhPclm0GxyJiZafolElatyNa5hCooc1sc6ds9hWqGhThhSKB1AgUwgfApaHh2wDQVCRhIYvingZhFslwzchmIG3Y9RZGy6TRfSKBRaEq1COgvo1gMoxBMofUQYVwTCBsnEh0KeAWmhzRA8I+jQN4XG-Rph-GDcTQUKcovI2UmU1QHcOR0xiYYqCYYhbG8MQo8oukXUoon45QgsDcgJzoKqFQAop03Y-2RqxowWuuYWIOu6WaQ4DCKoEokceeF0rgqOCc1QpgQYX+Lx5mDWsJW26+u2SJXRL+ceRukeuek6GUnma87ywsOaxJss1Oaa2e9J0+biji+O34ngo47J6hBW1JOw8hUKKoMpspspjQ5+QQQAA */\n createMachine(\n {\n context: {\n audioPlayer: null,\n reciterId: 7,\n ayahNumber: 1,\n elapsed: 0,\n downloadProgress: 0,\n duration: 0,\n audioData: undefined,\n playbackRate: 1,\n shouldPlayFromRandomTimeStamp: false,\n surahVersesCount: 0,\n repeatActor: null,\n radioActor: null,\n verseDelay: 0,\n volume: 1,\n },\n tsTypes: {} as import('./audioPlayerMachine.typegen').Typegen0,\n schema: {\n context: {} as AudioPlayerContext,\n events: {} as AudioPlayerEventType,\n services: {} as {\n fetchReciter: {\n data: AudioData;\n };\n },\n },\n id: 'audioPlayer',\n initial: 'HIDDEN',\n states: {\n HIDDEN: {\n description: 'Audio player is hidden in the UI',\n on: {\n PLAY_RADIO: {\n actions: ['stopRepeatActor', 'forwardPlayToRadioMachine'],\n },\n CLOSE_RADIO: {\n actions: ['pauseAudio', 'exitRadio'],\n },\n PLAY_RADIO_TRACK: {\n actions: 'setRadioStationDetails',\n description: 'User opens the audio player to play radio of a certain station',\n target: 'VISIBLE',\n },\n PLAY_AYAH: [\n {\n actions: ['setSurahAndAyahNumbers', 'exitRadio'],\n description: 'User opens the audio player to play an Ayah',\n cond: 'isUsingCustomReciterId',\n target: 'VISIBLE.LOADING_CUSTOM_RECITER_DATA',\n },\n {\n actions: ['setSurahAndAyahNumbers', 'exitRadio'],\n description: 'User opens the audio player to play an Ayah',\n target: 'VISIBLE',\n },\n ],\n PLAY_SURAH: [\n {\n actions: ['setSurahAndResetAyahNumber', 'exitRadio'],\n cond: 'isUsingCustomReciterId',\n target: 'VISIBLE.LOADING_CUSTOM_RECITER_DATA',\n },\n {\n actions: ['setSurahAndResetAyahNumber', 'exitRadio'],\n description: 'User opens the audio player to play a Surah',\n target: 'VISIBLE',\n },\n ],\n SET_PLAYBACK_SPEED: {\n actions: 'setPlaybackRate',\n description: 'User change the playback speed',\n },\n CHANGE_RECITER: [\n {\n actions: 'setReciterId',\n description: 'User changes the reciter',\n },\n ],\n },\n },\n VISIBLE: {\n description: 'Audio player is visible in the UI',\n initial: 'LOADING_RECITER_DATA',\n states: {\n AUDIO_PLAYER_INITIATED: {\n description: 'File has been loaded and is ready to be played',\n initial: 'PAUSED',\n invoke: {\n src: 'initMediaSession',\n },\n states: {\n PAUSED: {\n description: 'Default state of the audio player',\n initial: 'ACTIVE',\n states: {\n ACTIVE: {\n on: {\n TOGGLE: {\n actions: 'setElapsedTime',\n description:\n 'User either clicks on the play button or presses the space key',\n target: '#audioPlayer.VISIBLE.AUDIO_PLAYER_INITIATED.PLAYING.ACTIVE',\n },\n SEEKING: {\n description:\n 'When the mouse or keyboard keys are clicked to jump forward/backward 5 or 10 seconds or when the user wants to navigate to a specific time.',\n target: 'LOADING',\n },\n WAITING: {\n description: 'Waiting for the buffer to be filled',\n target: 'LOADING',\n },\n PLAY: {\n description: 'Play the audio again',\n target: '#audioPlayer.VISIBLE.AUDIO_PLAYER_INITIATED.PLAYING.ACTIVE',\n },\n END: [\n {\n cond: 'isAudioAlmostEnded',\n actions: 'forwardEndedToRadioMachine',\n description: 'Current file ended playing',\n target: '#audioPlayer.VISIBLE.AUDIO_PLAYER_INITIATED.ENDED',\n },\n {\n /**\n * This is a hack for safari.\n * In safari. The audio goes to ended state once the there's not enough data to play the audio.\n */\n actions: 'continueFromLastTimestamp',\n target: '#audioPlayer.VISIBLE.AUDIO_PLAYER_INITIATED.PLAYING.LOADING',\n },\n ],\n },\n },\n LOADING: {\n description: 'Audio data is being fetched',\n tags: 'loading',\n on: {\n NEXT_AYAH: [\n {\n actions: 'repeatNextAyah',\n cond: 'canRepeatNextAyah',\n },\n {\n actions: ['incrementAyah', 'setAudioPlayerCurrentTime'],\n description:\n \"User clicks the next ayah button and it's not the last ayah of the surah already\",\n cond: 'isNotLastVerse',\n },\n ],\n PREV_AYAH: [\n {\n actions: 'repeatPreviousAyah',\n cond: 'canRepeatPrevAyah',\n },\n {\n actions: ['decrementAyah', 'setAudioPlayerCurrentTime'],\n description:\n \"User clicks the previous ayah button and it's not the first ayah of the surah already\",\n cond: 'isNotFirstVerse',\n },\n ],\n FAIL: {\n description: 'The audio file failed to load',\n target: '#audioPlayer.VISIBLE.FAILED',\n },\n CAN_PLAY: {\n target: 'ACTIVE',\n },\n SEEKED: {\n target: 'ACTIVE',\n },\n END: {\n actions: 'forwardEndedToRadioMachine',\n description: 'Current file ended playing',\n target: '#audioPlayer.VISIBLE.AUDIO_PLAYER_INITIATED.ENDED',\n },\n },\n },\n },\n },\n DELAYING: {\n after: {\n VERSE_DELAY: {\n target: '#audioPlayer.VISIBLE.AUDIO_PLAYER_INITIATED.PLAYING.ACTIVE',\n },\n },\n on: {\n TOGGLE: {\n target: '#audioPlayer.VISIBLE.AUDIO_PLAYER_INITIATED.PLAYING.ACTIVE',\n },\n NEXT_AYAH: [\n {\n actions: 'repeatNextAyah',\n cond: 'canRepeatNextAyah',\n target: '#audioPlayer.VISIBLE.AUDIO_PLAYER_INITIATED.PLAYING.ACTIVE',\n },\n {\n actions: ['incrementAyah', 'setAudioPlayerCurrentTime'],\n description:\n \"User clicks the next ayah button and it's not the last ayah of the surah already\",\n cond: 'isNotLastVerse',\n },\n ],\n PREV_AYAH: [\n {\n actions: 'repeatPreviousAyah',\n cond: 'canRepeatPrevAyah',\n target: '#audioPlayer.VISIBLE.AUDIO_PLAYER_INITIATED.PLAYING.ACTIVE',\n },\n {\n actions: ['decrementAyah', 'setAudioPlayerCurrentTime'],\n description:\n \"User clicks the previous ayah button and it's not the first ayah of the surah already\",\n cond: 'isNotFirstVerse',\n },\n ],\n },\n },\n PLAYING: {\n invoke: {\n id: 'playAudio',\n src: 'playAudio',\n onError: {\n target: '#audioPlayer.VISIBLE.AUDIO_PLAYER_INITIATED.PAUSED.ACTIVE',\n },\n },\n description: 'The audio player is playing the audio',\n initial: 'ACTIVE',\n on: {\n PLAY_AYAH: [\n {\n actions: ['setSurahAndAyahNumbers', 'exitRadio', 'stopRepeatActor'],\n description: 'When the user chooses to play an Ayah of another Surah',\n cond: 'isDifferentSurahAndReciter',\n target: '#audioPlayer.VISIBLE.LOADING_CUSTOM_RECITER_DATA',\n },\n {\n actions: ['setSurahAndAyahNumbers', 'exitRadio', 'stopRepeatActor'],\n description: 'When the user chooses to play an Ayah of another Surah',\n cond: 'isDifferentSurah',\n target: '#audioPlayer.VISIBLE.LOADING_RECITER_DATA',\n },\n {\n actions: ['setSurahAndAyahNumbers', 'setAudioPlayerCurrentTime'],\n },\n ],\n CHANGE_RECITER: [\n {\n actions: ['pauseAudio', 'setReciterId', 'resetElapsedTime'],\n description:\n 'User changes the reciter while the audio player is visible and might be playing',\n target: '#audioPlayer.VISIBLE.LOADING_RECITER_DATA',\n },\n ],\n },\n states: {\n ACTIVE: {\n on: {\n TOGGLE: {\n actions: ['setElapsedTime', 'pauseAudio'],\n description:\n 'User either clicks on the pause button or presses the space key',\n target: '#audioPlayer.VISIBLE.AUDIO_PLAYER_INITIATED.PAUSED.ACTIVE',\n },\n REPEAT_AYAH: {\n actions: [\n assign({\n ayahNumber: (context, event: any) => event.ayahNumber,\n verseDelay: (context, event: any) => event.verseDelay,\n }),\n 'pauseAudio',\n 'setAudioPlayerCurrentTime',\n ],\n description: 'Repeat the current ayah',\n target: '#audioPlayer.VISIBLE.AUDIO_PLAYER_INITIATED.DELAYING',\n },\n SEEKING: {\n description:\n 'When the mouse or keyboard keys are clicked to jump forward/backward 5 or 10 seconds or when the user wants to navigate to a specific time.',\n target: 'LOADING',\n },\n WAITING: {\n description: 'Waiting for the buffer to be filled',\n target: 'LOADING',\n },\n END: {\n actions: 'forwardEndedToRadioMachine',\n description: 'The audio finished played',\n target: '#audioPlayer.VISIBLE.AUDIO_PLAYER_INITIATED.ENDED',\n },\n\n UPDATE_TIMING: {\n actions: 'updateTiming',\n description: 'Update the elapsed time ',\n },\n PAUSE: {\n description: 'Pause the audio',\n target: '#audioPlayer.VISIBLE.AUDIO_PLAYER_INITIATED.PAUSED.ACTIVE',\n },\n },\n },\n LOADING: {\n description: 'Audio data is being fetched',\n tags: 'loading',\n on: {\n NEXT_AYAH: [\n {\n actions: 'repeatNextAyah',\n cond: 'canRepeatNextAyah',\n },\n {\n actions: ['incrementAyah', 'setAudioPlayerCurrentTime'],\n description:\n \"User clicks the next ayah button and it's not the last ayah of the surah already\",\n cond: 'isNotLastVerse',\n },\n ],\n PREV_AYAH: [\n {\n actions: 'repeatPreviousAyah',\n cond: 'canRepeatPrevAyah',\n },\n {\n actions: ['decrementAyah', 'setAudioPlayerCurrentTime'],\n description:\n \"User clicks the previous ayah button and it's not the first ayah of the surah already\",\n cond: 'isNotFirstVerse',\n },\n ],\n FAIL: {\n description: 'The audio file failed to load',\n target: '#audioPlayer.VISIBLE.FAILED',\n },\n CAN_PLAY: {\n target: 'ACTIVE',\n },\n PAUSE: {\n description: 'Pause the audio',\n target: '#audioPlayer.VISIBLE.AUDIO_PLAYER_INITIATED.PAUSED.ACTIVE',\n },\n SEEKED: {\n target: 'ACTIVE',\n },\n },\n },\n },\n },\n HISTORY: {\n history: 'shallow',\n type: 'history',\n },\n ENDED: {\n on: {\n SEEKING: {\n description:\n 'When the mouse or keyboard keys are clicked to jump forward/backward 5 or 10 seconds or when the user wants to navigate to a specific time.',\n target: 'PAUSED',\n },\n PLAY: {\n description: 'Play the audio again',\n target: 'PLAYING',\n },\n PLAY_AYAH: [\n {\n actions: ['setSurahAndAyahNumbers', 'exitRadio', 'stopRepeatActor'],\n description: 'When the user chooses to play an Ayah of another Surah',\n cond: 'isDifferentSurahAndReciter',\n target: '#audioPlayer.VISIBLE.LOADING_CUSTOM_RECITER_DATA',\n },\n {\n actions: ['setSurahAndAyahNumbers', 'exitRadio', 'stopRepeatActor'],\n description: 'When the user chooses to play an Ayah of another Surah',\n cond: 'isDifferentSurah',\n target: '#audioPlayer.VISIBLE.LOADING_RECITER_DATA',\n },\n {\n actions: [\n 'setAyahNumber',\n 'setAudioPlayerCurrentTime',\n 'exitRadio',\n 'updateRepeatAyah',\n ],\n description:\n 'When the user chooses to play an Ayah of the same Surah. (can be the same Ayah being recited)',\n cond: 'isSameSurahAndReciter',\n target: 'PLAYING',\n },\n ],\n PLAY_SURAH: [\n {\n actions: ['setSurahAndResetAyahNumber', 'exitRadio', 'stopRepeatActor'],\n cond: 'isUsingCustomReciterId',\n target: '#audioPlayer.VISIBLE.LOADING_CUSTOM_RECITER_DATA',\n },\n {\n actions: ['setSurahAndResetAyahNumber', 'exitRadio', 'stopRepeatActor'],\n description: 'When the user chooses to play another Surah',\n cond: 'isDifferentSurah',\n target: '#audioPlayer.VISIBLE.LOADING_RECITER_DATA',\n },\n {\n actions: ['exitRadio'],\n description:\n 'When the user chooses to play an Ayah of the same Surah. (can be the same Ayah being recited)',\n cond: 'isSameSurahAndReciter',\n target: 'PLAYING',\n },\n ],\n TOGGLE: {\n description: 'User clicks on the play button or presses the space key',\n target: 'PLAYING',\n },\n PLAY_RADIO_TRACK: {\n actions: 'setRadioStationDetails',\n description: 'User opens the audio player to play radio of a certain station',\n target: '#audioPlayer.VISIBLE.LOADING_RECITER_DATA',\n },\n },\n },\n },\n on: {\n PROGRESS: {\n actions: 'updateDownloadProgress',\n },\n REPEAT_FINISHED: {\n actions: ['stopRepeatActor', 'pauseAudio'],\n target: '.PAUSED.ACTIVE',\n },\n NEXT_AYAH: [\n {\n actions: 'repeatNextAyah',\n cond: 'canRepeatNextAyah',\n },\n {\n actions: ['incrementAyah', 'setAudioPlayerCurrentTime'],\n description:\n \"User clicks the next ayah button and it's not the last ayah of the surah already\",\n cond: 'isNotLastVerse',\n },\n ],\n NEXT_AUDIO_TRACK: {\n actions: 'nextAudioTrack',\n },\n SEEK_TO: [\n {\n cond: 'isRepeatActive',\n actions: 'seekToAndRepeat',\n },\n {\n actions: 'seekTo',\n },\n ],\n PREV_AYAH: [\n {\n actions: 'repeatPreviousAyah',\n cond: 'canRepeatPrevAyah',\n },\n {\n actions: ['decrementAyah', 'setAudioPlayerCurrentTime'],\n description:\n \"User clicks the previous ayah button and it's not the first ayah of the surah already\",\n cond: 'isNotFirstVerse',\n },\n ],\n },\n },\n FAILED: {\n description:\n 'Either the audio file failed to load or the API to fetch the reciter + Surah data failed',\n after: {\n 500: {\n target: '#audioPlayer.HIDDEN',\n },\n },\n },\n LOADING_RECITER_DATA: {\n description: 'The reciter + Surah data are being fetched',\n invoke: {\n src: 'fetchReciter',\n id: 'fetchReciter',\n onDone: [\n {\n actions: [\n 'setAudioData',\n 'setAudioPlayerSource',\n 'setAudioPlayerCurrentTime',\n 'updateRepeatVerseTimings',\n ],\n description: 'The API call to get the selected chapter + Surah succeeded',\n target: '#audioPlayer.VISIBLE.AUDIO_PLAYER_INITIATED.PLAYING.LOADING',\n },\n ],\n onError: [\n {\n description: 'The API call to get the selected chapter + Surah failed',\n target: 'FAILED',\n },\n ],\n },\n tags: 'loading',\n },\n LOADING_RECITER_DATA_AND_PAUSE: {\n description: 'The reciter + Surah data are being fetched',\n invoke: {\n src: 'fetchReciter',\n id: 'fetchReciter',\n onDone: [\n {\n actions: [\n 'setAudioData',\n 'setAudioPlayerSource',\n 'setAudioPlayerCurrentTime',\n 'updateRepeatVerseTimings',\n ],\n description: 'The API call to get the selected chapter + Surah succeeded',\n target: '#audioPlayer.VISIBLE.AUDIO_PLAYER_INITIATED.PAUSED.LOADING',\n },\n ],\n onError: [\n {\n description: 'The API call to get the selected chapter + Surah failed',\n target: 'FAILED',\n },\n ],\n },\n tags: 'loading',\n },\n LOADING_CUSTOM_RECITER_DATA: {\n description: 'The reciter + Surah data are being fetched',\n invoke: {\n src: 'fetchCustomReciter',\n id: 'fetchCustomReciter',\n onDone: [\n {\n actions: [\n 'setAudioData',\n 'setAudioPlayerSource',\n 'setAudioPlayerCurrentTime',\n 'updateRepeatVerseTimings',\n ],\n description: 'The API call to get the selected chapter + Surah succeeded',\n target: '#audioPlayer.VISIBLE.AUDIO_PLAYER_INITIATED.PLAYING.LOADING',\n },\n ],\n onError: [\n {\n description: 'The API call to get the selected chapter + Surah failed',\n target: 'FAILED',\n },\n ],\n },\n tags: 'loading',\n },\n LOADING_REPEAT_DATA: {\n invoke: {\n src: 'fetchRepeatData',\n id: 'fetchRepeatData',\n onDone: [\n {\n actions: [\n 'setAudioData',\n 'setAudioPlayerSource',\n 'setAudioPlayerCurrentTime',\n assign({\n surah: (context, event: any) => event.data.surah,\n ayahNumber: (context, event: any) => event.data.from,\n repeatActor: (context: any, event) => {\n return spawn(\n createRepeatMachine({\n fromVerseNumber: event.data.from,\n toVerseNumber: event.data.to,\n totalRangeCycle: event.data.repeatRange,\n totalVerseCycle: event.data.repeatEachVerse,\n verseTimings: context.audioData.verseTimings,\n delayMultiplier: event.data.delayMultiplier,\n }),\n ) as any;\n },\n }),\n ],\n description: 'The API call to get the selected chapter + Surah succeeded',\n target: '#audioPlayer.VISIBLE.AUDIO_PLAYER_INITIATED.PLAYING.LOADING',\n },\n ],\n onError: [\n {\n description: 'The API call to get the selected chapter + Surah failed',\n target: 'FAILED',\n },\n ],\n },\n tags: 'loading',\n },\n },\n on: {\n CLOSE: {\n actions: ['resetElapsedTime', 'resetAyahNumber', 'pauseAudio'],\n description: 'User closes the audio player',\n target: 'HIDDEN',\n },\n SET_PLAYBACK_SPEED: {\n actions: 'setPlaybackRate',\n description: 'User change the playback speed',\n },\n CHANGE_RECITER: [\n {\n cond: 'isRadioActive',\n actions: 'forwardChangeReciterToRadioMachine',\n },\n {\n actions: ['pauseAudio', 'setReciterId', 'resetElapsedTime'],\n description:\n 'User changes the reciter while the audio player is visible and might be playing',\n target: '.LOADING_RECITER_DATA_AND_PAUSE',\n },\n ],\n PLAY_RADIO_TRACK: {\n actions: 'setRadioStationDetails',\n description: 'User opens the audio player to play radio of a certain station',\n target: '.LOADING_RECITER_DATA',\n },\n PLAY_AYAH: [\n {\n description:\n 'When the user is clicking play ayah. On the currently playing ayah, resume it',\n cond: 'isSameAyah',\n target: '.AUDIO_PLAYER_INITIATED.PLAYING.ACTIVE',\n },\n {\n actions: ['setSurahAndAyahNumbers', 'exitRadio', 'stopRepeatActor'],\n description: 'When the user chooses to play an Ayah of another Surah',\n cond: 'isDifferentSurah',\n target: 'VISIBLE.LOADING_RECITER_DATA',\n },\n {\n actions: [\n 'setAyahNumber',\n 'setAudioPlayerCurrentTime',\n 'exitRadio',\n 'updateRepeatAyah',\n ],\n description:\n 'When the user chooses to play an Ayah of the same Surah. (can be the same Ayah being recited)',\n cond: 'isSameSurahAndReciter',\n target: '.AUDIO_PLAYER_INITIATED.PLAYING.LOADING',\n },\n ],\n PLAY_SURAH: [\n {\n description: 'When the users is playing the same surah. Just resume it',\n cond: 'isSameSurahAndReciter',\n target: '.AUDIO_PLAYER_INITIATED.PLAYING.ACTIVE',\n },\n {\n actions: ['setSurahAndResetAyahNumber', 'exitRadio', 'stopRepeatActor'],\n cond: 'isUsingCustomReciterId',\n target: 'VISIBLE.LOADING_CUSTOM_RECITER_DATA',\n },\n {\n actions: ['setSurahAndResetAyahNumber', 'exitRadio', 'stopRepeatActor'],\n description: 'When the user chooses to play another Surah',\n cond: 'isDifferentSurah',\n target: 'VISIBLE.LOADING_RECITER_DATA',\n },\n ],\n PLAY_RADIO: {\n actions: ['stopRepeatActor', 'forwardPlayToRadioMachine'],\n },\n CLOSE_RADIO: {\n actions: ['pauseAudio', 'exitRadio'],\n target: 'HIDDEN',\n },\n UPDATE_VOLUME: {\n actions: 'updateVolume',\n description: 'User updates the volume',\n },\n },\n },\n },\n on: {\n SET_AUDIO_REF: {\n actions: 'setAudioRef',\n },\n SET_REPEAT_SETTING: {\n actions: ['exitRadio'],\n target: '.VISIBLE.LOADING_REPEAT_DATA',\n },\n SET_INITIAL_CONTEXT: {\n actions: 'setInitialContext',\n },\n SET_RECITERS_LIST: {\n actions: 'setRecitersList',\n },\n },\n },\n {\n actions: {\n continueFromLastTimestamp: (context) => {\n /**\n * This is hack for safari where the audioplayer goes to ended, instead of waiting for the buffer data\n */\n context.audioPlayer.currentTime = context.elapsed - 0.0001;\n context.audioPlayer.play();\n },\n setRecitersList: assign({\n recitersList: (context, event) => event.recitersList,\n }),\n setInitialContext: assign({\n reciterId: (context, event) => event.reciterId,\n playbackRate: (context, event) => event.playbackRate,\n volume: (context, event) => event.volume,\n }),\n updateRepeatAyah: pure((context, event) => {\n if (context.repeatActor) {\n return send(\n { type: 'REPEAT_SELECTED_AYAH', ayahNumber: event.ayahNumber },\n { to: context.repeatActor.id },\n );\n }\n return [];\n }),\n exitRadio: pure((context) => {\n const { radioActor } = context;\n let actions = [];\n if (radioActor) {\n actions = [\n // @ts-ignore\n stop(radioActor),\n assign({\n radioActor: () => null,\n shouldPlayFromRandomTimeStamp: () => false,\n }),\n ];\n }\n return actions;\n }),\n forwardEndedToRadioMachine: pure((context) => {\n let actions = [];\n const { radioActor } = context;\n if (radioActor) {\n actions = [\n assign({\n ayahNumber: 1,\n }),\n send(\n {\n type: 'TRACK_ENDED',\n },\n {\n // @ts-ignore\n to: radioActor,\n },\n ),\n ];\n }\n return actions;\n }),\n setRadioStationDetails: assign({\n shouldPlayFromRandomTimeStamp: (context, event: any) =>\n event.shouldPlayFromRandomTimeStamp,\n reciterId: (context, event: any) => event.reciterId,\n surah: (context, event: any) => event.surah,\n }),\n decrementAyah: assign({\n ayahNumber: (context) => context.ayahNumber - 1,\n }),\n incrementAyah: assign({\n ayahNumber: (context) => context.ayahNumber + 1,\n }),\n setSurahAndResetAyahNumber: assign({\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n surah: (context, event) => event.surah,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ayahNumber: (context) => 1,\n }),\n setAyahNumber: assign({\n ayahNumber: (context, event) => event.ayahNumber,\n }),\n setSurahAndAyahNumbers: assign({\n surah: (context, event) => event.surah,\n ayahNumber: (context, event) => event.ayahNumber,\n }),\n setAudioRef: assign({\n audioPlayer: (context, event) => event.audioPlayerRef,\n }),\n setAudioData: assign({\n duration: (context, event: any) => {\n return milliSecondsToSeconds(event.data.duration);\n },\n audioData: (context, event: any) => event.data,\n surahVersesCount: (context, event: any) => event.data.verseTimings.length,\n }),\n setAudioPlayerSource: (context) => {\n const {\n audioData: { audioUrl },\n } = context;\n context.audioPlayer.src = audioUrl;\n },\n setAudioPlayerCurrentTime: (context) => {\n const {\n ayahNumber,\n audioData: { verseTimings },\n duration,\n shouldPlayFromRandomTimeStamp,\n } = context;\n if (shouldPlayFromRandomTimeStamp) {\n const randomTimestamp = random(0, duration);\n context.audioPlayer.currentTime = randomTimestamp;\n } else {\n const ayahTimestamps = verseTimings[ayahNumber - 1];\n const { timestampFrom } = ayahTimestamps;\n context.audioPlayer.currentTime = milliSecondsToSeconds(timestampFrom);\n }\n },\n resetElapsedTime: assign({\n elapsed: 0,\n }),\n updateDownloadProgress: assign({\n downloadProgress: (context, event) => event.timestamp,\n }),\n // @ts-ignore\n setElapsedTime: pure((context) => {\n const activeVerseTiming = getActiveVerseTiming(context);\n const ayahNumber = getActiveAyahNumber(activeVerseTiming);\n const wordLocation = getActiveWordLocation(\n activeVerseTiming,\n context.audioPlayer.currentTime * 1000,\n );\n return assign({\n elapsed: context.audioPlayer.currentTime,\n ayahNumber,\n wordLocation,\n });\n }),\n setReciterId: assign({\n reciterId: (context, event) => event.reciterId,\n }),\n resetAyahNumber: assign({\n ayahNumber: 1,\n }),\n pauseAudio: (context) => {\n context.audioPlayer.pause();\n },\n setPlaybackRate: pure((context: AudioPlayerContext, event) => {\n const { playbackRate } = event;\n // eslint-disable-next-line no-param-reassign\n context.audioPlayer.playbackRate = playbackRate;\n return assign({\n playbackRate,\n });\n }),\n updateTiming: pure((context) => {\n const actions = [];\n actions.push('setElapsedTime');\n if (context.repeatActor) {\n actions.push(\n send(\n {\n type: 'TIMESTAMP_UPDATED',\n timestamp: context.audioPlayer.currentTime * 1000,\n },\n { to: context.repeatActor.id },\n ),\n );\n }\n return actions;\n }),\n forwardPlayToRadioMachine: pure((context, event) => {\n const actions = [];\n let { radioActor } = context;\n // if the radioActor doesn't exist, spawn a new one\n if (!radioActor) {\n radioActor = spawn(createRadioMachine());\n actions.push(assign({ radioActor }));\n }\n actions.push(\n send(\n {\n type: 'PLAY_STATION',\n stationType: event.stationType,\n id: event.stationId,\n },\n {\n to: radioActor.id,\n },\n ),\n );\n return actions;\n }),\n forwardChangeReciterToRadioMachine: pure((context, event) => {\n const actions = [];\n let { radioActor } = context;\n // if the radioActor doesn't exist, spawn a new one\n if (!radioActor) {\n radioActor = spawn(createRadioMachine());\n actions.push(assign({ radioActor }));\n }\n actions.push(\n send(\n {\n type: 'PLAY_STATION',\n stationType: StationType.Reciter,\n id: event.reciterId,\n },\n {\n to: radioActor.id,\n },\n ),\n );\n return actions;\n }),\n stopRepeatActor: pure((context: any) => {\n if (context.repeatActor) {\n return [\n stop(context.repeatActor.id),\n assign({\n repeatActor: null,\n }),\n ];\n }\n return [];\n }),\n // @ts-ignore\n repeatNextAyah: pure((context) => [\n send({ type: 'REPEAT_NEXT_AYAH' }, { to: context.repeatActor.id }),\n 'incrementAyah',\n 'setAudioPlayerCurrentTime',\n ]),\n // @ts-ignore\n repeatPreviousAyah: pure((context) => {\n if (context.repeatActor) {\n return [\n send({ type: 'REPEAT_PREV_AYAH' }, { to: context.repeatActor.id }),\n 'decrementAyah',\n 'setAudioPlayerCurrentTime',\n ];\n }\n return [];\n }),\n updateRepeatVerseTimings: pure((context) => {\n const actions = [];\n if (context.repeatActor) {\n actions.push(\n send(\n {\n type: 'UPDATE_VERSE_TIMINGS',\n verseTimings: context.audioData.verseTimings,\n },\n { to: context.repeatActor.id },\n ),\n );\n }\n return actions;\n }),\n nextAudioTrack: pure((context) => {\n if (context.radioActor) {\n return send({ type: 'TRACK_ENDED' }, { to: context.radioActor.id });\n }\n return [];\n }),\n seekTo: pure((context, event) => {\n // eslint-disable-next-line no-param-reassign\n context.audioPlayer.currentTime = event.timestamp;\n return assign({\n elapsed: event.timestamp,\n });\n }),\n seekToAndRepeat: pure((context, event) => {\n const actions = [];\n\n const ayahNumber = getAyahNumberByTimestamp(\n context.audioData.verseTimings,\n secondsToMilliSeconds(event.timestamp),\n );\n if (context.repeatActor) {\n actions.push(\n send({ type: 'REPEAT_SELECTED_AYAH', ayahNumber }, { to: context.repeatActor.id }),\n );\n }\n\n actions.push('seekTo');\n\n return actions;\n }),\n updateVolume: pure((context, { volume }) => {\n context.audioPlayer.volume = volume;\n return assign({ volume });\n }),\n },\n guards: {\n isRadioActive: (context) => !!context.radioActor,\n isNotLastVerse: (context) => context.ayahNumber < context.surahVersesCount,\n isNotFirstVerse: (context) => context.ayahNumber !== 1,\n canRepeatPrevAyah: (context) => context.ayahNumber !== 1 && !!context.repeatActor,\n canRepeatNextAyah: (context) =>\n context.ayahNumber < context.surahVersesCount && !!context.repeatActor,\n isDifferentSurah: (context, event) => context.surah !== event.surah,\n isDifferentSurahAndReciter: (context, event) => {\n const reciterId = event.reciterId || context.reciterId;\n return context.surah !== event.surah && reciterId !== context.audioData?.reciterId;\n },\n isSameAyah: (context, event) =>\n context.ayahNumber === event.ayahNumber && context.surah === event.surah,\n isSameSurahAndReciter: (context, event) => {\n // @ts-ignore\n const reciterId = event.reciterId || context.reciterId;\n return context.surah === event.surah && reciterId === context.audioData?.reciterId;\n },\n isRepeatActive: (context) => !!context.repeatActor,\n isUsingCustomReciterId: (context, event) => !!event.reciterId,\n isAudioAlmostEnded: (context) => {\n const { currentTime } = context.audioPlayer;\n const duration = milliSecondsToSeconds(context.audioData.duration);\n const durationWithTolerancePeriod = duration - 3;\n\n return currentTime > durationWithTolerancePeriod;\n },\n },\n services: {\n playAudio: (context) => {\n context.audioPlayer.playbackRate = context.playbackRate;\n context.audioPlayer.volume = context.volume;\n return context.audioPlayer.play();\n },\n fetchReciter: (context) => executeFetchReciter(context),\n fetchCustomReciter: (context, event) => {\n // @ts-ignore\n return executeFetchReciter({ surah: event.surah, reciterId: event.reciterId });\n },\n fetchRepeatData: (context, event) => executeFetchReciterFromEvent(context, event),\n // eslint-disable-next-line react-func/max-lines-per-function\n initMediaSession: (context) => (callback) => {\n if ('mediaSession' in navigator) {\n getRecitersList(context).then((recitersList) => {\n callback({ type: 'SET_RECITERS_LIST', recitersList });\n getMediaSessionMetaData(context, recitersList).then((metaData) => {\n navigator.mediaSession.metadata = metaData;\n });\n });\n }\n\n const actionHandlers = [\n ['play', () => callback('TOGGLE')],\n ['pause', () => callback('TOGGLE')],\n [\n 'previoustrack',\n () => {\n if (context.radioActor) {\n callback('NEXT_AUDIO_TRACK');\n }\n callback('PREV_AYAH');\n },\n ],\n [\n 'nexttrack',\n () => {\n if (context.radioActor) {\n callback('NEXT_AUDIO_TRACK');\n }\n callback('NEXT_AYAH');\n },\n ],\n [\n 'stop',\n () => {\n callback('END');\n },\n ],\n ];\n\n for (const [action, handler] of actionHandlers) {\n try {\n navigator.mediaSession.setActionHandler(\n action as MediaSessionAction,\n handler as MediaSessionActionHandler,\n );\n } catch (error) {\n // eslint-disable-next-line no-console\n console.log(`The media session action \"${action}\" is not supported yet.`);\n }\n }\n },\n },\n delays: {\n VERSE_DELAY: (context) => {\n return context.verseDelay;\n },\n },\n },\n );\n","/**\n * check if currentTime is within range timestampFrom and timestampTo\n *\n * example:\n * - timestampFrom = 10, timestampTo = 20, currentTime = 10 should return true\n * - timestampFrom = 10, timestampTo = 20, currentTime = 11 should return true\n * - timestampFrom = 10, timestampTo = 20, currentTime = 20 should return false\n *\n * @param {number} currentTime\n * @param {number} timestampFrom\n * @param {number} timestampTo\n * @returns {boolean} isWithinRange\n */\nconst isCurrentTimeInRange = (currentTime: number, timestampFrom: number, timestampTo: number) =>\n currentTime >= timestampFrom && currentTime < timestampTo;\n\nexport default isCurrentTimeInRange;\n","import AudioPlayerContext from './types/AudioPlayerContext';\n\nimport isCurrentTimeInRange from '@/components/AudioPlayer/hooks/isCurrentTimeInRange';\nimport { getVerseNumberFromKey } from '@/utils/verse';\nimport { getAvailableReciters, getChapterAudioData } from 'src/api';\nimport AudioData from 'types/AudioData';\nimport Reciter from 'types/Reciter';\nimport VerseTiming from 'types/VerseTiming';\nimport Word from 'types/Word';\n\nexport const getAyahNumberByTimestamp = (verseTimings: VerseTiming[], timestamp: number) => {\n const verseTiming = verseTimings.find(\n (timing) => timestamp >= timing.timestampFrom && timestamp <= timing.timestampTo,\n );\n if (!verseTiming) return null;\n return getVerseNumberFromKey(verseTiming.verseKey);\n};\n\n/**\n * There's an issue on mobile safari. Where the audio doesn't start from the correct timestamp.\n * For example\n * verse 1: timestamp : 0 - 1000ms;\n * verse 2: timestamp: 1000ms - 2000ms;\n *\n * When we seek to verse timestamp 1000ms, safari reports that the timestamp is 850ms.\n * And the UI highlights verse 1. Which is incorrect. Since the user intended to play verse 2 (timestamp 1000)\n *\n */\nconst TOLERANCE_PERIOD = 200; // ms\n\nexport const getActiveVerseTiming = (context) => {\n const {\n audioData: { verseTimings },\n ayahNumber,\n } = context;\n const { currentTime } = context.audioPlayer;\n const currentTimeMS = currentTime * 1000;\n const lastAyahOfSurahTimestampTo = verseTimings[verseTimings.length - 1].timestampTo;\n\n // if the reported time exceeded the maximum timestamp of the Surah from BE, just return the current Ayah which should be the last\n if (currentTimeMS > lastAyahOfSurahTimestampTo - TOLERANCE_PERIOD) {\n return verseTimings[ayahNumber - 1];\n }\n\n const activeVerseTiming = verseTimings.find((ayah) => {\n const isAyahBeingRecited = isCurrentTimeInRange(\n currentTimeMS,\n ayah.timestampFrom - TOLERANCE_PERIOD,\n ayah.timestampTo - TOLERANCE_PERIOD,\n );\n return isAyahBeingRecited;\n });\n\n return activeVerseTiming;\n};\n\nexport const getActiveWordLocation = (activeVerseTiming: VerseTiming, currentTime: number) => {\n const activeAudioSegment = activeVerseTiming.segments.find((segment) => {\n const [, timestampFrom, timestampTo] = segment; // the structure of the segment is: [wordLocation, timestampFrom, timestampTo]\n return isCurrentTimeInRange(currentTime, timestampFrom, timestampTo);\n });\n\n const wordLocation = activeAudioSegment ? activeAudioSegment[0] : 0;\n return wordLocation;\n};\n\nconst getTimingSegment = (verseTiming: VerseTiming, wordPosition: number) =>\n verseTiming.segments.find(([location]) => wordPosition === location);\n\nexport const getWordTimeSegment = (verseTimings: VerseTiming[], word: Word) => {\n const verseTiming = verseTimings.find((timing) => timing.verseKey === word.verseKey);\n if (!verseTiming) return null;\n const segment = getTimingSegment(verseTiming, word.position);\n if (segment) return [segment[1], segment[2]];\n return null;\n};\n\nexport const getActiveAyahNumber = (activeVerseTiming?: VerseTiming) => {\n const [, verseNumber] = activeVerseTiming.verseKey.split(':');\n return Number(verseNumber);\n};\n\nexport const executeFetchReciter = async (context: AudioPlayerContext): Promise<AudioData> => {\n const { reciterId, surah } = context;\n return getChapterAudioData(reciterId, surah, true);\n};\n\nexport const executeFetchReciterFromEvent = async (\n context: AudioPlayerContext,\n event,\n): Promise<AudioData> => {\n const { surah } = event;\n const { reciterId } = context;\n // @ts-ignore\n const data = await executeFetchReciter({ reciterId, surah });\n return {\n ...data,\n ...event,\n };\n};\n\nexport const getMediaSessionMetaData = async (\n context: AudioPlayerContext,\n recitersList: Reciter[],\n) => {\n const reciterName = recitersList.find(\n (reciter) => reciter.id === context.audioData.reciterId,\n ).name;\n return new MediaMetadata({\n title: `Surah ${context.audioData.chapterId}`,\n artist: reciterName,\n album: 'Quran.com',\n artwork: [\n {\n src: 'https://quran.com/images/logo/Logo@192x192.png',\n type: 'image/png',\n sizes: '192x192',\n },\n ],\n });\n};\n\nexport const getRecitersList = async (context: AudioPlayerContext) => {\n const { recitersList } = context;\n if (recitersList) return recitersList;\n // TODO: localize this\n return getAvailableReciters('en').then((res) => res.reciters);\n};\n","const AUDIO_PLAYER_LOCAL_STORAGE_KEY = 'audio-player-state';\nexport const persistXstateToLocalStorage = (newState: Record<string, any>) => {\n try {\n const previousState = JSON.parse(localStorage.getItem(AUDIO_PLAYER_LOCAL_STORAGE_KEY)) || {};\n const nextState = { ...previousState, ...newState };\n localStorage.setItem(AUDIO_PLAYER_LOCAL_STORAGE_KEY, JSON.stringify(nextState));\n } catch (error) {\n // TODO: log error\n }\n};\n\nexport const getXstateStateFromLocalStorage = () => {\n try {\n const stateString = localStorage.getItem(AUDIO_PLAYER_LOCAL_STORAGE_KEY);\n if (stateString) {\n return JSON.parse(stateString) || {};\n }\n return {};\n } catch (e) {\n // TODO: log error\n return {};\n }\n};\n"],"names":["range","sample","QURAN_CHAPTERS_COUNT","popularRecitersId","generatePopularRecitersAudioTracks","map","reciter","chapter","surah","toString","reciterId","flat","JUZ_AMMA_FIRST_CHAPTER","generateJuzAmmaAudioTracks","generateSurahAlKahfAudioTracks","curatedStations","title","description","bannerImgSrc","audioTracks","getRandomCuratedStationId","Object","keys","StationType","Curated","Reciter","createContext","useInterpret","useTranslation","audioPlayerMachine","getXstateStateFromLocalStorage","persistXstateToLocalStorage","ToastStatus","useToast","DEFAULT_RECITER","AudioPlayerMachineContext","LOCAL_STORAGE_PERSISTENCE_EVENT_TRIGGER","AudioPlayerMachineProvider","children","toast","t","initialXstateContext","defaultLocaleContext","id","audioPlayerService","context","initialState","state","playbackRate","volume","matches","status","Error","includes","event","type","Provider","value","random","assign","createMachine","sendParent","createRadioMachine","tsTypes","schema","events","initial","states","on","PLAY_STATION","actions","TRACK_ENDED","setStation","stationType","generateNextAudioTrack","randomAudioTrack","station","shouldPlayFromRandomTimeStamp","Number","generateRadioAudioTrack","pure","createVerseCycleMachine","timestampFrom","timestampTo","totalVerseCycle","currentVerseCycle","inProgress","UPDATE_VERSE_TIMING","TIMESTAMP_UPDATED","cond","target","verseEnded","always","finished","entry","guards","timestamp","verseRepeatOnProgress","updateVerseTiming","sendVerseRepeatFinished","repeatSameAyah","spawn","forwardTo","stop","send","createRangeCycleMachine","totalRangeCycle","verseTimings","fromVerseNumber","toVerseNumber","verseCycleActor","currentRangeCycle","currentVerseNumber","UPDATE_VERSE_TIMINGS","REPEAT_SAME_AYAH","REPEAT_NEXT_AYAH","REPEAT_PREV_AYAH","REPEAT_SELECTED_AYAH","VERSE_REPEAT_FINISHED","rangeEnded","rangeCycleOnProgress","rangeCycleFinished","repeatSelectedAyah","ayahNumber","selectedVerseTiming","updateVerseTimings","curentVerseTiming","to","repeatNextAyah","currentIndex","nextVerseTiming","nextVerseNumber","repeatPreviousAyah","prevVerseTiming","prevVerseNumber","spawnNextAyahActor","currentVerseTiming","previousVerseDuration","Math","abs","duration","verseNumber","verseDuration","forwardtimestampToVerseActor","verseTiming","repeatCycle","sendRangeRepeatFinished","spawnVerseCycleActor","createRepeatMachine","delayMultiplier","repeatSettings","rangeCycleActor","REPEAT_AYAH","RANGE_REPEAT_FINISHED","selectedAyahIsNotInRange","sendRepeatFinished","repeatAyah","verseDelay","forwardToRangeCycleActor","spawnRangeCycleActor","getActiveAyahNumber","getActiveVerseTiming","getActiveWordLocation","executeFetchReciter","executeFetchReciterFromEvent","getRecitersList","getMediaSessionMetaData","getAyahNumberByTimestamp","milliSecondsToSeconds","secondsToMilliSeconds","audioPlayer","elapsed","downloadProgress","audioData","undefined","surahVersesCount","repeatActor","radioActor","services","HIDDEN","PLAY_RADIO","CLOSE_RADIO","PLAY_RADIO_TRACK","PLAY_AYAH","PLAY_SURAH","SET_PLAYBACK_SPEED","CHANGE_RECITER","VISIBLE","AUDIO_PLAYER_INITIATED","invoke","src","PAUSED","ACTIVE","TOGGLE","SEEKING","WAITING","PLAY","END","LOADING","tags","NEXT_AYAH","PREV_AYAH","FAIL","CAN_PLAY","SEEKED","DELAYING","after","VERSE_DELAY","PLAYING","onError","UPDATE_TIMING","PAUSE","HISTORY","history","ENDED","PROGRESS","REPEAT_FINISHED","NEXT_AUDIO_TRACK","SEEK_TO","FAILED","LOADING_RECITER_DATA","onDone","LOADING_RECITER_DATA_AND_PAUSE","LOADING_CUSTOM_RECITER_DATA","LOADING_REPEAT_DATA","data","from","repeatRange","repeatEachVerse","CLOSE","UPDATE_VOLUME","SET_AUDIO_REF","SET_REPEAT_SETTING","SET_INITIAL_CONTEXT","SET_RECITERS_LIST","continueFromLastTimestamp","currentTime","play","setRecitersList","recitersList","setInitialContext","updateRepeatAyah","exitRadio","forwardEndedToRadioMachine","setRadioStationDetails","decrementAyah","incrementAyah","setSurahAndResetAyahNumber","setAyahNumber","setSurahAndAyahNumbers","setAudioRef","audioPlayerRef","setAudioData","length","setAudioPlayerSource","audioUrl","setAudioPlayerCurrentTime","randomTimestamp","ayahTimestamps","resetElapsedTime","updateDownloadProgress","setElapsedTime","activeVerseTiming","wordLocation","setReciterId","resetAyahNumber","pauseAudio","pause","setPlaybackRate","updateTiming","push","forwardPlayToRadioMachine","stationId","forwardChangeReciterToRadioMachine","stopRepeatActor","updateRepeatVerseTimings","nextAudioTrack","seekTo","seekToAndRepeat","updateVolume","isRadioActive","isNotLastVerse","isNotFirstVerse","canRepeatPrevAyah","canRepeatNextAyah","isDifferentSurah","isDifferentSurahAndReciter","isSameAyah","isSameSurahAndReciter","isRepeatActive","isUsingCustomReciterId","isAudioAlmostEnded","durationWithTolerancePeriod","playAudio","fetchReciter","fetchCustomReciter","fetchRepeatData","initMediaSession","callback","navigator","then","metaData","mediaSession","metadata","actionHandlers","action","handler","setActionHandler","error","console","log","delays","isCurrentTimeInRange","getVerseNumberFromKey","getAvailableReciters","getChapterAudioData","find","timing","verseKey","TOLERANCE_PERIOD","currentTimeMS","lastAyahOfSurahTimestampTo","ayah","isAyahBeingRecited","activeAudioSegment","segments","segment","getTimingSegment","wordPosition","location","getWordTimeSegment","word","position","split","reciterName","name","MediaMetadata","chapterId","artist","album","artwork","sizes","res","reciters","AUDIO_PLAYER_LOCAL_STORAGE_KEY","newState","previousState","JSON","parse","localStorage","getItem","nextState","setItem","stringify","stateString","e"],"sourceRoot":""}