UNPKG

koval-ui

Version:

React components collection with minimalistic design. Supports theming, layout, and input validation.

3 lines (2 loc) 925 B
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react"),k=({language:u,ref:a,onEnd:d,onPause:o,onSpeak:i})=>{const[r,l]=t.useState(),e=t.useRef();t.useEffect(()=>(e.current=window.speechSynthesis,()=>{e.current?.cancel()}),[]);const[p,c]=t.useState(!1);t.useEffect(()=>{const s=new SpeechSynthesisUtterance(a.current?.innerText);s.lang=u,s.addEventListener("end",n=>{d(n),l(s),c(!1)}),s.addEventListener("resume",n=>{i(n),c(!0)}),s.addEventListener("start",n=>{i(n),c(!0)}),s.addEventListener("pause",n=>{o(n),c(!1)}),l(s)},[u,a]);const S=t.useCallback(()=>{e.current?.paused===!0?e.current?.resume():r&&e.current?.speak(r)},[r]),f=t.useCallback(()=>{e.current?.cancel(),r&&e.current?.speak(r)},[r]),h=t.useCallback(()=>{e.current?.pause()},[]);return{speak:S,pause:h,isSpeaking:p,restart:f}};exports.useSpeechSynth=k; //# sourceMappingURL=useSpeechSynth.cjs.map