react-say
Version:
[](https://badge.fury.io/js/react-say) [](https://travis-ci.org/compulim/react-say)
82 lines (70 loc) • 6.98 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = createMockSpeechSynthesisPonyfill;
exports.jestFnWithPromises = jestFnWithPromises;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _createDeferred = _interopRequireDefault(require("./createDeferred"));
var _events = _interopRequireDefault(require("events"));
function jestFnWithPromises(implementation) {
var fn = jest.fn(function () {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
fn.deferreds[fn.deferreds.length - 1].resolve(args);
fn.deferreds = [].concat((0, _toConsumableArray2["default"])(fn.deferreds), [(0, _createDeferred["default"])()]);
fn.promises = fn.deferreds.map(function (_ref) {
var promise = _ref.promise;
return promise;
});
implementation && implementation.apply(void 0, args);
});
var firstDeferred = (0, _createDeferred["default"])();
fn.deferreds = [firstDeferred];
fn.promises = [firstDeferred.promise];
return fn;
}
function createMockSpeechSynthesisPonyfill() {
var SpeechSynthesisUtterance = /*#__PURE__*/function () {
function SpeechSynthesisUtterance(text) {
(0, _classCallCheck2["default"])(this, SpeechSynthesisUtterance);
this._events = new _events["default"]();
this.text = text;
}
(0, _createClass2["default"])(SpeechSynthesisUtterance, [{
key: "addEventListener",
value: function addEventListener(name, handler) {
this._events.addListener(name, handler);
}
}, {
key: "dispatchEvent",
value: function dispatchEvent(event) {
this._events.emit(event.type, event);
}
}, {
key: "removeEventListener",
value: function removeEventListener(name, handler) {
this._events.removeListener(name, handler);
}
}]);
return SpeechSynthesisUtterance;
}();
return {
speechSynthesis: {
cancel: jestFnWithPromises(),
getVoices: function getVoices() {
return [{
name: 'Cantonese',
voiceURI: 'http://localhost/voice/zh-YUE'
}];
},
speak: jestFnWithPromises()
},
SpeechSynthesisUtterance: SpeechSynthesisUtterance
};
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jcmVhdGVNb2NrU3BlZWNoU3ludGhlc2lzUG9ueWZpbGwuanMiXSwibmFtZXMiOlsiamVzdEZuV2l0aFByb21pc2VzIiwiaW1wbGVtZW50YXRpb24iLCJmbiIsImplc3QiLCJhcmdzIiwiZGVmZXJyZWRzIiwibGVuZ3RoIiwicmVzb2x2ZSIsInByb21pc2VzIiwibWFwIiwicHJvbWlzZSIsImZpcnN0RGVmZXJyZWQiLCJjcmVhdGVNb2NrU3BlZWNoU3ludGhlc2lzUG9ueWZpbGwiLCJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UiLCJ0ZXh0IiwiX2V2ZW50cyIsIkV2ZW50RW1pdHRlciIsIm5hbWUiLCJoYW5kbGVyIiwiYWRkTGlzdGVuZXIiLCJldmVudCIsImVtaXQiLCJ0eXBlIiwicmVtb3ZlTGlzdGVuZXIiLCJzcGVlY2hTeW50aGVzaXMiLCJjYW5jZWwiLCJnZXRWb2ljZXMiLCJ2b2ljZVVSSSIsInNwZWFrIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBRU8sU0FBU0Esa0JBQVQsQ0FBNEJDLGNBQTVCLEVBQTRDO0FBQ2pELE1BQU1DLEVBQUUsR0FBR0MsSUFBSSxDQUFDRCxFQUFMLENBQVEsWUFBYTtBQUFBLHNDQUFURSxJQUFTO0FBQVRBLE1BQUFBLElBQVM7QUFBQTs7QUFDOUJGLElBQUFBLEVBQUUsQ0FBQ0csU0FBSCxDQUFhSCxFQUFFLENBQUNHLFNBQUgsQ0FBYUMsTUFBYixHQUFzQixDQUFuQyxFQUFzQ0MsT0FBdEMsQ0FBOENILElBQTlDO0FBQ0FGLElBQUFBLEVBQUUsQ0FBQ0csU0FBSCxpREFBbUJILEVBQUUsQ0FBQ0csU0FBdEIsSUFBaUMsaUNBQWpDO0FBQ0FILElBQUFBLEVBQUUsQ0FBQ00sUUFBSCxHQUFjTixFQUFFLENBQUNHLFNBQUgsQ0FBYUksR0FBYixDQUFpQjtBQUFBLFVBQUdDLE9BQUgsUUFBR0EsT0FBSDtBQUFBLGFBQWlCQSxPQUFqQjtBQUFBLEtBQWpCLENBQWQ7QUFFQVQsSUFBQUEsY0FBYyxJQUFJQSxjQUFjLE1BQWQsU0FBa0JHLElBQWxCLENBQWxCO0FBQ0QsR0FOVSxDQUFYO0FBUUEsTUFBTU8sYUFBYSxHQUFHLGlDQUF0QjtBQUVBVCxFQUFBQSxFQUFFLENBQUNHLFNBQUgsR0FBZSxDQUFDTSxhQUFELENBQWY7QUFDQVQsRUFBQUEsRUFBRSxDQUFDTSxRQUFILEdBQWMsQ0FBQ0csYUFBYSxDQUFDRCxPQUFmLENBQWQ7QUFFQSxTQUFPUixFQUFQO0FBQ0Q7O0FBRWMsU0FBU1UsaUNBQVQsR0FBNkM7QUFBQSxNQUNwREMsd0JBRG9EO0FBRXhELHNDQUFZQyxJQUFaLEVBQWtCO0FBQUE7QUFDaEIsV0FBS0MsT0FBTCxHQUFlLElBQUlDLGtCQUFKLEVBQWY7QUFFQSxXQUFLRixJQUFMLEdBQVlBLElBQVo7QUFDRDs7QUFOdUQ7QUFBQTtBQUFBLGFBUXhELDBCQUFpQkcsSUFBakIsRUFBdUJDLE9BQXZCLEVBQWdDO0FBQzlCLGFBQUtILE9BQUwsQ0FBYUksV0FBYixDQUF5QkYsSUFBekIsRUFBK0JDLE9BQS9CO0FBQ0Q7QUFWdUQ7QUFBQTtBQUFBLGFBWXhELHVCQUFjRSxLQUFkLEVBQXFCO0FBQ25CLGFBQUtMLE9BQUwsQ0FBYU0sSUFBYixDQUFrQkQsS0FBSyxDQUFDRSxJQUF4QixFQUE4QkYsS0FBOUI7QUFDRDtBQWR1RDtBQUFBO0FBQUEsYUFnQnhELDZCQUFvQkgsSUFBcEIsRUFBMEJDLE9BQTFCLEVBQW1DO0FBQ2pDLGFBQUtILE9BQUwsQ0FBYVEsY0FBYixDQUE0Qk4sSUFBNUIsRUFBa0NDLE9BQWxDO0FBQ0Q7QUFsQnVEO0FBQUE7QUFBQTs7QUFxQjFELFNBQU87QUFDTE0sSUFBQUEsZUFBZSxFQUFFO0FBQ2ZDLE1BQUFBLE1BQU0sRUFBRXpCLGtCQUFrQixFQURYO0FBRWYwQixNQUFBQSxTQUFTLEVBQUU7QUFBQSxlQUFNLENBQUM7QUFDaEJULFVBQUFBLElBQUksRUFBRSxXQURVO0FBRWhCVSxVQUFBQSxRQUFRLEVBQUU7QUFGTSxTQUFELENBQU47QUFBQSxPQUZJO0FBTWZDLE1BQUFBLEtBQUssRUFBRTVCLGtCQUFrQjtBQU5WLEtBRFo7QUFTTGEsSUFBQUEsd0JBQXdCLEVBQXhCQTtBQVRLLEdBQVA7QUFXRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcmVhdGVEZWZlcnJlZCBmcm9tICcuL2NyZWF0ZURlZmVycmVkJztcbmltcG9ydCBFdmVudEVtaXR0ZXIgZnJvbSAnZXZlbnRzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGplc3RGbldpdGhQcm9taXNlcyhpbXBsZW1lbnRhdGlvbikge1xuICBjb25zdCBmbiA9IGplc3QuZm4oKC4uLmFyZ3MpID0+IHtcbiAgICBmbi5kZWZlcnJlZHNbZm4uZGVmZXJyZWRzLmxlbmd0aCAtIDFdLnJlc29sdmUoYXJncyk7XG4gICAgZm4uZGVmZXJyZWRzID0gWy4uLmZuLmRlZmVycmVkcywgY3JlYXRlRGVmZXJyZWQoKV07XG4gICAgZm4ucHJvbWlzZXMgPSBmbi5kZWZlcnJlZHMubWFwKCh7IHByb21pc2UgfSkgPT4gcHJvbWlzZSk7XG5cbiAgICBpbXBsZW1lbnRhdGlvbiAmJiBpbXBsZW1lbnRhdGlvbiguLi5hcmdzKTtcbiAgfSk7XG5cbiAgY29uc3QgZmlyc3REZWZlcnJlZCA9IGNyZWF0ZURlZmVycmVkKCk7XG5cbiAgZm4uZGVmZXJyZWRzID0gW2ZpcnN0RGVmZXJyZWRdO1xuICBmbi5wcm9taXNlcyA9IFtmaXJzdERlZmVycmVkLnByb21pc2VdO1xuXG4gIHJldHVybiBmbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlTW9ja1NwZWVjaFN5bnRoZXNpc1BvbnlmaWxsKCkge1xuICBjbGFzcyBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Uge1xuICAgIGNvbnN0cnVjdG9yKHRleHQpIHtcbiAgICAgIHRoaXMuX2V2ZW50cyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgICAgdGhpcy50ZXh0ID0gdGV4dDtcbiAgICB9XG5cbiAgICBhZGRFdmVudExpc3RlbmVyKG5hbWUsIGhhbmRsZXIpIHtcbiAgICAgIHRoaXMuX2V2ZW50cy5hZGRMaXN0ZW5lcihuYW1lLCBoYW5kbGVyKTtcbiAgICB9XG5cbiAgICBkaXNwYXRjaEV2ZW50KGV2ZW50KSB7XG4gICAgICB0aGlzLl9ldmVudHMuZW1pdChldmVudC50eXBlLCBldmVudCk7XG4gICAgfVxuXG4gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcihuYW1lLCBoYW5kbGVyKSB7XG4gICAgICB0aGlzLl9ldmVudHMucmVtb3ZlTGlzdGVuZXIobmFtZSwgaGFuZGxlcik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzcGVlY2hTeW50aGVzaXM6IHtcbiAgICAgIGNhbmNlbDogamVzdEZuV2l0aFByb21pc2VzKCksXG4gICAgICBnZXRWb2ljZXM6ICgpID0+IFt7XG4gICAgICAgIG5hbWU6ICdDYW50b25lc2UnLFxuICAgICAgICB2b2ljZVVSSTogJ2h0dHA6Ly9sb2NhbGhvc3Qvdm9pY2UvemgtWVVFJ1xuICAgICAgfV0sXG4gICAgICBzcGVhazogamVzdEZuV2l0aFByb21pc2VzKClcbiAgICB9LFxuICAgIFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZVxuICB9O1xufVxuIl19