cloudinary-video-player
Version:
Cloudinary Video Player
49 lines (46 loc) • 1.57 kB
JavaScript
import { _ as _vjs } from './_videojs-proxy.js';
const ClickableComponent = _vjs.getComponent('ClickableComponent');
class ShareDownloadButton extends ClickableComponent {
constructor(player) {
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
super(player, options);
}
handleClick(event) {
super.handleClick(event);
// Delegate the actual download to the plugin API if present
if (this.player().share && typeof this.player().share.download === 'function') {
this.player().share.download();
}
}
createEl() {
const button = _vjs.dom.createEl('button', {
className: 'vjs-control vjs-share-download-button vjs-button',
ariaLabel: 'Download video',
title: 'Download video'
});
const iconSpan = _vjs.dom.createEl('span', {
className: 'vjs-icon-file-download vjs-icon-placeholder'
});
button.appendChild(iconSpan);
const spinnerSpan = _vjs.dom.createEl('span', {
className: 'vjs-loading-spinner'
});
button.appendChild(spinnerSpan);
return button;
}
/**
* Toggles the "preparing download" visual state (spinner + title).
* @param {boolean} isPreparing
*/
setPreparing(isPreparing) {
const el = this.el();
if (isPreparing) {
el.classList.add('vjs-waiting');
el.setAttribute('title', 'Download is being prepared');
} else {
el.classList.remove('vjs-waiting');
el.setAttribute('title', 'Download video');
}
}
}
_vjs.registerComponent('ShareDownloadButton', ShareDownloadButton);