UNPKG

react-say

Version:

[![npm version](https://badge.fury.io/js/react-say.svg)](https://badge.fury.io/js/react-say) [![Build Status](https://travis-ci.org/compulim/react-say.svg?branch=master)](https://travis-ci.org/compulim/react-say)

61 lines (47 loc) 5.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = createNativeUtterance; function createNativeUtterance(_ref, _ref2) { var speechSynthesis = _ref.speechSynthesis, SpeechSynthesisUtterance = _ref.SpeechSynthesisUtterance; var lang = _ref2.lang, onBoundary = _ref2.onBoundary, pitch = _ref2.pitch, rate = _ref2.rate, text = _ref2.text, voice = _ref2.voice, volume = _ref2.volume; var utterance = new SpeechSynthesisUtterance(text); var targetVoice; if (typeof voice === 'function') { targetVoice = voice.call(speechSynthesis, speechSynthesis.getVoices()); } else { var _ref3 = voice || {}, voiceURI = _ref3.voiceURI; targetVoice = voiceURI && [].find.call([].slice.call(speechSynthesis.getVoices()), function (v) { return v.voiceURI === voiceURI; }); } // Edge will mute if "lang" is set to "" utterance.lang = lang || ''; if (pitch || pitch === 0) { utterance.pitch = pitch; } if (rate || rate === 0) { utterance.rate = rate; } // Cognitive Services will error when "voice" is set to "null" // Edge will error when "voice" is set to "undefined" if (targetVoice) { utterance.voice = targetVoice; } if (volume || volume === 0) { utterance.volume = volume; } // Since browser quirks, start/error/end events are emulated for best compatibility // start/error/end events are emulated in QueuedUtterance onBoundary && utterance.addEventListener('boundary', onBoundary); // onEnd && utterance.addEventListener('end', onEnd); // onError && utterance.addEventListener('error', onError); // onStart && utterance.addEventListener('start', onStart); return utterance; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jcmVhdGVOYXRpdmVVdHRlcmFuY2UuanMiXSwibmFtZXMiOlsiY3JlYXRlTmF0aXZlVXR0ZXJhbmNlIiwic3BlZWNoU3ludGhlc2lzIiwiU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlIiwibGFuZyIsIm9uQm91bmRhcnkiLCJwaXRjaCIsInJhdGUiLCJ0ZXh0Iiwidm9pY2UiLCJ2b2x1bWUiLCJ1dHRlcmFuY2UiLCJ0YXJnZXRWb2ljZSIsImNhbGwiLCJnZXRWb2ljZXMiLCJ2b2ljZVVSSSIsImZpbmQiLCJzbGljZSIsInYiLCJhZGRFdmVudExpc3RlbmVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQWUsU0FBU0EscUJBQVQsY0FjYjtBQUFBLE1BWkVDLGVBWUYsUUFaRUEsZUFZRjtBQUFBLE1BWEVDLHdCQVdGLFFBWEVBLHdCQVdGO0FBQUEsTUFSRUMsSUFRRixTQVJFQSxJQVFGO0FBQUEsTUFQRUMsVUFPRixTQVBFQSxVQU9GO0FBQUEsTUFORUMsS0FNRixTQU5FQSxLQU1GO0FBQUEsTUFMRUMsSUFLRixTQUxFQSxJQUtGO0FBQUEsTUFKRUMsSUFJRixTQUpFQSxJQUlGO0FBQUEsTUFIRUMsS0FHRixTQUhFQSxLQUdGO0FBQUEsTUFGRUMsTUFFRixTQUZFQSxNQUVGO0FBQ0EsTUFBTUMsU0FBUyxHQUFHLElBQUlSLHdCQUFKLENBQTZCSyxJQUE3QixDQUFsQjtBQUNBLE1BQUlJLFdBQUo7O0FBRUEsTUFBSSxPQUFPSCxLQUFQLEtBQWlCLFVBQXJCLEVBQWlDO0FBQy9CRyxJQUFBQSxXQUFXLEdBQUdILEtBQUssQ0FBQ0ksSUFBTixDQUFXWCxlQUFYLEVBQTRCQSxlQUFlLENBQUNZLFNBQWhCLEVBQTVCLENBQWQ7QUFDRCxHQUZELE1BRU87QUFDTCxnQkFBcUJMLEtBQUssSUFBSSxFQUE5QjtBQUFBLFFBQVFNLFFBQVIsU0FBUUEsUUFBUjs7QUFFQUgsSUFBQUEsV0FBVyxHQUFHRyxRQUFRLElBQUksR0FBR0MsSUFBSCxDQUFRSCxJQUFSLENBQWEsR0FBR0ksS0FBSCxDQUFTSixJQUFULENBQWNYLGVBQWUsQ0FBQ1ksU0FBaEIsRUFBZCxDQUFiLEVBQXlELFVBQUFJLENBQUM7QUFBQSxhQUFJQSxDQUFDLENBQUNILFFBQUYsS0FBZUEsUUFBbkI7QUFBQSxLQUExRCxDQUExQjtBQUNELEdBVkQsQ0FZQTs7O0FBQ0FKLEVBQUFBLFNBQVMsQ0FBQ1AsSUFBVixHQUFpQkEsSUFBSSxJQUFJLEVBQXpCOztBQUVBLE1BQUlFLEtBQUssSUFBSUEsS0FBSyxLQUFLLENBQXZCLEVBQTBCO0FBQ3hCSyxJQUFBQSxTQUFTLENBQUNMLEtBQVYsR0FBa0JBLEtBQWxCO0FBQ0Q7O0FBRUQsTUFBSUMsSUFBSSxJQUFJQSxJQUFJLEtBQUssQ0FBckIsRUFBd0I7QUFDdEJJLElBQUFBLFNBQVMsQ0FBQ0osSUFBVixHQUFpQkEsSUFBakI7QUFDRCxHQXJCRCxDQXVCQTtBQUNBOzs7QUFDQSxNQUFJSyxXQUFKLEVBQWlCO0FBQ2ZELElBQUFBLFNBQVMsQ0FBQ0YsS0FBVixHQUFrQkcsV0FBbEI7QUFDRDs7QUFFRCxNQUFJRixNQUFNLElBQUlBLE1BQU0sS0FBSyxDQUF6QixFQUE0QjtBQUMxQkMsSUFBQUEsU0FBUyxDQUFDRCxNQUFWLEdBQW1CQSxNQUFuQjtBQUNELEdBL0JELENBaUNBO0FBQ0E7OztBQUVBTCxFQUFBQSxVQUFVLElBQUlNLFNBQVMsQ0FBQ1EsZ0JBQVYsQ0FBMkIsVUFBM0IsRUFBdUNkLFVBQXZDLENBQWQsQ0FwQ0EsQ0FxQ0E7QUFDQTtBQUNBOztBQUVBLFNBQU9NLFNBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZU5hdGl2ZVV0dGVyYW5jZShcbiAge1xuICAgIHNwZWVjaFN5bnRoZXNpcyxcbiAgICBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VcbiAgfSxcbiAge1xuICAgIGxhbmcsXG4gICAgb25Cb3VuZGFyeSxcbiAgICBwaXRjaCxcbiAgICByYXRlLFxuICAgIHRleHQsXG4gICAgdm9pY2UsXG4gICAgdm9sdW1lXG4gIH1cbikge1xuICBjb25zdCB1dHRlcmFuY2UgPSBuZXcgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKHRleHQpO1xuICBsZXQgdGFyZ2V0Vm9pY2U7XG5cbiAgaWYgKHR5cGVvZiB2b2ljZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRhcmdldFZvaWNlID0gdm9pY2UuY2FsbChzcGVlY2hTeW50aGVzaXMsIHNwZWVjaFN5bnRoZXNpcy5nZXRWb2ljZXMoKSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgeyB2b2ljZVVSSSB9ID0gdm9pY2UgfHwge307XG5cbiAgICB0YXJnZXRWb2ljZSA9IHZvaWNlVVJJICYmIFtdLmZpbmQuY2FsbChbXS5zbGljZS5jYWxsKHNwZWVjaFN5bnRoZXNpcy5nZXRWb2ljZXMoKSksIHYgPT4gdi52b2ljZVVSSSA9PT0gdm9pY2VVUkkpO1xuICB9XG5cbiAgLy8gRWRnZSB3aWxsIG11dGUgaWYgXCJsYW5nXCIgaXMgc2V0IHRvIFwiXCJcbiAgdXR0ZXJhbmNlLmxhbmcgPSBsYW5nIHx8ICcnO1xuXG4gIGlmIChwaXRjaCB8fCBwaXRjaCA9PT0gMCkge1xuICAgIHV0dGVyYW5jZS5waXRjaCA9IHBpdGNoO1xuICB9XG5cbiAgaWYgKHJhdGUgfHwgcmF0ZSA9PT0gMCkge1xuICAgIHV0dGVyYW5jZS5yYXRlID0gcmF0ZTtcbiAgfVxuXG4gIC8vIENvZ25pdGl2ZSBTZXJ2aWNlcyB3aWxsIGVycm9yIHdoZW4gXCJ2b2ljZVwiIGlzIHNldCB0byBcIm51bGxcIlxuICAvLyBFZGdlIHdpbGwgZXJyb3Igd2hlbiBcInZvaWNlXCIgaXMgc2V0IHRvIFwidW5kZWZpbmVkXCJcbiAgaWYgKHRhcmdldFZvaWNlKSB7XG4gICAgdXR0ZXJhbmNlLnZvaWNlID0gdGFyZ2V0Vm9pY2U7XG4gIH1cblxuICBpZiAodm9sdW1lIHx8IHZvbHVtZSA9PT0gMCkge1xuICAgIHV0dGVyYW5jZS52b2x1bWUgPSB2b2x1bWU7XG4gIH1cblxuICAvLyBTaW5jZSBicm93c2VyIHF1aXJrcywgc3RhcnQvZXJyb3IvZW5kIGV2ZW50cyBhcmUgZW11bGF0ZWQgZm9yIGJlc3QgY29tcGF0aWJpbGl0eVxuICAvLyBzdGFydC9lcnJvci9lbmQgZXZlbnRzIGFyZSBlbXVsYXRlZCBpbiBRdWV1ZWRVdHRlcmFuY2VcblxuICBvbkJvdW5kYXJ5ICYmIHV0dGVyYW5jZS5hZGRFdmVudExpc3RlbmVyKCdib3VuZGFyeScsIG9uQm91bmRhcnkpO1xuICAvLyBvbkVuZCAmJiB1dHRlcmFuY2UuYWRkRXZlbnRMaXN0ZW5lcignZW5kJywgb25FbmQpO1xuICAvLyBvbkVycm9yICYmIHV0dGVyYW5jZS5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIG9uRXJyb3IpO1xuICAvLyBvblN0YXJ0ICYmIHV0dGVyYW5jZS5hZGRFdmVudExpc3RlbmVyKCdzdGFydCcsIG9uU3RhcnQpO1xuXG4gIHJldHVybiB1dHRlcmFuY2U7XG59XG4iXX0=