ng-zenduit 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/core/cevent.mjs +20 -0
- package/esm2020/lib/core/local.lock.mjs +33 -0
- package/esm2020/lib/core/thread.mjs +10 -0
- package/esm2020/lib/live-view-player/flv-player/flv-player.component.mjs +82 -0
- package/esm2020/lib/live-view-player/flv-player/flv.mjs +19 -0
- package/esm2020/lib/live-view-player/hls-player/hls-player.component.mjs +140 -0
- package/esm2020/lib/live-view-player/html5-video-player/html5-video-player.component.mjs +20 -0
- package/esm2020/lib/live-view-player/live-view-player/live-view-player.component.mjs +41 -0
- package/esm2020/lib/live-view-player/player.control.mjs +79 -0
- package/esm2020/lib/live-view-player/snapshot-player/snapshot-player.component.mjs +92 -0
- package/esm2020/lib/live-view-player/web-rtc/web-rtc-player.component.mjs +100 -0
- package/esm2020/lib/live-view-player/web-rtc/web-rtc.mjs +286 -0
- package/esm2020/lib/ng-zenduit.module.mjs +23 -3
- package/esm2020/lib/services/http.service.mjs +88 -0
- package/esm2020/lib/services/opencv.service.mjs +11 -38
- package/esm2020/lib/services/script.loader.service.mjs +82 -0
- package/esm2020/public-api.mjs +2 -1
- package/fesm2015/ng-zenduit.mjs +1014 -44
- package/fesm2015/ng-zenduit.mjs.map +1 -1
- package/fesm2020/ng-zenduit.mjs +990 -42
- package/fesm2020/ng-zenduit.mjs.map +1 -1
- package/lib/core/cevent.d.ts +7 -0
- package/lib/core/local.lock.d.ts +8 -0
- package/lib/core/thread.d.ts +3 -0
- package/lib/live-view-player/flv-player/flv-player.component.d.ts +20 -0
- package/lib/live-view-player/flv-player/flv.d.ts +320 -0
- package/lib/live-view-player/hls-player/hls-player.component.d.ts +25 -0
- package/lib/live-view-player/html5-video-player/html5-video-player.component.d.ts +10 -0
- package/lib/live-view-player/live-view-player/live-view-player.component.d.ts +20 -0
- package/lib/live-view-player/player.control.d.ts +53 -0
- package/lib/live-view-player/snapshot-player/snapshot-player.component.d.ts +30 -0
- package/lib/live-view-player/web-rtc/web-rtc-player.component.d.ts +28 -0
- package/lib/live-view-player/web-rtc/web-rtc.d.ts +52 -0
- package/lib/ng-zenduit.module.d.ts +12 -6
- package/lib/services/http.service.d.ts +21 -0
- package/lib/services/opencv.service.d.ts +3 -2
- package/lib/services/script.loader.service.d.ts +11 -0
- package/package.json +3 -2
- package/public-api.d.ts +1 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export class CEvent {
|
|
2
|
+
constructor() {
|
|
3
|
+
this.index = 0;
|
|
4
|
+
this.handlers = [];
|
|
5
|
+
}
|
|
6
|
+
on(handler) {
|
|
7
|
+
this.index++;
|
|
8
|
+
this.handlers.push({ func: handler, id: this.index });
|
|
9
|
+
return this.index;
|
|
10
|
+
}
|
|
11
|
+
off(id) {
|
|
12
|
+
this.handlers = this.handlers.filter(h => h.id !== id);
|
|
13
|
+
}
|
|
14
|
+
fire(data) {
|
|
15
|
+
if (this.handlers) {
|
|
16
|
+
this.handlers.slice(0).forEach(h => h.func(data));
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2V2ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctemVuZHVpdC9zcmMvbGliL2NvcmUvY2V2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxNQUFNO0lBQW5CO1FBQ1ksVUFBSyxHQUFXLENBQUMsQ0FBQztRQUVsQixhQUFRLEdBR1YsRUFBRSxDQUFDO0lBcUJiLENBQUM7SUFuQlUsRUFBRSxDQUFDLE9BQTJCO1FBRWpDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDdEQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFTSxHQUFHLENBQUMsRUFBVTtRQUVqQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRU0sSUFBSSxDQUFDLElBQVE7UUFFaEIsSUFBRyxJQUFJLENBQUMsUUFBUSxFQUNoQjtZQUNJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUNyRDtJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBDRXZlbnQ8VD4ge1xuICAgIHByaXZhdGUgaW5kZXg6IG51bWJlciA9IDA7XG5cbiAgICBwcml2YXRlIGhhbmRsZXJzOiB7XG4gICAgICAgIGlkOiBudW1iZXI7XG4gICAgICAgIGZ1bmM6IChkYXRhPzogVCkgPT4gdm9pZDtcbiAgICB9W10gPSBbXTtcblxuICAgIHB1YmxpYyBvbihoYW5kbGVyOiAoZGF0YT86IFQpID0+IHZvaWQgKTogbnVtYmVyXG4gICAge1xuICAgICAgICB0aGlzLmluZGV4Kys7XG4gICAgICAgIHRoaXMuaGFuZGxlcnMucHVzaCh7IGZ1bmM6IGhhbmRsZXIsIGlkOiB0aGlzLmluZGV4IH0pO1xuICAgICAgICByZXR1cm4gdGhpcy5pbmRleDtcbiAgICB9XG5cbiAgICBwdWJsaWMgb2ZmKGlkOiBudW1iZXIpXG4gICAge1xuICAgICAgICB0aGlzLmhhbmRsZXJzID0gdGhpcy5oYW5kbGVycy5maWx0ZXIoaCA9PiBoLmlkICE9PSBpZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGZpcmUoZGF0YT86IFQpXG4gICAge1xuICAgICAgICBpZih0aGlzLmhhbmRsZXJzKVxuICAgICAgICB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZXJzLnNsaWNlKDApLmZvckVhY2goaCA9PiBoLmZ1bmMoZGF0YSkpO1xuICAgICAgICB9XG4gICAgfVxufSJdfQ==
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export class LocalLock {
|
|
2
|
+
constructor() {
|
|
3
|
+
this._acquired = false;
|
|
4
|
+
this._waitingResolvers = [];
|
|
5
|
+
}
|
|
6
|
+
lock() {
|
|
7
|
+
return new Promise(resolve => {
|
|
8
|
+
if (!this._acquired) {
|
|
9
|
+
this._acquired = true;
|
|
10
|
+
resolve();
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
this._waitingResolvers.push(resolve);
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
release() {
|
|
17
|
+
if (!this._acquired) {
|
|
18
|
+
// Trying to release an unacquired lock
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
if (this._waitingResolvers.length > 0) {
|
|
22
|
+
const resolve = this._waitingResolvers.shift();
|
|
23
|
+
resolve();
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
this._acquired = false;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
isLock() {
|
|
30
|
+
return this._acquired;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwubG9jay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXplbmR1aXQvc3JjL2xpYi9jb3JlL2xvY2FsLmxvY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFNBQVM7SUFLbEI7UUFDSSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxJQUFJO1FBQ1AsT0FBTyxJQUFJLE9BQU8sQ0FBTyxPQUFPLENBQUMsRUFBRTtZQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDakIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7Z0JBQ3RCLE9BQU8sRUFBRSxDQUFDO2dCQUNWLE9BQU87YUFDVjtZQUVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sT0FBTztRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2pCLHVDQUF1QztZQUN2QyxPQUFPO1NBQ1Y7UUFDRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25DLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQWtCLENBQUM7WUFDL0QsT0FBTyxFQUFFLENBQUM7U0FDYjthQUFNO1lBQ0gsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7U0FDMUI7SUFDTCxDQUFDO0lBRU0sTUFBTTtRQUVULE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgTG9jYWxMb2NrIHtcbiAgICBwcml2YXRlIF9hY3F1aXJlZDogYm9vbGVhbjtcblxuICAgIHByaXZhdGUgX3dhaXRpbmdSZXNvbHZlcnM6IEFycmF5PCgpID0+IHZvaWQ+O1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuX2FjcXVpcmVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3dhaXRpbmdSZXNvbHZlcnMgPSBbXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9jaygpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2FjcXVpcmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYWNxdWlyZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX3dhaXRpbmdSZXNvbHZlcnMucHVzaChyZXNvbHZlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbGVhc2UoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fYWNxdWlyZWQpIHtcbiAgICAgICAgICAgIC8vIFRyeWluZyB0byByZWxlYXNlIGFuIHVuYWNxdWlyZWQgbG9ja1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl93YWl0aW5nUmVzb2x2ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc29sdmUgPSB0aGlzLl93YWl0aW5nUmVzb2x2ZXJzLnNoaWZ0KCkgYXMgKCgpID0+IHZvaWQpO1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fYWNxdWlyZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBpc0xvY2soKTogYm9vbGVhblxuICAgIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjcXVpcmVkO1xuICAgIH1cbn0iXX0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export class Thread {
|
|
2
|
+
static sleep(ms) {
|
|
3
|
+
return new Promise((resolve) => {
|
|
4
|
+
setTimeout(() => {
|
|
5
|
+
resolve();
|
|
6
|
+
}, ms);
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyZWFkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctemVuZHVpdC9zcmMvbGliL2NvcmUvdGhyZWFkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxNQUFNO0lBQ1IsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFVO1FBQzFCLE9BQU8sSUFBSSxPQUFPLENBQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNqQyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNaLE9BQU8sRUFBRSxDQUFDO1lBQ2QsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgVGhyZWFkIHtcbiAgICBwdWJsaWMgc3RhdGljIHNsZWVwKG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9LCBtcyk7XG4gICAgICAgIH0pO1xuICAgIH1cbn0iXX0=
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { Component, Input } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../../services/script.loader.service";
|
|
4
|
+
export class ZenFlvPlayerComponent {
|
|
5
|
+
constructor(_element, _scriptLoader) {
|
|
6
|
+
this._element = _element;
|
|
7
|
+
this._scriptLoader = _scriptLoader;
|
|
8
|
+
this.IsVideoFilterVisible = false;
|
|
9
|
+
}
|
|
10
|
+
ngOnChanges(changeObj) {
|
|
11
|
+
if (changeObj.source) {
|
|
12
|
+
this.reload();
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
ngOnDestroy() {
|
|
16
|
+
this.destroy();
|
|
17
|
+
}
|
|
18
|
+
async reload() {
|
|
19
|
+
// load the script first
|
|
20
|
+
await this._scriptLoader.loadScript("flv");
|
|
21
|
+
// update the player
|
|
22
|
+
this.update();
|
|
23
|
+
}
|
|
24
|
+
update() {
|
|
25
|
+
this.destroy(Boolean(this.source));
|
|
26
|
+
if (!this.source) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
this._flv = flvjs.createPlayer({
|
|
30
|
+
url: this.source,
|
|
31
|
+
type: "flv"
|
|
32
|
+
}, {
|
|
33
|
+
// Enable/Disable IO stash buffer.
|
|
34
|
+
// Set to false if you need realtime (minimal latency) for live stream playback, but may stalled if there's network jittering.
|
|
35
|
+
enableStashBuffer: false
|
|
36
|
+
});
|
|
37
|
+
const element = this._element.nativeElement.getElementsByTagName("video").item(0);
|
|
38
|
+
this._flv.attachMediaElement(element);
|
|
39
|
+
this._flv.load();
|
|
40
|
+
this._flv.play();
|
|
41
|
+
let previousFrame = 0;
|
|
42
|
+
this._flv.on("statistics_info", (event) => {
|
|
43
|
+
if (event && event.decodedFrames) {
|
|
44
|
+
if (previousFrame != event.decodedFrames) {
|
|
45
|
+
previousFrame = event.decodedFrames;
|
|
46
|
+
if (this.control) {
|
|
47
|
+
// fired event when video is playing
|
|
48
|
+
this.control.EmitData();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
this._flv.on("loading_complete", () => {
|
|
54
|
+
console.log("loading completed");
|
|
55
|
+
this.destroy(true);
|
|
56
|
+
});
|
|
57
|
+
console.log(`Created the flv player for source "${this.source}"`);
|
|
58
|
+
}
|
|
59
|
+
destroy(skipNotify) {
|
|
60
|
+
if (this._flv) {
|
|
61
|
+
console.log("Destroyed the flv player");
|
|
62
|
+
this._flv.pause();
|
|
63
|
+
this._flv.unload();
|
|
64
|
+
this._flv.destroy();
|
|
65
|
+
this._flv = null;
|
|
66
|
+
if (!skipNotify) {
|
|
67
|
+
// this.onStop.emit();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
ZenFlvPlayerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ZenFlvPlayerComponent, deps: [{ token: i0.ElementRef }, { token: i1.ScriptLoader }], target: i0.ɵɵFactoryTarget.Component });
|
|
73
|
+
ZenFlvPlayerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ZenFlvPlayerComponent, selector: "zen-flv-player", inputs: { source: "source", control: "control" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"flv-player-component\">\n <video controls\n muted></video>\n\n</div>\n", styles: [".flv-player-component{position:relative;background-color:#000;width:100%;height:100%;border-radius:4px}.flv-player-component video{position:absolute;top:0;left:0;width:100%;height:100%;max-height:100%;border-radius:4px}.flv-player-component zen-icon{position:absolute;width:24px;height:24px;right:20px;top:20px;cursor:pointer;border-radius:4px;background:#FFFFFF}.flv-player-component>.video-filter{position:absolute;right:20px;top:50px;z-index:1000;display:none}.flv-player-component>.video-filter.active{display:block}\n"] });
|
|
74
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ZenFlvPlayerComponent, decorators: [{
|
|
75
|
+
type: Component,
|
|
76
|
+
args: [{ selector: 'zen-flv-player', template: "<div class=\"flv-player-component\">\n <video controls\n muted></video>\n\n</div>\n", styles: [".flv-player-component{position:relative;background-color:#000;width:100%;height:100%;border-radius:4px}.flv-player-component video{position:absolute;top:0;left:0;width:100%;height:100%;max-height:100%;border-radius:4px}.flv-player-component zen-icon{position:absolute;width:24px;height:24px;right:20px;top:20px;cursor:pointer;border-radius:4px;background:#FFFFFF}.flv-player-component>.video-filter{position:absolute;right:20px;top:50px;z-index:1000;display:none}.flv-player-component>.video-filter.active{display:block}\n"] }]
|
|
77
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ScriptLoader }]; }, propDecorators: { source: [{
|
|
78
|
+
type: Input
|
|
79
|
+
}], control: [{
|
|
80
|
+
type: Input
|
|
81
|
+
}] } });
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmx2LXBsYXllci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy16ZW5kdWl0L3NyYy9saWIvbGl2ZS12aWV3LXBsYXllci9mbHYtcGxheWVyL2Zsdi1wbGF5ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctemVuZHVpdC9zcmMvbGliL2xpdmUtdmlldy1wbGF5ZXIvZmx2LXBsYXllci9mbHYtcGxheWVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQTRCLEtBQUssRUFBZ0MsTUFBTSxlQUFlLENBQUM7OztBQWdCekcsTUFBTSxPQUFPLHFCQUFxQjtJQVM5QixZQUNZLFFBQW9CLEVBQ3BCLGFBQTJCO1FBRDNCLGFBQVEsR0FBUixRQUFRLENBQVk7UUFDcEIsa0JBQWEsR0FBYixhQUFhLENBQWM7UUFKaEMseUJBQW9CLEdBQUcsS0FBSyxDQUFDO0lBS3BDLENBQUM7SUFFTSxXQUFXLENBQUMsU0FBYztRQUM3QixJQUFJLFNBQVMsQ0FBQyxNQUFNLEVBQUU7WUFDbEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ2pCO0lBRUwsQ0FBQztJQUVNLFdBQVc7UUFDZCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVPLEtBQUssQ0FBQyxNQUFNO1FBQ2hCLHdCQUF3QjtRQUN4QixNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLG9CQUFvQjtRQUNwQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVPLE1BQU07UUFDVixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUVuQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNkLE9BQU87U0FDVjtRQUVELElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztZQUMzQixHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDaEIsSUFBSSxFQUFFLEtBQUs7U0FDZCxFQUFFO1lBQ0MsbUNBQW1DO1lBQ25DLDhIQUE4SDtZQUM5SCxpQkFBaUIsRUFBRSxLQUFLO1NBQzNCLENBQUMsQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBNkIsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkcsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUEyQixDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRWpCLElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQztRQUV0QixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLEtBQWdDLEVBQUUsRUFBRTtZQUNqRSxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsYUFBYSxFQUFFO2dCQUM5QixJQUFJLGFBQWEsSUFBSSxLQUFLLENBQUMsYUFBYSxFQUFFO29CQUN0QyxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQztvQkFDcEMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO3dCQUNkLG9DQUFvQzt3QkFDcEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztxQkFDM0I7aUJBQ0o7YUFDSjtRQUNMLENBQUMsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxFQUFFO1lBQ2xDLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUVqQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFBO1FBR0YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQ0FBc0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVPLE9BQU8sQ0FBQyxVQUFvQjtRQUNoQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDWCxPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFFakIsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDYixzQkFBc0I7YUFDekI7U0FDSjtJQUNMLENBQUM7O21IQXhGUSxxQkFBcUI7dUdBQXJCLHFCQUFxQiw2SENoQmxDLGtHQUtBOzRGRFdhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDSSxnQkFBZ0I7NEhBS2pCLE1BQU07c0JBQWQsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPdXRwdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgU2NyaXB0TG9hZGVyIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3NjcmlwdC5sb2FkZXIuc2VydmljZVwiO1xuaW1wb3J0IHsgUGxheWVyQ29udHJvbCB9IGZyb20gXCIuLi9wbGF5ZXIuY29udHJvbFwiO1xuaW1wb3J0IHsgRmx2SnMgfSBmcm9tIFwiLi9mbHZcIlxuXG5kZWNsYXJlIHZhciBmbHZqczoge1xuICAgIGNyZWF0ZVBsYXllcihtZWRpYURhdGFTb3VyY2U6IEZsdkpzLk1lZGlhRGF0YVNvdXJjZSwgY29uZmlnPzogRmx2SnMuQ29uZmlnKTogRmx2SnMuUGxheWVyO1xuICAgIGlzU3VwcG9ydGVkKCk6IGJvb2xlYW47XG4gICAgZ2V0RmVhdHVyZUxpc3QoKTogRmx2SnMuRmVhdHVyZUxpc3Q7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnemVuLWZsdi1wbGF5ZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mbHYtcGxheWVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mbHYtcGxheWVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgWmVuRmx2UGxheWVyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICAgIEBJbnB1dCgpIHNvdXJjZSE6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGNvbnRyb2w/OiBQbGF5ZXJDb250cm9sO1xuXG4gICAgcHJpdmF0ZSBfZmx2ITogRmx2SnMuUGxheWVyIHwgbnVsbDtcblxuICAgIHB1YmxpYyBJc1ZpZGVvRmlsdGVyVmlzaWJsZSA9IGZhbHNlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9lbGVtZW50OiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIF9zY3JpcHRMb2FkZXI6IFNjcmlwdExvYWRlcikge1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VPYmo6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlT2JqLnNvdXJjZSkge1xuICAgICAgICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHJlbG9hZCgpIHtcbiAgICAgICAgLy8gbG9hZCB0aGUgc2NyaXB0IGZpcnN0XG4gICAgICAgIGF3YWl0IHRoaXMuX3NjcmlwdExvYWRlci5sb2FkU2NyaXB0KFwiZmx2XCIpO1xuICAgICAgICAvLyB1cGRhdGUgdGhlIHBsYXllclxuICAgICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3koQm9vbGVhbih0aGlzLnNvdXJjZSkpO1xuXG4gICAgICAgIGlmICghdGhpcy5zb3VyY2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2ZsdiA9IGZsdmpzLmNyZWF0ZVBsYXllcih7XG4gICAgICAgICAgICB1cmw6IHRoaXMuc291cmNlLFxuICAgICAgICAgICAgdHlwZTogXCJmbHZcIlxuICAgICAgICB9LCB7XG4gICAgICAgICAgICAvLyBFbmFibGUvRGlzYWJsZSBJTyBzdGFzaCBidWZmZXIuIFxuICAgICAgICAgICAgLy8gU2V0IHRvIGZhbHNlIGlmIHlvdSBuZWVkIHJlYWx0aW1lIChtaW5pbWFsIGxhdGVuY3kpIGZvciBsaXZlIHN0cmVhbSBwbGF5YmFjaywgYnV0IG1heSBzdGFsbGVkIGlmIHRoZXJlJ3MgbmV0d29yayBqaXR0ZXJpbmcuXG4gICAgICAgICAgICBlbmFibGVTdGFzaEJ1ZmZlcjogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSAodGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5nZXRFbGVtZW50c0J5VGFnTmFtZShcInZpZGVvXCIpLml0ZW0oMCk7XG4gICAgICAgIHRoaXMuX2Zsdi5hdHRhY2hNZWRpYUVsZW1lbnQoZWxlbWVudCBhcyBIVE1MVmlkZW9FbGVtZW50KTtcbiAgICAgICAgdGhpcy5fZmx2LmxvYWQoKTtcbiAgICAgICAgdGhpcy5fZmx2LnBsYXkoKTtcblxuICAgICAgICBsZXQgcHJldmlvdXNGcmFtZSA9IDA7XG5cbiAgICAgICAgdGhpcy5fZmx2Lm9uKFwic3RhdGlzdGljc19pbmZvXCIsIChldmVudDogeyBkZWNvZGVkRnJhbWVzOiBudW1iZXIgfSkgPT4ge1xuICAgICAgICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50LmRlY29kZWRGcmFtZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNGcmFtZSAhPSBldmVudC5kZWNvZGVkRnJhbWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzRnJhbWUgPSBldmVudC5kZWNvZGVkRnJhbWVzO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250cm9sKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBmaXJlZCBldmVudCB3aGVuIHZpZGVvIGlzIHBsYXlpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbC5FbWl0RGF0YSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIHRoaXMuX2Zsdi5vbihcImxvYWRpbmdfY29tcGxldGVcIiwgKCkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJsb2FkaW5nIGNvbXBsZXRlZFwiKTtcblxuICAgICAgICAgICAgdGhpcy5kZXN0cm95KHRydWUpO1xuICAgICAgICB9KVxuXG5cbiAgICAgICAgY29uc29sZS5sb2coYENyZWF0ZWQgdGhlIGZsdiBwbGF5ZXIgZm9yIHNvdXJjZSBcIiR7dGhpcy5zb3VyY2V9XCJgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlc3Ryb3koc2tpcE5vdGlmeT86IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHRoaXMuX2Zsdikge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJEZXN0cm95ZWQgdGhlIGZsdiBwbGF5ZXJcIik7XG4gICAgICAgICAgICB0aGlzLl9mbHYucGF1c2UoKTtcbiAgICAgICAgICAgIHRoaXMuX2Zsdi51bmxvYWQoKTtcbiAgICAgICAgICAgIHRoaXMuX2Zsdi5kZXN0cm95KCk7XG4gICAgICAgICAgICB0aGlzLl9mbHYgPSBudWxsO1xuXG4gICAgICAgICAgICBpZiAoIXNraXBOb3RpZnkpIHtcbiAgICAgICAgICAgICAgICAvLyB0aGlzLm9uU3RvcC5lbWl0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cblxufVxuIiwiPGRpdiBjbGFzcz1cImZsdi1wbGF5ZXItY29tcG9uZW50XCI+XG4gICAgPHZpZGVvIGNvbnRyb2xzXG4gICAgICAgICAgIG11dGVkPjwvdmlkZW8+XG5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) 2016 Bilibili. All Rights Reserved.
|
|
3
|
+
*
|
|
4
|
+
* @author zheng qian <xqq@xqq.im>
|
|
5
|
+
*
|
|
6
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
* you may not use this file except in compliance with the License.
|
|
8
|
+
* You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
*/
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmx2LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctemVuZHVpdC9zcmMvbGliL2xpdmUtdmlldy1wbGF5ZXIvZmx2LXBsYXllci9mbHYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkciLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE2IEJpbGliaWxpLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIEBhdXRob3IgemhlbmcgcWlhbiA8eHFxQHhxcS5pbT5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gZmx2LmpzIFR5cGVTY3JpcHQgZGVmaW5pdGlvbiBmaWxlXG5cbmV4cG9ydCBkZWNsYXJlIG5hbWVzcGFjZSBGbHZKcyB7XG4gICAgaW50ZXJmYWNlIE1lZGlhU2VnbWVudCB7XG4gICAgICAgIGR1cmF0aW9uOiBudW1iZXI7XG4gICAgICAgIGZpbGVzaXplPzogbnVtYmVyO1xuICAgICAgICB1cmw6IHN0cmluZztcbiAgICB9XG5cbiAgICBpbnRlcmZhY2UgTWVkaWFEYXRhU291cmNlIHtcbiAgICAgICAgdHlwZTogc3RyaW5nO1xuICAgICAgICBpc0xpdmU/OiBib29sZWFuO1xuICAgICAgICBjb3JzPzogYm9vbGVhbjtcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcblxuICAgICAgICBoYXNBdWRpbz86IGJvb2xlYW47XG4gICAgICAgIGhhc1ZpZGVvPzogYm9vbGVhbjtcblxuICAgICAgICBkdXJhdGlvbj86IG51bWJlcjtcbiAgICAgICAgZmlsZXNpemU/OiBudW1iZXI7XG4gICAgICAgIHVybD86IHN0cmluZztcblxuICAgICAgICBzZWdtZW50cz86IE1lZGlhU2VnbWVudFtdO1xuICAgIH1cblxuICAgIGludGVyZmFjZSBDb25maWcge1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2MgRW5hYmxlIHNlcGFyYXRlZCB0aHJlYWQgZm9yIHRyYW5zbXV4aW5nICh1bnN0YWJsZSBmb3Igbm93KVxuICAgICAgICAgKiBAZGVmYXVsdHZhbHVlIGZhbHNlXG4gICAgICAgICAqL1xuICAgICAgICBlbmFibGVXb3JrZXI/OiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2MgRW5hYmxlIElPIHN0YXNoIGJ1ZmZlci4gU2V0IHRvIGZhbHNlIGlmIHlvdSBuZWVkIHJlYWx0aW1lIChtaW5pbWFsIGxhdGVuY3kpIGZvciBsaXZlIHN0cmVhbVxuICAgICAgICAgKiAgICAgICAgICBwbGF5YmFjaywgYnV0IG1heSBzdGFsbGVkIGlmIHRoZXJlJ3MgbmV0d29yayBqaXR0ZXJpbmcuXG4gICAgICAgICAqIEBkZWZhdWx0dmFsdWUgdHJ1ZVxuICAgICAgICAgKi9cbiAgICAgICAgZW5hYmxlU3Rhc2hCdWZmZXI/OiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2MgSW5kaWNhdGVzIElPIHN0YXNoIGJ1ZmZlciBpbml0aWFsIHNpemUuIERlZmF1bHQgaXMgYDM4NEtCYC4gSW5kaWNhdGUgYSBzdWl0YWJsZSBzaXplIGNhblxuICAgICAgICAgKiAgICAgICAgICBpbXByb3ZlIHZpZGVvIGxvYWQvc2VlayB0aW1lLlxuICAgICAgICAgKi9cbiAgICAgICAgc3Rhc2hJbml0aWFsU2l6ZT86IG51bWJlcjtcblxuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2MgU2FtZSB0byBgaXNMaXZlYCBpbiAqKk1lZGlhRGF0YVNvdXJjZSoqLCBpZ25vcmVkIGlmIGhhcyBiZWVuIHNldCBpbiBNZWRpYURhdGFTb3VyY2Ugc3RydWN0dXJlLlxuICAgICAgICAgKiBAZGVmYXVsdHZhbHVlIGZhbHNlXG4gICAgICAgICAqL1xuICAgICAgICBpc0xpdmU/OiBib29sZWFuO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzYyBBYm9ydCB0aGUgaHR0cCBjb25uZWN0aW9uIGlmIHRoZXJlJ3MgZW5vdWdoIGRhdGEgZm9yIHBsYXliYWNrLlxuICAgICAgICAgKiBAZGVmYXVsdHZhbHVlIHRydWVcbiAgICAgICAgICovXG4gICAgICAgIGxhenlMb2FkPzogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjIEluZGljYXRlcyBob3cgbWFueSBzZWNvbmRzIG9mIGRhdGEgdG8gYmUga2VwdCBmb3IgYGxhenlMb2FkYC5cbiAgICAgICAgICogQGRlZmF1bHR2YWx1ZSAzICogNjBcbiAgICAgICAgICovXG4gICAgICAgIGxhenlMb2FkTWF4RHVyYXRpb24/OiBudW1iZXI7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzYyBJbmRpY2F0ZXMgdGhlIGBsYXp5TG9hZGAgcmVjb3ZlciB0aW1lIGJvdW5kYXJ5IGluIHNlY29uZHMuXG4gICAgICAgICAqIEBkZWZhdWx0dmFsdWUgMzBcbiAgICAgICAgICovXG4gICAgICAgIGxhenlMb2FkUmVjb3ZlckR1cmF0aW9uPzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2MgRG8gbG9hZCBhZnRlciBNZWRpYVNvdXJjZSBgc291cmNlb3BlbmAgZXZlbnQgdHJpZ2dlcmVkLiBPbiBDaHJvbWUsIHRhYnMgd2hpY2hcbiAgICAgICAgICogICAgICAgICAgYmUgb3BlbmVkIGluIGJhY2tncm91bmQgbWF5IG5vdCB0cmlnZ2VyIGBzb3VyY2VvcGVuYCBldmVudCB1bnRpbCBzd2l0Y2hlZCB0byB0aGF0IHRhYi5cbiAgICAgICAgICogQGRlZmF1bHR2YWx1ZSB0cnVlXG4gICAgICAgICAqL1xuICAgICAgICBkZWZlckxvYWRBZnRlclNvdXJjZU9wZW4/OiBib29sZWFuO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzYyBEbyBhdXRvIGNsZWFudXAgZm9yIFNvdXJjZUJ1ZmZlclxuICAgICAgICAgKiBAZGVmYXVsdHZhbHVlIGZhbHNlIChmcm9tIGRvY3MpXG4gICAgICAgICAqL1xuICAgICAgICBhdXRvQ2xlYW51cFNvdXJjZUJ1ZmZlcj86IGJvb2xlYW47XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzYyBXaGVuIGJhY2t3YXJkIGJ1ZmZlciBkdXJhdGlvbiBleGNlZWRlZCB0aGlzIHZhbHVlIChpbiBzZWNvbmRzKSwgZG8gYXV0byBjbGVhbnVwIGZvciBTb3VyY2VCdWZmZXJcbiAgICAgICAgICogQGRlZmF1bHR2YWx1ZSAzICogNjBcbiAgICAgICAgICovXG4gICAgICAgIGF1dG9DbGVhbnVwTWF4QmFja3dhcmREdXJhdGlvbj86IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjIEluZGljYXRlcyB0aGUgZHVyYXRpb24gaW4gc2Vjb25kcyB0byByZXNlcnZlIGZvciBiYWNrd2FyZCBidWZmZXIgd2hlbiBkb2luZyBhdXRvIGNsZWFudXAuXG4gICAgICAgICAqIEBkZWZhdWx0dmFsdWUgMiAqIDYwXG4gICAgICAgICAqL1xuICAgICAgICBhdXRvQ2xlYW51cE1pbkJhY2t3YXJkRHVyYXRpb24/OiBudW1iZXI7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZWZhdWx0dmFsdWUgNjAwXG4gICAgICAgICAqL1xuICAgICAgICBzdGF0aXN0aWNzSW5mb1JlcG9ydEludGVydmFsPzogbnVtYmVyO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzYyBGaWxsIHNpbGVudCBhdWRpbyBmcmFtZXMgdG8gYXZvaWQgYS92IHVuc3luYyB3aGVuIGRldGVjdCBsYXJnZSBhdWRpbyB0aW1lc3RhbXAgZ2FwLlxuICAgICAgICAgKiBAZGVmYXVsdHZhbHVlIHRydWVcbiAgICAgICAgICovXG4gICAgICAgIGZpeEF1ZGlvVGltZXN0YW1wR2FwPzogYm9vbGVhbjtcblxuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2MgQWNjdXJhdGUgc2VlayB0byBhbnkgZnJhbWUsIG5vdCBsaW1pdGVkIHRvIHZpZGVvIElEUiBmcmFtZSwgYnV0IG1heSBhIGJpdCBzbG93ZXIuXG4gICAgICAgICAqICAgICAgICAgIEF2YWlsYWJsZSBvbiBDaHJvbWUgPiA1MCwgRmlyZUZveCBhbmQgU2FmYXJpLlxuICAgICAgICAgKiBAZGVmYXVsdHZhbHVlIGZhbHNlXG4gICAgICAgICAqL1xuICAgICAgICBhY2N1cmF0ZVNlZWs/OiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2MgJ3JhbmdlJyB1c2UgcmFuZ2UgcmVxdWVzdCB0byBzZWVrLCBvciAncGFyYW0nIGFkZCBwYXJhbXMgaW50byB1cmwgdG8gaW5kaWNhdGUgcmVxdWVzdCByYW5nZS5cbiAgICAgICAgICogQGRlZmF1bHR2YWx1ZSAncmFuZ2UnXG4gICAgICAgICAqL1xuICAgICAgICBzZWVrVHlwZT86ICdyYW5nZScgfCAncGFyYW0nIHwgJ2N1c3RvbSc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzYyBJbmRpY2F0ZXMgc2VlayBzdGFydCBwYXJhbWV0ZXIgbmFtZSBmb3Igc2Vla1R5cGUgPSAncGFyYW0nXG4gICAgICAgICAqIEBkZWZhdWx0dmFsdWUgJ2JzdGFydCdcbiAgICAgICAgICovXG4gICAgICAgIHNlZWtQYXJhbVN0YXJ0Pzogc3RyaW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2MgSW5kaWNhdGVzIHNlZWsgZW5kIHBhcmFtZXRlciBuYW1lIGZvciBzZWVrVHlwZSA9ICdwYXJhbSdcbiAgICAgICAgICogQGRlZmF1bHR2YWx1ZSAnYmVuZCdcbiAgICAgICAgICovXG4gICAgICAgIHNlZWtQYXJhbUVuZD86IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjIFNlbmQgUmFuZ2U6IGJ5dGVzPTAtIGZvciBmaXJzdCB0aW1lIGxvYWQgaWYgdXNlIFJhbmdlIHNlZWtcbiAgICAgICAgICogQGRlZmF1bHR2YWx1ZSBmYWxzZVxuICAgICAgICAgKi9cbiAgICAgICAgcmFuZ2VMb2FkWmVyb1N0YXJ0PzogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXNjIEluZGljYXRlcyBhIGN1c3RvbSBzZWVrIGhhbmRsZXJcbiAgICAgICAgICogQGRlc2MgU2hvdWxkIGltcGxlbWVudCBgU2Vla0hhbmRsZXJgIGludGVyZmFjZVxuICAgICAgICAgKi9cbiAgICAgICAgY3VzdG9tU2Vla0hhbmRsZXI/OiBDdXN0b21TZWVrSGFuZGxlckNvbnN0cnVjdG9yO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2MgUmV1c2UgMzAxLzMwMiByZWRpcmVjdGVkIHVybCBmb3Igc3Vic2VxdWVuY2UgcmVxdWVzdCBsaWtlIHNlZWssIHJlY29ubmVjdCwgZXRjLlxuICAgICAgICAgKiBAZGVmYXVsdHZhbHVlIGZhbHNlXG4gICAgICAgICAqL1xuICAgICAgICByZXVzZVJlZGlyZWN0ZWRVUkw/OiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlc2MgSW5kaWNhdGVzIHRoZSBSZWZlcnJlciBQb2xpY3kgd2hlbiB1c2luZyBGZXRjaFN0cmVhbUxvYWRlclxuICAgICAgICAgKiBAZGVmYXVsdHZhbHVlICduby1yZWZlcnJlci13aGVuLWRvd25ncmFkZScgKGZyb20gZG9jcylcbiAgICAgICAgICovXG4gICAgICAgIHJlZmVycmVyUG9saWN5PzogUmVmZXJyZXJQb2xpY3k7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzYyBJbmRpY2F0ZXMgYWRkaXRpb25hbCBoZWFkZXJzIHRoYXQgd2lsbCBiZSBhZGRlZCB0byByZXF1ZXN0XG4gICAgICAgICAqL1xuICAgICAgICBoZWFkZXJzPzoge1xuICAgICAgICAgICAgW2s6IHN0cmluZ106IHN0cmluZ1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVzYyBTaG91bGQgaW1wbGVtZW50IGBCYXNlTG9hZGVyYCBpbnRlcmZhY2VcbiAgICAgICAgICovXG4gICAgICAgIGN1c3RvbUxvYWRlcj86IEN1c3RvbUxvYWRlckNvbnN0cnVjdG9yO1xuICAgIH1cblxuICAgIGludGVyZmFjZSBDdXN0b21TZWVrSGFuZGxlckNvbnN0cnVjdG9yIHtcbiAgICAgICAgbmV3KCk6IFNlZWtIYW5kbGVyO1xuICAgIH1cblxuICAgIGludGVyZmFjZSBTZWVrSGFuZGxlciB7XG4gICAgICAgIGdldENvbmZpZyhzb3VyY2VVUkw6IHN0cmluZywgcmFuZ2U6IFJhbmdlKTogU2Vla0NvbmZpZztcbiAgICAgICAgcmVtb3ZlVVJMUGFyYW1ldGVycyh1cmw6IHN0cmluZyk6IHN0cmluZztcbiAgICB9XG5cbiAgICBpbnRlcmZhY2UgU2Vla0NvbmZpZyB7XG4gICAgICAgIHVybDogc3RyaW5nO1xuICAgICAgICBoZWFkZXJzOiBIZWFkZXJzIHwgb2JqZWN0O1xuICAgIH1cblxuICAgIGludGVyZmFjZSBCYXNlTG9hZGVyQ29uc3RydWN0b3Ige1xuICAgICAgICBuZXcodHlwZU5hbWU6IHN0cmluZyk6IEJhc2VMb2FkZXI7XG4gICAgfVxuXG4gICAgaW50ZXJmYWNlIEJhc2VMb2FkZXIge1xuICAgICAgICBfc3RhdHVzOiBudW1iZXI7XG4gICAgICAgIF9uZWVkU3Rhc2g6IGJvb2xlYW47XG5cbiAgICAgICAgZGVzdHJveSgpOiB2b2lkO1xuICAgICAgICBpc1dvcmtpbmcoKTogYm9vbGVhbjtcbiAgICAgICAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuICAgICAgICByZWFkb25seSBzdGF0dXM6IG51bWJlcjtcbiAgICAgICAgcmVhZG9ubHkgbmVlZFN0YXNoQnVmZmVyOiBib29sZWFuO1xuICAgICAgICBvbkNvbnRlbnRMZW5ndGhLbm93bjogKGNvbnRlbnRMZW5ndGg6IG51bWJlcikgPT4gdm9pZDtcbiAgICAgICAgb25VUkxSZWRpcmVjdDogKHJlZGlyZWN0ZWRVUkw6IHN0cmluZykgPT4gdm9pZDtcbiAgICAgICAgb25EYXRhQXJyaXZhbDogKGNodW5rOiBBcnJheUJ1ZmZlciwgYnl0ZVN0YXJ0OiBudW1iZXIsIHJlY2VpdmVkTGVuZ3RoPzogbnVtYmVyKSA9PiB2b2lkO1xuICAgICAgICBvbkVycm9yOiAoZXJyb3JUeXBlOiBMb2FkZXJFcnJvcnMsIGVycm9ySW5mbzogTG9hZGVyRXJyb3JNZXNzYWdlKSA9PiB2b2lkO1xuICAgICAgICBvbkNvbXBsZXRlOiAocmFuZ2VGcm9tOiBudW1iZXIsIHJhbmdlVG86IG51bWJlcikgPT4gdm9pZDtcbiAgICAgICAgb3BlbihkYXRhU291cmNlOiBNZWRpYVNlZ21lbnQsIHJhbmdlOiBSYW5nZSk6IHZvaWQ7XG4gICAgICAgIGFib3J0KCk6IHZvaWQ7XG4gICAgfVxuXG4gICAgaW50ZXJmYWNlIEN1c3RvbUxvYWRlckNvbnN0cnVjdG9yIHtcbiAgICAgICAgbmV3KHNlZWtIYW5kbGVyOiBTZWVrSGFuZGxlciwgY29uZmlnOiBDb25maWcpOiBCYXNlTG9hZGVyO1xuICAgIH1cblxuICAgIGludGVyZmFjZSBSYW5nZSB7XG4gICAgICAgIGZyb206IG51bWJlcjtcbiAgICAgICAgdG86IG51bWJlcjtcbiAgICB9XG5cbiAgICBpbnRlcmZhY2UgTG9hZGVyU3RhdHVzIHtcbiAgICAgICAgcmVhZG9ubHkga0lkbGU6IDA7XG4gICAgICAgIHJlYWRvbmx5IGtDb25uZWN0aW5nOiAxO1xuICAgICAgICByZWFkb25seSBrQnVmZmVyaW5nOiAyO1xuICAgICAgICByZWFkb25seSBrRXJyb3I6IDM7XG4gICAgICAgIHJlYWRvbmx5IGtDb21wbGV0ZTogNDtcbiAgICB9XG5cbiAgICBpbnRlcmZhY2UgTG9hZGVyRXJyb3JzIHtcbiAgICAgICAgcmVhZG9ubHkgT0s6ICdPSyc7XG4gICAgICAgIHJlYWRvbmx5IEVYQ0VQVElPTjogJ0V4Y2VwdGlvbic7XG4gICAgICAgIHJlYWRvbmx5IEhUVFBfU1RBVFVTX0NPREVfSU5WQUxJRDogJ0h0dHBTdGF0dXNDb2RlSW52YWxpZCc7XG4gICAgICAgIHJlYWRvbmx5IENPTk5FQ1RJTkdfVElNRU9VVDogJ0Nvbm5lY3RpbmdUaW1lb3V0JztcbiAgICAgICAgcmVhZG9ubHkgRUFSTFlfRU9GOiAnRWFybHlFb2YnO1xuICAgICAgICByZWFkb25seSBVTlJFQ09WRVJBQkxFX0VBUkxZX0VPRjogJ1VucmVjb3ZlcmFibGVFYXJseUVvZic7XG4gICAgfVxuXG4gICAgaW50ZXJmYWNlIExvYWRlckVycm9yTWVzc2FnZSB7XG4gICAgICAgIGNvZGU6IG51bWJlcjtcbiAgICAgICAgbXNnOiBzdHJpbmc7XG4gICAgfVxuXG4gICAgaW50ZXJmYWNlIEZlYXR1cmVMaXN0IHtcbiAgICAgICAgbXNlRmx2UGxheWJhY2s6IGJvb2xlYW47XG4gICAgICAgIG1zZUxpdmVGbHZQbGF5YmFjazogYm9vbGVhbjtcbiAgICAgICAgbmV0d29ya1N0cmVhbUlPOiBib29sZWFuO1xuICAgICAgICBuZXR3b3JrTG9hZGVyTmFtZTogc3RyaW5nO1xuICAgICAgICBuYXRpdmVNUDRIMjY0UGxheWJhY2s6IGJvb2xlYW47XG4gICAgICAgIG5hdGl2ZVdlYm1WUDhQbGF5YmFjazogYm9vbGVhbjtcbiAgICAgICAgbmF0aXZlV2VibVZQOVBsYXliYWNrOiBib29sZWFuO1xuICAgIH1cblxuICAgIGludGVyZmFjZSBQbGF5ZXJDb25zdHJ1Y3RvciB7XG4gICAgICAgIG5ldyAobWVkaWFEYXRhU291cmNlOiBNZWRpYURhdGFTb3VyY2UsIGNvbmZpZz86IENvbmZpZyk6IFBsYXllcjtcbiAgICB9XG5cbiAgICBpbnRlcmZhY2UgUGxheWVyIHtcbiAgICAgICAgZGVzdHJveSgpOiB2b2lkO1xuICAgICAgICBvbihldmVudDogc3RyaW5nLCBsaXN0ZW5lcjogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkKTogdm9pZDtcbiAgICAgICAgb2ZmKGV2ZW50OiBzdHJpbmcsIGxpc3RlbmVyOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQpOiB2b2lkO1xuICAgICAgICBhdHRhY2hNZWRpYUVsZW1lbnQobWVkaWFFbGVtZW50OiBIVE1MTWVkaWFFbGVtZW50KTogdm9pZDtcbiAgICAgICAgZGV0YWNoTWVkaWFFbGVtZW50KCk6IHZvaWQ7XG4gICAgICAgIGxvYWQoKTogdm9pZDtcbiAgICAgICAgdW5sb2FkKCk6IHZvaWQ7XG4gICAgICAgIHBsYXkoKTogUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XG4gICAgICAgIHBhdXNlKCk6IHZvaWQ7XG4gICAgICAgIHR5cGU6IHN0cmluZztcbiAgICAgICAgYnVmZmVyZWQ6IFRpbWVSYW5nZXM7XG4gICAgICAgIGR1cmF0aW9uOiBudW1iZXI7XG4gICAgICAgIHZvbHVtZTogbnVtYmVyO1xuICAgICAgICBtdXRlZDogYm9vbGVhbjtcbiAgICAgICAgY3VycmVudFRpbWU6IG51bWJlcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXByZWNhdGVkIEZsdlBsYXllci9OYXRpdmVQbGF5ZXIgaGF2ZSBpdHMgb3duIGBtZWRpYUluZm9gIGZpZWxkLlxuICAgICAgICAgKiBAZGVzYyBLZWVwIGl0IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuICAgICAgICAgKiBAc2luY2UgMS40XG4gICAgICAgICAqL1xuICAgICAgICBtZWRpYUluZm86IE5hdGl2ZVBsYXllck1lZGlhSW5mbyB8IEZsdlBsYXllck1lZGlhSW5mbztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXByZWNhdGVkIEZsdlBsYXllci9OYXRpdmVQbGF5ZXIgaGF2ZSBpdHMgb3duIGBzdGF0aXN0aWNzSW5mb2AgZmllbGQuXG4gICAgICAgICAqIEBkZXNjIEtlZXAgaXQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG4gICAgICAgICAqIEBzaW5jZSAxLjRcbiAgICAgICAgICovXG4gICAgICAgIHN0YXRpc3RpY3NJbmZvOiBOYXRpdmVQbGF5ZXJTdGF0aXN0aWNzSW5mbyB8IEZsdlBsYXllclN0YXRpc3RpY3NJbmZvO1xuICAgIH1cblxuICAgIGludGVyZmFjZSBOYXRpdmVQbGF5ZXJTdGF0aXN0aWNzSW5mbyB7XG4gICAgICAgIHBsYXllclR5cGU6ICdOYXRpdmVQbGF5ZXInO1xuICAgICAgICB1cmw6IHN0cmluZztcbiAgICAgICAgZGVjb2RlZEZyYW1lcz86IG51bWJlcjtcbiAgICAgICAgZHJvcHBlZEZyYW1lcz86IG51bWJlcjtcbiAgICB9XG5cbiAgICBpbnRlcmZhY2UgRmx2UGxheWVyUmVwb3J0U3RhdGlzdGljc0luZm8ge1xuICAgICAgICB1cmw6IHN0cmluZztcbiAgICAgICAgaGFzUmVkaXJlY3Q6IGJvb2xlYW47XG4gICAgICAgIHJlZGlyZWN0ZWRVUkw/OiBzdHJpbmc7XG4gICAgICAgIHNwZWVkOiBudW1iZXI7IC8vIEtCL3NcbiAgICAgICAgbG9hZGVyVHlwZTogc3RyaW5nO1xuICAgICAgICBjdXJyZW50U2VnbWVudEluZGV4OiBudW1iZXI7XG4gICAgICAgIHRvdGFsU2VnbWVudENvdW50OiBudW1iZXI7XG4gICAgfVxuXG4gICAgaW50ZXJmYWNlIEZsdlBsYXllclN0YXRpc3RpY3NJbmZvIGV4dGVuZHMgUGFydGlhbDxGbHZQbGF5ZXJSZXBvcnRTdGF0aXN0aWNzSW5mbz4ge1xuICAgICAgICBwbGF5ZXJUeXBlOiAnRmx2UGxheWVyJztcbiAgICAgICAgZGVjb2RlZEZyYW1lcz86IG51bWJlcjtcbiAgICAgICAgZHJvcHBlZEZyYW1lcz86IG51bWJlcjtcbiAgICB9XG5cbiAgICBpbnRlcmZhY2UgTmF0aXZlUGxheWVyTWVkaWFJbmZvIHtcbiAgICAgICAgbWltZVR5cGU6IHN0cmluZztcbiAgICAgICAgZHVyYXRpb24/OiBudW1iZXI7XG4gICAgICAgIHdpZHRoPzogbnVtYmVyO1xuICAgICAgICBoZWlnaHQ/OiBudW1iZXI7XG4gICAgfVxuXG4gICAgaW50ZXJmYWNlIEZsdlBsYXllck1lZGlhSW5mbyBleHRlbmRzIE5hdGl2ZVBsYXllck1lZGlhSW5mbyB7XG4gICAgICAgIGF1ZGlvQ29kZWM/OiBzdHJpbmc7XG4gICAgICAgIHZpZGVvQ29kZWM/OiBzdHJpbmc7XG4gICAgICAgIGF1ZGlvRGF0YVJhdGU/OiBudW1iZXI7XG4gICAgICAgIHZpZGVvRGF0YVJhdGU/OiBudW1iZXI7XG4gICAgICAgIGhhc0F1ZGlvPzogYm9vbGVhbjtcbiAgICAgICAgaGFzVmlkZW8/OiBib29sZWFuO1xuICAgICAgICBjaHJvbWFGb3JtYXQ/OiBzdHJpbmc7XG4gICAgICAgIGZwcz86IG51bWJlcjtcblxuICAgICAgICBbazogc3RyaW5nXTogYW55O1xuICAgIH1cblxuICAgIGludGVyZmFjZSBGbHZQbGF5ZXIgZXh0ZW5kcyBQbGF5ZXIge1xuICAgICAgICBtZWRpYUluZm86IEZsdlBsYXllck1lZGlhSW5mbztcbiAgICAgICAgc3RhdGlzdGljc0luZm86IEZsdlBsYXllclN0YXRpc3RpY3NJbmZvO1xuICAgIH1cblxuICAgIGludGVyZmFjZSBOYXRpdmVQbGF5ZXIgZXh0ZW5kcyBQbGF5ZXIge1xuICAgICAgICBtZWRpYUluZm86IE5hdGl2ZVBsYXllck1lZGlhSW5mbztcbiAgICAgICAgc3RhdGlzdGljc0luZm86IE5hdGl2ZVBsYXllclN0YXRpc3RpY3NJbmZvO1xuICAgIH1cblxuICAgIGludGVyZmFjZSBMb2dnaW5nQ29udHJvbENvbmZpZyB7XG4gICAgICAgIGZvcmNlR2xvYmFsVGFnOiBib29sZWFuO1xuICAgICAgICBnbG9iYWxUYWc6IHN0cmluZztcbiAgICAgICAgZW5hYmxlQWxsOiBib29sZWFuO1xuICAgICAgICBlbmFibGVEZWJ1ZzogYm9vbGVhbjtcbiAgICAgICAgZW5hYmxlVmVyYm9zZTogYm9vbGVhbjtcbiAgICAgICAgZW5hYmxlSW5mbzogYm9vbGVhbjtcbiAgICAgICAgZW5hYmxlV2FybjogYm9vbGVhbjtcbiAgICAgICAgZW5hYmxlRXJyb3I6IGJvb2xlYW47XG4gICAgfVxuXG4gICAgaW50ZXJmYWNlIExvZ2dpbmdDb250cm9sIGV4dGVuZHMgTG9nZ2luZ0NvbnRyb2xDb25maWcge1xuICAgICAgICBnZXRDb25maWcoKTogTG9nZ2luZ0NvbnRyb2xDb25maWc7XG4gICAgICAgIGFwcGx5Q29uZmlnKGNvbmZpZzogUGFydGlhbDxMb2dnaW5nQ29udHJvbENvbmZpZz4pOiB2b2lkO1xuICAgICAgICBhZGRMb2dMaXN0ZW5lcihsaXN0ZW5lcjogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkKTogdm9pZDtcbiAgICAgICAgcmVtb3ZlTG9nTGlzdGVuZXIobGlzdGVuZXI6ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCk6IHZvaWQ7XG4gICAgfVxuXG4gICAgaW50ZXJmYWNlIEV2ZW50cyB7XG4gICAgICAgIEVSUk9SOiBzdHJpbmc7XG4gICAgICAgIExPQURJTkdfQ09NUExFVEU6IHN0cmluZztcbiAgICAgICAgUkVDT1ZFUkVEX0VBUkxZX0VPRjogc3RyaW5nO1xuICAgICAgICBNRURJQV9JTkZPOiBzdHJpbmc7XG4gICAgICAgIE1FVEFEQVRBX0FSUklWRUQ6IHN0cmluZztcbiAgICAgICAgU0NSSVBUREFUQV9BUlJJVkVEOiBzdHJpbmc7XG4gICAgICAgIFNUQVRJU1RJQ1NfSU5GTzogc3RyaW5nO1xuICAgIH1cblxuICAgIGludGVyZmFjZSBFcnJvclR5cGVzIHtcbiAgICAgICAgTkVUV09SS19FUlJPUjogc3RyaW5nO1xuICAgICAgICBNRURJQV9FUlJPUjogc3RyaW5nO1xuICAgICAgICBPVEhFUl9FUlJPUjogc3RyaW5nO1xuICAgIH1cblxuICAgIGludGVyZmFjZSBFcnJvckRldGFpbHMge1xuICAgICAgICBORVRXT1JLX0VYQ0VQVElPTjogc3RyaW5nO1xuICAgICAgICBORVRXT1JLX1NUQVRVU19DT0RFX0lOVkFMSUQ6IHN0cmluZztcbiAgICAgICAgTkVUV09SS19USU1FT1VUOiBzdHJpbmc7XG4gICAgICAgIE5FVFdPUktfVU5SRUNPVkVSQUJMRV9FQVJMWV9FT0Y6IHN0cmluZztcblxuICAgICAgICBNRURJQV9NU0VfRVJST1I6IHN0cmluZztcblxuICAgICAgICBNRURJQV9GT1JNQVRfRVJST1I6IHN0cmluZztcbiAgICAgICAgTUVESUFfRk9STUFUX1VOU1VQUE9SVEVEOiBzdHJpbmc7XG4gICAgICAgIE1FRElBX0NPREVDX1VOU1VQUE9SVEVEOiBzdHJpbmc7XG4gICAgfVxufVxuXG4iXX0=
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import HLS from "hls.js";
|
|
2
|
+
import { Component, Input, ViewChild } from "@angular/core";
|
|
3
|
+
import { Thread } from "../../core/thread";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class ZenHlsPlayerComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.isVideoFilterVisible = false;
|
|
8
|
+
this._hls = null;
|
|
9
|
+
this._isDestroyed = false;
|
|
10
|
+
}
|
|
11
|
+
ngOnChanges(changeObj) {
|
|
12
|
+
if (this.source) {
|
|
13
|
+
this.reload();
|
|
14
|
+
}
|
|
15
|
+
if (changeObj.control &&
|
|
16
|
+
changeObj.control.currentValue) {
|
|
17
|
+
this.setControl(changeObj.control.currentValue);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
ngOnDestroy() {
|
|
21
|
+
this._isDestroyed = true;
|
|
22
|
+
this.destroy();
|
|
23
|
+
}
|
|
24
|
+
async reload() {
|
|
25
|
+
if (!this.source) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
if (this._isDestroyed) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (!this._video) {
|
|
32
|
+
// wait for component
|
|
33
|
+
await this.waitForComponent();
|
|
34
|
+
}
|
|
35
|
+
if (!this._video || this._isDestroyed) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (!HLS.isSupported()) {
|
|
39
|
+
console.log("HLS not supported. Set url to the native video player");
|
|
40
|
+
// just attached the link to video player
|
|
41
|
+
this._video.nativeElement.src = this.source;
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
// destroy previous
|
|
45
|
+
this.destroy();
|
|
46
|
+
console.log(`[HlsPlayerComponent] start playing for the source [${this.source}]`);
|
|
47
|
+
// HLS configuration: https://github.com/video-dev/hls.js/blob/v1.3.0/docs/API.md
|
|
48
|
+
this._hls = new HLS({
|
|
49
|
+
fragLoadingTimeOut: 10000,
|
|
50
|
+
manifestLoadingMaxRetry: 3,
|
|
51
|
+
manifestLoadingTimeOut: 10000,
|
|
52
|
+
manifestLoadingMaxRetryTimeout: 10000,
|
|
53
|
+
maxBufferHole: 10,
|
|
54
|
+
lowLatencyMode: false,
|
|
55
|
+
fragLoadingMaxRetry: 1,
|
|
56
|
+
// backBufferLength: 90,
|
|
57
|
+
autoStartLoad: true,
|
|
58
|
+
testBandwidth: false
|
|
59
|
+
});
|
|
60
|
+
this._hls.attachMedia(this._video.nativeElement);
|
|
61
|
+
this._hls.loadSource(this.source);
|
|
62
|
+
this._hls.on(HLS.Events.FRAG_LOADED, () => {
|
|
63
|
+
// fired event when video is playing
|
|
64
|
+
this.onData();
|
|
65
|
+
});
|
|
66
|
+
this._hls.on(HLS.Events.ERROR, (err, data) => {
|
|
67
|
+
if (data.fatal) {
|
|
68
|
+
console.error("HLS error:", err, data);
|
|
69
|
+
// reload source
|
|
70
|
+
console.log("HLS reload source");
|
|
71
|
+
this.destroy();
|
|
72
|
+
this.reload();
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
console.log(`Created the hls player for source "${this.source}"`);
|
|
76
|
+
}
|
|
77
|
+
async waitForComponent() {
|
|
78
|
+
while (!this._video) {
|
|
79
|
+
await Thread.sleep(100);
|
|
80
|
+
if (this._isDestroyed) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
setControl(control) {
|
|
86
|
+
if (this.control) {
|
|
87
|
+
this.control.OffStop(this._stopCallback);
|
|
88
|
+
this.control.OffStop(this._playCallback);
|
|
89
|
+
}
|
|
90
|
+
this.control = control;
|
|
91
|
+
if (this.control) {
|
|
92
|
+
this._stopCallback = this.control.OnStop(() => {
|
|
93
|
+
this.destroy();
|
|
94
|
+
});
|
|
95
|
+
this._playCallback = this.control.OnPlay(() => {
|
|
96
|
+
this.reload();
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
destroy() {
|
|
101
|
+
if (this._hls) {
|
|
102
|
+
this._hls.destroy();
|
|
103
|
+
this._hls = null;
|
|
104
|
+
console.log("Destroyed the HLS player");
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
onData() {
|
|
108
|
+
console.log("HLS on data event");
|
|
109
|
+
if (this.control) {
|
|
110
|
+
this.control.EmitData();
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
onError() {
|
|
114
|
+
console.log("HLS error");
|
|
115
|
+
if (this.control) {
|
|
116
|
+
this.control.Stop();
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
toggleFilter(evt) {
|
|
120
|
+
this.isVideoFilterVisible = !this.isVideoFilterVisible;
|
|
121
|
+
evt.stopPropagation();
|
|
122
|
+
}
|
|
123
|
+
hideFiler() {
|
|
124
|
+
this.isVideoFilterVisible = false;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
ZenHlsPlayerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ZenHlsPlayerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
128
|
+
ZenHlsPlayerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ZenHlsPlayerComponent, selector: "zen-hls-player", inputs: { source: "source", control: "control" }, viewQueries: [{ propertyName: "_video", first: true, predicate: ["video_container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"hls-player-component\">\n\t<video #video_container\n\t\t controls\n\t\t muted\n\t\t autoplay></video>\n</div>\n", styles: [".hls-player-component{position:relative;background-color:#000;width:100%;height:100%;border-radius:4px}.hls-player-component video{position:absolute;top:0;left:0;width:100%;height:100%;max-height:100%;border-radius:4px}.hls-player-component zen-icon{position:absolute;width:24px;height:24px;right:20px;top:20px;cursor:pointer;border-radius:4px;background:#ffffff}.hls-player-component .video-filter{position:absolute;right:20px;top:50px;z-index:1000}\n"] });
|
|
129
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ZenHlsPlayerComponent, decorators: [{
|
|
130
|
+
type: Component,
|
|
131
|
+
args: [{ selector: 'zen-hls-player', template: "<div class=\"hls-player-component\">\n\t<video #video_container\n\t\t controls\n\t\t muted\n\t\t autoplay></video>\n</div>\n", styles: [".hls-player-component{position:relative;background-color:#000;width:100%;height:100%;border-radius:4px}.hls-player-component video{position:absolute;top:0;left:0;width:100%;height:100%;max-height:100%;border-radius:4px}.hls-player-component zen-icon{position:absolute;width:24px;height:24px;right:20px;top:20px;cursor:pointer;border-radius:4px;background:#ffffff}.hls-player-component .video-filter{position:absolute;right:20px;top:50px;z-index:1000}\n"] }]
|
|
132
|
+
}], propDecorators: { source: [{
|
|
133
|
+
type: Input
|
|
134
|
+
}], control: [{
|
|
135
|
+
type: Input
|
|
136
|
+
}], _video: [{
|
|
137
|
+
type: ViewChild,
|
|
138
|
+
args: ["video_container"]
|
|
139
|
+
}] } });
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGxzLXBsYXllci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy16ZW5kdWl0L3NyYy9saWIvbGl2ZS12aWV3LXBsYXllci9obHMtcGxheWVyL2hscy1wbGF5ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctemVuZHVpdC9zcmMvbGliL2xpdmUtdmlldy1wbGF5ZXIvaGxzLXBsYXllci9obHMtcGxheWVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sR0FBbUIsTUFBTSxRQUFRLENBQUM7QUFDekMsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQWdDLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV0RyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBTzNDLE1BQU0sT0FBTyxxQkFBcUI7SUFMbEM7UUFZVyx5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFFNUIsU0FBSSxHQUFlLElBQUksQ0FBQztRQU94QixpQkFBWSxHQUFHLEtBQUssQ0FBQztLQWlKaEM7SUEvSVUsV0FBVyxDQUFDLFNBQWM7UUFDN0IsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2IsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFBO1NBQ2hCO1FBQ0QsSUFBSSxTQUFTLENBQUMsT0FBTztZQUNqQixTQUFTLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRTtZQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDbkQ7SUFDTCxDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRU8sS0FBSyxDQUFDLE1BQU07UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZCxPQUFPO1NBQ1Y7UUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZCxxQkFBcUI7WUFDckIsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUNqQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkMsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLHVEQUF1RCxDQUFDLENBQUE7WUFDcEUseUNBQXlDO1lBQ3pDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQzVDLE9BQU87U0FDVjtRQUVELG1CQUFtQjtRQUNuQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFZixPQUFPLENBQUMsR0FBRyxDQUFDLHNEQUFzRCxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQTtRQUVqRixpRkFBaUY7UUFDakYsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQztZQUNoQixrQkFBa0IsRUFBRSxLQUFLO1lBQ3pCLHVCQUF1QixFQUFFLENBQUM7WUFDMUIsc0JBQXNCLEVBQUUsS0FBSztZQUM3Qiw4QkFBOEIsRUFBRSxLQUFLO1lBQ3JDLGFBQWEsRUFBRSxFQUFFO1lBQ2pCLGNBQWMsRUFBRSxLQUFLO1lBQ3JCLG1CQUFtQixFQUFFLENBQUM7WUFDdEIsd0JBQXdCO1lBQ3hCLGFBQWEsRUFBRSxJQUFJO1lBQ25CLGFBQWEsRUFBRSxLQUFLO1NBQ3ZCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFakQsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWxDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLEdBQUcsRUFBRTtZQUN0QyxvQ0FBb0M7WUFDcEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDekMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDdkMsZ0JBQWdCO2dCQUNoQixPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUE7Z0JBQ2hDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDakI7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxHQUFHLENBQUMsc0NBQXNDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFTyxLQUFLLENBQUMsZ0JBQWdCO1FBQzFCLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2pCLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQ25CLE9BQU87YUFDVjtTQUNKO0lBQ0wsQ0FBQztJQUVPLFVBQVUsQ0FBQyxPQUFzQjtRQUNyQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzVDO1FBRUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFFdkIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7Z0JBQzFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNuQixDQUFDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO2dCQUMxQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEIsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7SUFHTyxPQUFPO1FBQ1gsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7U0FDM0M7SUFDTCxDQUFDO0lBRU8sTUFBTTtRQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtRQUVoQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQzNCO0lBQ0wsQ0FBQztJQUVPLE9BQU87UUFDWCxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBRXhCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDdkI7SUFDTCxDQUFDO0lBR00sWUFBWSxDQUFDLEdBQWU7UUFDL0IsSUFBSSxDQUFDLG9CQUFvQixHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1FBQ3ZELEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU0sU0FBUztRQUNaLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7SUFDdEMsQ0FBQzs7bUhBL0pRLHFCQUFxQjt1R0FBckIscUJBQXFCLHdPQ1ZsQyxvSUFNQTs0RkRJYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0ksZ0JBQWdCOzhCQUtqQixNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUV3QixNQUFNO3NCQUFuQyxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBITFMsIHsgRXJyb3JUeXBlcyB9IGZyb20gXCJobHMuanNcIjtcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBQbGF5ZXJDb250cm9sIH0gZnJvbSBcIi4uL3BsYXllci5jb250cm9sXCI7XG5pbXBvcnQgeyBUaHJlYWQgfSBmcm9tIFwiLi4vLi4vY29yZS90aHJlYWRcIjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd6ZW4taGxzLXBsYXllcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2hscy1wbGF5ZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2hscy1wbGF5ZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBaZW5IbHNQbGF5ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KCkgc291cmNlITogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgY29udHJvbCE6IFBsYXllckNvbnRyb2w7XG5cbiAgICBAVmlld0NoaWxkKFwidmlkZW9fY29udGFpbmVyXCIpIF92aWRlbz86IEVsZW1lbnRSZWY8SFRNTFZpZGVvRWxlbWVudD47XG5cbiAgICBwdWJsaWMgaXNWaWRlb0ZpbHRlclZpc2libGUgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgX2hsczogSExTIHwgbnVsbCA9IG51bGw7XG5cbiAgICBwcml2YXRlIF9zdG9wQ2FsbGJhY2shOiBudW1iZXI7XG5cbiAgICBwcml2YXRlIF9wbGF5Q2FsbGJhY2shOiBudW1iZXI7XG5cblxuICAgIHByaXZhdGUgX2lzRGVzdHJveWVkID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlT2JqOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc291cmNlKSB7XG4gICAgICAgICAgICB0aGlzLnJlbG9hZCgpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZU9iai5jb250cm9sICYmXG4gICAgICAgICAgICBjaGFuZ2VPYmouY29udHJvbC5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0Q29udHJvbChjaGFuZ2VPYmouY29udHJvbC5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pc0Rlc3Ryb3llZCA9IHRydWU7XG4gICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgcmVsb2FkKCkge1xuICAgICAgICBpZiAoIXRoaXMuc291cmNlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5faXNEZXN0cm95ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5fdmlkZW8pIHtcbiAgICAgICAgICAgIC8vIHdhaXQgZm9yIGNvbXBvbmVudFxuICAgICAgICAgICAgYXdhaXQgdGhpcy53YWl0Rm9yQ29tcG9uZW50KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX3ZpZGVvIHx8IHRoaXMuX2lzRGVzdHJveWVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIUhMUy5pc1N1cHBvcnRlZCgpKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkhMUyBub3Qgc3VwcG9ydGVkLiBTZXQgdXJsIHRvIHRoZSBuYXRpdmUgdmlkZW8gcGxheWVyXCIpXG4gICAgICAgICAgICAvLyBqdXN0IGF0dGFjaGVkIHRoZSBsaW5rIHRvIHZpZGVvIHBsYXllclxuICAgICAgICAgICAgdGhpcy5fdmlkZW8ubmF0aXZlRWxlbWVudC5zcmMgPSB0aGlzLnNvdXJjZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGRlc3Ryb3kgcHJldmlvdXNcbiAgICAgICAgdGhpcy5kZXN0cm95KCk7XG5cbiAgICAgICAgY29uc29sZS5sb2coYFtIbHNQbGF5ZXJDb21wb25lbnRdIHN0YXJ0IHBsYXlpbmcgZm9yIHRoZSBzb3VyY2UgWyR7dGhpcy5zb3VyY2V9XWApXG5cbiAgICAgICAgLy8gSExTIGNvbmZpZ3VyYXRpb246IGh0dHBzOi8vZ2l0aHViLmNvbS92aWRlby1kZXYvaGxzLmpzL2Jsb2IvdjEuMy4wL2RvY3MvQVBJLm1kXG4gICAgICAgIHRoaXMuX2hscyA9IG5ldyBITFMoe1xuICAgICAgICAgICAgZnJhZ0xvYWRpbmdUaW1lT3V0OiAxMDAwMCxcbiAgICAgICAgICAgIG1hbmlmZXN0TG9hZGluZ01heFJldHJ5OiAzLFxuICAgICAgICAgICAgbWFuaWZlc3RMb2FkaW5nVGltZU91dDogMTAwMDAsXG4gICAgICAgICAgICBtYW5pZmVzdExvYWRpbmdNYXhSZXRyeVRpbWVvdXQ6IDEwMDAwLFxuICAgICAgICAgICAgbWF4QnVmZmVySG9sZTogMTAsXG4gICAgICAgICAgICBsb3dMYXRlbmN5TW9kZTogZmFsc2UsXG4gICAgICAgICAgICBmcmFnTG9hZGluZ01heFJldHJ5OiAxLFxuICAgICAgICAgICAgLy8gYmFja0J1ZmZlckxlbmd0aDogOTAsXG4gICAgICAgICAgICBhdXRvU3RhcnRMb2FkOiB0cnVlLFxuICAgICAgICAgICAgdGVzdEJhbmR3aWR0aDogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2hscy5hdHRhY2hNZWRpYSh0aGlzLl92aWRlby5uYXRpdmVFbGVtZW50KTtcblxuICAgICAgICB0aGlzLl9obHMubG9hZFNvdXJjZSh0aGlzLnNvdXJjZSk7XG5cbiAgICAgICAgdGhpcy5faGxzLm9uKEhMUy5FdmVudHMuRlJBR19MT0FERUQsICgpID0+IHtcbiAgICAgICAgICAgIC8vIGZpcmVkIGV2ZW50IHdoZW4gdmlkZW8gaXMgcGxheWluZ1xuICAgICAgICAgICAgdGhpcy5vbkRhdGEoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5faGxzLm9uKEhMUy5FdmVudHMuRVJST1IsIChlcnIsIGRhdGEpID0+IHtcbiAgICAgICAgICAgIGlmIChkYXRhLmZhdGFsKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkhMUyBlcnJvcjpcIiwgZXJyLCBkYXRhKTtcbiAgICAgICAgICAgICAgICAvLyByZWxvYWQgc291cmNlXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJITFMgcmVsb2FkIHNvdXJjZVwiKVxuICAgICAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVsb2FkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKGBDcmVhdGVkIHRoZSBobHMgcGxheWVyIGZvciBzb3VyY2UgXCIke3RoaXMuc291cmNlfVwiYCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyB3YWl0Rm9yQ29tcG9uZW50KCkge1xuICAgICAgICB3aGlsZSAoIXRoaXMuX3ZpZGVvKSB7XG4gICAgICAgICAgICBhd2FpdCBUaHJlYWQuc2xlZXAoMTAwKTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9pc0Rlc3Ryb3llZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Q29udHJvbChjb250cm9sOiBQbGF5ZXJDb250cm9sKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbC5PZmZTdG9wKHRoaXMuX3N0b3BDYWxsYmFjayk7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wuT2ZmU3RvcCh0aGlzLl9wbGF5Q2FsbGJhY2spO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb250cm9sID0gY29udHJvbDtcblxuICAgICAgICBpZiAodGhpcy5jb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLl9zdG9wQ2FsbGJhY2sgPSB0aGlzLmNvbnRyb2wuT25TdG9wKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLl9wbGF5Q2FsbGJhY2sgPSB0aGlzLmNvbnRyb2wuT25QbGF5KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIHByaXZhdGUgZGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2hscykge1xuICAgICAgICAgICAgdGhpcy5faGxzLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuX2hscyA9IG51bGw7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkRlc3Ryb3llZCB0aGUgSExTIHBsYXllclwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25EYXRhKCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIkhMUyBvbiBkYXRhIGV2ZW50XCIpXG5cbiAgICAgICAgaWYgKHRoaXMuY29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5jb250cm9sLkVtaXREYXRhKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uRXJyb3IoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiSExTIGVycm9yXCIpXG5cbiAgICAgICAgaWYgKHRoaXMuY29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5jb250cm9sLlN0b3AoKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgcHVibGljIHRvZ2dsZUZpbHRlcihldnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc1ZpZGVvRmlsdGVyVmlzaWJsZSA9ICF0aGlzLmlzVmlkZW9GaWx0ZXJWaXNpYmxlO1xuICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGhpZGVGaWxlcigpIHtcbiAgICAgICAgdGhpcy5pc1ZpZGVvRmlsdGVyVmlzaWJsZSA9IGZhbHNlO1xuICAgIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImhscy1wbGF5ZXItY29tcG9uZW50XCI+XG5cdDx2aWRlbyAjdmlkZW9fY29udGFpbmVyXG5cdFx0ICAgY29udHJvbHNcblx0XHQgICBtdXRlZFxuXHRcdCAgIGF1dG9wbGF5PjwvdmlkZW8+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Component, Input } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class ZenHTML5VideoPlayerComponent {
|
|
4
|
+
async ngOnChanges() {
|
|
5
|
+
if (this.source) {
|
|
6
|
+
console.log(`Created the html5 video player for source "${this.source}"`);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
ZenHTML5VideoPlayerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ZenHTML5VideoPlayerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11
|
+
ZenHTML5VideoPlayerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ZenHTML5VideoPlayerComponent, selector: "zen-html5-video-player", inputs: { source: "source", control: "control" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"html5-player-component\">\n\t<video controls\n\t\t muted\n\t\t autoplay\n\t\t [src]=\"source\">\n\t</video>\n</div>\n", styles: [".html5-player-component{position:relative;background-color:#000;width:100%;height:100%;border-radius:4px}.html5-player-component video{position:absolute;top:0;left:0;width:100%;height:100%;max-height:100%;border-radius:4px}\n"] });
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ZenHTML5VideoPlayerComponent, decorators: [{
|
|
13
|
+
type: Component,
|
|
14
|
+
args: [{ selector: 'zen-html5-video-player', template: "<div class=\"html5-player-component\">\n\t<video controls\n\t\t muted\n\t\t autoplay\n\t\t [src]=\"source\">\n\t</video>\n</div>\n", styles: [".html5-player-component{position:relative;background-color:#000;width:100%;height:100%;border-radius:4px}.html5-player-component video{position:absolute;top:0;left:0;width:100%;height:100%;max-height:100%;border-radius:4px}\n"] }]
|
|
15
|
+
}], propDecorators: { source: [{
|
|
16
|
+
type: Input
|
|
17
|
+
}], control: [{
|
|
18
|
+
type: Input
|
|
19
|
+
}] } });
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbDUtdmlkZW8tcGxheWVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXplbmR1aXQvc3JjL2xpYi9saXZlLXZpZXctcGxheWVyL2h0bWw1LXZpZGVvLXBsYXllci9odG1sNS12aWRlby1wbGF5ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctemVuZHVpdC9zcmMvbGliL2xpdmUtdmlldy1wbGF5ZXIvaHRtbDUtdmlkZW8tcGxheWVyL2h0bWw1LXZpZGVvLXBsYXllci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQzs7QUFRNUQsTUFBTSxPQUFPLDRCQUE0QjtJQUtqQyxLQUFLLENBQUMsV0FBVztRQUN2QixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDUCxPQUFPLENBQUMsR0FBRyxDQUFDLDhDQUE4QyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztTQUNuRjtJQUNGLENBQUM7OzBIQVRXLDRCQUE0Qjs4R0FBNUIsNEJBQTRCLHFJQ1J6QywwSUFPQTs0RkRDYSw0QkFBNEI7a0JBTHhDLFNBQVM7K0JBQ0Msd0JBQXdCOzhCQUt6QixNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFBsYXllckNvbnRyb2wgfSBmcm9tIFwiLi4vcGxheWVyLmNvbnRyb2xcIjtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnemVuLWh0bWw1LXZpZGVvLXBsYXllcicsXG5cdHRlbXBsYXRlVXJsOiAnLi9odG1sNS12aWRlby1wbGF5ZXIuY29tcG9uZW50Lmh0bWwnLFxuXHRzdHlsZVVybHM6IFsnLi9odG1sNS12aWRlby1wbGF5ZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBaZW5IVE1MNVZpZGVvUGxheWVyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcblx0QElucHV0KCkgc291cmNlITogc3RyaW5nO1xuXG5cdEBJbnB1dCgpIGNvbnRyb2whOiBQbGF5ZXJDb250cm9sO1xuXG5cdHB1YmxpYyBhc3luYyBuZ09uQ2hhbmdlcygpIHtcblx0XHRpZiAodGhpcy5zb3VyY2UpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBDcmVhdGVkIHRoZSBodG1sNSB2aWRlbyBwbGF5ZXIgZm9yIHNvdXJjZSBcIiR7dGhpcy5zb3VyY2V9XCJgKTtcblx0XHR9XG5cdH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJodG1sNS1wbGF5ZXItY29tcG9uZW50XCI+XG5cdDx2aWRlbyBjb250cm9sc1xuXHRcdCAgIG11dGVkXG5cdFx0ICAgYXV0b3BsYXlcblx0XHQgICBbc3JjXT1cInNvdXJjZVwiPlxuXHQ8L3ZpZGVvPlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Component, Input } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "../html5-video-player/html5-video-player.component";
|
|
5
|
+
import * as i3 from "../flv-player/flv-player.component";
|
|
6
|
+
import * as i4 from "../hls-player/hls-player.component";
|
|
7
|
+
import * as i5 from "../snapshot-player/snapshot-player.component";
|
|
8
|
+
import * as i6 from "../web-rtc/web-rtc-player.component";
|
|
9
|
+
export class ZenLiveViewPlayerComponent {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.playerType = "unknown";
|
|
12
|
+
this.IsLoading = true;
|
|
13
|
+
}
|
|
14
|
+
ngOnDestroy() {
|
|
15
|
+
if (this.control) {
|
|
16
|
+
if (this._controlPlayHander) {
|
|
17
|
+
this.control.OffPlay(this._controlPlayHander);
|
|
18
|
+
}
|
|
19
|
+
if (this._controlStopHander) {
|
|
20
|
+
this.control.OffStop(this._controlStopHander);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
ZenLiveViewPlayerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ZenLiveViewPlayerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
26
|
+
ZenLiveViewPlayerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ZenLiveViewPlayerComponent, selector: "zen-live-view-player", inputs: { control: "control", source: "source", playerType: "playerType", snapshotInterval: "snapshotInterval", timeout: "timeout" }, ngImport: i0, template: "<zen-web-rtc-player [source]=\"source\"\n [control]=\"control\"\n *ngIf=\"playerType == 'webrtc'\"></zen-web-rtc-player>\n\n<zen-snapshot-player [source]=\"source\"\n [control]=\"control\"\n [interval]=\"snapshotInterval\"\n *ngIf=\"playerType == 'snapshot'\"></zen-snapshot-player>\n\n<zen-flv-player [source]=\"source\"\n [control]=\"control\"\n *ngIf=\"playerType == 'flv'\"></zen-flv-player>\n\n<zen-hls-player [source]=\"source\"\n [control]=\"control\"\n *ngIf=\"playerType == 'hls'\"></zen-hls-player>\n\n<zen-html5-video-player [source]=\"source\"\n [control]=\"control\"\n *ngIf=\"playerType == 'html5'\"></zen-html5-video-player>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.ZenHTML5VideoPlayerComponent, selector: "zen-html5-video-player", inputs: ["source", "control"] }, { kind: "component", type: i3.ZenFlvPlayerComponent, selector: "zen-flv-player", inputs: ["source", "control"] }, { kind: "component", type: i4.ZenHlsPlayerComponent, selector: "zen-hls-player", inputs: ["source", "control"] }, { kind: "component", type: i5.ZenSnapshotPlayerComponent, selector: "zen-snapshot-player", inputs: ["source", "channel", "control", "interval"] }, { kind: "component", type: i6.ZenWebRTCPlayerComponent, selector: "zen-web-rtc-player", inputs: ["source", "control"], outputs: ["onStartPlay", "onServerError", "onServerDisconnect"] }] });
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ZenLiveViewPlayerComponent, decorators: [{
|
|
28
|
+
type: Component,
|
|
29
|
+
args: [{ selector: 'zen-live-view-player', template: "<zen-web-rtc-player [source]=\"source\"\n [control]=\"control\"\n *ngIf=\"playerType == 'webrtc'\"></zen-web-rtc-player>\n\n<zen-snapshot-player [source]=\"source\"\n [control]=\"control\"\n [interval]=\"snapshotInterval\"\n *ngIf=\"playerType == 'snapshot'\"></zen-snapshot-player>\n\n<zen-flv-player [source]=\"source\"\n [control]=\"control\"\n *ngIf=\"playerType == 'flv'\"></zen-flv-player>\n\n<zen-hls-player [source]=\"source\"\n [control]=\"control\"\n *ngIf=\"playerType == 'hls'\"></zen-hls-player>\n\n<zen-html5-video-player [source]=\"source\"\n [control]=\"control\"\n *ngIf=\"playerType == 'html5'\"></zen-html5-video-player>\n" }]
|
|
30
|
+
}], propDecorators: { control: [{
|
|
31
|
+
type: Input
|
|
32
|
+
}], source: [{
|
|
33
|
+
type: Input
|
|
34
|
+
}], playerType: [{
|
|
35
|
+
type: Input
|
|
36
|
+
}], snapshotInterval: [{
|
|
37
|
+
type: Input
|
|
38
|
+
}], timeout: [{
|
|
39
|
+
type: Input
|
|
40
|
+
}] } });
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZS12aWV3LXBsYXllci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy16ZW5kdWl0L3NyYy9saWIvbGl2ZS12aWV3LXBsYXllci9saXZlLXZpZXctcGxheWVyL2xpdmUtdmlldy1wbGF5ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctemVuZHVpdC9zcmMvbGliL2xpdmUtdmlldy1wbGF5ZXIvbGl2ZS12aWV3LXBsYXllci9saXZlLXZpZXctcGxheWVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUF3QixNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7QUFVdkUsTUFBTSxPQUFPLDBCQUEwQjtJQUx2QztRQVVVLGVBQVUsR0FBMEIsU0FBUyxDQUFDO1FBYWhELGNBQVMsR0FBRyxJQUFJLENBQUM7S0FnQnhCO0lBZE8sV0FBVztRQUNqQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDakIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7Z0JBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2FBQzlDO1lBRUQsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7Z0JBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2FBQzlDO1NBQ0Q7SUFDRixDQUFDOzt3SEE5QlcsMEJBQTBCOzRHQUExQiwwQkFBMEIsa01DVnZDLCswQkFvQkE7NEZEVmEsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNDLHNCQUFzQjs4QkFLdkIsT0FBTztzQkFBZixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFLRyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBQbGF5ZXJDb250cm9sIH0gZnJvbSBcIi4uL3BsYXllci5jb250cm9sXCI7XG5cbmV4cG9ydCB0eXBlIFplbkxpdmVWaWV3UGxheWVyVHlwZSA9ICdodG1sNScgfCAnZmx2JyB8ICd3ZWJydGMnIHwgJ3NuYXBzaG90JyB8ICdobHMnIHwgJ3Vua25vd24nO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICd6ZW4tbGl2ZS12aWV3LXBsYXllcicsXG5cdHRlbXBsYXRlVXJsOiAnLi9saXZlLXZpZXctcGxheWVyLmNvbXBvbmVudC5odG1sJyxcblx0c3R5bGVVcmxzOiBbJy4vbGl2ZS12aWV3LXBsYXllci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFplbkxpdmVWaWV3UGxheWVyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcblx0QElucHV0KCkgY29udHJvbCE6IFBsYXllckNvbnRyb2w7XG5cblx0QElucHV0KCkgc291cmNlITogc3RyaW5nO1xuXG5cdEBJbnB1dCgpIHBsYXllclR5cGU6IFplbkxpdmVWaWV3UGxheWVyVHlwZSA9IFwidW5rbm93blwiO1xuXG5cdEBJbnB1dCgpIHNuYXBzaG90SW50ZXJ2YWwhOiBudW1iZXI7XG5cblx0LyoqXG5cdCAqIFBsYXliYWNrIHRpbWVvdXQuIEl0IHVzZXMgZm9yIHN0cmVhbWF4IGxpdmUgc3RyZWFtaW5nLiBcblx0ICovXG5cdEBJbnB1dCgpIHRpbWVvdXQhOiBudW1iZXI7XG5cblx0cHJpdmF0ZSBfY29udHJvbFBsYXlIYW5kZXIhOiBudW1iZXI7XG5cblx0cHJpdmF0ZSBfY29udHJvbFN0b3BIYW5kZXIhOiBudW1iZXI7XG5cblx0cHVibGljIElzTG9hZGluZyA9IHRydWU7XG5cblx0cHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmNvbnRyb2wpIHtcblx0XHRcdGlmICh0aGlzLl9jb250cm9sUGxheUhhbmRlcikge1xuXHRcdFx0XHR0aGlzLmNvbnRyb2wuT2ZmUGxheSh0aGlzLl9jb250cm9sUGxheUhhbmRlcik7XG5cdFx0XHR9XG5cblx0XHRcdGlmICh0aGlzLl9jb250cm9sU3RvcEhhbmRlcikge1xuXHRcdFx0XHR0aGlzLmNvbnRyb2wuT2ZmU3RvcCh0aGlzLl9jb250cm9sU3RvcEhhbmRlcik7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblxuXG59XG4iLCI8emVuLXdlYi1ydGMtcGxheWVyIFtzb3VyY2VdPVwic291cmNlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicGxheWVyVHlwZSA9PSAnd2VicnRjJ1wiPjwvemVuLXdlYi1ydGMtcGxheWVyPlxuXG48emVuLXNuYXBzaG90LXBsYXllciBbc291cmNlXT1cInNvdXJjZVwiXG4gICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJjb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgIFtpbnRlcnZhbF09XCJzbmFwc2hvdEludGVydmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicGxheWVyVHlwZSA9PSAnc25hcHNob3QnXCI+PC96ZW4tc25hcHNob3QtcGxheWVyPlxuXG48emVuLWZsdi1wbGF5ZXIgW3NvdXJjZV09XCJzb3VyY2VcIlxuICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwicGxheWVyVHlwZSA9PSAnZmx2J1wiPjwvemVuLWZsdi1wbGF5ZXI+XG5cbjx6ZW4taGxzLXBsYXllciBbc291cmNlXT1cInNvdXJjZVwiXG4gICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJwbGF5ZXJUeXBlID09ICdobHMnXCI+PC96ZW4taGxzLXBsYXllcj5cblxuPHplbi1odG1sNS12aWRlby1wbGF5ZXIgW3NvdXJjZV09XCJzb3VyY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBsYXllclR5cGUgPT0gJ2h0bWw1J1wiPjwvemVuLWh0bWw1LXZpZGVvLXBsYXllcj5cbiJdfQ==
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { CEvent } from "../core/cevent";
|
|
2
|
+
export class PlayerControl {
|
|
3
|
+
constructor() {
|
|
4
|
+
this._stopEvent = new CEvent();
|
|
5
|
+
this._playEvent = new CEvent();
|
|
6
|
+
this._seekEvent = new CEvent();
|
|
7
|
+
this._dataEvent = new CEvent();
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Subscribe to data event
|
|
11
|
+
*/
|
|
12
|
+
OnData(callback) {
|
|
13
|
+
return this._dataEvent.on(callback);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Subscribe to play event
|
|
17
|
+
*/
|
|
18
|
+
OnPlay(callback) {
|
|
19
|
+
return this._playEvent.on(callback);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Subscribe to stop event
|
|
23
|
+
*/
|
|
24
|
+
OnStop(callback) {
|
|
25
|
+
return this._stopEvent.on(callback);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Subscribe to seek event
|
|
29
|
+
*/
|
|
30
|
+
OnSeek(callback) {
|
|
31
|
+
return this._seekEvent.on(callback);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Detach the callback from the event
|
|
35
|
+
* @param id callback id
|
|
36
|
+
*/
|
|
37
|
+
OffPlay(id) {
|
|
38
|
+
this._playEvent.off(id);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Detach the callback from the event
|
|
42
|
+
* @param id callback id
|
|
43
|
+
*/
|
|
44
|
+
OffStop(id) {
|
|
45
|
+
this._stopEvent.off(id);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Detach the callback from the event
|
|
49
|
+
* @param id callback id
|
|
50
|
+
*/
|
|
51
|
+
OffSeek(id) {
|
|
52
|
+
this._seekEvent.off(id);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Emit the play event
|
|
56
|
+
*/
|
|
57
|
+
Play() {
|
|
58
|
+
this._playEvent.fire();
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Emit the stop event
|
|
62
|
+
*/
|
|
63
|
+
Stop() {
|
|
64
|
+
this._stopEvent.fire();
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Emit the seek event
|
|
68
|
+
*/
|
|
69
|
+
Seek(position) {
|
|
70
|
+
this._seekEvent.fire(position);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Emit the data event
|
|
74
|
+
*/
|
|
75
|
+
EmitData() {
|
|
76
|
+
this._dataEvent.fire();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxheWVyLmNvbnRyb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy16ZW5kdWl0L3NyYy9saWIvbGl2ZS12aWV3LXBsYXllci9wbGF5ZXIuY29udHJvbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEMsTUFBTSxPQUFPLGFBQWE7SUFBMUI7UUFDUyxlQUFVLEdBQWlCLElBQUksTUFBTSxFQUFFLENBQUM7UUFFeEMsZUFBVSxHQUFpQixJQUFJLE1BQU0sRUFBRSxDQUFDO1FBRXhDLGVBQVUsR0FBbUIsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUUxQyxlQUFVLEdBQW1CLElBQUksTUFBTSxFQUFFLENBQUM7SUFpRm5ELENBQUM7SUEvRUE7O09BRUc7SUFDSyxNQUFNLENBQUMsUUFBb0I7UUFDbEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7O09BRUc7SUFDSyxNQUFNLENBQUMsUUFBb0I7UUFDbEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7O09BRUc7SUFDSyxNQUFNLENBQUMsUUFBb0I7UUFDbEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsUUFBb0M7UUFDakQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxRQUFlLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksT0FBTyxDQUFDLEVBQVU7UUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE9BQU8sQ0FBQyxFQUFVO1FBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxPQUFPLENBQUMsRUFBVTtRQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxJQUFJO1FBQ1YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxJQUFJO1FBQ1YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxJQUFJLENBQUMsUUFBZ0I7UUFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksUUFBUTtRQUNkLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEIsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ0V2ZW50IH0gZnJvbSBcIi4uL2NvcmUvY2V2ZW50XCI7XG5cbmV4cG9ydCBjbGFzcyBQbGF5ZXJDb250cm9sIHtcblx0cHJpdmF0ZSBfc3RvcEV2ZW50OiBDRXZlbnQ8dm9pZD4gPSBuZXcgQ0V2ZW50KCk7XG5cblx0cHJpdmF0ZSBfcGxheUV2ZW50OiBDRXZlbnQ8dm9pZD4gPSBuZXcgQ0V2ZW50KCk7XG5cblx0cHJpdmF0ZSBfc2Vla0V2ZW50OiBDRXZlbnQ8bnVtYmVyPiA9IG5ldyBDRXZlbnQoKTtcblxuXHRwcml2YXRlIF9kYXRhRXZlbnQ6IENFdmVudDxudW1iZXI+ID0gbmV3IENFdmVudCgpO1xuXG5cdC8qKlxuXHQgKiBTdWJzY3JpYmUgdG8gZGF0YSBldmVudFxuXHQgKi9cblx0IHB1YmxpYyBPbkRhdGEoY2FsbGJhY2s6ICgpID0+IHZvaWQpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLl9kYXRhRXZlbnQub24oY2FsbGJhY2spO1xuXHR9XG5cblx0LyoqXG5cdCAqIFN1YnNjcmliZSB0byBwbGF5IGV2ZW50XG5cdCAqL1xuXHQgcHVibGljIE9uUGxheShjYWxsYmFjazogKCkgPT4gdm9pZCk6IG51bWJlciB7XG5cdFx0cmV0dXJuIHRoaXMuX3BsYXlFdmVudC5vbihjYWxsYmFjayk7XG5cdH1cblxuXHQvKipcblx0ICogU3Vic2NyaWJlIHRvIHN0b3AgZXZlbnRcblx0ICovXG5cdCBwdWJsaWMgT25TdG9wKGNhbGxiYWNrOiAoKSA9PiB2b2lkKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5fc3RvcEV2ZW50Lm9uKGNhbGxiYWNrKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTdWJzY3JpYmUgdG8gc2VlayBldmVudFxuXHQgKi9cblx0cHVibGljIE9uU2VlayhjYWxsYmFjazogKHBvc2l0aW9uOiBudW1iZXIpID0+IHZvaWQpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLl9zZWVrRXZlbnQub24oY2FsbGJhY2sgYXMgYW55KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZXRhY2ggdGhlIGNhbGxiYWNrIGZyb20gdGhlIGV2ZW50XG5cdCAqIEBwYXJhbSBpZCBjYWxsYmFjayBpZFxuXHQgKi9cblx0cHVibGljIE9mZlBsYXkoaWQ6IG51bWJlcik6IHZvaWQge1xuXHRcdHRoaXMuX3BsYXlFdmVudC5vZmYoaWQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIERldGFjaCB0aGUgY2FsbGJhY2sgZnJvbSB0aGUgZXZlbnRcblx0ICogQHBhcmFtIGlkIGNhbGxiYWNrIGlkXG5cdCAqL1xuXHRwdWJsaWMgT2ZmU3RvcChpZDogbnVtYmVyKTogdm9pZCB7XG5cdFx0dGhpcy5fc3RvcEV2ZW50Lm9mZihpZCk7XG5cdH1cblxuXHQvKipcblx0ICogRGV0YWNoIHRoZSBjYWxsYmFjayBmcm9tIHRoZSBldmVudFxuXHQgKiBAcGFyYW0gaWQgY2FsbGJhY2sgaWRcblx0ICovXG5cdHB1YmxpYyBPZmZTZWVrKGlkOiBudW1iZXIpOiB2b2lkIHtcblx0XHR0aGlzLl9zZWVrRXZlbnQub2ZmKGlkKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFbWl0IHRoZSBwbGF5IGV2ZW50XG5cdCAqL1xuXHRwdWJsaWMgUGxheSgpOiB2b2lkIHtcblx0XHR0aGlzLl9wbGF5RXZlbnQuZmlyZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEVtaXQgdGhlIHN0b3AgZXZlbnRcblx0ICovXG5cdHB1YmxpYyBTdG9wKCk6IHZvaWQge1xuXHRcdHRoaXMuX3N0b3BFdmVudC5maXJlKCk7XG5cdH1cblxuXHQvKipcblx0ICogRW1pdCB0aGUgc2VlayBldmVudFxuXHQgKi9cblx0cHVibGljIFNlZWsocG9zaXRpb246IG51bWJlcikge1xuXHRcdHRoaXMuX3NlZWtFdmVudC5maXJlKHBvc2l0aW9uKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFbWl0IHRoZSBkYXRhIGV2ZW50XG5cdCAqL1xuXHRwdWJsaWMgRW1pdERhdGEoKSB7XG5cdFx0dGhpcy5fZGF0YUV2ZW50LmZpcmUoKTtcblx0fVxufSJdfQ==
|