New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

react-say

Package Overview
Dependencies
Maintainers
1
Versions
52
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-say - npm Package Compare versions

Comparing version 0.0.1-master.d7ce791 to 0.0.1-master.f9fa4b6

lib/SayPrimitive.js

61

lib/Composer.js

@@ -45,2 +45,6 @@ 'use strict';

var lang = _ref2.lang,
onBoundary = _ref2.onBoundary,
onEnd = _ref2.onEnd,
onError = _ref2.onError,
onStart = _ref2.onStart,
_ref2$pitch = _ref2.pitch,

@@ -56,14 +60,41 @@ pitch = _ref2$pitch === undefined ? 1 : _ref2$pitch,

var utterance = new speechSynthesisUtterance(text);
var targetVoice = void 0;
var _ref3 = voice || {},
voiceURI = _ref3.voiceURI;
if (typeof voice === 'function') {
targetVoice = voice.call(speechSynthesis, speechSynthesis.getVoices());
} else {
var _ref3 = voice || {},
voiceURI = _ref3.voiceURI;
utterance.lang = lang;
utterance.pitch = pitch;
utterance.rate = rate;
utterance.voice = voiceURI && [].find.call(speechSynthesis.getVoices(), function (v) {
return v.voiceURI === voiceURI;
});
utterance.volume = volume;
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 (utterance.pitch || utterance.pitch === 0) {
utterance.pitch = pitch;
}
if (utterance.rate || utterance.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 (utterance.volume || utterance.volume === 0) {
utterance.volume = volume;
}
utterance.onboundary = onBoundary;
utterance.onend = onEnd;
utterance.onerror = onError;
utterance.onstart = onStart;
speechSynthesis.speak(utterance);

@@ -186,5 +217,15 @@ }

Composer.propTypes = {
lang: _propTypes2.default.string,
onBoundary: _propTypes2.default.func,
onEnd: _propTypes2.default.func,
onError: _propTypes2.default.func,
onStart: _propTypes2.default.func,
pitch: _propTypes2.default.number,
rate: _propTypes2.default.number,
text: _propTypes2.default.string,
voice: _propTypes2.default.oneOfType([_propTypes2.default.any, _propTypes2.default.func]),
volume: _propTypes2.default.number,
speechSynthesis: _propTypes2.default.any,
speechSynthesisUtterance: _propTypes2.default.any
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9Db21wb3Nlci5qcyJdLCJuYW1lcyI6WyJjcmVhdGVDb250ZXh0Iiwic3BlZWNoU3ludGhlc2lzIiwic3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlIiwiY2FuY2VsIiwic3BlYWsiLCJsYW5nIiwicGl0Y2giLCJyYXRlIiwidGV4dCIsInZvaWNlIiwidm9sdW1lIiwidXR0ZXJhbmNlIiwidm9pY2VVUkkiLCJmaW5kIiwiY2FsbCIsImdldFZvaWNlcyIsInYiLCJtYXAiLCJkZWYiLCJsb2NhbFNlcnZpY2UiLCJuYW1lIiwiQ29tcG9zZXIiLCJwcm9wcyIsImhhbmRsZVZvaWNlc0NoYW5nZWQiLCJiaW5kIiwib252b2ljZXNjaGFuZ2VkIiwibWVyZ2VDb250ZXh0IiwiY29udGV4dCIsInZvaWNlcyIsInN0YXRlIiwibmV4dFByb3BzIiwiY2hhbmdlZCIsInNvbWUiLCJzZXRTdGF0ZSIsInRhcmdldCIsImNoaWxkcmVuIiwiUmVhY3QiLCJDb21wb25lbnQiLCJkZWZhdWx0UHJvcHMiLCJ3aW5kb3ciLCJ3ZWJraXRTcGVlY2hTeW50aGVzaXMiLCJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UiLCJ3ZWJraXRTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJhbnkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFFQTs7Ozs7Ozs7Ozs7O0FBRUEsU0FBU0EsYUFBVCxPQUdHO0FBQUEsTUFGREMsZUFFQyxRQUZEQSxlQUVDO0FBQUEsTUFEREMsd0JBQ0MsUUFEREEsd0JBQ0M7O0FBQ0QsU0FBTztBQUNMQyxZQUFRO0FBQUEsYUFBTUYsZ0JBQWdCRSxNQUFoQixFQUFOO0FBQUEsS0FESDtBQUVMQyxXQUFPLHNCQUE0RDtBQUFBLFVBQXpEQyxJQUF5RCxTQUF6REEsSUFBeUQ7QUFBQSw4QkFBbkRDLEtBQW1EO0FBQUEsVUFBbkRBLEtBQW1ELCtCQUEzQyxDQUEyQztBQUFBLDZC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U0FQRDtBQVFEO0FBQ0Y7OzsrQ0FFK0I7QUFBQSxVQUFWaUMsTUFBVSxTQUFWQSxNQUFVOztBQUM5QixVQUFNTixTQUFTYixVQUFVbUIsTUFBVixDQUFmOztBQUVBLFdBQUtELFFBQUwsQ0FBYztBQUFBLGVBQU8sRUFBRUwsY0FBRixFQUFQO0FBQUEsT0FBZDtBQUNEOzs7NkJBRVE7QUFBQSxVQUNDTixLQURELEdBQ2tCLElBRGxCLENBQ0NBLEtBREQ7QUFBQSxVQUNRTyxLQURSLEdBQ2tCLElBRGxCLENBQ1FBLEtBRFI7QUFBQSxVQUVDTSxRQUZELEdBRWNiLEtBRmQsQ0FFQ2EsUUFGRDs7O0FBSVAsYUFDRTtBQUFDLHlCQUFELENBQVMsUUFBVDtBQUFBLFVBQWtCLE9BQVEsS0FBS1QsWUFBTCxDQUFrQkcsTUFBTUYsT0FBeEIsRUFBaUNFLE1BQU1ELE1BQXZDLENBQTFCO0FBRUksZUFBT08sUUFBUCxLQUFvQixVQUFwQixHQUNFO0FBQUMsMkJBQUQsQ0FBUyxRQUFUO0FBQUE7QUFDSTtBQUFBLG1CQUFXQSxTQUFTUixPQUFULENBQVg7QUFBQTtBQURKLFNBREYsR0FLRVE7QUFQTixPQURGO0FBWUQ7Ozs7RUE5RG1DQyxnQkFBTUMsUzs7a0JBQXZCaEIsUTs7O0FBaUVyQkEsU0FBU2lCLFlBQVQsR0FBd0I7QUFDdEJyQyxtQkFBaUJzQyxPQUFPdEMsZUFBUCxJQUEwQnNDLE9BQU9DLHFCQUQ1QjtBQUV0QnRDLDRCQUEwQnFDLE9BQU9FLHdCQUFQLElBQW1DRixPQUFPRztBQUY5QyxDQUF4Qjs7QUFLQXJCLFNBQVNzQixTQUFULEdBQXFCO0FBQ25CMUMsbUJBQWlCMkMsb0JBQVVDLEdBRFI7QUFFbkIzQyw0QkFBMEIwQyxvQkFBVUM7QUFGakIsQ0FBckIiLCJmaWxlIjoiQ29tcG9zZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbWVtb2l6ZSBmcm9tICdtZW1vaXplLW9uZSc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IENvbnRleHQgZnJvbSAnLi9Db250ZXh0JztcblxuZnVuY3Rpb24gY3JlYXRlQ29udGV4dCh7XG4gIHNwZWVjaFN5bnRoZXNpcyxcbiAgc3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlXG59KSB7XG4gIHJldHVybiB7XG4gICAgY2FuY2VsOiAoKSA9PiBzcGVlY2hTeW50aGVzaXMuY2FuY2VsKCksXG4gICAgc3BlYWs6ICh7IGxhbmcsIHBpdGNoID0gMSwgcmF0ZSA9IDEsIHRleHQsIHZvaWNlLCB2b2x1bWUgPSAxIH0pID0+IHtcbiAgICAgIGNvbnN0IHV0dGVyYW5jZSA9IG5ldyBzcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UodGV4dCk7XG4gICAgICBjb25zdCB7IHZvaWNlVVJJIH0gPSB2b2ljZSB8fCB7fTtcblxuICAgICAgdXR0ZXJhbmNlLmxhbmcgPSBsYW5nO1xuICAgICAgdXR0ZXJhbmNlLnBpdGNoID0gcGl0Y2g7XG4gICAgICB1dHRlcmFuY2UucmF0ZSA9IHJhdGU7XG4gICAgICB1dHRlcmFuY2Uudm9pY2UgPSB2b2ljZVVSSSAmJiBbXS5maW5kLmNhbGwoc3BlZWNoU3ludGhlc2lzLmdldFZvaWNlcygpLCB2ID0+IHYudm9pY2VVUkkgPT09IHZvaWNlVVJJKTtcbiAgICAgIHV0dGVyYW5jZS52b2x1bWUgPSB2b2x1bWU7XG5cbiAgICAgIHNwZWVjaFN5bnRoZXNpcy5zcGVhayh1dHRlcmFuY2UpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Vm9pY2VzKHNwZWVjaFN5bnRoZXNpcykge1xuICByZXR1cm4gc3BlZWNoU3ludGhlc2lzLmdldFZvaWNlcygpLm1hcCgoe1xuICAgICdkZWZhdWx0JzogZGVmLFxuICAgIGxhbmcsXG4gICAgbG9jYWxTZXJ2aWNlLFxuICAgIG5hbWUsXG4gICAgdm9pY2VVUklcbiAgfSkgPT4gKHtcbiAgICAnZGVmYXVsdCc6IGRlZixcbiAgICBsYW5nLFxuICAgIGxvY2FsU2VydmljZSxcbiAgICBuYW1lLFxuICAgIHZvaWNlVVJJXG4gIH0pKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29tcG9zZXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMuaGFuZGxlVm9pY2VzQ2hhbmdlZCA9IHRoaXMuaGFuZGxlVm9pY2VzQ2hhbmdlZC5iaW5kKHRoaXMpO1xuXG4gICAgcHJvcHMuc3BlZWNoU3ludGhlc2lzLm9udm9pY2VzY2hhbmdlZCA9IHRoaXMuaGFuZGxlVm9pY2VzQ2hhbmdlZDtcblxuICAgIHRoaXMubWVyZ2VDb250ZXh0ID0gbWVtb2l6ZSgoY29udGV4dCwgdm9pY2VzKSA9PiAoeyAuLi5jb250ZXh0LCB2b2ljZXMgfSkpO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGNvbnRleHQ6IGNyZWF0ZUNvbnRleHQocHJvcHMpLFxuICAgICAgdm9pY2VzOiBnZXRWb2ljZXMocHJvcHMuc3BlZWNoU3ludGhlc2lzKVxuICAgIH07XG4gIH1cblxuICBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcykge1xuICAgIGNvbnN0IHsgcHJvcHMgfSA9IHRoaXM7XG4gICAgY29uc3QgY2hhbmdlZCA9IFtcbiAgICAgICdzcGVlY2hTeW50aGVzaXMnLFxuICAgICAgJ3NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSdcbiAgICBdLnNvbWUobmFtZSA9PiBuZXh0UHJvcHNbbmFtZV0gIT09IHByb3BzW25hbWVdKTtcblxuICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICB0aGlzLnByb3BzLnNwZWVjaFN5bnRoZXNpcy5vbnZvaWNlc2NoYW5nZWQgPSBudWxsO1xuICAgICAgdGhpcy5zdGF0ZS5jb250ZXh0LmNhbmNlbCgpO1xuXG4gICAgICBuZXh0UHJvcHMuc3BlZWNoU3ludGhlc2lzLm9udm9pY2VzY2hhbmdlZCA9IHRoaXMuaGFuZGxlVm9pY2VzQ2hhbmdlZDtcblxuICAgICAgdGhpcy5zZXRTdGF0ZSgoeyBjb250ZXh0IH0pID0+IHtcbiAgICAgICAgY29udGV4dC5jYW5jZWwoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRleHQ6IGNyZWF0ZUNvbnRleHQobmV4dFByb3BzKSxcbiAgICAgICAgICB2b2ljZXM6IGdldFZvaWNlcyhuZXh0UHJvcHMuc3BlZWNoU3ludGhlc2lzKVxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlVm9pY2VzQ2hhbmdlZCh7IHRhcmdldCB9KSB7XG4gICAgY29uc3Qgdm9pY2VzID0gZ2V0Vm9pY2VzKHRhcmdldCk7XG5cbiAgICB0aGlzLnNldFN0YXRlKCgpID0+ICh7IHZvaWNlcyB9KSk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBwcm9wcywgc3RhdGUgfSA9IHRoaXM7XG4gICAgY29uc3QgeyBjaGlsZHJlbiB9ID0gcHJvcHM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPENvbnRleHQuUHJvdmlkZXIgdmFsdWU9eyB0aGlzLm1lcmdlQ29udGV4dChzdGF0ZS5jb250ZXh0LCBzdGF0ZS52b2ljZXMpIH0+XG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicgP1xuICAgICAgICAgICAgPENvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgIHsgY29udGV4dCA9PiBjaGlsZHJlbihjb250ZXh0KSB9XG4gICAgICAgICAgICA8L0NvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgOlxuICAgICAgICAgICAgY2hpbGRyZW5cbiAgICAgICAgfVxuICAgICAgPC9Db250ZXh0LlByb3ZpZGVyPlxuICAgICk7XG4gIH1cbn1cblxuQ29tcG9zZXIuZGVmYXVsdFByb3BzID0ge1xuICBzcGVlY2hTeW50aGVzaXM6IHdpbmRvdy5zcGVlY2hTeW50aGVzaXMgfHwgd2luZG93LndlYmtpdFNwZWVjaFN5bnRoZXNpcyxcbiAgc3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOiB3aW5kb3cuU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlIHx8IHdpbmRvdy53ZWJraXRTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Vcbn07XG5cbkNvbXBvc2VyLnByb3BUeXBlcyA9IHtcbiAgc3BlZWNoU3ludGhlc2lzOiBQcm9wVHlwZXMuYW55LFxuICBzcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6IFByb3BUeXBlcy5hbnlcbn07XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9Db21wb3Nlci5qcyJdLCJuYW1lcyI6WyJjcmVhdGVDb250ZXh0Iiwic3BlZWNoU3ludGhlc2lzIiwic3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlIiwiY2FuY2VsIiwic3BlYWsiLCJsYW5nIiwib25Cb3VuZGFyeSIsIm9uRW5kIiwib25FcnJvciIsIm9uU3RhcnQiLCJwaXRjaCIsInJhdGUiLCJ0ZXh0Iiwidm9pY2UiLCJ2b2x1bWUiLCJ1dHRlcmFuY2UiLCJ0YXJnZXRWb2ljZSIsImNhbGwiLCJnZXRWb2ljZXMiLCJ2b2ljZVVSSSIsImZpbmQiLCJzbGljZSIsInYiLCJvbmJvdW5kYXJ5Iiwib25lbmQiLCJvbmVycm9yIiwib25zdGFydCIsIm1hcCIsImRlZiIsImxvY2FsU2VydmljZSIsIm5hbWUiLCJDb21wb3NlciIsInByb3BzIiwiaGFuZGxlVm9pY2VzQ2hhbmdlZCIsImJpbmQiLCJvbnZvaWNlc2NoYW5nZWQiLCJtZXJnZUNvbnRleHQiLCJjb250ZXh0Iiwidm9pY2VzIiwic3RhdGUiLCJuZXh0UHJvcHMiLCJjaGFuZ2VkIiwic29tZSIsInNldFN0YXRlIiwidGFyZ2V0IiwiY2hpbGRyZW4iLCJSZWFjdCIsIkNvbXBvbmVudCIsImRlZmF1bHRQcm9wcyIsIndpbmRvdyIsIndlYmtpdFNwZWVjaFN5bnRoZXNpcyIsIlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSIsIndlYmtpdFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsInN0cmluZyIsImZ1bmMiLCJudW1iZXIiLCJvbmVPZlR5cGUiLCJhbnkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFFQTs7Ozs7Ozs7Ozs7O0FBRUEsU0FBU0EsYUFBVCxPQUdHO0FBQUEsTUFGREMsZUFFQyxRQUZEQSxlQUVDO0FBQUEsTUFEREMsd0JBQ0MsUUFEREEsd0JBQ0M7O0FBQ0QsU0FBTztBQUNMQyxZQUFRO0FBQUEsYUFBTUYsZ0JBQWdCRSxNQUFoQixFQUFOO0FBQUEsS0FESDtBQUVMQyxXQUFPLHNCQVdEO0FBQUEsVUFWSkMsSUFVSSxTQVZKQSxJQVVJO0FBQUEsVUFUSkMsVUFTSSxTQVRKQSxVQVNJO0FBQUEsVUFSSkMsS0FRSSxTQVJKQSxLQVFJO0FBQUEsVUFQSkMsT0FPSSxTQVBKQSxPQU9JO0FBQUEsVUFOSkMsT0FNSSxTQU5KQSxPQU1JO0FBQUEsOEJBTEpDLEtBS0k7QUFBQSxVQUxKQSxLQUtJLCtCQUxJLENBS0o7QUFBQSw2QkFKSkMsSUFJSTtBQUFBLFVBSkpBLElBSUksOEJBSkcsQ0FJSDtBQUFBLFVBSEpDLElBR0ksU0FISkEsSUFHSTtBQUFBLFVBRkpDLEtBRUksU0FGSkEsS0FFSTtBQUFBLCtCQURKQyxNQUNJO0FBQUEsVUFESkEsTUFDSSxnQ0FESyxDQUNMOztBQUNKLFVBQU1DLFlBQVksSUFBSWIsd0JBQUosQ0FBNkJVLElBQTdCLENBQWxCO0FBQ0EsVUFBSUksb0JBQUo7O0FBRUEsVUFBSSxPQUFPSCxLQUFQLEtBQWlCLFVBQXJCLEVBQWlDO0FBQy9CRyxzQkFBY0gsTUFBTUksSUFBTixDQUFXaEIsZUFBWCxFQUE0QkEsZ0JBQWdCaUIsU0FBaEIsRUFBNUIsQ0FBZDtBQUNELE9BRkQsTUFFTztBQUFBLG9CQUNnQkwsU0FBUyxFQUR6QjtBQUFBLFlBQ0dNLFFBREgsU0FDR0EsUUFESDs7QUFHTEgsc0JBQWNHLFlBQVksR0FBR0MsSUFBSCxDQUFRSCxJQUFSLENBQWEsR0FBR0ksS0FBSCxDQUFTSixJQUFULENBQWNoQixnQkFBZ0JpQixTQUFoQixFQUFkLENBQWIsRUFBeUQ7QUFBQSxpQkFBS0ksRUFBRUgsUUFBRixLQUFlQSxRQUFwQjtBQUFBLFNBQXpELENBQTFCO0FBQ0Q7O0FBRUQ7QUFDQUosZ0JBQVVWLElBQVYsR0FBaUJBLFFBQVEsRUFBekI7O0FBRUEsVUFBSVUsVUFBVUwsS0FBVixJQUFtQkssVUFBVUwsS0FBVixLQUFvQixDQUEzQyxFQUE4QztBQUM1Q0ssa0JBQVVMLEtBQVYsR0FBa0JBLEtBQWxCO0FBQ0Q7O0FBRUQsVUFBSUssVUFBVUosSUFBVixJQUFrQkksVUFBVUosSUFBVixLQUFtQixDQUF6QyxFQUE0QztBQUMxQ0ksa0JBQVVKLElBQVYsR0FBaUJBLElBQWpCO0FBQ0Q7O0FBRUQ7QUFDQTtBQUNBLFVBQUlLLFdBQUosRUFBaUI7QUFDZkQsa0JBQVVGLEtBQVYsR0FBa0JHLFdBQWxCO0FBQ0Q7O0FBRUQsVUFBSUQsVUFBVUQsTUFBVixJQUFvQkMsVUFBVUQsTUFBVixLQUFxQixDQUE3QyxFQUFnRDtBQUM5Q0Msa0JBQVVELE1BQVYsR0FBbUJBLE1BQW5CO0FBQ0Q7O0FBRURDLGdCQUFVUSxVQUFWLEdBQXVCakIsVUFBdkI7QUFDQVMsZ0JBQVVTLEtBQVYsR0FBa0JqQixLQUFsQjtBQUNBUSxnQkFBVVUsT0FBVixHQUFvQmpCLE9BQXBCO0FBQ0FPLGdCQUFVVyxPQUFWLEdBQW9CakIsT0FBcEI7O0FBRUFSLHNCQUFnQkcsS0FBaEIsQ0FBc0JXLFNBQXRCO0FBQ0Q7QUFwREksR0FBUDtBQXNERDs7QUFFRCxTQUFTRyxTQUFULENBQW1CakIsZUFBbkIsRUFBb0M7QUFDbEMsU0FBT0EsZ0JBQWdCaUIsU0FBaEIsR0FBNEJTLEdBQTVCLENBQWdDO0FBQUEsUUFDMUJDLEdBRDBCLFNBQ3JDLFNBRHFDO0FBQUEsUUFFckN2QixJQUZxQyxTQUVyQ0EsSUFGcUM7QUFBQSxRQUdyQ3dCLFlBSHFDLFNBR3JDQSxZQUhxQztBQUFBLFFBSXJDQyxJQUpxQyxTQUlyQ0EsSUFKcUM7QUFBQSxRQUtyQ1gsUUFMcUMsU0FLckNBLFFBTHFDO0FBQUEsV0FNaEM7QUFDTCxpQkFBV1MsR0FETjtBQUVMdkIsZ0JBRks7QUFHTHdCLGdDQUhLO0FBSUxDLGdCQUpLO0FBS0xYO0FBTEssS0FOZ0M7QUFBQSxHQUFoQyxDQUFQO0FBYUQ7O0lBRW9CWSxROzs7QUFDbkIsb0JBQVlDLEtBQVosRUFBbUI7QUFBQTs7QUFBQSxvSEFDWEEsS0FEVzs7QUFHakIsVUFBS0MsbUJBQUwsR0FBMkIsTUFBS0EsbUJBQUwsQ0FBeUJDLElBQXpCLE9BQTNCOztBQUVBRixVQUFNL0IsZUFBTixDQUFzQmtDLGVBQXRCLEdBQXdDLE1BQUtGLG1CQUE3Qzs7QUFFQSxVQUFLRyxZQUFMLEdBQW9CLDBCQUFRLFVBQUNDLE9BQUQsRUFBVUMsTUFBVjtBQUFBLDBCQUEyQkQsT0FBM0IsSUFBb0NDLGNBQXBDO0FBQUEsS0FBUixDQUFwQjs7QUFFQSxVQUFLQyxLQUFMLEdBQWE7QUFDWEYsZUFBU3JDLGNBQWNnQyxLQUFkLENBREU7QUFFWE0sY0FBUXBCLFVBQVVjLE1BQU0vQixlQUFoQjtBQUZHLEtBQWI7QUFUaUI7QUFhbEI7Ozs7OENBRXlCdUMsUyxFQUFXO0FBQUEsVUFDM0JSLEtBRDJCLEdBQ2pCLElBRGlCLENBQzNCQSxLQUQyQjs7QUFFbkMsVUFBTVMsVUFBVSxDQUNkLGlCQURjLEVBRWQsMEJBRmMsRUFHZEMsSUFIYyxDQUdUO0FBQUEsZUFBUUYsVUFBVVYsSUFBVixNQUFvQkUsTUFBTUYsSUFBTixDQUE1QjtBQUFBLE9BSFMsQ0FBaEI7O0FBS0EsVUFBSVcsT0FBSixFQUFhO0FBQ1gsYUFBS1QsS0FBTCxDQUFXL0IsZUFBWCxDQUEyQmtDLGVBQTNCLEdBQTZDLElBQTdDO0FBQ0EsYUFBS0ksS0FBTCxDQUFXRixPQUFYLENBQW1CbEMsTUFBbkI7O0FBRUFxQyxrQkFBVXZDLGVBQVYsQ0FBMEJrQyxlQUExQixHQUE0QyxLQUFLRixtQkFBakQ7O0FBRUEsYUFBS1UsUUFBTCxDQUFjLGlCQUFpQjtBQUFBLGNBQWROLE9BQWMsU0FBZEEsT0FBYzs7QUFDN0JBLGtCQUFRbEMsTUFBUjs7QUFFQSxpQkFBTztBQUNMa0MscUJBQVNyQyxjQUFjd0MsU0FBZCxDQURKO0FBRUxGLG9CQUFRcEIsVUFBVXNCLFVBQVV2QyxlQUFwQjtBQUZILFdBQVA7QUFJRCxTQVBEO0FBUUQ7QUFDRjs7OytDQUUrQjtBQUFBLFVBQVYyQyxNQUFVLFNBQVZBLE1BQVU7O0FBQzlCLFVBQU1OLFNBQVNwQixVQUFVMEIsTUFBVixDQUFmOztBQUVBLFdBQUtELFFBQUwsQ0FBYztBQUFBLGVBQU8sRUFBRUwsY0FBRixFQUFQO0FBQUEsT0FBZDtBQUNEOzs7NkJBRVE7QUFBQSxVQUNDTixLQURELEdBQ2tCLElBRGxCLENBQ0NBLEtBREQ7QUFBQSxVQUNRTyxLQURSLEdBQ2tCLElBRGxCLENBQ1FBLEtBRFI7QUFBQSxVQUVDTSxRQUZELEdBRWNiLEtBRmQsQ0FFQ2EsUUFGRDs7O0FBSVAsYUFDRTtBQUFDLHlCQUFELENBQVMsUUFBVDtBQUFBLFVBQWtCLE9BQVEsS0FBS1QsWUFBTCxDQUFrQkcsTUFBTUYsT0FBeEIsRUFBaUNFLE1BQU1ELE1BQXZDLENBQTFCO0FBRUksZUFBT08sUUFBUCxLQUFvQixVQUFwQixHQUNFO0FBQUMsMkJBQUQsQ0FBUyxRQUFUO0FBQUE7QUFDSTtBQUFBLG1CQUFXQSxTQUFTUixPQUFULENBQVg7QUFBQTtBQURKLFNBREYsR0FLRVE7QUFQTixPQURGO0FBWUQ7Ozs7RUE5RG1DQyxnQkFBTUMsUzs7a0JBQXZCaEIsUTs7O0FBaUVyQkEsU0FBU2lCLFlBQVQsR0FBd0I7QUFDdEIvQyxtQkFBaUJnRCxPQUFPaEQsZUFBUCxJQUEwQmdELE9BQU9DLHFCQUQ1QjtBQUV0QmhELDRCQUEwQitDLE9BQU9FLHdCQUFQLElBQW1DRixPQUFPRztBQUY5QyxDQUF4Qjs7QUFLQXJCLFNBQVNzQixTQUFULEdBQXFCO0FBQ25CaEQsUUFBTWlELG9CQUFVQyxNQURHO0FBRW5CakQsY0FBWWdELG9CQUFVRSxJQUZIO0FBR25CakQsU0FBTytDLG9CQUFVRSxJQUhFO0FBSW5CaEQsV0FBUzhDLG9CQUFVRSxJQUpBO0FBS25CL0MsV0FBUzZDLG9CQUFVRSxJQUxBO0FBTW5COUMsU0FBTzRDLG9CQUFVRyxNQU5FO0FBT25COUMsUUFBTTJDLG9CQUFVRyxNQVBHO0FBUW5CN0MsUUFBTTBDLG9CQUFVQyxNQVJHO0FBU25CMUMsU0FBT3lDLG9CQUFVSSxTQUFWLENBQW9CLENBQUNKLG9CQUFVSyxHQUFYLEVBQWdCTCxvQkFBVUUsSUFBMUIsQ0FBcEIsQ0FUWTtBQVVuQjFDLFVBQVF3QyxvQkFBVUcsTUFWQztBQVduQnhELG1CQUFpQnFELG9CQUFVSyxHQVhSO0FBWW5CekQsNEJBQTBCb0Qsb0JBQVVLO0FBWmpCLENBQXJCIiwiZmlsZSI6IkNvbXBvc2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1lbW9pemUgZnJvbSAnbWVtb2l6ZS1vbmUnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCBDb250ZXh0IGZyb20gJy4vQ29udGV4dCc7XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbnRleHQoe1xuICBzcGVlY2hTeW50aGVzaXMsXG4gIHNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZVxufSkge1xuICByZXR1cm4ge1xuICAgIGNhbmNlbDogKCkgPT4gc3BlZWNoU3ludGhlc2lzLmNhbmNlbCgpLFxuICAgIHNwZWFrOiAoe1xuICAgICAgbGFuZyxcbiAgICAgIG9uQm91bmRhcnksXG4gICAgICBvbkVuZCxcbiAgICAgIG9uRXJyb3IsXG4gICAgICBvblN0YXJ0LFxuICAgICAgcGl0Y2ggPSAxLFxuICAgICAgcmF0ZSA9IDEsXG4gICAgICB0ZXh0LFxuICAgICAgdm9pY2UsXG4gICAgICB2b2x1bWUgPSAxXG4gICAgfSkgPT4ge1xuICAgICAgY29uc3QgdXR0ZXJhbmNlID0gbmV3IHNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSh0ZXh0KTtcbiAgICAgIGxldCB0YXJnZXRWb2ljZTtcblxuICAgICAgaWYgKHR5cGVvZiB2b2ljZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0YXJnZXRWb2ljZSA9IHZvaWNlLmNhbGwoc3BlZWNoU3ludGhlc2lzLCBzcGVlY2hTeW50aGVzaXMuZ2V0Vm9pY2VzKCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgeyB2b2ljZVVSSSB9ID0gdm9pY2UgfHwge307XG5cbiAgICAgICAgdGFyZ2V0Vm9pY2UgPSB2b2ljZVVSSSAmJiBbXS5maW5kLmNhbGwoW10uc2xpY2UuY2FsbChzcGVlY2hTeW50aGVzaXMuZ2V0Vm9pY2VzKCkpLCB2ID0+IHYudm9pY2VVUkkgPT09IHZvaWNlVVJJKTtcbiAgICAgIH1cblxuICAgICAgLy8gRWRnZSB3aWxsIG11dGUgaWYgXCJsYW5nXCIgaXMgc2V0IHRvIFwiXCJcbiAgICAgIHV0dGVyYW5jZS5sYW5nID0gbGFuZyB8fCAnJztcblxuICAgICAgaWYgKHV0dGVyYW5jZS5waXRjaCB8fCB1dHRlcmFuY2UucGl0Y2ggPT09IDApIHtcbiAgICAgICAgdXR0ZXJhbmNlLnBpdGNoID0gcGl0Y2g7XG4gICAgICB9XG5cbiAgICAgIGlmICh1dHRlcmFuY2UucmF0ZSB8fCB1dHRlcmFuY2UucmF0ZSA9PT0gMCkge1xuICAgICAgICB1dHRlcmFuY2UucmF0ZSA9IHJhdGU7XG4gICAgICB9XG5cbiAgICAgIC8vIENvZ25pdGl2ZSBTZXJ2aWNlcyB3aWxsIGVycm9yIHdoZW4gXCJ2b2ljZVwiIGlzIHNldCB0byBcIm51bGxcIlxuICAgICAgLy8gRWRnZSB3aWxsIGVycm9yIHdoZW4gXCJ2b2ljZVwiIGlzIHNldCB0byBcInVuZGVmaW5lZFwiXG4gICAgICBpZiAodGFyZ2V0Vm9pY2UpIHtcbiAgICAgICAgdXR0ZXJhbmNlLnZvaWNlID0gdGFyZ2V0Vm9pY2U7XG4gICAgICB9XG5cbiAgICAgIGlmICh1dHRlcmFuY2Uudm9sdW1lIHx8IHV0dGVyYW5jZS52b2x1bWUgPT09IDApIHtcbiAgICAgICAgdXR0ZXJhbmNlLnZvbHVtZSA9IHZvbHVtZTtcbiAgICAgIH1cblxuICAgICAgdXR0ZXJhbmNlLm9uYm91bmRhcnkgPSBvbkJvdW5kYXJ5O1xuICAgICAgdXR0ZXJhbmNlLm9uZW5kID0gb25FbmQ7XG4gICAgICB1dHRlcmFuY2Uub25lcnJvciA9IG9uRXJyb3I7XG4gICAgICB1dHRlcmFuY2Uub25zdGFydCA9IG9uU3RhcnQ7XG5cbiAgICAgIHNwZWVjaFN5bnRoZXNpcy5zcGVhayh1dHRlcmFuY2UpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Vm9pY2VzKHNwZWVjaFN5bnRoZXNpcykge1xuICByZXR1cm4gc3BlZWNoU3ludGhlc2lzLmdldFZvaWNlcygpLm1hcCgoe1xuICAgICdkZWZhdWx0JzogZGVmLFxuICAgIGxhbmcsXG4gICAgbG9jYWxTZXJ2aWNlLFxuICAgIG5hbWUsXG4gICAgdm9pY2VVUklcbiAgfSkgPT4gKHtcbiAgICAnZGVmYXVsdCc6IGRlZixcbiAgICBsYW5nLFxuICAgIGxvY2FsU2VydmljZSxcbiAgICBuYW1lLFxuICAgIHZvaWNlVVJJXG4gIH0pKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29tcG9zZXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMuaGFuZGxlVm9pY2VzQ2hhbmdlZCA9IHRoaXMuaGFuZGxlVm9pY2VzQ2hhbmdlZC5iaW5kKHRoaXMpO1xuXG4gICAgcHJvcHMuc3BlZWNoU3ludGhlc2lzLm9udm9pY2VzY2hhbmdlZCA9IHRoaXMuaGFuZGxlVm9pY2VzQ2hhbmdlZDtcblxuICAgIHRoaXMubWVyZ2VDb250ZXh0ID0gbWVtb2l6ZSgoY29udGV4dCwgdm9pY2VzKSA9PiAoeyAuLi5jb250ZXh0LCB2b2ljZXMgfSkpO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGNvbnRleHQ6IGNyZWF0ZUNvbnRleHQocHJvcHMpLFxuICAgICAgdm9pY2VzOiBnZXRWb2ljZXMocHJvcHMuc3BlZWNoU3ludGhlc2lzKVxuICAgIH07XG4gIH1cblxuICBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcykge1xuICAgIGNvbnN0IHsgcHJvcHMgfSA9IHRoaXM7XG4gICAgY29uc3QgY2hhbmdlZCA9IFtcbiAgICAgICdzcGVlY2hTeW50aGVzaXMnLFxuICAgICAgJ3NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSdcbiAgICBdLnNvbWUobmFtZSA9PiBuZXh0UHJvcHNbbmFtZV0gIT09IHByb3BzW25hbWVdKTtcblxuICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICB0aGlzLnByb3BzLnNwZWVjaFN5bnRoZXNpcy5vbnZvaWNlc2NoYW5nZWQgPSBudWxsO1xuICAgICAgdGhpcy5zdGF0ZS5jb250ZXh0LmNhbmNlbCgpO1xuXG4gICAgICBuZXh0UHJvcHMuc3BlZWNoU3ludGhlc2lzLm9udm9pY2VzY2hhbmdlZCA9IHRoaXMuaGFuZGxlVm9pY2VzQ2hhbmdlZDtcblxuICAgICAgdGhpcy5zZXRTdGF0ZSgoeyBjb250ZXh0IH0pID0+IHtcbiAgICAgICAgY29udGV4dC5jYW5jZWwoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRleHQ6IGNyZWF0ZUNvbnRleHQobmV4dFByb3BzKSxcbiAgICAgICAgICB2b2ljZXM6IGdldFZvaWNlcyhuZXh0UHJvcHMuc3BlZWNoU3ludGhlc2lzKVxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlVm9pY2VzQ2hhbmdlZCh7IHRhcmdldCB9KSB7XG4gICAgY29uc3Qgdm9pY2VzID0gZ2V0Vm9pY2VzKHRhcmdldCk7XG5cbiAgICB0aGlzLnNldFN0YXRlKCgpID0+ICh7IHZvaWNlcyB9KSk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBwcm9wcywgc3RhdGUgfSA9IHRoaXM7XG4gICAgY29uc3QgeyBjaGlsZHJlbiB9ID0gcHJvcHM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPENvbnRleHQuUHJvdmlkZXIgdmFsdWU9eyB0aGlzLm1lcmdlQ29udGV4dChzdGF0ZS5jb250ZXh0LCBzdGF0ZS52b2ljZXMpIH0+XG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicgP1xuICAgICAgICAgICAgPENvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgIHsgY29udGV4dCA9PiBjaGlsZHJlbihjb250ZXh0KSB9XG4gICAgICAgICAgICA8L0NvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgOlxuICAgICAgICAgICAgY2hpbGRyZW5cbiAgICAgICAgfVxuICAgICAgPC9Db250ZXh0LlByb3ZpZGVyPlxuICAgICk7XG4gIH1cbn1cblxuQ29tcG9zZXIuZGVmYXVsdFByb3BzID0ge1xuICBzcGVlY2hTeW50aGVzaXM6IHdpbmRvdy5zcGVlY2hTeW50aGVzaXMgfHwgd2luZG93LndlYmtpdFNwZWVjaFN5bnRoZXNpcyxcbiAgc3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOiB3aW5kb3cuU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlIHx8IHdpbmRvdy53ZWJraXRTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Vcbn07XG5cbkNvbXBvc2VyLnByb3BUeXBlcyA9IHtcbiAgbGFuZzogUHJvcFR5cGVzLnN0cmluZyxcbiAgb25Cb3VuZGFyeTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRW5kOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25FcnJvcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU3RhcnQ6IFByb3BUeXBlcy5mdW5jLFxuICBwaXRjaDogUHJvcFR5cGVzLm51bWJlcixcbiAgcmF0ZTogUHJvcFR5cGVzLm51bWJlcixcbiAgdGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdm9pY2U6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hbnksIFByb3BUeXBlcy5mdW5jXSksXG4gIHZvbHVtZTogUHJvcFR5cGVzLm51bWJlcixcbiAgc3BlZWNoU3ludGhlc2lzOiBQcm9wVHlwZXMuYW55LFxuICBzcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6IFByb3BUeXBlcy5hbnlcbn07XG4iXX0=

20

lib/index.js

@@ -6,7 +6,7 @@ 'use strict';

});
exports.SayButton = exports.Say = exports.Context = exports.Composer = undefined;
exports.SayPrimitive = exports.SayButton = exports.Context = exports.Composer = undefined;
var _BasicSay = require('./BasicSay');
var _Say = require('./Say');
var _BasicSay2 = _interopRequireDefault(_BasicSay);
var _Say2 = _interopRequireDefault(_Say);

