UNPKG

one

Version:

One is a React framework for web, iOS, and Android apps.

1 lines • 3.82 kB
{"version":3,"file":"index.js","names":[],"sources":["esm/platform/speech-synthesis/index.js"],"sourcesContent":["import { assertSpeakOptions, assertSpeakText } from \"./validate\";\nfunction synthesis() {\n if (typeof window === \"undefined\") return void 0;\n const candidate = window.speechSynthesis;\n return candidate && typeof candidate.speak === \"function\" ? candidate : void 0;\n}\nfunction readMaxInputLength() {\n return synthesis() ? 32767 : 0;\n}\nfunction findVoice(synth, name) {\n return synth.getVoices().find((voice) => voice.voiceURI === name || voice.name === name);\n}\nfunction toVoice(voice) {\n return {\n identifier: voice.voiceURI,\n language: voice.lang,\n name: voice.name,\n quality: \"default\"\n };\n}\nfunction speak(text, options) {\n assertSpeakText(text);\n assertSpeakOptions(options);\n const synth = synthesis();\n if (!synth) return;\n const utterance = new SpeechSynthesisUtterance(text);\n if (options?.language !== void 0) utterance.lang = options.language;\n if (options?.pitch !== void 0) utterance.pitch = options.pitch;\n if (options?.rate !== void 0) utterance.rate = options.rate;\n if (options?.volume !== void 0) utterance.volume = options.volume;\n if (options?.voice !== void 0) {\n const voice = findVoice(synth, options.voice);\n if (voice) utterance.voice = voice;\n }\n utterance.onstart = () => options?.onStart?.();\n utterance.onend = () => options?.onDone?.();\n utterance.onerror = (event) => {\n if (event.error === \"canceled\") {\n options?.onStopped?.();\n return;\n }\n options?.onError?.(new Error(`SpeechSynthesis.speak: ${event.error}`));\n };\n synth.speak(utterance);\n}\nasync function stop() {\n synthesis()?.cancel();\n}\nasync function pause() {\n synthesis()?.pause();\n}\nasync function resume() {\n synthesis()?.resume();\n}\nasync function isSpeaking() {\n const synth = synthesis();\n return synth ? synth.speaking : false;\n}\nasync function getAvailableVoices() {\n const synth = synthesis();\n if (!synth) return [];\n return synth.getVoices().map(toVoice);\n}\nconst SpeechSynthesis = Object.freeze({\n get maxInputLength() {\n return readMaxInputLength();\n },\n speak,\n stop,\n pause,\n resume,\n isSpeaking,\n getAvailableVoices\n});\nexport {\n SpeechSynthesis\n};\n//# sourceMappingURL=index.js.map\n"],"mappings":";;;AACA,SAAS,YAAY;CACnB,IAAI,OAAO,WAAW,aAAa,OAAO,KAAK;CAC/C,MAAM,YAAY,OAAO;CACzB,OAAO,aAAa,OAAO,UAAU,UAAU,aAAa,YAAY,KAAK;AAC/E;AACA,SAAS,qBAAqB;CAC5B,OAAO,UAAU,IAAI,QAAQ;AAC/B;AACA,SAAS,UAAU,OAAO,MAAM;CAC9B,OAAO,MAAM,UAAU,CAAC,CAAC,MAAM,UAAU,MAAM,aAAa,QAAQ,MAAM,SAAS,IAAI;AACzF;AACA,SAAS,QAAQ,OAAO;CACtB,OAAO;EACL,YAAY,MAAM;EAClB,UAAU,MAAM;EAChB,MAAM,MAAM;EACZ,SAAS;CACX;AACF;AACA,SAAS,MAAM,MAAM,SAAS;CAC5B,gBAAgB,IAAI;CACpB,mBAAmB,OAAO;CAC1B,MAAM,QAAQ,UAAU;CACxB,IAAI,CAAC,OAAO;CACZ,MAAM,YAAY,IAAI,yBAAyB,IAAI;CACnD,IAAI,SAAS,aAAa,KAAK,GAAG,UAAU,OAAO,QAAQ;CAC3D,IAAI,SAAS,UAAU,KAAK,GAAG,UAAU,QAAQ,QAAQ;CACzD,IAAI,SAAS,SAAS,KAAK,GAAG,UAAU,OAAO,QAAQ;CACvD,IAAI,SAAS,WAAW,KAAK,GAAG,UAAU,SAAS,QAAQ;CAC3D,IAAI,SAAS,UAAU,KAAK,GAAG;EAC7B,MAAM,QAAQ,UAAU,OAAO,QAAQ,KAAK;EAC5C,IAAI,OAAO,UAAU,QAAQ;CAC/B;CACA,UAAU,gBAAgB,SAAS,UAAU;CAC7C,UAAU,cAAc,SAAS,SAAS;CAC1C,UAAU,WAAW,UAAU;EAC7B,IAAI,MAAM,UAAU,YAAY;GAC9B,SAAS,YAAY;GACrB;EACF;EACA,SAAS,UAAU,IAAI,MAAM,0BAA0B,MAAM,OAAO,CAAC;CACvE;CACA,MAAM,MAAM,SAAS;AACvB;AACA,eAAe,OAAO;CACpB,UAAU,CAAC,EAAE,OAAO;AACtB;AACA,eAAe,QAAQ;CACrB,UAAU,CAAC,EAAE,MAAM;AACrB;AACA,eAAe,SAAS;CACtB,UAAU,CAAC,EAAE,OAAO;AACtB;AACA,eAAe,aAAa;CAC1B,MAAM,QAAQ,UAAU;CACxB,OAAO,QAAQ,MAAM,WAAW;AAClC;AACA,eAAe,qBAAqB;CAClC,MAAM,QAAQ,UAAU;CACxB,IAAI,CAAC,OAAO,OAAO,CAAC;CACpB,OAAO,MAAM,UAAU,CAAC,CAAC,IAAI,OAAO;AACtC;AACA,MAAM,kBAAkB,OAAO,OAAO;CACpC,IAAI,iBAAiB;EACnB,OAAO,mBAAmB;CAC5B;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC"}