Files
Avideo/dist/core/ui/coreSettings.ui.js
2024-09-27 01:25:59 +08:00

192 lines
10 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.CoreSettingsUi = void 0;
var Dom_annotation_1 = require("../annotation/Dom.annotation");
var OptionParams_model_1 = require("../model/OptionParams.model");
var ClassName_config_1 = require("../config/ClassName.config");
var index_utils_1 = require("../utils/index.utils");
var Ioc_annotation_1 = require("../annotation/Ioc.annotation");
/**
* 视频核心功能设置
*/
var CoreSettingsUi = /** @class */ (function () {
function CoreSettingsUi() {
}
/**
* 设置视频预览图地址
* @constructor
*/
CoreSettingsUi.prototype.BindEventVideoPoster = function () {
this.Video.poster = OptionParams_model_1.default.OptionParams.poster;
};
/**
* 渲染视频播放列表
* @constructor
*/
CoreSettingsUi.prototype.BindEventPlayVideoList = function () {
var _this = this;
var SideMenu = document.querySelectorAll("." + ClassName_config_1.ClassName.SideMenu + " .list_item");
SideMenu.forEach(function (v, index) {
v.onclick = function () {
_this.VideoProgress.style.backgroundSize = "0% 100%";
setTimeout(function () { return _this.VideoProgress.value = String(0); }, 1);
_this.VideoProgress.step = '0.000000000000000001';
_this.Video.src = OptionParams_model_1.default.OptionParams.playList[index].url;
_this.Play.classList.remove(ClassName_config_1.ClassName.Stop);
_this.Play.classList.add(ClassName_config_1.ClassName.Play);
};
});
};
/**
* 设置视频宽高
* @constructor
*/
CoreSettingsUi.prototype.BindEventVideoSize = function () {
this.Video.parentElement.style.width = OptionParams_model_1.default.OptionParams.width;
this.Video.parentElement.style.height = OptionParams_model_1.default.OptionParams.height;
};
/**
* 设置视频的自动播放 和 是否静音
* @constructor
*/
CoreSettingsUi.prototype.BindEventVideoAutoPlayAndMuted = function () {
this.Video.autoplay = OptionParams_model_1.default.OptionParams.autoplay;
this.Video.muted = OptionParams_model_1.default.OptionParams.muted;
// 谷歌等众多浏览器禁止video标签有声的自动播放所以这里如果想实现有声而且自动播放视频那么需要特殊处理
// 前端用户需要开启 autoplay true 自动播放muted true 静音
if (OptionParams_model_1.default.OptionParams.autoplay && OptionParams_model_1.default.OptionParams.muted) {
console.log("无声,自动播放");
this.Play.classList.toggle(ClassName_config_1.ClassName.Stop);
}
};
/**
* 配置单个视频地址 & 多个清晰度视频地址
* @constructor
*/
CoreSettingsUi.prototype.BindEventEndedVideoSetUrl = function () {
return __awaiter(this, void 0, void 0, function () {
var UL_1;
var _this = this;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!(typeof OptionParams_model_1.default.OptionParams.url === "string")) return [3 /*break*/, 2];
return [4 /*yield*/, this.Utils.CheckVideoType(OptionParams_model_1.default.OptionParams.url)
// 多清晰度视频的数组
];
case 1:
_a.sent();
return [3 /*break*/, 4];
case 2:
// 数组默认第一条视频作为播放视频
return [4 /*yield*/, this.Utils.CheckVideoType(OptionParams_model_1.default.OptionParams.url[0].url)];
case 3:
// 数组默认第一条视频作为播放视频
_a.sent();
UL_1 = document.createElement("ul");
UL_1.className = "high";
OptionParams_model_1.default.OptionParams.url.map(function (val, index) {
var li = document.createElement("li");
li.textContent = val.title;
// 默认第一个显示激活样式
index == 0 ? li.classList.toggle(ClassName_config_1.ClassName.Active) : null;
li.onclick = function () { return __awaiter(_this, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
// 清除所有li激活类名
li.parentElement.childNodes.forEach(function (s) { return s.className = ""; });
// 为点击的里高亮激活
li.className = ClassName_config_1.ClassName.Active;
// 切换视频地址
return [4 /*yield*/, this.Utils.CheckVideoType(val.url)];
case 1:
// 切换视频地址
_a.sent();
return [2 /*return*/];
}
});
}); };
// 填充li到ul中
UL_1.appendChild(li);
});
// 鼠标悬浮 显示清晰度选择菜单
this.High.onmouseover = function () { return UL_1.style.display = "block"; };
this.High.onmouseout = function () { return UL_1.style.display = "none"; };
// 填充ul到清晰度选择的图标中
this.High.appendChild(UL_1);
_a.label = 4;
case 4: return [2 /*return*/];
}
});
});
};
__decorate([
Dom_annotation_1.Dom(),
__metadata("design:type", HTMLElement)
], CoreSettingsUi.prototype, "Play", void 0);
__decorate([
Dom_annotation_1.Dom(),
__metadata("design:type", HTMLVideoElement)
], CoreSettingsUi.prototype, "Video", void 0);
__decorate([
Dom_annotation_1.Dom(),
__metadata("design:type", HTMLElement)
], CoreSettingsUi.prototype, "High", void 0);
__decorate([
Ioc_annotation_1.Inject(),
__metadata("design:type", index_utils_1.Utils)
], CoreSettingsUi.prototype, "Utils", void 0);
__decorate([
Dom_annotation_1.Dom(),
__metadata("design:type", HTMLInputElement)
], CoreSettingsUi.prototype, "VideoProgress", void 0);
return CoreSettingsUi;
}());
exports.CoreSettingsUi = CoreSettingsUi;