IDE_of_ICS/code/extensions/image-preview/media/videoPreview.js

70 lines
1.6 KiB
JavaScript

/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
// @ts-check
"use strict";
(function () {
const vscode = acquireVsCodeApi();
function getSettings() {
const element = document.getElementById('settings');
if (element) {
const data = element.getAttribute('data-settings');
if (data) {
return JSON.parse(data);
}
}
throw new Error(`Could not load settings`);
}
const settings = getSettings();
// State
let hasLoadedMedia = false;
// Elements
const video = document.createElement('video');
if (settings.src !== null) {
video.src = settings.src;
}
video.controls = true;
function onLoaded() {
if (hasLoadedMedia) {
return;
}
hasLoadedMedia = true;
document.body.classList.remove('loading');
document.body.classList.add('ready');
document.body.append(video);
}
video.addEventListener('error', e => {
if (hasLoadedMedia) {
return;
}
hasLoadedMedia = true;
document.body.classList.add('error');
document.body.classList.remove('loading');
});
if (settings.src === null) {
onLoaded();
} else {
video.addEventListener('canplaythrough', () => {
onLoaded();
});
}
document.querySelector('.open-file-link').addEventListener('click', () => {
vscode.postMessage({
type: 'reopen-as-text',
});
});
}());