UNPKG

react-dictate-button

Version:

A button to start dictation using Web Speech API, with an easy to understand event lifecycle.

1 lines 13.1 kB
{"version":3,"sources":["../../../node_modules/event-target-properties/src/EventTargetProperties.ts","../../mocked-speech-recognition/src/SpeechGrammarList.ts","../../mocked-speech-recognition/src/SpeechRecognition.ts","../../mocked-speech-recognition/src/SpeechRecognitionAlternative.ts","../../mocked-speech-recognition/src/SpeechRecognitionErrorEvent.ts","../../mocked-speech-recognition/src/SpeechRecognitionResultList.ts","../../mocked-speech-recognition/src/SpeechRecognitionEvent.ts","../../mocked-speech-recognition/src/SpeechRecognitionResult.ts"],"sourcesContent":["import { type TypedEventListener } from './TypedEventListener.ts';\n\nexport default class EventTargetProperties<\n Type extends string = string,\n Map extends { [type in Type]: Event } = { [type in Type]: Event }\n> {\n constructor(eventTarget: EventTarget) {\n this.#eventTarget = eventTarget;\n }\n\n #attributes: { [Key in keyof Map]?: TypedEventListener<Map[Key]> | undefined } = {};\n #defaultListeners: { [Key in keyof Map]?: TypedEventListener<Map[Key]> | undefined } = {};\n #eventTarget: EventTarget;\n\n getProperty<T extends Type>(type: T): TypedEventListener<Map[T]> | undefined {\n return this.#attributes[type];\n }\n\n setProperty<T extends Type>(type: T, eventListener: TypedEventListener<Map[T]> | null | undefined) {\n let handler: TypedEventListener<Map[T]> | undefined = this.#defaultListeners[type];\n\n if (!handler) {\n handler = event => this.#attributes[type]?.(event);\n this.#defaultListeners[type] = handler;\n }\n\n if (eventListener) {\n this.#eventTarget.addEventListener(type, handler as (event: Event) => void);\n this.#attributes[type] = eventListener;\n } else {\n this.#eventTarget.removeEventListener(type, handler as (event: Event) => void);\n delete this.#attributes[type];\n }\n }\n}\n","export default class SpeechGrammarList extends Array {\n constructor() {\n super();\n }\n\n addFromString() {}\n addFromURI() {}\n\n item(index: number) {\n return this[index];\n }\n}\n","import { EventTargetProperties } from 'event-target-properties';\nimport SpeechGrammarList from './SpeechGrammarList.ts';\n\nexport default class SpeechRecognition extends EventTarget {\n constructor() {\n super();\n\n this.#continuous = false;\n this.#eventTargetProperties = new EventTargetProperties(this);\n this.#grammars = new SpeechGrammarList();\n this.#interimResults = false;\n this.#lang = '';\n this.#maxAlternatives = 1;\n }\n\n #continuous: boolean;\n #eventTargetProperties: EventTargetProperties;\n #grammars: SpeechGrammarList;\n #interimResults: boolean;\n #lang: string;\n #maxAlternatives: number;\n\n get onaudioend() {\n return this.#eventTargetProperties.getProperty('audioend') || null;\n }\n\n set onaudioend(value) {\n this.#eventTargetProperties.setProperty('audioend', value || undefined);\n }\n\n get onaudiostart() {\n return this.#eventTargetProperties.getProperty('audiostart') || null;\n }\n\n set onaudiostart(value) {\n this.#eventTargetProperties.setProperty('audiostart', value || undefined);\n }\n\n get onend() {\n return this.#eventTargetProperties.getProperty('end') || null;\n }\n\n set onend(value) {\n this.#eventTargetProperties.setProperty('end', value || undefined);\n }\n\n get onerror() {\n return this.#eventTargetProperties.getProperty('error') || null;\n }\n\n set onerror(value) {\n this.#eventTargetProperties.setProperty('error', value || undefined);\n }\n\n get onnomatch() {\n return this.#eventTargetProperties.getProperty('nomatch') || null;\n }\n\n set onnomatch(value) {\n this.#eventTargetProperties.setProperty('nomatch', value || undefined);\n }\n\n get onresult() {\n return this.#eventTargetProperties.getProperty('result') || null;\n }\n\n set onresult(value) {\n this.#eventTargetProperties.setProperty('result', value || undefined);\n }\n\n get onsoundend() {\n return this.#eventTargetProperties.getProperty('soundend') || null;\n }\n\n set onsoundend(value) {\n this.#eventTargetProperties.setProperty('soundend', value || undefined);\n }\n\n get onsoundstart() {\n return this.#eventTargetProperties.getProperty('soundstart') || null;\n }\n\n set onsoundstart(value) {\n this.#eventTargetProperties.setProperty('soundstart', value || undefined);\n }\n\n get onspeechend() {\n return this.#eventTargetProperties.getProperty('speechend') || null;\n }\n\n set onspeechend(value) {\n this.#eventTargetProperties.setProperty('speechend', value || undefined);\n }\n\n get onspeechstart() {\n return this.#eventTargetProperties.getProperty('speechstart') || null;\n }\n\n set onspeechstart(value) {\n this.#eventTargetProperties.setProperty('speechstart', value || undefined);\n }\n\n get onstart() {\n return this.#eventTargetProperties.getProperty('start') || null;\n }\n\n set onstart(value) {\n this.#eventTargetProperties.setProperty('start', value || undefined);\n }\n\n get continuous() {\n return this.#continuous;\n }\n\n set continuous(value) {\n this.#continuous = value;\n }\n\n get grammars() {\n return this.#grammars;\n }\n\n get interimResults() {\n return this.#interimResults;\n }\n\n set interimResults(value) {\n this.#interimResults = value;\n }\n\n get lang() {\n return this.#lang;\n }\n\n set lang(value) {\n this.#lang = value;\n }\n\n get maxAlternatives() {\n return this.#maxAlternatives;\n }\n\n set maxAlternatives(value) {\n this.#maxAlternatives = value;\n }\n\n abort() {}\n start() {}\n stop() {}\n}\n","export default class SpeechRecognitionAlternative {\n constructor(confidence: number | undefined, transcript: string | undefined) {\n this.#confidence = typeof confidence === 'undefined' ? 0 : confidence;\n this.#transcript = typeof transcript === 'undefined' ? '' : transcript;\n }\n\n #confidence: number | undefined;\n #transcript: string | undefined;\n\n get confidence() {\n return this.#confidence;\n }\n\n get transcript() {\n return this.#transcript;\n }\n}\n","type SpeechRecognitionError =\n | 'aborted'\n | 'audio-capture'\n | 'bad-grammar'\n | 'language-not-supported'\n | 'network'\n | 'no-speech'\n | 'not-allowed'\n | 'service-not-allowed';\n\nexport default class SpeechRecognitionErrorEvent extends Event {\n constructor(\n type: string,\n eventInitDict: EventInit & {\n error: SpeechRecognitionError;\n message: string;\n }\n ) {\n super(type, eventInitDict);\n\n this.#error = eventInitDict.error || '';\n this.#message = eventInitDict.message || '';\n }\n\n #error: SpeechRecognitionError;\n #message: string;\n\n get error(): SpeechRecognitionError {\n return this.#error;\n }\n\n get message(): string {\n return this.#message;\n }\n}\n","import SpeechRecognitionResult from './SpeechRecognitionResult.ts';\n\nexport default class SpeechRecognitionResultList extends Array<SpeechRecognitionResult> {\n constructor(...args: SpeechRecognitionResult[]);\n constructor(arrayLength?: number);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(...args: any[]) {\n super(...args);\n }\n\n item(index: number): SpeechRecognitionResult | undefined {\n return this[index];\n }\n}\n","import SpeechRecognitionResultList from './SpeechRecognitionResultList.ts';\n\nexport default class SpeechRecognitionEvent extends Event {\n constructor(\n type: string,\n eventInitDict: EventInit & {\n resultIndex?: number | undefined;\n results?: SpeechRecognitionResultList | undefined;\n }\n ) {\n super(type, eventInitDict);\n\n this.#resultIndex = eventInitDict.resultIndex ?? 0;\n this.#results =\n 'results' in eventInitDict && eventInitDict.results ? eventInitDict.results : new SpeechRecognitionResultList();\n }\n\n #resultIndex: number;\n #results: SpeechRecognitionResultList;\n\n get resultIndex(): number {\n return this.#resultIndex;\n }\n\n get results(): SpeechRecognitionResultList {\n return this.#results;\n }\n}\n","// Supports export class and interface at the same time.\n/* eslint-disable import/export */\n\nimport SpeechRecognitionAlternative from './SpeechRecognitionAlternative.ts';\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging\nexport default interface SpeechRecognitionResult {\n fromFinalized(...items: SpeechRecognitionAlternative[]): SpeechRecognitionResult;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging\nexport default class SpeechRecognitionResult\n extends Array<SpeechRecognitionAlternative>\n implements SpeechRecognitionResult\n{\n constructor(...args: SpeechRecognitionAlternative[]);\n constructor(arrayLength?: number);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(...args: any[]) {\n super(...args);\n\n this.#isFinal = false;\n }\n\n #isFinal: boolean = false;\n\n item(index: number): SpeechRecognitionAlternative | undefined {\n return this[index];\n }\n\n get isFinal(): boolean {\n return this.#isFinal;\n }\n\n static fromFinalized(...items: SpeechRecognitionAlternative[]): SpeechRecognitionResult {\n const result = new SpeechRecognitionResult(...items);\n\n result.#isFinal = true;\n\n return result;\n }\n}\n"],"mappings":"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","names":[]}