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)

123 lines (102 loc) 8.37 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = createSynthesize; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _QueuedUtterance = _interopRequireDefault(require("./QueuedUtterance")); function createSynthesize() { var queueWithCurrent = []; var running; var run = /*#__PURE__*/function () { var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() { return _regenerator["default"].wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: if (!running) { _context2.next = 2; break; } return _context2.abrupt("return"); case 2: running = true; _context2.prev = 3; return _context2.delegateYield( /*#__PURE__*/_regenerator["default"].mark(function _callee() { var queuedUtterance; return _regenerator["default"].wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: if (!(queuedUtterance = queueWithCurrent[0])) { _context.next = 12; break; } _context.prev = 1; _context.next = 4; return queuedUtterance.speak(); case 4: _context.next = 9; break; case 6: _context.prev = 6; _context.t0 = _context["catch"](1); // TODO: If the error is due to Safari restriction on user touch // The next loop on the next audio will also fail because it was not queued with a user touch _context.t0.message !== 'cancelled' && console.error(_context.t0); case 9: queueWithCurrent = queueWithCurrent.filter(function (target) { return target !== queuedUtterance; }); _context.next = 0; break; case 12: case "end": return _context.stop(); } } }, _callee, null, [[1, 6]]); })(), "t0", 5); case 5: _context2.prev = 5; running = false; return _context2.finish(5); case 8: case "end": return _context2.stop(); } } }, _callee2, null, [[3,, 5, 8]]); })); return function run() { return _ref.apply(this, arguments); }; }(); return function (ponyfill, utterance) { var _ref2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}, onEnd = _ref2.onEnd, onError = _ref2.onError, onStart = _ref2.onStart; if (!(utterance instanceof ponyfill.SpeechSynthesisUtterance)) { throw new Error('utterance must be instance of the ponyfill'); } var queuedUtterance = new _QueuedUtterance["default"](ponyfill, utterance, { onEnd: onEnd, onError: onError, onStart: onStart }); queueWithCurrent = [].concat((0, _toConsumableArray2["default"])(queueWithCurrent), [queuedUtterance]); run(); return { // The cancel() function returns a Promise cancel: function cancel() { return queuedUtterance.cancel(); }, promise: queuedUtterance.promise }; }; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jcmVhdGVTeW50aGVzaXplLmpzIl0sIm5hbWVzIjpbImNyZWF0ZVN5bnRoZXNpemUiLCJxdWV1ZVdpdGhDdXJyZW50IiwicnVubmluZyIsInJ1biIsInF1ZXVlZFV0dGVyYW5jZSIsInNwZWFrIiwibWVzc2FnZSIsImNvbnNvbGUiLCJlcnJvciIsImZpbHRlciIsInRhcmdldCIsInBvbnlmaWxsIiwidXR0ZXJhbmNlIiwib25FbmQiLCJvbkVycm9yIiwib25TdGFydCIsIlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSIsIkVycm9yIiwiUXVldWVkVXR0ZXJhbmNlIiwiY2FuY2VsIiwicHJvbWlzZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBRWUsU0FBU0EsZ0JBQVQsR0FBNEI7QUFDekMsTUFBSUMsZ0JBQWdCLEdBQUcsRUFBdkI7QUFDQSxNQUFJQyxPQUFKOztBQUVBLE1BQU1DLEdBQUc7QUFBQSw2RkFBRztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsbUJBQ05ELE9BRE07QUFBQTtBQUFBO0FBQUE7O0FBQUE7O0FBQUE7QUFLVkEsY0FBQUEsT0FBTyxHQUFHLElBQVY7QUFMVTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLDhCQVVBRSxlQUFlLEdBQUdILGdCQUFnQixDQUFDLENBQUQsQ0FWbEM7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQTtBQUFBLCtCQVlFRyxlQUFlLENBQUNDLEtBQWhCLEVBWkY7O0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQWNKO0FBQ0E7QUFFQSxvQ0FBSUMsT0FBSixLQUFnQixXQUFoQixJQUErQkMsT0FBTyxDQUFDQyxLQUFSLGFBQS9COztBQWpCSTtBQW9CTlAsd0JBQUFBLGdCQUFnQixHQUFHQSxnQkFBZ0IsQ0FBQ1EsTUFBakIsQ0FBd0IsVUFBQUMsTUFBTTtBQUFBLGlDQUFJQSxNQUFNLEtBQUtOLGVBQWY7QUFBQSx5QkFBOUIsQ0FBbkI7QUFwQk07QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBdUJSRixjQUFBQSxPQUFPLEdBQUcsS0FBVjtBQXZCUTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxLQUFIOztBQUFBLG9CQUFIQyxHQUFHO0FBQUE7QUFBQTtBQUFBLEtBQVQ7O0FBMkJBLFNBQU8sVUFBQ1EsUUFBRCxFQUFXQyxTQUFYLEVBQTJEO0FBQUEsb0ZBQVAsRUFBTztBQUFBLFFBQW5DQyxLQUFtQyxTQUFuQ0EsS0FBbUM7QUFBQSxRQUE1QkMsT0FBNEIsU0FBNUJBLE9BQTRCO0FBQUEsUUFBbkJDLE9BQW1CLFNBQW5CQSxPQUFtQjs7QUFDaEUsUUFBSSxFQUFFSCxTQUFTLFlBQVlELFFBQVEsQ0FBQ0ssd0JBQWhDLENBQUosRUFBK0Q7QUFDN0QsWUFBTSxJQUFJQyxLQUFKLENBQVUsNENBQVYsQ0FBTjtBQUNEOztBQUVELFFBQU1iLGVBQWUsR0FBRyxJQUFJYywyQkFBSixDQUFvQlAsUUFBcEIsRUFBOEJDLFNBQTlCLEVBQXlDO0FBQUVDLE1BQUFBLEtBQUssRUFBTEEsS0FBRjtBQUFTQyxNQUFBQSxPQUFPLEVBQVBBLE9BQVQ7QUFBa0JDLE1BQUFBLE9BQU8sRUFBUEE7QUFBbEIsS0FBekMsQ0FBeEI7QUFFQWQsSUFBQUEsZ0JBQWdCLGlEQUFPQSxnQkFBUCxJQUF5QkcsZUFBekIsRUFBaEI7QUFDQUQsSUFBQUEsR0FBRztBQUVILFdBQU87QUFDTDtBQUNBZ0IsTUFBQUEsTUFBTSxFQUFFO0FBQUEsZUFBTWYsZUFBZSxDQUFDZSxNQUFoQixFQUFOO0FBQUEsT0FGSDtBQUdMQyxNQUFBQSxPQUFPLEVBQUVoQixlQUFlLENBQUNnQjtBQUhwQixLQUFQO0FBS0QsR0FmRDtBQWdCRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBRdWV1ZWRVdHRlcmFuY2UgZnJvbSAnLi9RdWV1ZWRVdHRlcmFuY2UnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVTeW50aGVzaXplKCkge1xuICBsZXQgcXVldWVXaXRoQ3VycmVudCA9IFtdO1xuICBsZXQgcnVubmluZztcblxuICBjb25zdCBydW4gPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKHJ1bm5pbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBydW5uaW5nID0gdHJ1ZTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgcXVldWVkVXR0ZXJhbmNlO1xuXG4gICAgICB3aGlsZSAoKHF1ZXVlZFV0dGVyYW5jZSA9IHF1ZXVlV2l0aEN1cnJlbnRbMF0pKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgcXVldWVkVXR0ZXJhbmNlLnNwZWFrKCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIC8vIFRPRE86IElmIHRoZSBlcnJvciBpcyBkdWUgdG8gU2FmYXJpIHJlc3RyaWN0aW9uIG9uIHVzZXIgdG91Y2hcbiAgICAgICAgICAvLyAgICAgICBUaGUgbmV4dCBsb29wIG9uIHRoZSBuZXh0IGF1ZGlvIHdpbGwgYWxzbyBmYWlsIGJlY2F1c2UgaXQgd2FzIG5vdCBxdWV1ZWQgd2l0aCBhIHVzZXIgdG91Y2hcblxuICAgICAgICAgIGVyci5tZXNzYWdlICE9PSAnY2FuY2VsbGVkJyAmJiBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICBxdWV1ZVdpdGhDdXJyZW50ID0gcXVldWVXaXRoQ3VycmVudC5maWx0ZXIodGFyZ2V0ID0+IHRhcmdldCAhPT0gcXVldWVkVXR0ZXJhbmNlKTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgcnVubmluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAocG9ueWZpbGwsIHV0dGVyYW5jZSwgeyBvbkVuZCwgb25FcnJvciwgb25TdGFydCB9ID0ge30pID0+IHtcbiAgICBpZiAoISh1dHRlcmFuY2UgaW5zdGFuY2VvZiBwb255ZmlsbC5TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3V0dGVyYW5jZSBtdXN0IGJlIGluc3RhbmNlIG9mIHRoZSBwb255ZmlsbCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHF1ZXVlZFV0dGVyYW5jZSA9IG5ldyBRdWV1ZWRVdHRlcmFuY2UocG9ueWZpbGwsIHV0dGVyYW5jZSwgeyBvbkVuZCwgb25FcnJvciwgb25TdGFydCB9KTtcblxuICAgIHF1ZXVlV2l0aEN1cnJlbnQgPSBbLi4ucXVldWVXaXRoQ3VycmVudCwgcXVldWVkVXR0ZXJhbmNlXTtcbiAgICBydW4oKTtcblxuICAgIHJldHVybiB7XG4gICAgICAvLyBUaGUgY2FuY2VsKCkgZnVuY3Rpb24gcmV0dXJucyBhIFByb21pc2VcbiAgICAgIGNhbmNlbDogKCkgPT4gcXVldWVkVXR0ZXJhbmNlLmNhbmNlbCgpLFxuICAgICAgcHJvbWlzZTogcXVldWVkVXR0ZXJhbmNlLnByb21pc2VcbiAgICB9O1xuICB9O1xufVxuIl19