ngx-rendering-service-lib 0.0.44 → 0.0.46
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/esm2022/lib/dto/FrontendModuleConfig.mjs +2 -1
- package/esm2022/lib/module/binder/binder.component.mjs +28 -0
- package/esm2022/lib/module/url/url.component.mjs +10 -3
- package/esm2022/lib/render.component.mjs +6 -5
- package/esm2022/module-info.service.mjs +20 -8
- package/fesm2022/ngx-rendering-service-lib-binder.component-BcnWHXkn.mjs +31 -0
- package/fesm2022/ngx-rendering-service-lib-binder.component-BcnWHXkn.mjs.map +1 -0
- package/fesm2022/ngx-rendering-service-lib.mjs +34 -14
- package/fesm2022/ngx-rendering-service-lib.mjs.map +1 -1
- package/lib/dto/FrontendModuleConfig.d.ts +2 -1
- package/lib/module/binder/binder.component.d.ts +13 -0
- package/lib/module/url/url.component.d.ts +1 -0
- package/module-info.service.d.ts +2 -2
- package/package.json +1 -1
|
@@ -8,5 +8,6 @@ export var UrlEmbeddings;
|
|
|
8
8
|
UrlEmbeddings[UrlEmbeddings["LTI13TOOL"] = 5] = "LTI13TOOL";
|
|
9
9
|
UrlEmbeddings[UrlEmbeddings["H5P"] = 6] = "H5P";
|
|
10
10
|
UrlEmbeddings[UrlEmbeddings["PREZI"] = 7] = "PREZI";
|
|
11
|
+
UrlEmbeddings[UrlEmbeddings["LEARNINGAPPS"] = 8] = "LEARNINGAPPS";
|
|
11
12
|
})(UrlEmbeddings || (UrlEmbeddings = {}));
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRnJvbnRlbmRNb2R1bGVDb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2R0by9Gcm9udGVuZE1vZHVsZUNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFXQSxNQUFNLENBQU4sSUFBWSxhQVVYO0FBVkQsV0FBWSxhQUFhO0lBQ3ZCLHVEQUFPLENBQUE7SUFDUCxtREFBSyxDQUFBO0lBQ0wsbURBQUssQ0FBQTtJQUNMLG1EQUFLLENBQUE7SUFDTCxtREFBSyxDQUFBO0lBQ0wsMkRBQVMsQ0FBQTtJQUNULCtDQUFHLENBQUE7SUFDSCxtREFBSyxDQUFBO0lBQ0wsaUVBQVksQ0FBQTtBQUNkLENBQUMsRUFWVyxhQUFhLEtBQWIsYUFBYSxRQVV4QiIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IHR5cGUgRnJvbnRlbmRNb2R1bGVDb25maWcgPSB7XG4gIG1vZHVsZTogc3RyaW5nLFxuICB1cmxNb2R1bGVDb25maWc6IFVybE1vZHVsZUNvbmZpZyB8IG51bGxcbn1cblxuZXhwb3J0IHR5cGUgVXJsTW9kdWxlQ29uZmlnID0ge1xuICBlbWJlZGRpbmc6IFVybEVtYmVkZGluZ3MsXG4gIGV4dGVybmFsSWQ6IHN0cmluZ1xufVxuXG5leHBvcnQgZW51bSBVcmxFbWJlZGRpbmdzIHtcbiAgWU9VVFVCRSxcbiAgVklNRU8sXG4gIFZJREVPLFxuICBBVURJTyxcbiAgSU1BR0UsXG4gIExUSTEzVE9PTCxcbiAgSDVQLFxuICBQUkVaSSxcbiAgTEVBUk5JTkdBUFBTXG59XG4iXX0=
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Component, Input, signal } from '@angular/core';
|
|
2
|
+
import { RenderingModule } from "../../rendering.module";
|
|
3
|
+
import { FormsModule } from "@angular/forms";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
export class BinderComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.activeObject = signal(undefined);
|
|
9
|
+
}
|
|
10
|
+
ngAfterViewInit() {
|
|
11
|
+
const allFinishedItems = this.data?.items?.filter(item => item.link !== "");
|
|
12
|
+
this.activeObject.set(allFinishedItems?.[0]);
|
|
13
|
+
}
|
|
14
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: BinderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
15
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: BinderComponent, isStandalone: true, selector: "rs-module-binder", inputs: { data: "data", node: "node" }, ngImport: i0, template: "<div class=\"binder-wrapper\" *ngIf=\"activeObject()\">\n <a [href]=\"activeObject()?.link\">Link to object</a>\n</div>\n", styles: [".binder-wrapper{width:100%;position:relative}\n"], dependencies: [{ kind: "ngmodule", type: RenderingModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }] }); }
|
|
16
|
+
}
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: BinderComponent, decorators: [{
|
|
18
|
+
type: Component,
|
|
19
|
+
args: [{ selector: 'rs-module-binder', standalone: true, imports: [
|
|
20
|
+
RenderingModule,
|
|
21
|
+
FormsModule,
|
|
22
|
+
], template: "<div class=\"binder-wrapper\" *ngIf=\"activeObject()\">\n <a [href]=\"activeObject()?.link\">Link to object</a>\n</div>\n", styles: [".binder-wrapper{width:100%;position:relative}\n"] }]
|
|
23
|
+
}], propDecorators: { data: [{
|
|
24
|
+
type: Input
|
|
25
|
+
}], node: [{
|
|
26
|
+
type: Input
|
|
27
|
+
}] } });
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvbW9kdWxlL2JpbmRlci9iaW5kZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9tb2R1bGUvYmluZGVyL2JpbmRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBYyxLQUFLLEVBQUUsTUFBTSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQzdGLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQU12RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7OztBQWMzQyxNQUFNLE9BQU8sZUFBZTtJQVY1QjtRQWFFLGlCQUFZLEdBQUcsTUFBTSxDQUE2QixTQUFTLENBQUMsQ0FBQztLQU05RDtJQUpDLGVBQWU7UUFDYixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUE7UUFDM0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7OEdBUlUsZUFBZTtrR0FBZixlQUFlLG9IQ3JCNUIsNEhBR0Esd0dEWUksZUFBZSxrSUFDZixXQUFXOzsyRkFLRixlQUFlO2tCQVYzQixTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1A7d0JBQ1AsZUFBZTt3QkFDZixXQUFXO3FCQUNaOzhCQUtRLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIHNpZ25hbCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UmVuZGVyaW5nTW9kdWxlfSBmcm9tIFwiLi4vLi4vcmVuZGVyaW5nLm1vZHVsZVwiO1xuaW1wb3J0IHtSZW5kZXJNb2R1bGV9IGZyb20gXCIuLi9SZW5kZXJNb2R1bGVcIjtcbmltcG9ydCB7Tm9kZX0gZnJvbSBcIm5neC1lZHUtc2hhcmluZy1hcGlcIjtcbmltcG9ydCB7TWF0SWNvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcbmltcG9ydCB7TWF0SWNvbkJ1dHRvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2J1dHRvblwiO1xuaW1wb3J0IHtNYXRPcHRpb24sIE1hdFNlbGVjdH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3NlbGVjdFwiO1xuaW1wb3J0IHtGb3Jtc01vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQge1JlbmRlckRhdGEsIEFzc2V0U3RhdGVJdGVtfSBmcm9tIFwiLi4vLi4vZHRvL1JlbmRlckRhdGFcIjtcbmltcG9ydCB7TWF0TWVudSwgTWF0TWVudUl0ZW0sIE1hdE1lbnVUcmlnZ2VyfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdycy1tb2R1bGUtYmluZGVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFJlbmRlcmluZ01vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2JpbmRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9iaW5kZXIuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIEJpbmRlckNvbXBvbmVudCBpbXBsZW1lbnRzIFJlbmRlck1vZHVsZSwgQWZ0ZXJWaWV3SW5pdHtcbiAgQElucHV0KCkgZGF0YTogUmVuZGVyRGF0YSB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgbm9kZTogTm9kZSB8IHVuZGVmaW5lZDtcbiAgYWN0aXZlT2JqZWN0ID0gc2lnbmFsPEFzc2V0U3RhdGVJdGVtIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBhbGxGaW5pc2hlZEl0ZW1zID0gdGhpcy5kYXRhPy5pdGVtcz8uZmlsdGVyKGl0ZW0gPT4gaXRlbS5saW5rICE9PSBcIlwiKVxuICAgIHRoaXMuYWN0aXZlT2JqZWN0LnNldChhbGxGaW5pc2hlZEl0ZW1zPy5bMF0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYmluZGVyLXdyYXBwZXJcIiAqbmdJZj1cImFjdGl2ZU9iamVjdCgpXCI+XG4gIDxhIFtocmVmXT1cImFjdGl2ZU9iamVjdCgpPy5saW5rXCI+TGluayB0byBvYmplY3Q8L2E+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -28,6 +28,9 @@ export class UrlComponent {
|
|
|
28
28
|
else if (this.embedding === UrlEmbeddings.PREZI) {
|
|
29
29
|
this.sanitizedUrl = this.getPreziUrl();
|
|
30
30
|
}
|
|
31
|
+
else if (this.embedding === UrlEmbeddings.LEARNINGAPPS) {
|
|
32
|
+
this.sanitizedUrl = this.getLearningAppsUrl();
|
|
33
|
+
}
|
|
31
34
|
}
|
|
32
35
|
isProtected() {
|
|
33
36
|
return this.gdpr === undefined;
|
|
@@ -43,8 +46,12 @@ export class UrlComponent {
|
|
|
43
46
|
const preziUrl = this.url.slice(-1) === "/" ? this.url.substring(0, this.url.length - 1) : this.url;
|
|
44
47
|
return this.sanitizer.bypassSecurityTrustResourceUrl(preziUrl);
|
|
45
48
|
}
|
|
49
|
+
getLearningAppsUrl() {
|
|
50
|
+
const learningAppsUrl = this.url.replace('https://learningapps.org/', 'https://learningapps.org/view');
|
|
51
|
+
return this.sanitizer.bypassSecurityTrustResourceUrl(learningAppsUrl);
|
|
52
|
+
}
|
|
46
53
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: UrlComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
47
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: UrlComponent, isStandalone: true, selector: "rs-module-url", inputs: { data: "data", node: "node" }, ngImport: i0, template: "<div class=\"url-wrapper\">\n <div *ngIf=\"gdprOk\">\n <ng-container *ngIf=\"embedding === UrlEmbeddings.YOUTUBE && externalId !== ''\">\n <youtube-player\n [videoId]=\"externalId ?? ''\"\n [disableCookies]=\"true\"\n ></youtube-player>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.VIMEO && externalId !== ''\">\n <iframe class=\"vimeoFrame\" [src]=\"sanitizedUrl\"></iframe>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.AUDIO && url !== ''\" >\n <div class=\"audio-wrapper\">\n <video\n controls\n style=\"max-width: 100%\"\n [src]=\"url\"\n poster=\"assets/img/audio.svg\"\n >\n </video>\n </div>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.IMAGE && url !== ''\">\n <div class=\"image-wrapper\">\n <img\n [ngSrc]=\"url\"\n [alt]=\"node?.title ?? 'Edu-Sharing image'\"\n [title]=\"node?.title ?? 'Edu-Sharing image'\"\n >\n </div>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.VIDEO && url !== ''\">\n <div class=\"video-wrapper\">\n <video\n controls\n [src]=\"url\"\n >\n </video>\n </div>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.PREZI && url !== ''\">\n <iframe class=\"
|
|
54
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: UrlComponent, isStandalone: true, selector: "rs-module-url", inputs: { data: "data", node: "node" }, ngImport: i0, template: "<div class=\"url-wrapper\">\n <div *ngIf=\"gdprOk\">\n <ng-container *ngIf=\"embedding === UrlEmbeddings.YOUTUBE && externalId !== ''\">\n <youtube-player\n [videoId]=\"externalId ?? ''\"\n [disableCookies]=\"true\"\n ></youtube-player>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.VIMEO && externalId !== ''\">\n <iframe class=\"vimeoFrame\" [src]=\"sanitizedUrl\"></iframe>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.AUDIO && url !== ''\" >\n <div class=\"audio-wrapper\">\n <video\n controls\n style=\"max-width: 100%\"\n [src]=\"url\"\n poster=\"assets/img/audio.svg\"\n >\n </video>\n </div>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.IMAGE && url !== ''\">\n <div class=\"image-wrapper\">\n <img\n [ngSrc]=\"url\"\n [alt]=\"node?.title ?? 'Edu-Sharing image'\"\n [title]=\"node?.title ?? 'Edu-Sharing image'\"\n >\n </div>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.VIDEO && url !== ''\">\n <div class=\"video-wrapper\">\n <video\n controls\n [src]=\"url\"\n >\n </video>\n </div>\n </ng-container>\n <ng-container *ngIf=\"(embedding === UrlEmbeddings.PREZI || embedding === UrlEmbeddings.LEARNINGAPPS) && url !== ''\">\n <iframe class=\"eduUrlFrame\" [src]=sanitizedUrl allowfullscreen=\"\" allow=\"autoplay; fullscreen\" ></iframe>\n </ng-container>\n\n </div>\n <div *ngIf=\"!gdprOk\">\n Halt! Stop!\n <button mat-button (click)=\"consentToGdprWarning()\">Weiter!</button>\n </div>\n</div>\n", styles: [":host{position:relative;display:flex;align-items:center}.url-wrapper{width:100%}.url-wrapper .audio-wrapper video[poster]{object-fit:cover}.url-wrapper .vimeoFrame .preziFrame .image-wrapper>img{width:100%;height:auto}\n"], dependencies: [{ kind: "ngmodule", type: RenderingModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: YouTubePlayer, selector: "youtube-player", inputs: ["videoId", "height", "width", "startSeconds", "endSeconds", "suggestedQuality", "playerVars", "disableCookies", "loadApi", "disablePlaceholder", "showBeforeIframeApiLoads", "placeholderButtonLabel", "placeholderImageQuality"], outputs: ["ready", "stateChange", "error", "apiChange", "playbackQualityChange", "playbackRateChange"] }, { kind: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "placeholder", "placeholderConfig", "src", "srcset"] }] }); }
|
|
48
55
|
}
|
|
49
56
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: UrlComponent, decorators: [{
|
|
50
57
|
type: Component,
|
|
@@ -54,10 +61,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
54
61
|
MatIconModule,
|
|
55
62
|
YouTubePlayer,
|
|
56
63
|
NgOptimizedImage,
|
|
57
|
-
], template: "<div class=\"url-wrapper\">\n <div *ngIf=\"gdprOk\">\n <ng-container *ngIf=\"embedding === UrlEmbeddings.YOUTUBE && externalId !== ''\">\n <youtube-player\n [videoId]=\"externalId ?? ''\"\n [disableCookies]=\"true\"\n ></youtube-player>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.VIMEO && externalId !== ''\">\n <iframe class=\"vimeoFrame\" [src]=\"sanitizedUrl\"></iframe>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.AUDIO && url !== ''\" >\n <div class=\"audio-wrapper\">\n <video\n controls\n style=\"max-width: 100%\"\n [src]=\"url\"\n poster=\"assets/img/audio.svg\"\n >\n </video>\n </div>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.IMAGE && url !== ''\">\n <div class=\"image-wrapper\">\n <img\n [ngSrc]=\"url\"\n [alt]=\"node?.title ?? 'Edu-Sharing image'\"\n [title]=\"node?.title ?? 'Edu-Sharing image'\"\n >\n </div>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.VIDEO && url !== ''\">\n <div class=\"video-wrapper\">\n <video\n controls\n [src]=\"url\"\n >\n </video>\n </div>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.PREZI && url !== ''\">\n <iframe class=\"
|
|
64
|
+
], template: "<div class=\"url-wrapper\">\n <div *ngIf=\"gdprOk\">\n <ng-container *ngIf=\"embedding === UrlEmbeddings.YOUTUBE && externalId !== ''\">\n <youtube-player\n [videoId]=\"externalId ?? ''\"\n [disableCookies]=\"true\"\n ></youtube-player>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.VIMEO && externalId !== ''\">\n <iframe class=\"vimeoFrame\" [src]=\"sanitizedUrl\"></iframe>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.AUDIO && url !== ''\" >\n <div class=\"audio-wrapper\">\n <video\n controls\n style=\"max-width: 100%\"\n [src]=\"url\"\n poster=\"assets/img/audio.svg\"\n >\n </video>\n </div>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.IMAGE && url !== ''\">\n <div class=\"image-wrapper\">\n <img\n [ngSrc]=\"url\"\n [alt]=\"node?.title ?? 'Edu-Sharing image'\"\n [title]=\"node?.title ?? 'Edu-Sharing image'\"\n >\n </div>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.VIDEO && url !== ''\">\n <div class=\"video-wrapper\">\n <video\n controls\n [src]=\"url\"\n >\n </video>\n </div>\n </ng-container>\n <ng-container *ngIf=\"(embedding === UrlEmbeddings.PREZI || embedding === UrlEmbeddings.LEARNINGAPPS) && url !== ''\">\n <iframe class=\"eduUrlFrame\" [src]=sanitizedUrl allowfullscreen=\"\" allow=\"autoplay; fullscreen\" ></iframe>\n </ng-container>\n\n </div>\n <div *ngIf=\"!gdprOk\">\n Halt! Stop!\n <button mat-button (click)=\"consentToGdprWarning()\">Weiter!</button>\n </div>\n</div>\n", styles: [":host{position:relative;display:flex;align-items:center}.url-wrapper{width:100%}.url-wrapper .audio-wrapper video[poster]{object-fit:cover}.url-wrapper .vimeoFrame .preziFrame .image-wrapper>img{width:100%;height:auto}\n"] }]
|
|
58
65
|
}], ctorParameters: () => [{ type: i1.DomSanitizer }], propDecorators: { data: [{
|
|
59
66
|
type: Input
|
|
60
67
|
}], node: [{
|
|
61
68
|
type: Input
|
|
62
69
|
}] } });
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvbW9kdWxlL3VybC91cmwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9tb2R1bGUvdXJsL3VybC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFHdkQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFFdEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFakQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGdDQUFnQyxDQUFDOzs7OztBQWU3RCxNQUFNLE9BQU8sWUFBWTtJQVV2QixZQUFvQixTQUF1QjtRQUF2QixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBUDNDLFNBQUksR0FBc0IsU0FBUyxDQUFBO1FBQ25DLFdBQU0sR0FBWSxJQUFJLENBQUE7UUFHdEIsaUJBQVksR0FBMkIsSUFBSSxDQUFBO1FBQzNDLFFBQUcsR0FBVyxFQUFFLENBQUE7UUF5Q0csa0JBQWEsR0FBRyxhQUFhLENBQUM7SUF0Q2pELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLG9CQUFvQixFQUFFLGVBQWUsRUFBRSxTQUFTLENBQUE7UUFDNUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLG9CQUFvQixFQUFFLGVBQWUsRUFBRSxVQUFVLENBQUE7UUFDOUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO1FBQzNELElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7UUFDeEMsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7UUFDeEMsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDekQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQTtRQUMvQyxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxvQkFBb0I7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUE7SUFDckIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLEdBQUcsR0FBRywyQkFBMkIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFBO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUMzRCxDQUFDO0lBRUQsV0FBVztRQUNULE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUE7UUFDbkcsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLDhCQUE4QixDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ2hFLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsMkJBQTJCLEVBQUUsK0JBQStCLENBQUMsQ0FBQTtRQUN0RyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsOEJBQThCLENBQUMsZUFBZSxDQUFDLENBQUE7SUFDdkUsQ0FBQzs4R0EvQ1UsWUFBWTtrR0FBWixZQUFZLGlIQ3pCekIsNHREQWtEQSxxUkRsQ0ksZUFBZSxrSUFDZixlQUFlLDJOQUNmLGFBQWEsK0JBQ2IsYUFBYSwrWUFDYixnQkFBZ0I7OzJGQUtQLFlBQVk7a0JBYnhCLFNBQVM7K0JBQ0UsZUFBZSxjQUNiLElBQUksV0FDUDt3QkFDUCxlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixhQUFhO3dCQUNiLGdCQUFnQjtxQkFDakI7aUZBS1EsSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UmVuZGVyaW5nTW9kdWxlfSBmcm9tIFwiLi4vLi4vcmVuZGVyaW5nLm1vZHVsZVwiO1xuaW1wb3J0IHtSZW5kZXJNb2R1bGV9IGZyb20gXCIuLi9SZW5kZXJNb2R1bGVcIjtcbmltcG9ydCB7Tm9kZX0gZnJvbSBcIm5neC1lZHUtc2hhcmluZy1hcGlcIjtcbmltcG9ydCB7TWF0SWNvbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcbmltcG9ydCB7TWF0QnV0dG9uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XG5pbXBvcnQge1lvdVR1YmVQbGF5ZXJ9IGZyb20gJ0Bhbmd1bGFyL3lvdXR1YmUtcGxheWVyJztcbmltcG9ydCB7RG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmx9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XG5pbXBvcnQge05nT3B0aW1pemVkSW1hZ2V9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7UmVuZGVyRGF0YX0gZnJvbSBcIi4uLy4uL2R0by9SZW5kZXJEYXRhXCI7XG5pbXBvcnQge1VybEVtYmVkZGluZ3N9IGZyb20gXCIuLi8uLi9kdG8vRnJvbnRlbmRNb2R1bGVDb25maWdcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncnMtbW9kdWxlLXVybCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBSZW5kZXJpbmdNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgWW91VHViZVBsYXllcixcbiAgICBOZ09wdGltaXplZEltYWdlLFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vdXJsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3VybC5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgVXJsQ29tcG9uZW50IGltcGxlbWVudHMgUmVuZGVyTW9kdWxlLCBPbkluaXQge1xuICBASW5wdXQoKSBkYXRhOiBSZW5kZXJEYXRhIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBub2RlOiBOb2RlIHwgdW5kZWZpbmVkO1xuICBnZHByOiBhbnlbXSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuICBnZHByT2s6IGJvb2xlYW4gPSB0cnVlXG4gIGVtYmVkZGluZz86IFVybEVtYmVkZGluZ3NcbiAgZXh0ZXJuYWxJZD86IHN0cmluZ1xuICBzYW5pdGl6ZWRVcmw6IFNhZmVSZXNvdXJjZVVybCB8IG51bGwgPSBudWxsXG4gIHVybDogc3RyaW5nID0gXCJcIlxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZW1iZWRkaW5nID0gdGhpcy5kYXRhPy5mcm9udGVuZE1vZHVsZUNvbmZpZz8udXJsTW9kdWxlQ29uZmlnPy5lbWJlZGRpbmdcbiAgICB0aGlzLmV4dGVybmFsSWQgPSB0aGlzLmRhdGE/LmZyb250ZW5kTW9kdWxlQ29uZmlnPy51cmxNb2R1bGVDb25maWc/LmV4dGVybmFsSWRcbiAgICB0aGlzLnVybCA9IHRoaXMubm9kZT8ucHJvcGVydGllcz8uW1wiY2NtOnd3d3VybFwiXT8uWzBdIHx8ICcnXG4gICAgaWYgKHRoaXMuZW1iZWRkaW5nID09PSBVcmxFbWJlZGRpbmdzLlZJTUVPKSB7XG4gICAgICB0aGlzLnNhbml0aXplZFVybCA9IHRoaXMuZ2V0VmltZW9VcmkoKVxuICAgIH0gZWxzZSBpZiAodGhpcy5lbWJlZGRpbmcgPT09IFVybEVtYmVkZGluZ3MuUFJFWkkpIHtcbiAgICAgIHRoaXMuc2FuaXRpemVkVXJsID0gdGhpcy5nZXRQcmV6aVVybCgpXG4gICAgfSBlbHNlIGlmICh0aGlzLmVtYmVkZGluZyA9PT0gVXJsRW1iZWRkaW5ncy5MRUFSTklOR0FQUFMpIHtcbiAgICAgIHRoaXMuc2FuaXRpemVkVXJsID0gdGhpcy5nZXRMZWFybmluZ0FwcHNVcmwoKVxuICAgIH1cbiAgfVxuXG4gIGlzUHJvdGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdkcHIgPT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnNlbnRUb0dkcHJXYXJuaW5nKCkge1xuICAgICB0aGlzLmdkcHJPayA9IHRydWVcbiAgfVxuXG4gIGdldFZpbWVvVXJpKCk6IFNhZmVSZXNvdXJjZVVybCB7XG4gICAgbGV0IHVybCA9ICcvL3BsYXllci52aW1lby5jb20vdmlkZW8vJyArIHRoaXMuZXh0ZXJuYWxJZFxuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodXJsKVxuICB9XG5cbiAgZ2V0UHJlemlVcmwoKTogU2FmZVJlc291cmNlVXJsIHtcbiAgICBjb25zdCBwcmV6aVVybCA9IHRoaXMudXJsLnNsaWNlKC0xKSA9PT0gXCIvXCIgPyB0aGlzLnVybC5zdWJzdHJpbmcoMCwgdGhpcy51cmwubGVuZ3RoIC0gMSkgOiB0aGlzLnVybFxuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwocHJlemlVcmwpXG4gIH1cblxuICBnZXRMZWFybmluZ0FwcHNVcmwoKTogU2FmZVJlc291cmNlVXJsIHtcbiAgICBjb25zdCBsZWFybmluZ0FwcHNVcmwgPSB0aGlzLnVybC5yZXBsYWNlKCdodHRwczovL2xlYXJuaW5nYXBwcy5vcmcvJywgJ2h0dHBzOi8vbGVhcm5pbmdhcHBzLm9yZy92aWV3JylcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKGxlYXJuaW5nQXBwc1VybClcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBVcmxFbWJlZGRpbmdzID0gVXJsRW1iZWRkaW5ncztcbn1cbiIsIjxkaXYgY2xhc3M9XCJ1cmwtd3JhcHBlclwiPlxuICA8ZGl2ICpuZ0lmPVwiZ2Rwck9rXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVtYmVkZGluZyA9PT0gVXJsRW1iZWRkaW5ncy5ZT1VUVUJFICYmIGV4dGVybmFsSWQgIT09ICcnXCI+XG4gICAgICA8eW91dHViZS1wbGF5ZXJcbiAgICAgICAgW3ZpZGVvSWRdPVwiZXh0ZXJuYWxJZCA/PyAnJ1wiXG4gICAgICAgIFtkaXNhYmxlQ29va2llc109XCJ0cnVlXCJcbiAgICAgID48L3lvdXR1YmUtcGxheWVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbWJlZGRpbmcgPT09IFVybEVtYmVkZGluZ3MuVklNRU8gJiYgZXh0ZXJuYWxJZCAhPT0gJydcIj5cbiAgICAgIDxpZnJhbWUgY2xhc3M9XCJ2aW1lb0ZyYW1lXCIgW3NyY109XCJzYW5pdGl6ZWRVcmxcIj48L2lmcmFtZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZW1iZWRkaW5nID09PSBVcmxFbWJlZGRpbmdzLkFVRElPICYmICB1cmwgIT09ICcnXCIgPlxuICAgICAgPGRpdiBjbGFzcz1cImF1ZGlvLXdyYXBwZXJcIj5cbiAgICAgICAgPHZpZGVvXG4gICAgICAgICAgY29udHJvbHNcbiAgICAgICAgICBzdHlsZT1cIm1heC13aWR0aDogMTAwJVwiXG4gICAgICAgICAgW3NyY109XCJ1cmxcIlxuICAgICAgICAgIHBvc3Rlcj1cImFzc2V0cy9pbWcvYXVkaW8uc3ZnXCJcbiAgICAgICAgPlxuICAgICAgICA8L3ZpZGVvPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVtYmVkZGluZyA9PT0gVXJsRW1iZWRkaW5ncy5JTUFHRSAmJiB1cmwgIT09ICcnXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2Utd3JhcHBlclwiPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgW25nU3JjXT1cInVybFwiXG4gICAgICAgICAgW2FsdF09XCJub2RlPy50aXRsZSA/PyAnRWR1LVNoYXJpbmcgaW1hZ2UnXCJcbiAgICAgICAgICBbdGl0bGVdPVwibm9kZT8udGl0bGUgPz8gJ0VkdS1TaGFyaW5nIGltYWdlJ1wiXG4gICAgICAgID5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbWJlZGRpbmcgPT09IFVybEVtYmVkZGluZ3MuVklERU8gJiYgdXJsICE9PSAnJ1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInZpZGVvLXdyYXBwZXJcIj5cbiAgICAgICAgPHZpZGVvXG4gICAgICAgICAgY29udHJvbHNcbiAgICAgICAgICBbc3JjXT1cInVybFwiXG4gICAgICAgID5cbiAgICAgICAgPC92aWRlbz5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZW1iZWRkaW5nID09PSBVcmxFbWJlZGRpbmdzLlBSRVpJIHx8IGVtYmVkZGluZyA9PT0gVXJsRW1iZWRkaW5ncy5MRUFSTklOR0FQUFMpICYmIHVybCAhPT0gJydcIj5cbiAgICAgIDxpZnJhbWUgY2xhc3M9XCJlZHVVcmxGcmFtZVwiIFtzcmNdPXNhbml0aXplZFVybCBhbGxvd2Z1bGxzY3JlZW49XCJcIiBhbGxvdz1cImF1dG9wbGF5OyBmdWxsc2NyZWVuXCIgPjwvaWZyYW1lPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiIWdkcHJPa1wiPlxuICAgIEhhbHQhIFN0b3AhXG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJjb25zZW50VG9HZHByV2FybmluZygpXCI+V2VpdGVyITwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -155,7 +155,7 @@ export class RenderComponent {
|
|
|
155
155
|
}
|
|
156
156
|
async checkModule() {
|
|
157
157
|
console.log("Checking module");
|
|
158
|
-
if (!await this.moduleInfoService.isAvailableBackendObject(this.
|
|
158
|
+
if (!await this.moduleInfoService.isAvailableBackendObject(this.node)) {
|
|
159
159
|
console.log("using frontend only module");
|
|
160
160
|
if (this.node !== undefined) {
|
|
161
161
|
return this.moduleInfoService.getFrontendModuleSetting(this.node);
|
|
@@ -171,9 +171,9 @@ export class RenderComponent {
|
|
|
171
171
|
return "default";
|
|
172
172
|
}
|
|
173
173
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: RenderComponent, deps: [{ token: i0.Injector }, { token: i1.RenderControllerWrapperService }, { token: i1.JobInfoControllerService }, { token: i2.ModuleInfoService }, { token: i3.PlatformLocation }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
174
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: RenderComponent, isStandalone: true, selector: "rs-root", inputs: { request: "request", node: "node" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"module module-{{(renderData$ | async)?.module}}\">\n <ng-container *ngIf=\"renderData$ | async as data\">\n @defer (when data?.module === 'IMAGE'){\n <rs-module-image [data]=\"data\" [node]=\"node\"></rs-module-image>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n @defer (when data?.module === 'VIDEO'){\n <rs-module-video [data]=\"data\" [node]=\"node\"></rs-module-video>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n @defer (when data?.module === 'PDF' || data?.module === 'DOCUMENT') {\n <rs-module-pdf [data]=\"data\" [node]=\"node\"></rs-module-pdf>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n @defer (when data?.module === 'EDUHTML' || data?.module === 'H5P' || data?.module === 'JUPYTER') {\n <rs-module-eduHtml [data]=\"data\" [node]=\"node\"></rs-module-eduHtml>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n @defer (when data?.module === 'SPREADSHEET') {\n <rs-module-spreadsheet [data]=\"data\" [node]=\"node\"></rs-module-spreadsheet>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n @defer (when data?.module === 'AUDIO'){\n <rs-module-audio [data]=\"data\" [node]=\"node\"></rs-module-audio>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n <ng-container *ngIf=\"data.module === 'default'\">\n @defer (when data.module === 'default') {\n <rs-module-default [node]=\"node\"></rs-module-default>\n }\n </ng-container>\n <ng-container *ngIf=\"data.module === 'url'\">\n @defer (when data.module === 'url') {\n <rs-module-url [node]=\"node\" [data]=\"data\"></rs-module-url>\n }\n </ng-container>\n </ng-container>\n\n <div class=\"progress\" *ngIf=\"(renderData$ | async) === null;\">\n <ng-container *ngIf=\"progress$ | async as progress\">\n <ng-container [ngSwitch]=\"['VIDEO', 'AUDIO'].includes(progress.module) ? 'bar' : 'spinner'\">\n <ng-container *ngSwitchCase=\"'bar'\">\n <div *ngIf=\"(progress.progress ?? 0) < 0\">Queue position: {{-(progress.progress ?? 0)}}</div>\n <mat-progress-bar [value]=\"(progress.progress ?? 0)\" *ngIf=\"(progress.progress ?? 0) >= 0\"></mat-progress-bar>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spinner'\">\n <div *ngIf=\"(progress.progress ?? 0) < 0\">Queue position: {{-(progress.progress ?? 0)}</div>\n <mat-spinner [diameter]=\"50\" *ngIf=\"(progress.progress ?? 0) >= 0\"></mat-spinner>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n</div>\n\n<ng-template #loading>\n <div class=\"progress\">\n <mat-spinner></mat-spinner>\n </div>\n</ng-template>\n", styles: [":host{display:flex;flex-direction:column;gap:20px;padding:10px 30px}.module{overflow:auto;display:flex;flex-grow:1;height:auto;border:1px solid #aaa;padding:20px}.module rs-module-image,.module rs-module-video{width:100%}.module .progress{display:flex;justify-content:center;flex-grow:1}\n"], dependencies: [{ kind: "ngmodule", type: RenderingApiModule }, { kind: "ngmodule", type: RenderingModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i4.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i5.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }], deferBlockDependencies: [() => [import("./module/image/image.component").then(m => m.ImageComponent)], () => [import("./module/video/video.component").then(m => m.VideoComponent)], () => [import("./module/pdf/pdf.component").then(m => m.PdfComponent)], () => [import("./module/eduhtml/eduHtml.component").then(m => m.EduHtmlComponent)], () => [import("./module/spreadsheet/spreadsheet.component").then(m => m.SpreadsheetComponent)], () => [import("./module/audio/audio.component").then(m => m.AudioComponent)], () => [import("./module/default/default.component").then(m => m.DefaultComponent)], () => [import("./module/url/url.component").then(m => m.UrlComponent)]] }); }
|
|
174
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: RenderComponent, isStandalone: true, selector: "rs-root", inputs: { request: "request", node: "node" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"module module-{{(renderData$ | async)?.module}}\">\n <ng-container *ngIf=\"renderData$ | async as data\">\n @defer (when data?.module === 'IMAGE'){\n <rs-module-image [data]=\"data\" [node]=\"node\"></rs-module-image>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n @defer (when data?.module === 'VIDEO'){\n <rs-module-video [data]=\"data\" [node]=\"node\"></rs-module-video>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n @defer (when data?.module === 'PDF' || data?.module === 'DOCUMENT') {\n <rs-module-pdf [data]=\"data\" [node]=\"node\"></rs-module-pdf>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n @defer (when data?.module === 'EDUHTML' || data?.module === 'H5P' || data?.module === 'JUPYTER') {\n <rs-module-eduHtml [data]=\"data\" [node]=\"node\"></rs-module-eduHtml>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n @defer (when data?.module === 'SPREADSHEET') {\n <rs-module-spreadsheet [data]=\"data\" [node]=\"node\"></rs-module-spreadsheet>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n @defer (when data?.module === 'AUDIO'){\n <rs-module-audio [data]=\"data\" [node]=\"node\"></rs-module-audio>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n @defer (when data?.module === 'BINDER'){\n <rs-module-binder [data]=\"data\" [node]=\"node\"></rs-module-binder>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n <ng-container *ngIf=\"data.module === 'default'\">\n @defer (when data.module === 'default') {\n <rs-module-default [node]=\"node\"></rs-module-default>\n }\n </ng-container>\n <ng-container *ngIf=\"data.module === 'url'\">\n @defer (when data.module === 'url') {\n <rs-module-url [node]=\"node\" [data]=\"data\"></rs-module-url>\n }\n </ng-container>\n </ng-container>\n\n <div class=\"progress\" *ngIf=\"(renderData$ | async) === null;\">\n <ng-container *ngIf=\"progress$ | async as progress\">\n <ng-container [ngSwitch]=\"['VIDEO', 'AUDIO'].includes(progress.module) ? 'bar' : 'spinner'\">\n <ng-container *ngSwitchCase=\"'bar'\">\n <div *ngIf=\"(progress.progress ?? 0) < 0\">Queue position: {{-(progress.progress ?? 0)}}</div>\n <mat-progress-bar [value]=\"(progress.progress ?? 0)\" *ngIf=\"(progress.progress ?? 0) >= 0\"></mat-progress-bar>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spinner'\">\n <div *ngIf=\"(progress.progress ?? 0) < 0\">Queue position: {{-(progress.progress ?? 0)}</div>\n <mat-spinner [diameter]=\"50\" *ngIf=\"(progress.progress ?? 0) >= 0\"></mat-spinner>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n</div>\n\n<ng-template #loading>\n <div class=\"progress\">\n <mat-spinner></mat-spinner>\n </div>\n</ng-template>\n", styles: [":host{display:flex;flex-direction:column;gap:20px;padding:10px 30px}.module{overflow:auto;display:flex;flex-grow:1;height:auto;border:1px solid #aaa;padding:20px}.module rs-module-image,.module rs-module-video{width:100%}.module .progress{display:flex;justify-content:center;flex-grow:1}\n"], dependencies: [{ kind: "ngmodule", type: RenderingApiModule }, { kind: "ngmodule", type: RenderingModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i4.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i5.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }], deferBlockDependencies: [() => [import("./module/image/image.component").then(m => m.ImageComponent)], () => [import("./module/video/video.component").then(m => m.VideoComponent)], () => [import("./module/pdf/pdf.component").then(m => m.PdfComponent)], () => [import("./module/eduhtml/eduHtml.component").then(m => m.EduHtmlComponent)], () => [import("./module/spreadsheet/spreadsheet.component").then(m => m.SpreadsheetComponent)], () => [import("./module/audio/audio.component").then(m => m.AudioComponent)], () => [import("./module/binder/binder.component").then(m => m.BinderComponent)], () => [import("./module/default/default.component").then(m => m.DefaultComponent)], () => [import("./module/url/url.component").then(m => m.UrlComponent)]] }); }
|
|
175
175
|
}
|
|
176
|
-
i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "18.2.6", ngImport: i0, type: RenderComponent, resolveDeferredDeps: () => [import("./module/image/image.component").then(m => m.ImageComponent), import("./module/video/video.component").then(m => m.VideoComponent), import("./module/pdf/pdf.component").then(m => m.PdfComponent), import("./module/eduhtml/eduHtml.component").then(m => m.EduHtmlComponent), import("./module/spreadsheet/spreadsheet.component").then(m => m.SpreadsheetComponent), import("./module/audio/audio.component").then(m => m.AudioComponent), import("./module/default/default.component").then(m => m.DefaultComponent), import("./module/url/url.component").then(m => m.UrlComponent)], resolveMetadata: (ImageComponent, VideoComponent, PdfComponent, EduHtmlComponent, SpreadsheetComponent, AudioComponent, DefaultComponent, UrlComponent) => ({ decorators: [{
|
|
176
|
+
i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "18.2.6", ngImport: i0, type: RenderComponent, resolveDeferredDeps: () => [import("./module/image/image.component").then(m => m.ImageComponent), import("./module/video/video.component").then(m => m.VideoComponent), import("./module/pdf/pdf.component").then(m => m.PdfComponent), import("./module/eduhtml/eduHtml.component").then(m => m.EduHtmlComponent), import("./module/spreadsheet/spreadsheet.component").then(m => m.SpreadsheetComponent), import("./module/audio/audio.component").then(m => m.AudioComponent), import("./module/binder/binder.component").then(m => m.BinderComponent), import("./module/default/default.component").then(m => m.DefaultComponent), import("./module/url/url.component").then(m => m.UrlComponent)], resolveMetadata: (ImageComponent, VideoComponent, PdfComponent, EduHtmlComponent, SpreadsheetComponent, AudioComponent, BinderComponent, DefaultComponent, UrlComponent) => ({ decorators: [{
|
|
177
177
|
type: Component,
|
|
178
178
|
args: [{ selector: 'rs-root', standalone: true, imports: [
|
|
179
179
|
RenderingApiModule,
|
|
@@ -188,10 +188,11 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "18.2.6", ng
|
|
|
188
188
|
SpreadsheetComponent,
|
|
189
189
|
DefaultComponent,
|
|
190
190
|
AudioComponent,
|
|
191
|
-
|
|
191
|
+
BinderComponent,
|
|
192
|
+
], template: "<div class=\"module module-{{(renderData$ | async)?.module}}\">\n <ng-container *ngIf=\"renderData$ | async as data\">\n @defer (when data?.module === 'IMAGE'){\n <rs-module-image [data]=\"data\" [node]=\"node\"></rs-module-image>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n @defer (when data?.module === 'VIDEO'){\n <rs-module-video [data]=\"data\" [node]=\"node\"></rs-module-video>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n @defer (when data?.module === 'PDF' || data?.module === 'DOCUMENT') {\n <rs-module-pdf [data]=\"data\" [node]=\"node\"></rs-module-pdf>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n @defer (when data?.module === 'EDUHTML' || data?.module === 'H5P' || data?.module === 'JUPYTER') {\n <rs-module-eduHtml [data]=\"data\" [node]=\"node\"></rs-module-eduHtml>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n @defer (when data?.module === 'SPREADSHEET') {\n <rs-module-spreadsheet [data]=\"data\" [node]=\"node\"></rs-module-spreadsheet>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n @defer (when data?.module === 'AUDIO'){\n <rs-module-audio [data]=\"data\" [node]=\"node\"></rs-module-audio>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n @defer (when data?.module === 'BINDER'){\n <rs-module-binder [data]=\"data\" [node]=\"node\"></rs-module-binder>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n <ng-container *ngIf=\"data.module === 'default'\">\n @defer (when data.module === 'default') {\n <rs-module-default [node]=\"node\"></rs-module-default>\n }\n </ng-container>\n <ng-container *ngIf=\"data.module === 'url'\">\n @defer (when data.module === 'url') {\n <rs-module-url [node]=\"node\" [data]=\"data\"></rs-module-url>\n }\n </ng-container>\n </ng-container>\n\n <div class=\"progress\" *ngIf=\"(renderData$ | async) === null;\">\n <ng-container *ngIf=\"progress$ | async as progress\">\n <ng-container [ngSwitch]=\"['VIDEO', 'AUDIO'].includes(progress.module) ? 'bar' : 'spinner'\">\n <ng-container *ngSwitchCase=\"'bar'\">\n <div *ngIf=\"(progress.progress ?? 0) < 0\">Queue position: {{-(progress.progress ?? 0)}}</div>\n <mat-progress-bar [value]=\"(progress.progress ?? 0)\" *ngIf=\"(progress.progress ?? 0) >= 0\"></mat-progress-bar>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spinner'\">\n <div *ngIf=\"(progress.progress ?? 0) < 0\">Queue position: {{-(progress.progress ?? 0)}</div>\n <mat-spinner [diameter]=\"50\" *ngIf=\"(progress.progress ?? 0) >= 0\"></mat-spinner>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n</div>\n\n<ng-template #loading>\n <div class=\"progress\">\n <mat-spinner></mat-spinner>\n </div>\n</ng-template>\n", styles: [":host{display:flex;flex-direction:column;gap:20px;padding:10px 30px}.module{overflow:auto;display:flex;flex-grow:1;height:auto;border:1px solid #aaa;padding:20px}.module rs-module-image,.module rs-module-video{width:100%}.module .progress{display:flex;justify-content:center;flex-grow:1}\n"] }]
|
|
192
193
|
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1.RenderControllerWrapperService }, { type: i1.JobInfoControllerService }, { type: i2.ModuleInfoService }, { type: i3.PlatformLocation }], propDecorators: { request: [{
|
|
193
194
|
type: Input
|
|
194
195
|
}], node: [{
|
|
195
196
|
type: Input
|
|
196
197
|
}] } }) });
|
|
197
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvcmVuZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy9saWIvcmVuZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQVksS0FBSyxFQUFtQyxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFNbkQsT0FBTyxFQUFDLGVBQWUsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUU1RyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUUxRCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUU1RSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQU9wRSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUEwQnRDLE1BQU0sT0FBTyxlQUFlO0lBVzFCLFlBQ1UsUUFBa0IsRUFDbEIsdUJBQXVELEVBQ3ZELHdCQUFrRCxFQUNsRCxpQkFBb0MsRUFDcEMsZ0JBQWtDO1FBSmxDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUFnQztRQUN2RCw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQVo1Qyx1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDM0IsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDL0IsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBb0IsSUFBSSxD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dG9yLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIFNpbXBsZUNoYW5nZXN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtSZW5kZXJpbmdNb2R1bGV9IGZyb20gXCIuL3JlbmRlcmluZy5tb2R1bGVcIjtcbmltcG9ydCB7XG4gIEpvYkluZm9Db250cm9sbGVyU2VydmljZSxcbiAgUmVuZGVyQ29udHJvbGxlcldyYXBwZXJTZXJ2aWNlLFxuICBSZW5kZXJEYXRhUmVxdWVzdFdpdGhUb2tlblxufSBmcm9tIFwibmd4LXJlbmRlcmluZy1zZXJ2aWNlLWFwaVwiO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGRlYm91bmNlVGltZSwgZmlyc3RWYWx1ZUZyb20sIGludGVydmFsLCBTdWJqZWN0LCBzd2l0Y2hNYXAsIHRha2VVbnRpbH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7SW1hZ2VDb21wb25lbnR9IGZyb20gXCIuL21vZHVsZS9pbWFnZS9pbWFnZS5jb21wb25lbnRcIjtcbmltcG9ydCB7UmVuZGVyaW5nQXBpTW9kdWxlfSBmcm9tIFwiLi9yZW5kZXJpbmctYXBpLm1vZHVsZVwiO1xuaW1wb3J0IHtWaWRlb0NvbXBvbmVudH0gZnJvbSBcIi4vbW9kdWxlL3ZpZGVvL3ZpZGVvLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyXCI7XG5pbXBvcnQge05vZGV9IGZyb20gXCJuZ3gtZWR1LXNoYXJpbmctYXBpXCI7XG5pbXBvcnQge01hdFByb2dyZXNzQmFyTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyXCI7XG5pbXBvcnQge1JlbmRlckRhdGEsIEFzc2V0U3RhdGVJdGVtfSBmcm9tIFwiLi9kdG8vUmVuZGVyRGF0YVwiO1xuaW1wb3J0IHtQZGZDb21wb25lbnR9IGZyb20gXCIuL21vZHVsZS9wZGYvcGRmLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtVcmxDb21wb25lbnR9IGZyb20gXCIuL21vZHVsZS91cmwvdXJsLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtFZHVIdG1sQ29tcG9uZW50fSBmcm9tIFwiLi9tb2R1bGUvZWR1aHRtbC9lZHVIdG1sLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtTcHJlYWRzaGVldENvbXBvbmVudH0gZnJvbSBcIi4vbW9kdWxlL3NwcmVhZHNoZWV0L3NwcmVhZHNoZWV0LmNvbXBvbmVudFwiO1xuaW1wb3J0IHtNb2R1bGVJbmZvU2VydmljZX0gZnJvbSBcIi4uL21vZHVsZS1pbmZvLnNlcnZpY2VcIjtcbmltcG9ydCB7ZmlsdGVyfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7UGxhdGZvcm1Mb2NhdGlvbn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHtEZWZhdWx0Q29tcG9uZW50fSBmcm9tIFwiLi9tb2R1bGUvZGVmYXVsdC9kZWZhdWx0LmNvbXBvbmVudFwiO1xuaW1wb3J0IHtGcm9udGVuZE1vZHVsZUNvbmZpZ30gZnJvbSBcIi4vZHRvL0Zyb250ZW5kTW9kdWxlQ29uZmlnXCI7XG5pbXBvcnQge0F1ZGlvQ29tcG9uZW50fSBmcm9tIFwiLi9tb2R1bGUvYXVkaW8vYXVkaW8uY29tcG9uZW50XCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JzLXJvb3QnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgUmVuZGVyaW5nQXBpTW9kdWxlLFxuICAgIFJlbmRlcmluZ01vZHVsZSxcbiAgICBJbWFnZUNvbXBvbmVudCxcbiAgICBWaWRlb0NvbXBvbmVudCxcbiAgICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXG4gICAgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUsXG4gICAgUGRmQ29tcG9uZW50LFxuICAgIFVybENvbXBvbmVudCxcbiAgICBFZHVIdG1sQ29tcG9uZW50LFxuICAgIFNwcmVhZHNoZWV0Q29tcG9uZW50LFxuICAgIERlZmF1bHRDb21wb25lbnQsXG4gICAgQXVkaW9Db21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9yZW5kZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcmVuZGVyLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBSZW5kZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCB7XG4gIC8vIEBUT0RPOiBVc2UgZW51bSBwcm92aWRlZCBieSBCYWNrZW5kIVxuICBASW5wdXQoKSByZXF1ZXN0OiBSZW5kZXJEYXRhUmVxdWVzdFdpdGhUb2tlbiB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgbm9kZTogTm9kZSB8IHVuZGVmaW5lZDtcbiAgc2VydmljZVdvcmtlclJlYWR5ID0gZmFsc2U7XG4gIGxvYWREYXRhID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcmVuZGVyRGF0YSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFJlbmRlckRhdGEgfCBudWxsPihudWxsKTtcbiAgZmluaXNoZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBzb21lQnV0Tm90QWxsRmluaXNoZWQgPSBuZXcgU3ViamVjdDxCb29sZWFuPigpXG4gIHByb2dyZXNzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBtb2R1bGU6IHN0cmluZywgcHJvZ3Jlc3M/OiBudW1iZXIgfSB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgcmVuZGVyQ29udHJvbGxlclNlcnZpY2U6IFJlbmRlckNvbnRyb2xsZXJXcmFwcGVyU2VydmljZSxcbiAgICBwcml2YXRlIGpvYkluZm9Db250cm9sbGVyU2VydmljZTogSm9iSW5mb0NvbnRyb2xsZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kdWxlSW5mb1NlcnZpY2U6IE1vZHVsZUluZm9TZXJ2aWNlLFxuICAgIHByaXZhdGUgcGxhdGZvcm1Mb2NhdGlvbjogUGxhdGZvcm1Mb2NhdGlvblxuICApIHtcbiAgICB0aGlzLmxvYWREYXRhLnBpcGUoXG4gICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5ub2RlICE9PSB1bmRlZmluZWQgJiYgdGhpcy5zZXJ2aWNlV29ya2VyUmVhZHkpLFxuICAgICAgZGVib3VuY2VUaW1lKDEwKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7cmV0dXJuIHRoaXMuY2hlY2tNb2R1bGUoKX0pXG4gICAgKS5zdWJzY3JpYmUoYXN5bmMgKGZyb250ZW5kTW9kdWxlKSA9PiB7XG4gICAgICBpZiAoZnJvbnRlbmRNb2R1bGUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgZGF0YTogUmVuZGVyRGF0YSA9IHtcbiAgICAgICAgICBtb2R1bGU6IGZyb250ZW5kTW9kdWxlLm1vZHVsZSxcbiAgICAgICAgICBmcm9udGVuZE1vZHVsZUNvbmZpZzogZnJvbnRlbmRNb2R1bGVcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlbmRlckRhdGEkLm5leHQoZGF0YSlcbiAgICAgICAgdGhpcy5maW5pc2hlZC5uZXh0KClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJlbmRlclJlc3BvbnNlRGF0YSA9IChhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnJlbmRlckNvbnRyb2xsZXJTZXJ2aWNlLmdldFJlbmRlckRhdGFUb2tlbih0aGlzLnJlcXVlc3QhISkpKTtcbiAgICAgICAgLy8gSXQgaXMgcG9zc2libGUgdGhhdCB0aGVyZSBpcyBjb21wbGV0ZWQgZGF0YSBBTkQgYSBqb2IgaWQgKGlmIHRoZXJlKS5cbiAgICAgICAgLy8gV2UgbmVlZCB0aGUgZGF0YSB0aGVuIEFORCB0cmlnZ2VyIHRoZSBwcm9ncmVzcyBsb2dpYyB0byBrZWVwIGxvYWRpbmcgdGhlIHVuZmluaXNoZWQgcmVzb2x1dGlvbnMuXG4gICAgICAgIGNvbnNvbGUubG9nKHJlbmRlclJlc3BvbnNlRGF0YSk7XG4gICAgICAgIGlmIChyZW5kZXJSZXNwb25zZURhdGEuam9iSWQgPT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdCBpdGVtcyA9IHJlbmRlclJlc3BvbnNlRGF0YS5vYmplY3RMaW5rcz8ubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgICAgY29uc3QgYXNzZXRJdGVtOiBBc3NldFN0YXRlSXRlbSA9IHtcbiAgICAgICAgICAgICAgbGluazogaXRlbS5saW5rLFxuICAgICAgICAgICAgICBwcm9ncmVzczogMTAwLFxuICAgICAgICAgICAgICBoZWlnaHQ6IGl0ZW0uaGVpZ2h0LFxuICAgICAgICAgICAgICB3aWR0aDogaXRlbS53aWR0aFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFzc2V0SXRlbVxuICAgICAgICAgIH0pXG4gICAgICAgICAgY29uc3QgZGF0YTogUmVuZGVyRGF0YSA9IHtcbiAgICAgICAgICAgIG1vZHVsZTogcmVuZGVyUmVzcG9uc2VEYXRhLm1vZHVsZSA/PyAnJyxcbiAgICAgICAgICAgIGl0ZW1zOiBpdGVtc1xuICAgICAgICAgIH1cbiAgICAgICAgICByZW5kZXJSZXNwb25zZURhdGEub2JqZWN0TGlua3MgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnJlbmRlckRhdGEkLm5leHQoZGF0YSk7XG4gICAgICAgICAgdGhpcy5maW5pc2hlZC5uZXh0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5wcm9ncmVzcyQubmV4dCh7bW9kdWxlOiByZW5kZXJSZXNwb25zZURhdGEubW9kdWxlID8/ICcnfSk7XG4gICAgICAgICAgaW50ZXJ2YWwoNTAwKS5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZmluaXNoZWQpLFxuICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuam9iSW5mb0NvbnRyb2xsZXJTZXJ2aWNlLmdldEpvYkluZm8oe2pvYklkOiByZW5kZXJSZXNwb25zZURhdGEuam9iSWQhIX0pLnBpcGUoKSksXG4gICAgICAgICAgKS5zdWJzY3JpYmUoYXN5bmMgKHN0YXR1cykgPT4ge1xuICAgICAgICAgICAgLy8gU29tZSwgYnV0IG5vdCBhbGwsIGpvYnMgYXJlIGZpbmlzaGVkIC0+XG4gICAgICAgICAgICBpZiAoc3RhdHVzLmpvYnMuc29tZShqID0+IGouc3RhdHVzID09PSAnRklOSVNIRUQnKSAmJiBzdGF0dXMuc3RhdHVzICE9PSAnRklOSVNIRUQnKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gc3RhdHVzLmpvYnMubWFwKHN1YkpvYiA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXNzZXRJdGVtOiBBc3NldFN0YXRlSXRlbSA9IHtcbiAgICAgICAgICAgICAgICAgIGxpbms6IHN1YkpvYi5vYmplY3RMaW5rPy5saW5rID8/IFwiXCIsXG4gICAgICAgICAgICAgICAgICBwcm9ncmVzczogc3ViSm9iLnN0YXR1cyAhPT0gJ1FVRVVFRCcgPyBzdWJKb2IucHJvZ3Jlc3MgOiAtKHN1YkpvYi5wcm9ncmVzcyArIDEpLFxuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBzdWJKb2Iub2JqZWN0TGluaz8uaGVpZ2h0ID8/IHN1YkpvYi5xdWFsaXR5LFxuICAgICAgICAgICAgICAgICAgd2lkdGg6IHN1YkpvYi5vYmplY3RMaW5rPy53aWR0aCA/PyAwXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBhc3NldEl0ZW1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgY29uc3QgZGF0YTogUmVuZGVyRGF0YSA9IHtcbiAgICAgICAgICAgICAgICBtb2R1bGU6IHJlbmRlclJlc3BvbnNlRGF0YS5tb2R1bGUgPz8gJycsXG4gICAgICAgICAgICAgICAgaXRlbXM6IGl0ZW1zXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdGhpcy5yZW5kZXJEYXRhJC5uZXh0KGRhdGEpXG4gICAgICAgICAgICAgIHRoaXMuc29tZUJ1dE5vdEFsbEZpbmlzaGVkLm5leHQodHJ1ZSlcbiAgICAgICAgICAgICAgLy8gYWxsIGZpbmlzaGVkIGFuZC9vciBmYWlsZWRcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdHVzLnN0YXR1cyA9PT0gJ0ZJTklTSEVEJyB8fCBzdGF0dXMuc3RhdHVzID09PSAnRkFJTEVEJykge1xuICAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IHN0YXR1cy5qb2JzLm1hcChzdWJKb2IgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFzc2V0SXRlbTogQXNzZXRTdGF0ZUl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgICBsaW5rOiBzdWJKb2Iub2JqZWN0TGluaz8ubGluayA/PyBcIlwiLFxuICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3M6IHN1YkpvYi5wcm9ncmVzcyxcbiAgICAgICAgICAgICAgICAgIGhlaWdodDogc3ViSm9iLm9iamVjdExpbms/LmhlaWdodCA/PyBzdWJKb2IucXVhbGl0eSxcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiBzdWJKb2Iub2JqZWN0TGluaz8ud2lkdGggPz8gMFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYXNzZXRJdGVtXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIGNvbnN0IGRhdGE6IFJlbmRlckRhdGEgPSB7XG4gICAgICAgICAgICAgICAgbW9kdWxlOiByZW5kZXJSZXNwb25zZURhdGEubW9kdWxlID8/ICcnLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBpdGVtc1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRoaXMucmVuZGVyRGF0YSQubmV4dChkYXRhKVxuICAgICAgICAgICAgICB0aGlzLmZpbmlzaGVkLm5leHQoKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gbm8gZmluaXNoZWQgam9icyAtPiBzaG93IGVpdGhlciBvbmUgcHJvZ3Jlc3MgYmFyIHdpdGggcmFjZSBsZWFkZXIgKHByb2dyZXNzIDAtMTAwKVxuICAgICAgICAgICAgICAvLyBvciBxdWV1ZSBwb3NpdGlvbiAocHJvZ3Jlc3MgKC1pbmYsLTFdKVxuICAgICAgICAgICAgICBsZXQgcHJvZ3Jlc3MgPSAwXG4gICAgICAgICAgICAgIGlmIChzdGF0dXMuam9icy5zb21lKGogPT4gai5zdGF0dXMgPT09ICdQUk9DRVNTSU5HJykpIHtcbiAgICAgICAgICAgICAgICBwcm9ncmVzcyA9IE1hdGgubWF4KC4uLnN0YXR1cy5qb2JzLm1hcChqID0+IGoucHJvZ3Jlc3MpKVxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXR1cy5qb2JzLnNvbWUoaiA9PiBqLnN0YXR1cyA9PT0gJ1FVRVVFRCcpKSB7XG4gICAgICAgICAgICAgICAgcHJvZ3Jlc3MgPSAtKE1hdGgubWluKC4uLnN0YXR1cy5qb2JzLm1hcChqID0+IGoucHJvZ3Jlc3MgKyAxKSkpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdGhpcy5wcm9ncmVzcyQubmV4dCh7XG4gICAgICAgICAgICAgICAgbW9kdWxlOiBzdGF0dXMubW9kdWxlID8/ICcnLFxuICAgICAgICAgICAgICAgIHByb2dyZXNzOiBwcm9ncmVzc1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgaWYgKCdzZXJ2aWNlV29ya2VyJyBpbiBuYXZpZ2F0b3IpIHtcbiAgICAgIGNvbnN0IHJlZyA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmdldFJlZ2lzdHJhdGlvbnMoKTtcbiAgICAgIGNvbnNvbGUubG9nKCdyZWdpc3RlcmVkIHdvcmtlcnMgJywgcmVnPy5sZW5ndGgpO1xuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocmVnPy5tYXAoKHI6IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24pID0+IHIudW5yZWdpc3RlcigpKSk7XG4gICAgICBjb25zb2xlLmxvZygncmVnaXN0ZXJlZCB3b3JrZXJzIGFmdGVyIHVucmVnaXN0ZXJpbmcnLCByZWc/Lmxlbmd0aCk7XG4gICAgICBjb25zdCByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rlcih0aGlzLnBsYXRmb3JtTG9jYXRpb24uZ2V0QmFzZUhyZWZGcm9tRE9NKCkgKyAnZWR1LXNlcnZpY2Utd29ya2VyLmpzJywge1xuICAgICAgICBzY29wZTogdGhpcy5wbGF0Zm9ybUxvY2F0aW9uLmdldEJhc2VIcmVmRnJvbURPTSgpXG4gICAgICB9KTtcbiAgICAgIGNvbnNvbGUubG9nKCdTZXJ2aWNlIFdvcmtlciByZWdpc3RlcmVkJywgcmVnaXN0cmF0aW9uKTtcbiAgICAgIGlmIChyZWdpc3RyYXRpb24ud2FpdGluZykge1xuICAgICAgICByZWdpc3RyYXRpb24ud2FpdGluZy5wb3N0TWVzc2FnZSh7IHR5cGU6ICdTS0lQX1dBSVRJTkcnIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXJ2aWNlV29ya2VyUmVhZHkgPSB0cnVlO1xuICAgICAgdGhpcy5sb2FkRGF0YS5uZXh0KCk7XG4gICAgICByZWdpc3RyYXRpb24ub251cGRhdGVmb3VuZCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgbmV3V29ya2VyID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7XG4gICAgICAgIGlmIChuZXdXb3JrZXIpIHtcbiAgICAgICAgICBuZXdXb3JrZXIub25zdGF0ZWNoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChuZXdXb3JrZXIuc3RhdGUgPT09ICdpbnN0YWxsZWQnKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdOZXcgU2VydmljZSBXb3JrZXIgc3RhdGU6IGluc3RhbGxlZCcpO1xuICAgICAgICAgICAgICBpZiAobmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuY29udHJvbGxlcikge1xuICAgICAgICAgICAgICAgIG5ld1dvcmtlci5wb3N0TWVzc2FnZSh7IHR5cGU6ICdTS0lQX1dBSVRJTkcnIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS53YXJuKCdTZXJ2aWNlIHdvcmtlciBBUEkgbm90IGF2YWlsYWJsZScpO1xuICAgIH1cbiAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdjb250cm9sbGVyY2hhbmdlJywgKCkgPT4ge1xuICAgICAgY29uc29sZS5sb2coJ1NlcnZpY2UgV29ya2VyIGNvbnRyb2xsaW5nIHRoaXMgcGFnZS4nKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIG5nT25DaGFuZ2VzKF86IFNpbXBsZUNoYW5nZXMpIHtcbiAgICB0aGlzLmxvYWREYXRhLm5leHQoKTtcbiAgfVxuXG4gIGFzeW5jIGNoZWNrTW9kdWxlKCk6IFByb21pc2U8RnJvbnRlbmRNb2R1bGVDb25maWcgfCBudWxsPiB7XG4gICAgY29uc29sZS5sb2coXCJDaGVja2luZyBtb2R1bGVcIilcbiAgICBpZiAoISBhd2FpdCB0aGlzLm1vZHVsZUluZm9TZXJ2aWNlLmlzQXZhaWxhYmxlQmFja2VuZE9iamVjdCh0aGlzLnJlcXVlc3QpKSB7XG4gICAgICBjb25zb2xlLmxvZyhcInVzaW5nIGZyb250ZW5kIG9ubHkgbW9kdWxlXCIpXG4gICAgICBpZiAodGhpcy5ub2RlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kdWxlSW5mb1NlcnZpY2UuZ2V0RnJvbnRlbmRNb2R1bGVTZXR0aW5nKHRoaXMubm9kZSlcbiAgICAgIH1cbiAgICAgIHJldHVybiB7bW9kdWxlOiBcImRlZmF1bHRcIiwgdXJsTW9kdWxlQ29uZmlnOiBudWxsfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZyhcInVzaW5nIGJhY2tlbmQgbW9kdWxlXCIpXG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgfVxuXG4gIGdldEZyb250ZW5kTW9kdWxlKCk6IHN0cmluZyB7XG5cbiAgICByZXR1cm4gXCJkZWZhdWx0XCJcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1vZHVsZSBtb2R1bGUte3socmVuZGVyRGF0YSQgfCBhc3luYyk/Lm1vZHVsZX19XCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZW5kZXJEYXRhJCB8IGFzeW5jIGFzIGRhdGFcIj5cbiAgICBAZGVmZXIgKHdoZW4gZGF0YT8ubW9kdWxlID09PSAnSU1BR0UnKXtcbiAgICAgIDxycy1tb2R1bGUtaW1hZ2UgW2RhdGFdPVwiZGF0YVwiIFtub2RlXT1cIm5vZGVcIj48L3JzLW1vZHVsZS1pbWFnZT5cbiAgICB9IEBsb2FkaW5nIHtcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2FkaW5nXCI+PC9uZy1jb250YWluZXI+XG4gICAgfVxuICAgIEBkZWZlciAod2hlbiBkYXRhPy5tb2R1bGUgPT09ICdWSURFTycpe1xuICAgICAgPHJzLW1vZHVsZS12aWRlbyBbZGF0YV09XCJkYXRhXCIgW25vZGVdPVwibm9kZVwiPjwvcnMtbW9kdWxlLXZpZGVvPlxuICAgIH0gQGxvYWRpbmcge1xuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxvYWRpbmdcIj48L25nLWNvbnRhaW5lcj5cbiAgICB9XG4gICAgQGRlZmVyICh3aGVuIGRhdGE/Lm1vZHVsZSA9PT0gJ1BERicgfHwgZGF0YT8ubW9kdWxlID09PSAnRE9DVU1FTlQnKSB7XG4gICAgICA8cnMtbW9kdWxlLXBkZiBbZGF0YV09XCJkYXRhXCIgW25vZGVdPVwibm9kZVwiPjwvcnMtbW9kdWxlLXBkZj5cbiAgICB9IEBsb2FkaW5nIHtcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2FkaW5nXCI+PC9uZy1jb250YWluZXI+XG4gICAgfVxuICAgIEBkZWZlciAod2hlbiBkYXRhPy5tb2R1bGUgPT09ICdFRFVIVE1MJyB8fCBkYXRhPy5tb2R1bGUgPT09ICdINVAnIHx8IGRhdGE/Lm1vZHVsZSA9PT0gJ0pVUFlURVInKSB7XG4gICAgICA8cnMtbW9kdWxlLWVkdUh0bWwgW2RhdGFdPVwiZGF0YVwiIFtub2RlXT1cIm5vZGVcIj48L3JzLW1vZHVsZS1lZHVIdG1sPlxuICAgIH0gQGxvYWRpbmcge1xuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxvYWRpbmdcIj48L25nLWNvbnRhaW5lcj5cbiAgICB9XG4gICAgQGRlZmVyICh3aGVuIGRhdGE/Lm1vZHVsZSA9PT0gJ1NQUkVBRFNIRUVUJykge1xuICAgICAgPHJzLW1vZHVsZS1zcHJlYWRzaGVldCBbZGF0YV09XCJkYXRhXCIgW25vZGVdPVwibm9kZVwiPjwvcnMtbW9kdWxlLXNwcmVhZHNoZWV0PlxuICAgIH0gQGxvYWRpbmcge1xuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxvYWRpbmdcIj48L25nLWNvbnRhaW5lcj5cbiAgICB9XG4gICAgQGRlZmVyICh3aGVuIGRhdGE/Lm1vZHVsZSA9PT0gJ0FVRElPJyl7XG4gICAgICA8cnMtbW9kdWxlLWF1ZGlvIFtkYXRhXT1cImRhdGFcIiBbbm9kZV09XCJub2RlXCI+PC9ycy1tb2R1bGUtYXVkaW8+XG4gICAgfSBAbG9hZGluZyB7XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9hZGluZ1wiPjwvbmctY29udGFpbmVyPlxuICAgIH1cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YS5tb2R1bGUgPT09ICdkZWZhdWx0J1wiPlxuICAgICAgQGRlZmVyICh3aGVuIGRhdGEubW9kdWxlID09PSAnZGVmYXVsdCcpIHtcbiAgICAgICAgPHJzLW1vZHVsZS1kZWZhdWx0IFtub2RlXT1cIm5vZGVcIj48L3JzLW1vZHVsZS1kZWZhdWx0PlxuICAgICAgfVxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhLm1vZHVsZSA9PT0gJ3VybCdcIj5cbiAgICAgIEBkZWZlciAod2hlbiBkYXRhLm1vZHVsZSA9PT0gJ3VybCcpIHtcbiAgICAgICAgPHJzLW1vZHVsZS11cmwgW25vZGVdPVwibm9kZVwiIFtkYXRhXT1cImRhdGFcIj48L3JzLW1vZHVsZS11cmw+XG4gICAgICB9XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxkaXYgY2xhc3M9XCJwcm9ncmVzc1wiICpuZ0lmPVwiKHJlbmRlckRhdGEkIHwgYXN5bmMpID09PSBudWxsO1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9ncmVzcyQgfCBhc3luYyBhcyBwcm9ncmVzc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiWydWSURFTycsICdBVURJTyddLmluY2x1ZGVzKHByb2dyZXNzLm1vZHVsZSkgPyAnYmFyJyA6ICdzcGlubmVyJ1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInYmFyJ1wiPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCIocHJvZ3Jlc3MucHJvZ3Jlc3MgPz8gMCkgPCAwXCI+UXVldWUgcG9zaXRpb246IHt7LShwcm9ncmVzcy5wcm9ncmVzcyA/PyAwKX19PC9kaXY+XG4gICAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgW3ZhbHVlXT1cIihwcm9ncmVzcy5wcm9ncmVzcyA/PyAwKVwiICpuZ0lmPVwiKHByb2dyZXNzLnByb2dyZXNzID8/IDApID49IDBcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc3Bpbm5lcidcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKHByb2dyZXNzLnByb2dyZXNzID8/IDApIDwgMFwiPlF1ZXVlIHBvc2l0aW9uOiB7ey0ocHJvZ3Jlc3MucHJvZ3Jlc3MgPz8gMCl9PC9kaXY+XG4gICAgICAgICAgPG1hdC1zcGlubmVyIFtkaWFtZXRlcl09XCI1MFwiICpuZ0lmPVwiKHByb2dyZXNzLnByb2dyZXNzID8/IDApID49IDBcIj48L21hdC1zcGlubmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2xvYWRpbmc+XG4gIDxkaXYgY2xhc3M9XCJwcm9ncmVzc1wiPlxuICAgIDxtYXQtc3Bpbm5lcj48L21hdC1zcGlubmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
198
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvcmVuZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy9saWIvcmVuZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQVksS0FBSyxFQUFtQyxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFNbkQsT0FBTyxFQUFDLGVBQWUsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUU1RyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUUxRCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUU1RSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQU9wRSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUE0QnRDLE1BQU0sT0FBTyxlQUFlO0lBVzFCLFlBQ1UsUUFBa0IsRUFDbEIsdUJBQXVELEVBQ3ZELHdCQUFrRCxFQUNsRCxpQkFBb0MsRUFDcEMsZ0JBQWtDO1FBSmxDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUFnQztRQUN2RCw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQVo1Qyx1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDM0IsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDL0IsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBb0IsSUFBSSxD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b25lbnQsIEluamVjdG9yLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIFNpbXBsZUNoYW5nZXN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtSZW5kZXJpbmdNb2R1bGV9IGZyb20gXCIuL3JlbmRlcmluZy5tb2R1bGVcIjtcbmltcG9ydCB7XG4gIEpvYkluZm9Db250cm9sbGVyU2VydmljZSxcbiAgUmVuZGVyQ29udHJvbGxlcldyYXBwZXJTZXJ2aWNlLFxuICBSZW5kZXJEYXRhUmVxdWVzdFdpdGhUb2tlblxufSBmcm9tIFwibmd4LXJlbmRlcmluZy1zZXJ2aWNlLWFwaVwiO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGRlYm91bmNlVGltZSwgZmlyc3RWYWx1ZUZyb20sIGludGVydmFsLCBTdWJqZWN0LCBzd2l0Y2hNYXAsIHRha2VVbnRpbH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7SW1hZ2VDb21wb25lbnR9IGZyb20gXCIuL21vZHVsZS9pbWFnZS9pbWFnZS5jb21wb25lbnRcIjtcbmltcG9ydCB7UmVuZGVyaW5nQXBpTW9kdWxlfSBmcm9tIFwiLi9yZW5kZXJpbmctYXBpLm1vZHVsZVwiO1xuaW1wb3J0IHtWaWRlb0NvbXBvbmVudH0gZnJvbSBcIi4vbW9kdWxlL3ZpZGVvL3ZpZGVvLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyXCI7XG5pbXBvcnQge05vZGV9IGZyb20gXCJuZ3gtZWR1LXNoYXJpbmctYXBpXCI7XG5pbXBvcnQge01hdFByb2dyZXNzQmFyTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyXCI7XG5pbXBvcnQge1JlbmRlckRhdGEsIEFzc2V0U3RhdGVJdGVtfSBmcm9tIFwiLi9kdG8vUmVuZGVyRGF0YVwiO1xuaW1wb3J0IHtQZGZDb21wb25lbnR9IGZyb20gXCIuL21vZHVsZS9wZGYvcGRmLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtVcmxDb21wb25lbnR9IGZyb20gXCIuL21vZHVsZS91cmwvdXJsLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtFZHVIdG1sQ29tcG9uZW50fSBmcm9tIFwiLi9tb2R1bGUvZWR1aHRtbC9lZHVIdG1sLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtTcHJlYWRzaGVldENvbXBvbmVudH0gZnJvbSBcIi4vbW9kdWxlL3NwcmVhZHNoZWV0L3NwcmVhZHNoZWV0LmNvbXBvbmVudFwiO1xuaW1wb3J0IHtNb2R1bGVJbmZvU2VydmljZX0gZnJvbSBcIi4uL21vZHVsZS1pbmZvLnNlcnZpY2VcIjtcbmltcG9ydCB7ZmlsdGVyfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7UGxhdGZvcm1Mb2NhdGlvbn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHtEZWZhdWx0Q29tcG9uZW50fSBmcm9tIFwiLi9tb2R1bGUvZGVmYXVsdC9kZWZhdWx0LmNvbXBvbmVudFwiO1xuaW1wb3J0IHtGcm9udGVuZE1vZHVsZUNvbmZpZ30gZnJvbSBcIi4vZHRvL0Zyb250ZW5kTW9kdWxlQ29uZmlnXCI7XG5pbXBvcnQge0F1ZGlvQ29tcG9uZW50fSBmcm9tIFwiLi9tb2R1bGUvYXVkaW8vYXVkaW8uY29tcG9uZW50XCI7XG5pbXBvcnQge0JpbmRlckNvbXBvbmVudH0gZnJvbSBcIi4vbW9kdWxlL2JpbmRlci9iaW5kZXIuY29tcG9uZW50XCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JzLXJvb3QnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgUmVuZGVyaW5nQXBpTW9kdWxlLFxuICAgIFJlbmRlcmluZ01vZHVsZSxcbiAgICBJbWFnZUNvbXBvbmVudCxcbiAgICBWaWRlb0NvbXBvbmVudCxcbiAgICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXG4gICAgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUsXG4gICAgUGRmQ29tcG9uZW50LFxuICAgIFVybENvbXBvbmVudCxcbiAgICBFZHVIdG1sQ29tcG9uZW50LFxuICAgIFNwcmVhZHNoZWV0Q29tcG9uZW50LFxuICAgIERlZmF1bHRDb21wb25lbnQsXG4gICAgQXVkaW9Db21wb25lbnQsXG4gICAgQmluZGVyQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVuZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3JlbmRlci5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgUmVuZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQge1xuICAvLyBAVE9ETzogVXNlIGVudW0gcHJvdmlkZWQgYnkgQmFja2VuZCFcbiAgQElucHV0KCkgcmVxdWVzdDogUmVuZGVyRGF0YVJlcXVlc3RXaXRoVG9rZW4gfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIG5vZGU6IE5vZGUgfCB1bmRlZmluZWQ7XG4gIHNlcnZpY2VXb3JrZXJSZWFkeSA9IGZhbHNlO1xuICBsb2FkRGF0YSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHJlbmRlckRhdGEkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxSZW5kZXJEYXRhIHwgbnVsbD4obnVsbCk7XG4gIGZpbmlzaGVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgc29tZUJ1dE5vdEFsbEZpbmlzaGVkID0gbmV3IFN1YmplY3Q8Qm9vbGVhbj4oKVxuICBwcm9ncmVzcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgbW9kdWxlOiBzdHJpbmcsIHByb2dyZXNzPzogbnVtYmVyIH0gfCBudWxsPihudWxsKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIHJlbmRlckNvbnRyb2xsZXJTZXJ2aWNlOiBSZW5kZXJDb250cm9sbGVyV3JhcHBlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBqb2JJbmZvQ29udHJvbGxlclNlcnZpY2U6IEpvYkluZm9Db250cm9sbGVyU2VydmljZSxcbiAgICBwcml2YXRlIG1vZHVsZUluZm9TZXJ2aWNlOiBNb2R1bGVJbmZvU2VydmljZSxcbiAgICBwcml2YXRlIHBsYXRmb3JtTG9jYXRpb246IFBsYXRmb3JtTG9jYXRpb25cbiAgKSB7XG4gICAgdGhpcy5sb2FkRGF0YS5waXBlKFxuICAgICAgZmlsdGVyKCgpID0+IHRoaXMubm9kZSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuc2VydmljZVdvcmtlclJlYWR5KSxcbiAgICAgIGRlYm91bmNlVGltZSgxMCksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4ge3JldHVybiB0aGlzLmNoZWNrTW9kdWxlKCl9KVxuICAgICkuc3Vic2NyaWJlKGFzeW5jIChmcm9udGVuZE1vZHVsZSkgPT4ge1xuICAgICAgaWYgKGZyb250ZW5kTW9kdWxlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGRhdGE6IFJlbmRlckRhdGEgPSB7XG4gICAgICAgICAgbW9kdWxlOiBmcm9udGVuZE1vZHVsZS5tb2R1bGUsXG4gICAgICAgICAgZnJvbnRlbmRNb2R1bGVDb25maWc6IGZyb250ZW5kTW9kdWxlXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZW5kZXJEYXRhJC5uZXh0KGRhdGEpXG4gICAgICAgIHRoaXMuZmluaXNoZWQubmV4dCgpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZW5kZXJSZXNwb25zZURhdGEgPSAoYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5yZW5kZXJDb250cm9sbGVyU2VydmljZS5nZXRSZW5kZXJEYXRhVG9rZW4odGhpcy5yZXF1ZXN0ISEpKSk7XG4gICAgICAgIC8vIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlcmUgaXMgY29tcGxldGVkIGRhdGEgQU5EIGEgam9iIGlkIChpZiB0aGVyZSkuXG4gICAgICAgIC8vIFdlIG5lZWQgdGhlIGRhdGEgdGhlbiBBTkQgdHJpZ2dlciB0aGUgcHJvZ3Jlc3MgbG9naWMgdG8ga2VlcCBsb2FkaW5nIHRoZSB1bmZpbmlzaGVkIHJlc29sdXRpb25zLlxuICAgICAgICBjb25zb2xlLmxvZyhyZW5kZXJSZXNwb25zZURhdGEpO1xuICAgICAgICBpZiAocmVuZGVyUmVzcG9uc2VEYXRhLmpvYklkID09PSBudWxsKSB7XG4gICAgICAgICAgY29uc3QgaXRlbXMgPSByZW5kZXJSZXNwb25zZURhdGEub2JqZWN0TGlua3M/Lm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFzc2V0SXRlbTogQXNzZXRTdGF0ZUl0ZW0gPSB7XG4gICAgICAgICAgICAgIGxpbms6IGl0ZW0ubGluayxcbiAgICAgICAgICAgICAgcHJvZ3Jlc3M6IDEwMCxcbiAgICAgICAgICAgICAgaGVpZ2h0OiBpdGVtLmhlaWdodCxcbiAgICAgICAgICAgICAgd2lkdGg6IGl0ZW0ud2lkdGhcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhc3NldEl0ZW1cbiAgICAgICAgICB9KVxuICAgICAgICAgIGNvbnN0IGRhdGE6IFJlbmRlckRhdGEgPSB7XG4gICAgICAgICAgICBtb2R1bGU6IHJlbmRlclJlc3BvbnNlRGF0YS5tb2R1bGUgPz8gJycsXG4gICAgICAgICAgICBpdGVtczogaXRlbXNcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVuZGVyUmVzcG9uc2VEYXRhLm9iamVjdExpbmtzICE9PSB1bmRlZmluZWQgJiYgdGhpcy5yZW5kZXJEYXRhJC5uZXh0KGRhdGEpO1xuICAgICAgICAgIHRoaXMuZmluaXNoZWQubmV4dCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucHJvZ3Jlc3MkLm5leHQoe21vZHVsZTogcmVuZGVyUmVzcG9uc2VEYXRhLm1vZHVsZSA/PyAnJ30pO1xuICAgICAgICAgIGludGVydmFsKDUwMCkucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmZpbmlzaGVkKSxcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmpvYkluZm9Db250cm9sbGVyU2VydmljZS5nZXRKb2JJbmZvKHtqb2JJZDogcmVuZGVyUmVzcG9uc2VEYXRhLmpvYklkISF9KS5waXBlKCkpLFxuICAgICAgICAgICkuc3Vic2NyaWJlKGFzeW5jIChzdGF0dXMpID0+IHtcbiAgICAgICAgICAgIC8vIFNvbWUsIGJ1dCBub3QgYWxsLCBqb2JzIGFyZSBmaW5pc2hlZCAtPlxuICAgICAgICAgICAgaWYgKHN0YXR1cy5qb2JzLnNvbWUoaiA9PiBqLnN0YXR1cyA9PT0gJ0ZJTklTSEVEJykgJiYgc3RhdHVzLnN0YXR1cyAhPT0gJ0ZJTklTSEVEJykge1xuICAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IHN0YXR1cy5qb2JzLm1hcChzdWJKb2IgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFzc2V0SXRlbTogQXNzZXRTdGF0ZUl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgICBsaW5rOiBzdWJKb2Iub2JqZWN0TGluaz8ubGluayA/PyBcIlwiLFxuICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3M6IHN1YkpvYi5zdGF0dXMgIT09ICdRVUVVRUQnID8gc3ViSm9iLnByb2dyZXNzIDogLShzdWJKb2IucHJvZ3Jlc3MgKyAxKSxcbiAgICAgICAgICAgICAgICAgIGhlaWdodDogc3ViSm9iLm9iamVjdExpbms/LmhlaWdodCA/PyBzdWJKb2IucXVhbGl0eSxcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiBzdWJKb2Iub2JqZWN0TGluaz8ud2lkdGggPz8gMFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYXNzZXRJdGVtXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIGNvbnN0IGRhdGE6IFJlbmRlckRhdGEgPSB7XG4gICAgICAgICAgICAgICAgbW9kdWxlOiByZW5kZXJSZXNwb25zZURhdGEubW9kdWxlID8/ICcnLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBpdGVtc1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRoaXMucmVuZGVyRGF0YSQubmV4dChkYXRhKVxuICAgICAgICAgICAgICB0aGlzLnNvbWVCdXROb3RBbGxGaW5pc2hlZC5uZXh0KHRydWUpXG4gICAgICAgICAgICAgIC8vIGFsbCBmaW5pc2hlZCBhbmQvb3IgZmFpbGVkXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXR1cy5zdGF0dXMgPT09ICdGSU5JU0hFRCcgfHwgc3RhdHVzLnN0YXR1cyA9PT0gJ0ZBSUxFRCcpIHtcbiAgICAgICAgICAgICAgY29uc3QgaXRlbXMgPSBzdGF0dXMuam9icy5tYXAoc3ViSm9iID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhc3NldEl0ZW06IEFzc2V0U3RhdGVJdGVtID0ge1xuICAgICAgICAgICAgICAgICAgbGluazogc3ViSm9iLm9iamVjdExpbms/LmxpbmsgPz8gXCJcIixcbiAgICAgICAgICAgICAgICAgIHByb2dyZXNzOiBzdWJKb2IucHJvZ3Jlc3MsXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ6IHN1YkpvYi5vYmplY3RMaW5rPy5oZWlnaHQgPz8gc3ViSm9iLnF1YWxpdHksXG4gICAgICAgICAgICAgICAgICB3aWR0aDogc3ViSm9iLm9iamVjdExpbms/LndpZHRoID8/IDBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFzc2V0SXRlbVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBjb25zdCBkYXRhOiBSZW5kZXJEYXRhID0ge1xuICAgICAgICAgICAgICAgIG1vZHVsZTogcmVuZGVyUmVzcG9uc2VEYXRhLm1vZHVsZSA/PyAnJyxcbiAgICAgICAgICAgICAgICBpdGVtczogaXRlbXNcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aGlzLnJlbmRlckRhdGEkLm5leHQoZGF0YSlcbiAgICAgICAgICAgICAgdGhpcy5maW5pc2hlZC5uZXh0KClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIG5vIGZpbmlzaGVkIGpvYnMgLT4gc2hvdyBlaXRoZXIgb25lIHByb2dyZXNzIGJhciB3aXRoIHJhY2UgbGVhZGVyIChwcm9ncmVzcyAwLTEwMClcbiAgICAgICAgICAgICAgLy8gb3IgcXVldWUgcG9zaXRpb24gKHByb2dyZXNzICgtaW5mLC0xXSlcbiAgICAgICAgICAgICAgbGV0IHByb2dyZXNzID0gMFxuICAgICAgICAgICAgICBpZiAoc3RhdHVzLmpvYnMuc29tZShqID0+IGouc3RhdHVzID09PSAnUFJPQ0VTU0lORycpKSB7XG4gICAgICAgICAgICAgICAgcHJvZ3Jlc3MgPSBNYXRoLm1heCguLi5zdGF0dXMuam9icy5tYXAoaiA9PiBqLnByb2dyZXNzKSlcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdGF0dXMuam9icy5zb21lKGogPT4gai5zdGF0dXMgPT09ICdRVUVVRUQnKSkge1xuICAgICAgICAgICAgICAgIHByb2dyZXNzID0gLShNYXRoLm1pbiguLi5zdGF0dXMuam9icy5tYXAoaiA9PiBqLnByb2dyZXNzICsgMSkpKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3MkLm5leHQoe1xuICAgICAgICAgICAgICAgIG1vZHVsZTogc3RhdHVzLm1vZHVsZSA/PyAnJyxcbiAgICAgICAgICAgICAgICBwcm9ncmVzczogcHJvZ3Jlc3NcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIGlmICgnc2VydmljZVdvcmtlcicgaW4gbmF2aWdhdG9yKSB7XG4gICAgICBjb25zdCByZWcgPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5nZXRSZWdpc3RyYXRpb25zKCk7XG4gICAgICBjb25zb2xlLmxvZygncmVnaXN0ZXJlZCB3b3JrZXJzICcsIHJlZz8ubGVuZ3RoKTtcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKHJlZz8ubWFwKChyOiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKSA9PiByLnVucmVnaXN0ZXIoKSkpO1xuICAgICAgY29uc29sZS5sb2coJ3JlZ2lzdGVyZWQgd29ya2VycyBhZnRlciB1bnJlZ2lzdGVyaW5nJywgcmVnPy5sZW5ndGgpO1xuICAgICAgY29uc3QgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIodGhpcy5wbGF0Zm9ybUxvY2F0aW9uLmdldEJhc2VIcmVmRnJvbURPTSgpICsgJ2VkdS1zZXJ2aWNlLXdvcmtlci5qcycsIHtcbiAgICAgICAgc2NvcGU6IHRoaXMucGxhdGZvcm1Mb2NhdGlvbi5nZXRCYXNlSHJlZkZyb21ET00oKVxuICAgICAgfSk7XG4gICAgICBjb25zb2xlLmxvZygnU2VydmljZSBXb3JrZXIgcmVnaXN0ZXJlZCcsIHJlZ2lzdHJhdGlvbik7XG4gICAgICBpZiAocmVnaXN0cmF0aW9uLndhaXRpbmcpIHtcbiAgICAgICAgcmVnaXN0cmF0aW9uLndhaXRpbmcucG9zdE1lc3NhZ2UoeyB0eXBlOiAnU0tJUF9XQUlUSU5HJyB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VydmljZVdvcmtlclJlYWR5ID0gdHJ1ZTtcbiAgICAgIHRoaXMubG9hZERhdGEubmV4dCgpO1xuICAgICAgcmVnaXN0cmF0aW9uLm9udXBkYXRlZm91bmQgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1dvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nO1xuICAgICAgICBpZiAobmV3V29ya2VyKSB7XG4gICAgICAgICAgbmV3V29ya2VyLm9uc3RhdGVjaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAobmV3V29ya2VyLnN0YXRlID09PSAnaW5zdGFsbGVkJykge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZygnTmV3IFNlcnZpY2UgV29ya2VyIHN0YXRlOiBpbnN0YWxsZWQnKTtcbiAgICAgICAgICAgICAgaWYgKG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgICAgICBuZXdXb3JrZXIucG9zdE1lc3NhZ2UoeyB0eXBlOiAnU0tJUF9XQUlUSU5HJyB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybignU2VydmljZSB3b3JrZXIgQVBJIG5vdCBhdmFpbGFibGUnKTtcbiAgICB9XG4gICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignY29udHJvbGxlcmNoYW5nZScsICgpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdTZXJ2aWNlIFdvcmtlciBjb250cm9sbGluZyB0aGlzIHBhZ2UuJyk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBuZ09uQ2hhbmdlcyhfOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgdGhpcy5sb2FkRGF0YS5uZXh0KCk7XG4gIH1cblxuICBhc3luYyBjaGVja01vZHVsZSgpOiBQcm9taXNlPEZyb250ZW5kTW9kdWxlQ29uZmlnIHwgbnVsbD4ge1xuICAgIGNvbnNvbGUubG9nKFwiQ2hlY2tpbmcgbW9kdWxlXCIpXG4gICAgaWYgKCEgYXdhaXQgdGhpcy5tb2R1bGVJbmZvU2VydmljZS5pc0F2YWlsYWJsZUJhY2tlbmRPYmplY3QodGhpcy5ub2RlKSkge1xuICAgICAgY29uc29sZS5sb2coXCJ1c2luZyBmcm9udGVuZCBvbmx5IG1vZHVsZVwiKVxuICAgICAgaWYgKHRoaXMubm9kZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZHVsZUluZm9TZXJ2aWNlLmdldEZyb250ZW5kTW9kdWxlU2V0dGluZyh0aGlzLm5vZGUpXG4gICAgICB9XG4gICAgICByZXR1cm4ge21vZHVsZTogXCJkZWZhdWx0XCIsIHVybE1vZHVsZUNvbmZpZzogbnVsbH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coXCJ1c2luZyBiYWNrZW5kIG1vZHVsZVwiKVxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gIH1cblxuICBnZXRGcm9udGVuZE1vZHVsZSgpOiBzdHJpbmcge1xuXG4gICAgcmV0dXJuIFwiZGVmYXVsdFwiXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtb2R1bGUgbW9kdWxlLXt7KHJlbmRlckRhdGEkIHwgYXN5bmMpPy5tb2R1bGV9fVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVuZGVyRGF0YSQgfCBhc3luYyBhcyBkYXRhXCI+XG4gICAgQGRlZmVyICh3aGVuIGRhdGE/Lm1vZHVsZSA9PT0gJ0lNQUdFJyl7XG4gICAgICA8cnMtbW9kdWxlLWltYWdlIFtkYXRhXT1cImRhdGFcIiBbbm9kZV09XCJub2RlXCI+PC9ycy1tb2R1bGUtaW1hZ2U+XG4gICAgfSBAbG9hZGluZyB7XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9hZGluZ1wiPjwvbmctY29udGFpbmVyPlxuICAgIH1cbiAgICBAZGVmZXIgKHdoZW4gZGF0YT8ubW9kdWxlID09PSAnVklERU8nKXtcbiAgICAgIDxycy1tb2R1bGUtdmlkZW8gW2RhdGFdPVwiZGF0YVwiIFtub2RlXT1cIm5vZGVcIj48L3JzLW1vZHVsZS12aWRlbz5cbiAgICB9IEBsb2FkaW5nIHtcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2FkaW5nXCI+PC9uZy1jb250YWluZXI+XG4gICAgfVxuICAgIEBkZWZlciAod2hlbiBkYXRhPy5tb2R1bGUgPT09ICdQREYnIHx8IGRhdGE/Lm1vZHVsZSA9PT0gJ0RPQ1VNRU5UJykge1xuICAgICAgPHJzLW1vZHVsZS1wZGYgW2RhdGFdPVwiZGF0YVwiIFtub2RlXT1cIm5vZGVcIj48L3JzLW1vZHVsZS1wZGY+XG4gICAgfSBAbG9hZGluZyB7XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9hZGluZ1wiPjwvbmctY29udGFpbmVyPlxuICAgIH1cbiAgICBAZGVmZXIgKHdoZW4gZGF0YT8ubW9kdWxlID09PSAnRURVSFRNTCcgfHwgZGF0YT8ubW9kdWxlID09PSAnSDVQJyB8fCBkYXRhPy5tb2R1bGUgPT09ICdKVVBZVEVSJykge1xuICAgICAgPHJzLW1vZHVsZS1lZHVIdG1sIFtkYXRhXT1cImRhdGFcIiBbbm9kZV09XCJub2RlXCI+PC9ycy1tb2R1bGUtZWR1SHRtbD5cbiAgICB9IEBsb2FkaW5nIHtcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2FkaW5nXCI+PC9uZy1jb250YWluZXI+XG4gICAgfVxuICAgIEBkZWZlciAod2hlbiBkYXRhPy5tb2R1bGUgPT09ICdTUFJFQURTSEVFVCcpIHtcbiAgICAgIDxycy1tb2R1bGUtc3ByZWFkc2hlZXQgW2RhdGFdPVwiZGF0YVwiIFtub2RlXT1cIm5vZGVcIj48L3JzLW1vZHVsZS1zcHJlYWRzaGVldD5cbiAgICB9IEBsb2FkaW5nIHtcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2FkaW5nXCI+PC9uZy1jb250YWluZXI+XG4gICAgfVxuICAgIEBkZWZlciAod2hlbiBkYXRhPy5tb2R1bGUgPT09ICdBVURJTycpe1xuICAgICAgPHJzLW1vZHVsZS1hdWRpbyBbZGF0YV09XCJkYXRhXCIgW25vZGVdPVwibm9kZVwiPjwvcnMtbW9kdWxlLWF1ZGlvPlxuICAgIH0gQGxvYWRpbmcge1xuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxvYWRpbmdcIj48L25nLWNvbnRhaW5lcj5cbiAgICB9XG4gICAgQGRlZmVyICh3aGVuIGRhdGE/Lm1vZHVsZSA9PT0gJ0JJTkRFUicpe1xuICAgICAgPHJzLW1vZHVsZS1iaW5kZXIgW2RhdGFdPVwiZGF0YVwiIFtub2RlXT1cIm5vZGVcIj48L3JzLW1vZHVsZS1iaW5kZXI+XG4gICAgfSBAbG9hZGluZyB7XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9hZGluZ1wiPjwvbmctY29udGFpbmVyPlxuICAgIH1cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YS5tb2R1bGUgPT09ICdkZWZhdWx0J1wiPlxuICAgICAgQGRlZmVyICh3aGVuIGRhdGEubW9kdWxlID09PSAnZGVmYXVsdCcpIHtcbiAgICAgICAgPHJzLW1vZHVsZS1kZWZhdWx0IFtub2RlXT1cIm5vZGVcIj48L3JzLW1vZHVsZS1kZWZhdWx0PlxuICAgICAgfVxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhLm1vZHVsZSA9PT0gJ3VybCdcIj5cbiAgICAgIEBkZWZlciAod2hlbiBkYXRhLm1vZHVsZSA9PT0gJ3VybCcpIHtcbiAgICAgICAgPHJzLW1vZHVsZS11cmwgW25vZGVdPVwibm9kZVwiIFtkYXRhXT1cImRhdGFcIj48L3JzLW1vZHVsZS11cmw+XG4gICAgICB9XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxkaXYgY2xhc3M9XCJwcm9ncmVzc1wiICpuZ0lmPVwiKHJlbmRlckRhdGEkIHwgYXN5bmMpID09PSBudWxsO1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9ncmVzcyQgfCBhc3luYyBhcyBwcm9ncmVzc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiWydWSURFTycsICdBVURJTyddLmluY2x1ZGVzKHByb2dyZXNzLm1vZHVsZSkgPyAnYmFyJyA6ICdzcGlubmVyJ1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInYmFyJ1wiPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCIocHJvZ3Jlc3MucHJvZ3Jlc3MgPz8gMCkgPCAwXCI+UXVldWUgcG9zaXRpb246IHt7LShwcm9ncmVzcy5wcm9ncmVzcyA/PyAwKX19PC9kaXY+XG4gICAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgW3ZhbHVlXT1cIihwcm9ncmVzcy5wcm9ncmVzcyA/PyAwKVwiICpuZ0lmPVwiKHByb2dyZXNzLnByb2dyZXNzID8/IDApID49IDBcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc3Bpbm5lcidcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKHByb2dyZXNzLnByb2dyZXNzID8/IDApIDwgMFwiPlF1ZXVlIHBvc2l0aW9uOiB7ey0ocHJvZ3Jlc3MucHJvZ3Jlc3MgPz8gMCl9PC9kaXY+XG4gICAgICAgICAgPG1hdC1zcGlubmVyIFtkaWFtZXRlcl09XCI1MFwiICpuZ0lmPVwiKHByb2dyZXNzLnByb2dyZXNzID8/IDApID49IDBcIj48L21hdC1zcGlubmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2xvYWRpbmc+XG4gIDxkaXYgY2xhc3M9XCJwcm9ncmVzc1wiPlxuICAgIDxtYXQtc3Bpbm5lcj48L21hdC1zcGlubmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Injectable } from "@angular/core";
|
|
2
2
|
import { firstValueFrom } from "rxjs";
|
|
3
|
+
import { RestConstants } from "ngx-edu-sharing-api";
|
|
3
4
|
import { UrlEmbeddings } from "./lib/dto/FrontendModuleConfig";
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "ngx-rendering-service-api";
|
|
@@ -12,9 +13,9 @@ export class ModuleInfoService {
|
|
|
12
13
|
this.availableReplicationSources = [];
|
|
13
14
|
this.availableResourceTypes = [];
|
|
14
15
|
}
|
|
15
|
-
async isAvailableBackendObject(
|
|
16
|
+
async isAvailableBackendObject(node) {
|
|
16
17
|
if (!this.isInitialized()) {
|
|
17
|
-
const result = await firstValueFrom(this.service.getModulesInfo({ repoId:
|
|
18
|
+
const result = await firstValueFrom(this.service.getModulesInfo({ repoId: node?.ref.repo ?? "" }));
|
|
18
19
|
result.forEach(info => {
|
|
19
20
|
if (info.typeMapping.type !== undefined && info.typeMapping.type !== null) {
|
|
20
21
|
this.availableMediaTypes.push(info.typeMapping.type);
|
|
@@ -36,10 +37,11 @@ export class ModuleInfoService {
|
|
|
36
37
|
}
|
|
37
38
|
});
|
|
38
39
|
}
|
|
39
|
-
const mimeTypePrefix = (
|
|
40
|
-
return this.availableMediaTypes.includes(
|
|
41
|
-
this.
|
|
42
|
-
this.
|
|
40
|
+
const mimeTypePrefix = (node?.mimetype ?? "").split('/', 2)[0];
|
|
41
|
+
return this.availableMediaTypes.includes(node?.mediatype ?? "") ||
|
|
42
|
+
this.availableReplicationSources.includes(node?.properties?.[RestConstants.CCM_PROP_REPLICATIONSOURCE]?.[0] ?? "") ||
|
|
43
|
+
this.availableResourceTypes.includes(node?.properties?.[RestConstants.CCM_PROP_CCRESSOURCETYPE]?.[0] ?? "") ||
|
|
44
|
+
this.availableMimeTypes.includes(node?.mimetype ?? "") ||
|
|
43
45
|
this.availableMimeTypePrefixes.includes(mimeTypePrefix);
|
|
44
46
|
}
|
|
45
47
|
isInitialized() {
|
|
@@ -62,6 +64,15 @@ export class ModuleInfoService {
|
|
|
62
64
|
checkUrlModule(node) {
|
|
63
65
|
const url = node.properties?.["ccm:wwwurl"]?.[0] || '';
|
|
64
66
|
console.log("URL MODULE url: " + url);
|
|
67
|
+
const checkLearningApps = () => {
|
|
68
|
+
if (node.remote?.repository?.repositoryType?.toLowerCase() === "learningapps") {
|
|
69
|
+
return {
|
|
70
|
+
embedding: UrlEmbeddings.LEARNINGAPPS,
|
|
71
|
+
externalId: ""
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
return null;
|
|
75
|
+
};
|
|
65
76
|
/**
|
|
66
77
|
* Function checkYouTube
|
|
67
78
|
*/
|
|
@@ -185,7 +196,8 @@ export class ModuleInfoService {
|
|
|
185
196
|
/**
|
|
186
197
|
* embedding if applicable to node
|
|
187
198
|
*/
|
|
188
|
-
const embedding =
|
|
199
|
+
const embedding = checkLearningApps()
|
|
200
|
+
?? checkYouTube()
|
|
189
201
|
?? checkVimeo()
|
|
190
202
|
?? checkGenericVideo()
|
|
191
203
|
?? checkAudio()
|
|
@@ -209,4 +221,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
209
221
|
type: Injectable,
|
|
210
222
|
args: [{ providedIn: "root" }]
|
|
211
223
|
}], ctorParameters: () => [{ type: i1.ModuleInfoControllerService }] });
|
|
212
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLWluZm8uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2R1bGUtaW5mby5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQXVCLGFBQWEsRUFBa0IsTUFBTSxnQ0FBZ0MsQ0FBQzs7O0FBR3BHLE1BQU0sT0FBTyxpQkFBaUI7SUFRNUIsWUFDVSxPQUFvQztRQUFwQyxZQUFPLEdBQVAsT0FBTyxDQUE2QjtRQVB0Qyx3QkFBbUIsR0FBYSxFQUFFLENBQUE7UUFDbEMsdUJBQWtCLEdBQWEsRUFBRSxDQUFBO1FBQ2pDLDhCQUF5QixHQUFhLEVBQUUsQ0FBQTtRQUN4QyxnQ0FBMkIsR0FBYSxFQUFFLENBQUE7UUFDMUMsMkJBQXNCLEdBQWEsRUFBRSxDQUFBO0lBSTFDLENBQUM7SUFFSixLQUFLLENBQUMsd0JBQXdCLENBQUMsT0FBK0M7UUFDNUUsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDO1lBQzFCLE1BQU0sTUFBTSxHQUFHLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEVBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLElBQUksRUFBRSxFQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ2pHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3BCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO29CQUMxRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUE7Z0JBQ3RE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dCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge01vZHVsZUluZm9Db250cm9sbGVyU2VydmljZSwgUmVuZGVyRGF0YVJlcXVlc3RXaXRoVG9rZW59IGZyb20gXCJuZ3gtcmVuZGVyaW5nLXNlcnZpY2UtYXBpXCI7XG5pbXBvcnQge2ZpcnN0VmFsdWVGcm9tfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtOb2RlfSBmcm9tIFwibmd4LWVkdS1zaGFyaW5nLWFwaVwiO1xuaW1wb3J0IHtGcm9udGVuZE1vZHVsZUNvbmZpZywgVXJsRW1iZWRkaW5ncywgVXJsTW9kdWxlQ29uZmlnfSBmcm9tIFwiLi9saWIvZHRvL0Zyb250ZW5kTW9kdWxlQ29uZmlnXCI7XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiBcInJvb3RcIn0pXG5leHBvcnQgY2xhc3MgTW9kdWxlSW5mb1NlcnZpY2Uge1xuXG4gIHByaXZhdGUgYXZhaWxhYmxlTWVkaWFUeXBlczogU3RyaW5nW10gPSBbXVxuICBwcml2YXRlIGF2YWlsYWJsZU1pbWVUeXBlczogU3RyaW5nW10gPSBbXVxuICBwcml2YXRlIGF2YWlsYWJsZU1pbWVUeXBlUHJlZml4ZXM6IFN0cmluZ1tdID0gW11cbiAgcHJpdmF0ZSBhdmFpbGFibGVSZXBsaWNhdGlvblNvdXJjZXM6IFN0cmluZ1tdID0gW11cbiAgcHJpdmF0ZSBhdmFpbGFibGVSZXNvdXJjZVR5cGVzOiBTdHJpbmdbXSA9IFtdXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBNb2R1bGVJbmZvQ29udHJvbGxlclNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIGlzQXZhaWxhYmxlQmFja2VuZE9iamVjdChyZXF1ZXN0OiBSZW5kZXJEYXRhUmVxdWVzdFdpdGhUb2tlbiB8IHVuZGVmaW5lZCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICghdGhpcy5pc0luaXRpYWxpemVkKCkpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2VydmljZS5nZXRNb2R1bGVzSW5mbyh7cmVwb0lkOiByZXF1ZXN0Py5yZXBvSWQgPz8gXCJcIn0pKVxuICAgICAgcmVzdWx0LmZvckVhY2goaW5mbyA9PiB7XG4gICAgICAgIGlmIChpbmZvLnR5cGVNYXBwaW5nLnR5cGUgIT09IHVuZGVmaW5lZCAmJiBpbmZvLnR5cGVNYXBwaW5nLnR5cGUgIT09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLmF2YWlsYWJsZU1lZGlhVHlwZXMucHVzaChpbmZvLnR5cGVNYXBwaW5nLnR5cGUpXG4gICAgICAgIH0gZWxzZSBpZihpbmZvLnR5cGVNYXBwaW5nLnJlc291cmNlVHlwZSAhPT0gdW5kZWZpbmVkICYmIGluZm8udHlwZU1hcHBpbmcucmVzb3VyY2VUeXBlICE9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5hdmFpbGFibGVSZXNvdXJjZVR5cGVzLnB1c2goaW5mby50eXBlTWFwcGluZy5yZXNvdXJjZVR5cGUpXG4gICAgICAgIH0gZWxzZSBpZihpbmZvLnR5cGVNYXBwaW5nLnJlcGxpY2F0aW9uU291cmNlICE9PSB1bmRlZmluZWQgJiYgaW5mby50eXBlTWFwcGluZy5yZXBsaWNhdGlvblNvdXJjZSAhPT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMuYXZhaWxhYmxlUmVwbGljYXRpb25Tb3VyY2VzLnB1c2goaW5mby50eXBlTWFwcGluZy5yZXBsaWNhdGlvblNvdXJjZSlcbiAgICAgICAgfSBlbHNlIGlmIChpbmZvLnR5cGVNYXBwaW5nLm1pbWVUeXBlU3VmZml4ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICYmIGluZm8udHlwZU1hcHBpbmcubWltZVR5cGVTdWZmaXggIT09IG51bGxcbiAgICAgICAgICAgICYmIGluZm8udHlwZU1hcHBpbmcubWltZVR5cGVQcmVmaXggIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgJiYgaW5mby50eXBlTWFwcGluZy5taW1lVHlwZVByZWZpeCAhPT0gbnVsbFxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmF2YWlsYWJsZU1pbWVUeXBlcy5wdXNoKGAke2luZm8udHlwZU1hcHBpbmcubWltZVR5cGVQcmVmaXh9LyR7aW5mby50eXBlTWFwcGluZy5taW1lVHlwZVN1ZmZpeH1gKVxuICAgICAgICB9IGVsc2UgaWYgKGluZm8udHlwZU1hcHBpbmcubWltZVR5cGVQcmVmaXggIT09IHVuZGVmaW5lZCAmJiBpbmZvLnR5cGVNYXBwaW5nLm1pbWVUeXBlUHJlZml4ICE9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5hdmFpbGFibGVNaW1lVHlwZVByZWZpeGVzLnB1c2goaW5mby50eXBlTWFwcGluZy5taW1lVHlwZVByZWZpeClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgY29uc3QgbWltZVR5cGVQcmVmaXggPSAocmVxdWVzdD8ubWltZVR5cGUgPz8gJycpLnNwbGl0KCcvJywgMilbMF1cbiAgICByZXR1cm4gdGhpcy5hdmFpbGFibGVNZWRpYVR5cGVzLmluY2x1ZGVzKHJlcXVlc3Q/LnR5cGUgPz8gXCJcIikgfHxcbiAgICAgIHRoaXMuYXZhaWxhYmxlUmVzb3VyY2VUeXBlcy5pbmNsdWRlcyhyZXF1ZXN0Py5yZXNvdXJjZVR5cGUgPz8gXCJcIikgfHxcbiAgICAgIHRoaXMuYXZhaWxhYmxlTWltZVR5cGVzLmluY2x1ZGVzKHJlcXVlc3Q/Lm1pbWVUeXBlID8/IFwiXCIpIHx8XG4gICAgICB0aGlzLmF2YWlsYWJsZU1pbWVUeXBlUHJlZml4ZXMuaW5jbHVkZXMobWltZVR5cGVQcmVmaXgpXG4gIH1cblxuICBwcml2YXRlIGlzSW5pdGlhbGl6ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYXZhaWxhYmxlTWVkaWFUeXBlcy5sZW5ndGhcbiAgICAgICsgdGhpcy5hdmFpbGFibGVNaW1lVHlwZXMubGVuZ3RoXG4gICAgICArIHRoaXMuYXZhaWxhYmxlTWltZVR5cGVQcmVmaXhlcy5sZW5ndGhcbiAgICAgICsgdGhpcy5hdmFpbGFibGVSZXBsaWNhdGlvblNvdXJjZXMubGVuZ3RoXG4gICAgICArIHRoaXMuYXZhaWxhYmxlUmVzb3VyY2VUeXBlcy5sZW5ndGggIT09IDBcbiAgfVxuXG4gIGdldEZyb250ZW5kTW9kdWxlU2V0dGluZyhub2RlOiBOb2RlKTogRnJvbnRlbmRNb2R1bGVDb25maWcge1xuICAgIGNvbnN0IHVybE1vZHVsZUNvbmZpZyA9IHRoaXMuY2hlY2tVcmxNb2R1bGUobm9kZSlcbiAgICBpZiAodXJsTW9kdWxlQ29uZmlnICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdXJsTW9kdWxlQ29uZmlnXG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBtb2R1bGU6IFwiZGVmYXVsdFwiLFxuICAgICAgdXJsTW9kdWxlQ29uZmlnOiBudWxsXG4gICAgfVxuICB9XG5cbiAgY2hlY2tVcmxNb2R1bGUobm9kZTogTm9kZSk6IEZyb250ZW5kTW9kdWxlQ29uZmlnIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsID0gbm9kZS5wcm9wZXJ0aWVzPy5bXCJjY206d3d3dXJsXCJdPy5bMF0gfHwgJydcbiAgICBjb25zb2xlLmxvZyhcIlVSTCBNT0RVTEUgdXJsOiBcIiArIHVybClcbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiBjaGVja1lvdVR1YmVcbiAgICAgKi9cbiAgICBjb25zdCBjaGVja1lvdVR1YmUgPSAoKTogVXJsTW9kdWxlQ29uZmlnIHwgbnVsbCA9PiB7XG4gICAgICBpZiAobm9kZS5yZW1vdGU/LnJlcG9zaXRvcnk/LnJlcG9zaXRvcnlUeXBlPy50b0xvd2VyQ2FzZSgpID09PSBcInlvdXR1YmVcIikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGVtYmVkZGluZzogVXJsRW1iZWRkaW5ncy5ZT1VUVUJFLFxuICAgICAgICAgIGV4dGVybmFsSWQ6IG5vZGUucmVtb3RlPy5pZCA/PyBcIlwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh1cmwuaW5jbHVkZXMoXCJ5b3V0dS5iZVwiKSApIHtcbiAgICAgICAgY29uc3Qgc3BsaXQgPSB1cmwuc3BsaXQoXCIvXCIpXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZW1iZWRkaW5nOiBVcmxFbWJlZGRpbmdzLllPVVRVQkUsXG4gICAgICAgICAgZXh0ZXJuYWxJZDogc3BsaXRbc3BsaXQubGVuZ3RoIC0gMV1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHVybC5pbmNsdWRlcyhcIi55b3V0dWJlLmNvbS93YXRjaD9cIikpIHtcbiAgICAgICAgY29uc3QgdXJsT2JqZWN0ID0gbmV3IFVSTCh1cmwpXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZW1iZWRkaW5nOiBVcmxFbWJlZGRpbmdzLllPVVRVQkUsXG4gICAgICAgICAgZXh0ZXJuYWxJZDogdXJsT2JqZWN0LnNlYXJjaFBhcmFtcy5nZXQoXCJ2XCIpID8/IFwiXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgLyoqXG4gICAgICogRnVuY3Rpb24gY2hlY2tWaW1lb1xuICAgICAqL1xuICAgIGNvbnN0IGNoZWNrVmltZW8gPSAoKTogVXJsTW9kdWxlQ29uZmlnIHwgbnVsbCA9PiB7XG4gICAgICBpZiAodXJsLmluY2x1ZGVzKFwidmltZW8uY29tXCIpKSB7XG4gICAgICAgIGNvbnN0IHNwbGl0ID0gdXJsLnNwbGl0KFwiL1wiKVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGVtYmVkZGluZzogVXJsRW1iZWRkaW5ncy5WSU1FTyxcbiAgICAgICAgICBleHRlcm5hbElkOiBzcGxpdFtzcGxpdC5sZW5ndGggLSAxXVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICBjb25zdCBjaGVja0dlbmVyaWNWaWRlbyA9ICgpOiBVcmxNb2R1bGVDb25maWcgfCBudWxsID0+IHtcbiAgICAgIGlmICh1cmwubGVuZ3RoID4gMCAmJiBbXCJtcDRcIiwgXCJ3ZWJtXCJdLmluY2x1ZGVzKHVybC5zcGxpdChcIi5cIikucG9wKCkgPz8gXCJcIikpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBlbWJlZGRpbmc6IFVybEVtYmVkZGluZ3MuVklERU8sXG4gICAgICAgICAgZXh0ZXJuYWxJZDogXCJcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiBjaGVja0F1ZGlvXG4gICAgICovXG4gICAgY29uc3QgY2hlY2tBdWRpbyA9ICgpOiBVcmxNb2R1bGVDb25maWcgfCBudWxsID0+IHtcbiAgICAgIGlmICh1cmwubGVuZ3RoID4gMCAmJiBub2RlLm1pbWV0eXBlPy5zdGFydHNXaXRoKFwiYXVkaW9cIikpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBlbWJlZGRpbmc6IFVybEVtYmVkZGluZ3MuQVVESU8sXG4gICAgICAgICAgZXh0ZXJuYWxJZDogXCJcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiBjaGVja0x0aTEzVG9vbE9iamVjdFxuICAgICAqL1xuICAgIGNvbnN0IGNoZWNrTHRpMTNUb29sT2JqZWN0ID0gKCk6IFVybE1vZHVsZUNvbmZpZyB8IG51bGwgPT4ge1xuICAgICAgaWYgKG5vZGUuYXNwZWN0cz8uaW5jbHVkZXMoJ2NjbTpsdGl0b29sX25vZGUnKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGVtYmVkZGluZzogVXJsRW1iZWRkaW5ncy5MVEkxM1RPT0wsXG4gICAgICAgICAgZXh0ZXJuYWxJZDogXCJcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiBjaGVja0ltYWdlXG4gICAgICovXG4gICAgY29uc3QgY2hlY2tJbWFnZSA9ICgpOiBVcmxNb2R1bGVDb25maWcgfCBudWxsICA9PiB7XG4gICAgICBpZiAobm9kZS5wcm9wZXJ0aWVzPy5bXCJjY206cmVtb3RlcmVwb3NpdG9yeXR5cGVcIl0/LlswXSA9PT0gXCJEREJcIikge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuICAgICAgaWYgKG5vZGUubWVkaWF0eXBlID09PSBcImZpbGUtaW1hZ2VcIikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGVtYmVkZGluZzogVXJsRW1iZWRkaW5ncy5JTUFHRSxcbiAgICAgICAgICBleHRlcm5hbElkOiBcIlwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IG1pbWVUeXBlU3BsaXQgPSBub2RlLm1pbWV0eXBlPy5zcGxpdChcIi9cIikgPz8gW11cbiAgICAgIGlmIChtaW1lVHlwZVNwbGl0Lmxlbmd0aCA9PT0gMiAmJiBbJ3BuZycsICdqcGcnLCAnanBlZycsICdnaWYnXS5pbmNsdWRlcyhtaW1lVHlwZVNwbGl0WzFdKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGVtYmVkZGluZzogVXJsRW1iZWRkaW5ncy5JTUFHRSxcbiAgICAgICAgICBleHRlcm5hbElkOiBcIlwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIC8qKlxuICAgICAqICBGdW5jdGlvbiBkZXRlY3RINVBcbiAgICAgKi9cbiAgICBjb25zdCBkZXRlY3RINVAgPSAoKTogVXJsTW9kdWxlQ29uZmlnIHwgbnVsbCA9PiB7XG4gICAgICBpZiAodXJsLmxlbmd0aCA+IDAgJiYgdXJsLmluY2x1ZGVzKCdoNXAub3JnL2g1cC9lbWJlZCcpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZW1iZWRkaW5nOiBVcmxFbWJlZGRpbmdzLkg1UCxcbiAgICAgICAgICBleHRlcm5hbElkOiBcIlwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIC8qKlxuICAgICAqIEZ1bmN0aW9uIGRldGVjdFByZXppXG4gICAgICovXG4gICAgY29uc3QgZGV0ZWN0UHJlemkgPSAoKTogVXJsTW9kdWxlQ29uZmlnIHwgbnVsbCA9PiB7XG4gICAgICBpZiAodXJsLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgKHVybC5pbmNsdWRlcygncHJlemkuY29tL3ZpZXcvJykgfHwgdXJsLmluY2x1ZGVzKCdwcmV6aS5jb20vZW1iZWQvJykgfHwgdXJsLmluY2x1ZGVzKCdwcmV6aS5jb20vcC9lbWJlZCcpKVxuICAgICAgKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiUFJFWkkgREVURUNURURcIilcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBlbWJlZGRpbmc6IFVybEVtYmVkZGluZ3MuUFJFWkksXG4gICAgICAgICAgZXh0ZXJuYWxJZDogXCJcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGVtYmVkZGluZyBpZiBhcHBsaWNhYmxlIHRvIG5vZGVcbiAgICAgKi9cbiAgICBjb25zdCBlbWJlZGRpbmcgPVxuICAgICAgY2hlY2tZb3VUdWJlKClcbiAgICAgICAgPz8gY2hlY2tWaW1lbygpXG4gICAgICAgID8/IGNoZWNrR2VuZXJpY1ZpZGVvKClcbiAgICAgICAgPz8gY2hlY2tBdWRpbygpXG4gICAgICAgID8/IGNoZWNrSW1hZ2UoKVxuICAgICAgICA/PyBjaGVja0x0aTEzVG9vbE9iamVjdCgpXG4gICAgICAgID8/IGRldGVjdEg1UCgpXG4gICAgICAgID8/IGRldGVjdFByZXppKClcblxuICAgIGlmIChlbWJlZGRpbmcgIT09IG51bGwpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiVVNJTkcgVVJMIEVNQkVERElOR1wiKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbW9kdWxlOiBcInVybFwiLFxuICAgICAgICB1cmxNb2R1bGVDb25maWc6IGVtYmVkZGluZ1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG4iXX0=
|
|
224
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLWluZm8uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2R1bGUtaW5mby5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQU8sYUFBYSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUF1QixhQUFhLEVBQWtCLE1BQU0sZ0NBQWdDLENBQUM7OztBQUdwRyxNQUFNLE9BQU8saUJBQWlCO0lBUTVCLFlBQ1UsT0FBb0M7UUFBcEMsWUFBTyxHQUFQLE9BQU8sQ0FBNkI7UUFQdEMsd0JBQW1CLEdBQWEsRUFBRSxDQUFBO1FBQ2xDLHVCQUFrQixHQUFhLEVBQUUsQ0FBQTtRQUNqQyw4QkFBeUIsR0FBYSxFQUFFLENBQUE7UUFDeEMsZ0NBQTJCLEdBQWEsRUFBRSxDQUFBO1FBQzFDLDJCQUFzQixHQUFhLEVBQUUsQ0FBQTtJQUkxQyxDQUFDO0lBRUosS0FBSyxDQUFDLHdCQUF3QixDQUFDLElBQXFCO1FBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQztZQUMxQixNQUFNLE1BQU0sR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUE7WUFDaEcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDcEIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUM7b0JBQzFFLElBQUksQ0FBQyxtQkFBbUIsQ0FB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QUFDLENBQUE7UUFFRDs7V0FFRztRQUNILE1BQU0sU0FBUyxHQUNiLGlCQUFpQixFQUFFO2VBQ2QsWUFBWSxFQUFFO2VBQ2QsVUFBVSxFQUFFO2VBQ1osaUJBQWlCLEVBQUU7ZUFDbkIsVUFBVSxFQUFFO2VBQ1osVUFBVSxFQUFFO2VBQ1osb0JBQW9CLEVBQUU7ZUFDdEIsU0FBUyxFQUFFO2VBQ1gsV0FBVyxFQUFFLENBQUE7UUFFcEIsSUFBSSxTQUFTLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDdkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO1lBQ2xDLE9BQU87Z0JBQ0wsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsZUFBZSxFQUFFLFNBQVM7YUFDM0IsQ0FBQTtRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7OEdBeE5VLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBREwsTUFBTTs7MkZBQ2xCLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge01vZHVsZUluZm9Db250cm9sbGVyU2VydmljZSwgUmVuZGVyRGF0YVJlcXVlc3RXaXRoVG9rZW59IGZyb20gXCJuZ3gtcmVuZGVyaW5nLXNlcnZpY2UtYXBpXCI7XG5pbXBvcnQge2ZpcnN0VmFsdWVGcm9tfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtOb2RlLCBSZXN0Q29uc3RhbnRzfSBmcm9tIFwibmd4LWVkdS1zaGFyaW5nLWFwaVwiO1xuaW1wb3J0IHtGcm9udGVuZE1vZHVsZUNvbmZpZywgVXJsRW1iZWRkaW5ncywgVXJsTW9kdWxlQ29uZmlnfSBmcm9tIFwiLi9saWIvZHRvL0Zyb250ZW5kTW9kdWxlQ29uZmlnXCI7XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiBcInJvb3RcIn0pXG5leHBvcnQgY2xhc3MgTW9kdWxlSW5mb1NlcnZpY2Uge1xuXG4gIHByaXZhdGUgYXZhaWxhYmxlTWVkaWFUeXBlczogU3RyaW5nW10gPSBbXVxuICBwcml2YXRlIGF2YWlsYWJsZU1pbWVUeXBlczogU3RyaW5nW10gPSBbXVxuICBwcml2YXRlIGF2YWlsYWJsZU1pbWVUeXBlUHJlZml4ZXM6IFN0cmluZ1tdID0gW11cbiAgcHJpdmF0ZSBhdmFpbGFibGVSZXBsaWNhdGlvblNvdXJjZXM6IFN0cmluZ1tdID0gW11cbiAgcHJpdmF0ZSBhdmFpbGFibGVSZXNvdXJjZVR5cGVzOiBTdHJpbmdbXSA9IFtdXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBNb2R1bGVJbmZvQ29udHJvbGxlclNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIGlzQXZhaWxhYmxlQmFja2VuZE9iamVjdChub2RlOiBOb2RlfCB1bmRlZmluZWQpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAoIXRoaXMuaXNJbml0aWFsaXplZCgpKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2UuZ2V0TW9kdWxlc0luZm8oe3JlcG9JZDogbm9kZT8ucmVmLnJlcG8gPz8gXCJcIn0pKVxuICAgICAgcmVzdWx0LmZvckVhY2goaW5mbyA9PiB7XG4gICAgICAgIGlmIChpbmZvLnR5cGVNYXBwaW5nLnR5cGUgIT09IHVuZGVmaW5lZCAmJiBpbmZvLnR5cGVNYXBwaW5nLnR5cGUgIT09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLmF2YWlsYWJsZU1lZGlhVHlwZXMucHVzaChpbmZvLnR5cGVNYXBwaW5nLnR5cGUpXG4gICAgICAgIH0gZWxzZSBpZihpbmZvLnR5cGVNYXBwaW5nLnJlc291cmNlVHlwZSAhPT0gdW5kZWZpbmVkICYmIGluZm8udHlwZU1hcHBpbmcucmVzb3VyY2VUeXBlICE9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5hdmFpbGFibGVSZXNvdXJjZVR5cGVzLnB1c2goaW5mby50eXBlTWFwcGluZy5yZXNvdXJjZVR5cGUpXG4gICAgICAgIH0gZWxzZSBpZihpbmZvLnR5cGVNYXBwaW5nLnJlcGxpY2F0aW9uU291cmNlICE9PSB1bmRlZmluZWQgJiYgaW5mby50eXBlTWFwcGluZy5yZXBsaWNhdGlvblNvdXJjZSAhPT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMuYXZhaWxhYmxlUmVwbGljYXRpb25Tb3VyY2VzLnB1c2goaW5mby50eXBlTWFwcGluZy5yZXBsaWNhdGlvblNvdXJjZSlcbiAgICAgICAgfSBlbHNlIGlmIChpbmZvLnR5cGVNYXBwaW5nLm1pbWVUeXBlU3VmZml4ICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICYmIGluZm8udHlwZU1hcHBpbmcubWltZVR5cGVTdWZmaXggIT09IG51bGxcbiAgICAgICAgICAgICYmIGluZm8udHlwZU1hcHBpbmcubWltZVR5cGVQcmVmaXggIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgJiYgaW5mby50eXBlTWFwcGluZy5taW1lVHlwZVByZWZpeCAhPT0gbnVsbFxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmF2YWlsYWJsZU1pbWVUeXBlcy5wdXNoKGAke2luZm8udHlwZU1hcHBpbmcubWltZVR5cGVQcmVmaXh9LyR7aW5mby50eXBlTWFwcGluZy5taW1lVHlwZVN1ZmZpeH1gKVxuICAgICAgICB9IGVsc2UgaWYgKGluZm8udHlwZU1hcHBpbmcubWltZVR5cGVQcmVmaXggIT09IHVuZGVmaW5lZCAmJiBpbmZvLnR5cGVNYXBwaW5nLm1pbWVUeXBlUHJlZml4ICE9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5hdmFpbGFibGVNaW1lVHlwZVByZWZpeGVzLnB1c2goaW5mby50eXBlTWFwcGluZy5taW1lVHlwZVByZWZpeClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgY29uc3QgbWltZVR5cGVQcmVmaXggPSAobm9kZT8ubWltZXR5cGUgPz8gXCJcIikuc3BsaXQoJy8nLCAyKVswXVxuICAgIHJldHVybiB0aGlzLmF2YWlsYWJsZU1lZGlhVHlwZXMuaW5jbHVkZXMobm9kZT8ubWVkaWF0eXBlID8/IFwiXCIpIHx8XG4gICAgICB0aGlzLmF2YWlsYWJsZVJlcGxpY2F0aW9uU291cmNlcy5pbmNsdWRlcyhub2RlPy5wcm9wZXJ0aWVzPy5bUmVzdENvbnN0YW50cy5DQ01fUFJPUF9SRVBMSUNBVElPTlNPVVJDRV0/LlswXT8/IFwiXCIpIHx8XG4gICAgICB0aGlzLmF2YWlsYWJsZVJlc291cmNlVHlwZXMuaW5jbHVkZXMobm9kZT8ucHJvcGVydGllcz8uW1Jlc3RDb25zdGFudHMuQ0NNX1BST1BfQ0NSRVNTT1VSQ0VUWVBFXT8uWzBdPz8gXCJcIikgfHxcbiAgICAgIHRoaXMuYXZhaWxhYmxlTWltZVR5cGVzLmluY2x1ZGVzKG5vZGU/Lm1pbWV0eXBlID8/IFwiXCIpIHx8XG4gICAgICB0aGlzLmF2YWlsYWJsZU1pbWVUeXBlUHJlZml4ZXMuaW5jbHVkZXMobWltZVR5cGVQcmVmaXgpXG4gIH1cblxuICBwcml2YXRlIGlzSW5pdGlhbGl6ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYXZhaWxhYmxlTWVkaWFUeXBlcy5sZW5ndGhcbiAgICAgICsgdGhpcy5hdmFpbGFibGVNaW1lVHlwZXMubGVuZ3RoXG4gICAgICArIHRoaXMuYXZhaWxhYmxlTWltZVR5cGVQcmVmaXhlcy5sZW5ndGhcbiAgICAgICsgdGhpcy5hdmFpbGFibGVSZXBsaWNhdGlvblNvdXJjZXMubGVuZ3RoXG4gICAgICArIHRoaXMuYXZhaWxhYmxlUmVzb3VyY2VUeXBlcy5sZW5ndGggIT09IDBcbiAgfVxuXG4gIGdldEZyb250ZW5kTW9kdWxlU2V0dGluZyhub2RlOiBOb2RlKTogRnJvbnRlbmRNb2R1bGVDb25maWcge1xuICAgIGNvbnN0IHVybE1vZHVsZUNvbmZpZyA9IHRoaXMuY2hlY2tVcmxNb2R1bGUobm9kZSlcbiAgICBpZiAodXJsTW9kdWxlQ29uZmlnICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdXJsTW9kdWxlQ29uZmlnXG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBtb2R1bGU6IFwiZGVmYXVsdFwiLFxuICAgICAgdXJsTW9kdWxlQ29uZmlnOiBudWxsXG4gICAgfVxuICB9XG5cbiAgY2hlY2tVcmxNb2R1bGUobm9kZTogTm9kZSk6IEZyb250ZW5kTW9kdWxlQ29uZmlnIHwgbnVsbCB7XG4gICAgY29uc3QgdXJsID0gbm9kZS5wcm9wZXJ0aWVzPy5bXCJjY206d3d3dXJsXCJdPy5bMF0gfHwgJydcbiAgICBjb25zb2xlLmxvZyhcIlVSTCBNT0RVTEUgdXJsOiBcIiArIHVybClcbiAgICBjb25zdCBjaGVja0xlYXJuaW5nQXBwcyA9ICgpOiBVcmxNb2R1bGVDb25maWcgfCBudWxsID0+IHtcbiAgICAgIGlmIChub2RlLnJlbW90ZT8ucmVwb3NpdG9yeT8ucmVwb3NpdG9yeVR5cGU/LnRvTG93ZXJDYXNlKCkgPT09IFwibGVhcm5pbmdhcHBzXCIpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBlbWJlZGRpbmc6IFVybEVtYmVkZGluZ3MuTEVBUk5JTkdBUFBTLFxuICAgICAgICAgIGV4dGVybmFsSWQ6IFwiXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgLyoqXG4gICAgICogRnVuY3Rpb24gY2hlY2tZb3VUdWJlXG4gICAgICovXG4gICAgY29uc3QgY2hlY2tZb3VUdWJlID0gKCk6IFVybE1vZHVsZUNvbmZpZyB8IG51bGwgPT4ge1xuICAgICAgaWYgKG5vZGUucmVtb3RlPy5yZXBvc2l0b3J5Py5yZXBvc2l0b3J5VHlwZT8udG9Mb3dlckNhc2UoKSA9PT0gXCJ5b3V0dWJlXCIpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBlbWJlZGRpbmc6IFVybEVtYmVkZGluZ3MuWU9VVFVCRSxcbiAgICAgICAgICBleHRlcm5hbElkOiBub2RlLnJlbW90ZT8uaWQgPz8gXCJcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodXJsLmluY2x1ZGVzKFwieW91dHUuYmVcIikgKSB7XG4gICAgICAgIGNvbnN0IHNwbGl0ID0gdXJsLnNwbGl0KFwiL1wiKVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGVtYmVkZGluZzogVXJsRW1iZWRkaW5ncy5ZT1VUVUJFLFxuICAgICAgICAgIGV4dGVybmFsSWQ6IHNwbGl0W3NwbGl0Lmxlbmd0aCAtIDFdXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh1cmwuaW5jbHVkZXMoXCIueW91dHViZS5jb20vd2F0Y2g/XCIpKSB7XG4gICAgICAgIGNvbnN0IHVybE9iamVjdCA9IG5ldyBVUkwodXJsKVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGVtYmVkZGluZzogVXJsRW1iZWRkaW5ncy5ZT1VUVUJFLFxuICAgICAgICAgIGV4dGVybmFsSWQ6IHVybE9iamVjdC5zZWFyY2hQYXJhbXMuZ2V0KFwidlwiKSA/PyBcIlwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIC8qKlxuICAgICAqIEZ1bmN0aW9uIGNoZWNrVmltZW9cbiAgICAgKi9cbiAgICBjb25zdCBjaGVja1ZpbWVvID0gKCk6IFVybE1vZHVsZUNvbmZpZyB8IG51bGwgPT4ge1xuICAgICAgaWYgKHVybC5pbmNsdWRlcyhcInZpbWVvLmNvbVwiKSkge1xuICAgICAgICBjb25zdCBzcGxpdCA9IHVybC5zcGxpdChcIi9cIilcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBlbWJlZGRpbmc6IFVybEVtYmVkZGluZ3MuVklNRU8sXG4gICAgICAgICAgZXh0ZXJuYWxJZDogc3BsaXRbc3BsaXQubGVuZ3RoIC0gMV1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgY29uc3QgY2hlY2tHZW5lcmljVmlkZW8gPSAoKTogVXJsTW9kdWxlQ29uZmlnIHwgbnVsbCA9PiB7XG4gICAgICBpZiAodXJsLmxlbmd0aCA+IDAgJiYgW1wibXA0XCIsIFwid2VibVwiXS5pbmNsdWRlcyh1cmwuc3BsaXQoXCIuXCIpLnBvcCgpID8/IFwiXCIpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZW1iZWRkaW5nOiBVcmxFbWJlZGRpbmdzLlZJREVPLFxuICAgICAgICAgIGV4dGVybmFsSWQ6IFwiXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgLyoqXG4gICAgICogRnVuY3Rpb24gY2hlY2tBdWRpb1xuICAgICAqL1xuICAgIGNvbnN0IGNoZWNrQXVkaW8gPSAoKTogVXJsTW9kdWxlQ29uZmlnIHwgbnVsbCA9PiB7XG4gICAgICBpZiAodXJsLmxlbmd0aCA+IDAgJiYgbm9kZS5taW1ldHlwZT8uc3RhcnRzV2l0aChcImF1ZGlvXCIpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZW1iZWRkaW5nOiBVcmxFbWJlZGRpbmdzLkFVRElPLFxuICAgICAgICAgIGV4dGVybmFsSWQ6IFwiXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgLyoqXG4gICAgICogRnVuY3Rpb24gY2hlY2tMdGkxM1Rvb2xPYmplY3RcbiAgICAgKi9cbiAgICBjb25zdCBjaGVja0x0aTEzVG9vbE9iamVjdCA9ICgpOiBVcmxNb2R1bGVDb25maWcgfCBudWxsID0+IHtcbiAgICAgIGlmIChub2RlLmFzcGVjdHM/LmluY2x1ZGVzKCdjY206bHRpdG9vbF9ub2RlJykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBlbWJlZGRpbmc6IFVybEVtYmVkZGluZ3MuTFRJMTNUT09MLFxuICAgICAgICAgIGV4dGVybmFsSWQ6IFwiXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgLyoqXG4gICAgICogRnVuY3Rpb24gY2hlY2tJbWFnZVxuICAgICAqL1xuICAgIGNvbnN0IGNoZWNrSW1hZ2UgPSAoKTogVXJsTW9kdWxlQ29uZmlnIHwgbnVsbCAgPT4ge1xuICAgICAgaWYgKG5vZGUucHJvcGVydGllcz8uW1wiY2NtOnJlbW90ZXJlcG9zaXRvcnl0eXBlXCJdPy5bMF0gPT09IFwiRERCXCIpIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLm1lZGlhdHlwZSA9PT0gXCJmaWxlLWltYWdlXCIpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBlbWJlZGRpbmc6IFVybEVtYmVkZGluZ3MuSU1BR0UsXG4gICAgICAgICAgZXh0ZXJuYWxJZDogXCJcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBtaW1lVHlwZVNwbGl0ID0gbm9kZS5taW1ldHlwZT8uc3BsaXQoXCIvXCIpID8/IFtdXG4gICAgICBpZiAobWltZVR5cGVTcGxpdC5sZW5ndGggPT09IDIgJiYgWydwbmcnLCAnanBnJywgJ2pwZWcnLCAnZ2lmJ10uaW5jbHVkZXMobWltZVR5cGVTcGxpdFsxXSkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBlbWJlZGRpbmc6IFVybEVtYmVkZGluZ3MuSU1BR0UsXG4gICAgICAgICAgZXh0ZXJuYWxJZDogXCJcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICAvKipcbiAgICAgKiAgRnVuY3Rpb24gZGV0ZWN0SDVQXG4gICAgICovXG4gICAgY29uc3QgZGV0ZWN0SDVQID0gKCk6IFVybE1vZHVsZUNvbmZpZyB8IG51bGwgPT4ge1xuICAgICAgaWYgKHVybC5sZW5ndGggPiAwICYmIHVybC5pbmNsdWRlcygnaDVwLm9yZy9oNXAvZW1iZWQnKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGVtYmVkZGluZzogVXJsRW1iZWRkaW5ncy5INVAsXG4gICAgICAgICAgZXh0ZXJuYWxJZDogXCJcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiBkZXRlY3RQcmV6aVxuICAgICAqL1xuICAgIGNvbnN0IGRldGVjdFByZXppID0gKCk6IFVybE1vZHVsZUNvbmZpZyB8IG51bGwgPT4ge1xuICAgICAgaWYgKHVybC5sZW5ndGggPiAwICYmXG4gICAgICAgICh1cmwuaW5jbHVkZXMoJ3ByZXppLmNvbS92aWV3LycpIHx8IHVybC5pbmNsdWRlcygncHJlemkuY29tL2VtYmVkLycpIHx8IHVybC5pbmNsdWRlcygncHJlemkuY29tL3AvZW1iZWQnKSlcbiAgICAgICkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIlBSRVpJIERFVEVDVEVEXCIpXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZW1iZWRkaW5nOiBVcmxFbWJlZGRpbmdzLlBSRVpJLFxuICAgICAgICAgIGV4dGVybmFsSWQ6IFwiXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBlbWJlZGRpbmcgaWYgYXBwbGljYWJsZSB0byBub2RlXG4gICAgICovXG4gICAgY29uc3QgZW1iZWRkaW5nID1cbiAgICAgIGNoZWNrTGVhcm5pbmdBcHBzKClcbiAgICAgICAgPz8gY2hlY2tZb3VUdWJlKClcbiAgICAgICAgPz8gY2hlY2tWaW1lbygpXG4gICAgICAgID8/IGNoZWNrR2VuZXJpY1ZpZGVvKClcbiAgICAgICAgPz8gY2hlY2tBdWRpbygpXG4gICAgICAgID8/IGNoZWNrSW1hZ2UoKVxuICAgICAgICA/PyBjaGVja0x0aTEzVG9vbE9iamVjdCgpXG4gICAgICAgID8/IGRldGVjdEg1UCgpXG4gICAgICAgID8/IGRldGVjdFByZXppKClcblxuICAgIGlmIChlbWJlZGRpbmcgIT09IG51bGwpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiVVNJTkcgVVJMIEVNQkVERElOR1wiKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbW9kdWxlOiBcInVybFwiLFxuICAgICAgICB1cmxNb2R1bGVDb25maWc6IGVtYmVkZGluZ1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { signal, Component, Input } from '@angular/core';
|
|
3
|
+
import { RenderingModule } from './ngx-rendering-service-lib.mjs';
|
|
4
|
+
import { FormsModule } from '@angular/forms';
|
|
5
|
+
import * as i3 from '@angular/common';
|
|
6
|
+
|
|
7
|
+
class BinderComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.activeObject = signal(undefined);
|
|
10
|
+
}
|
|
11
|
+
ngAfterViewInit() {
|
|
12
|
+
const allFinishedItems = this.data?.items?.filter(item => item.link !== "");
|
|
13
|
+
this.activeObject.set(allFinishedItems?.[0]);
|
|
14
|
+
}
|
|
15
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: BinderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
16
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: BinderComponent, isStandalone: true, selector: "rs-module-binder", inputs: { data: "data", node: "node" }, ngImport: i0, template: "<div class=\"binder-wrapper\" *ngIf=\"activeObject()\">\n <a [href]=\"activeObject()?.link\">Link to object</a>\n</div>\n", styles: [".binder-wrapper{width:100%;position:relative}\n"], dependencies: [{ kind: "ngmodule", type: RenderingModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }] }); }
|
|
17
|
+
}
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: BinderComponent, decorators: [{
|
|
19
|
+
type: Component,
|
|
20
|
+
args: [{ selector: 'rs-module-binder', standalone: true, imports: [
|
|
21
|
+
RenderingModule,
|
|
22
|
+
FormsModule,
|
|
23
|
+
], template: "<div class=\"binder-wrapper\" *ngIf=\"activeObject()\">\n <a [href]=\"activeObject()?.link\">Link to object</a>\n</div>\n", styles: [".binder-wrapper{width:100%;position:relative}\n"] }]
|
|
24
|
+
}], propDecorators: { data: [{
|
|
25
|
+
type: Input
|
|
26
|
+
}], node: [{
|
|
27
|
+
type: Input
|
|
28
|
+
}] } });
|
|
29
|
+
|
|
30
|
+
export { BinderComponent };
|
|
31
|
+
//# sourceMappingURL=ngx-rendering-service-lib-binder.component-BcnWHXkn.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ngx-rendering-service-lib-binder.component-BcnWHXkn.mjs","sources":["../../src/lib/module/binder/binder.component.ts","../../src/lib/module/binder/binder.component.html"],"sourcesContent":["import {AfterViewInit, Component, ElementRef, Input, signal, ViewChild} from '@angular/core';\nimport {RenderingModule} from \"../../rendering.module\";\nimport {RenderModule} from \"../RenderModule\";\nimport {Node} from \"ngx-edu-sharing-api\";\nimport {MatIcon} from \"@angular/material/icon\";\nimport {MatIconButton} from \"@angular/material/button\";\nimport {MatOption, MatSelect} from \"@angular/material/select\";\nimport {FormsModule} from \"@angular/forms\";\nimport {RenderData, AssetStateItem} from \"../../dto/RenderData\";\nimport {MatMenu, MatMenuItem, MatMenuTrigger} from \"@angular/material/menu\";\n\n@Component({\n selector: 'rs-module-binder',\n standalone: true,\n imports: [\n RenderingModule,\n FormsModule,\n ],\n templateUrl: './binder.component.html',\n styleUrl: './binder.component.scss'\n})\nexport class BinderComponent implements RenderModule, AfterViewInit{\n @Input() data: RenderData | undefined;\n @Input() node: Node | undefined;\n activeObject = signal<AssetStateItem | undefined>(undefined);\n\n ngAfterViewInit(): void {\n const allFinishedItems = this.data?.items?.filter(item => item.link !== \"\")\n this.activeObject.set(allFinishedItems?.[0]);\n }\n}\n","<div class=\"binder-wrapper\" *ngIf=\"activeObject()\">\n <a [href]=\"activeObject()?.link\">Link to object</a>\n</div>\n"],"names":[],"mappings":";;;;;;MAqBa,eAAe,CAAA;AAV5B,IAAA,WAAA,GAAA;AAaE,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAA6B,SAAS,CAAC,CAAC;AAM9D,KAAA;IAJC,eAAe,GAAA;QACb,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,CAAA;QAC3E,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC;KAC9C;8GARU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,ECrB5B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,4HAGA,EDYI,MAAA,EAAA,CAAA,iDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,kIACf,WAAW,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAKF,eAAe,EAAA,UAAA,EAAA,CAAA;kBAV3B,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EACP,OAAA,EAAA;wBACP,eAAe;wBACf,WAAW;AACZ,qBAAA,EAAA,QAAA,EAAA,4HAAA,EAAA,MAAA,EAAA,CAAA,iDAAA,CAAA,EAAA,CAAA;8BAKQ,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;;;;;"}
|