/** * Возможности проигрывателя диктанта */ interface IDictScriptAudioPlayerCan { /** * Можно включать проигрывание */ play: boolean; /** * Можно останавливать проигрывание */ pause: boolean; /** * Можно проигрывать предыдущее предложение */ playPrevSentence: boolean; /** * Можно проигрывать предыдущий фрагмент */ playPrevFragment: boolean; /** * Можно проигрывать текущий фрагмент повторно */ replayFragment: boolean; /** * Можно проигрывать следующий фрагмент */ playNextFragment: boolean; /** * Можно проигрывать следующее предложение */ playNextSentence: boolean; } /** * Текущее состояние проигрывателя диктанта */ interface IDictScriptAudioPlayerState { /** * Продолжительность оставшейся диктовки */ dictationTime: number; /** * Общее количество фрагментов диктовки */ fragmentsCount: number; /** * Текущее положение в диктовке */ currentFragment: number; /** * Текущая скорость набота */ typingSpeed: number; /** * включен ли режим короткой диктовки */ shortMode: boolean; /** * Субтитры для показа */ subtitles: string; /** * Разрешённые действия с проигрывателем */ can: IDictScriptAudioPlayerCan; /** * Временные пропорции секций */ partProportions: number[]; /** * Насколько завершенно текущая секция */ currentPartDone: number; /** * Текущая секция в диктовке */ currentPart: number; /** * Какую часть в секции занимает текущий фрагмент */ currentFragmentPartPortion: number; /** * Дительность текущего фрагмента в секундах */ currentFragmentDuration: number; } /** * Проигрыватель диктанта */ interface IDictScriptAudioPlayer { /** * Устанавливает текущий фрагмент для проигрывания * @param value */ setPosition: (value: number) => void; /** * Задаёт текущую скорость набора текста пользователем * @param value */ setSpeed: (value: number) => void; /** * Задаёт (или выключает) режим короткой диктовки (short mode) * @param value */ setShortMode: (value: boolean) => void; /** * Задаёт секцию и позицию в ней * @param partIdx - предложение * @param part - позиция в секции */ setPartPosition: (partIdx: number, part: number) => void; /** * Проигрывает диктант начиная с текущей позиции */ play: () => void; /** * Приостанавливает проигрывание диктанта */ pause: () => void; /** * Проигрывает диктант с начала предыдущего предложения */ playPrevSentence: () => void; /** * Проигрывает диктант с начала предыдущего фрагмента диктовки */ playPrevFragment: () => void; /** * Проигрывает повторно текущий фрагмент диктанта */ replayCurrentFragment: () => void; /** * Проигрывает диктант с начала следующего фрагмента диктовки */ playNextFragment: () => void; /** * Проигрывает диктант с начала следующего предложения */ playNextSentence: () => void; } /** * Настройки проигрывателя диктантов */ interface ISimpleDictPlayerOptions { /** * Полный базовый путь урла для библиотеки медиафайлов этого диктанта * (каталога media с медиаресурсами диктовки размещённого на хостинге) * @example https://totaldict.ru/d23/media */ mediaLibraryUrl: string; /** * Скорость набора текста в знаках в минуту */ typingSpeed?: number; /** * Функция обработчик изменений внутреннего состояния проигрывателя. * Этот метод будет вызван при любых изменениях внутреннего * состояния проигрывателя, чтобы пользовательский интерфейс мог * отобразить эти изменения * @param state IDictScriptAudioPlayerState */ onUpdateState?: (state: IDictScriptAudioPlayerState) => void; } /** * Фабричный метод для создания проигрывателя диктанта * @param options ISimpleDictPlayerOptions настройки */ function createDictPlayer(options: ISimpleDictPlayerOptions): IDictScriptAudioPlayer;