@@ -21,6 +21,2 @@ var _Composer = require('./Composer');

var _Say = require('./Say');
var _Say2 = _interopRequireDefault(_Say);
var _SayButton = require('./SayButton');

@@ -30,9 +26,13 @@

var _SayPrimitive = require('./SayPrimitive');
var _SayPrimitive2 = _interopRequireDefault(_SayPrimitive);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = _BasicSay2.default;
exports.default = _Say2.default;
exports.Composer = _Composer2.default;
exports.Context = _Context2.default;
exports.Say = _Say2.default;
exports.SayButton = _SayButton2.default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJCYXNpY1NheSIsIkNvbXBvc2VyIiwiQ29udGV4dCIsIlNheSIsIlNheUJ1dHRvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7OztrQkFFZUEsa0I7UUFHYkMsUSxHQUFBQSxrQjtRQUNBQyxPLEdBQUFBLGlCO1FBQ0FDLEcsR0FBQUEsYTtRQUNBQyxTLEdBQUFBLG1CIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJhc2ljU2F5IGZyb20gJy4vQmFzaWNTYXknO1xuaW1wb3J0IENvbXBvc2VyIGZyb20gJy4vQ29tcG9zZXInO1xuaW1wb3J0IENvbnRleHQgZnJvbSAnLi9Db250ZXh0JztcbmltcG9ydCBTYXkgZnJvbSAnLi9TYXknO1xuaW1wb3J0IFNheUJ1dHRvbiBmcm9tICcuL1NheUJ1dHRvbic7XG5cbmV4cG9ydCBkZWZhdWx0IEJhc2ljU2F5XG5cbmV4cG9ydCB7XG4gIENvbXBvc2VyLFxuICBDb250ZXh0LFxuICBTYXksXG4gIFNheUJ1dHRvblxufVxuIl19
exports.SayPrimitive = _SayPrimitive2.default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJTYXkiLCJDb21wb3NlciIsIkNvbnRleHQiLCJTYXlCdXR0b24iLCJTYXlQcmltaXRpdmUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7a0JBRWVBLGE7UUFHYkMsUSxHQUFBQSxrQjtRQUNBQyxPLEdBQUFBLGlCO1FBQ0FDLFMsR0FBQUEsbUI7UUFDQUMsWSxHQUFBQSxzQiIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTYXkgZnJvbSAnLi9TYXknO1xuaW1wb3J0IENvbXBvc2VyIGZyb20gJy4vQ29tcG9zZXInO1xuaW1wb3J0IENvbnRleHQgZnJvbSAnLi9Db250ZXh0JztcbmltcG9ydCBTYXlCdXR0b24gZnJvbSAnLi9TYXlCdXR0b24nO1xuaW1wb3J0IFNheVByaW1pdGl2ZSBmcm9tICcuL1NheVByaW1pdGl2ZSc7XG5cbmV4cG9ydCBkZWZhdWx0IFNheVxuXG5leHBvcnQge1xuICBDb21wb3NlcixcbiAgQ29udGV4dCxcbiAgU2F5QnV0dG9uLFxuICBTYXlQcmltaXRpdmVcbn1cbiJdfQ==

