@sedeh/into-pipes
Version:
Have you ever wanted to transform data in different parts of your application into interactive objects without writing a single line of code?
124 lines • 15.4 kB
JavaScript
import { Component, EventEmitter } from '@angular/core';
import * as i0 from "@angular/core";
export class VideoComponent {
constructor() {
this.hasControls = true;
this.hoverPlay = false;
this.disabled = false;
this.active = true;
this.validate = (item, newValue) => true;
this.onIntoComponentChange = new EventEmitter();
}
static settingsPatterns() {
return ['video::::false:true']; //width, height, alt text, enable controlls, hver play
}
transform(source, data, args) {
this.source = source;
this.width = (args && args.length) ? args[0] : "";
this.height = (args && args.length > 1) ? args[1] : "";
this.alt = (args && args.length > 2) ? args[2] : "";
this.hasControls = (args && args.length > 3 && args[3].length) ? (args[3] === 'true') : true;
this.hoverPlay = (args && args.length > 4 && args[4].length) ? (args[4] === 'true') : false;
if ((typeof source === "string") || !(source instanceof Array)) {
if (!this.alt || !this.alt.length) {
const q = source.indexOf("?");
const t = q < 0 ? source : source.substring(0, q);
const d = t.lastIndexOf("/");
this.alt = d < 0 ? t : t.substring(d + 1);
}
}
}
updateControls(event) {
if (this.hasControls) {
event.target.setAttribute('controls', 'true');
}
if (this.hoverPlay) {
event.target.play();
}
}
resetControls(event) {
if (this.hoverPlay && this.isPlaying(event.target)) {
event.target.pause();
}
}
isPlaying(video) {
return !!(video.currentTime > 0 && !video.paused && !video.ended && video.readyState > 2);
}
keyup(event) {
const code = event.which;
if (code === 13 && !this.disabled) {
if (this.isPlaying(event.target)) {
event.target.pause();
}
else {
event.target.play();
}
}
}
change(event) {
if (!this.disabled) {
this.onIntoComponentChange.emit({
id: this.id,
name: this.name,
value: this.source,
type: event.type,
item: {
autoplay: event.target.autoplay,
controls: event.target.controls,
duration: event.target.duration,
ended: event.target.ended,
error: event.target.error,
paused: event.target.paused,
muted: event.target.muted,
currentTime: event.target.currentTime,
volume: event.target.volume
}
});
}
}
}
VideoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: VideoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
VideoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: VideoComponent, selector: "video-component", ngImport: i0, template: `
<video
tabindex="{{active ? 0 : -1}}"
(focus)="updateControls($event)"
(mouseenter)="updateControls($event)"
(mouseleave)="resetControls($event)"
(keyup)="keyup($event)"
(play)="change($event)"
(ended)="change($event)"
(pause)="change($event)"
(seeked)="change($event)"
(error)="change($event)"
(fullscreenchange)="change($event)"
[src]="source"
[class.disabled]="disabled"
[style.width]="width"
[style.height]="height"
[title]="alt">
</video>
`, isInline: true, styles: [":host{display:table;float:left;min-height:var(--sedeh-min-height, 25px)}:host video.disabled{opacity:var(--sedeh-hover-opacity, .5);pointer-events:none}\n"] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: VideoComponent, decorators: [{
type: Component,
args: [{ selector: 'video-component', template: `
<video
tabindex="{{active ? 0 : -1}}"
(focus)="updateControls($event)"
(mouseenter)="updateControls($event)"
(mouseleave)="resetControls($event)"
(keyup)="keyup($event)"
(play)="change($event)"
(ended)="change($event)"
(pause)="change($event)"
(seeked)="change($event)"
(error)="change($event)"
(fullscreenchange)="change($event)"
[src]="source"
[class.disabled]="disabled"
[style.width]="width"
[style.height]="height"
[title]="alt">
</video>
`, styles: [":host{display:table;float:left;min-height:var(--sedeh-min-height, 25px)}:host video.disabled{opacity:var(--sedeh-hover-opacity, .5);pointer-events:none}\n"] }]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlkZW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW50by1waXBlcy9zcmMvbGliL3ZpZGVvL3ZpZGVvLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUE4QnhELE1BQU0sT0FBTyxjQUFjO0lBM0IzQjtRQTRCSSxnQkFBVyxHQUFHLElBQUksQ0FBQztRQUNuQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBT2xCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsV0FBTSxHQUFHLElBQUksQ0FBQztRQUNkLGFBQVEsR0FBRyxDQUFDLElBQVMsRUFBRSxRQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQztRQUVqRCwwQkFBcUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0tBc0UzQztJQXBFRyxNQUFNLENBQUMsZ0JBQWdCO1FBQ25CLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsc0RBQXNEO0lBQzFGLENBQUM7SUFDRCxTQUFTLENBQUMsTUFBVyxFQUFFLElBQVMsRUFBRSxJQUFXO1FBRXpDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDcEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDN0YsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFFNUYsSUFBSSxDQUFDLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLFlBQVksS0FBSyxDQUFDLEVBQUU7WUFDNUQsSUFBRyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRTtnQkFDOUIsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDOUIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDbEQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzNDO1NBQ0o7SUFDTCxDQUFDO0lBQ0QsY0FBYyxDQUFDLEtBQVU7UUFDckIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2xCLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBQyxNQUFNLENBQUMsQ0FBQztTQUNoRDtRQUNELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ3ZCO0lBQ0wsQ0FBQztJQUNELGFBQWEsQ0FBQyxLQUFVO1FBQ3BCLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNoRCxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3hCO0lBQ0wsQ0FBQztJQUNPLFNBQVMsQ0FBQyxLQUFVO1FBQ3hCLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFDRCxLQUFLLENBQUMsS0FBVTtRQUNaLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDekIsSUFBSSxJQUFJLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUMvQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUM5QixLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ3hCO2lCQUFNO2dCQUNILEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDdkI7U0FDSjtJQUNMLENBQUM7SUFDRCxNQUFNLENBQUMsS0FBVTtRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUM7Z0JBQzVCLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtnQkFDWCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNsQixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7Z0JBQ2hCLElBQUksRUFBRTtvQkFDRixRQUFRLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRO29CQUMvQixRQUFRLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRO29CQUMvQixRQUFRLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRO29CQUMvQixLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLO29CQUN6QixLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLO29CQUN6QixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNO29CQUMzQixLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLO29CQUN6QixXQUFXLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXO29CQUNyQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNO2lCQUM5QjthQUNKLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQzs7NEdBbEZRLGNBQWM7Z0dBQWQsY0FBYyx1REF6QmI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FtQlQ7NEZBTVEsY0FBYztrQkEzQjFCLFNBQVM7K0JBQ0ksaUJBQWlCLFlBQ2pCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBbUJUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUGlwZUNvbXBvbmVudEludGVyZmFjZSB9IGZyb20gJy4uL2NvbW1vbi9waXBlLmNvbXBvbmVudC5pbnRlcmZhY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3ZpZGVvLWNvbXBvbmVudCcsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgPHZpZGVvIFxyXG4gICAgICAgIHRhYmluZGV4PVwie3thY3RpdmUgPyAwIDogLTF9fVwiXHJcbiAgICAgICAgKGZvY3VzKT1cInVwZGF0ZUNvbnRyb2xzKCRldmVudClcIlxyXG4gICAgICAgIChtb3VzZWVudGVyKT1cInVwZGF0ZUNvbnRyb2xzKCRldmVudClcIlxyXG4gICAgICAgIChtb3VzZWxlYXZlKT1cInJlc2V0Q29udHJvbHMoJGV2ZW50KVwiXHJcbiAgICAgICAgKGtleXVwKT1cImtleXVwKCRldmVudClcIlxyXG4gICAgICAgIChwbGF5KT1cImNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAoZW5kZWQpPVwiY2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgIChwYXVzZSk9XCJjaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgKHNlZWtlZCk9XCJjaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgKGVycm9yKT1cImNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAoZnVsbHNjcmVlbmNoYW5nZSk9XCJjaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgW3NyY109XCJzb3VyY2VcIiBcclxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgIFtzdHlsZS53aWR0aF09XCJ3aWR0aFwiIFxyXG4gICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiaGVpZ2h0XCJcclxuICAgICAgICBbdGl0bGVdPVwiYWx0XCI+XHJcbiAgICA8L3ZpZGVvPlxyXG4gICAgYCxcclxuICAgIHN0eWxlczogW2BcclxuICAgIDpob3N0IHtkaXNwbGF5OnRhYmxlO2Zsb2F0OmxlZnQ7bWluLWhlaWdodDogdmFyKC0tc2VkZWgtbWluLWhlaWdodCwgMjVweCl9XHJcbiAgICA6aG9zdCB2aWRlby5kaXNhYmxlZHtvcGFjaXR5OiB2YXIoLS1zZWRlaC1ob3Zlci1vcGFjaXR5LCAwLjUpOyBwb2ludGVyLWV2ZW50czogbm9uZX1cclxuICAgIGBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWaWRlb0NvbXBvbmVudCBpbXBsZW1lbnRzIFBpcGVDb21wb25lbnRJbnRlcmZhY2Uge1xyXG4gICAgaGFzQ29udHJvbHMgPSB0cnVlO1xyXG4gICAgaG92ZXJQbGF5ID0gZmFsc2U7XHJcbiAgICBzb3VyY2UhOiBzdHJpbmc7XHJcblx0aWQhOiBzdHJpbmc7XHJcblx0bmFtZSE6IHN0cmluZztcclxuICAgIHdpZHRoITogc3RyaW5nO1xyXG4gICAgaGVpZ2h0ITogc3RyaW5nO1xyXG4gICAgYWx0ITogc3RyaW5nO1xyXG4gICAgZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIGFjdGl2ZSA9IHRydWU7XHJcbiAgICB2YWxpZGF0ZSA9IChpdGVtOiBhbnksIG5ld1ZhbHVlOiBhbnkpID0+IHRydWU7XHJcblxyXG5cdG9uSW50b0NvbXBvbmVudENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBzdGF0aWMgc2V0dGluZ3NQYXR0ZXJucygpIHtcclxuICAgICAgICByZXR1cm4gWyd2aWRlbzo6OjpmYWxzZTp0cnVlJ107IC8vd2lkdGgsIGhlaWdodCwgYWx0IHRleHQsIGVuYWJsZSBjb250cm9sbHMsIGh2ZXIgcGxheVxyXG4gICAgfVxyXG4gICAgdHJhbnNmb3JtKHNvdXJjZTogYW55LCBkYXRhOiBhbnksIGFyZ3M6IGFueVtdKSB7XHJcblxyXG4gICAgICAgIHRoaXMuc291cmNlID0gc291cmNlO1xyXG4gICAgICAgIHRoaXMud2lkdGggPSAoYXJncyAmJiBhcmdzLmxlbmd0aCkgPyBhcmdzWzBdIDogXCJcIjtcclxuICAgICAgICB0aGlzLmhlaWdodCA9IChhcmdzICYmIGFyZ3MubGVuZ3RoID4gMSkgPyBhcmdzWzFdIDogXCJcIjtcclxuICAgICAgICB0aGlzLmFsdCA9IChhcmdzICYmIGFyZ3MubGVuZ3RoID4gMikgPyBhcmdzWzJdIDogXCJcIjtcclxuICAgICAgICB0aGlzLmhhc0NvbnRyb2xzID0gKGFyZ3MgJiYgYXJncy5sZW5ndGggPiAzICYmIGFyZ3NbM10ubGVuZ3RoKSA/IChhcmdzWzNdID09PSAndHJ1ZScpIDogdHJ1ZTtcclxuICAgICAgICB0aGlzLmhvdmVyUGxheSA9IChhcmdzICYmIGFyZ3MubGVuZ3RoID4gNCAmJiBhcmdzWzRdLmxlbmd0aCkgPyAoYXJnc1s0XSA9PT0gJ3RydWUnKSA6IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAoKHR5cGVvZiBzb3VyY2UgPT09IFwic3RyaW5nXCIpIHx8ICEoc291cmNlIGluc3RhbmNlb2YgQXJyYXkpKSB7XHJcbiAgICAgICAgICAgIGlmKCF0aGlzLmFsdCB8fCAhdGhpcy5hbHQubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBxID0gc291cmNlLmluZGV4T2YoXCI/XCIpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdCA9IHEgPCAwID8gc291cmNlIDogc291cmNlLnN1YnN0cmluZygwLCBxKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSB0Lmxhc3RJbmRleE9mKFwiL1wiKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWx0ID0gZCA8IDAgPyB0IDogdC5zdWJzdHJpbmcoZCsxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHVwZGF0ZUNvbnRyb2xzKGV2ZW50OiBhbnkpIHtcclxuICAgICAgICBpZiAodGhpcy5oYXNDb250cm9scykge1xyXG4gICAgICAgICAgICBldmVudC50YXJnZXQuc2V0QXR0cmlidXRlKCdjb250cm9scycsJ3RydWUnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuaG92ZXJQbGF5KSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldC5wbGF5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmVzZXRDb250cm9scyhldmVudDogYW55KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaG92ZXJQbGF5ICYmIHRoaXMuaXNQbGF5aW5nKGV2ZW50LnRhcmdldCkpIHtcclxuICAgICAgICAgICAgZXZlbnQudGFyZ2V0LnBhdXNlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBpc1BsYXlpbmcodmlkZW86IGFueSkge1xyXG4gICAgICAgIHJldHVybiAhISh2aWRlby5jdXJyZW50VGltZSA+IDAgJiYgIXZpZGVvLnBhdXNlZCAmJiAhdmlkZW8uZW5kZWQgJiYgdmlkZW8ucmVhZHlTdGF0ZSA+IDIpO1xyXG4gICAgfVxyXG4gICAga2V5dXAoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IGNvZGUgPSBldmVudC53aGljaDtcclxuICAgICAgICBpZiAoY29kZSA9PT0gMTMgJiYgIXRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNQbGF5aW5nKGV2ZW50LnRhcmdldCkpIHtcclxuICAgICAgICAgICAgICAgIGV2ZW50LnRhcmdldC5wYXVzZSgpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZXZlbnQudGFyZ2V0LnBsYXkoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25JbnRvQ29tcG9uZW50Q2hhbmdlLmVtaXQoe1xyXG4gICAgICAgICAgICAgICAgaWQ6IHRoaXMuaWQsXHJcbiAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5zb3VyY2UsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiBldmVudC50eXBlLFxyXG4gICAgICAgICAgICAgICAgaXRlbToge1xyXG4gICAgICAgICAgICAgICAgICAgIGF1dG9wbGF5OiBldmVudC50YXJnZXQuYXV0b3BsYXksXHJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM6IGV2ZW50LnRhcmdldC5jb250cm9scyxcclxuICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogZXZlbnQudGFyZ2V0LmR1cmF0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIGVuZGVkOiBldmVudC50YXJnZXQuZW5kZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGV2ZW50LnRhcmdldC5lcnJvcixcclxuICAgICAgICAgICAgICAgICAgICBwYXVzZWQ6IGV2ZW50LnRhcmdldC5wYXVzZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgbXV0ZWQ6IGV2ZW50LnRhcmdldC5tdXRlZCxcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50VGltZTogZXZlbnQudGFyZ2V0LmN1cnJlbnRUaW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIHZvbHVtZTogZXZlbnQudGFyZ2V0LnZvbHVtZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19