tas-uell-sdk 0.0.1
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/README.md +304 -0
- package/esm2020/lib/components/tas-btn/tas-btn.component.mjs +123 -0
- package/esm2020/lib/components/tas-floating-call/tas-floating-call.component.mjs +79 -0
- package/esm2020/lib/components/tas-videocall/tas-videocall.component.mjs +160 -0
- package/esm2020/lib/interfaces/tas.interfaces.mjs +2 -0
- package/esm2020/lib/services/tas.service.mjs +265 -0
- package/esm2020/lib/tas.config.mjs +14 -0
- package/esm2020/lib/tas.module.mjs +73 -0
- package/esm2020/public-api.mjs +16 -0
- package/esm2020/tas-uell-sdk.mjs +5 -0
- package/fesm2015/tas-uell-sdk.mjs +705 -0
- package/fesm2015/tas-uell-sdk.mjs.map +1 -0
- package/fesm2020/tas-uell-sdk.mjs +697 -0
- package/fesm2020/tas-uell-sdk.mjs.map +1 -0
- package/lib/components/tas-btn/tas-btn.component.d.ts +24 -0
- package/lib/components/tas-floating-call/tas-floating-call.component.d.ts +19 -0
- package/lib/components/tas-videocall/tas-videocall.component.d.ts +32 -0
- package/lib/interfaces/tas.interfaces.d.ts +31 -0
- package/lib/services/tas.service.d.ts +65 -0
- package/lib/tas.config.d.ts +51 -0
- package/lib/tas.module.d.ts +34 -0
- package/package.json +50 -0
- package/public-api.d.ts +7 -0
- package/tas-uell-sdk.d.ts +5 -0
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { Component, Input, ViewChild, } from "@angular/core";
|
|
2
|
+
import { CallState, ViewMode } from "../../services/tas.service";
|
|
3
|
+
import { Subscription } from "rxjs";
|
|
4
|
+
import interact from "interactjs";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@ng-bootstrap/ng-bootstrap";
|
|
7
|
+
import * as i2 from "../../services/tas.service";
|
|
8
|
+
export class TasVideocallComponent {
|
|
9
|
+
constructor(activeModal, tasService) {
|
|
10
|
+
this.activeModal = activeModal;
|
|
11
|
+
this.tasService = tasService;
|
|
12
|
+
this.isReturningFromPip = false;
|
|
13
|
+
this.isPublisherSmall = true;
|
|
14
|
+
this.callState = CallState.IDLE;
|
|
15
|
+
this.isMuted = false;
|
|
16
|
+
this.subscriptions = new Subscription();
|
|
17
|
+
}
|
|
18
|
+
ngOnInit() {
|
|
19
|
+
this.setupSubscriptions();
|
|
20
|
+
this.initializeCall();
|
|
21
|
+
}
|
|
22
|
+
ngAfterViewInit() {
|
|
23
|
+
this.initInteract();
|
|
24
|
+
}
|
|
25
|
+
ngOnDestroy() {
|
|
26
|
+
this.subscriptions.unsubscribe();
|
|
27
|
+
if (!this.tasService.isPipMode()) {
|
|
28
|
+
this.tasService.disconnectSession();
|
|
29
|
+
}
|
|
30
|
+
interact(".publisher-view").unset();
|
|
31
|
+
}
|
|
32
|
+
// Public Methods
|
|
33
|
+
hangUp() {
|
|
34
|
+
this.tasService.disconnectSession();
|
|
35
|
+
}
|
|
36
|
+
toggleMute() {
|
|
37
|
+
this.tasService.toggleMute();
|
|
38
|
+
}
|
|
39
|
+
minimize() {
|
|
40
|
+
this.tasService.moveMainVideoTo("pip-main-video");
|
|
41
|
+
setTimeout(() => this.tasService.enterPipMode(), 50);
|
|
42
|
+
}
|
|
43
|
+
toggleSwap() {
|
|
44
|
+
this.isPublisherSmall = !this.isPublisherSmall;
|
|
45
|
+
this.resetVideoPositions();
|
|
46
|
+
setTimeout(() => this.initInteract());
|
|
47
|
+
}
|
|
48
|
+
onDoubleClick() {
|
|
49
|
+
this.toggleSwap();
|
|
50
|
+
}
|
|
51
|
+
// Private Methods
|
|
52
|
+
setupSubscriptions() {
|
|
53
|
+
this.subscriptions.add(this.tasService.callState$.subscribe((state) => {
|
|
54
|
+
this.callState = state;
|
|
55
|
+
if (state === CallState.DISCONNECTED) {
|
|
56
|
+
this.activeModal.close("hangup");
|
|
57
|
+
}
|
|
58
|
+
}));
|
|
59
|
+
this.subscriptions.add(this.tasService.viewMode$.subscribe((mode) => {
|
|
60
|
+
if (mode === ViewMode.PIP) {
|
|
61
|
+
this.activeModal.close("pip");
|
|
62
|
+
}
|
|
63
|
+
}));
|
|
64
|
+
this.subscriptions.add(this.tasService.isMuted$.subscribe((muted) => {
|
|
65
|
+
this.isMuted = muted;
|
|
66
|
+
}));
|
|
67
|
+
}
|
|
68
|
+
initializeCall() {
|
|
69
|
+
if (this.isReturningFromPip) {
|
|
70
|
+
setTimeout(() => this.tasService.moveVideosToFullscreen(), 100);
|
|
71
|
+
}
|
|
72
|
+
else if (this.sessionId && this.token) {
|
|
73
|
+
this.tasService
|
|
74
|
+
.connectSession(this.sessionId, this.token, "publisher-container", "subscriber-container")
|
|
75
|
+
.catch((err) => {
|
|
76
|
+
console.error("Error connecting to video call:", err);
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
resetVideoPositions() {
|
|
81
|
+
const publisherEl = this.publisherContainer?.nativeElement;
|
|
82
|
+
const subscriberEl = this.subscriberContainer?.nativeElement;
|
|
83
|
+
if (publisherEl) {
|
|
84
|
+
publisherEl.removeAttribute("style");
|
|
85
|
+
publisherEl.removeAttribute("data-x");
|
|
86
|
+
publisherEl.removeAttribute("data-y");
|
|
87
|
+
}
|
|
88
|
+
if (subscriberEl) {
|
|
89
|
+
subscriberEl.removeAttribute("style");
|
|
90
|
+
subscriberEl.removeAttribute("data-x");
|
|
91
|
+
subscriberEl.removeAttribute("data-y");
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
initInteract() {
|
|
95
|
+
interact(".publisher-view").unset();
|
|
96
|
+
interact(".publisher-view")
|
|
97
|
+
.draggable({
|
|
98
|
+
inertia: true,
|
|
99
|
+
modifiers: [
|
|
100
|
+
interact.modifiers.restrictRect({
|
|
101
|
+
restriction: "parent",
|
|
102
|
+
endOnly: true,
|
|
103
|
+
}),
|
|
104
|
+
],
|
|
105
|
+
autoScroll: true,
|
|
106
|
+
listeners: {
|
|
107
|
+
move: (event) => {
|
|
108
|
+
const target = event.target;
|
|
109
|
+
const x = (parseFloat(target.getAttribute("data-x")) || 0) + event.dx;
|
|
110
|
+
const y = (parseFloat(target.getAttribute("data-y")) || 0) + event.dy;
|
|
111
|
+
target.style.transform = `translate(${x}px, ${y}px)`;
|
|
112
|
+
target.setAttribute("data-x", String(x));
|
|
113
|
+
target.setAttribute("data-y", String(y));
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
})
|
|
117
|
+
.resizable({
|
|
118
|
+
edges: { left: false, right: true, bottom: true, top: false },
|
|
119
|
+
listeners: {
|
|
120
|
+
move: (event) => {
|
|
121
|
+
const target = event.target;
|
|
122
|
+
let x = parseFloat(target.getAttribute("data-x")) || 0;
|
|
123
|
+
let y = parseFloat(target.getAttribute("data-y")) || 0;
|
|
124
|
+
target.style.width = `${event.rect.width}px`;
|
|
125
|
+
target.style.height = `${event.rect.height}px`;
|
|
126
|
+
x += event.deltaRect.left;
|
|
127
|
+
y += event.deltaRect.top;
|
|
128
|
+
target.style.transform = `translate(${x}px, ${y}px)`;
|
|
129
|
+
target.setAttribute("data-x", String(x));
|
|
130
|
+
target.setAttribute("data-y", String(y));
|
|
131
|
+
},
|
|
132
|
+
},
|
|
133
|
+
modifiers: [
|
|
134
|
+
interact.modifiers.restrictEdges({ outer: "parent" }),
|
|
135
|
+
interact.modifiers.restrictSize({ min: { width: 150, height: 100 } }),
|
|
136
|
+
interact.modifiers.aspectRatio({ ratio: "preserve" }),
|
|
137
|
+
],
|
|
138
|
+
inertia: true,
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
TasVideocallComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TasVideocallComponent, deps: [{ token: i1.NgbActiveModal }, { token: i2.TasService }], target: i0.ɵɵFactoryTarget.Component });
|
|
143
|
+
TasVideocallComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: TasVideocallComponent, selector: "tas-videocall", inputs: { sessionId: "sessionId", token: "token", isReturningFromPip: "isReturningFromPip" }, viewQueries: [{ propertyName: "publisherContainer", first: true, predicate: ["publisherContainer"], descendants: true }, { propertyName: "subscriberContainer", first: true, predicate: ["subscriberContainer"], descendants: true }], ngImport: i0, template: "<div class=\"tas-videocall-container\">\n <div\n id=\"subscriber-container\"\n [class.subscriber-view]=\"isPublisherSmall\"\n [class.publisher-view]=\"!isPublisherSmall\"\n #subscriberContainer\n (dblclick)=\"onDoubleClick()\"\n ></div>\n\n <div\n id=\"publisher-container\"\n [class.publisher-view]=\"isPublisherSmall\"\n [class.subscriber-view]=\"!isPublisherSmall\"\n #publisherContainer\n (dblclick)=\"onDoubleClick()\"\n ></div>\n\n <div class=\"controls-container\">\n <button class=\"btn swap-btn\" (click)=\"toggleSwap()\" title=\"Cambiar vista\">\n <i class=\"fa fa-refresh\"></i>\n </button>\n <button\n class=\"btn pip-btn\"\n (click)=\"minimize()\"\n title=\"Minimizar (Picture in Picture)\"\n >\n <i class=\"fa fa-compress\"></i>\n </button>\n <button\n class=\"btn mute-btn\"\n [class.muted]=\"isMuted\"\n (click)=\"toggleMute()\"\n [title]=\"isMuted ? 'Activar micr\u00F3fono' : 'Silenciar micr\u00F3fono'\"\n >\n <i\n class=\"fa\"\n [class.fa-microphone]=\"!isMuted\"\n [class.fa-microphone-slash]=\"isMuted\"\n ></i>\n </button>\n <button class=\"btn hangup-btn\" (click)=\"hangUp()\" title=\"Colgar\">\n <i class=\"fa fa-phone\" style=\"transform: rotate(135deg)\"></i>\n </button>\n </div>\n</div>\n", styles: [".tas-videocall-container{position:relative;width:100vw;height:100vh;background-color:#000;overflow:hidden}.tas-videocall-container ::ng-deep .OT_edge-bar-item,.tas-videocall-container ::ng-deep .OT_mute,.tas-videocall-container ::ng-deep .OT_audio-level-meter,.tas-videocall-container ::ng-deep .OT_bar,.tas-videocall-container ::ng-deep .OT_name{display:none!important}.tas-videocall-container .subscriber-view{width:100%;height:100%;z-index:1}.tas-videocall-container .publisher-view{position:absolute;top:20px;right:20px;width:200px;height:150px;z-index:2;border:2px solid #fff;border-radius:8px;background-color:#333}.tas-videocall-container .controls-container{display:flex;flex-direction:row;gap:20px;position:absolute;bottom:30px;left:50%;transform:translate(-50%);z-index:3;background-color:#00000080;padding:15px 25px;border-radius:50px;backdrop-filter:blur(5px)}.tas-videocall-container .controls-container .hangup-btn,.tas-videocall-container .controls-container .swap-btn,.tas-videocall-container .controls-container .pip-btn,.tas-videocall-container .controls-container .mute-btn{width:60px;height:60px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:24px;border:none;box-shadow:0 4px 6px #0000004d;transition:all .2s ease}.tas-videocall-container .controls-container .hangup-btn i,.tas-videocall-container .controls-container .swap-btn i,.tas-videocall-container .controls-container .pip-btn i,.tas-videocall-container .controls-container .mute-btn i{color:#fff}.tas-videocall-container .controls-container .hangup-btn{background:#dc3545}.tas-videocall-container .controls-container .hangup-btn:hover{background:#c82333;transform:scale(1.05)}.tas-videocall-container .controls-container .swap-btn{background:rgba(255,255,255,.2)}.tas-videocall-container .controls-container .swap-btn:hover{background:rgba(255,255,255,.35);transform:scale(1.05)}.tas-videocall-container .controls-container .pip-btn{background:rgba(255,255,255,.2)}.tas-videocall-container .controls-container .pip-btn:hover{background:rgba(255,255,255,.35);transform:scale(1.05)}.tas-videocall-container .controls-container .mute-btn{background:rgba(255,255,255,.2)}.tas-videocall-container .controls-container .mute-btn:hover{background:rgba(255,255,255,.35);transform:scale(1.05)}.tas-videocall-container .controls-container .mute-btn.muted{background:#f39c12}.tas-videocall-container .controls-container .mute-btn.muted:hover{background:#e67e22}\n"] });
|
|
144
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TasVideocallComponent, decorators: [{
|
|
145
|
+
type: Component,
|
|
146
|
+
args: [{ selector: "tas-videocall", template: "<div class=\"tas-videocall-container\">\n <div\n id=\"subscriber-container\"\n [class.subscriber-view]=\"isPublisherSmall\"\n [class.publisher-view]=\"!isPublisherSmall\"\n #subscriberContainer\n (dblclick)=\"onDoubleClick()\"\n ></div>\n\n <div\n id=\"publisher-container\"\n [class.publisher-view]=\"isPublisherSmall\"\n [class.subscriber-view]=\"!isPublisherSmall\"\n #publisherContainer\n (dblclick)=\"onDoubleClick()\"\n ></div>\n\n <div class=\"controls-container\">\n <button class=\"btn swap-btn\" (click)=\"toggleSwap()\" title=\"Cambiar vista\">\n <i class=\"fa fa-refresh\"></i>\n </button>\n <button\n class=\"btn pip-btn\"\n (click)=\"minimize()\"\n title=\"Minimizar (Picture in Picture)\"\n >\n <i class=\"fa fa-compress\"></i>\n </button>\n <button\n class=\"btn mute-btn\"\n [class.muted]=\"isMuted\"\n (click)=\"toggleMute()\"\n [title]=\"isMuted ? 'Activar micr\u00F3fono' : 'Silenciar micr\u00F3fono'\"\n >\n <i\n class=\"fa\"\n [class.fa-microphone]=\"!isMuted\"\n [class.fa-microphone-slash]=\"isMuted\"\n ></i>\n </button>\n <button class=\"btn hangup-btn\" (click)=\"hangUp()\" title=\"Colgar\">\n <i class=\"fa fa-phone\" style=\"transform: rotate(135deg)\"></i>\n </button>\n </div>\n</div>\n", styles: [".tas-videocall-container{position:relative;width:100vw;height:100vh;background-color:#000;overflow:hidden}.tas-videocall-container ::ng-deep .OT_edge-bar-item,.tas-videocall-container ::ng-deep .OT_mute,.tas-videocall-container ::ng-deep .OT_audio-level-meter,.tas-videocall-container ::ng-deep .OT_bar,.tas-videocall-container ::ng-deep .OT_name{display:none!important}.tas-videocall-container .subscriber-view{width:100%;height:100%;z-index:1}.tas-videocall-container .publisher-view{position:absolute;top:20px;right:20px;width:200px;height:150px;z-index:2;border:2px solid #fff;border-radius:8px;background-color:#333}.tas-videocall-container .controls-container{display:flex;flex-direction:row;gap:20px;position:absolute;bottom:30px;left:50%;transform:translate(-50%);z-index:3;background-color:#00000080;padding:15px 25px;border-radius:50px;backdrop-filter:blur(5px)}.tas-videocall-container .controls-container .hangup-btn,.tas-videocall-container .controls-container .swap-btn,.tas-videocall-container .controls-container .pip-btn,.tas-videocall-container .controls-container .mute-btn{width:60px;height:60px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:24px;border:none;box-shadow:0 4px 6px #0000004d;transition:all .2s ease}.tas-videocall-container .controls-container .hangup-btn i,.tas-videocall-container .controls-container .swap-btn i,.tas-videocall-container .controls-container .pip-btn i,.tas-videocall-container .controls-container .mute-btn i{color:#fff}.tas-videocall-container .controls-container .hangup-btn{background:#dc3545}.tas-videocall-container .controls-container .hangup-btn:hover{background:#c82333;transform:scale(1.05)}.tas-videocall-container .controls-container .swap-btn{background:rgba(255,255,255,.2)}.tas-videocall-container .controls-container .swap-btn:hover{background:rgba(255,255,255,.35);transform:scale(1.05)}.tas-videocall-container .controls-container .pip-btn{background:rgba(255,255,255,.2)}.tas-videocall-container .controls-container .pip-btn:hover{background:rgba(255,255,255,.35);transform:scale(1.05)}.tas-videocall-container .controls-container .mute-btn{background:rgba(255,255,255,.2)}.tas-videocall-container .controls-container .mute-btn:hover{background:rgba(255,255,255,.35);transform:scale(1.05)}.tas-videocall-container .controls-container .mute-btn.muted{background:#f39c12}.tas-videocall-container .controls-container .mute-btn.muted:hover{background:#e67e22}\n"] }]
|
|
147
|
+
}], ctorParameters: function () { return [{ type: i1.NgbActiveModal }, { type: i2.TasService }]; }, propDecorators: { sessionId: [{
|
|
148
|
+
type: Input
|
|
149
|
+
}], token: [{
|
|
150
|
+
type: Input
|
|
151
|
+
}], isReturningFromPip: [{
|
|
152
|
+
type: Input
|
|
153
|
+
}], publisherContainer: [{
|
|
154
|
+
type: ViewChild,
|
|
155
|
+
args: ["publisherContainer"]
|
|
156
|
+
}], subscriberContainer: [{
|
|
157
|
+
type: ViewChild,
|
|
158
|
+
args: ["subscriberContainer"]
|
|
159
|
+
}] } });
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzLXZpZGVvY2FsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdGFzLXZpZGVvY2FsbC90YXMtdmlkZW9jYWxsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90YXMtdmlkZW9jYWxsL3Rhcy12aWRlb2NhbGwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFHVCxLQUFLLEVBQ0wsU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBYyxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLFFBQVEsTUFBTSxZQUFZLENBQUM7Ozs7QUFPbEMsTUFBTSxPQUFPLHFCQUFxQjtJQWNoQyxZQUNTLFdBQTJCLEVBQzFCLFVBQXNCO1FBRHZCLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUMxQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBYnZCLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUt0QyxxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDeEIsY0FBUyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFDM0IsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUVmLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUt4QyxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7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LE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO29CQUNyRCxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDekMsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzNDLENBQUM7YUFDRjtZQUNELFNBQVMsRUFBRTtnQkFDVCxRQUFRLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQztnQkFDckQsUUFBUSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO2dCQUNyRSxRQUFRLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQzthQUN0RDtZQUNELE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7a0hBL0tVLHFCQUFxQjtzR0FBckIscUJBQXFCLDBYQ25CbEMsdTFDQTZDQTsyRkQxQmEscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLGVBQWU7OEhBS2hCLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFMkIsa0JBQWtCO3NCQUFsRCxTQUFTO3VCQUFDLG9CQUFvQjtnQkFDRyxtQkFBbUI7c0JBQXBELFNBQVM7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBPbkluaXQsXG4gIE9uRGVzdHJveSxcbiAgSW5wdXQsXG4gIFZpZXdDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgQWZ0ZXJWaWV3SW5pdCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE5nYkFjdGl2ZU1vZGFsIH0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XG5pbXBvcnQgeyBUYXNTZXJ2aWNlLCBDYWxsU3RhdGUsIFZpZXdNb2RlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3Rhcy5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IGludGVyYWN0IGZyb20gXCJpbnRlcmFjdGpzXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJ0YXMtdmlkZW9jYWxsXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vdGFzLXZpZGVvY2FsbC5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vdGFzLXZpZGVvY2FsbC5jb21wb25lbnQuc2Nzc1wiXSxcbn0pXG5leHBvcnQgY2xhc3MgVGFzVmlkZW9jYWxsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBzZXNzaW9uSWQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRva2VuITogc3RyaW5nO1xuICBASW5wdXQoKSBpc1JldHVybmluZ0Zyb21QaXA6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKFwicHVibGlzaGVyQ29udGFpbmVyXCIpIHB1Ymxpc2hlckNvbnRhaW5lciE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoXCJzdWJzY3JpYmVyQ29udGFpbmVyXCIpIHN1YnNjcmliZXJDb250YWluZXIhOiBFbGVtZW50UmVmO1xuXG4gIHB1YmxpYyBpc1B1Ymxpc2hlclNtYWxsID0gdHJ1ZTtcbiAgcHVibGljIGNhbGxTdGF0ZSA9IENhbGxTdGF0ZS5JRExFO1xuICBwdWJsaWMgaXNNdXRlZCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgYWN0aXZlTW9kYWw6IE5nYkFjdGl2ZU1vZGFsLFxuICAgIHByaXZhdGUgdGFzU2VydmljZTogVGFzU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXR1cFN1YnNjcmlwdGlvbnMoKTtcbiAgICB0aGlzLmluaXRpYWxpemVDYWxsKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0SW50ZXJhY3QoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuXG4gICAgaWYgKCF0aGlzLnRhc1NlcnZpY2UuaXNQaXBNb2RlKCkpIHtcbiAgICAgIHRoaXMudGFzU2VydmljZS5kaXNjb25uZWN0U2Vzc2lvbigpO1xuICAgIH1cblxuICAgIGludGVyYWN0KFwiLnB1Ymxpc2hlci12aWV3XCIpLnVuc2V0KCk7XG4gIH1cblxuICAvLyBQdWJsaWMgTWV0aG9kc1xuICBoYW5nVXAoKTogdm9pZCB7XG4gICAgdGhpcy50YXNTZXJ2aWNlLmRpc2Nvbm5lY3RTZXNzaW9uKCk7XG4gIH1cblxuICB0b2dnbGVNdXRlKCk6IHZvaWQge1xuICAgIHRoaXMudGFzU2VydmljZS50b2dnbGVNdXRlKCk7XG4gIH1cblxuICBtaW5pbWl6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRhc1NlcnZpY2UubW92ZU1haW5WaWRlb1RvKFwicGlwLW1haW4tdmlkZW9cIik7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnRhc1NlcnZpY2UuZW50ZXJQaXBNb2RlKCksIDUwKTtcbiAgfVxuXG4gIHRvZ2dsZVN3YXAoKTogdm9pZCB7XG4gICAgdGhpcy5pc1B1Ymxpc2hlclNtYWxsID0gIXRoaXMuaXNQdWJsaXNoZXJTbWFsbDtcbiAgICB0aGlzLnJlc2V0VmlkZW9Qb3NpdGlvbnMoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuaW5pdEludGVyYWN0KCkpO1xuICB9XG5cbiAgb25Eb3VibGVDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLnRvZ2dsZVN3YXAoKTtcbiAgfVxuXG4gIC8vIFByaXZhdGUgTWV0aG9kc1xuICBwcml2YXRlIHNldHVwU3Vic2NyaXB0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy50YXNTZXJ2aWNlLmNhbGxTdGF0ZSQuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICAgICAgICB0aGlzLmNhbGxTdGF0ZSA9IHN0YXRlO1xuICAgICAgICBpZiAoc3RhdGUgPT09IENhbGxTdGF0ZS5ESVNDT05ORUNURUQpIHtcbiAgICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKFwiaGFuZ3VwXCIpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy50YXNTZXJ2aWNlLnZpZXdNb2RlJC5zdWJzY3JpYmUoKG1vZGUpID0+IHtcbiAgICAgICAgaWYgKG1vZGUgPT09IFZpZXdNb2RlLlBJUCkge1xuICAgICAgICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoXCJwaXBcIik7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnRhc1NlcnZpY2UuaXNNdXRlZCQuc3Vic2NyaWJlKChtdXRlZCkgPT4ge1xuICAgICAgICB0aGlzLmlzTXV0ZWQgPSBtdXRlZDtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUNhbGwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNSZXR1cm5pbmdGcm9tUGlwKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudGFzU2VydmljZS5tb3ZlVmlkZW9zVG9GdWxsc2NyZWVuKCksIDEwMCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNlc3Npb25JZCAmJiB0aGlzLnRva2VuKSB7XG4gICAgICB0aGlzLnRhc1NlcnZpY2VcbiAgICAgICAgLmNvbm5lY3RTZXNzaW9uKFxuICAgICAgICAgIHRoaXMuc2Vzc2lvbklkLFxuICAgICAgICAgIHRoaXMudG9rZW4sXG4gICAgICAgICAgXCJwdWJsaXNoZXItY29udGFpbmVyXCIsXG4gICAgICAgICAgXCJzdWJzY3JpYmVyLWNvbnRhaW5lclwiXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgY29ubmVjdGluZyB0byB2aWRlbyBjYWxsOlwiLCBlcnIpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc2V0VmlkZW9Qb3NpdGlvbnMoKTogdm9pZCB7XG4gICAgY29uc3QgcHVibGlzaGVyRWwgPSB0aGlzLnB1Ymxpc2hlckNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCBzdWJzY3JpYmVyRWwgPSB0aGlzLnN1YnNjcmliZXJDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBpZiAocHVibGlzaGVyRWwpIHtcbiAgICAgIHB1Ymxpc2hlckVsLnJlbW92ZUF0dHJpYnV0ZShcInN0eWxlXCIpO1xuICAgICAgcHVibGlzaGVyRWwucmVtb3ZlQXR0cmlidXRlKFwiZGF0YS14XCIpO1xuICAgICAgcHVibGlzaGVyRWwucmVtb3ZlQXR0cmlidXRlKFwiZGF0YS15XCIpO1xuICAgIH1cblxuICAgIGlmIChzdWJzY3JpYmVyRWwpIHtcbiAgICAgIHN1YnNjcmliZXJFbC5yZW1vdmVBdHRyaWJ1dGUoXCJzdHlsZVwiKTtcbiAgICAgIHN1YnNjcmliZXJFbC5yZW1vdmVBdHRyaWJ1dGUoXCJkYXRhLXhcIik7XG4gICAgICBzdWJzY3JpYmVyRWwucmVtb3ZlQXR0cmlidXRlKFwiZGF0YS15XCIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdEludGVyYWN0KCk6IHZvaWQge1xuICAgIGludGVyYWN0KFwiLnB1Ymxpc2hlci12aWV3XCIpLnVuc2V0KCk7XG5cbiAgICBpbnRlcmFjdChcIi5wdWJsaXNoZXItdmlld1wiKVxuICAgICAgLmRyYWdnYWJsZSh7XG4gICAgICAgIGluZXJ0aWE6IHRydWUsXG4gICAgICAgIG1vZGlmaWVyczogW1xuICAgICAgICAgIGludGVyYWN0Lm1vZGlmaWVycy5yZXN0cmljdFJlY3Qoe1xuICAgICAgICAgICAgcmVzdHJpY3Rpb246IFwicGFyZW50XCIsXG4gICAgICAgICAgICBlbmRPbmx5OiB0cnVlLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgICBhdXRvU2Nyb2xsOiB0cnVlLFxuICAgICAgICBsaXN0ZW5lcnM6IHtcbiAgICAgICAgICBtb3ZlOiAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldDtcbiAgICAgICAgICAgIGNvbnN0IHggPVxuICAgICAgICAgICAgICAocGFyc2VGbG9hdCh0YXJnZXQuZ2V0QXR0cmlidXRlKFwiZGF0YS14XCIpKSB8fCAwKSArIGV2ZW50LmR4O1xuICAgICAgICAgICAgY29uc3QgeSA9XG4gICAgICAgICAgICAgIChwYXJzZUZsb2F0KHRhcmdldC5nZXRBdHRyaWJ1dGUoXCJkYXRhLXlcIikpIHx8IDApICsgZXZlbnQuZHk7XG5cbiAgICAgICAgICAgIHRhcmdldC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlKCR7eH1weCwgJHt5fXB4KWA7XG4gICAgICAgICAgICB0YXJnZXQuc2V0QXR0cmlidXRlKFwiZGF0YS14XCIsIFN0cmluZyh4KSk7XG4gICAgICAgICAgICB0YXJnZXQuc2V0QXR0cmlidXRlKFwiZGF0YS15XCIsIFN0cmluZyh5KSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICAucmVzaXphYmxlKHtcbiAgICAgICAgZWRnZXM6IHsgbGVmdDogZmFsc2UsIHJpZ2h0OiB0cnVlLCBib3R0b206IHRydWUsIHRvcDogZmFsc2UgfSxcbiAgICAgICAgbGlzdGVuZXJzOiB7XG4gICAgICAgICAgbW92ZTogKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgICAgICBsZXQgeCA9IHBhcnNlRmxvYXQodGFyZ2V0LmdldEF0dHJpYnV0ZShcImRhdGEteFwiKSkgfHwgMDtcbiAgICAgICAgICAgIGxldCB5ID0gcGFyc2VGbG9hdCh0YXJnZXQuZ2V0QXR0cmlidXRlKFwiZGF0YS15XCIpKSB8fCAwO1xuXG4gICAgICAgICAgICB0YXJnZXQuc3R5bGUud2lkdGggPSBgJHtldmVudC5yZWN0LndpZHRofXB4YDtcbiAgICAgICAgICAgIHRhcmdldC5zdHlsZS5oZWlnaHQgPSBgJHtldmVudC5yZWN0LmhlaWdodH1weGA7XG5cbiAgICAgICAgICAgIHggKz0gZXZlbnQuZGVsdGFSZWN0LmxlZnQ7XG4gICAgICAgICAgICB5ICs9IGV2ZW50LmRlbHRhUmVjdC50b3A7XG5cbiAgICAgICAgICAgIHRhcmdldC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlKCR7eH1weCwgJHt5fXB4KWA7XG4gICAgICAgICAgICB0YXJnZXQuc2V0QXR0cmlidXRlKFwiZGF0YS14XCIsIFN0cmluZyh4KSk7XG4gICAgICAgICAgICB0YXJnZXQuc2V0QXR0cmlidXRlKFwiZGF0YS15XCIsIFN0cmluZyh5KSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgbW9kaWZpZXJzOiBbXG4gICAgICAgICAgaW50ZXJhY3QubW9kaWZpZXJzLnJlc3RyaWN0RWRnZXMoeyBvdXRlcjogXCJwYXJlbnRcIiB9KSxcbiAgICAgICAgICBpbnRlcmFjdC5tb2RpZmllcnMucmVzdHJpY3RTaXplKHsgbWluOiB7IHdpZHRoOiAxNTAsIGhlaWdodDogMTAwIH0gfSksXG4gICAgICAgICAgaW50ZXJhY3QubW9kaWZpZXJzLmFzcGVjdFJhdGlvKHsgcmF0aW86IFwicHJlc2VydmVcIiB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgaW5lcnRpYTogdHJ1ZSxcbiAgICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidGFzLXZpZGVvY2FsbC1jb250YWluZXJcIj5cbiAgPGRpdlxuICAgIGlkPVwic3Vic2NyaWJlci1jb250YWluZXJcIlxuICAgIFtjbGFzcy5zdWJzY3JpYmVyLXZpZXddPVwiaXNQdWJsaXNoZXJTbWFsbFwiXG4gICAgW2NsYXNzLnB1Ymxpc2hlci12aWV3XT1cIiFpc1B1Ymxpc2hlclNtYWxsXCJcbiAgICAjc3Vic2NyaWJlckNvbnRhaW5lclxuICAgIChkYmxjbGljayk9XCJvbkRvdWJsZUNsaWNrKClcIlxuICA+PC9kaXY+XG5cbiAgPGRpdlxuICAgIGlkPVwicHVibGlzaGVyLWNvbnRhaW5lclwiXG4gICAgW2NsYXNzLnB1Ymxpc2hlci12aWV3XT1cImlzUHVibGlzaGVyU21hbGxcIlxuICAgIFtjbGFzcy5zdWJzY3JpYmVyLXZpZXddPVwiIWlzUHVibGlzaGVyU21hbGxcIlxuICAgICNwdWJsaXNoZXJDb250YWluZXJcbiAgICAoZGJsY2xpY2spPVwib25Eb3VibGVDbGljaygpXCJcbiAgPjwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJjb250cm9scy1jb250YWluZXJcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIHN3YXAtYnRuXCIgKGNsaWNrKT1cInRvZ2dsZVN3YXAoKVwiIHRpdGxlPVwiQ2FtYmlhciB2aXN0YVwiPlxuICAgICAgPGkgY2xhc3M9XCJmYSBmYS1yZWZyZXNoXCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIHBpcC1idG5cIlxuICAgICAgKGNsaWNrKT1cIm1pbmltaXplKClcIlxuICAgICAgdGl0bGU9XCJNaW5pbWl6YXIgKFBpY3R1cmUgaW4gUGljdHVyZSlcIlxuICAgID5cbiAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY29tcHJlc3NcIj48L2k+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4gbXV0ZS1idG5cIlxuICAgICAgW2NsYXNzLm11dGVkXT1cImlzTXV0ZWRcIlxuICAgICAgKGNsaWNrKT1cInRvZ2dsZU11dGUoKVwiXG4gICAgICBbdGl0bGVdPVwiaXNNdXRlZCA/ICdBY3RpdmFyIG1pY3LDs2Zvbm8nIDogJ1NpbGVuY2lhciBtaWNyw7Nmb25vJ1wiXG4gICAgPlxuICAgICAgPGlcbiAgICAgICAgY2xhc3M9XCJmYVwiXG4gICAgICAgIFtjbGFzcy5mYS1taWNyb3Bob25lXT1cIiFpc011dGVkXCJcbiAgICAgICAgW2NsYXNzLmZhLW1pY3JvcGhvbmUtc2xhc2hdPVwiaXNNdXRlZFwiXG4gICAgICA+PC9pPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gaGFuZ3VwLWJ0blwiIChjbGljayk9XCJoYW5nVXAoKVwiIHRpdGxlPVwiQ29sZ2FyXCI+XG4gICAgICA8aSBjbGFzcz1cImZhIGZhLXBob25lXCIgc3R5bGU9XCJ0cmFuc2Zvcm06IHJvdGF0ZSgxMzVkZWcpXCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzLmludGVyZmFjZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2ludGVyZmFjZXMvdGFzLmludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlUm9vbVJlcXVlc3Qge1xuICB0ZW5hbnQ6IHN0cmluZztcbiAgdXNlcklkOiBzdHJpbmc7XG4gIHByb2R1Y3Q6IHN0cmluZztcbiAgcmVjb3JkOiBib29sZWFuO1xuICByb29tVHlwZTogVGFzUm9vbVR5cGU7XG4gIHR5cGU6IFRhc1Nlc3Npb25UeXBlO1xuICB1dGNTY2hlZHVsZWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlUm9vbVJlc3BvbnNlIHtcbiAgY29udGVudDoge1xuICAgIHJvb21UeXBlOiBzdHJpbmcgfCBudWxsO1xuICAgIHRlbmFudDogc3RyaW5nIHwgbnVsbDtcbiAgICB1c2VyX2lkOiBzdHJpbmcgfCBudWxsO1xuICAgIHByb2R1Y3Q6IHN0cmluZyB8IG51bGw7XG4gICAgcmVjb3JkOiBib29sZWFuIHwgbnVsbDtcbiAgICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgVGFzUm9vbVR5cGUgPSBcIlRBU1wiIHwgXCJKTVwiIHwgXCJXRUJJTkFSXCI7XG5cbmV4cG9ydCB0eXBlIFRhc1Nlc3Npb25UeXBlID0gXCJTUE9OVEFORU9VU1wiIHwgXCJTQ0hFRFVMRURcIjtcblxuZXhwb3J0IGludGVyZmFjZSBHZW5lcmF0ZVRva2VuUmVxdWVzdCB7XG4gIHNlc3Npb25JZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGxhc3RuYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJhdGVUb2tlblJlc3BvbnNlIHtcbiAgY29udGVudDoge1xuICAgIHRva2VuOiBzdHJpbmc7XG4gIH07XG59XG4iXX0=
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
import { Injectable, Inject, Optional } from "@angular/core";
|
|
2
|
+
import { BehaviorSubject } from "rxjs";
|
|
3
|
+
import { catchError, map } from "rxjs/operators";
|
|
4
|
+
import * as OT from "@opentok/client";
|
|
5
|
+
import { TAS_CONFIG, TAS_HTTP_CLIENT, } from "../tas.config";
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export var CallState;
|
|
8
|
+
(function (CallState) {
|
|
9
|
+
CallState["IDLE"] = "IDLE";
|
|
10
|
+
CallState["CONNECTING"] = "CONNECTING";
|
|
11
|
+
CallState["CONNECTED"] = "CONNECTED";
|
|
12
|
+
CallState["DISCONNECTED"] = "DISCONNECTED";
|
|
13
|
+
CallState["ERROR"] = "ERROR";
|
|
14
|
+
})(CallState || (CallState = {}));
|
|
15
|
+
export var ViewMode;
|
|
16
|
+
(function (ViewMode) {
|
|
17
|
+
ViewMode["FULLSCREEN"] = "FULLSCREEN";
|
|
18
|
+
ViewMode["PIP"] = "PIP";
|
|
19
|
+
})(ViewMode || (ViewMode = {}));
|
|
20
|
+
export class TasService {
|
|
21
|
+
constructor(config, httpClient) {
|
|
22
|
+
this.config = config;
|
|
23
|
+
this.httpClient = httpClient;
|
|
24
|
+
this.session = null;
|
|
25
|
+
this.publisher = null;
|
|
26
|
+
this.subscribers = [];
|
|
27
|
+
this.callStateSubject = new BehaviorSubject(CallState.IDLE);
|
|
28
|
+
this.callState$ = this.callStateSubject.asObservable();
|
|
29
|
+
this.viewModeSubject = new BehaviorSubject(ViewMode.FULLSCREEN);
|
|
30
|
+
this.viewMode$ = this.viewModeSubject.asObservable();
|
|
31
|
+
this.isMutedSubject = new BehaviorSubject(false);
|
|
32
|
+
this.isMuted$ = this.isMutedSubject.asObservable();
|
|
33
|
+
// Session info for PiP mode restoration
|
|
34
|
+
this.currentSessionId = null;
|
|
35
|
+
this.currentToken = null;
|
|
36
|
+
if (!this.config || !this.httpClient) {
|
|
37
|
+
console.warn("TasService: Configuration not provided. Make sure to use TasModule.forRoot()");
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
// Getters
|
|
41
|
+
get currentSession() {
|
|
42
|
+
return this.session;
|
|
43
|
+
}
|
|
44
|
+
get currentPublisher() {
|
|
45
|
+
return this.publisher;
|
|
46
|
+
}
|
|
47
|
+
get currentSubscribers() {
|
|
48
|
+
return this.subscribers;
|
|
49
|
+
}
|
|
50
|
+
get sessionId() {
|
|
51
|
+
return this.currentSessionId;
|
|
52
|
+
}
|
|
53
|
+
get token() {
|
|
54
|
+
return this.currentToken;
|
|
55
|
+
}
|
|
56
|
+
get isMuted() {
|
|
57
|
+
return this.isMutedSubject.getValue();
|
|
58
|
+
}
|
|
59
|
+
// View Mode Methods
|
|
60
|
+
setViewMode(mode) {
|
|
61
|
+
this.viewModeSubject.next(mode);
|
|
62
|
+
}
|
|
63
|
+
enterPipMode() {
|
|
64
|
+
this.viewModeSubject.next(ViewMode.PIP);
|
|
65
|
+
}
|
|
66
|
+
exitPipMode() {
|
|
67
|
+
this.viewModeSubject.next(ViewMode.FULLSCREEN);
|
|
68
|
+
}
|
|
69
|
+
isPipMode() {
|
|
70
|
+
return this.viewModeSubject.getValue() === ViewMode.PIP;
|
|
71
|
+
}
|
|
72
|
+
// Audio Control
|
|
73
|
+
toggleMute() {
|
|
74
|
+
if (this.publisher) {
|
|
75
|
+
const newMuteState = !this.isMutedSubject.getValue();
|
|
76
|
+
this.publisher.publishAudio(!newMuteState);
|
|
77
|
+
this.isMutedSubject.next(newMuteState);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
setMute(muted) {
|
|
81
|
+
if (this.publisher) {
|
|
82
|
+
this.publisher.publishAudio(!muted);
|
|
83
|
+
this.isMutedSubject.next(muted);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// Session Management
|
|
87
|
+
disconnectSession() {
|
|
88
|
+
if (this.session) {
|
|
89
|
+
this.session.disconnect();
|
|
90
|
+
this.session = null;
|
|
91
|
+
}
|
|
92
|
+
this.publisher = null;
|
|
93
|
+
this.subscribers = [];
|
|
94
|
+
this.currentSessionId = null;
|
|
95
|
+
this.currentToken = null;
|
|
96
|
+
this.isMutedSubject.next(false);
|
|
97
|
+
this.viewModeSubject.next(ViewMode.FULLSCREEN);
|
|
98
|
+
this.callStateSubject.next(CallState.DISCONNECTED);
|
|
99
|
+
}
|
|
100
|
+
isCallActive() {
|
|
101
|
+
return this.callStateSubject.getValue() === CallState.CONNECTED;
|
|
102
|
+
}
|
|
103
|
+
// API Methods
|
|
104
|
+
createRoom(payload) {
|
|
105
|
+
if (!this.config || !this.httpClient) {
|
|
106
|
+
throw new Error("TasService not configured. Use TasModule.forRoot()");
|
|
107
|
+
}
|
|
108
|
+
const url = `${this.config.apiBaseUrl}/v2/room`;
|
|
109
|
+
return this.httpClient.post(url, payload).pipe(map((response) => response), catchError((error) => {
|
|
110
|
+
console.error("TAS Service: createRoom failed", error);
|
|
111
|
+
throw error;
|
|
112
|
+
}));
|
|
113
|
+
}
|
|
114
|
+
generateToken(payload) {
|
|
115
|
+
if (!this.config || !this.httpClient) {
|
|
116
|
+
throw new Error("TasService not configured. Use TasModule.forRoot()");
|
|
117
|
+
}
|
|
118
|
+
const url = `${this.config.apiBaseUrl}/v2/room/token`;
|
|
119
|
+
return this.httpClient.post(url, payload).pipe(map((response) => response), catchError((error) => {
|
|
120
|
+
console.error("TAS Service: generateToken failed", error);
|
|
121
|
+
throw error;
|
|
122
|
+
}));
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Connects to a TokBox video session
|
|
126
|
+
*/
|
|
127
|
+
connectSession(sessionId, token, publisherElement, subscriberElement) {
|
|
128
|
+
this.callStateSubject.next(CallState.CONNECTING);
|
|
129
|
+
this.currentSessionId = sessionId;
|
|
130
|
+
this.currentToken = token;
|
|
131
|
+
return new Promise((resolve, reject) => {
|
|
132
|
+
if (!this.config) {
|
|
133
|
+
this.callStateSubject.next(CallState.ERROR);
|
|
134
|
+
reject(new Error("TasService not configured. Use TasModule.forRoot()"));
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
if (!OT.checkSystemRequirements()) {
|
|
138
|
+
this.callStateSubject.next(CallState.ERROR);
|
|
139
|
+
reject(new Error("Browser not compatible with TokBox"));
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
this.session = OT.initSession(this.config.tokBoxApiKey, sessionId);
|
|
143
|
+
// Handle new streams (remote participants joining)
|
|
144
|
+
this.session.on("streamCreated", (event) => {
|
|
145
|
+
const subscriber = this.session?.subscribe(event.stream, subscriberElement, {
|
|
146
|
+
insertMode: "append",
|
|
147
|
+
width: "100%",
|
|
148
|
+
height: "100%",
|
|
149
|
+
}, (error) => {
|
|
150
|
+
if (error) {
|
|
151
|
+
console.error("Error subscribing to stream:", error);
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
if (subscriber) {
|
|
155
|
+
this.subscribers.push(subscriber);
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
// Handle streams ending (remote participants leaving)
|
|
159
|
+
this.session.on("streamDestroyed", (event) => {
|
|
160
|
+
this.subscribers = this.subscribers.filter((sub) => sub.stream?.streamId !== event.stream.streamId);
|
|
161
|
+
});
|
|
162
|
+
// Handle session disconnection
|
|
163
|
+
this.session.on("sessionDisconnected", () => {
|
|
164
|
+
this.callStateSubject.next(CallState.DISCONNECTED);
|
|
165
|
+
});
|
|
166
|
+
// Connect to session
|
|
167
|
+
this.session.connect(token, (error) => {
|
|
168
|
+
if (error) {
|
|
169
|
+
console.error("Error connecting to session:", error);
|
|
170
|
+
this.callStateSubject.next(CallState.ERROR);
|
|
171
|
+
reject(error);
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
// Initialize publisher (local video)
|
|
175
|
+
this.publisher = OT.initPublisher(publisherElement, {
|
|
176
|
+
insertMode: "append",
|
|
177
|
+
width: "100%",
|
|
178
|
+
height: "100%",
|
|
179
|
+
}, (err) => {
|
|
180
|
+
if (err) {
|
|
181
|
+
console.error("Error initializing publisher:", err);
|
|
182
|
+
this.callStateSubject.next(CallState.ERROR);
|
|
183
|
+
reject(err);
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
// Publish to session
|
|
187
|
+
this.session?.publish(this.publisher, (pubErr) => {
|
|
188
|
+
if (pubErr) {
|
|
189
|
+
console.error("Error publishing stream:", pubErr);
|
|
190
|
+
this.callStateSubject.next(CallState.ERROR);
|
|
191
|
+
reject(pubErr);
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
this.callStateSubject.next(CallState.CONNECTED);
|
|
195
|
+
resolve();
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
// Video Element Movement Methods
|
|
203
|
+
movePublisherTo(newContainerId) {
|
|
204
|
+
if (!this.publisher)
|
|
205
|
+
return;
|
|
206
|
+
const publisherElement = this.publisher.element;
|
|
207
|
+
const newContainer = document.getElementById(newContainerId);
|
|
208
|
+
if (publisherElement && newContainer) {
|
|
209
|
+
newContainer.appendChild(publisherElement);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
moveSubscribersTo(newContainerId) {
|
|
213
|
+
const newContainer = document.getElementById(newContainerId);
|
|
214
|
+
if (!newContainer)
|
|
215
|
+
return;
|
|
216
|
+
this.subscribers.forEach((subscriber) => {
|
|
217
|
+
const subscriberElement = subscriber.element;
|
|
218
|
+
if (subscriberElement) {
|
|
219
|
+
newContainer.appendChild(subscriberElement);
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Moves the main video (subscriber if available, otherwise publisher) to a container.
|
|
225
|
+
* Used for PiP mode to show only one video.
|
|
226
|
+
*/
|
|
227
|
+
moveMainVideoTo(newContainerId) {
|
|
228
|
+
const newContainer = document.getElementById(newContainerId);
|
|
229
|
+
if (!newContainer)
|
|
230
|
+
return;
|
|
231
|
+
// Prefer remote video (subscriber) as main
|
|
232
|
+
if (this.subscribers.length > 0 && this.subscribers[0].element) {
|
|
233
|
+
newContainer.appendChild(this.subscribers[0].element);
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
// Fall back to local video (publisher)
|
|
237
|
+
if (this.publisher?.element) {
|
|
238
|
+
newContainer.appendChild(this.publisher.element);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Moves videos back to fullscreen containers
|
|
243
|
+
*/
|
|
244
|
+
moveVideosToFullscreen() {
|
|
245
|
+
this.moveSubscribersTo("subscriber-container");
|
|
246
|
+
this.movePublisherTo("publisher-container");
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
TasService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TasService, deps: [{ token: TAS_CONFIG, optional: true }, { token: TAS_HTTP_CLIENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
250
|
+
TasService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TasService, providedIn: "root" });
|
|
251
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TasService, decorators: [{
|
|
252
|
+
type: Injectable,
|
|
253
|
+
args: [{ providedIn: "root" }]
|
|
254
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
255
|
+
type: Optional
|
|
256
|
+
}, {
|
|
257
|
+
type: Inject,
|
|
258
|
+
args: [TAS_CONFIG]
|
|
259
|
+
}] }, { type: undefined, decorators: [{
|
|
260
|
+
type: Optional
|
|
261
|
+
}, {
|
|
262
|
+
type: Inject,
|
|
263
|
+
args: [TAS_HTTP_CLIENT]
|
|
264
|
+
}] }]; } });
|
|
265
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3Rhcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEVBQ0wsVUFBVSxFQUNWLGVBQWUsR0FHaEIsTUFBTSxlQUFlLENBQUM7O0FBUXZCLE1BQU0sQ0FBTixJQUFZLFNBTVg7QUFORCxXQUFZLFNBQVM7SUFDbkIsMEJBQWEsQ0FBQTtJQUNiLHNDQUF5QixDQUFBO0lBQ3pCLG9DQUF1QixDQUFBO0lBQ3ZCLDBDQUE2QixDQUFBO0lBQzdCLDRCQUFlLENBQUE7QUFDakIsQ0FBQyxFQU5XLFNBQVMsS0FBVCxTQUFTLFFBTXBCO0FBRUQsTUFBTSxDQUFOLElBQVksUUFHWDtBQUhELFdBQVksUUFBUTtJQUNsQixxQ0FBeUIsQ0FBQTtJQUN6Qix1QkFBVyxDQUFBO0FBQ2IsQ0FBQyxFQUhXLFFBQVEsS0FBUixRQUFRLFFBR25CO0FBR0QsTUFBTSxPQUFPLFVBQVU7SUFrQnJCLFlBQzBDLE1BQXdCLEVBQ25CLFVBQWdDO1FBRHJDLFdBQU0sR0FBTixNQUFNLENBQWtCO1FBQ25CLGVBQVUsR0FBVixVQUFVLENBQXNCO1FBbkJ2RSxZQUFPLEdBQXNCLElBQUksQ0FBQztRQUNsQyxjQUFTLEdBQXdCLElBQUksQ0FBQztRQUN0QyxnQkFBVyxHQUFvQixFQUFFLENBQUM7UUFFbEMscUJBQWdCLEdBQUcsSUFBSSxlQUFlLENBQVksU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFD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QUVEOzs7T0FHRztJQUNJLGVBQWUsQ0FBQyxjQUFzQjtRQUMzQyxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTztRQUUxQiwyQ0FBMkM7UUFDM0MsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUU7WUFDOUQsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RELE9BQU87U0FDUjtRQUVELHVDQUF1QztRQUN2QyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFO1lBQzNCLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNsRDtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNJLHNCQUFzQjtRQUMzQixJQUFJLENBQUMsaUJBQWlCLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDOUMsQ0FBQzs7dUdBcFNVLFVBQVUsa0JBbUJDLFVBQVUsNkJBQ1YsZUFBZTsyR0FwQjFCLFVBQVUsY0FERyxNQUFNOzJGQUNuQixVQUFVO2tCQUR0QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBb0I3QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLFVBQVU7OzBCQUM3QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCAqIGFzIE9UIGZyb20gXCJAb3BlbnRvay9jbGllbnRcIjtcbmltcG9ydCB7XG4gIFRBU19DT05GSUcsXG4gIFRBU19IVFRQX0NMSUVOVCxcbiAgVGFzQ29uZmlnLFxuICBUYXNIdHRwQ2xpZW50LFxufSBmcm9tIFwiLi4vdGFzLmNvbmZpZ1wiO1xuaW1wb3J0IHtcbiAgQ3JlYXRlUm9vbVJlcXVlc3QsXG4gIENyZWF0ZVJvb21SZXNwb25zZSxcbiAgR2VuZXJhdGVUb2tlblJlcXVlc3QsXG4gIEdlbmVyYXRlVG9rZW5SZXNwb25zZSxcbn0gZnJvbSBcIi4uL2ludGVyZmFjZXMvdGFzLmludGVyZmFjZXNcIjtcblxuZXhwb3J0IGVudW0gQ2FsbFN0YXRlIHtcbiAgSURMRSA9IFwiSURMRVwiLFxuICBDT05ORUNUSU5HID0gXCJDT05ORUNUSU5HXCIsXG4gIENPTk5FQ1RFRCA9IFwiQ09OTkVDVEVEXCIsXG4gIERJU0NPTk5FQ1RFRCA9IFwiRElTQ09OTkVDVEVEXCIsXG4gIEVSUk9SID0gXCJFUlJPUlwiLFxufVxuXG5leHBvcnQgZW51bSBWaWV3TW9kZSB7XG4gIEZVTExTQ1JFRU4gPSBcIkZVTExTQ1JFRU5cIixcbiAgUElQID0gXCJQSVBcIixcbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiBcInJvb3RcIiB9KVxuZXhwb3J0IGNsYXNzIFRhc1NlcnZpY2Uge1xuICBwcml2YXRlIHNlc3Npb246IE9ULlNlc3Npb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBwdWJsaXNoZXI6IE9ULlB1Ymxpc2hlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHN1YnNjcmliZXJzOiBPVC5TdWJzY3JpYmVyW10gPSBbXTtcblxuICBwcml2YXRlIGNhbGxTdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENhbGxTdGF0ZT4oQ2FsbFN0YXRlLklETEUpO1xuICBwdWJsaWMgY2FsbFN0YXRlJCA9IHRoaXMuY2FsbFN0YXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIHZpZXdNb2RlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Vmlld01vZGU+KFZpZXdNb2RlLkZVTExTQ1JFRU4pO1xuICBwdWJsaWMgdmlld01vZGUkID0gdGhpcy52aWV3TW9kZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgcHJpdmF0ZSBpc011dGVkU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgaXNNdXRlZCQgPSB0aGlzLmlzTXV0ZWRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIC8vIFNlc3Npb24gaW5mbyBmb3IgUGlQIG1vZGUgcmVzdG9yYXRpb25cbiAgcHJpdmF0ZSBjdXJyZW50U2Vzc2lvbklkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBjdXJyZW50VG9rZW46IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVEFTX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IFRhc0NvbmZpZyB8IG51bGwsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChUQVNfSFRUUF9DTElFTlQpIHByaXZhdGUgaHR0cENsaWVudDogVGFzSHR0cENsaWVudCB8IG51bGxcbiAgKSB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZyB8fCAhdGhpcy5odHRwQ2xpZW50KSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIFwiVGFzU2VydmljZTogQ29uZmlndXJhdGlvbiBub3QgcHJvdmlkZWQuIE1ha2Ugc3VyZSB0byB1c2UgVGFzTW9kdWxlLmZvclJvb3QoKVwiXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vIEdldHRlcnNcbiAgcHVibGljIGdldCBjdXJyZW50U2Vzc2lvbigpOiBPVC5TZXNzaW9uIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY3VycmVudFB1Ymxpc2hlcigpOiBPVC5QdWJsaXNoZXIgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5wdWJsaXNoZXI7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGN1cnJlbnRTdWJzY3JpYmVycygpOiBPVC5TdWJzY3JpYmVyW10ge1xuICAgIHJldHVybiB0aGlzLnN1YnNjcmliZXJzO1xuICB9XG5cbiAgcHVibGljIGdldCBzZXNzaW9uSWQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFNlc3Npb25JZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdG9rZW4oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFRva2VuO1xuICB9XG5cbiAgcHVibGljIGdldCBpc011dGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzTXV0ZWRTdWJqZWN0LmdldFZhbHVlKCk7XG4gIH1cblxuICAvLyBWaWV3IE1vZGUgTWV0aG9kc1xuICBwdWJsaWMgc2V0Vmlld01vZGUobW9kZTogVmlld01vZGUpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdNb2RlU3ViamVjdC5uZXh0KG1vZGUpO1xuICB9XG5cbiAgcHVibGljIGVudGVyUGlwTW9kZSgpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdNb2RlU3ViamVjdC5uZXh0KFZpZXdNb2RlLlBJUCk7XG4gIH1cblxuICBwdWJsaWMgZXhpdFBpcE1vZGUoKTogdm9pZCB7XG4gICAgdGhpcy52aWV3TW9kZVN1YmplY3QubmV4dChWaWV3TW9kZS5GVUxMU0NSRUVOKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1BpcE1vZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmlld01vZGVTdWJqZWN0LmdldFZhbHVlKCkgPT09IFZpZXdNb2RlLlBJUDtcbiAgfVxuXG4gIC8vIEF1ZGlvIENvbnRyb2xcbiAgcHVibGljIHRvZ2dsZU11dGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHVibGlzaGVyKSB7XG4gICAgICBjb25zdCBuZXdNdXRlU3RhdGUgPSAhdGhpcy5pc011dGVkU3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgdGhpcy5wdWJsaXNoZXIucHVibGlzaEF1ZGlvKCFuZXdNdXRlU3RhdGUpO1xuICAgICAgdGhpcy5pc011dGVkU3ViamVjdC5uZXh0KG5ld011dGVTdGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldE11dGUobXV0ZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wdWJsaXNoZXIpIHtcbiAgICAgIHRoaXMucHVibGlzaGVyLnB1Ymxpc2hBdWRpbyghbXV0ZWQpO1xuICAgICAgdGhpcy5pc011dGVkU3ViamVjdC5uZXh0KG11dGVkKTtcbiAgICB9XG4gIH1cblxuICAvLyBTZXNzaW9uIE1hbmFnZW1lbnRcbiAgcHVibGljIGRpc2Nvbm5lY3RTZXNzaW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlc3Npb24pIHtcbiAgICAgIHRoaXMuc2Vzc2lvbi5kaXNjb25uZWN0KCk7XG4gICAgICB0aGlzLnNlc3Npb24gPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLnB1Ymxpc2hlciA9IG51bGw7XG4gICAgdGhpcy5zdWJzY3JpYmVycyA9IFtdO1xuICAgIHRoaXMuY3VycmVudFNlc3Npb25JZCA9IG51bGw7XG4gICAgdGhpcy5jdXJyZW50VG9rZW4gPSBudWxsO1xuICAgIHRoaXMuaXNNdXRlZFN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgdGhpcy52aWV3TW9kZVN1YmplY3QubmV4dChWaWV3TW9kZS5GVUxMU0NSRUVOKTtcbiAgICB0aGlzLmNhbGxTdGF0ZVN1YmplY3QubmV4dChDYWxsU3RhdGUuRElTQ09OTkVDVEVEKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0NhbGxBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbFN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpID09PSBDYWxsU3RhdGUuQ09OTkVDVEVEO1xuICB9XG5cbiAgLy8gQVBJIE1ldGhvZHNcbiAgcHVibGljIGNyZWF0ZVJvb20oXG4gICAgcGF5bG9hZDogQ3JlYXRlUm9vbVJlcXVlc3RcbiAgKTogT2JzZXJ2YWJsZTxDcmVhdGVSb29tUmVzcG9uc2U+IHtcbiAgICBpZiAoIXRoaXMuY29uZmlnIHx8ICF0aGlzLmh0dHBDbGllbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlRhc1NlcnZpY2Ugbm90IGNvbmZpZ3VyZWQuIFVzZSBUYXNNb2R1bGUuZm9yUm9vdCgpXCIpO1xuICAgIH1cbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmNvbmZpZy5hcGlCYXNlVXJsfS92Mi9yb29tYDtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8Q3JlYXRlUm9vbVJlc3BvbnNlPih1cmwsIHBheWxvYWQpLnBpcGUoXG4gICAgICBtYXAoKHJlc3BvbnNlKSA9PiByZXNwb25zZSBhcyBDcmVhdGVSb29tUmVzcG9uc2UpLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIlRBUyBTZXJ2aWNlOiBjcmVhdGVSb29tIGZhaWxlZFwiLCBlcnJvcik7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdlbmVyYXRlVG9rZW4oXG4gICAgcGF5bG9hZDogR2VuZXJhdGVUb2tlblJlcXVlc3RcbiAgKTogT2JzZXJ2YWJsZTxHZW5lcmF0ZVRva2VuUmVzcG9uc2U+IHtcbiAgICBpZiAoIXRoaXMuY29uZmlnIHx8ICF0aGlzLmh0dHBDbGllbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlRhc1NlcnZpY2Ugbm90IGNvbmZpZ3VyZWQuIFVzZSBUYXNNb2R1bGUuZm9yUm9vdCgpXCIpO1xuICAgIH1cbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmNvbmZpZy5hcGlCYXNlVXJsfS92Mi9yb29tL3Rva2VuYDtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8R2VuZXJhdGVUb2tlblJlc3BvbnNlPih1cmwsIHBheWxvYWQpLnBpcGUoXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHJlc3BvbnNlIGFzIEdlbmVyYXRlVG9rZW5SZXNwb25zZSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiVEFTIFNlcnZpY2U6IGdlbmVyYXRlVG9rZW4gZmFpbGVkXCIsIGVycm9yKTtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ29ubmVjdHMgdG8gYSBUb2tCb3ggdmlkZW8gc2Vzc2lvblxuICAgKi9cbiAgcHVibGljIGNvbm5lY3RTZXNzaW9uKFxuICAgIHNlc3Npb25JZDogc3RyaW5nLFxuICAgIHRva2VuOiBzdHJpbmcsXG4gICAgcHVibGlzaGVyRWxlbWVudDogc3RyaW5nLFxuICAgIHN1YnNjcmliZXJFbGVtZW50OiBzdHJpbmdcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jYWxsU3RhdGVTdWJqZWN0Lm5leHQoQ2FsbFN0YXRlLkNPTk5FQ1RJTkcpO1xuICAgIHRoaXMuY3VycmVudFNlc3Npb25JZCA9IHNlc3Npb25JZDtcbiAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHRva2VuO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsgICBcbiAgICAgIGlmICghdGhpcy5jb25maWcpIHtcbiAgICAgICAgdGhpcy5jYWxsU3RhdGVTdWJqZWN0Lm5leHQoQ2FsbFN0YXRlLkVSUk9SKTtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihcIlRhc1NlcnZpY2Ugbm90IGNvbmZpZ3VyZWQuIFVzZSBUYXNNb2R1bGUuZm9yUm9vdCgpXCIpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIU9ULmNoZWNrU3lzdGVtUmVxdWlyZW1lbnRzKCkpIHtcbiAgICAgICAgdGhpcy5jYWxsU3RhdGVTdWJqZWN0Lm5leHQoQ2FsbFN0YXRlLkVSUk9SKTtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihcIkJyb3dzZXIgbm90IGNvbXBhdGlibGUgd2l0aCBUb2tCb3hcIikpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2Vzc2lvbiA9IE9ULmluaXRTZXNzaW9uKHRoaXMuY29uZmlnLnRva0JveEFwaUtleSwgc2Vzc2lvbklkKTtcblxuICAgICAgLy8gSGFuZGxlIG5ldyBzdHJlYW1zIChyZW1vdGUgcGFydGljaXBhbnRzIGpvaW5pbmcpXG4gICAgICB0aGlzLnNlc3Npb24ub24oXCJzdHJlYW1DcmVhdGVkXCIsIChldmVudCkgPT4ge1xuICAgICAgICBjb25zdCBzdWJzY3JpYmVyID0gdGhpcy5zZXNzaW9uPy5zdWJzY3JpYmUoXG4gICAgICAgICAgZXZlbnQuc3RyZWFtLFxuICAgICAgICAgIHN1YnNjcmliZXJFbGVtZW50LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGluc2VydE1vZGU6IFwiYXBwZW5kXCIsXG4gICAgICAgICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICAgICAgICBoZWlnaHQ6IFwiMTAwJVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIHN1YnNjcmliaW5nIHRvIHN0cmVhbTpcIiwgZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHN1YnNjcmliZXIpIHtcbiAgICAgICAgICB0aGlzLnN1YnNjcmliZXJzLnB1c2goc3Vic2NyaWJlcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyBIYW5kbGUgc3RyZWFtcyBlbmRpbmcgKHJlbW90ZSBwYXJ0aWNpcGFudHMgbGVhdmluZylcbiAgICAgIHRoaXMuc2Vzc2lvbi5vbihcInN0cmVhbURlc3Ryb3llZFwiLCAoZXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVycyA9IHRoaXMuc3Vic2NyaWJlcnMuZmlsdGVyKFxuICAgICAgICAgIChzdWIpID0+IHN1Yi5zdHJlYW0/LnN0cmVhbUlkICE9PSBldmVudC5zdHJlYW0uc3RyZWFtSWRcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBIYW5kbGUgc2Vzc2lvbiBkaXNjb25uZWN0aW9uXG4gICAgICB0aGlzLnNlc3Npb24ub24oXCJzZXNzaW9uRGlzY29ubmVjdGVkXCIsICgpID0+IHtcbiAgICAgICAgdGhpcy5jYWxsU3RhdGVTdWJqZWN0Lm5leHQoQ2FsbFN0YXRlLkRJU0NPTk5FQ1RFRCk7XG4gICAgICB9KTtcblxuICAgICAgLy8gQ29ubmVjdCB0byBzZXNzaW9uXG4gICAgICB0aGlzLnNlc3Npb24uY29ubmVjdCh0b2tlbiwgKGVycm9yKSA9PiB7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBjb25uZWN0aW5nIHRvIHNlc3Npb246XCIsIGVycm9yKTtcbiAgICAgICAgICB0aGlzLmNhbGxTdGF0ZVN1YmplY3QubmV4dChDYWxsU3RhdGUuRVJST1IpO1xuICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSW5pdGlhbGl6ZSBwdWJsaXNoZXIgKGxvY2FsIHZpZGVvKVxuICAgICAgICB0aGlzLnB1Ymxpc2hlciA9IE9ULmluaXRQdWJsaXNoZXIoXG4gICAgICAgICAgcHVibGlzaGVyRWxlbWVudCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpbnNlcnRNb2RlOiBcImFwcGVuZFwiLFxuICAgICAgICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgICAgICAgICAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGluaXRpYWxpemluZyBwdWJsaXNoZXI6XCIsIGVycik7XG4gICAgICAgICAgICAgIHRoaXMuY2FsbFN0YXRlU3ViamVjdC5uZXh0KENhbGxTdGF0ZS5FUlJPUik7XG4gICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFB1Ymxpc2ggdG8gc2Vzc2lvblxuICAgICAgICAgICAgdGhpcy5zZXNzaW9uPy5wdWJsaXNoKHRoaXMucHVibGlzaGVyISwgKHB1YkVycikgPT4ge1xuICAgICAgICAgICAgICBpZiAocHViRXJyKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIHB1Ymxpc2hpbmcgc3RyZWFtOlwiLCBwdWJFcnIpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2FsbFN0YXRlU3ViamVjdC5uZXh0KENhbGxTdGF0ZS5FUlJPUik7XG4gICAgICAgICAgICAgICAgcmVqZWN0KHB1YkVycik7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxsU3RhdGVTdWJqZWN0Lm5leHQoQ2FsbFN0YXRlLkNPTk5FQ1RFRCk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFZpZGVvIEVsZW1lbnQgTW92ZW1lbnQgTWV0aG9kc1xuICBwdWJsaWMgbW92ZVB1Ymxpc2hlclRvKG5ld0NvbnRhaW5lcklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucHVibGlzaGVyKSByZXR1cm47XG5cbiAgICBjb25zdCBwdWJsaXNoZXJFbGVtZW50ID0gdGhpcy5wdWJsaXNoZXIuZWxlbWVudDtcbiAgICBjb25zdCBuZXdDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChuZXdDb250YWluZXJJZCk7XG5cbiAgICBpZiAocHVibGlzaGVyRWxlbWVudCAmJiBuZXdDb250YWluZXIpIHtcbiAgICAgIG5ld0NvbnRhaW5lci5hcHBlbmRDaGlsZChwdWJsaXNoZXJFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbW92ZVN1YnNjcmliZXJzVG8obmV3Q29udGFpbmVySWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IG5ld0NvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG5ld0NvbnRhaW5lcklkKTtcbiAgICBpZiAoIW5ld0NvbnRhaW5lcikgcmV0dXJuO1xuXG4gICAgdGhpcy5zdWJzY3JpYmVycy5mb3JFYWNoKChzdWJzY3JpYmVyKSA9PiB7XG4gICAgICBjb25zdCBzdWJzY3JpYmVyRWxlbWVudCA9IHN1YnNjcmliZXIuZWxlbWVudDtcbiAgICAgIGlmIChzdWJzY3JpYmVyRWxlbWVudCkge1xuICAgICAgICBuZXdDb250YWluZXIuYXBwZW5kQ2hpbGQoc3Vic2NyaWJlckVsZW1lbnQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1vdmVzIHRoZSBtYWluIHZpZGVvIChzdWJzY3JpYmVyIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIHB1Ymxpc2hlcikgdG8gYSBjb250YWluZXIuXG4gICAqIFVzZWQgZm9yIFBpUCBtb2RlIHRvIHNob3cgb25seSBvbmUgdmlkZW8uXG4gICAqL1xuICBwdWJsaWMgbW92ZU1haW5WaWRlb1RvKG5ld0NvbnRhaW5lcklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBuZXdDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChuZXdDb250YWluZXJJZCk7XG4gICAgaWYgKCFuZXdDb250YWluZXIpIHJldHVybjtcblxuICAgIC8vIFByZWZlciByZW1vdGUgdmlkZW8gKHN1YnNjcmliZXIpIGFzIG1haW5cbiAgICBpZiAodGhpcy5zdWJzY3JpYmVycy5sZW5ndGggPiAwICYmIHRoaXMuc3Vic2NyaWJlcnNbMF0uZWxlbWVudCkge1xuICAgICAgbmV3Q29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuc3Vic2NyaWJlcnNbMF0uZWxlbWVudCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRmFsbCBiYWNrIHRvIGxvY2FsIHZpZGVvIChwdWJsaXNoZXIpXG4gICAgaWYgKHRoaXMucHVibGlzaGVyPy5lbGVtZW50KSB7XG4gICAgICBuZXdDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5wdWJsaXNoZXIuZWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1vdmVzIHZpZGVvcyBiYWNrIHRvIGZ1bGxzY3JlZW4gY29udGFpbmVyc1xuICAgKi9cbiAgcHVibGljIG1vdmVWaWRlb3NUb0Z1bGxzY3JlZW4oKTogdm9pZCB7XG4gICAgdGhpcy5tb3ZlU3Vic2NyaWJlcnNUbyhcInN1YnNjcmliZXItY29udGFpbmVyXCIpO1xuICAgIHRoaXMubW92ZVB1Ymxpc2hlclRvKFwicHVibGlzaGVyLWNvbnRhaW5lclwiKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { InjectionToken } from "@angular/core";
|
|
2
|
+
/**
|
|
3
|
+
* Injection token for TAS configuration
|
|
4
|
+
*/
|
|
5
|
+
export const TAS_CONFIG = new InjectionToken("TAS_CONFIG");
|
|
6
|
+
/**
|
|
7
|
+
* Injection token for HTTP client
|
|
8
|
+
*/
|
|
9
|
+
export const TAS_HTTP_CLIENT = new InjectionToken("TAS_HTTP_CLIENT");
|
|
10
|
+
/**
|
|
11
|
+
* Injection token for user data provider
|
|
12
|
+
*/
|
|
13
|
+
export const TAS_USER_DATA_PROVIDER = new InjectionToken("TAS_USER_DATA_PROVIDER");
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdGFzLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBK0MvQzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxJQUFJLGNBQWMsQ0FBWSxZQUFZLENBQUMsQ0FBQztBQUV0RTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxJQUFJLGNBQWMsQ0FDL0MsaUJBQWlCLENBQ2xCLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLElBQUksY0FBYyxDQUN0RCx3QkFBd0IsQ0FDekIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gaW50ZXJmYWNlIGZvciB0aGUgVEFTIFNES1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhc0NvbmZpZyB7XG4gIC8qKlxuICAgKiBUb2tCb3gvVm9uYWdlIEFQSSBLZXlcbiAgICovXG4gIHRva0JveEFwaUtleTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCYXNlIFVSTCBmb3IgdGhlIFRBUyBBUEkgZW5kcG9pbnRzXG4gICAqL1xuICBhcGlCYXNlVXJsOiBzdHJpbmc7XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciBIVFRQIGNsaWVudCB0aGF0IHRoZSBTREsgd2lsbCB1c2UuXG4gKiBJbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UgaW4geW91ciBhcHAgYW5kIHByb3ZpZGUgaXQgdG8gdGhlIFNESy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYXNIdHRwQ2xpZW50IHtcbiAgcG9zdDxUPihcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBhbnksXG4gICAgb3B0aW9ucz86IHsgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfVxuICApOiBPYnNlcnZhYmxlPFQ+O1xufVxuXG4vKipcbiAqIFVzZXIgZGF0YSBpbnRlcmZhY2UgcmVxdWlyZWQgYnkgVGFzQnV0dG9uQ29tcG9uZW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFzVXNlckRhdGEge1xuICBpZDogc3RyaW5nIHwgbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIHN1cm5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBVc2VyIGRhdGEgcHJvdmlkZXIgaW50ZXJmYWNlIC0gaW1wbGVtZW50IHRoaXMgdG8gcHJvdmlkZSB1c2VyIGRhdGEgdG8gdGhlIFNES1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhc1VzZXJEYXRhUHJvdmlkZXIge1xuICBnZXRVc2VyRGF0YSgpOiBUYXNVc2VyRGF0YSB8IG51bGw7XG4gIGdldFRlbmFudElkKCk6IHN0cmluZyB8IG51bGw7XG59XG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIGZvciBUQVMgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgY29uc3QgVEFTX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxUYXNDb25maWc+KFwiVEFTX0NPTkZJR1wiKTtcblxuLyoqXG4gKiBJbmplY3Rpb24gdG9rZW4gZm9yIEhUVFAgY2xpZW50XG4gKi9cbmV4cG9ydCBjb25zdCBUQVNfSFRUUF9DTElFTlQgPSBuZXcgSW5qZWN0aW9uVG9rZW48VGFzSHR0cENsaWVudD4oXG4gIFwiVEFTX0hUVFBfQ0xJRU5UXCJcbik7XG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIGZvciB1c2VyIGRhdGEgcHJvdmlkZXJcbiAqL1xuZXhwb3J0IGNvbnN0IFRBU19VU0VSX0RBVEFfUFJPVklERVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48VGFzVXNlckRhdGFQcm92aWRlcj4oXG4gIFwiVEFTX1VTRVJfREFUQV9QUk9WSURFUlwiXG4pO1xuIl19
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { NgModule } from "@angular/core";
|
|
2
|
+
import { CommonModule } from "@angular/common";
|
|
3
|
+
import { NgbModalModule } from "@ng-bootstrap/ng-bootstrap";
|
|
4
|
+
import { TasButtonComponent } from "./components/tas-btn/tas-btn.component";
|
|
5
|
+
import { TasVideocallComponent } from "./components/tas-videocall/tas-videocall.component";
|
|
6
|
+
import { TasFloatingCallComponent } from "./components/tas-floating-call/tas-floating-call.component";
|
|
7
|
+
import { TAS_CONFIG, TAS_HTTP_CLIENT, TAS_USER_DATA_PROVIDER, } from "./tas.config";
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
export class TasModule {
|
|
10
|
+
/**
|
|
11
|
+
* Use this method in your app module to configure the TAS SDK
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* TasModule.forRoot({
|
|
16
|
+
* config: {
|
|
17
|
+
* tokBoxApiKey: environment.tokBox,
|
|
18
|
+
* apiBaseUrl: environment.apiUrl
|
|
19
|
+
* },
|
|
20
|
+
* httpClient: MyHttpClientAdapter,
|
|
21
|
+
* userDataProvider: MyUserDataProvider
|
|
22
|
+
* })
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
static forRoot(moduleConfig) {
|
|
26
|
+
const providers = [
|
|
27
|
+
{
|
|
28
|
+
provide: TAS_CONFIG,
|
|
29
|
+
useValue: moduleConfig.config,
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
if (moduleConfig.httpClient) {
|
|
33
|
+
providers.push({
|
|
34
|
+
provide: TAS_HTTP_CLIENT,
|
|
35
|
+
useClass: moduleConfig.httpClient,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
if (moduleConfig.userDataProvider) {
|
|
39
|
+
providers.push({
|
|
40
|
+
provide: TAS_USER_DATA_PROVIDER,
|
|
41
|
+
useClass: moduleConfig.userDataProvider,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
return {
|
|
45
|
+
ngModule: TasModule,
|
|
46
|
+
providers,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
TasModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TasModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
51
|
+
TasModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TasModule, declarations: [TasButtonComponent,
|
|
52
|
+
TasVideocallComponent,
|
|
53
|
+
TasFloatingCallComponent], imports: [CommonModule, NgbModalModule], exports: [TasButtonComponent,
|
|
54
|
+
TasVideocallComponent,
|
|
55
|
+
TasFloatingCallComponent] });
|
|
56
|
+
TasModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TasModule, imports: [[CommonModule, NgbModalModule]] });
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TasModule, decorators: [{
|
|
58
|
+
type: NgModule,
|
|
59
|
+
args: [{
|
|
60
|
+
declarations: [
|
|
61
|
+
TasButtonComponent,
|
|
62
|
+
TasVideocallComponent,
|
|
63
|
+
TasFloatingCallComponent,
|
|
64
|
+
],
|
|
65
|
+
imports: [CommonModule, NgbModalModule],
|
|
66
|
+
exports: [
|
|
67
|
+
TasButtonComponent,
|
|
68
|
+
TasVideocallComponent,
|
|
69
|
+
TasFloatingCallComponent,
|
|
70
|
+
],
|
|
71
|
+
}]
|
|
72
|
+
}] });
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdGFzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUF1QixNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3RHLE9BQU8sRUFDTCxVQUFVLEVBQ1YsZUFBZSxFQUNmLHNCQUFzQixHQUl2QixNQUFNLGNBQWMsQ0FBQzs7QUFxQnRCLE1BQU0sT0FBTyxTQUFTO0lBQ3BCOzs7Ozs7Ozs7Ozs7OztPQWNHO0lBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FDWixZQUE2QjtRQUU3QixNQUFNLFNBQVMsR0FBVTtZQUN2QjtnQkFDRSxPQUFPLEVBQUUsVUFBVTtnQkFDbkIsUUFBUSxFQUFFLFlBQVksQ0FBQyxNQUFNO2FBQzlCO1NBQ0YsQ0FBQztRQUVGLElBQUksWUFBWSxDQUFDLFVBQVUsRUFBRTtZQUMzQixTQUFTLENBQUMsSUFBSSxDQUFDO2dCQUNiLE9BQU8sRUFBRSxlQUFlO2dCQUN4QixRQUFRLEVBQUUsWUFBWSxDQUFDLFVBQVU7YUFDbEMsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxJQUFJLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRTtZQUNqQyxTQUFTLENBQUMsSUFBSSxDQUFDO2dCQUNiLE9BQU8sRUFBRSxzQkFBc0I7Z0JBQy9CLFFBQVEsRUFBRSxZQUFZLENBQUMsZ0JBQWdCO2FBQ3hDLENBQUMsQ0FBQztTQUNKO1FBRUQsT0FBTztZQUNMLFFBQVEsRUFBRSxTQUFTO1lBQ25CLFNBQVM7U0FDVixDQUFDO0lBQ0osQ0FBQzs7c0dBNUNVLFNBQVM7dUdBQVQsU0FBUyxpQkFYbEIsa0JBQWtCO1FBQ2xCLHFCQUFxQjtRQUNyQix3QkFBd0IsYUFFaEIsWUFBWSxFQUFFLGNBQWMsYUFFcEMsa0JBQWtCO1FBQ2xCLHFCQUFxQjtRQUNyQix3QkFBd0I7dUdBR2YsU0FBUyxZQVBYLENBQUMsWUFBWSxFQUFFLGNBQWMsQ0FBQzsyRkFPNUIsU0FBUztrQkFickIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osa0JBQWtCO3dCQUNsQixxQkFBcUI7d0JBQ3JCLHdCQUF3QjtxQkFDekI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGNBQWMsQ0FBQztvQkFDdkMsT0FBTyxFQUFFO3dCQUNQLGtCQUFrQjt3QkFDbEIscUJBQXFCO3dCQUNyQix3QkFBd0I7cUJBQ3pCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnMgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgTmdiTW9kYWxNb2R1bGUgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcblxuaW1wb3J0IHsgVGFzQnV0dG9uQ29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50cy90YXMtYnRuL3Rhcy1idG4uY29tcG9uZW50XCI7XG5pbXBvcnQgeyBUYXNWaWRlb2NhbGxDb21wb25lbnQgfSBmcm9tIFwiLi9jb21wb25lbnRzL3Rhcy12aWRlb2NhbGwvdGFzLXZpZGVvY2FsbC5jb21wb25lbnRcIjtcbmltcG9ydCB7IFRhc0Zsb2F0aW5nQ2FsbENvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMvdGFzLWZsb2F0aW5nLWNhbGwvdGFzLWZsb2F0aW5nLWNhbGwuY29tcG9uZW50XCI7XG5pbXBvcnQge1xuICBUQVNfQ09ORklHLFxuICBUQVNfSFRUUF9DTElFTlQsXG4gIFRBU19VU0VSX0RBVEFfUFJPVklERVIsXG4gIFRhc0NvbmZpZyxcbiAgVGFzSHR0cENsaWVudCxcbiAgVGFzVXNlckRhdGFQcm92aWRlcixcbn0gZnJvbSBcIi4vdGFzLmNvbmZpZ1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRhc01vZHVsZUNvbmZpZyB7XG4gIGNvbmZpZzogVGFzQ29uZmlnO1xuICBodHRwQ2xpZW50PzogbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVGFzSHR0cENsaWVudDtcbiAgdXNlckRhdGFQcm92aWRlcj86IG5ldyAoLi4uYXJnczogYW55W10pID0+IFRhc1VzZXJEYXRhUHJvdmlkZXI7XG59XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFRhc0J1dHRvbkNvbXBvbmVudCxcbiAgICBUYXNWaWRlb2NhbGxDb21wb25lbnQsXG4gICAgVGFzRmxvYXRpbmdDYWxsQ29tcG9uZW50LFxuICBdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBOZ2JNb2RhbE1vZHVsZV0sXG4gIGV4cG9ydHM6IFtcbiAgICBUYXNCdXR0b25Db21wb25lbnQsXG4gICAgVGFzVmlkZW9jYWxsQ29tcG9uZW50LFxuICAgIFRhc0Zsb2F0aW5nQ2FsbENvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVGFzTW9kdWxlIHtcbiAgLyoqXG4gICAqIFVzZSB0aGlzIG1ldGhvZCBpbiB5b3VyIGFwcCBtb2R1bGUgdG8gY29uZmlndXJlIHRoZSBUQVMgU0RLXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogVGFzTW9kdWxlLmZvclJvb3Qoe1xuICAgKiAgIGNvbmZpZzoge1xuICAgKiAgICAgdG9rQm94QXBpS2V5OiBlbnZpcm9ubWVudC50b2tCb3gsXG4gICAqICAgICBhcGlCYXNlVXJsOiBlbnZpcm9ubWVudC5hcGlVcmxcbiAgICogICB9LFxuICAgKiAgIGh0dHBDbGllbnQ6IE15SHR0cENsaWVudEFkYXB0ZXIsXG4gICAqICAgdXNlckRhdGFQcm92aWRlcjogTXlVc2VyRGF0YVByb3ZpZGVyXG4gICAqIH0pXG4gICAqIGBgYFxuICAgKi9cbiAgc3RhdGljIGZvclJvb3QoXG4gICAgbW9kdWxlQ29uZmlnOiBUYXNNb2R1bGVDb25maWdcbiAgKTogTW9kdWxlV2l0aFByb3ZpZGVyczxUYXNNb2R1bGU+IHtcbiAgICBjb25zdCBwcm92aWRlcnM6IGFueVtdID0gW1xuICAgICAge1xuICAgICAgICBwcm92aWRlOiBUQVNfQ09ORklHLFxuICAgICAgICB1c2VWYWx1ZTogbW9kdWxlQ29uZmlnLmNvbmZpZyxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGlmIChtb2R1bGVDb25maWcuaHR0cENsaWVudCkge1xuICAgICAgcHJvdmlkZXJzLnB1c2goe1xuICAgICAgICBwcm92aWRlOiBUQVNfSFRUUF9DTElFTlQsXG4gICAgICAgIHVzZUNsYXNzOiBtb2R1bGVDb25maWcuaHR0cENsaWVudCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChtb2R1bGVDb25maWcudXNlckRhdGFQcm92aWRlcikge1xuICAgICAgcHJvdmlkZXJzLnB1c2goe1xuICAgICAgICBwcm92aWRlOiBUQVNfVVNFUl9EQVRBX1BST1ZJREVSLFxuICAgICAgICB1c2VDbGFzczogbW9kdWxlQ29uZmlnLnVzZXJEYXRhUHJvdmlkZXIsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IFRhc01vZHVsZSxcbiAgICAgIHByb3ZpZGVycyxcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of tas-uell-sdk
|
|
3
|
+
*/
|
|
4
|
+
// Module
|
|
5
|
+
export * from "./lib/tas.module";
|
|
6
|
+
// Configuration
|
|
7
|
+
export * from "./lib/tas.config";
|
|
8
|
+
// Services
|
|
9
|
+
export * from "./lib/services/tas.service";
|
|
10
|
+
// Components
|
|
11
|
+
export * from "./lib/components/tas-btn/tas-btn.component";
|
|
12
|
+
export * from "./lib/components/tas-videocall/tas-videocall.component";
|
|
13
|
+
export * from "./lib/components/tas-floating-call/tas-floating-call.component";
|
|
14
|
+
// Interfaces
|
|
15
|
+
export * from "./lib/interfaces/tas.interfaces";
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsU0FBUztBQUNULGNBQWMsa0JBQWtCLENBQUM7QUFFakMsZ0JBQWdCO0FBQ2hCLGNBQWMsa0JBQWtCLENBQUM7QUFFakMsV0FBVztBQUNYLGNBQWMsNEJBQTRCLENBQUM7QUFFM0MsYUFBYTtBQUNiLGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyx3REFBd0QsQ0FBQztBQUN2RSxjQUFjLGdFQUFnRSxDQUFDO0FBRS9FLGFBQWE7QUFDYixjQUFjLGlDQUFpQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiB0YXMtdWVsbC1zZGtcbiAqL1xuXG4vLyBNb2R1bGVcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi90YXMubW9kdWxlXCI7XG5cbi8vIENvbmZpZ3VyYXRpb25cbmV4cG9ydCAqIGZyb20gXCIuL2xpYi90YXMuY29uZmlnXCI7XG5cbi8vIFNlcnZpY2VzXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvc2VydmljZXMvdGFzLnNlcnZpY2VcIjtcblxuLy8gQ29tcG9uZW50c1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudHMvdGFzLWJ0bi90YXMtYnRuLmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudHMvdGFzLXZpZGVvY2FsbC90YXMtdmlkZW9jYWxsLmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudHMvdGFzLWZsb2F0aW5nLWNhbGwvdGFzLWZsb2F0aW5nLWNhbGwuY29tcG9uZW50XCI7XG5cbi8vIEludGVyZmFjZXNcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9pbnRlcmZhY2VzL3Rhcy5pbnRlcmZhY2VzXCI7XG4iXX0=
|