angular-debug-recorder 1.0.0 → 1.0.2
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 +124 -13
- package/esm2022/lib/action-list/action-list.component.mjs +161 -161
- package/esm2022/lib/debug-panel/debug-panel.component.mjs +385 -385
- package/esm2022/lib/services/rrweb-recorder.service.mjs +32 -21
- package/esm2022/lib/session-replay/session-replay.component.mjs +85 -85
- package/esm2022/lib/settings-dialog/settings-dialog.component.mjs +75 -75
- package/esm2022/lib/test-preview/test-preview.component.mjs +59 -59
- package/fesm2022/angular-debug-recorder.mjs +791 -780
- package/fesm2022/angular-debug-recorder.mjs.map +1 -1
- package/lib/services/rrweb-recorder.service.d.ts +5 -4
- package/package.json +1 -1
|
@@ -3,24 +3,39 @@ import * as i0 from "@angular/core";
|
|
|
3
3
|
export class RrwebRecorderService {
|
|
4
4
|
constructor(zone) {
|
|
5
5
|
this.zone = zone;
|
|
6
|
-
|
|
6
|
+
// Plain array — cheap push, no O(n) spread on every event
|
|
7
|
+
this._eventsArray = [];
|
|
8
|
+
// Signal only for reactive count display in templates
|
|
9
|
+
this._eventCount = signal(0);
|
|
7
10
|
this._isRecording = signal(false);
|
|
8
|
-
this.
|
|
11
|
+
this.eventCount = this._eventCount.asReadonly();
|
|
9
12
|
this.isRecording = this._isRecording.asReadonly();
|
|
10
13
|
}
|
|
14
|
+
hasEvents() {
|
|
15
|
+
return this._eventsArray.length > 0;
|
|
16
|
+
}
|
|
17
|
+
getEvents() {
|
|
18
|
+
return this._eventsArray;
|
|
19
|
+
}
|
|
11
20
|
async startRecording() {
|
|
12
|
-
// Dynamically import rrweb to avoid SSR issues and reduce initial bundle
|
|
13
21
|
const { record } = await import('rrweb');
|
|
14
|
-
this.
|
|
22
|
+
this._eventsArray = [];
|
|
23
|
+
this._eventCount.set(0);
|
|
15
24
|
this._isRecording.set(true);
|
|
16
25
|
this.stopFn = record({
|
|
17
26
|
emit: (event) => {
|
|
18
|
-
|
|
19
|
-
|
|
27
|
+
// Push outside Angular zone — no change detection per event
|
|
28
|
+
this.zone.runOutsideAngular(() => {
|
|
29
|
+
this._eventsArray.push(event);
|
|
20
30
|
});
|
|
31
|
+
// Update count signal only every 10 events to keep UI responsive
|
|
32
|
+
const len = this._eventsArray.length;
|
|
33
|
+
if (len === 1 || len % 10 === 0) {
|
|
34
|
+
this.zone.run(() => this._eventCount.set(len));
|
|
35
|
+
}
|
|
21
36
|
},
|
|
22
|
-
// Note: blockSelector
|
|
23
|
-
// on TextNodes/CommentNodes which
|
|
37
|
+
// Note: blockSelector omitted — rrweb 2.0.0-alpha.4 calls node.matches()
|
|
38
|
+
// on TextNodes/CommentNodes which crash the recorder.
|
|
24
39
|
maskTextSelector: 'input[type="password"]',
|
|
25
40
|
checkoutEveryNth: 200,
|
|
26
41
|
});
|
|
@@ -31,24 +46,19 @@ export class RrwebRecorderService {
|
|
|
31
46
|
this.stopFn = undefined;
|
|
32
47
|
}
|
|
33
48
|
this._isRecording.set(false);
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
getEvents() {
|
|
37
|
-
return this._events();
|
|
49
|
+
this._eventCount.set(this._eventsArray.length);
|
|
50
|
+
return this._eventsArray;
|
|
38
51
|
}
|
|
39
52
|
clearEvents() {
|
|
40
|
-
this.
|
|
41
|
-
|
|
42
|
-
hasEvents() {
|
|
43
|
-
return this._events().length > 0;
|
|
53
|
+
this._eventsArray = [];
|
|
54
|
+
this._eventCount.set(0);
|
|
44
55
|
}
|
|
45
56
|
// ─── Replay ──────────────────────────────────────────────────────────────
|
|
46
57
|
async startReplay(container, events) {
|
|
47
58
|
const { Replayer } = await import('rrweb');
|
|
48
|
-
const eventsToReplay = events ?? this.
|
|
59
|
+
const eventsToReplay = events ?? this._eventsArray;
|
|
49
60
|
if (eventsToReplay.length === 0)
|
|
50
61
|
return;
|
|
51
|
-
// Destroy previous replayer
|
|
52
62
|
this.destroyReplayer();
|
|
53
63
|
this.replayer = new Replayer(eventsToReplay, {
|
|
54
64
|
root: container,
|
|
@@ -76,7 +86,7 @@ export class RrwebRecorderService {
|
|
|
76
86
|
}
|
|
77
87
|
// ─── Export ───────────────────────────────────────────────────────────────
|
|
78
88
|
exportEvents() {
|
|
79
|
-
return JSON.stringify(this.
|
|
89
|
+
return JSON.stringify(this._eventsArray, null, 2);
|
|
80
90
|
}
|
|
81
91
|
downloadEvents(filename = 'rrweb-session.json') {
|
|
82
92
|
const blob = new Blob([this.exportEvents()], { type: 'application/json' });
|
|
@@ -90,7 +100,8 @@ export class RrwebRecorderService {
|
|
|
90
100
|
importEvents(json) {
|
|
91
101
|
try {
|
|
92
102
|
const events = JSON.parse(json);
|
|
93
|
-
this.
|
|
103
|
+
this._eventsArray = events;
|
|
104
|
+
this._eventCount.set(events.length);
|
|
94
105
|
return events;
|
|
95
106
|
}
|
|
96
107
|
catch {
|
|
@@ -105,4 +116,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
105
116
|
type: Injectable,
|
|
106
117
|
args: [{ providedIn: 'root' }]
|
|
107
118
|
}], ctorParameters: () => [{ type: i0.NgZone }] });
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnJ3ZWItcmVjb3JkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RlYnVnLXJlY29yZGVyL3NyYy9saWIvc2VydmljZXMvcnJ3ZWItcmVjb3JkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFJM0QsTUFBTSxPQUFPLG9CQUFvQjtJQVMvQixZQUFvQixJQUFZO1FBQVosU0FBSSxHQUFKLElBQUksQ0FBUTtRQVJ4QixZQUFPLEdBQUcsTUFBTSxDQUFrQixFQUFFLENBQUMsQ0FBQztRQUN0QyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUlyQyxXQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNuQyxnQkFBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7SUFFVixDQUFDO0lBRXBDLEtBQUssQ0FBQyxjQUFjO1FBQ2xCLHlFQUF5RTtRQUN6RSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFNUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7WUFDbkIsSUFBSSxFQUFFLENBQUMsS0FBb0IsRUFBRSxFQUFFO2dCQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7b0JBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLENBQUMs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UUFDdEIsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1YsR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsWUFBWSxDQUFDLElBQVk7UUFDdkIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQW9CLENBQUM7WUFDbkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDekIsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztZQUMzQyxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDOytHQWpIVSxvQkFBb0I7bUhBQXBCLG9CQUFvQixjQURQLE1BQU07OzRGQUNuQixvQkFBb0I7a0JBRGhDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHR5cGUgeyBldmVudFdpdGhUaW1lIH0gZnJvbSAnQHJyd2ViL3R5cGVzJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBScndlYlJlY29yZGVyU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBfZXZlbnRzID0gc2lnbmFsPGV2ZW50V2l0aFRpbWVbXT4oW10pO1xyXG4gIHByaXZhdGUgX2lzUmVjb3JkaW5nID0gc2lnbmFsKGZhbHNlKTtcclxuICBwcml2YXRlIHN0b3BGbj86ICgpID0+IHZvaWQ7XHJcbiAgcHJpdmF0ZSByZXBsYXllcj86IGFueTtcclxuXHJcbiAgZXZlbnRzID0gdGhpcy5fZXZlbnRzLmFzUmVhZG9ubHkoKTtcclxuICBpc1JlY29yZGluZyA9IHRoaXMuX2lzUmVjb3JkaW5nLmFzUmVhZG9ubHkoKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB6b25lOiBOZ1pvbmUpIHt9XHJcblxyXG4gIGFzeW5jIHN0YXJ0UmVjb3JkaW5nKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgLy8gRHluYW1pY2FsbHkgaW1wb3J0IHJyd2ViIHRvIGF2b2lkIFNTUiBpc3N1ZXMgYW5kIHJlZHVjZSBpbml0aWFsIGJ1bmRsZVxyXG4gICAgY29uc3QgeyByZWNvcmQgfSA9IGF3YWl0IGltcG9ydCgncnJ3ZWInKTtcclxuICAgIHRoaXMuX2V2ZW50cy5zZXQoW10pO1xyXG4gICAgdGhpcy5faXNSZWNvcmRpbmcuc2V0KHRydWUpO1xyXG5cclxuICAgIHRoaXMuc3RvcEZuID0gcmVjb3JkKHtcclxuICAgICAgZW1pdDogKGV2ZW50OiBldmVudFdpdGhUaW1lKSA9PiB7XHJcbiAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9ldmVudHMudXBkYXRlKGV2ID0+IFsuLi5ldiwgZXZlbnRdKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgICAgLy8gTm90ZTogYmxvY2tTZWxlY3RvciBpcyBvbWl0dGVkIOKAlCBycndlYiAyLjAuMC1hbHBoYS40IGNhbGxzIG5vZGUubWF0Y2hlcygpXHJcbiAgICAgIC8vIG9uIFRleHROb2Rlcy9Db21tZW50Tm9kZXMgd2hpY2ggZG9uJ3QgaGF2ZSB0aGF0IG1ldGhvZCwgY3Jhc2hpbmcgdGhlIHJlY29yZGVyLlxyXG4gICAgICBtYXNrVGV4dFNlbGVjdG9yOiAnaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdJyxcclxuICAgICAgY2hlY2tvdXRFdmVyeU50aDogMjAwLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzdG9wUmVjb3JkaW5nKCk6IGV2ZW50V2l0aFRpbWVbXSB7XHJcbiAgICBpZiAodGhpcy5zdG9wRm4pIHtcclxuICAgICAgdGhpcy5zdG9wRm4oKTtcclxuICAgICAgdGhpcy5zdG9wRm4gPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9pc1JlY29yZGluZy5zZXQoZmFsc2UpO1xyXG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50cygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RXZlbnRzKCk6IGV2ZW50V2l0aFRpbWVbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZXZlbnRzKCk7XHJcbiAgfVxyXG5cclxuICBjbGVhckV2ZW50cygpOiB2b2lkIHtcclxuICAgIHRoaXMuX2V2ZW50cy5zZXQoW10pO1xyXG4gIH1cclxuXHJcbiAgaGFzRXZlbnRzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50cygpLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICAvLyDilIDilIDilIAgUmVwbGF5IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuICBhc3luYyBzdGFydFJlcGxheShjb250YWluZXI6IEhUTUxFbGVtZW50LCBldmVudHM/OiBldmVudFdpdGhUaW1lW10pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IHsgUmVwbGF5ZXIgfSA9IGF3YWl0IGltcG9ydCgncnJ3ZWInKTtcclxuICAgIGNvbnN0IGV2ZW50c1RvUmVwbGF5ID0gZXZlbnRzID8/IHRoaXMuX2V2ZW50cygpO1xyXG5cclxuICAgIGlmIChldmVudHNUb1JlcGxheS5sZW5ndGggPT09IDApIHJldHVybjtcclxuXHJcbiAgICAvLyBEZXN0cm95IHByZXZpb3VzIHJlcGxheWVyXHJcbiAgICB0aGlzLmRlc3Ryb3lSZXBsYXllcigpO1xyXG5cclxuICAgIHRoaXMucmVwbGF5ZXIgPSBuZXcgUmVwbGF5ZXIoZXZlbnRzVG9SZXBsYXksIHtcclxuICAgICAgcm9vdDogY29udGFpbmVyLFxyXG4gICAgICBza2lwSW5hY3RpdmU6IHRydWUsXHJcbiAgICAgIHNob3dXYXJuaW5nOiBmYWxzZSxcclxuICAgICAgc2hvd0RlYnVnOiBmYWxzZSxcclxuICAgICAgYmxvY2tDbGFzczogJ2RlYnVnLXBhbmVsJyxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucmVwbGF5ZXIucGxheSgpO1xyXG4gIH1cclxuXHJcbiAgcGF1c2VSZXBsYXkoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcGxheWVyPy5wYXVzZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVzdW1lUmVwbGF5KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXBsYXllcj8ucGxheSgpO1xyXG4gIH1cclxuXHJcbiAgZGVzdHJveVJlcGxheWVyKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucmVwbGF5ZXIpIHtcclxuICAgICAgdHJ5IHsgdGhpcy5yZXBsYXllci5wYXVzZSgpOyB9IGNhdGNoIHt9XHJcbiAgICAgIHRoaXMucmVwbGF5ZXIgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyDilIDilIDilIAgRXhwb3J0IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuICBleHBvcnRFdmVudHMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLl9ldmVudHMoKSwgbnVsbCwgMik7XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZEV2ZW50cyhmaWxlbmFtZSA9ICdycndlYi1zZXNzaW9uLmpzb24nKTogdm9pZCB7XHJcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3RoaXMuZXhwb3J0RXZlbnRzKCldLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyB9KTtcclxuICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgYS5ocmVmID0gdXJsO1xyXG4gICAgYS5kb3dubG9hZCA9IGZpbGVuYW1lO1xyXG4gICAgYS5jbGljaygpO1xyXG4gICAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xyXG4gIH1cclxuXHJcbiAgaW1wb3J0RXZlbnRzKGpzb246IHN0cmluZyk6IGV2ZW50V2l0aFRpbWVbXSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBldmVudHMgPSBKU09OLnBhcnNlKGpzb24pIGFzIGV2ZW50V2l0aFRpbWVbXTtcclxuICAgICAgdGhpcy5fZXZlbnRzLnNldChldmVudHMpO1xyXG4gICAgICByZXR1cm4gZXZlbnRzO1xyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ludmFsaWQgcnJ3ZWIgZXZlbnRzIEpTT04nKTtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnJ3ZWItcmVjb3JkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RlYnVnLXJlY29yZGVyL3NyYy9saWIvc2VydmljZXMvcnJ3ZWItcmVjb3JkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFJM0QsTUFBTSxPQUFPLG9CQUFvQjtJQVkvQixZQUFvQixJQUFZO1FBQVosU0FBSSxHQUFKLElBQUksQ0FBUTtRQVhoQywwREFBMEQ7UUFDbEQsaUJBQVksR0FBb0IsRUFBRSxDQUFDO1FBQzNDLHNEQUFzRDtRQUM5QyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QixpQkFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUlyQyxlQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMzQyxnQkFBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7SUFFVixDQUFDO0lBRXBDLFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWM7UUFDbEIsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1lBQ25CLElBQUksRUFBRSxDQUFDLEtBQW9CLEVBQUUsRUFBRTtnQkFDN0IsNERBQTREO2dCQUM1RCxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtvQkFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2hDLENBQUMsQ0FBQyxDQUFDO2dCQUNILGlFQUFpRTtnQkFDakUsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7Z0JBQ3JDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxHQUFHLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNqRCxDQUFDO1lBQ0gsQ0FBQztZQUNELHlFQUF5RTtZQUN6RSxzREFBc0Q7WUFDdEQsZ0JBQWdCLEVBQUUsd0JBQXdCO1lBQzFDLGdCQUFnQixFQUFFLEdBQUc7U0FDdEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztRQUMxQixDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsNEVBQTRFO0lBRTVFLEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBc0IsRUFBRSxNQUF3QjtRQUNoRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0MsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUM7UUFFbkQsSUFBSSxjQUFjLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPO1FBRXhDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV2QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDLGNBQWMsRUFBRTtZQUMzQyxJQUFJLEVBQUUsU0FBUztZQUNmLFlBQVksRUFBRSxJQUFJO1lBQ2xCLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLFVBQVUsRUFBRSxhQUFhO1NBQzFCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQztnQkFBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQUMsQ0FBQztZQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUM7WUFDdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7SUFFRCw2RUFBNkU7SUFFN0UsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsY0FBYyxDQUFDLFFBQVEsR0FBRyxvQkFBb0I7UUFDNUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7UUFDM0UsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QyxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ2IsQ0FBQyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDdEIsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1YsR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsWUFBWSxDQUFDLElBQVk7UUFDdkIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQW9CLENBQUM7WUFDbkQsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUM7WUFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3BDLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxPQUFPLENBQUMsS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7WUFDM0MsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO0lBQ0gsQ0FBQzsrR0E1SFUsb0JBQW9CO21IQUFwQixvQkFBb0IsY0FEUCxNQUFNOzs0RkFDbkIsb0JBQW9CO2tCQURoQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE5nWm9uZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB0eXBlIHsgZXZlbnRXaXRoVGltZSB9IGZyb20gJ0BycndlYi90eXBlcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgUnJ3ZWJSZWNvcmRlclNlcnZpY2Uge1xyXG4gIC8vIFBsYWluIGFycmF5IOKAlCBjaGVhcCBwdXNoLCBubyBPKG4pIHNwcmVhZCBvbiBldmVyeSBldmVudFxyXG4gIHByaXZhdGUgX2V2ZW50c0FycmF5OiBldmVudFdpdGhUaW1lW10gPSBbXTtcclxuICAvLyBTaWduYWwgb25seSBmb3IgcmVhY3RpdmUgY291bnQgZGlzcGxheSBpbiB0ZW1wbGF0ZXNcclxuICBwcml2YXRlIF9ldmVudENvdW50ID0gc2lnbmFsKDApO1xyXG4gIHByaXZhdGUgX2lzUmVjb3JkaW5nID0gc2lnbmFsKGZhbHNlKTtcclxuICBwcml2YXRlIHN0b3BGbj86ICgpID0+IHZvaWQ7XHJcbiAgcHJpdmF0ZSByZXBsYXllcj86IGFueTtcclxuXHJcbiAgZXZlbnRDb3VudCA9IHRoaXMuX2V2ZW50Q291bnQuYXNSZWFkb25seSgpO1xyXG4gIGlzUmVjb3JkaW5nID0gdGhpcy5faXNSZWNvcmRpbmcuYXNSZWFkb25seSgpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHpvbmU6IE5nWm9uZSkge31cclxuXHJcbiAgaGFzRXZlbnRzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50c0FycmF5Lmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICBnZXRFdmVudHMoKTogZXZlbnRXaXRoVGltZVtdIHtcclxuICAgIHJldHVybiB0aGlzLl9ldmVudHNBcnJheTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHN0YXJ0UmVjb3JkaW5nKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgeyByZWNvcmQgfSA9IGF3YWl0IGltcG9ydCgncnJ3ZWInKTtcclxuICAgIHRoaXMuX2V2ZW50c0FycmF5ID0gW107XHJcbiAgICB0aGlzLl9ldmVudENvdW50LnNldCgwKTtcclxuICAgIHRoaXMuX2lzUmVjb3JkaW5nLnNldCh0cnVlKTtcclxuXHJcbiAgICB0aGlzLnN0b3BGbiA9IHJlY29yZCh7XHJcbiAgICAgIGVtaXQ6IChldmVudDogZXZlbnRXaXRoVGltZSkgPT4ge1xyXG4gICAgICAgIC8vIFB1c2ggb3V0c2lkZSBBbmd1bGFyIHpvbmUg4oCUIG5vIGNoYW5nZSBkZXRlY3Rpb24gcGVyIGV2ZW50XHJcbiAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuX2V2ZW50c0FycmF5LnB1c2goZXZlbnQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8vIFVwZGF0ZSBjb3VudCBzaWduYWwgb25seSBldmVyeSAxMCBldmVudHMgdG8ga2VlcCBVSSByZXNwb25zaXZlXHJcbiAgICAgICAgY29uc3QgbGVuID0gdGhpcy5fZXZlbnRzQXJyYXkubGVuZ3RoO1xyXG4gICAgICAgIGlmIChsZW4gPT09IDEgfHwgbGVuICUgMTAgPT09IDApIHtcclxuICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4gdGhpcy5fZXZlbnRDb3VudC5zZXQobGVuKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAvLyBOb3RlOiBibG9ja1NlbGVjdG9yIG9taXR0ZWQg4oCUIHJyd2ViIDIuMC4wLWFscGhhLjQgY2FsbHMgbm9kZS5tYXRjaGVzKClcclxuICAgICAgLy8gb24gVGV4dE5vZGVzL0NvbW1lbnROb2RlcyB3aGljaCBjcmFzaCB0aGUgcmVjb3JkZXIuXHJcbiAgICAgIG1hc2tUZXh0U2VsZWN0b3I6ICdpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl0nLFxyXG4gICAgICBjaGVja291dEV2ZXJ5TnRoOiAyMDAsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN0b3BSZWNvcmRpbmcoKTogZXZlbnRXaXRoVGltZVtdIHtcclxuICAgIGlmICh0aGlzLnN0b3BGbikge1xyXG4gICAgICB0aGlzLnN0b3BGbigpO1xyXG4gICAgICB0aGlzLnN0b3BGbiA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICAgIHRoaXMuX2lzUmVjb3JkaW5nLnNldChmYWxzZSk7XHJcbiAgICB0aGlzLl9ldmVudENvdW50LnNldCh0aGlzLl9ldmVudHNBcnJheS5sZW5ndGgpO1xyXG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50c0FycmF5O1xyXG4gIH1cclxuXHJcbiAgY2xlYXJFdmVudHMoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9ldmVudHNBcnJheSA9IFtdO1xyXG4gICAgdGhpcy5fZXZlbnRDb3VudC5zZXQoMCk7XHJcbiAgfVxyXG5cclxuICAvLyDilIDilIDilIAgUmVwbGF5IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuICBhc3luYyBzdGFydFJlcGxheShjb250YWluZXI6IEhUTUxFbGVtZW50LCBldmVudHM/OiBldmVudFdpdGhUaW1lW10pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IHsgUmVwbGF5ZXIgfSA9IGF3YWl0IGltcG9ydCgncnJ3ZWInKTtcclxuICAgIGNvbnN0IGV2ZW50c1RvUmVwbGF5ID0gZXZlbnRzID8/IHRoaXMuX2V2ZW50c0FycmF5O1xyXG5cclxuICAgIGlmIChldmVudHNUb1JlcGxheS5sZW5ndGggPT09IDApIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmRlc3Ryb3lSZXBsYXllcigpO1xyXG5cclxuICAgIHRoaXMucmVwbGF5ZXIgPSBuZXcgUmVwbGF5ZXIoZXZlbnRzVG9SZXBsYXksIHtcclxuICAgICAgcm9vdDogY29udGFpbmVyLFxyXG4gICAgICBza2lwSW5hY3RpdmU6IHRydWUsXHJcbiAgICAgIHNob3dXYXJuaW5nOiBmYWxzZSxcclxuICAgICAgc2hvd0RlYnVnOiBmYWxzZSxcclxuICAgICAgYmxvY2tDbGFzczogJ2RlYnVnLXBhbmVsJyxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucmVwbGF5ZXIucGxheSgpO1xyXG4gIH1cclxuXHJcbiAgcGF1c2VSZXBsYXkoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcGxheWVyPy5wYXVzZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVzdW1lUmVwbGF5KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXBsYXllcj8ucGxheSgpO1xyXG4gIH1cclxuXHJcbiAgZGVzdHJveVJlcGxheWVyKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucmVwbGF5ZXIpIHtcclxuICAgICAgdHJ5IHsgdGhpcy5yZXBsYXllci5wYXVzZSgpOyB9IGNhdGNoIHt9XHJcbiAgICAgIHRoaXMucmVwbGF5ZXIgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyDilIDilIDilIAgRXhwb3J0IOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuICBleHBvcnRFdmVudHMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLl9ldmVudHNBcnJheSwgbnVsbCwgMik7XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZEV2ZW50cyhmaWxlbmFtZSA9ICdycndlYi1zZXNzaW9uLmpzb24nKTogdm9pZCB7XHJcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3RoaXMuZXhwb3J0RXZlbnRzKCldLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyB9KTtcclxuICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgYS5ocmVmID0gdXJsO1xyXG4gICAgYS5kb3dubG9hZCA9IGZpbGVuYW1lO1xyXG4gICAgYS5jbGljaygpO1xyXG4gICAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xyXG4gIH1cclxuXHJcbiAgaW1wb3J0RXZlbnRzKGpzb246IHN0cmluZyk6IGV2ZW50V2l0aFRpbWVbXSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBldmVudHMgPSBKU09OLnBhcnNlKGpzb24pIGFzIGV2ZW50V2l0aFRpbWVbXTtcclxuICAgICAgdGhpcy5fZXZlbnRzQXJyYXkgPSBldmVudHM7XHJcbiAgICAgIHRoaXMuX2V2ZW50Q291bnQuc2V0KGV2ZW50cy5sZW5ndGgpO1xyXG4gICAgICByZXR1cm4gZXZlbnRzO1xyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ludmFsaWQgcnJ3ZWIgZXZlbnRzIEpTT04nKTtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -70,97 +70,97 @@ export class SessionReplayComponent {
|
|
|
70
70
|
this.rrweb.destroyReplayer();
|
|
71
71
|
}
|
|
72
72
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SessionReplayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
73
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: SessionReplayComponent, isStandalone: true, selector: "app-session-replay", viewQueries: [{ propertyName: "replayContainer", first: true, predicate: ["replayContainer"], descendants: true }], ngImport: i0, template: `
|
|
74
|
-
<div class="replay-panel" data-debug-panel>
|
|
75
|
-
@if (!rrweb.hasEvents()) {
|
|
76
|
-
<div class="replay-empty">
|
|
77
|
-
<div class="replay-icon">📽️</div>
|
|
78
|
-
<p>Kein Replay verfügbar.</p>
|
|
79
|
-
<p class="hint">Starte eine Aufnahme — rrweb zeichnet den DOM parallel mit.</p>
|
|
80
|
-
</div>
|
|
81
|
-
} @else {
|
|
82
|
-
<div class="replay-info">
|
|
83
|
-
<span class="event-count">{{ rrweb.
|
|
84
|
-
</div>
|
|
85
|
-
<div class="replay-actions">
|
|
86
|
-
<button class="replay-btn primary" (click)="openOverlay()">
|
|
87
|
-
▶ Replay abspielen
|
|
88
|
-
</button>
|
|
89
|
-
<button class="replay-btn" (click)="exportSession()">
|
|
90
|
-
💾 JSON exportieren
|
|
91
|
-
</button>
|
|
92
|
-
</div>
|
|
93
|
-
<p class="replay-hint">
|
|
94
|
-
Der Replay öffnet sich als Vollbild-Overlay über der aktuellen Seite.
|
|
95
|
-
</p>
|
|
96
|
-
}
|
|
97
|
-
</div>
|
|
98
|
-
|
|
99
|
-
<!-- Fullscreen Replay Overlay -->
|
|
100
|
-
@if (overlayOpen()) {
|
|
101
|
-
<div class="replay-overlay" data-debug-panel>
|
|
102
|
-
<div class="overlay-header" data-debug-panel>
|
|
103
|
-
<span class="overlay-title">📽️ Session Replay</span>
|
|
104
|
-
<div class="overlay-controls" data-debug-panel>
|
|
105
|
-
<button class="ovl-btn" (click)="pauseResume()">
|
|
106
|
-
{{ isPlaying() ? '⏸ Pause' : '▶ Play' }}
|
|
107
|
-
</button>
|
|
108
|
-
<button class="ovl-btn" (click)="restart()">⟳ Neustart</button>
|
|
109
|
-
<button class="ovl-btn close-ovl" (click)="closeOverlay()">✕ Schließen</button>
|
|
110
|
-
</div>
|
|
111
|
-
</div>
|
|
112
|
-
<div #replayContainer class="overlay-stage" data-debug-panel></div>
|
|
113
|
-
</div>
|
|
114
|
-
}
|
|
73
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: SessionReplayComponent, isStandalone: true, selector: "app-session-replay", viewQueries: [{ propertyName: "replayContainer", first: true, predicate: ["replayContainer"], descendants: true }], ngImport: i0, template: `
|
|
74
|
+
<div class="replay-panel" data-debug-panel>
|
|
75
|
+
@if (!rrweb.hasEvents()) {
|
|
76
|
+
<div class="replay-empty">
|
|
77
|
+
<div class="replay-icon">📽️</div>
|
|
78
|
+
<p>Kein Replay verfügbar.</p>
|
|
79
|
+
<p class="hint">Starte eine Aufnahme — rrweb zeichnet den DOM parallel mit.</p>
|
|
80
|
+
</div>
|
|
81
|
+
} @else {
|
|
82
|
+
<div class="replay-info">
|
|
83
|
+
<span class="event-count">{{ rrweb.eventCount() }} Events aufgezeichnet</span>
|
|
84
|
+
</div>
|
|
85
|
+
<div class="replay-actions">
|
|
86
|
+
<button class="replay-btn primary" (click)="openOverlay()">
|
|
87
|
+
▶ Replay abspielen
|
|
88
|
+
</button>
|
|
89
|
+
<button class="replay-btn" (click)="exportSession()">
|
|
90
|
+
💾 JSON exportieren
|
|
91
|
+
</button>
|
|
92
|
+
</div>
|
|
93
|
+
<p class="replay-hint">
|
|
94
|
+
Der Replay öffnet sich als Vollbild-Overlay über der aktuellen Seite.
|
|
95
|
+
</p>
|
|
96
|
+
}
|
|
97
|
+
</div>
|
|
98
|
+
|
|
99
|
+
<!-- Fullscreen Replay Overlay -->
|
|
100
|
+
@if (overlayOpen()) {
|
|
101
|
+
<div class="replay-overlay" data-debug-panel>
|
|
102
|
+
<div class="overlay-header" data-debug-panel>
|
|
103
|
+
<span class="overlay-title">📽️ Session Replay</span>
|
|
104
|
+
<div class="overlay-controls" data-debug-panel>
|
|
105
|
+
<button class="ovl-btn" (click)="pauseResume()">
|
|
106
|
+
{{ isPlaying() ? '⏸ Pause' : '▶ Play' }}
|
|
107
|
+
</button>
|
|
108
|
+
<button class="ovl-btn" (click)="restart()">⟳ Neustart</button>
|
|
109
|
+
<button class="ovl-btn close-ovl" (click)="closeOverlay()">✕ Schließen</button>
|
|
110
|
+
</div>
|
|
111
|
+
</div>
|
|
112
|
+
<div #replayContainer class="overlay-stage" data-debug-panel></div>
|
|
113
|
+
</div>
|
|
114
|
+
}
|
|
115
115
|
`, isInline: true, styles: [".replay-panel{padding:20px 16px;display:flex;flex-direction:column;gap:14px}.replay-empty{text-align:center;padding:20px 0;color:#64748b}.replay-icon{font-size:36px;margin-bottom:8px}.replay-empty p{margin:4px 0;font-size:13px}.hint{font-size:11px;color:#475569}.replay-info{background:#1e293b;border-radius:6px;padding:8px 12px}.event-count{font-size:12px;color:#6ee7b7;font-weight:600}.replay-actions{display:flex;gap:8px}.replay-btn{background:#334155;border:none;color:#cbd5e1;padding:8px 14px;border-radius:6px;font-size:12px;font-weight:600;cursor:pointer;transition:background .15s}.replay-btn:hover{background:#475569}.replay-btn.primary{background:#1d4ed8;color:#fff}.replay-btn.primary:hover{background:#2563eb}.replay-hint{font-size:11px;color:#475569;margin:0}.replay-overlay{position:fixed;inset:0;z-index:99997;background:#000;display:flex;flex-direction:column}.overlay-header{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:#0f172a;border-bottom:1px solid #1e293b;flex-shrink:0}.overlay-title{font-size:14px;font-weight:600;color:#f1f5f9}.overlay-controls{display:flex;gap:8px}.ovl-btn{background:#1e293b;border:1px solid #334155;color:#cbd5e1;padding:5px 12px;border-radius:5px;font-size:12px;font-weight:600;cursor:pointer;transition:background .15s}.ovl-btn:hover{background:#334155}.close-ovl{color:#fca5a5}.close-ovl:hover{background:#dc262633}.overlay-stage{flex:1;overflow:hidden;position:relative;background:#f8fafc}:host ::ng-deep .replayer-wrapper{position:absolute!important;top:0!important;left:0!important;transform-origin:top left!important}:host ::ng-deep .replayer-wrapper iframe{pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
|
|
116
116
|
}
|
|
117
117
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SessionReplayComponent, decorators: [{
|
|
118
118
|
type: Component,
|
|
119
|
-
args: [{ selector: 'app-session-replay', standalone: true, imports: [CommonModule], template: `
|
|
120
|
-
<div class="replay-panel" data-debug-panel>
|
|
121
|
-
@if (!rrweb.hasEvents()) {
|
|
122
|
-
<div class="replay-empty">
|
|
123
|
-
<div class="replay-icon">📽️</div>
|
|
124
|
-
<p>Kein Replay verfügbar.</p>
|
|
125
|
-
<p class="hint">Starte eine Aufnahme — rrweb zeichnet den DOM parallel mit.</p>
|
|
126
|
-
</div>
|
|
127
|
-
} @else {
|
|
128
|
-
<div class="replay-info">
|
|
129
|
-
<span class="event-count">{{ rrweb.
|
|
130
|
-
</div>
|
|
131
|
-
<div class="replay-actions">
|
|
132
|
-
<button class="replay-btn primary" (click)="openOverlay()">
|
|
133
|
-
▶ Replay abspielen
|
|
134
|
-
</button>
|
|
135
|
-
<button class="replay-btn" (click)="exportSession()">
|
|
136
|
-
💾 JSON exportieren
|
|
137
|
-
</button>
|
|
138
|
-
</div>
|
|
139
|
-
<p class="replay-hint">
|
|
140
|
-
Der Replay öffnet sich als Vollbild-Overlay über der aktuellen Seite.
|
|
141
|
-
</p>
|
|
142
|
-
}
|
|
143
|
-
</div>
|
|
144
|
-
|
|
145
|
-
<!-- Fullscreen Replay Overlay -->
|
|
146
|
-
@if (overlayOpen()) {
|
|
147
|
-
<div class="replay-overlay" data-debug-panel>
|
|
148
|
-
<div class="overlay-header" data-debug-panel>
|
|
149
|
-
<span class="overlay-title">📽️ Session Replay</span>
|
|
150
|
-
<div class="overlay-controls" data-debug-panel>
|
|
151
|
-
<button class="ovl-btn" (click)="pauseResume()">
|
|
152
|
-
{{ isPlaying() ? '⏸ Pause' : '▶ Play' }}
|
|
153
|
-
</button>
|
|
154
|
-
<button class="ovl-btn" (click)="restart()">⟳ Neustart</button>
|
|
155
|
-
<button class="ovl-btn close-ovl" (click)="closeOverlay()">✕ Schließen</button>
|
|
156
|
-
</div>
|
|
157
|
-
</div>
|
|
158
|
-
<div #replayContainer class="overlay-stage" data-debug-panel></div>
|
|
159
|
-
</div>
|
|
160
|
-
}
|
|
119
|
+
args: [{ selector: 'app-session-replay', standalone: true, imports: [CommonModule], template: `
|
|
120
|
+
<div class="replay-panel" data-debug-panel>
|
|
121
|
+
@if (!rrweb.hasEvents()) {
|
|
122
|
+
<div class="replay-empty">
|
|
123
|
+
<div class="replay-icon">📽️</div>
|
|
124
|
+
<p>Kein Replay verfügbar.</p>
|
|
125
|
+
<p class="hint">Starte eine Aufnahme — rrweb zeichnet den DOM parallel mit.</p>
|
|
126
|
+
</div>
|
|
127
|
+
} @else {
|
|
128
|
+
<div class="replay-info">
|
|
129
|
+
<span class="event-count">{{ rrweb.eventCount() }} Events aufgezeichnet</span>
|
|
130
|
+
</div>
|
|
131
|
+
<div class="replay-actions">
|
|
132
|
+
<button class="replay-btn primary" (click)="openOverlay()">
|
|
133
|
+
▶ Replay abspielen
|
|
134
|
+
</button>
|
|
135
|
+
<button class="replay-btn" (click)="exportSession()">
|
|
136
|
+
💾 JSON exportieren
|
|
137
|
+
</button>
|
|
138
|
+
</div>
|
|
139
|
+
<p class="replay-hint">
|
|
140
|
+
Der Replay öffnet sich als Vollbild-Overlay über der aktuellen Seite.
|
|
141
|
+
</p>
|
|
142
|
+
}
|
|
143
|
+
</div>
|
|
144
|
+
|
|
145
|
+
<!-- Fullscreen Replay Overlay -->
|
|
146
|
+
@if (overlayOpen()) {
|
|
147
|
+
<div class="replay-overlay" data-debug-panel>
|
|
148
|
+
<div class="overlay-header" data-debug-panel>
|
|
149
|
+
<span class="overlay-title">📽️ Session Replay</span>
|
|
150
|
+
<div class="overlay-controls" data-debug-panel>
|
|
151
|
+
<button class="ovl-btn" (click)="pauseResume()">
|
|
152
|
+
{{ isPlaying() ? '⏸ Pause' : '▶ Play' }}
|
|
153
|
+
</button>
|
|
154
|
+
<button class="ovl-btn" (click)="restart()">⟳ Neustart</button>
|
|
155
|
+
<button class="ovl-btn close-ovl" (click)="closeOverlay()">✕ Schließen</button>
|
|
156
|
+
</div>
|
|
157
|
+
</div>
|
|
158
|
+
<div #replayContainer class="overlay-stage" data-debug-panel></div>
|
|
159
|
+
</div>
|
|
160
|
+
}
|
|
161
161
|
`, styles: [".replay-panel{padding:20px 16px;display:flex;flex-direction:column;gap:14px}.replay-empty{text-align:center;padding:20px 0;color:#64748b}.replay-icon{font-size:36px;margin-bottom:8px}.replay-empty p{margin:4px 0;font-size:13px}.hint{font-size:11px;color:#475569}.replay-info{background:#1e293b;border-radius:6px;padding:8px 12px}.event-count{font-size:12px;color:#6ee7b7;font-weight:600}.replay-actions{display:flex;gap:8px}.replay-btn{background:#334155;border:none;color:#cbd5e1;padding:8px 14px;border-radius:6px;font-size:12px;font-weight:600;cursor:pointer;transition:background .15s}.replay-btn:hover{background:#475569}.replay-btn.primary{background:#1d4ed8;color:#fff}.replay-btn.primary:hover{background:#2563eb}.replay-hint{font-size:11px;color:#475569;margin:0}.replay-overlay{position:fixed;inset:0;z-index:99997;background:#000;display:flex;flex-direction:column}.overlay-header{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:#0f172a;border-bottom:1px solid #1e293b;flex-shrink:0}.overlay-title{font-size:14px;font-weight:600;color:#f1f5f9}.overlay-controls{display:flex;gap:8px}.ovl-btn{background:#1e293b;border:1px solid #334155;color:#cbd5e1;padding:5px 12px;border-radius:5px;font-size:12px;font-weight:600;cursor:pointer;transition:background .15s}.ovl-btn:hover{background:#334155}.close-ovl{color:#fca5a5}.close-ovl:hover{background:#dc262633}.overlay-stage{flex:1;overflow:hidden;position:relative;background:#f8fafc}:host ::ng-deep .replayer-wrapper{position:absolute!important;top:0!important;left:0!important;transform-origin:top left!important}:host ::ng-deep .replayer-wrapper iframe{pointer-events:none}\n"] }]
|
|
162
162
|
}], propDecorators: { replayContainer: [{
|
|
163
163
|
type: ViewChild,
|
|
164
164
|
args: ['replayContainer']
|
|
165
165
|
}] } });
|
|
166
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1yZXBsYXkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVidWctcmVjb3JkZXIvc3JjL2xpYi9zZXNzaW9uLXJlcGxheS9zZXNzaW9uLXJlcGxheS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFBYyxTQUFTLEVBQWEsTUFBTSxFQUFFLE1BQU0sR0FDNUQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQWlKMUUsTUFBTSxPQUFPLHNCQUFzQjtJQS9JbkM7UUFrSkUsVUFBSyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3JDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLGNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7S0F3RTNCO0lBdEVDLEtBQUssQ0FBQyxXQUFXO1FBQ2YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIseUNBQXlDO1FBQ3pDLE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUMsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVztRQUNmLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTztRQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDN0IsTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMxQyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVPLEtBQUssQ0FBQyxTQUFTO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZTtZQUFFLE9BQU87UUFDbEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUM7UUFFckQsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV4QywyQ0FBMkM7UUFDM0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRU8sYUFBYSxDQUFDLFNBQXNCO1FBQzFDLGdGQUFnRjtRQUNoRixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBZ0IsQ0FBQztZQUM1RSxJQUFJLENBQUMsT0FBTztnQkFBRSxPQUFPO1lBRXJCLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFzQixDQUFDO1lBQ3BFLE1BQU0sS0FBSyxHQUFHLE1BQU0sRUFBRSxXQUFXLElBQUssT0FBTyxDQUFDLFdBQVcsSUFBSyxJQUFJLENBQUM7WUFDbkUsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLFlBQVksSUFBSSxPQUFPLENBQUMsWUFBWSxJQUFJLEdBQUcsQ0FBQztZQUNsRSxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDO1lBQ3JDLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUM7WUFFdEMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUs7Z0JBQUUsT0FBTztZQUVuRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxLQUFLLEVBQUUsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDO1lBQ3ZELE1BQU0sT0FBTyxHQUFHLENBQUMsTUFBTSxHQUFHLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDN0MsTUFBTSxPQUFPLEdBQUcsQ0FBQyxNQUFNLEdBQUcsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUU3QyxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxhQUFhLE9BQU8sT0FBTyxPQUFPLGFBQWEsS0FBSyxHQUFHLENBQUM7UUFDcEYsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQy9CLENBQUM7K0dBNUVVLHNCQUFzQjttR0FBdEIsc0JBQXNCLGtNQTNJdkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBDVCxzdERBM0NTLFlBQVk7OzRGQTRJWCxzQkFBc0I7a0JBL0lsQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsWUFDYjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMENUOzhCQWtHNkIsZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgT25EZXN0cm95LCBpbmplY3QsIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUnJ3ZWJSZWNvcmRlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9ycndlYi1yZWNvcmRlci5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXNlc3Npb24tcmVwbGF5JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInJlcGxheS1wYW5lbFwiIGRhdGEtZGVidWctcGFuZWw+XG4gICAgICBAaWYgKCFycndlYi5oYXNFdmVudHMoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicmVwbGF5LWVtcHR5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlcGxheS1pY29uXCI+8J+Tve+4jzwvZGl2PlxuICAgICAgICAgIDxwPktlaW4gUmVwbGF5IHZlcmbDvGdiYXIuPC9wPlxuICAgICAgICAgIDxwIGNsYXNzPVwiaGludFwiPlN0YXJ0ZSBlaW5lIEF1Zm5haG1lIOKAlCBycndlYiB6ZWljaG5ldCBkZW4gRE9NIHBhcmFsbGVsIG1pdC48L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZXBsYXktaW5mb1wiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXZlbnQtY291bnRcIj57eyBycndlYi5ldmVudHMoKS5sZW5ndGggfX0gRXZlbnRzIGF1ZmdlemVpY2huZXQ8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVwbGF5LWFjdGlvbnNcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicmVwbGF5LWJ0biBwcmltYXJ5XCIgKGNsaWNrKT1cIm9wZW5PdmVybGF5KClcIj5cbiAgICAgICAgICAgIOKWtiBSZXBsYXkgYWJzcGllbGVuXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlcGxheS1idG5cIiAoY2xpY2spPVwiZXhwb3J0U2Vzc2lvbigpXCI+XG4gICAgICAgICAgICDwn5K+IEpTT04gZXhwb3J0aWVyZW5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxwIGNsYXNzPVwicmVwbGF5LWhpbnRcIj5cbiAgICAgICAgICBEZXIgUmVwbGF5IMO2ZmZuZXQgc2ljaCBhbHMgVm9sbGJpbGQtT3ZlcmxheSDDvGJlciBkZXIgYWt0dWVsbGVuIFNlaXRlLlxuICAgICAgICA8L3A+XG4gICAgICB9XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEZ1bGxzY3JlZW4gUmVwbGF5IE92ZXJsYXkgLS0+XG4gICAgQGlmIChvdmVybGF5T3BlbigpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwicmVwbGF5LW92ZXJsYXlcIiBkYXRhLWRlYnVnLXBhbmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheS1oZWFkZXJcIiBkYXRhLWRlYnVnLXBhbmVsPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3ZlcmxheS10aXRsZVwiPvCfk73vuI8gU2Vzc2lvbiBSZXBsYXk8L3NwYW4+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsYXktY29udHJvbHNcIiBkYXRhLWRlYnVnLXBhbmVsPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm92bC1idG5cIiAoY2xpY2spPVwicGF1c2VSZXN1bWUoKVwiPlxuICAgICAgICAgICAgICB7eyBpc1BsYXlpbmcoKSA/ICfij7ggUGF1c2UnIDogJ+KWtiBQbGF5JyB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwib3ZsLWJ0blwiIChjbGljayk9XCJyZXN0YXJ0KClcIj7in7MgTmV1c3RhcnQ8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJvdmwtYnRuIGNsb3NlLW92bFwiIChjbGljayk9XCJjbG9zZU92ZXJsYXkoKVwiPuKclSBTY2hsaWXDn2VuPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICNyZXBsYXlDb250YWluZXIgY2xhc3M9XCJvdmVybGF5LXN0YWdlXCIgZGF0YS1kZWJ1Zy1wYW5lbD48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgYCxcbiAgc3R5bGVzOiBbYFxuICAgIC5yZXBsYXktcGFuZWwge1xuICAgICAgcGFkZGluZzogMjBweCAxNnB4O1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBnYXA6IDE0cHg7XG4gICAgfVxuXG4gICAgLnJlcGxheS1lbXB0eSB7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBwYWRkaW5nOiAyMHB4IDA7XG4gICAgICBjb2xvcjogIzY0NzQ4YjtcbiAgICB9XG4gICAgLnJlcGxheS1pY29uIHsgZm9udC1zaXplOiAzNnB4OyBtYXJnaW4tYm90dG9tOiA4cHg7IH1cbiAgICAucmVwbGF5LWVtcHR5IHAgeyBtYXJnaW46IDRweCAwOyBmb250LXNpemU6IDEzcHg7IH1cbiAgICAuaGludCB7IGZvbnQtc2l6ZTogMTFweDsgY29sb3I6ICM0NzU1Njk7IH1cblxuICAgIC5yZXBsYXktaW5mbyB7XG4gICAgICBiYWNrZ3JvdW5kOiAjMWUyOTNiO1xuICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgcGFkZGluZzogOHB4IDEycHg7XG4gICAgfVxuICAgIC5ldmVudC1jb3VudCB7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6ICM2ZWU3Yjc7IGZvbnQtd2VpZ2h0OiA2MDA7IH1cblxuICAgIC5yZXBsYXktYWN0aW9ucyB7IGRpc3BsYXk6IGZsZXg7IGdhcDogOHB4OyB9XG4gICAgLnJlcGxheS1idG4ge1xuICAgICAgYmFja2dyb3VuZDogIzMzNDE1NTtcbiAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIGNvbG9yOiAjY2JkNWUxO1xuICAgICAgcGFkZGluZzogOHB4IDE0cHg7XG4gICAgICBib3JkZXItcmFkaXVzOiA2cHg7XG4gICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cztcbiAgICB9XG4gICAgLnJlcGxheS1idG46aG92ZXIgeyBiYWNrZ3JvdW5kOiAjNDc1NTY5OyB9XG4gICAgLnJlcGxheS1idG4ucHJpbWFyeSB7IGJhY2tncm91bmQ6ICMxZDRlZDg7IGNvbG9yOiAjZmZmOyB9XG4gICAgLnJlcGxheS1idG4ucHJpbWFyeTpob3ZlciB7IGJhY2tncm91bmQ6ICMyNTYzZWI7IH1cblxuICAgIC5yZXBsYXktaGludCB7IGZvbnQtc2l6ZTogMTFweDsgY29sb3I6ICM0NzU1Njk7IG1hcmdpbjogMDsgfVxuXG4gICAgLyog4pSA4pSAIEZ1bGxzY3JlZW4gT3ZlcmxheSDilIDilIAgKi9cbiAgICAucmVwbGF5LW92ZXJsYXkge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgaW5zZXQ6IDA7XG4gICAgICB6LWluZGV4OiA5OTk5NztcbiAgICAgIGJhY2tncm91bmQ6ICMwMDA7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICB9XG4gICAgLm92ZXJsYXktaGVhZGVyIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgcGFkZGluZzogMTBweCAxNnB4O1xuICAgICAgYmFja2dyb3VuZDogIzBmMTcyYTtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjMWUyOTNiO1xuICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxuICAgIC5vdmVybGF5LXRpdGxlIHsgZm9udC1zaXplOiAxNHB4OyBmb250LXdlaWdodDogNjAwOyBjb2xvcjogI2YxZjVmOTsgfVxuICAgIC5vdmVybGF5LWNvbnRyb2xzIHsgZGlzcGxheTogZmxleDsgZ2FwOiA4cHg7IH1cbiAgICAub3ZsLWJ0biB7XG4gICAgICBiYWNrZ3JvdW5kOiAjMWUyOTNiO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgIzMzNDE1NTtcbiAgICAgIGNvbG9yOiAjY2JkNWUxO1xuICAgICAgcGFkZGluZzogNXB4IDEycHg7XG4gICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cztcbiAgICB9XG4gICAgLm92bC1idG46aG92ZXIgeyBiYWNrZ3JvdW5kOiAjMzM0MTU1OyB9XG4gICAgLmNsb3NlLW92bCB7IGNvbG9yOiAjZmNhNWE1OyB9XG4gICAgLmNsb3NlLW92bDpob3ZlciB7IGJhY2tncm91bmQ6IHJnYmEoMjIwLDM4LDM4LDAuMik7IH1cblxuICAgIC5vdmVybGF5LXN0YWdlIHtcbiAgICAgIGZsZXg6IDE7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgYmFja2dyb3VuZDogI2Y4ZmFmYztcbiAgICB9XG5cbiAgICAvKiBTY2FsZSB0aGUgcnJ3ZWIgaWZyYW1lIHRvIGZpbGwgYXZhaWxhYmxlIHNwYWNlICovXG4gICAgOmhvc3QgOjpuZy1kZWVwIC5yZXBsYXllci13cmFwcGVyIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xuICAgICAgdG9wOiAwICFpbXBvcnRhbnQ7XG4gICAgICBsZWZ0OiAwICFpbXBvcnRhbnQ7XG4gICAgICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgbGVmdCAhaW1wb3J0YW50O1xuICAgIH1cbiAgICA6aG9zdCA6Om5nLWRlZXAgLnJlcGxheWVyLXdyYXBwZXIgaWZyYW1lIHtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cbiAgYF0sXG59KVxuZXhwb3J0IGNsYXNzIFNlc3Npb25SZXBsYXlDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKCdyZXBsYXlDb250YWluZXInKSByZXBsYXlDb250YWluZXI/OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICBycndlYiA9IGluamVjdChScndlYlJlY29yZGVyU2VydmljZSk7XG4gIG92ZXJsYXlPcGVuID0gc2lnbmFsKGZhbHNlKTtcbiAgaXNQbGF5aW5nID0gc2lnbmFsKGZhbHNlKTtcblxuICBhc3luYyBvcGVuT3ZlcmxheSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLm92ZXJsYXlPcGVuLnNldCh0cnVlKTtcbiAgICB0aGlzLmlzUGxheWluZy5zZXQoZmFsc2UpO1xuICAgIC8vIFdhaXQgZm9yIHRoZSBET00gdG8gcmVuZGVyIHRoZSBvdmVybGF5XG4gICAgYXdhaXQgbmV3IFByb21pc2UociA9PiBzZXRUaW1lb3V0KHIsIDUwKSk7XG4gICAgYXdhaXQgdGhpcy5zdGFydFBsYXkoKTtcbiAgfVxuXG4gIGNsb3NlT3ZlcmxheSgpOiB2b2lkIHtcbiAgICB0aGlzLnJyd2ViLmRlc3Ryb3lSZXBsYXllcigpO1xuICAgIHRoaXMub3ZlcmxheU9wZW4uc2V0KGZhbHNlKTtcbiAgICB0aGlzLmlzUGxheWluZy5zZXQoZmFsc2UpO1xuICB9XG5cbiAgYXN5bmMgcGF1c2VSZXN1bWUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaXNQbGF5aW5nKCkpIHtcbiAgICAgIHRoaXMucnJ3ZWIucGF1c2VSZXBsYXkoKTtcbiAgICAgIHRoaXMuaXNQbGF5aW5nLnNldChmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucnJ3ZWIucmVzdW1lUmVwbGF5KCk7XG4gICAgICB0aGlzLmlzUGxheWluZy5zZXQodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcmVzdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnJyd2ViLmRlc3Ryb3lSZXBsYXllcigpO1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKHIgPT4gc2V0VGltZW91dChyLCA1MCkpO1xuICAgIGF3YWl0IHRoaXMuc3RhcnRQbGF5KCk7XG4gIH1cblxuICBleHBvcnRTZXNzaW9uKCk6IHZvaWQge1xuICAgIHRoaXMucnJ3ZWIuZG93bmxvYWRFdmVudHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc3RhcnRQbGF5KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5yZXBsYXlDb250YWluZXIpIHJldHVybjtcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLnJlcGxheUNvbnRhaW5lci5uYXRpdmVFbGVtZW50O1xuXG4gICAgYXdhaXQgdGhpcy5ycndlYi5zdGFydFJlcGxheShjb250YWluZXIpO1xuXG4gICAgLy8gU2NhbGUgaWZyYW1lIHRvIGZpbGwgdGhlIHN0YWdlIGNvbnRhaW5lclxuICAgIHRoaXMuc2NhbGVSZXBsYXllcihjb250YWluZXIpO1xuICAgIHRoaXMuaXNQbGF5aW5nLnNldCh0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgc2NhbGVSZXBsYXllcihjb250YWluZXI6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgLy8gcnJ3ZWIgaW5qZWN0cyAucmVwbGF5ZXItd3JhcHBlciB3aXRoIGFuIGlmcmFtZSBzaXplZCB0byB0aGUgcmVjb3JkZWQgdmlld3BvcnRcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IHdyYXBwZXIgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignLnJlcGxheWVyLXdyYXBwZXInKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGlmICghd3JhcHBlcikgcmV0dXJuO1xuXG4gICAgICBjb25zdCBpZnJhbWUgPSB3cmFwcGVyLnF1ZXJ5U2VsZWN0b3IoJ2lmcmFtZScpIGFzIEhUTUxJRnJhbWVFbGVtZW50O1xuICAgICAgY29uc3Qgd3JhcFcgPSBpZnJhbWU/Lm9mZnNldFdpZHRoICB8fCB3cmFwcGVyLm9mZnNldFdpZHRoICB8fCAxMjgwO1xuICAgICAgY29uc3Qgd3JhcEggPSBpZnJhbWU/Lm9mZnNldEhlaWdodCB8fCB3cmFwcGVyLm9mZnNldEhlaWdodCB8fCA3MjA7XG4gICAgICBjb25zdCBzdGFnZVcgPSBjb250YWluZXIub2Zmc2V0V2lkdGg7XG4gICAgICBjb25zdCBzdGFnZUggPSBjb250YWluZXIub2Zmc2V0SGVpZ2h0O1xuXG4gICAgICBpZiAoIXN0YWdlVyB8fCAhc3RhZ2VIIHx8ICF3cmFwVyB8fCAhd3JhcEgpIHJldHVybjtcblxuICAgICAgY29uc3Qgc2NhbGUgPSBNYXRoLm1pbihzdGFnZVcgLyB3cmFwVywgc3RhZ2VIIC8gd3JhcEgpO1xuICAgICAgY29uc3Qgb2Zmc2V0WCA9IChzdGFnZVcgLSB3cmFwVyAqIHNjYWxlKSAvIDI7XG4gICAgICBjb25zdCBvZmZzZXRZID0gKHN0YWdlSCAtIHdyYXBIICogc2NhbGUpIC8gMjtcblxuICAgICAgd3JhcHBlci5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlKCR7b2Zmc2V0WH1weCwgJHtvZmZzZXRZfXB4KSBzY2FsZSgke3NjYWxlfSlgO1xuICAgIH0sIDMwMCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJyd2ViLmRlc3Ryb3lSZXBsYXllcigpO1xuICB9XG59XG4iXX0=
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1yZXBsYXkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVidWctcmVjb3JkZXIvc3JjL2xpYi9zZXNzaW9uLXJlcGxheS9zZXNzaW9uLXJlcGxheS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFBYyxTQUFTLEVBQWEsTUFBTSxFQUFFLE1BQU0sR0FDNUQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQWlKMUUsTUFBTSxPQUFPLHNCQUFzQjtJQS9JbkM7UUFrSkUsVUFBSyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3JDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLGNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7S0F3RTNCO0lBdEVDLEtBQUssQ0FBQyxXQUFXO1FBQ2YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIseUNBQXlDO1FBQ3pDLE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUMsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FB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R0FBdEIsc0JBQXNCLGtNQTNJdkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBDVCxzdERBM0NTLFlBQVk7OzRGQTRJWCxzQkFBc0I7a0JBL0lsQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsWUFDYjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMENUOzhCQWtHNkIsZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBPbkRlc3Ryb3ksIGluamVjdCwgc2lnbmFsLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBScndlYlJlY29yZGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Jyd2ViLXJlY29yZGVyLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtc2Vzc2lvbi1yZXBsYXknLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJyZXBsYXktcGFuZWxcIiBkYXRhLWRlYnVnLXBhbmVsPlxyXG4gICAgICBAaWYgKCFycndlYi5oYXNFdmVudHMoKSkge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZXBsYXktZW1wdHlcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXBsYXktaWNvblwiPvCfk73vuI88L2Rpdj5cclxuICAgICAgICAgIDxwPktlaW4gUmVwbGF5IHZlcmbDvGdiYXIuPC9wPlxyXG4gICAgICAgICAgPHAgY2xhc3M9XCJoaW50XCI+U3RhcnRlIGVpbmUgQXVmbmFobWUg4oCUIHJyd2ViIHplaWNobmV0IGRlbiBET00gcGFyYWxsZWwgbWl0LjwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJlcGxheS1pbmZvXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImV2ZW50LWNvdW50XCI+e3sgcnJ3ZWIuZXZlbnRDb3VudCgpIH19IEV2ZW50cyBhdWZnZXplaWNobmV0PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZXBsYXktYWN0aW9uc1wiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlcGxheS1idG4gcHJpbWFyeVwiIChjbGljayk9XCJvcGVuT3ZlcmxheSgpXCI+XHJcbiAgICAgICAgICAgIOKWtiBSZXBsYXkgYWJzcGllbGVuXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJyZXBsYXktYnRuXCIgKGNsaWNrKT1cImV4cG9ydFNlc3Npb24oKVwiPlxyXG4gICAgICAgICAgICDwn5K+IEpTT04gZXhwb3J0aWVyZW5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxwIGNsYXNzPVwicmVwbGF5LWhpbnRcIj5cclxuICAgICAgICAgIERlciBSZXBsYXkgw7ZmZm5ldCBzaWNoIGFscyBWb2xsYmlsZC1PdmVybGF5IMO8YmVyIGRlciBha3R1ZWxsZW4gU2VpdGUuXHJcbiAgICAgICAgPC9wPlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIEZ1bGxzY3JlZW4gUmVwbGF5IE92ZXJsYXkgLS0+XHJcbiAgICBAaWYgKG92ZXJsYXlPcGVuKCkpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cInJlcGxheS1vdmVybGF5XCIgZGF0YS1kZWJ1Zy1wYW5lbD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheS1oZWFkZXJcIiBkYXRhLWRlYnVnLXBhbmVsPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJvdmVybGF5LXRpdGxlXCI+8J+Tve+4jyBTZXNzaW9uIFJlcGxheTwvc3Bhbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdmVybGF5LWNvbnRyb2xzXCIgZGF0YS1kZWJ1Zy1wYW5lbD5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm92bC1idG5cIiAoY2xpY2spPVwicGF1c2VSZXN1bWUoKVwiPlxyXG4gICAgICAgICAgICAgIHt7IGlzUGxheWluZygpID8gJ+KPuCBQYXVzZScgOiAn4pa2IFBsYXknIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwib3ZsLWJ0blwiIChjbGljayk9XCJyZXN0YXJ0KClcIj7in7MgTmV1c3RhcnQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm92bC1idG4gY2xvc2Utb3ZsXCIgKGNsaWNrKT1cImNsb3NlT3ZlcmxheSgpXCI+4pyVIFNjaGxpZcOfZW48L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgI3JlcGxheUNvbnRhaW5lciBjbGFzcz1cIm92ZXJsYXktc3RhZ2VcIiBkYXRhLWRlYnVnLXBhbmVsPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICBgLFxyXG4gIHN0eWxlczogW2BcclxuICAgIC5yZXBsYXktcGFuZWwge1xyXG4gICAgICBwYWRkaW5nOiAyMHB4IDE2cHg7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgIGdhcDogMTRweDtcclxuICAgIH1cclxuXHJcbiAgICAucmVwbGF5LWVtcHR5IHtcclxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICBwYWRkaW5nOiAyMHB4IDA7XHJcbiAgICAgIGNvbG9yOiAjNjQ3NDhiO1xyXG4gICAgfVxyXG4gICAgLnJlcGxheS1pY29uIHsgZm9udC1zaXplOiAzNnB4OyBtYXJnaW4tYm90dG9tOiA4cHg7IH1cclxuICAgIC5yZXBsYXktZW1wdHkgcCB7IG1hcmdpbjogNHB4IDA7IGZvbnQtc2l6ZTogMTNweDsgfVxyXG4gICAgLmhpbnQgeyBmb250LXNpemU6IDExcHg7IGNvbG9yOiAjNDc1NTY5OyB9XHJcblxyXG4gICAgLnJlcGxheS1pbmZvIHtcclxuICAgICAgYmFja2dyb3VuZDogIzFlMjkzYjtcclxuICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xyXG4gICAgICBwYWRkaW5nOiA4cHggMTJweDtcclxuICAgIH1cclxuICAgIC5ldmVudC1jb3VudCB7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6ICM2ZWU3Yjc7IGZvbnQtd2VpZ2h0OiA2MDA7IH1cclxuXHJcbiAgICAucmVwbGF5LWFjdGlvbnMgeyBkaXNwbGF5OiBmbGV4OyBnYXA6IDhweDsgfVxyXG4gICAgLnJlcGxheS1idG4ge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAjMzM0MTU1O1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgIGNvbG9yOiAjY2JkNWUxO1xyXG4gICAgICBwYWRkaW5nOiA4cHggMTRweDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xyXG4gICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cztcclxuICAgIH1cclxuICAgIC5yZXBsYXktYnRuOmhvdmVyIHsgYmFja2dyb3VuZDogIzQ3NTU2OTsgfVxyXG4gICAgLnJlcGxheS1idG4ucHJpbWFyeSB7IGJhY2tncm91bmQ6ICMxZDRlZDg7IGNvbG9yOiAjZmZmOyB9XHJcbiAgICAucmVwbGF5LWJ0bi5wcmltYXJ5OmhvdmVyIHsgYmFja2dyb3VuZDogIzI1NjNlYjsgfVxyXG5cclxuICAgIC5yZXBsYXktaGludCB7IGZvbnQtc2l6ZTogMTFweDsgY29sb3I6ICM0NzU1Njk7IG1hcmdpbjogMDsgfVxyXG5cclxuICAgIC8qIOKUgOKUgCBGdWxsc2NyZWVuIE92ZXJsYXkg4pSA4pSAICovXHJcbiAgICAucmVwbGF5LW92ZXJsYXkge1xyXG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICAgIGluc2V0OiAwO1xyXG4gICAgICB6LWluZGV4OiA5OTk5NztcclxuICAgICAgYmFja2dyb3VuZDogIzAwMDtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIH1cclxuICAgIC5vdmVybGF5LWhlYWRlciB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgICAgcGFkZGluZzogMTBweCAxNnB4O1xyXG4gICAgICBiYWNrZ3JvdW5kOiAjMGYxNzJhO1xyXG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzFlMjkzYjtcclxuICAgICAgZmxleC1zaHJpbms6IDA7XHJcbiAgICB9XHJcbiAgICAub3ZlcmxheS10aXRsZSB7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDYwMDsgY29sb3I6ICNmMWY1Zjk7IH1cclxuICAgIC5vdmVybGF5LWNvbnRyb2xzIHsgZGlzcGxheTogZmxleDsgZ2FwOiA4cHg7IH1cclxuICAgIC5vdmwtYnRuIHtcclxuICAgICAgYmFja2dyb3VuZDogIzFlMjkzYjtcclxuICAgICAgYm9yZGVyOiAxcHggc29saWQgIzMzNDE1NTtcclxuICAgICAgY29sb3I6ICNjYmQ1ZTE7XHJcbiAgICAgIHBhZGRpbmc6IDVweCAxMnB4O1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTVzO1xyXG4gICAgfVxyXG4gICAgLm92bC1idG46aG92ZXIgeyBiYWNrZ3JvdW5kOiAjMzM0MTU1OyB9XHJcbiAgICAuY2xvc2Utb3ZsIHsgY29sb3I6ICNmY2E1YTU7IH1cclxuICAgIC5jbG9zZS1vdmw6aG92ZXIgeyBiYWNrZ3JvdW5kOiByZ2JhKDIyMCwzOCwzOCwwLjIpOyB9XHJcblxyXG4gICAgLm92ZXJsYXktc3RhZ2Uge1xyXG4gICAgICBmbGV4OiAxO1xyXG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIGJhY2tncm91bmQ6ICNmOGZhZmM7XHJcbiAgICB9XHJcblxyXG4gICAgLyogU2NhbGUgdGhlIHJyd2ViIGlmcmFtZSB0byBmaWxsIGF2YWlsYWJsZSBzcGFjZSAqL1xyXG4gICAgOmhvc3QgOjpuZy1kZWVwIC5yZXBsYXllci13cmFwcGVyIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XHJcbiAgICAgIHRvcDogMCAhaW1wb3J0YW50O1xyXG4gICAgICBsZWZ0OiAwICFpbXBvcnRhbnQ7XHJcbiAgICAgIHRyYW5zZm9ybS1vcmlnaW46IHRvcCBsZWZ0ICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbiAgICA6aG9zdCA6Om5nLWRlZXAgLnJlcGxheWVyLXdyYXBwZXIgaWZyYW1lIHtcclxuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XHJcbiAgICB9XHJcbiAgYF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZXNzaW9uUmVwbGF5Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKCdyZXBsYXlDb250YWluZXInKSByZXBsYXlDb250YWluZXI/OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHJcbiAgcnJ3ZWIgPSBpbmplY3QoUnJ3ZWJSZWNvcmRlclNlcnZpY2UpO1xyXG4gIG92ZXJsYXlPcGVuID0gc2lnbmFsKGZhbHNlKTtcclxuICBpc1BsYXlpbmcgPSBzaWduYWwoZmFsc2UpO1xyXG5cclxuICBhc3luYyBvcGVuT3ZlcmxheSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMub3ZlcmxheU9wZW4uc2V0KHRydWUpO1xyXG4gICAgdGhpcy5pc1BsYXlpbmcuc2V0KGZhbHNlKTtcclxuICAgIC8vIFdhaXQgZm9yIHRoZSBET00gdG8gcmVuZGVyIHRoZSBvdmVybGF5XHJcbiAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgNTApKTtcclxuICAgIGF3YWl0IHRoaXMuc3RhcnRQbGF5KCk7XHJcbiAgfVxyXG5cclxuICBjbG9zZU92ZXJsYXkoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJyd2ViLmRlc3Ryb3lSZXBsYXllcigpO1xyXG4gICAgdGhpcy5vdmVybGF5T3Blbi5zZXQoZmFsc2UpO1xyXG4gICAgdGhpcy5pc1BsYXlpbmcuc2V0KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHBhdXNlUmVzdW1lKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKHRoaXMuaXNQbGF5aW5nKCkpIHtcclxuICAgICAgdGhpcy5ycndlYi5wYXVzZVJlcGxheSgpO1xyXG4gICAgICB0aGlzLmlzUGxheWluZy5zZXQoZmFsc2UpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5ycndlYi5yZXN1bWVSZXBsYXkoKTtcclxuICAgICAgdGhpcy5pc1BsYXlpbmcuc2V0KHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgcmVzdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMucnJ3ZWIuZGVzdHJveVJlcGxheWVyKCk7XHJcbiAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgNTApKTtcclxuICAgIGF3YWl0IHRoaXMuc3RhcnRQbGF5KCk7XHJcbiAgfVxyXG5cclxuICBleHBvcnRTZXNzaW9uKCk6IHZvaWQge1xyXG4gICAgdGhpcy5ycndlYi5kb3dubG9hZEV2ZW50cygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBzdGFydFBsYXkoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoIXRoaXMucmVwbGF5Q29udGFpbmVyKSByZXR1cm47XHJcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLnJlcGxheUNvbnRhaW5lci5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgIGF3YWl0IHRoaXMucnJ3ZWIuc3RhcnRSZXBsYXkoY29udGFpbmVyKTtcclxuXHJcbiAgICAvLyBTY2FsZSBpZnJhbWUgdG8gZmlsbCB0aGUgc3RhZ2UgY29udGFpbmVyXHJcbiAgICB0aGlzLnNjYWxlUmVwbGF5ZXIoY29udGFpbmVyKTtcclxuICAgIHRoaXMuaXNQbGF5aW5nLnNldCh0cnVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2NhbGVSZXBsYXllcihjb250YWluZXI6IEhUTUxFbGVtZW50KTogdm9pZCB7XHJcbiAgICAvLyBycndlYiBpbmplY3RzIC5yZXBsYXllci13cmFwcGVyIHdpdGggYW4gaWZyYW1lIHNpemVkIHRvIHRoZSByZWNvcmRlZCB2aWV3cG9ydFxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHdyYXBwZXIgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignLnJlcGxheWVyLXdyYXBwZXInKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgaWYgKCF3cmFwcGVyKSByZXR1cm47XHJcblxyXG4gICAgICBjb25zdCBpZnJhbWUgPSB3cmFwcGVyLnF1ZXJ5U2VsZWN0b3IoJ2lmcmFtZScpIGFzIEhUTUxJRnJhbWVFbGVtZW50O1xyXG4gICAgICBjb25zdCB3cmFwVyA9IGlmcmFtZT8ub2Zmc2V0V2lkdGggIHx8IHdyYXBwZXIub2Zmc2V0V2lkdGggIHx8IDEyODA7XHJcbiAgICAgIGNvbnN0IHdyYXBIID0gaWZyYW1lPy5vZmZzZXRIZWlnaHQgfHwgd3JhcHBlci5vZmZzZXRIZWlnaHQgfHwgNzIwO1xyXG4gICAgICBjb25zdCBzdGFnZVcgPSBjb250YWluZXIub2Zmc2V0V2lkdGg7XHJcbiAgICAgIGNvbnN0IHN0YWdlSCA9IGNvbnRhaW5lci5vZmZzZXRIZWlnaHQ7XHJcblxyXG4gICAgICBpZiAoIXN0YWdlVyB8fCAhc3RhZ2VIIHx8ICF3cmFwVyB8fCAhd3JhcEgpIHJldHVybjtcclxuXHJcbiAgICAgIGNvbnN0IHNjYWxlID0gTWF0aC5taW4oc3RhZ2VXIC8gd3JhcFcsIHN0YWdlSCAvIHdyYXBIKTtcclxuICAgICAgY29uc3Qgb2Zmc2V0WCA9IChzdGFnZVcgLSB3cmFwVyAqIHNjYWxlKSAvIDI7XHJcbiAgICAgIGNvbnN0IG9mZnNldFkgPSAoc3RhZ2VIIC0gd3JhcEggKiBzY2FsZSkgLyAyO1xyXG5cclxuICAgICAgd3JhcHBlci5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlKCR7b2Zmc2V0WH1weCwgJHtvZmZzZXRZfXB4KSBzY2FsZSgke3NjYWxlfSlgO1xyXG4gICAgfSwgMzAwKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5ycndlYi5kZXN0cm95UmVwbGF5ZXIoKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -20,86 +20,86 @@ export class SettingsDialogComponent {
|
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SettingsDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SettingsDialogComponent, isStandalone: true, selector: "app-settings-dialog", outputs: { close: "close" }, ngImport: i0, template: `
|
|
24
|
-
<div class="overlay" data-debug-panel (click)="onOverlayClick($event)">
|
|
25
|
-
<div class="dialog" data-debug-panel>
|
|
26
|
-
<div class="dialog-header">
|
|
27
|
-
<h2>⚙️ Einstellungen</h2>
|
|
28
|
-
<button class="close-btn" (click)="close.emit()">✕</button>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
<div class="dialog-body">
|
|
32
|
-
<div class="field-group">
|
|
33
|
-
<label>KI Webhook-URL</label>
|
|
34
|
-
<input
|
|
35
|
-
data-debug-panel
|
|
36
|
-
class="field-input"
|
|
37
|
-
type="url"
|
|
38
|
-
[(ngModel)]="localUrl"
|
|
39
|
-
placeholder="https://deine-ki-api.de/generate"
|
|
40
|
-
/>
|
|
41
|
-
<p class="field-hint">
|
|
42
|
-
Die aufgezeichnete Session wird als JSON per POST an diese URL gesendet.
|
|
43
|
-
Die Antwort wird als Cypress-Test angezeigt.
|
|
44
|
-
</p>
|
|
45
|
-
</div>
|
|
46
|
-
|
|
47
|
-
<div class="info-box">
|
|
48
|
-
<p>📦 POST-Body: Die Session als JSON (<code>actions</code>, <code>startUrl</code>, ...)</p>
|
|
49
|
-
<p>📄 Erwartete Antwort: Cypress-Test-Code als Plain-Text</p>
|
|
50
|
-
<p>⌨️ Shortcuts: <kbd>Ctrl+Shift+D</kbd> Panel <kbd>Ctrl+Shift+R</kbd> Aufnahme</p>
|
|
51
|
-
</div>
|
|
52
|
-
</div>
|
|
53
|
-
|
|
54
|
-
<div class="dialog-footer">
|
|
55
|
-
<button class="btn-cancel" (click)="close.emit()">Abbrechen</button>
|
|
56
|
-
<button class="btn-save" (click)="save()">💾 Speichern</button>
|
|
57
|
-
</div>
|
|
58
|
-
</div>
|
|
59
|
-
</div>
|
|
23
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SettingsDialogComponent, isStandalone: true, selector: "app-settings-dialog", outputs: { close: "close" }, ngImport: i0, template: `
|
|
24
|
+
<div class="overlay" data-debug-panel (click)="onOverlayClick($event)">
|
|
25
|
+
<div class="dialog" data-debug-panel>
|
|
26
|
+
<div class="dialog-header">
|
|
27
|
+
<h2>⚙️ Einstellungen</h2>
|
|
28
|
+
<button class="close-btn" (click)="close.emit()">✕</button>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
<div class="dialog-body">
|
|
32
|
+
<div class="field-group">
|
|
33
|
+
<label>KI Webhook-URL</label>
|
|
34
|
+
<input
|
|
35
|
+
data-debug-panel
|
|
36
|
+
class="field-input"
|
|
37
|
+
type="url"
|
|
38
|
+
[(ngModel)]="localUrl"
|
|
39
|
+
placeholder="https://deine-ki-api.de/generate"
|
|
40
|
+
/>
|
|
41
|
+
<p class="field-hint">
|
|
42
|
+
Die aufgezeichnete Session wird als JSON per POST an diese URL gesendet.
|
|
43
|
+
Die Antwort wird als Cypress-Test angezeigt.
|
|
44
|
+
</p>
|
|
45
|
+
</div>
|
|
46
|
+
|
|
47
|
+
<div class="info-box">
|
|
48
|
+
<p>📦 POST-Body: Die Session als JSON (<code>actions</code>, <code>startUrl</code>, ...)</p>
|
|
49
|
+
<p>📄 Erwartete Antwort: Cypress-Test-Code als Plain-Text</p>
|
|
50
|
+
<p>⌨️ Shortcuts: <kbd>Ctrl+Shift+D</kbd> Panel <kbd>Ctrl+Shift+R</kbd> Aufnahme</p>
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
|
|
54
|
+
<div class="dialog-footer">
|
|
55
|
+
<button class="btn-cancel" (click)="close.emit()">Abbrechen</button>
|
|
56
|
+
<button class="btn-save" (click)="save()">💾 Speichern</button>
|
|
57
|
+
</div>
|
|
58
|
+
</div>
|
|
59
|
+
</div>
|
|
60
60
|
`, isInline: true, styles: [".overlay{position:fixed;inset:0;background:#000000b3;z-index:100000;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.dialog{background:#0f172a;border:1px solid #1e3a5f;border-radius:12px;width:440px;max-width:95vw;display:flex;flex-direction:column;box-shadow:0 25px 60px #0009;overflow:hidden}.dialog-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;background:#1e293b;border-bottom:1px solid #334155}.dialog-header h2{margin:0;font-size:15px;color:#f1f5f9;font-weight:600}.close-btn{background:none;border:none;color:#94a3b8;cursor:pointer;font-size:16px;padding:4px;border-radius:4px}.close-btn:hover{color:#f1f5f9;background:#334155}.dialog-body{padding:18px;display:flex;flex-direction:column;gap:16px}.field-group{display:flex;flex-direction:column;gap:6px}label{font-size:12px;font-weight:600;color:#94a3b8;text-transform:uppercase;letter-spacing:.05em}.field-input{background:#1e293b;border:1px solid #334155;color:#e2e8f0;border-radius:6px;padding:10px 12px;font-size:13px;width:100%;box-sizing:border-box}.field-input:focus{outline:none;border-color:#3b82f6}.field-hint{font-size:11px;color:#64748b;margin:0;line-height:1.5}.info-box{background:#1e293b80;border:1px solid #1e3a5f;border-radius:8px;padding:12px;display:flex;flex-direction:column;gap:6px}.info-box p{margin:0;font-size:11px;color:#64748b}.info-box code{background:#1e293b;color:#34d399;padding:1px 4px;border-radius:3px;font-family:monospace}kbd{background:#1e293b;border:1px solid #334155;color:#94a3b8;padding:1px 5px;border-radius:3px;font-size:10px}.dialog-footer{display:flex;gap:8px;justify-content:flex-end;padding:14px 18px;background:#1e293b;border-top:1px solid #334155}.btn-cancel,.btn-save{padding:8px 20px;border-radius:6px;font-size:13px;font-weight:600;cursor:pointer;border:none;transition:filter .15s}.btn-cancel{background:#334155;color:#94a3b8}.btn-cancel:hover{filter:brightness(1.2)}.btn-save{background:#2563eb;color:#fff}.btn-save:hover{filter:brightness(1.1)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
61
61
|
}
|
|
62
62
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SettingsDialogComponent, decorators: [{
|
|
63
63
|
type: Component,
|
|
64
|
-
args: [{ selector: 'app-settings-dialog', standalone: true, imports: [CommonModule, FormsModule], template: `
|
|
65
|
-
<div class="overlay" data-debug-panel (click)="onOverlayClick($event)">
|
|
66
|
-
<div class="dialog" data-debug-panel>
|
|
67
|
-
<div class="dialog-header">
|
|
68
|
-
<h2>⚙️ Einstellungen</h2>
|
|
69
|
-
<button class="close-btn" (click)="close.emit()">✕</button>
|
|
70
|
-
</div>
|
|
71
|
-
|
|
72
|
-
<div class="dialog-body">
|
|
73
|
-
<div class="field-group">
|
|
74
|
-
<label>KI Webhook-URL</label>
|
|
75
|
-
<input
|
|
76
|
-
data-debug-panel
|
|
77
|
-
class="field-input"
|
|
78
|
-
type="url"
|
|
79
|
-
[(ngModel)]="localUrl"
|
|
80
|
-
placeholder="https://deine-ki-api.de/generate"
|
|
81
|
-
/>
|
|
82
|
-
<p class="field-hint">
|
|
83
|
-
Die aufgezeichnete Session wird als JSON per POST an diese URL gesendet.
|
|
84
|
-
Die Antwort wird als Cypress-Test angezeigt.
|
|
85
|
-
</p>
|
|
86
|
-
</div>
|
|
87
|
-
|
|
88
|
-
<div class="info-box">
|
|
89
|
-
<p>📦 POST-Body: Die Session als JSON (<code>actions</code>, <code>startUrl</code>, ...)</p>
|
|
90
|
-
<p>📄 Erwartete Antwort: Cypress-Test-Code als Plain-Text</p>
|
|
91
|
-
<p>⌨️ Shortcuts: <kbd>Ctrl+Shift+D</kbd> Panel <kbd>Ctrl+Shift+R</kbd> Aufnahme</p>
|
|
92
|
-
</div>
|
|
93
|
-
</div>
|
|
94
|
-
|
|
95
|
-
<div class="dialog-footer">
|
|
96
|
-
<button class="btn-cancel" (click)="close.emit()">Abbrechen</button>
|
|
97
|
-
<button class="btn-save" (click)="save()">💾 Speichern</button>
|
|
98
|
-
</div>
|
|
99
|
-
</div>
|
|
100
|
-
</div>
|
|
64
|
+
args: [{ selector: 'app-settings-dialog', standalone: true, imports: [CommonModule, FormsModule], template: `
|
|
65
|
+
<div class="overlay" data-debug-panel (click)="onOverlayClick($event)">
|
|
66
|
+
<div class="dialog" data-debug-panel>
|
|
67
|
+
<div class="dialog-header">
|
|
68
|
+
<h2>⚙️ Einstellungen</h2>
|
|
69
|
+
<button class="close-btn" (click)="close.emit()">✕</button>
|
|
70
|
+
</div>
|
|
71
|
+
|
|
72
|
+
<div class="dialog-body">
|
|
73
|
+
<div class="field-group">
|
|
74
|
+
<label>KI Webhook-URL</label>
|
|
75
|
+
<input
|
|
76
|
+
data-debug-panel
|
|
77
|
+
class="field-input"
|
|
78
|
+
type="url"
|
|
79
|
+
[(ngModel)]="localUrl"
|
|
80
|
+
placeholder="https://deine-ki-api.de/generate"
|
|
81
|
+
/>
|
|
82
|
+
<p class="field-hint">
|
|
83
|
+
Die aufgezeichnete Session wird als JSON per POST an diese URL gesendet.
|
|
84
|
+
Die Antwort wird als Cypress-Test angezeigt.
|
|
85
|
+
</p>
|
|
86
|
+
</div>
|
|
87
|
+
|
|
88
|
+
<div class="info-box">
|
|
89
|
+
<p>📦 POST-Body: Die Session als JSON (<code>actions</code>, <code>startUrl</code>, ...)</p>
|
|
90
|
+
<p>📄 Erwartete Antwort: Cypress-Test-Code als Plain-Text</p>
|
|
91
|
+
<p>⌨️ Shortcuts: <kbd>Ctrl+Shift+D</kbd> Panel <kbd>Ctrl+Shift+R</kbd> Aufnahme</p>
|
|
92
|
+
</div>
|
|
93
|
+
</div>
|
|
94
|
+
|
|
95
|
+
<div class="dialog-footer">
|
|
96
|
+
<button class="btn-cancel" (click)="close.emit()">Abbrechen</button>
|
|
97
|
+
<button class="btn-save" (click)="save()">💾 Speichern</button>
|
|
98
|
+
</div>
|
|
99
|
+
</div>
|
|
100
|
+
</div>
|
|
101
101
|
`, styles: [".overlay{position:fixed;inset:0;background:#000000b3;z-index:100000;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.dialog{background:#0f172a;border:1px solid #1e3a5f;border-radius:12px;width:440px;max-width:95vw;display:flex;flex-direction:column;box-shadow:0 25px 60px #0009;overflow:hidden}.dialog-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;background:#1e293b;border-bottom:1px solid #334155}.dialog-header h2{margin:0;font-size:15px;color:#f1f5f9;font-weight:600}.close-btn{background:none;border:none;color:#94a3b8;cursor:pointer;font-size:16px;padding:4px;border-radius:4px}.close-btn:hover{color:#f1f5f9;background:#334155}.dialog-body{padding:18px;display:flex;flex-direction:column;gap:16px}.field-group{display:flex;flex-direction:column;gap:6px}label{font-size:12px;font-weight:600;color:#94a3b8;text-transform:uppercase;letter-spacing:.05em}.field-input{background:#1e293b;border:1px solid #334155;color:#e2e8f0;border-radius:6px;padding:10px 12px;font-size:13px;width:100%;box-sizing:border-box}.field-input:focus{outline:none;border-color:#3b82f6}.field-hint{font-size:11px;color:#64748b;margin:0;line-height:1.5}.info-box{background:#1e293b80;border:1px solid #1e3a5f;border-radius:8px;padding:12px;display:flex;flex-direction:column;gap:6px}.info-box p{margin:0;font-size:11px;color:#64748b}.info-box code{background:#1e293b;color:#34d399;padding:1px 4px;border-radius:3px;font-family:monospace}kbd{background:#1e293b;border:1px solid #334155;color:#94a3b8;padding:1px 5px;border-radius:3px;font-size:10px}.dialog-footer{display:flex;gap:8px;justify-content:flex-end;padding:14px 18px;background:#1e293b;border-top:1px solid #334155}.btn-cancel,.btn-save{padding:8px 20px;border-radius:6px;font-size:13px;font-weight:600;cursor:pointer;border:none;transition:filter .15s}.btn-cancel{background:#334155;color:#94a3b8}.btn-cancel:hover{filter:brightness(1.2)}.btn-save{background:#2563eb;color:#fff}.btn-save:hover{filter:brightness(1.1)}\n"] }]
|
|
102
102
|
}], propDecorators: { close: [{
|
|
103
103
|
type: Output
|
|
104
104
|
}] } });
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RlYnVnLXJlY29yZGVyL3NyYy9saWIvc2V0dGluZ3MtZGlhbG9nL3NldHRpbmdzLWRpYWxvZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7QUF5R3RFLE1BQU0sT0FBTyx1QkFBdUI7SUF2R3BDO1FBd0dZLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ25DLE9BQUUsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN4QyxhQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztLQVlqQztJQVZDLElBQUk7UUFDRixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsY0FBYyxDQUFDLENBQWE7UUFDMUIsSUFBSyxDQUFDLENBQUMsTUFBc0IsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDNUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQzsrR0FkVSx1QkFBdUI7bUdBQXZCLHVCQUF1Qiw0R0FuR3hCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNULDJsRUF0Q1MsWUFBWSw4QkFBRSxXQUFXOzs0RkFvR3hCLHVCQUF1QjtrQkF2R25DLFNBQVM7K0JBQ0UscUJBQXFCLGNBQ25CLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUMsWUFDMUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQ1Q7OEJBK0RTLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWlHZW5lcmF0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYWktZ2VuZXJhdG9yLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtc2V0dGluZ3MtZGlhbG9nJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlXSxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBjbGFzcz1cIm92ZXJsYXlcIiBkYXRhLWRlYnVnLXBhbmVsIChjbGljayk9XCJvbk92ZXJsYXlDbGljaygkZXZlbnQpXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkaWFsb2dcIiBkYXRhLWRlYnVnLXBhbmVsPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctaGVhZGVyXCI+XHJcbiAgICAgICAgICA8aDI+4pqZ77iPIEVpbnN0ZWxsdW5nZW48L2gyPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNsb3NlLWJ0blwiIChjbGljayk9XCJjbG9zZS5lbWl0KClcIj7inJU8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRpYWxvZy1ib2R5XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtZ3JvdXBcIj5cclxuICAgICAgICAgICAgPGxhYmVsPktJIFdlYmhvb2stVVJMPC9sYWJlbD5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgZGF0YS1kZWJ1Zy1wYW5lbFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZmllbGQtaW5wdXRcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJ1cmxcIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibG9jYWxVcmxcIlxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiaHR0cHM6Ly9kZWluZS1raS1hcGkuZGUvZ2VuZXJhdGVcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImZpZWxkLWhpbnRcIj5cclxuICAgICAgICAgICAgICBEaWUgYXVmZ2V6ZWljaG5ldGUgU2Vzc2lvbiB3aXJkIGFscyBKU09OIHBlciBQT1NUIGFuIGRpZXNlIFVSTCBnZXNlbmRldC5cclxuICAgICAgICAgICAgICBEaWUgQW50d29ydCB3aXJkIGFscyBDeXByZXNzLVRlc3QgYW5nZXplaWd0LlxyXG4gICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1ib3hcIj5cclxuICAgICAgICAgICAgPHA+8J+TpiBQT1NULUJvZHk6IERpZSBTZXNzaW9uIGFscyBKU09OICg8Y29kZT5hY3Rpb25zPC9jb2RlPiwgPGNvZGU+c3RhcnRVcmw8L2NvZGU+LCAuLi4pPC9wPlxyXG4gICAgICAgICAgICA8cD7wn5OEIEVyd2FydGV0ZSBBbnR3b3J0OiBDeXByZXNzLVRlc3QtQ29kZSBhbHMgUGxhaW4tVGV4dDwvcD5cclxuICAgICAgICAgICAgPHA+4oyo77iPIFNob3J0Y3V0czogPGtiZD5DdHJsK1NoaWZ0K0Q8L2tiZD4gUGFuZWwgJm5ic3A7IDxrYmQ+Q3RybCtTaGlmdCtSPC9rYmQ+IEF1Zm5haG1lPC9wPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctZm9vdGVyXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLWNhbmNlbFwiIChjbGljayk9XCJjbG9zZS5lbWl0KClcIj5BYmJyZWNoZW48L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tc2F2ZVwiIChjbGljayk9XCJzYXZlKClcIj7wn5K+IFNwZWljaGVybjwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbYFxyXG4gICAgLm92ZXJsYXkge1xyXG4gICAgICBwb3NpdGlvbjogZml4ZWQ7IGluc2V0OiAwOyBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuNyk7XHJcbiAgICAgIHotaW5kZXg6IDEwMDAwMDsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig0cHgpO1xyXG4gICAgfVxyXG4gICAgLmRpYWxvZyB7XHJcbiAgICAgIGJhY2tncm91bmQ6ICMwZjE3MmE7IGJvcmRlcjogMXB4IHNvbGlkICMxZTNhNWY7IGJvcmRlci1yYWRpdXM6IDEycHg7XHJcbiAgICAgIHdpZHRoOiA0NDBweDsgbWF4LXdpZHRoOiA5NXZ3OyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICBib3gtc2hhZG93OiAwIDI1cHggNjBweCByZ2JhKDAsMCwwLDAuNik7IG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICB9XHJcbiAgICAuZGlhbG9nLWhlYWRlciB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgICAgcGFkZGluZzogMTRweCAxOHB4OyBiYWNrZ3JvdW5kOiAjMWUyOTNiOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzMzNDE1NTtcclxuICAgIH1cclxuICAgIC5kaWFsb2ctaGVhZGVyIGgyIHsgbWFyZ2luOiAwOyBmb250LXNpemU6IDE1cHg7IGNvbG9yOiAjZjFmNWY5OyBmb250LXdlaWdodDogNjAwOyB9XHJcbiAgICAuY2xvc2UtYnRuIHtcclxuICAgICAgYmFja2dyb3VuZDogbm9uZTsgYm9yZGVyOiBub25lOyBjb2xvcjogIzk0YTNiODtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyOyBmb250LXNpemU6IDE2cHg7IHBhZGRpbmc6IDRweDsgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgfVxyXG4gICAgLmNsb3NlLWJ0bjpob3ZlciB7IGNvbG9yOiAjZjFmNWY5OyBiYWNrZ3JvdW5kOiAjMzM0MTU1OyB9XHJcbiAgICAuZGlhbG9nLWJvZHkgeyBwYWRkaW5nOiAxOHB4OyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDE2cHg7IH1cclxuICAgIC5maWVsZC1ncm91cCB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogNnB4OyB9XHJcbiAgICBsYWJlbCB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTJweDsgZm9udC13ZWlnaHQ6IDYwMDsgY29sb3I6ICM5NGEzYjg7XHJcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XHJcbiAgICB9XHJcbiAgICAuZmllbGQtaW5wdXQge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAjMWUyOTNiOyBib3JkZXI6IDFweCBzb2xpZCAjMzM0MTU1OyBjb2xvcjogI2UyZThmMDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogNnB4OyBwYWRkaW5nOiAxMHB4IDEycHg7IGZvbnQtc2l6ZTogMTNweDtcclxuICAgICAgd2lkdGg6IDEwMCU7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICB9XHJcbiAgICAuZmllbGQtaW5wdXQ6Zm9jdXMgeyBvdXRsaW5lOiBub25lOyBib3JkZXItY29sb3I6ICMzYjgyZjY7IH1cclxuICAgIC5maWVsZC1oaW50IHsgZm9udC1zaXplOiAxMXB4OyBjb2xvcjogIzY0NzQ4YjsgbWFyZ2luOiAwOyBsaW5lLWhlaWdodDogMS41OyB9XHJcbiAgICAuaW5mby1ib3gge1xyXG4gICAgICBiYWNrZ3JvdW5kOiByZ2JhKDMwLDQxLDU5LDAuNSk7IGJvcmRlcjogMXB4IHNvbGlkICMxZTNhNWY7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsgcGFkZGluZzogMTJweDsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiA2cHg7XHJcbiAgICB9XHJcbiAgICAuaW5mby1ib3ggcCB7IG1hcmdpbjogMDsgZm9udC1zaXplOiAxMXB4OyBjb2xvcjogIzY0NzQ4YjsgfVxyXG4gICAgLmluZm8tYm94IGNvZGUge1xyXG4gICAgICBiYWNrZ3JvdW5kOiAjMWUyOTNiOyBjb2xvcjogIzM0ZDM5OTsgcGFkZGluZzogMXB4IDRweDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogM3B4OyBmb250LWZhbWlseTogbW9ub3NwYWNlO1xyXG4gICAgfVxyXG4gICAga2JkIHtcclxuICAgICAgYmFja2dyb3VuZDogIzFlMjkzYjsgYm9yZGVyOiAxcHggc29saWQgIzMzNDE1NTsgY29sb3I6ICM5NGEzYjg7XHJcbiAgICAgIHBhZGRpbmc6IDFweCA1cHg7IGJvcmRlci1yYWRpdXM6IDNweDsgZm9udC1zaXplOiAxMHB4O1xyXG4gICAgfVxyXG4gICAgLmRpYWxvZy1mb290ZXIge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4OyBnYXA6IDhweDsganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcclxuICAgICAgcGFkZGluZzogMTRweCAxOHB4OyBiYWNrZ3JvdW5kOiAjMWUyOTNiOyBib3JkZXItdG9wOiAxcHggc29saWQgIzMzNDE1NTtcclxuICAgIH1cclxuICAgIC5idG4tY2FuY2VsLCAuYnRuLXNhdmUge1xyXG4gICAgICBwYWRkaW5nOiA4cHggMjBweDsgYm9yZGVyLXJhZGl1czogNnB4OyBmb250LXNpemU6IDEzcHg7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7IGN1cnNvcjogcG9pbnRlcjsgYm9yZGVyOiBub25lOyB0cmFuc2l0aW9uOiBmaWx0ZXIgMC4xNXM7XHJcbiAgICB9XHJcbiAgICAuYnRuLWNhbmNlbCB7IGJhY2tncm91bmQ6ICMzMzQxNTU7IGNvbG9yOiAjOTRhM2I4OyB9XHJcbiAgICAuYnRuLWNhbmNlbDpob3ZlciB7IGZpbHRlcjogYnJpZ2h0bmVzcygxLjIpOyB9XHJcbiAgICAuYnRuLXNhdmUgeyBiYWNrZ3JvdW5kOiAjMjU2M2ViOyBjb2xvcjogI2ZmZjsgfVxyXG4gICAgLmJ0bi1zYXZlOmhvdmVyIHsgZmlsdGVyOiBicmlnaHRuZXNzKDEuMSk7IH1cclxuICBgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNldHRpbmdzRGlhbG9nQ29tcG9uZW50IHtcclxuICBAT3V0cHV0KCkgY2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSBhaSA9IGluamVjdChBaUdlbmVyYXRvclNlcnZpY2UpO1xyXG4gIGxvY2FsVXJsID0gdGhpcy5haS53ZWJob29rVXJsKCk7XHJcblxyXG4gIHNhdmUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFpLnNldFdlYmhvb2tVcmwodGhpcy5sb2NhbFVybC50cmltKCkpO1xyXG4gICAgdGhpcy5jbG9zZS5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvbk92ZXJsYXlDbGljayhlOiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAoKGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbGFzc0xpc3QuY29udGFpbnMoJ292ZXJsYXknKSkge1xyXG4gICAgICB0aGlzLmNsb3NlLmVtaXQoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|