rizzo-next
Version:
The next generation of Lonely Planet's style guide and pattern library.
89 lines (68 loc) • 2.89 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
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 _brightcove = require("./brightcove");
var _brightcove2 = _interopRequireDefault(_brightcove);
var _youtube = require("./youtube");
var _youtube2 = _interopRequireDefault(_youtube);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
require("./_video.scss");
var players = new Map();
players.set("brightcove", _brightcove2.default);
players.set("youtube", _youtube2.default);
var Video = function () {
function Video() {
_classCallCheck(this, Video);
}
_createClass(Video, null, [{
key: "addPlayer",
value: function addPlayer(element) {
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
_ref$type = _ref.type,
type = _ref$type === undefined ? "brightcove" : _ref$type,
_ref$videoId = _ref.videoId,
videoId = _ref$videoId === undefined ? null : _ref$videoId,
_ref$autoplay = _ref.autoplay,
autoplay = _ref$autoplay === undefined ? false : _ref$autoplay;
if (typeof element === "string") {
element = document.getElementById(element);
}
if (!element) {
return;
}
this.players = this.players || new Map();
var PlayerConstructor = players.get(type),
player = new PlayerConstructor({
el: element,
playerId: this.players.size + 1,
videoId: videoId,
autoplay: autoplay
});
this.players.set(element, player);
player.on("disposed", this.removePlayer.bind(this));
// Take the return value and use .then() on it to ensure the
// player is ready before using it.
return new Promise(function (resolve) {
if (player.isReady) {
resolve(player);
return;
}
player.on("ready", function () {
resolve(player);
});
});
}
}, {
key: "removePlayer",
value: function removePlayer(player) {
if (this.players) {
this.players.delete(player.el);
}
}
}]);
return Video;
}();
exports.default = Video;