@@ -7,4 +7,2 @@ 'use strict';

var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _propTypes = require('prop-types');

@@ -18,66 +16,59 @@

var _Context = require('./Context');
var _Composer = require('./Composer');
var _Context2 = _interopRequireDefault(_Context);
var _Composer2 = _interopRequireDefault(_Composer);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var _SayPrimitive = require('./SayPrimitive');
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var _SayPrimitive2 = _interopRequireDefault(_SayPrimitive);
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var Say = function Say(props) {
return _react2.default.createElement(
_Composer2.default,
{
speechSynthesis: props.speechSynthesis,
speechSynthesisUtterance: props.speechSynthesisUtterance
},
_react2.default.createElement(
_SayPrimitive2.default,
{
lang: props.lang,
onBoundary: props.onBoundary,
onEnd: props.onEnd,
onError: props.onError,
onStart: props.onStart,
pitch: props.pitch,
rate: props.rate,
speak: props.speak,
voice: props.voice,
volume: props.volume
},
props.children
)
);
};
var Say = function (_React$Component) {
_inherits(Say, _React$Component);
Say.defaultProps = {
speechSynthesis: window.speechSynthesis || window.webkitSpeechSynthesis,
speechSynthesisUtterance: window.SpeechSynthesisUtterance || window.webkitSpeechSynthesisUtterance
};
function Say() {
_classCallCheck(this, Say);
return _possibleConstructorReturn(this, (Say.__proto__ || Object.getPrototypeOf(Say)).apply(this, arguments));
}
_createClass(Say, [{
key: 'shouldComponentUpdate',
value: function shouldComponentUpdate(nextProps) {
return nextProps.text !== this.props.text;
}
}, {
key: 'render',
value: function render() {
var _props = this.props,
lang = _props.lang,
pitch = _props.pitch,
rate = _props.rate,
text = _props.text,
voice = _props.voice,
volume = _props.volume;
return _react2.default.createElement(
_Context2.default.Consumer,
null,
function (context) {
return context.speak({ lang: lang, pitch: pitch, rate: rate, text: text, voice: voice, volume: volume });
}
);
}
}]);
return Say;
}(_react2.default.Component);
exports.default = Say;
Say.propTypes = {
lang: _propTypes2.default.string,
onBoundary: _propTypes2.default.func,
onEnd: _propTypes2.default.func,
onError: _propTypes2.default.func,
onStart: _propTypes2.default.func,
pitch: _propTypes2.default.number,
rate: _propTypes2.default.number,
onEnd: _propTypes2.default.func,
onStart: _propTypes2.default.func,
text: _propTypes2.default.string,
voice: _propTypes2.default.any,
speechSynthesis: _propTypes2.default.any,
speechSynthesisUtterance: _propTypes2.default.any,
speak: _propTypes2.default.string,
voice: _propTypes2.default.oneOfType([_propTypes2.default.any, _propTypes2.default.func]),
volume: _propTypes2.default.number
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9TYXkuanMiXSwibmFtZXMiOlsiU2F5IiwibmV4dFByb3BzIiwidGV4dCIsInByb3BzIiwibGFuZyIsInBpdGNoIiwicmF0ZSIsInZvaWNlIiwidm9sdW1lIiwiY29udGV4dCIsInNwZWFrIiwiUmVhY3QiLCJDb21wb25lbnQiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJzdHJpbmciLCJudW1iZXIiLCJvbkVuZCIsImZ1bmMiLCJvblN0YXJ0IiwiYW55Il0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFFQTs7Ozs7Ozs7Ozs7O0lBRXFCQSxHOzs7Ozs7Ozs7OzswQ0FDR0MsUyxFQUFXO0FBQy9CLGFBQU9BLFVBQVVDLElBQVYsS0FBbUIsS0FBS0MsS0FBTCxDQUFXRCxJQUFyQztBQUNEOzs7NkJBRVE7QUFBQSxtQkFDNEMsS0FBS0MsS0FEakQ7QUFBQSxVQUNDQyxJQURELFVBQ0NBLElBREQ7QUFBQSxVQUNPQyxLQURQLFVBQ09BLEtBRFA7QUFBQSxVQUNjQyxJQURkLFVBQ2NBLElBRGQ7QUFBQSxVQUNvQkosSUFEcEIsVUFDb0JBLElBRHBCO0FBQUEsVUFDMEJLLEtBRDFCLFVBQzBCQSxLQUQxQjtBQUFBLFVBQ2lDQyxNQURqQyxVQUNpQ0EsTUFEakM7OztBQUdQLGFBQ0U7QUFBQyx5QkFBRCxDQUFTLFFBQVQ7QUFBQTtBQUNJO0FBQUEsaUJBQVdDLFFBQVFDLEtBQVIsQ0FBYyxFQUFFTixVQUFGLEVBQVFDLFlBQVIsRUFBZUMsVUFBZixFQUFxQkosVUFBckIsRUFBMkJLLFlBQTNCLEVBQWtDQyxjQUFsQyxFQUFkLENBQVg7QUFBQTtBQURKLE9BREY7QUFLRDs7OztFQWI4QkcsZ0JBQU1DLFM7O2tCQUFsQlosRzs7O0FBZ0JyQkEsSUFBSWEsU0FBSixHQUFnQjtBQUNkVCxRQUFNVSxvQkFBVUMsTUFERjtBQUVkVixTQUFPUyxvQkFBVUUsTUFGSDtBQUdkVixRQUFNUSxvQkFBVUUsTUFIRjtBQUlkQyxTQUFPSCxvQkFBVUksSUFKSDtBQUtkQyxXQUFTTCxvQkFBVUksSUFMTDtBQU1kaEIsUUFBTVksb0JBQVVDLE1BTkY7QUFPZFIsU0FBT08sb0JBQVVNLEdBUEg7QUFRZFosVUFBUU0sb0JBQVVFO0FBUkosQ0FBaEIiLCJmaWxlIjoiU2F5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCBDb250ZXh0IGZyb20gJy4vQ29udGV4dCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNheSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHNob3VsZENvbXBvbmVudFVwZGF0ZShuZXh0UHJvcHMpIHtcbiAgICByZXR1cm4gbmV4dFByb3BzLnRleHQgIT09IHRoaXMucHJvcHMudGV4dDtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGxhbmcsIHBpdGNoLCByYXRlLCB0ZXh0LCB2b2ljZSwgdm9sdW1lIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICB7IGNvbnRleHQgPT4gY29udGV4dC5zcGVhayh7IGxhbmcsIHBpdGNoLCByYXRlLCB0ZXh0LCB2b2ljZSwgdm9sdW1lIH0pIH1cbiAgICAgIDwvQ29udGV4dC5Db25zdW1lcj5cbiAgICApO1xuICB9XG59XG5cblNheS5wcm9wVHlwZXMgPSB7XG4gIGxhbmc6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHBpdGNoOiBQcm9wVHlwZXMubnVtYmVyLFxuICByYXRlOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvbkVuZDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU3RhcnQ6IFByb3BUeXBlcy5mdW5jLFxuICB0ZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICB2b2ljZTogUHJvcFR5cGVzLmFueSxcbiAgdm9sdW1lOiBQcm9wVHlwZXMubnVtYmVyXG59O1xuIl19
exports.default = Say;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9TYXkuanMiXSwibmFtZXMiOlsiU2F5IiwicHJvcHMiLCJzcGVlY2hTeW50aGVzaXMiLCJzcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UiLCJsYW5nIiwib25Cb3VuZGFyeSIsIm9uRW5kIiwib25FcnJvciIsIm9uU3RhcnQiLCJwaXRjaCIsInJhdGUiLCJzcGVhayIsInZvaWNlIiwidm9sdW1lIiwiY2hpbGRyZW4iLCJkZWZhdWx0UHJvcHMiLCJ3aW5kb3ciLCJ3ZWJraXRTcGVlY2hTeW50aGVzaXMiLCJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UiLCJ3ZWJraXRTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJzdHJpbmciLCJmdW5jIiwibnVtYmVyIiwiYW55Iiwib25lT2ZUeXBlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7OztBQUNBOzs7O0FBRUE7Ozs7QUFDQTs7Ozs7O0FBRUEsSUFBTUEsTUFBTSxTQUFOQSxHQUFNO0FBQUEsU0FDVjtBQUFDLHNCQUFEO0FBQUE7QUFDRSx1QkFBa0JDLE1BQU1DLGVBRDFCO0FBRUUsZ0NBQTJCRCxNQUFNRTtBQUZuQztBQUlFO0FBQUMsNEJBQUQ7QUFBQTtBQUNFLGNBQU9GLE1BQU1HLElBRGY7QUFFRSxvQkFBYUgsTUFBTUksVUFGckI7QUFHRSxlQUFRSixNQUFNSyxLQUhoQjtBQUlFLGlCQUFVTCxNQUFNTSxPQUpsQjtBQUtFLGlCQUFVTixNQUFNTyxPQUxsQjtBQU1FLGVBQVFQLE1BQU1RLEtBTmhCO0FBT0UsY0FBT1IsTUFBTVMsSUFQZjtBQVFFLGVBQVFULE1BQU1VLEtBUmhCO0FBU0UsZUFBUVYsTUFBTVcsS0FUaEI7QUFVRSxnQkFBU1gsTUFBTVk7QUFWakI7QUFZSVosWUFBTWE7QUFaVjtBQUpGLEdBRFU7QUFBQSxDQUFaOztBQXFCQWQsSUFBSWUsWUFBSixHQUFtQjtBQUNqQmIsbUJBQWlCYyxPQUFPZCxlQUFQLElBQTBCYyxPQUFPQyxxQkFEakM7QUFFakJkLDRCQUEwQmEsT0FBT0Usd0JBQVAsSUFBbUNGLE9BQU9HO0FBRm5ELENBQW5COztBQUtBbkIsSUFBSW9CLFNBQUosR0FBZ0I7QUFDZGhCLFFBQU1pQixvQkFBVUMsTUFERjtBQUVkakIsY0FBWWdCLG9CQUFVRSxJQUZSO0FBR2RqQixTQUFPZSxvQkFBVUUsSUFISDtBQUlkaEIsV0FBU2Msb0JBQVVFLElBSkw7QUFLZGYsV0FBU2Esb0JBQVVFLElBTEw7QUFNZGQsU0FBT1ksb0JBQVVHLE1BTkg7QUFPZGQsUUFBTVcsb0JBQVVHLE1BUEY7QUFRZHRCLG1CQUFpQm1CLG9CQUFVSSxHQVJiO0FBU2R0Qiw0QkFBMEJrQixvQkFBVUksR0FUdEI7QUFVZGQsU0FBT1Usb0JBQVVDLE1BVkg7QUFXZFYsU0FBT1Msb0JBQVVLLFNBQVYsQ0FBb0IsQ0FBQ0wsb0JBQVVJLEdBQVgsRUFBZ0JKLG9CQUFVRSxJQUExQixDQUFwQixDQVhPO0FBWWRWLFVBQVFRLG9CQUFVRztBQVpKLENBQWhCOztrQkFlZXhCLEciLCJmaWxlIjoiU2F5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCBDb21wb3NlciBmcm9tICcuL0NvbXBvc2VyJztcbmltcG9ydCBTYXlQcmltaXRpdmUgZnJvbSAnLi9TYXlQcmltaXRpdmUnO1xuXG5jb25zdCBTYXkgPSBwcm9wcyA9PlxuICA8Q29tcG9zZXJcbiAgICBzcGVlY2hTeW50aGVzaXM9eyBwcm9wcy5zcGVlY2hTeW50aGVzaXMgfVxuICAgIHNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT17IHByb3BzLnNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSB9XG4gID5cbiAgICA8U2F5UHJpbWl0aXZlXG4gICAgICBsYW5nPXsgcHJvcHMubGFuZyB9XG4gICAgICBvbkJvdW5kYXJ5PXsgcHJvcHMub25Cb3VuZGFyeSB9XG4gICAgICBvbkVuZD17IHByb3BzLm9uRW5kIH1cbiAgICAgIG9uRXJyb3I9eyBwcm9wcy5vbkVycm9yIH1cbiAgICAgIG9uU3RhcnQ9eyBwcm9wcy5vblN0YXJ0IH1cbiAgICAgIHBpdGNoPXsgcHJvcHMucGl0Y2ggfVxuICAgICAgcmF0ZT17IHByb3BzLnJhdGUgfVxuICAgICAgc3BlYWs9eyBwcm9wcy5zcGVhayB9XG4gICAgICB2b2ljZT17IHByb3BzLnZvaWNlIH1cbiAgICAgIHZvbHVtZT17IHByb3BzLnZvbHVtZSB9XG4gICAgPlxuICAgICAgeyBwcm9wcy5jaGlsZHJlbiB9XG4gICAgPC9TYXlQcmltaXRpdmU+XG4gIDwvQ29tcG9zZXI+XG5cblNheS5kZWZhdWx0UHJvcHMgPSB7XG4gIHNwZWVjaFN5bnRoZXNpczogd2luZG93LnNwZWVjaFN5bnRoZXNpcyB8fCB3aW5kb3cud2Via2l0U3BlZWNoU3ludGhlc2lzLFxuICBzcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6IHdpbmRvdy5TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UgfHwgd2luZG93LndlYmtpdFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZVxufTtcblxuU2F5LnByb3BUeXBlcyA9IHtcbiAgbGFuZzogUHJvcFR5cGVzLnN0cmluZyxcbiAgb25Cb3VuZGFyeTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRW5kOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25FcnJvcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU3RhcnQ6IFByb3BUeXBlcy5mdW5jLFxuICBwaXRjaDogUHJvcFR5cGVzLm51bWJlcixcbiAgcmF0ZTogUHJvcFR5cGVzLm51bWJlcixcbiAgc3BlZWNoU3ludGhlc2lzOiBQcm9wVHlwZXMuYW55LFxuICBzcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6IFByb3BUeXBlcy5hbnksXG4gIHNwZWFrOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB2b2ljZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFueSwgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgdm9sdW1lOiBQcm9wVHlwZXMubnVtYmVyXG59O1xuXG5leHBvcnQgZGVmYXVsdCBTYXlcbiJdfQ==

@@ -7,2 +7,6 @@ 'use strict';

var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _react = require('react');

@@ -18,3 +22,3 @@

exports.default = function (props) {
var SayButton = function SayButton(props) {
return _react2.default.createElement(

@@ -29,5 +33,9 @@ _Context2.default.Consumer,

lang: props.lang,
onBoundary: props.onBoundary,
onEnd: props.onEnd,
onError: props.onError,
onStart: props.onStart,
pitch: props.pitch,
rate: props.rate,
text: props.text,
text: props.speak,
voice: props.voice,

@@ -43,2 +51,17 @@ volume: props.volume

};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9TYXlCdXR0b24uanMiXSwibmFtZXMiOlsiY29udGV4dCIsInNwZWFrIiwibGFuZyIsInByb3BzIiwicGl0Y2giLCJyYXRlIiwidGV4dCIsInZvaWNlIiwidm9sdW1lIiwib25DbGljayIsImV2ZW50IiwiY2hpbGRyZW4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7O0FBRUE7Ozs7OztrQkFFZTtBQUFBLFNBQ2I7QUFBQyxxQkFBRCxDQUFTLFFBQVQ7QUFBQTtBQUNJO0FBQUEsYUFDQTtBQUFBO0FBQUEsVUFBUSxTQUFVLHdCQUFTO0FBQ3pCQSxvQkFBUUMsS0FBUixDQUFjO0FBQ1pDLG9CQUFNQyxNQUFNRCxJQURBO0FBRVpFLHFCQUFPRCxNQUFNQyxLQUZEO0FBR1pDLG9CQUFNRixNQUFNRSxJQUhBO0FBSVpDLG9CQUFNSCxNQUFNRyxJQUpBO0FBS1pDLHFCQUFPSixNQUFNSSxLQUxEO0FBTVpDLHNCQUFRTCxNQUFNSztBQU5GLGFBQWQ7QUFRQUwsa0JBQU1NLE9BQU4sSUFBaUJOLE1BQU1NLE9BQU4sQ0FBY0MsS0FBZCxDQUFqQjtBQUNELFdBVkQ7QUFXSVAsY0FBTVE7QUFYVixPQURBO0FBQUE7QUFESixHQURhO0FBQUEsQyIsImZpbGUiOiJTYXlCdXR0b24uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgQ29udGV4dCBmcm9tICcuL0NvbnRleHQnO1xuXG5leHBvcnQgZGVmYXVsdCBwcm9wcyA9PlxuICA8Q29udGV4dC5Db25zdW1lcj5cbiAgICB7IGNvbnRleHQgPT5cbiAgICAgIDxidXR0b24gb25DbGljaz17IGV2ZW50ID0+IHtcbiAgICAgICAgY29udGV4dC5zcGVhayh7XG4gICAgICAgICAgbGFuZzogcHJvcHMubGFuZyxcbiAgICAgICAgICBwaXRjaDogcHJvcHMucGl0Y2gsXG4gICAgICAgICAgcmF0ZTogcHJvcHMucmF0ZSxcbiAgICAgICAgICB0ZXh0OiBwcm9wcy50ZXh0LFxuICAgICAgICAgIHZvaWNlOiBwcm9wcy52b2ljZSxcbiAgICAgICAgICB2b2x1bWU6IHByb3BzLnZvbHVtZVxuICAgICAgICB9KTtcbiAgICAgICAgcHJvcHMub25DbGljayAmJiBwcm9wcy5vbkNsaWNrKGV2ZW50KTtcbiAgICAgIH0gfT5cbiAgICAgICAgeyBwcm9wcy5jaGlsZHJlbiB9XG4gICAgICA8L2J1dHRvbj5cbiAgICB9XG4gIDwvQ29udGV4dC5Db25zdW1lcj5cbiJdfQ==
SayButton.propTypes = {
lang: _propTypes2.default.string,
onBoundary: _propTypes2.default.func,
onEnd: _propTypes2.default.func,
onError: _propTypes2.default.func,
onStart: _propTypes2.default.func,
pitch: _propTypes2.default.number,
rate: _propTypes2.default.number,
speak: _propTypes2.default.string,
voice: _propTypes2.default.oneOfType([_propTypes2.default.any, _propTypes2.default.func]),
volume: _propTypes2.default.number
};
exports.default = SayButton;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9TYXlCdXR0b24uanMiXSwibmFtZXMiOlsiU2F5QnV0dG9uIiwiY29udGV4dCIsInNwZWFrIiwibGFuZyIsInByb3BzIiwib25Cb3VuZGFyeSIsIm9uRW5kIiwib25FcnJvciIsIm9uU3RhcnQiLCJwaXRjaCIsInJhdGUiLCJ0ZXh0Iiwidm9pY2UiLCJ2b2x1bWUiLCJvbkNsaWNrIiwiZXZlbnQiLCJjaGlsZHJlbiIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsInN0cmluZyIsImZ1bmMiLCJudW1iZXIiLCJvbmVPZlR5cGUiLCJhbnkiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFFQTs7Ozs7O0FBRUEsSUFBTUEsWUFBWSxTQUFaQSxTQUFZO0FBQUEsU0FDaEI7QUFBQyxxQkFBRCxDQUFTLFFBQVQ7QUFBQTtBQUNJO0FBQUEsYUFDQTtBQUFBO0FBQUEsVUFBUSxTQUFVLHdCQUFTO0FBQ3pCQyxvQkFBUUMsS0FBUixDQUFjO0FBQ1pDLG9CQUFNQyxNQUFNRCxJQURBO0FBRVpFLDBCQUFZRCxNQUFNQyxVQUZOO0FBR1pDLHFCQUFPRixNQUFNRSxLQUhEO0FBSVpDLHVCQUFTSCxNQUFNRyxPQUpIO0FBS1pDLHVCQUFTSixNQUFNSSxPQUxIO0FBTVpDLHFCQUFPTCxNQUFNSyxLQU5EO0FBT1pDLG9CQUFNTixNQUFNTSxJQVBBO0FBUVpDLG9CQUFNUCxNQUFNRixLQVJBO0FBU1pVLHFCQUFPUixNQUFNUSxLQVREO0FBVVpDLHNCQUFRVCxNQUFNUztBQVZGLGFBQWQ7QUFZQVQsa0JBQU1VLE9BQU4sSUFBaUJWLE1BQU1VLE9BQU4sQ0FBY0MsS0FBZCxDQUFqQjtBQUNELFdBZEQ7QUFlSVgsY0FBTVk7QUFmVixPQURBO0FBQUE7QUFESixHQURnQjtBQUFBLENBQWxCOztBQXVCQWhCLFVBQVVpQixTQUFWLEdBQXNCO0FBQ3BCZCxRQUFNZSxvQkFBVUMsTUFESTtBQUVwQmQsY0FBWWEsb0JBQVVFLElBRkY7QUFHcEJkLFNBQU9ZLG9CQUFVRSxJQUhHO0FBSXBCYixXQUFTVyxvQkFBVUUsSUFKQztBQUtwQlosV0FBU1Usb0JBQVVFLElBTEM7QUFNcEJYLFNBQU9TLG9CQUFVRyxNQU5HO0FBT3BCWCxRQUFNUSxvQkFBVUcsTUFQSTtBQVFwQm5CLFNBQU9nQixvQkFBVUMsTUFSRztBQVNwQlAsU0FBT00sb0JBQVVJLFNBQVYsQ0FBb0IsQ0FBQ0osb0JBQVVLLEdBQVgsRUFBZ0JMLG9CQUFVRSxJQUExQixDQUFwQixDQVRhO0FBVXBCUCxVQUFRSyxvQkFBVUc7QUFWRSxDQUF0Qjs7a0JBYWVyQixTIiwiZmlsZSI6IlNheUJ1dHRvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgQ29udGV4dCBmcm9tICcuL0NvbnRleHQnO1xuXG5jb25zdCBTYXlCdXR0b24gPSBwcm9wcyA9PlxuICA8Q29udGV4dC5Db25zdW1lcj5cbiAgICB7IGNvbnRleHQgPT5cbiAgICAgIDxidXR0b24gb25DbGljaz17IGV2ZW50ID0+IHtcbiAgICAgICAgY29udGV4dC5zcGVhayh7XG4gICAgICAgICAgbGFuZzogcHJvcHMubGFuZyxcbiAgICAgICAgICBvbkJvdW5kYXJ5OiBwcm9wcy5vbkJvdW5kYXJ5LFxuICAgICAgICAgIG9uRW5kOiBwcm9wcy5vbkVuZCxcbiAgICAgICAgICBvbkVycm9yOiBwcm9wcy5vbkVycm9yLFxuICAgICAgICAgIG9uU3RhcnQ6IHByb3BzLm9uU3RhcnQsXG4gICAgICAgICAgcGl0Y2g6IHByb3BzLnBpdGNoLFxuICAgICAgICAgIHJhdGU6IHByb3BzLnJhdGUsXG4gICAgICAgICAgdGV4dDogcHJvcHMuc3BlYWssXG4gICAgICAgICAgdm9pY2U6IHByb3BzLnZvaWNlLFxuICAgICAgICAgIHZvbHVtZTogcHJvcHMudm9sdW1lXG4gICAgICAgIH0pO1xuICAgICAgICBwcm9wcy5vbkNsaWNrICYmIHByb3BzLm9uQ2xpY2soZXZlbnQpO1xuICAgICAgfSB9PlxuICAgICAgICB7IHByb3BzLmNoaWxkcmVuIH1cbiAgICAgIDwvYnV0dG9uPlxuICAgIH1cbiAgPC9Db250ZXh0LkNvbnN1bWVyPlxuXG5TYXlCdXR0b24ucHJvcFR5cGVzID0ge1xuICBsYW5nOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBvbkJvdW5kYXJ5OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25FbmQ6IFByb3BUeXBlcy5mdW5jLFxuICBvbkVycm9yOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TdGFydDogUHJvcFR5cGVzLmZ1bmMsXG4gIHBpdGNoOiBQcm9wVHlwZXMubnVtYmVyLFxuICByYXRlOiBQcm9wVHlwZXMubnVtYmVyLFxuICBzcGVhazogUHJvcFR5cGVzLnN0cmluZyxcbiAgdm9pY2U6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hbnksIFByb3BUeXBlcy5mdW5jXSksXG4gIHZvbHVtZTogUHJvcFR5cGVzLm51bWJlclxufTtcblxuZXhwb3J0IGRlZmF1bHQgU2F5QnV0dG9uO1xuIl19
{
"name": "react-say",
"version": "0.0.1-master.d7ce791",
"version": "0.0.1-master.f9fa4b6",
"description": "A React component that synthesis text into speech using Web Speech API",

@@ -5,0 +5,0 @@ "keywords": [],

@@ -22,26 +22,22 @@ # react-say

```jsx
import BasicSay from 'react-say';
import Say from 'react-say';
export default props =>
<BasicSay
text="A quick brown fox jumped over the lazy dogs."
/>
<Say speak="A quick brown fox jumped over the lazy dogs." />
```
## Customizing pitch/rate
## Customizing pitch/rate/volume
You may want to customize the speech by varying pitch and rate. You can use `<Composer>` and `<Say>` to say your text.
You may want to customize the speech by varying pitch, rate, and volume. You can use `<Composer>` and `<Say>` to say your text.
```jsx
import { Composer, Say } from 'react-say';
import Say from 'react-say';
export default props =>
<Composer
<Say
pitch={ 1.1 }
rate={ 1.5 }
>
<Say
text="A quick brown fox jumped over the lazy dogs."
/>
</Composer>
speak="A quick brown fox jumped over the lazy dogs."
volume={ .8 }
/>
```

@@ -53,18 +49,32 @@

Since some browsers may block speak synthesis before the user interacting with the page, you can use `<SayButton>` for the purpose.
You may want to say something after the user interacted with the page, for example, after clicking on a button. We have built `<SayButton>` that speak immediately after clicking on it. Some browsers may requires "priming" with a button.
```jsx
import { Composer, SayButton } from 'react-say';
import { SayButton } from 'react-say';
export default props =>
<Composer>
<SayButton
onClick={ event => console.log(event) }
text="A quick brown fox jumped over the lazy dogs."
>
Tell me a story
</SayButton>
</Composer>
<SayButton
onClick={ event => console.log(event) }
speak="A quick brown fox jumped over the lazy dogs."
>
Tell me a story
</SayButton>
```
## Selecting voice
Instead of passing a `SpeechSynthesisVoice` object, you can pass a function `(voices: SpeechSynthesisVoice[]) => SpeechSynthesisVoice` to select the voice just before the text is synthesized.
```jsx
import Say from 'react-say';
export default props =>
<Say
speak="A quick brown fox jumped over the lazy dogs."
voice={ voices => [].find.call(voices, v => v.lang === 'zh-HK') }
/>
```
> Note: it also works with `<SayButton>`.
# Contributions

@@ -71,0 +81,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc