ngx-rendering-service-lib 0.0.0
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/environments/environment.d.ts +5 -0
- package/esm2022/environments/environment.mjs +6 -0
- package/esm2022/index.mjs +13 -0
- package/esm2022/lib/dto/AssetStateData.mjs +2 -0
- package/esm2022/lib/module/RenderModule.mjs +2 -0
- package/esm2022/lib/module/eduhtml/eduHtml.component.mjs +34 -0
- package/esm2022/lib/module/image/image.component.mjs +51 -0
- package/esm2022/lib/module/pdf/pdf.component.mjs +81 -0
- package/esm2022/lib/module/spreadsheet/spreadsheet.component.mjs +47 -0
- package/esm2022/lib/module/url/url.component.mjs +118 -0
- package/esm2022/lib/module/video/video.component.mjs +61 -0
- package/esm2022/lib/render.component.mjs +145 -0
- package/esm2022/lib/rendering-api.module.mjs +23 -0
- package/esm2022/lib/rendering.module.mjs +25 -0
- package/esm2022/ngx-rendering-service-lib.mjs +5 -0
- package/esm2022/rendering-service-lib.module.mjs +32 -0
- package/fesm2022/ngx-rendering-service-lib.mjs +613 -0
- package/fesm2022/ngx-rendering-service-lib.mjs.map +1 -0
- package/index.d.ts +9 -0
- package/lib/dto/AssetStateData.d.ts +10 -0
- package/lib/module/RenderModule.d.ts +6 -0
- package/lib/module/eduhtml/eduHtml.component.d.ts +14 -0
- package/lib/module/image/image.component.d.ts +17 -0
- package/lib/module/pdf/pdf.component.d.ts +21 -0
- package/lib/module/spreadsheet/spreadsheet.component.d.ts +17 -0
- package/lib/module/url/url.component.d.ts +29 -0
- package/lib/module/video/video.component.d.ts +15 -0
- package/lib/render.component.d.ts +25 -0
- package/lib/rendering-api.module.d.ts +7 -0
- package/lib/rendering.module.d.ts +8 -0
- package/package.json +39 -0
- package/rendering-service-lib.module.d.ts +10 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export const environment = {
|
|
2
|
+
production: false,
|
|
3
|
+
rootUrl: 'http://localhost:8080',
|
|
4
|
+
esRootUrl: 'http://repository.127.0.0.1.nip.io:8100/edu-sharing/rest',
|
|
5
|
+
};
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN2QixVQUFVLEVBQUUsS0FBSztJQUNqQixPQUFPLEVBQUUsdUJBQXVCO0lBQ2hDLFNBQVMsRUFBRSwwREFBMEQ7Q0FDeEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBlbnZpcm9ubWVudCA9IHtcbiAgICBwcm9kdWN0aW9uOiBmYWxzZSxcbiAgICByb290VXJsOiAnaHR0cDovL2xvY2FsaG9zdDo4MDgwJyxcbiAgICBlc1Jvb3RVcmw6ICdodHRwOi8vcmVwb3NpdG9yeS4xMjcuMC4wLjEubmlwLmlvOjgxMDAvZWR1LXNoYXJpbmcvcmVzdCcsXG59O1xuIl19
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of edu-sharing-ui
|
|
3
|
+
*/
|
|
4
|
+
export * from './lib/rendering.module';
|
|
5
|
+
export * from './lib/module/image/image.component';
|
|
6
|
+
export * from './lib/module/video/video.component';
|
|
7
|
+
export * from './lib/module/pdf/pdf.component';
|
|
8
|
+
export * from './lib/module/url/url.component';
|
|
9
|
+
export * from './lib/module/eduhtml/eduHtml.component';
|
|
10
|
+
export * from './lib/module/spreadsheet/spreadsheet.component';
|
|
11
|
+
export * from './lib/render.component';
|
|
12
|
+
export * from './rendering-service-lib.module';
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxnQ0FBZ0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgZWR1LXNoYXJpbmctdWlcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZW5kZXJpbmcubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZHVsZS9pbWFnZS9pbWFnZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kdWxlL3ZpZGVvL3ZpZGVvLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2R1bGUvcGRmL3BkZi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kdWxlL3VybC91cmwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZHVsZS9lZHVodG1sL2VkdUh0bWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZHVsZS9zcHJlYWRzaGVldC9zcHJlYWRzaGVldC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVuZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3JlbmRlcmluZy1zZXJ2aWNlLWxpYi5tb2R1bGUnO1xuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXNzZXRTdGF0ZURhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2R0by9Bc3NldFN0YXRlRGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgQXNzZXRTdGF0ZURhdGEgPSB7XG4gIGl0ZW1zPzogQXJyYXk8QXNzZXRTdGF0ZUl0ZW0+LFxuICBtb2R1bGU6IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBBc3NldFN0YXRlSXRlbSA9IHtcbiAgbGluazogc3RyaW5nO1xuICBwcm9ncmVzczogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbiAgd2lkdGg6IG51bWJlcjtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVuZGVyTW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9tb2R1bGUvUmVuZGVyTW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlbmRlckRhdGFSZXNwb25zZX0gZnJvbSBcIm5neC1yZW5kZXJpbmctc2VydmljZS1hcGlcIjtcbmltcG9ydCB7Tm9kZX0gZnJvbSBcIm5neC1lZHUtc2hhcmluZy1hcGlcIjtcbmltcG9ydCB7QXNzZXRTdGF0ZURhdGF9IGZyb20gXCIuLi9kdG8vQXNzZXRTdGF0ZURhdGFcIjtcbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyTW9kdWxlIHtcbiAgZGF0YTogQXNzZXRTdGF0ZURhdGEgfCB1bmRlZmluZWQ7XG4gIG5vZGU6IE5vZGUgfCB1bmRlZmluZWQ7XG59XG4iXX0=
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { RenderingModule } from "../../rendering.module";
|
|
3
|
+
import { MatIconModule } from "@angular/material/icon";
|
|
4
|
+
import { MatButtonModule } from "@angular/material/button";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/platform-browser";
|
|
7
|
+
import * as i2 from "@angular/common";
|
|
8
|
+
export class EduHtmlComponent {
|
|
9
|
+
constructor(sanitizer) {
|
|
10
|
+
this.sanitizer = sanitizer;
|
|
11
|
+
}
|
|
12
|
+
getSafeUri() {
|
|
13
|
+
if (this.data?.items !== undefined && this.data.items[0].link) {
|
|
14
|
+
return this.sanitizer.bypassSecurityTrustResourceUrl(this.data.items[0].link);
|
|
15
|
+
}
|
|
16
|
+
return new class {
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: EduHtmlComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
20
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: EduHtmlComponent, isStandalone: true, selector: "rs-module-eduHtml", inputs: { data: "data", node: "node" }, ngImport: i0, template: "<div class=\"eduHtml-wrapper\" *ngIf=\"data?.items !== undefined\">\n <iframe [src]=\"getSafeUri()\"></iframe>\n</div>\n", styles: [":host{position:relative;display:flex;align-items:center;width:100%}.eduHtml-wrapper{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: RenderingModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }] }); }
|
|
21
|
+
}
|
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: EduHtmlComponent, decorators: [{
|
|
23
|
+
type: Component,
|
|
24
|
+
args: [{ selector: 'rs-module-eduHtml', standalone: true, imports: [
|
|
25
|
+
RenderingModule,
|
|
26
|
+
MatButtonModule,
|
|
27
|
+
MatIconModule
|
|
28
|
+
], template: "<div class=\"eduHtml-wrapper\" *ngIf=\"data?.items !== undefined\">\n <iframe [src]=\"getSafeUri()\"></iframe>\n</div>\n", styles: [":host{position:relative;display:flex;align-items:center;width:100%}.eduHtml-wrapper{width:100%}\n"] }]
|
|
29
|
+
}], ctorParameters: () => [{ type: i1.DomSanitizer }], propDecorators: { data: [{
|
|
30
|
+
type: Input
|
|
31
|
+
}], node: [{
|
|
32
|
+
type: Input
|
|
33
|
+
}] } });
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWR1SHRtbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL21vZHVsZS9lZHVodG1sL2VkdUh0bWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9tb2R1bGUvZWR1aHRtbC9lZHVIdG1sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDVSxTQUFTLEVBQTRCLEtBQUssRUFDMUQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBR3ZELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFlekQsTUFBTSxPQUFPLGdCQUFnQjtJQUkzQixZQUFvQixTQUF1QjtRQUF2QixjQUFTLEdBQVQsU0FBUyxDQUFjO0lBQUcsQ0FBQztJQUUvQyxVQUFVO1FBQ1IsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDOUQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQy9FLENBQUM7UUFDRCxPQUFPLElBQUk7U0FBbUMsQ0FBQTtJQUNoRCxDQUFDOzhHQVhVLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLHFIQ3RCN0IsMkhBR0EsMEpEWUksZUFBZSxrSUFDZixlQUFlLDhCQUNmLGFBQWE7OzJGQUtKLGdCQUFnQjtrQkFYNUIsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQO3dCQUNQLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixhQUFhO3FCQUNkO2lGQUtRLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtSZW5kZXJpbmdNb2R1bGV9IGZyb20gXCIuLi8uLi9yZW5kZXJpbmcubW9kdWxlXCI7XG5pbXBvcnQge1JlbmRlck1vZHVsZX0gZnJvbSBcIi4uL1JlbmRlck1vZHVsZVwiO1xuaW1wb3J0IHtOb2RlfSBmcm9tIFwibmd4LWVkdS1zaGFyaW5nLWFwaVwiO1xuaW1wb3J0IHtNYXRJY29uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xuaW1wb3J0IHtNYXRCdXR0b25Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9idXR0b25cIjtcbmltcG9ydCB7QXNzZXRTdGF0ZURhdGF9IGZyb20gXCIuLi8uLi9kdG8vQXNzZXRTdGF0ZURhdGFcIjtcbmltcG9ydCB7RG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmx9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JzLW1vZHVsZS1lZHVIdG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFJlbmRlcmluZ01vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZVxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vZWR1SHRtbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9lZHVIdG1sLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBFZHVIdG1sQ29tcG9uZW50IGltcGxlbWVudHMgUmVuZGVyTW9kdWxlIHtcbiAgQElucHV0KCkgZGF0YTogQXNzZXRTdGF0ZURhdGEgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgbm9kZTogTm9kZSB8IHVuZGVmaW5lZFxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHt9XG5cbiAgZ2V0U2FmZVVyaSgpIHtcbiAgICBpZiAodGhpcy5kYXRhPy5pdGVtcyAhPT0gdW5kZWZpbmVkICYmIHRoaXMuZGF0YS5pdGVtc1swXS5saW5rKSB7XG4gICAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHRoaXMuZGF0YS5pdGVtc1swXS5saW5rKVxuICAgIH1cbiAgICByZXR1cm4gbmV3IGNsYXNzIGltcGxlbWVudHMgU2FmZVJlc291cmNlVXJsIHt9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJlZHVIdG1sLXdyYXBwZXJcIiAqbmdJZj1cImRhdGE/Lml0ZW1zICE9PSB1bmRlZmluZWRcIj5cbiAgPGlmcmFtZSBbc3JjXT1cImdldFNhZmVVcmkoKVwiPjwvaWZyYW1lPlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Component, HostListener, Input, signal } from '@angular/core';
|
|
2
|
+
import { RenderingModule } from "../../rendering.module";
|
|
3
|
+
import { MatIconModule } from "@angular/material/icon";
|
|
4
|
+
import { MatButtonModule } from "@angular/material/button";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common";
|
|
7
|
+
import * as i2 from "@angular/material/button";
|
|
8
|
+
import * as i3 from "@angular/material/icon";
|
|
9
|
+
export class ImageComponent {
|
|
10
|
+
constructor(element) {
|
|
11
|
+
this.element = element;
|
|
12
|
+
this.activeObject = signal(undefined);
|
|
13
|
+
}
|
|
14
|
+
ngAfterViewInit() {
|
|
15
|
+
this.loadOptimalSize();
|
|
16
|
+
}
|
|
17
|
+
loadOptimalSize() {
|
|
18
|
+
const size = this.element.nativeElement.getBoundingClientRect();
|
|
19
|
+
const allFinishedItems = this.data?.items?.filter(item => item.link !== "");
|
|
20
|
+
this.activeObject.set(allFinishedItems?.sort((a, b) => {
|
|
21
|
+
// sort by the image size closest to the viewport
|
|
22
|
+
return Math.abs(a.width - size.width) > Math.abs(b.width - size.width) ? 1 : -1;
|
|
23
|
+
})[0]);
|
|
24
|
+
}
|
|
25
|
+
toggleFullscreen() {
|
|
26
|
+
if (document.fullscreenElement) {
|
|
27
|
+
document.exitFullscreen();
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
this.element.nativeElement.requestFullscreen();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ImageComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: ImageComponent, isStandalone: true, selector: "rs-module-image", inputs: { data: "data", node: "node" }, host: { listeners: { "document:fullscreenchange": "loadOptimalSize()" } }, ngImport: i0, template: "<div class=\"image-wrapper\"\n *ngIf=\"activeObject()\"\n>\n <img\n #image\n [src]=\"activeObject()?.link\"\n [alt]=\"node?.title\"\n >\n <button mat-icon-button (click)=\"toggleFullscreen()\"><mat-icon>fullscreen</mat-icon></button>\n</div>\n", styles: [":host{position:relative;display:flex;align-items:center}.image-wrapper{width:100%}.image-wrapper img{width:100%;position:relative}.image-wrapper button{position:absolute;right:0;color:#fff;background-color:#00000080}\n"], dependencies: [{ kind: "ngmodule", type: RenderingModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
35
|
+
}
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ImageComponent, decorators: [{
|
|
37
|
+
type: Component,
|
|
38
|
+
args: [{ selector: 'rs-module-image', standalone: true, imports: [
|
|
39
|
+
RenderingModule,
|
|
40
|
+
MatButtonModule,
|
|
41
|
+
MatIconModule,
|
|
42
|
+
], template: "<div class=\"image-wrapper\"\n *ngIf=\"activeObject()\"\n>\n <img\n #image\n [src]=\"activeObject()?.link\"\n [alt]=\"node?.title\"\n >\n <button mat-icon-button (click)=\"toggleFullscreen()\"><mat-icon>fullscreen</mat-icon></button>\n</div>\n", styles: [":host{position:relative;display:flex;align-items:center}.image-wrapper{width:100%}.image-wrapper img{width:100%;position:relative}.image-wrapper button{position:absolute;right:0;color:#fff;background-color:#00000080}\n"] }]
|
|
43
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { data: [{
|
|
44
|
+
type: Input
|
|
45
|
+
}], node: [{
|
|
46
|
+
type: Input
|
|
47
|
+
}], loadOptimalSize: [{
|
|
48
|
+
type: HostListener,
|
|
49
|
+
args: ['document:fullscreenchange']
|
|
50
|
+
}] } });
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9tb2R1bGUvaW1hZ2UvaW1hZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9tb2R1bGUvaW1hZ2UvaW1hZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDaEcsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBSXZELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7Ozs7O0FBY3pELE1BQU0sT0FBTyxjQUFjO0lBSXpCLFlBQW1CLE9BQW1CO1FBQW5CLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFEdEMsaUJBQVksR0FBRyxNQUFNLENBQTZCLFNBQVMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFDM0MsZUFBZTtRQUNiLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBR08sZUFBZTtRQUNyQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ2hFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQTtRQUMzRSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDcEQsaURBQWlEO1lBQ2pELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDVCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBRyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUM5QixRQUFRLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDNUIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ2pELENBQUM7SUFDSCxDQUFDOzhHQXpCVSxjQUFjO2tHQUFkLGNBQWMsOExDcEIzQixrUUFVQSxtUkRHSSxlQUFlLGtJQUNmLGVBQWUsMklBQ2YsYUFBYTs7MkZBS0osY0FBYztrQkFYMUIsU0FBUzsrQkFDRSxpQkFBaUIsY0FDZixJQUFJLFdBQ1A7d0JBQ1AsZUFBZTt3QkFDZixlQUFlO3dCQUNmLGFBQWE7cUJBQ2Q7K0VBS1EsSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFRRSxlQUFlO3NCQUR0QixZQUFZO3VCQUFDLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIElucHV0LCBzaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtSZW5kZXJpbmdNb2R1bGV9IGZyb20gXCIuLi8uLi9yZW5kZXJpbmcubW9kdWxlXCI7XG5pbXBvcnQge1JlbmRlck1vZHVsZX0gZnJvbSBcIi4uL1JlbmRlck1vZHVsZVwiO1xuaW1wb3J0IHtPYmplY3RMaW5rLCBSZW5kZXJEYXRhUmVzcG9uc2V9IGZyb20gXCJuZ3gtcmVuZGVyaW5nLXNlcnZpY2UtYXBpXCI7XG5pbXBvcnQge05vZGV9IGZyb20gXCJuZ3gtZWR1LXNoYXJpbmctYXBpXCI7XG5pbXBvcnQge01hdEljb25Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XG5pbXBvcnQge01hdEJ1dHRvbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2J1dHRvblwiO1xuaW1wb3J0IHtBc3NldFN0YXRlRGF0YSwgQXNzZXRTdGF0ZUl0ZW19IGZyb20gXCIuLi8uLi9kdG8vQXNzZXRTdGF0ZURhdGFcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncnMtbW9kdWxlLWltYWdlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFJlbmRlcmluZ01vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2ltYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2ltYWdlLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBJbWFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIFJlbmRlck1vZHVsZSwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIGRhdGE6IEFzc2V0U3RhdGVEYXRhIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBub2RlOiBOb2RlIHwgdW5kZWZpbmVkO1xuICBhY3RpdmVPYmplY3QgPSBzaWduYWw8QXNzZXRTdGF0ZUl0ZW0gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50OiBFbGVtZW50UmVmKSB7IH1cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMubG9hZE9wdGltYWxTaXplKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpmdWxsc2NyZWVuY2hhbmdlJylcbiAgcHJpdmF0ZSBsb2FkT3B0aW1hbFNpemUoKSB7XG4gICAgY29uc3Qgc2l6ZSA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGFsbEZpbmlzaGVkSXRlbXMgPSB0aGlzLmRhdGE/Lml0ZW1zPy5maWx0ZXIoaXRlbSA9PiBpdGVtLmxpbmsgIT09IFwiXCIpXG4gICAgdGhpcy5hY3RpdmVPYmplY3Quc2V0KGFsbEZpbmlzaGVkSXRlbXM/LnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIC8vIHNvcnQgYnkgdGhlIGltYWdlIHNpemUgY2xvc2VzdCB0byB0aGUgdmlld3BvcnRcbiAgICAgIHJldHVybiBNYXRoLmFicyhhLndpZHRoIC0gc2l6ZS53aWR0aCkgPiBNYXRoLmFicyhiLndpZHRoIC0gc2l6ZS53aWR0aCkgPyAxIDogLTE7XG4gICAgfSlbMF0pO1xuICB9XG5cbiAgdG9nZ2xlRnVsbHNjcmVlbigpIHtcbiAgICBpZihkb2N1bWVudC5mdWxsc2NyZWVuRWxlbWVudCkge1xuICAgICAgZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucmVxdWVzdEZ1bGxzY3JlZW4oKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJpbWFnZS13cmFwcGVyXCJcbiAgKm5nSWY9XCJhY3RpdmVPYmplY3QoKVwiXG4+XG4gIDxpbWdcbiAgICAjaW1hZ2VcbiAgICBbc3JjXT1cImFjdGl2ZU9iamVjdCgpPy5saW5rXCJcbiAgICBbYWx0XT1cIm5vZGU/LnRpdGxlXCJcbiAgPlxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlRnVsbHNjcmVlbigpXCI+PG1hdC1pY29uPmZ1bGxzY3JlZW48L21hdC1pY29uPjwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { Component, Input, ViewChild } from '@angular/core';
|
|
2
|
+
import { RenderingModule } from "../../rendering.module";
|
|
3
|
+
import { MatIconModule } from "@angular/material/icon";
|
|
4
|
+
import { MatButtonModule } from "@angular/material/button";
|
|
5
|
+
import { PdfJsViewerModule } from "ng2-pdfjs-viewer";
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "ngx-rendering-service-api";
|
|
8
|
+
import * as i2 from "@angular/common";
|
|
9
|
+
import * as i3 from "ng2-pdfjs-viewer";
|
|
10
|
+
export class PdfComponent {
|
|
11
|
+
constructor(assetControllerService) {
|
|
12
|
+
this.assetControllerService = assetControllerService;
|
|
13
|
+
this.restrictedView = false;
|
|
14
|
+
}
|
|
15
|
+
ngOnChanges(changes) {
|
|
16
|
+
this.downloadFile();
|
|
17
|
+
}
|
|
18
|
+
downloadFile() {
|
|
19
|
+
if (this.data?.items === undefined || this.data.items[0].link === "") {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const url = new URL(this.data.items[0].link);
|
|
23
|
+
const assetParams = url.searchParams.get('assetParams');
|
|
24
|
+
if (assetParams === null) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const params = {
|
|
28
|
+
assetParams: assetParams
|
|
29
|
+
};
|
|
30
|
+
this.assetControllerService.getAsset$Response(params)
|
|
31
|
+
.subscribe(async (response) => {
|
|
32
|
+
let responseData = response.body;
|
|
33
|
+
if (response.headers.get("content-type") === "application/octet-stream") {
|
|
34
|
+
this.restrictedView = true;
|
|
35
|
+
responseData = responseData.slice(0, responseData.size, "application/pdf");
|
|
36
|
+
}
|
|
37
|
+
this.fileData = responseData;
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
onDocumentLoad() {
|
|
41
|
+
if (this.restrictedView) {
|
|
42
|
+
const iFrameDocument = this.viewerRef?.iframe.nativeElement.contentWindow.document;
|
|
43
|
+
const iFrameWindow = this.viewerRef?.iframe.nativeElement.contentWindow;
|
|
44
|
+
iFrameWindow.print = () => { alert("Nice try!"); };
|
|
45
|
+
iFrameDocument.querySelector(".textLayer").style.display = "none";
|
|
46
|
+
iFrameDocument.body.addEventListener('contextmenu', (event) => { event.preventDefault(); });
|
|
47
|
+
['keyup', 'keydown'].forEach(type => {
|
|
48
|
+
iFrameDocument.addEventListener(type, (event) => {
|
|
49
|
+
if ((event.key === 's' && event.ctrlKey) || event.key === 'F12') {
|
|
50
|
+
event.preventDefault();
|
|
51
|
+
if (event.stopImmediatePropagation) {
|
|
52
|
+
event.stopImmediatePropagation();
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
event.stopPropagation();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: PdfComponent, deps: [{ token: i1.AssetControllerService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
63
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: PdfComponent, isStandalone: true, selector: "rs-module-pdf", inputs: { data: "data", node: "node" }, viewQueries: [{ propertyName: "viewerRef", first: true, predicate: ["pdfViewer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"pdf-wrapper\" *ngIf=\"fileData !== undefined\">\n <ng2-pdfjs-viewer\n #pdfViewer\n [pdfSrc]=\"fileData\"\n [print]=\"!restrictedView\"\n [download]=\"!restrictedView\"\n (onDocumentLoad)=\"onDocumentLoad()\"\n >\n </ng2-pdfjs-viewer>\n</div>\n", styles: [":host{position:relative;display:flex;align-items:center;width:100%}.pdf-wrapper{width:100%;height:100%}\n"], dependencies: [{ kind: "ngmodule", type: RenderingModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: PdfJsViewerModule }, { kind: "component", type: i3.PdfJsViewerComponent, selector: "ng2-pdfjs-viewer", inputs: ["viewerId", "viewerFolder", "externalWindow", "target", "showSpinner", "downloadFileName", "openFile", "download", "startDownload", "viewBookmark", "print", "startPrint", "fullScreen", "find", "zoom", "nameddest", "pagemode", "lastPage", "rotatecw", "rotateccw", "cursor", "scroll", "spread", "locale", "useOnlyCssZoom", "errorOverride", "errorAppend", "errorMessage", "diagnosticLogs", "externalWindowOptions", "page", "pdfSrc"], outputs: ["onBeforePrint", "onAfterPrint", "onDocumentLoad", "onPageChange"] }] }); }
|
|
64
|
+
}
|
|
65
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: PdfComponent, decorators: [{
|
|
66
|
+
type: Component,
|
|
67
|
+
args: [{ selector: 'rs-module-pdf', standalone: true, imports: [
|
|
68
|
+
RenderingModule,
|
|
69
|
+
MatButtonModule,
|
|
70
|
+
MatIconModule,
|
|
71
|
+
PdfJsViewerModule
|
|
72
|
+
], template: "<div class=\"pdf-wrapper\" *ngIf=\"fileData !== undefined\">\n <ng2-pdfjs-viewer\n #pdfViewer\n [pdfSrc]=\"fileData\"\n [print]=\"!restrictedView\"\n [download]=\"!restrictedView\"\n (onDocumentLoad)=\"onDocumentLoad()\"\n >\n </ng2-pdfjs-viewer>\n</div>\n", styles: [":host{position:relative;display:flex;align-items:center;width:100%}.pdf-wrapper{width:100%;height:100%}\n"] }]
|
|
73
|
+
}], ctorParameters: () => [{ type: i1.AssetControllerService }], propDecorators: { data: [{
|
|
74
|
+
type: Input
|
|
75
|
+
}], node: [{
|
|
76
|
+
type: Input
|
|
77
|
+
}], viewerRef: [{
|
|
78
|
+
type: ViewChild,
|
|
79
|
+
args: ["pdfViewer"]
|
|
80
|
+
}] } });
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvbW9kdWxlL3BkZi9wZGYuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9tb2R1bGUvcGRmL3BkZi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBNEIsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUd2RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRXpELE9BQU8sRUFBdUIsaUJBQWlCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7QUFnQnpFLE1BQU0sT0FBTyxZQUFZO0lBT3ZCLFlBQW9CLHNCQUE4QztRQUE5QywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBSGxFLG1CQUFjLEdBQVksS0FBSyxDQUFBO0lBR3NDLENBQUM7SUFFdEUsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQTtJQUNyQixDQUFDO0lBRU8sWUFBWTtRQUNsQixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDckUsT0FBTTtRQUNSLENBQUM7UUFDRCxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM1QyxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFD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aW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtSZW5kZXJpbmdNb2R1bGV9IGZyb20gXCIuLi8uLi9yZW5kZXJpbmcubW9kdWxlXCI7XG5pbXBvcnQge1JlbmRlck1vZHVsZX0gZnJvbSBcIi4uL1JlbmRlck1vZHVsZVwiO1xuaW1wb3J0IHtOb2RlfSBmcm9tIFwibmd4LWVkdS1zaGFyaW5nLWFwaVwiO1xuaW1wb3J0IHtNYXRJY29uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xuaW1wb3J0IHtNYXRCdXR0b25Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9idXR0b25cIjtcbmltcG9ydCB7QXNzZXRTdGF0ZURhdGF9IGZyb20gXCIuLi8uLi9kdG8vQXNzZXRTdGF0ZURhdGFcIjtcbmltcG9ydCB7UGRmSnNWaWV3ZXJDb21wb25lbnQsIFBkZkpzVmlld2VyTW9kdWxlfSBmcm9tIFwibmcyLXBkZmpzLXZpZXdlclwiO1xuaW1wb3J0IHtBc3NldENvbnRyb2xsZXJTZXJ2aWNlLCBHZXRBc3NldCRQYXJhbXN9IGZyb20gXCJuZ3gtcmVuZGVyaW5nLXNlcnZpY2UtYXBpXCI7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncnMtbW9kdWxlLXBkZicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBSZW5kZXJpbmdNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgUGRmSnNWaWV3ZXJNb2R1bGVcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3BkZi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9wZGYuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIFBkZkNvbXBvbmVudCBpbXBsZW1lbnRzIFJlbmRlck1vZHVsZSwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgZGF0YTogQXNzZXRTdGF0ZURhdGEgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgbm9kZTogTm9kZSB8IHVuZGVmaW5lZFxuICBAVmlld0NoaWxkKFwicGRmVmlld2VyXCIpIHZpZXdlclJlZjogUGRmSnNWaWV3ZXJDb21wb25lbnQgfCB1bmRlZmluZWRcbiAgcmVzdHJpY3RlZFZpZXc6IGJvb2xlYW4gPSBmYWxzZVxuICBmaWxlRGF0YTogQmxvYiB8IHVuZGVmaW5lZFxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXNzZXRDb250cm9sbGVyU2VydmljZTogQXNzZXRDb250cm9sbGVyU2VydmljZSkge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgdGhpcy5kb3dubG9hZEZpbGUoKVxuICB9XG5cbiAgcHJpdmF0ZSBkb3dubG9hZEZpbGUoKSB7XG4gICAgaWYgKHRoaXMuZGF0YT8uaXRlbXMgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmRhdGEuaXRlbXNbMF0ubGluayA9PT0gXCJcIikge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IHVybCA9IG5ldyBVUkwodGhpcy5kYXRhLml0ZW1zWzBdLmxpbmspXG4gICAgY29uc3QgYXNzZXRQYXJhbXMgPSB1cmwuc2VhcmNoUGFyYW1zLmdldCgnYXNzZXRQYXJhbXMnKVxuICAgIGlmIChhc3NldFBhcmFtcyA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IHBhcmFtczogR2V0QXNzZXQkUGFyYW1zID0ge1xuICAgICAgYXNzZXRQYXJhbXM6IGFzc2V0UGFyYW1zXG4gICAgfVxuICAgIHRoaXMuYXNzZXRDb250cm9sbGVyU2VydmljZS5nZXRBc3NldCRSZXNwb25zZShwYXJhbXMpXG4gICAgICAuc3Vic2NyaWJlKGFzeW5jIChyZXNwb25zZSkgPT4ge1xuICAgICAgICBsZXQgcmVzcG9uc2VEYXRhID0gcmVzcG9uc2UuYm9keVxuICAgICAgICBpZiAocmVzcG9uc2UuaGVhZGVycy5nZXQoXCJjb250ZW50LXR5cGVcIikgPT09IFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCIpIHtcbiAgICAgICAgICB0aGlzLnJlc3RyaWN0ZWRWaWV3ID0gdHJ1ZVxuICAgICAgICAgIHJlc3BvbnNlRGF0YSA9IHJlc3BvbnNlRGF0YS5zbGljZSgwLCByZXNwb25zZURhdGEuc2l6ZSwgXCJhcHBsaWNhdGlvbi9wZGZcIilcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbGVEYXRhID0gcmVzcG9uc2VEYXRhXG4gICAgICB9XG4gICAgKVxuICB9XG5cbiAgb25Eb2N1bWVudExvYWQoKSB7XG4gICAgaWYgKHRoaXMucmVzdHJpY3RlZFZpZXcpIHtcbiAgICAgIGNvbnN0IGlGcmFtZURvY3VtZW50ID0gdGhpcy52aWV3ZXJSZWY/LmlmcmFtZS5uYXRpdmVFbGVtZW50LmNvbnRlbnRXaW5kb3cuZG9jdW1lbnRcbiAgICAgIGNvbnN0IGlGcmFtZVdpbmRvdyA9IHRoaXMudmlld2VyUmVmPy5pZnJhbWUubmF0aXZlRWxlbWVudC5jb250ZW50V2luZG93XG4gICAgICBpRnJhbWVXaW5kb3cucHJpbnQgPSAoKSA9PiB7YWxlcnQoXCJOaWNlIHRyeSFcIil9XG4gICAgICBpRnJhbWVEb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLnRleHRMYXllclwiKS5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCJcbiAgICAgIGlGcmFtZURvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcignY29udGV4dG1lbnUnLCAoZXZlbnQ6TW91c2VFdmVudCkgPT4ge2V2ZW50LnByZXZlbnREZWZhdWx0KCk7fSk7XG4gICAgICBbJ2tleXVwJywgJ2tleWRvd24nXS5mb3JFYWNoKHR5cGUgPT4ge1xuICAgICAgICBpRnJhbWVEb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKHR5cGUsIChldmVudDpLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKChldmVudC5rZXkgPT09ICdzJyAmJiBldmVudC5jdHJsS2V5KSB8fCBldmVudC5rZXkgPT09ICdGMTInKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaWYgKGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbikge1xuICAgICAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicGRmLXdyYXBwZXJcIiAqbmdJZj1cImZpbGVEYXRhICE9PSB1bmRlZmluZWRcIj5cbiAgPG5nMi1wZGZqcy12aWV3ZXJcbiAgICAjcGRmVmlld2VyXG4gICAgW3BkZlNyY109XCJmaWxlRGF0YVwiXG4gICAgW3ByaW50XT1cIiFyZXN0cmljdGVkVmlld1wiXG4gICAgW2Rvd25sb2FkXT1cIiFyZXN0cmljdGVkVmlld1wiXG4gICAgKG9uRG9jdW1lbnRMb2FkKT1cIm9uRG9jdW1lbnRMb2FkKClcIlxuICA+XG4gIDwvbmcyLXBkZmpzLXZpZXdlcj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Component, Input, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { RenderingModule } from "../../rendering.module";
|
|
3
|
+
import { MatIconModule } from "@angular/material/icon";
|
|
4
|
+
import { MatButtonModule } from "@angular/material/button";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "ngx-rendering-service-api";
|
|
7
|
+
export class SpreadsheetComponent {
|
|
8
|
+
constructor(assetControllerService) {
|
|
9
|
+
this.assetControllerService = assetControllerService;
|
|
10
|
+
this.fileData = "";
|
|
11
|
+
}
|
|
12
|
+
ngOnChanges(changes) {
|
|
13
|
+
this.downloadFile();
|
|
14
|
+
}
|
|
15
|
+
downloadFile() {
|
|
16
|
+
if (this.data?.items === undefined || this.data.items[0].link === "") {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const url = new URL(this.data.items[0].link);
|
|
20
|
+
const assetParams = url.searchParams.get('assetParams');
|
|
21
|
+
if (assetParams === null) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const params = {
|
|
25
|
+
assetParams: assetParams
|
|
26
|
+
};
|
|
27
|
+
this.assetControllerService.getAsset$Response(params)
|
|
28
|
+
.subscribe(async (response) => {
|
|
29
|
+
this.fileData = await response.body.text();
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: SpreadsheetComponent, deps: [{ token: i1.AssetControllerService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: SpreadsheetComponent, isStandalone: true, selector: "rs-module-spreadsheet", inputs: { data: "data", node: "node" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"spreadsheet-wrapper\" [innerHTML]=\"fileData\"></div>\n", styles: [":host{position:relative;display:flex;align-items:center;width:100%}.spreadsheet-wrapper{width:100%;max-height:30em;padding:.5em}table{border-collapse:collapse}tr{border:none}td{border-right:dotted 1px lightslategrey;border-left:dotted 1px lightslategrey}tr:nth-child(odd){background-color:#b0c4de}td{padding:.5em}td:hover{background-color:#ffa07a}\n"], dependencies: [{ kind: "ngmodule", type: RenderingModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
34
|
+
}
|
|
35
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: SpreadsheetComponent, decorators: [{
|
|
36
|
+
type: Component,
|
|
37
|
+
args: [{ selector: 'rs-module-spreadsheet', standalone: true, imports: [
|
|
38
|
+
RenderingModule,
|
|
39
|
+
MatButtonModule,
|
|
40
|
+
MatIconModule,
|
|
41
|
+
], encapsulation: ViewEncapsulation.None, template: "<div class=\"spreadsheet-wrapper\" [innerHTML]=\"fileData\"></div>\n", styles: [":host{position:relative;display:flex;align-items:center;width:100%}.spreadsheet-wrapper{width:100%;max-height:30em;padding:.5em}table{border-collapse:collapse}tr{border:none}td{border-right:dotted 1px lightslategrey;border-left:dotted 1px lightslategrey}tr:nth-child(odd){background-color:#b0c4de}td{padding:.5em}td:hover{background-color:#ffa07a}\n"] }]
|
|
42
|
+
}], ctorParameters: () => [{ type: i1.AssetControllerService }], propDecorators: { data: [{
|
|
43
|
+
type: Input
|
|
44
|
+
}], node: [{
|
|
45
|
+
type: Input
|
|
46
|
+
}] } });
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ByZWFkc2hlZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9tb2R1bGUvc3ByZWFkc2hlZXQvc3ByZWFkc2hlZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9tb2R1bGUvc3ByZWFkc2hlZXQvc3ByZWFkc2hlZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQTRCLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVGLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUd2RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDOzs7QUFpQnpELE1BQU0sT0FBTyxvQkFBb0I7SUFLL0IsWUFBb0Isc0JBQThDO1FBQTlDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFGbEUsYUFBUSxHQUFXLEVBQUUsQ0FBQTtJQUVnRCxDQUFDO0lBRXRFLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUE7SUFDckIsQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3JFLE9BQU07UUFDUixDQUFDO1FBQ0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDNUMsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDdkQsSUFBSSxXQUFXLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDekIsT0FBTTtRQUNSLENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBb0I7WUFDOUIsV0FBVyxFQUFFLFdBQVc7U0FDekIsQ0FBQTtRQUNELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUM7YUFDbEQsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUM1QyxDQUFDLENBQ0YsQ0FBQTtJQUNILENBQUM7OEdBNUJVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLDhJQ3RCakMsc0VBQ0Esc1pEYUksZUFBZSw4QkFDZixlQUFlLDhCQUNmLGFBQWE7OzJGQU1KLG9CQUFvQjtrQkFaaEMsU0FBUzsrQkFDRSx1QkFBdUIsY0FDckIsSUFBSSxXQUNQO3dCQUNQLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixhQUFhO3FCQUNkLGlCQUdjLGlCQUFpQixDQUFDLElBQUk7MkZBRzVCLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtSZW5kZXJpbmdNb2R1bGV9IGZyb20gXCIuLi8uLi9yZW5kZXJpbmcubW9kdWxlXCI7XG5pbXBvcnQge1JlbmRlck1vZHVsZX0gZnJvbSBcIi4uL1JlbmRlck1vZHVsZVwiO1xuaW1wb3J0IHtOb2RlfSBmcm9tIFwibmd4LWVkdS1zaGFyaW5nLWFwaVwiO1xuaW1wb3J0IHtNYXRJY29uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xuaW1wb3J0IHtNYXRCdXR0b25Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9idXR0b25cIjtcbmltcG9ydCB7QXNzZXRTdGF0ZURhdGF9IGZyb20gXCIuLi8uLi9kdG8vQXNzZXRTdGF0ZURhdGFcIjtcbmltcG9ydCB7QXNzZXRDb250cm9sbGVyU2VydmljZSwgR2V0QXNzZXQkUGFyYW1zfSBmcm9tIFwibmd4LXJlbmRlcmluZy1zZXJ2aWNlLWFwaVwiO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JzLW1vZHVsZS1zcHJlYWRzaGVldCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBSZW5kZXJpbmdNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9zcHJlYWRzaGVldC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9zcHJlYWRzaGVldC5jb21wb25lbnQuc2NzcycsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgU3ByZWFkc2hlZXRDb21wb25lbnQgaW1wbGVtZW50cyBSZW5kZXJNb2R1bGUsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGRhdGE6IEFzc2V0U3RhdGVEYXRhIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIG5vZGU6IE5vZGUgfCB1bmRlZmluZWRcbiAgZmlsZURhdGE6IHN0cmluZyA9IFwiXCJcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFzc2V0Q29udHJvbGxlclNlcnZpY2U6IEFzc2V0Q29udHJvbGxlclNlcnZpY2UpIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIHRoaXMuZG93bmxvYWRGaWxlKClcbiAgfVxuXG4gIHByaXZhdGUgZG93bmxvYWRGaWxlKCkge1xuICAgIGlmICh0aGlzLmRhdGE/Lml0ZW1zID09PSB1bmRlZmluZWQgfHwgdGhpcy5kYXRhLml0ZW1zWzBdLmxpbmsgPT09IFwiXCIpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHRoaXMuZGF0YS5pdGVtc1swXS5saW5rKVxuICAgIGNvbnN0IGFzc2V0UGFyYW1zID0gdXJsLnNlYXJjaFBhcmFtcy5nZXQoJ2Fzc2V0UGFyYW1zJylcbiAgICBpZiAoYXNzZXRQYXJhbXMgPT09IG51bGwpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBwYXJhbXM6IEdldEFzc2V0JFBhcmFtcyA9IHtcbiAgICAgIGFzc2V0UGFyYW1zOiBhc3NldFBhcmFtc1xuICAgIH1cbiAgICB0aGlzLmFzc2V0Q29udHJvbGxlclNlcnZpY2UuZ2V0QXNzZXQkUmVzcG9uc2UocGFyYW1zKVxuICAgICAgLnN1YnNjcmliZShhc3luYyAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy5maWxlRGF0YSA9IGF3YWl0IHJlc3BvbnNlLmJvZHkudGV4dCgpXG4gICAgICB9XG4gICAgKVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic3ByZWFkc2hlZXQtd3JhcHBlclwiIFtpbm5lckhUTUxdPVwiZmlsZURhdGFcIj48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { RenderingModule } from "../../rendering.module";
|
|
3
|
+
import { MatIconModule } from "@angular/material/icon";
|
|
4
|
+
import { MatButtonModule } from "@angular/material/button";
|
|
5
|
+
import { YouTubePlayer } from '@angular/youtube-player';
|
|
6
|
+
import { NgOptimizedImage } from "@angular/common";
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/platform-browser";
|
|
9
|
+
import * as i2 from "@angular/common";
|
|
10
|
+
import * as i3 from "@angular/material/button";
|
|
11
|
+
export class UrlComponent {
|
|
12
|
+
constructor(sanitizer) {
|
|
13
|
+
this.sanitizer = sanitizer;
|
|
14
|
+
this.gdpr = undefined;
|
|
15
|
+
this.gdprOk = false;
|
|
16
|
+
this.embedding = null;
|
|
17
|
+
this.externalId = null;
|
|
18
|
+
this.url = "";
|
|
19
|
+
this.isRemoteRepoResource = false;
|
|
20
|
+
}
|
|
21
|
+
ngOnChanges(changes) {
|
|
22
|
+
this.url = this.node?.properties !== undefined ? this.node.properties["ccm:wwwurl"][0] : "";
|
|
23
|
+
this.setEmbeddingType();
|
|
24
|
+
}
|
|
25
|
+
isProtected() {
|
|
26
|
+
return this.gdpr === undefined;
|
|
27
|
+
}
|
|
28
|
+
setEmbeddingType() {
|
|
29
|
+
if (this.detectYouTube()) {
|
|
30
|
+
this.embedding = "youtube";
|
|
31
|
+
this.getExternalId();
|
|
32
|
+
}
|
|
33
|
+
else if (this.url.includes("vimeo.com")) {
|
|
34
|
+
this.embedding = "vimeo";
|
|
35
|
+
this.getExternalId();
|
|
36
|
+
}
|
|
37
|
+
else if (this.node?.mediatype?.includes("audio")) {
|
|
38
|
+
this.embedding = "audio";
|
|
39
|
+
}
|
|
40
|
+
else if (this.detectImage()) {
|
|
41
|
+
this.embedding = "image";
|
|
42
|
+
}
|
|
43
|
+
else if (this.detectPixabay()) {
|
|
44
|
+
this.url = this.node?.preview?.url ?? "";
|
|
45
|
+
this.embedding = "image";
|
|
46
|
+
}
|
|
47
|
+
else if (this.detectVideo()) { }
|
|
48
|
+
}
|
|
49
|
+
consentToGdprWarning() {
|
|
50
|
+
this.gdprOk = true;
|
|
51
|
+
}
|
|
52
|
+
getExternalId() {
|
|
53
|
+
if (this.embedding === "youtube") {
|
|
54
|
+
if (this.isRemoteRepoResource) {
|
|
55
|
+
this.externalId = this.node?.remote?.id ?? "";
|
|
56
|
+
}
|
|
57
|
+
else if (this.url.includes("youtu.be")) {
|
|
58
|
+
const split = this.url.split("/");
|
|
59
|
+
this.externalId = split[split.length - 1];
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
const url = new URL(this.url);
|
|
63
|
+
this.externalId = url.searchParams.get("v");
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
else if (this.embedding === "vimeo") {
|
|
67
|
+
const split = this.url.split("/");
|
|
68
|
+
this.externalId = split[split.length - 1];
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
getVimeoUri() {
|
|
72
|
+
let url = '//player.vimeo.com/video/' + this.externalId;
|
|
73
|
+
return this.sanitizer.bypassSecurityTrustResourceUrl(url);
|
|
74
|
+
}
|
|
75
|
+
detectImage() {
|
|
76
|
+
if (this.node?.properties !== undefined && this.node.properties["ccm:remoterepositorytype"][0] === "DDB") {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
if (this.node?.mediatype === 'file-image') {
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
const mimeTypeSplit = this.node?.mimetype?.split("/") ?? [];
|
|
83
|
+
return mimeTypeSplit.length === 2 && ['png', 'jpg', 'jpeg', 'gif'].includes(mimeTypeSplit[1]);
|
|
84
|
+
}
|
|
85
|
+
detectYouTube() {
|
|
86
|
+
if (this.url.includes(".youtube.com/watch?") || this.url.includes("youtu.be")) {
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
if (this.node?.remote?.repository?.repositoryType?.toLowerCase() === "youtube") {
|
|
90
|
+
this.isRemoteRepoResource = true;
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
detectPixabay() {
|
|
96
|
+
return this.node?.remote?.repository?.repositoryType?.toLowerCase() === "pixabay";
|
|
97
|
+
}
|
|
98
|
+
detectVideo() {
|
|
99
|
+
return (["mp4", "webm"].includes(this.url.split(".").pop() ?? ""));
|
|
100
|
+
}
|
|
101
|
+
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 }); }
|
|
102
|
+
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" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"url-wrapper\">\n <div *ngIf=\"gdprOk\">\n <ng-container *ngIf=\"embedding === 'youtube' && externalId !== ''\">\n <youtube-player\n [videoId]=\"externalId ?? ''\"\n [disableCookies]=\"true\"\n ></youtube-player>\n </ng-container>\n <ng-container *ngIf=\"embedding === 'vimeo' && externalId !== ''\">\n <iframe [src]=\"getVimeoUri()\"></iframe>\n </ng-container>\n <ng-container *ngIf=\"embedding === '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 === '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 width=\"100%\"\n height=\"auto\"\n >\n </div>\n </ng-container>\n <ng-container *ngIf=\"embedding === 'video' && url !== ''\">\n <div class=\"video-wrapper\">\n <video\n controls\n [src]=\"url\"\n >\n </video>\n </div>\n </ng-container>\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}\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"] }] }); }
|
|
103
|
+
}
|
|
104
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: UrlComponent, decorators: [{
|
|
105
|
+
type: Component,
|
|
106
|
+
args: [{ selector: 'rs-module-url', standalone: true, imports: [
|
|
107
|
+
RenderingModule,
|
|
108
|
+
MatButtonModule,
|
|
109
|
+
MatIconModule,
|
|
110
|
+
YouTubePlayer,
|
|
111
|
+
NgOptimizedImage,
|
|
112
|
+
], template: "<div class=\"url-wrapper\">\n <div *ngIf=\"gdprOk\">\n <ng-container *ngIf=\"embedding === 'youtube' && externalId !== ''\">\n <youtube-player\n [videoId]=\"externalId ?? ''\"\n [disableCookies]=\"true\"\n ></youtube-player>\n </ng-container>\n <ng-container *ngIf=\"embedding === 'vimeo' && externalId !== ''\">\n <iframe [src]=\"getVimeoUri()\"></iframe>\n </ng-container>\n <ng-container *ngIf=\"embedding === '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 === '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 width=\"100%\"\n height=\"auto\"\n >\n </div>\n </ng-container>\n <ng-container *ngIf=\"embedding === 'video' && url !== ''\">\n <div class=\"video-wrapper\">\n <video\n controls\n [src]=\"url\"\n >\n </video>\n </div>\n </ng-container>\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}\n"] }]
|
|
113
|
+
}], ctorParameters: () => [{ type: i1.DomSanitizer }], propDecorators: { data: [{
|
|
114
|
+
type: Input
|
|
115
|
+
}], node: [{
|
|
116
|
+
type: Input
|
|
117
|
+
}] } });
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvbW9kdWxlL3VybC91cmwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9tb2R1bGUvdXJsL3VybC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFHTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFHdkQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFFdEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBZWpELE1BQU0sT0FBTyxZQUFZO0lBVXZCLFlBQW9CLFNBQXVCO1FBQXZCLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFQM0MsU0FBSSxHQUFzQixTQUFTLENBQUE7UUFDbkMsV0FBTSxHQUFZLEtBQUssQ0FBQTtRQUN2QixjQUFTLEdBQWtCLElBQUksQ0FBQTtRQUMvQixlQUFVLEdBQWtCLElBQUksQ0FBQTtRQUNoQyxRQUFHLEdBQVcsRUFBRSxDQUFBO1FBQ2hCLHlCQUFvQixHQUFHLEtBQUssQ0FBQTtJQUc1QixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO1FBQzNGLElBQUksQ0FBQyxn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QU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3BFLENBQUM7OEdBN0ZVLFlBQVk7a0dBQVosWUFBWSxzSUM3QnpCLHU3Q0FnREEsc01ENUJJLGVBQWUsa0lBQ2YsZUFBZSwyTkFDZixhQUFhLCtCQUNiLGFBQWEsK1lBQ2IsZ0JBQWdCOzsyRkFLUCxZQUFZO2tCQWJ4QixTQUFTOytCQUNFLGVBQWUsY0FDYixJQUFJLFdBQ1A7d0JBQ1AsZUFBZTt3QkFDZixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixnQkFBZ0I7cUJBQ2pCO2lGQUtRLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsIFNlY3VyaXR5Q29udGV4dCxcbiAgU2ltcGxlQ2hhbmdlcywgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UmVuZGVyaW5nTW9kdWxlfSBmcm9tIFwiLi4vLi4vcmVuZGVyaW5nLm1vZHVsZVwiO1xuaW1wb3J0IHtSZW5kZXJNb2R1bGV9IGZyb20gXCIuLi9SZW5kZXJNb2R1bGVcIjtcbmltcG9ydCB7Q29uZmlnU2VydmljZSwgTm9kZX0gZnJvbSBcIm5neC1lZHUtc2hhcmluZy1hcGlcIjtcbmltcG9ydCB7TWF0SWNvbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcbmltcG9ydCB7TWF0QnV0dG9uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XG5pbXBvcnQge1lvdVR1YmVQbGF5ZXJ9IGZyb20gJ0Bhbmd1bGFyL3lvdXR1YmUtcGxheWVyJztcbmltcG9ydCB7RG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwsIFNhZmVVcmx9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XG5pbXBvcnQge05nT3B0aW1pemVkSW1hZ2V9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncnMtbW9kdWxlLXVybCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBSZW5kZXJpbmdNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgWW91VHViZVBsYXllcixcbiAgICBOZ09wdGltaXplZEltYWdlLFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vdXJsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3VybC5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgVXJsQ29tcG9uZW50IGltcGxlbWVudHMgUmVuZGVyTW9kdWxlLCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBkYXRhOiB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIG5vZGU6IE5vZGUgfCB1bmRlZmluZWQ7XG4gIGdkcHI6IGFueVtdIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkXG4gIGdkcHJPazogYm9vbGVhbiA9IGZhbHNlXG4gIGVtYmVkZGluZzogc3RyaW5nIHwgbnVsbCA9IG51bGxcbiAgZXh0ZXJuYWxJZDogc3RyaW5nIHwgbnVsbCA9IG51bGxcbiAgdXJsOiBzdHJpbmcgPSBcIlwiXG4gIGlzUmVtb3RlUmVwb1Jlc291cmNlID0gZmFsc2VcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy51cmwgPSB0aGlzLm5vZGU/LnByb3BlcnRpZXMgIT09IHVuZGVmaW5lZCA/IHRoaXMubm9kZS5wcm9wZXJ0aWVzW1wiY2NtOnd3d3VybFwiXVswXSA6IFwiXCJcbiAgICB0aGlzLnNldEVtYmVkZGluZ1R5cGUoKVxuICB9XG5cbiAgaXNQcm90ZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ2RwciA9PT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgc2V0RW1iZWRkaW5nVHlwZSgpIHtcbiAgICBpZiAodGhpcy5kZXRlY3RZb3VUdWJlKCkpIHtcbiAgICAgIHRoaXMuZW1iZWRkaW5nID0gXCJ5b3V0dWJlXCJcbiAgICAgIHRoaXMuZ2V0RXh0ZXJuYWxJZCgpXG4gICAgfSBlbHNlIGlmICh0aGlzLnVybC5pbmNsdWRlcyhcInZpbWVvLmNvbVwiKSkge1xuICAgICAgdGhpcy5lbWJlZGRpbmcgPSBcInZpbWVvXCJcbiAgICAgIHRoaXMuZ2V0RXh0ZXJuYWxJZCgpXG4gICAgfSBlbHNlIGlmICh0aGlzLm5vZGU/Lm1lZGlhdHlwZT8uaW5jbHVkZXMoXCJhdWRpb1wiKSkge1xuICAgICAgdGhpcy5lbWJlZGRpbmcgPSBcImF1ZGlvXCJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGV0ZWN0SW1hZ2UoKSkge1xuICAgICAgdGhpcy5lbWJlZGRpbmcgPSBcImltYWdlXCJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGV0ZWN0UGl4YWJheSgpKSB7XG4gICAgICB0aGlzLnVybCA9IHRoaXMubm9kZT8ucHJldmlldz8udXJsID8/IFwiXCJcbiAgICAgIHRoaXMuZW1iZWRkaW5nID0gXCJpbWFnZVwiXG4gICAgfSBlbHNlIGlmICh0aGlzLmRldGVjdFZpZGVvKCkpIHt9XG4gIH1cblxuICBjb25zZW50VG9HZHByV2FybmluZygpIHtcbiAgICAgdGhpcy5nZHByT2sgPSB0cnVlXG4gIH1cblxuICBnZXRFeHRlcm5hbElkKCkge1xuICAgIGlmICh0aGlzLmVtYmVkZGluZyA9PT0gXCJ5b3V0dWJlXCIpIHtcbiAgICAgIGlmICh0aGlzLmlzUmVtb3RlUmVwb1Jlc291cmNlKSB7XG4gICAgICAgIHRoaXMuZXh0ZXJuYWxJZCA9IHRoaXMubm9kZT8ucmVtb3RlPy5pZCA/PyBcIlwiXG4gICAgICB9IGVsc2UgaWYgKHRoaXMudXJsLmluY2x1ZGVzKFwieW91dHUuYmVcIikpIHtcbiAgICAgICAgY29uc3Qgc3BsaXQgPSB0aGlzLnVybC5zcGxpdChcIi9cIilcbiAgICAgICAgdGhpcy5leHRlcm5hbElkID0gc3BsaXRbc3BsaXQubGVuZ3RoIC0gMV1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwodGhpcy51cmwpXG4gICAgICAgIHRoaXMuZXh0ZXJuYWxJZCA9IHVybC5zZWFyY2hQYXJhbXMuZ2V0KFwidlwiKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5lbWJlZGRpbmcgPT09IFwidmltZW9cIikge1xuICAgICAgY29uc3Qgc3BsaXQgPSB0aGlzLnVybC5zcGxpdChcIi9cIilcbiAgICAgIHRoaXMuZXh0ZXJuYWxJZCA9IHNwbGl0W3NwbGl0Lmxlbmd0aCAtIDFdXG4gICAgfVxuICB9XG5cbiAgZ2V0VmltZW9VcmkoKTogU2FmZVJlc291cmNlVXJsIHtcbiAgICBsZXQgdXJsID0gJy8vcGxheWVyLnZpbWVvLmNvbS92aWRlby8nICsgdGhpcy5leHRlcm5hbElkXG4gICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh1cmwpXG4gIH1cblxuICBkZXRlY3RJbWFnZSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5ub2RlPy5wcm9wZXJ0aWVzICE9PSB1bmRlZmluZWQgJiYgdGhpcy5ub2RlLnByb3BlcnRpZXNbXCJjY206cmVtb3RlcmVwb3NpdG9yeXR5cGVcIl1bMF0gPT09IFwiRERCXCIpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICBpZiAodGhpcy5ub2RlPy5tZWRpYXR5cGUgPT09ICdmaWxlLWltYWdlJykge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gICAgY29uc3QgbWltZVR5cGVTcGxpdCA9IHRoaXMubm9kZT8ubWltZXR5cGU/LnNwbGl0KFwiL1wiKSA/PyBbXVxuICAgIHJldHVybiBtaW1lVHlwZVNwbGl0Lmxlbmd0aCA9PT0gMiAmJiBbJ3BuZycsICdqcGcnLCAnanBlZycsICdnaWYnXS5pbmNsdWRlcyhtaW1lVHlwZVNwbGl0WzFdKVxuICB9XG5cbiAgZGV0ZWN0WW91VHViZSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy51cmwuaW5jbHVkZXMoXCIueW91dHViZS5jb20vd2F0Y2g/XCIpIHx8IHRoaXMudXJsLmluY2x1ZGVzKFwieW91dHUuYmVcIikpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICAgIGlmICh0aGlzLm5vZGU/LnJlbW90ZT8ucmVwb3NpdG9yeT8ucmVwb3NpdG9yeVR5cGU/LnRvTG93ZXJDYXNlKCkgPT09IFwieW91dHViZVwiKSB7XG4gICAgICB0aGlzLmlzUmVtb3RlUmVwb1Jlc291cmNlID0gdHJ1ZVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBkZXRlY3RQaXhhYmF5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5vZGU/LnJlbW90ZT8ucmVwb3NpdG9yeT8ucmVwb3NpdG9yeVR5cGU/LnRvTG93ZXJDYXNlKCkgPT09IFwicGl4YWJheVwiXG4gIH1cblxuICBkZXRlY3RWaWRlbygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFtcIm1wNFwiLCBcIndlYm1cIl0uaW5jbHVkZXModGhpcy51cmwuc3BsaXQoXCIuXCIpLnBvcCgpID8/IFwiXCIpKVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidXJsLXdyYXBwZXJcIj5cbiAgPGRpdiAqbmdJZj1cImdkcHJPa1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbWJlZGRpbmcgPT09ICd5b3V0dWJlJyAmJiBleHRlcm5hbElkICE9PSAnJ1wiPlxuICAgICAgPHlvdXR1YmUtcGxheWVyXG4gICAgICAgIFt2aWRlb0lkXT1cImV4dGVybmFsSWQgPz8gJydcIlxuICAgICAgICBbZGlzYWJsZUNvb2tpZXNdPVwidHJ1ZVwiXG4gICAgICA+PC95b3V0dWJlLXBsYXllcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZW1iZWRkaW5nID09PSAndmltZW8nICYmIGV4dGVybmFsSWQgIT09ICcnXCI+XG4gICAgICA8aWZyYW1lIFtzcmNdPVwiZ2V0VmltZW9VcmkoKVwiPjwvaWZyYW1lPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbWJlZGRpbmcgPT09ICdhdWRpbycgJiYgIHVybCAhPT0gJydcIiA+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXVkaW8td3JhcHBlclwiPlxuICAgICAgICA8dmlkZW9cbiAgICAgICAgICBjb250cm9sc1xuICAgICAgICAgIHN0eWxlPVwibWF4LXdpZHRoOiAxMDAlXCJcbiAgICAgICAgICBbc3JjXT1cInVybFwiXG4gICAgICAgICAgcG9zdGVyPVwiYXNzZXRzL2ltZy9hdWRpby5zdmdcIlxuICAgICAgICA+XG4gICAgICAgIDwvdmlkZW8+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZW1iZWRkaW5nID09PSAnaW1hZ2UnICYmIHVybCAhPT0gJydcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS13cmFwcGVyXCI+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICBbbmdTcmNdPVwidXJsXCJcbiAgICAgICAgICBbYWx0XT1cIm5vZGU/LnRpdGxlID8/ICdFZHUtU2hhcmluZyBpbWFnZSdcIlxuICAgICAgICAgIFt0aXRsZV09XCJub2RlPy50aXRsZSA/PyAnRWR1LVNoYXJpbmcgaW1hZ2UnXCJcbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIGhlaWdodD1cImF1dG9cIlxuICAgICAgICA+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZW1iZWRkaW5nID09PSAndmlkZW8nICYmIHVybCAhPT0gJydcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2aWRlby13cmFwcGVyXCI+XG4gICAgICAgIDx2aWRlb1xuICAgICAgICAgIGNvbnRyb2xzXG4gICAgICAgICAgW3NyY109XCJ1cmxcIlxuICAgICAgICA+XG4gICAgICAgIDwvdmlkZW8+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCIhZ2Rwck9rXCI+XG4gICAgSGFsdCEgU3RvcCFcbiAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cImNvbnNlbnRUb0dkcHJXYXJuaW5nKClcIj5XZWl0ZXIhPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Component, Input, signal, ViewChild } from '@angular/core';
|
|
2
|
+
import { RenderingModule } from "../../rendering.module";
|
|
3
|
+
import { MatIcon } from "@angular/material/icon";
|
|
4
|
+
import { MatIconButton } from "@angular/material/button";
|
|
5
|
+
import { MatOption, MatSelect } from "@angular/material/select";
|
|
6
|
+
import { FormsModule } from "@angular/forms";
|
|
7
|
+
import { MatMenu, MatMenuItem, MatMenuTrigger } from "@angular/material/menu";
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/common";
|
|
10
|
+
export class VideoComponent {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.activeObject = signal(undefined);
|
|
13
|
+
}
|
|
14
|
+
ngAfterViewInit() {
|
|
15
|
+
const downlink = navigator.connection?.downlink;
|
|
16
|
+
let optimalResolution = 720;
|
|
17
|
+
if (downlink < 2) {
|
|
18
|
+
optimalResolution = 240;
|
|
19
|
+
}
|
|
20
|
+
if (downlink > 6) {
|
|
21
|
+
optimalResolution = 1080;
|
|
22
|
+
}
|
|
23
|
+
const allFinishedItems = this.data?.items?.filter(item => item.link !== "");
|
|
24
|
+
this.activeObject.set(allFinishedItems?.sort((a, b) => {
|
|
25
|
+
// sort by the image size closest to the viewport
|
|
26
|
+
return Math.abs(a.width - optimalResolution) > Math.abs(b.width - optimalResolution) ? 1 : -1;
|
|
27
|
+
})[0]);
|
|
28
|
+
}
|
|
29
|
+
switchResolution(item) {
|
|
30
|
+
this.activeObject.set(item);
|
|
31
|
+
const currentTime = this.videoRef?.nativeElement.currentTime;
|
|
32
|
+
this.videoRef?.nativeElement.load();
|
|
33
|
+
if (currentTime !== undefined) {
|
|
34
|
+
this.videoRef.nativeElement.currentTime = currentTime;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: VideoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
38
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: VideoComponent, isStandalone: true, selector: "rs-module-video", inputs: { data: "data", node: "node" }, viewQueries: [{ propertyName: "videoRef", first: true, predicate: ["video"], descendants: true }], ngImport: i0, template: "<div class=\"video-wrapper\" *ngIf=\"activeObject()\">\n <video\n controls\n #video\n >\n <source [src]=\"activeObject()?.link\" />\n </video>\n <button\n mat-icon-button\n [matMenuTriggerFor]=\"resolutionMenu\"\n >\n <mat-icon>settings</mat-icon>\n </button>\n <mat-menu\n #resolutionMenu=\"matMenu\"\n xPosition=\"before\"\n >\n <button\n mat-menu-item\n *ngFor=\"let item of data?.items\"\n [disabled]=\"item.link === ''\"\n (click)=\"item.height !== activeObject()?.height && switchResolution(item)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"item.link !== '' ? ready : loading\"\n [ngTemplateOutletContext]=\"{item:item}\"\n >\n </ng-container>\n </button>\n\n </mat-menu>\n</div>\n\n<ng-template #ready let-item='item'>\n <div style=\"display: flex; justify-content: space-between\">\n <mat-icon *ngIf=\"item.height === activeObject()?.height\">\n done\n </mat-icon>\n <div *ngIf=\"item.height !== activeObject()?.height\"></div>\n <div>\n {{item.height}}p\n </div>\n </div>\n</ng-template>\n\n<ng-template #loading let-item='item'>\n <div style=\"display: flex; justify-content: space-between\">\n <div>\n {{item.progress >= 0 ? \"Converting: \" + item.progress + \"%\" : \"Queue position: \" + -item.progress}}\n </div>\n <div style=\"padding-left: .5em\">\n {{item.height}}p\n </div>\n </div>\n</ng-template>\n", styles: [".video-wrapper{width:100%;position:relative}.video-wrapper video{width:100%;display:block}.video-wrapper button{position:absolute;right:0;top:0;color:#fff;background-color:#00000080}\n"], dependencies: [{ kind: "ngmodule", type: RenderingModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }] }); }
|
|
39
|
+
}
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: VideoComponent, decorators: [{
|
|
41
|
+
type: Component,
|
|
42
|
+
args: [{ selector: 'rs-module-video', standalone: true, imports: [
|
|
43
|
+
RenderingModule,
|
|
44
|
+
MatIcon,
|
|
45
|
+
MatIconButton,
|
|
46
|
+
MatSelect,
|
|
47
|
+
FormsModule,
|
|
48
|
+
MatOption,
|
|
49
|
+
MatMenu,
|
|
50
|
+
MatMenuTrigger,
|
|
51
|
+
MatMenuItem
|
|
52
|
+
], template: "<div class=\"video-wrapper\" *ngIf=\"activeObject()\">\n <video\n controls\n #video\n >\n <source [src]=\"activeObject()?.link\" />\n </video>\n <button\n mat-icon-button\n [matMenuTriggerFor]=\"resolutionMenu\"\n >\n <mat-icon>settings</mat-icon>\n </button>\n <mat-menu\n #resolutionMenu=\"matMenu\"\n xPosition=\"before\"\n >\n <button\n mat-menu-item\n *ngFor=\"let item of data?.items\"\n [disabled]=\"item.link === ''\"\n (click)=\"item.height !== activeObject()?.height && switchResolution(item)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"item.link !== '' ? ready : loading\"\n [ngTemplateOutletContext]=\"{item:item}\"\n >\n </ng-container>\n </button>\n\n </mat-menu>\n</div>\n\n<ng-template #ready let-item='item'>\n <div style=\"display: flex; justify-content: space-between\">\n <mat-icon *ngIf=\"item.height === activeObject()?.height\">\n done\n </mat-icon>\n <div *ngIf=\"item.height !== activeObject()?.height\"></div>\n <div>\n {{item.height}}p\n </div>\n </div>\n</ng-template>\n\n<ng-template #loading let-item='item'>\n <div style=\"display: flex; justify-content: space-between\">\n <div>\n {{item.progress >= 0 ? \"Converting: \" + item.progress + \"%\" : \"Queue position: \" + -item.progress}}\n </div>\n <div style=\"padding-left: .5em\">\n {{item.height}}p\n </div>\n </div>\n</ng-template>\n", styles: [".video-wrapper{width:100%;position:relative}.video-wrapper video{width:100%;display:block}.video-wrapper button{position:absolute;right:0;top:0;color:#fff;background-color:#00000080}\n"] }]
|
|
53
|
+
}], propDecorators: { data: [{
|
|
54
|
+
type: Input
|
|
55
|
+
}], node: [{
|
|
56
|
+
type: Input
|
|
57
|
+
}], videoRef: [{
|
|
58
|
+
type: ViewChild,
|
|
59
|
+
args: ["video"]
|
|
60
|
+
}] } });
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlkZW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9tb2R1bGUvdmlkZW8vdmlkZW8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9tb2R1bGUvdmlkZW8vdmlkZW8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQWMsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDN0YsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBR3ZELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7OztBQW1CNUUsTUFBTSxPQUFPLGNBQWM7SUFqQjNCO1FBcUJFLGlCQUFZLEdBQUcsTUFBTSxDQUE2QixTQUFTLENBQUMsQ0FBQztLQTJCOUQ7SUF4QkMsZUFBZTtRQUNiLE1BQU0sUUFBUSxHQUFZLFNBQWlCLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQztRQUNqRSxJQUFJLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztRQUM1QixJQUFHLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNkLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztRQUM1QixDQUFDO1FBQ0QsSUFBRyxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDaEIsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQzNCLENBQUM7UUFDRCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUE7UUFDM0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3BELGlEQUFpRDtZQUNqRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDVCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBb0I7UUFDbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDM0IsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsV0FBVyxDQUFBO1FBQzVELElBQUksQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ25DLElBQUksV0FBVyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxRQUFTLENBQUMsYUFBYSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUE7UUFDeEQsQ0FBQztJQUNILENBQUM7OEdBOUJVLGNBQWM7a0dBQWQsY0FBYyxzTkM1QjNCLHc3Q0F1REEsaVBEeENJLGVBQWUsdWFBQ2YsT0FBTywySUFDUCxhQUFhLDRGQUViLFdBQVcsK0JBRVgsT0FBTywyUUFDUCxjQUFjLHFTQUNkLFdBQVc7OzJGQUtGLGNBQWM7a0JBakIxQixTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUDt3QkFDUCxlQUFlO3dCQUNmLE9BQU87d0JBQ1AsYUFBYTt3QkFDYixTQUFTO3dCQUNULFdBQVc7d0JBQ1gsU0FBUzt3QkFDVCxPQUFPO3dCQUNQLGNBQWM7d0JBQ2QsV0FBVztxQkFDWjs4QkFLUSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNjLFFBQVE7c0JBQTNCLFNBQVM7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgc2lnbmFsLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtSZW5kZXJpbmdNb2R1bGV9IGZyb20gXCIuLi8uLi9yZW5kZXJpbmcubW9kdWxlXCI7XG5pbXBvcnQge1JlbmRlck1vZHVsZX0gZnJvbSBcIi4uL1JlbmRlck1vZHVsZVwiO1xuaW1wb3J0IHtOb2RlfSBmcm9tIFwibmd4LWVkdS1zaGFyaW5nLWFwaVwiO1xuaW1wb3J0IHtNYXRJY29ufSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xuaW1wb3J0IHtNYXRJY29uQnV0dG9ufSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XG5pbXBvcnQge01hdE9wdGlvbiwgTWF0U2VsZWN0fSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0XCI7XG5pbXBvcnQge0Zvcm1zTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7QXNzZXRTdGF0ZURhdGEsIEFzc2V0U3RhdGVJdGVtfSBmcm9tIFwiLi4vLi4vZHRvL0Fzc2V0U3RhdGVEYXRhXCI7XG5pbXBvcnQge01hdE1lbnUsIE1hdE1lbnVJdGVtLCBNYXRNZW51VHJpZ2dlcn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL21lbnVcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncnMtbW9kdWxlLXZpZGVvJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFJlbmRlcmluZ01vZHVsZSxcbiAgICBNYXRJY29uLFxuICAgIE1hdEljb25CdXR0b24sXG4gICAgTWF0U2VsZWN0LFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIE1hdE9wdGlvbixcbiAgICBNYXRNZW51LFxuICAgIE1hdE1lbnVUcmlnZ2VyLFxuICAgIE1hdE1lbnVJdGVtXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi92aWRlby5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi92aWRlby5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgVmlkZW9Db21wb25lbnQgaW1wbGVtZW50cyBSZW5kZXJNb2R1bGUsIEFmdGVyVmlld0luaXR7XG4gIEBJbnB1dCgpIGRhdGE6IEFzc2V0U3RhdGVEYXRhIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBub2RlOiBOb2RlIHwgdW5kZWZpbmVkO1xuICBAVmlld0NoaWxkKFwidmlkZW9cIikgdmlkZW9SZWY6IEVsZW1lbnRSZWY8SFRNTFZpZGVvRWxlbWVudD4gfCB1bmRlZmluZWRcbiAgYWN0aXZlT2JqZWN0ID0gc2lnbmFsPEFzc2V0U3RhdGVJdGVtIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGRvd25saW5rOiBudW1iZXIgPSAobmF2aWdhdG9yIGFzIGFueSkuY29ubmVjdGlvbj8uZG93bmxpbms7XG4gICAgbGV0IG9wdGltYWxSZXNvbHV0aW9uID0gNzIwO1xuICAgIGlmKGRvd25saW5rIDwgMikge1xuICAgICAgICBvcHRpbWFsUmVzb2x1dGlvbiA9IDI0MDtcbiAgICB9XG4gICAgaWYoZG93bmxpbmsgPiA2KSB7XG4gICAgICBvcHRpbWFsUmVzb2x1dGlvbiA9IDEwODA7XG4gICAgfVxuICAgIGNvbnN0IGFsbEZpbmlzaGVkSXRlbXMgPSB0aGlzLmRhdGE/Lml0ZW1zPy5maWx0ZXIoaXRlbSA9PiBpdGVtLmxpbmsgIT09IFwiXCIpXG4gICAgdGhpcy5hY3RpdmVPYmplY3Quc2V0KGFsbEZpbmlzaGVkSXRlbXM/LnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIC8vIHNvcnQgYnkgdGhlIGltYWdlIHNpemUgY2xvc2VzdCB0byB0aGUgdmlld3BvcnRcbiAgICAgIHJldHVybiBNYXRoLmFicyhhLndpZHRoIC0gb3B0aW1hbFJlc29sdXRpb24pID4gTWF0aC5hYnMoYi53aWR0aCAtIG9wdGltYWxSZXNvbHV0aW9uKSA/IDEgOiAtMTtcbiAgICB9KVswXSk7XG4gIH1cblxuICBzd2l0Y2hSZXNvbHV0aW9uKGl0ZW06IEFzc2V0U3RhdGVJdGVtKSB7XG4gICAgdGhpcy5hY3RpdmVPYmplY3Quc2V0KGl0ZW0pXG4gICAgY29uc3QgY3VycmVudFRpbWUgPSB0aGlzLnZpZGVvUmVmPy5uYXRpdmVFbGVtZW50LmN1cnJlbnRUaW1lXG4gICAgdGhpcy52aWRlb1JlZj8ubmF0aXZlRWxlbWVudC5sb2FkKClcbiAgICBpZiAoY3VycmVudFRpbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy52aWRlb1JlZiEubmF0aXZlRWxlbWVudC5jdXJyZW50VGltZSA9IGN1cnJlbnRUaW1lXG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidmlkZW8td3JhcHBlclwiICpuZ0lmPVwiYWN0aXZlT2JqZWN0KClcIj5cbiAgPHZpZGVvXG4gICAgY29udHJvbHNcbiAgICAjdmlkZW9cbiAgPlxuICAgIDxzb3VyY2UgW3NyY109XCJhY3RpdmVPYmplY3QoKT8ubGlua1wiIC8+XG4gIDwvdmlkZW8+XG4gIDxidXR0b25cbiAgICBtYXQtaWNvbi1idXR0b25cbiAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwicmVzb2x1dGlvbk1lbnVcIlxuICA+XG4gICAgPG1hdC1pY29uPnNldHRpbmdzPC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG4gIDxtYXQtbWVudVxuICAgICNyZXNvbHV0aW9uTWVudT1cIm1hdE1lbnVcIlxuICAgIHhQb3NpdGlvbj1cImJlZm9yZVwiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhPy5pdGVtc1wiXG4gICAgICBbZGlzYWJsZWRdPVwiaXRlbS5saW5rID09PSAnJ1wiXG4gICAgICAoY2xpY2spPVwiaXRlbS5oZWlnaHQgIT09IGFjdGl2ZU9iamVjdCgpPy5oZWlnaHQgJiYgc3dpdGNoUmVzb2x1dGlvbihpdGVtKVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtLmxpbmsgIT09ICcnID8gcmVhZHkgOiBsb2FkaW5nXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntpdGVtOml0ZW19XCJcbiAgICAgID5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvYnV0dG9uPlxuXG4gIDwvbWF0LW1lbnU+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNyZWFkeSBsZXQtaXRlbT0naXRlbSc+XG4gIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW5cIj5cbiAgICA8bWF0LWljb24gKm5nSWY9XCJpdGVtLmhlaWdodCA9PT0gYWN0aXZlT2JqZWN0KCk/LmhlaWdodFwiPlxuICAgICAgZG9uZVxuICAgIDwvbWF0LWljb24+XG4gICAgPGRpdiAqbmdJZj1cIml0ZW0uaGVpZ2h0ICE9PSBhY3RpdmVPYmplY3QoKT8uaGVpZ2h0XCI+PC9kaXY+XG4gICAgPGRpdj5cbiAgICAgIHt7aXRlbS5oZWlnaHR9fXBcbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2xvYWRpbmcgbGV0LWl0ZW09J2l0ZW0nPlxuICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuXCI+XG4gICAgPGRpdj5cbiAgICAgIHt7aXRlbS5wcm9ncmVzcyA+PSAwID8gXCJDb252ZXJ0aW5nOiBcIiArIGl0ZW0ucHJvZ3Jlc3MgKyBcIiVcIiA6IFwiUXVldWUgcG9zaXRpb246IFwiICsgLWl0ZW0ucHJvZ3Jlc3N9fVxuICAgIDwvZGl2PlxuICAgIDxkaXYgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IC41ZW1cIj5cbiAgICAgIHt7aXRlbS5oZWlnaHR9fXBcbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|