ngx-rendering-service-lib 0.0.66963 → 0.0.66965
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/fesm2022/{ngx-rendering-service-lib-audio.component-G-jsdh_X.mjs → ngx-rendering-service-lib-audio.component-DxEyP5V_.mjs} +2 -2
- package/fesm2022/{ngx-rendering-service-lib-audio.component-G-jsdh_X.mjs.map → ngx-rendering-service-lib-audio.component-DxEyP5V_.mjs.map} +1 -1
- package/fesm2022/{ngx-rendering-service-lib-binder.component-Bittievo.mjs → ngx-rendering-service-lib-binder.component-CvS0Y6AN.mjs} +2 -2
- package/fesm2022/{ngx-rendering-service-lib-binder.component-Bittievo.mjs.map → ngx-rendering-service-lib-binder.component-CvS0Y6AN.mjs.map} +1 -1
- package/fesm2022/{ngx-rendering-service-lib-ddb.component-xjBmBUcH.mjs → ngx-rendering-service-lib-ddb.component-BYkkda5U.mjs} +4 -4
- package/fesm2022/{ngx-rendering-service-lib-ddb.component-xjBmBUcH.mjs.map → ngx-rendering-service-lib-ddb.component-BYkkda5U.mjs.map} +1 -1
- package/fesm2022/{ngx-rendering-service-lib-default.component-B46S20qc.mjs → ngx-rendering-service-lib-default.component-BRgBBmNB.mjs} +2 -2
- package/fesm2022/{ngx-rendering-service-lib-default.component-B46S20qc.mjs.map → ngx-rendering-service-lib-default.component-BRgBBmNB.mjs.map} +1 -1
- package/fesm2022/{ngx-rendering-service-lib-error.component-D9OY5zK_.mjs → ngx-rendering-service-lib-error.component-CQPy_Eto.mjs} +2 -2
- package/fesm2022/{ngx-rendering-service-lib-error.component-D9OY5zK_.mjs.map → ngx-rendering-service-lib-error.component-CQPy_Eto.mjs.map} +1 -1
- package/fesm2022/{ngx-rendering-service-lib-moodle.component-DYs5v5sg.mjs → ngx-rendering-service-lib-moodle.component-o5gEOK8x.mjs} +6 -8
- package/fesm2022/ngx-rendering-service-lib-moodle.component-o5gEOK8x.mjs.map +1 -0
- package/fesm2022/{ngx-rendering-service-lib-ngx-rendering-service-lib-CRyEjUPA.mjs → ngx-rendering-service-lib-ngx-rendering-service-lib-C28wFUyA.mjs} +38 -13
- package/fesm2022/ngx-rendering-service-lib-ngx-rendering-service-lib-C28wFUyA.mjs.map +1 -0
- package/fesm2022/ngx-rendering-service-lib.mjs +1 -1
- package/lib/module/moodle/moodle.component.d.ts +2 -2
- package/lib/module/url/url.component.d.ts +12 -4
- package/package.json +1 -1
- package/fesm2022/ngx-rendering-service-lib-moodle.component-DYs5v5sg.mjs.map +0 -1
- package/fesm2022/ngx-rendering-service-lib-ngx-rendering-service-lib-CRyEjUPA.mjs.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { signal, Input, Component } from '@angular/core';
|
|
3
|
-
import { T as TrackingService, R as RenderingModule, A as AssetLinkPipe } from './ngx-rendering-service-lib-ngx-rendering-service-lib-
|
|
3
|
+
import { T as TrackingService, R as RenderingModule, A as AssetLinkPipe } from './ngx-rendering-service-lib-ngx-rendering-service-lib-C28wFUyA.mjs';
|
|
4
4
|
import { FormsModule } from '@angular/forms';
|
|
5
5
|
import * as i3 from '@angular/common';
|
|
6
6
|
|
|
@@ -38,4 +38,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
38
38
|
}] } });
|
|
39
39
|
|
|
40
40
|
export { AudioComponent };
|
|
41
|
-
//# sourceMappingURL=ngx-rendering-service-lib-audio.component-
|
|
41
|
+
//# sourceMappingURL=ngx-rendering-service-lib-audio.component-DxEyP5V_.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-rendering-service-lib-audio.component-
|
|
1
|
+
{"version":3,"file":"ngx-rendering-service-lib-audio.component-DxEyP5V_.mjs","sources":["../../src/lib/module/audio/audio.component.ts","../../src/lib/module/audio/audio.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 {FormsModule} from '@angular/forms';\nimport {RenderData, AssetStateItem} from '../../dto/RenderData';\nimport {TrackingService} from '../../../tracking.service';\n\n@Component({\n selector: 'rs-module-audio',\n imports: [\n RenderingModule,\n FormsModule,\n ],\n templateUrl: './audio.component.html',\n styleUrl: './audio.component.scss'\n})\nexport class AudioComponent implements RenderModule, AfterViewInit{\n @Input() data: RenderData | undefined;\n @Input() node: Node | undefined;\n previewUrl: String = ''\n private hasBeenPlayed: Boolean = false\n activeObject = signal<AssetStateItem | undefined>(undefined);\n\n constructor(private trackingService: TrackingService) { }\n\n ngAfterViewInit(): void {\n this.previewUrl = this.node?.preview?.url ?? ''\n const allFinishedItems = this.data?.items?.filter(item => item.link !== '')\n this.activeObject.set(allFinishedItems?.[0]);\n }\n\n onVideoPlay(): void {\n if (!this.hasBeenPlayed) {\n this.trackingService.trackPlayed(this.node?.ref.id!!, this.node?.ref.repo!!)\n }\n this.hasBeenPlayed = true\n }\n}\n","<div class=\"audio-wrapper\" *ngIf=\"activeObject()\">\n <video\n [poster]=\"previewUrl\"\n controls\n (play)=\"onVideoPlay()\"\n >\n <source [src]=\"activeObject()?.link | rsAssetLink\" />\n </video>\n</div>\n\n\n"],"names":["i1.TrackingService"],"mappings":";;;;;;MAiBa,cAAc,CAAA;AAOzB,IAAA,WAAA,CAAoB,eAAgC,EAAA;QAAhC,IAAe,CAAA,eAAA,GAAf,eAAe;QAJnC,IAAU,CAAA,UAAA,GAAW,EAAE;QACf,IAAa,CAAA,aAAA,GAAY,KAAK;AACtC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAA6B,SAAS,CAAC;;IAI5D,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE;QAC/C,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;QAC3E,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;;IAG9C,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAM,CAAC;;AAE9E,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;;+GAnBhB,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,ECjB3B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,uOAWA,EDAQ,MAAA,EAAA,CAAA,gIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,8LACf,WAAW,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAKN,cAAc,EAAA,UAAA,EAAA,CAAA;kBAT1B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAClB,OAAA,EAAA;wBACL,eAAe;wBACf,WAAW;AACd,qBAAA,EAAA,QAAA,EAAA,uOAAA,EAAA,MAAA,EAAA,CAAA,gIAAA,CAAA,EAAA;iFAKM,IAAI,EAAA,CAAA;sBAAZ;gBACQ,IAAI,EAAA,CAAA;sBAAZ;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { signal, Input, Component } from '@angular/core';
|
|
3
|
-
import { R as RenderingModule } from './ngx-rendering-service-lib-ngx-rendering-service-lib-
|
|
3
|
+
import { R as RenderingModule } from './ngx-rendering-service-lib-ngx-rendering-service-lib-C28wFUyA.mjs';
|
|
4
4
|
import { FormsModule } from '@angular/forms';
|
|
5
5
|
import { MatProgressSpinner } from '@angular/material/progress-spinner';
|
|
6
6
|
import { MatAnchor } from '@angular/material/button';
|
|
@@ -54,4 +54,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
54
54
|
}] } });
|
|
55
55
|
|
|
56
56
|
export { BinderComponent };
|
|
57
|
-
//# sourceMappingURL=ngx-rendering-service-lib-binder.component-
|
|
57
|
+
//# sourceMappingURL=ngx-rendering-service-lib-binder.component-CvS0Y6AN.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-rendering-service-lib-binder.component-
|
|
1
|
+
{"version":3,"file":"ngx-rendering-service-lib-binder.component-CvS0Y6AN.mjs","sources":["../../src/lib/module/binder/binder.component.ts","../../src/lib/module/binder/binder.component.html"],"sourcesContent":["import { Component, Input, OnChanges, signal, SimpleChanges} from '@angular/core';\nimport {RenderingModule} from '../../rendering.module';\nimport {RenderModule} from '../RenderModule';\nimport {Node} from 'ngx-edu-sharing-api';\nimport {FormsModule} from '@angular/forms';\nimport {RenderData, AssetStateItem} from '../../dto/RenderData';\nimport {MatProgressSpinner} from '@angular/material/progress-spinner';\nimport {DomSanitizer, SafeResourceUrl} from '@angular/platform-browser';\nimport {MatAnchor} from '@angular/material/button';\n\n@Component({\n selector: 'rs-module-binder',\n imports: [\n RenderingModule,\n FormsModule,\n MatProgressSpinner,\n MatAnchor,\n ],\n templateUrl: './binder.component.html',\n styleUrl: './binder.component.scss'\n})\nexport class BinderComponent implements RenderModule, OnChanges {\n @Input() data: RenderData | undefined;\n @Input() node: Node | undefined;\n binderItem = signal<AssetStateItem | undefined>(undefined);\n previewUrl = signal<SafeResourceUrl | undefined>(undefined)\n hasPreview = signal<boolean>(false)\n\n constructor(private sanitizer: DomSanitizer) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n const binderJobData = this.data?.items?.find(item => item.additionalData === null)\n if ( binderJobData !== undefined ) {\n this.binderItem.set(binderJobData)\n }\n const previewJobData = this.data?.items?.find(item => item.additionalData !== null)\n if (previewJobData !== undefined) {\n this.hasPreview.set(true)\n if (previewJobData.link !== undefined && previewJobData.link !== '') {\n this.previewUrl.set(this.getSafeUri(previewJobData.link))\n }\n }\n }\n\n getSafeUri(assetLink: string) {\n const uri = new URL(assetLink)\n /**\n if (uri.hostname.includes(\"nip.io\")) {\n uri.hostname = \"localhost\"\n }\n */\n return this.sanitizer.bypassSecurityTrustResourceUrl(uri.toString())\n }\n}\n","<div class=\"binder-wrapper\">\n <div class=\"preview-container\" *ngIf=\"hasPreview()\">\n <mat-spinner [diameter]=\"50\" *ngIf=\"previewUrl() === ''\"></mat-spinner>\n <iframe class=\"frame\" [src]=\"previewUrl()\" *ngIf=\"previewUrl() !== ''\" ></iframe>\n </div>\n <div class=\"binder-link-container\">\n <mat-spinner [diameter]=\"50\" *ngIf=\"binderItem()?.link === ''\" ></mat-spinner>\n <a mat-flat-button color=\"primary\" [href]=\"binderItem()?.link\" target=\"_blank\" *ngIf=\"binderItem()?.link !== ''\">Link to object</a>\n </div>\n</div>\n"],"names":[],"mappings":";;;;;;;;;MAqBa,eAAe,CAAA;AAO1B,IAAA,WAAA,CAAoB,SAAuB,EAAA;QAAvB,IAAS,CAAA,SAAA,GAAT,SAAS;AAJ7B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA6B,SAAS,CAAC;AAC1D,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA8B,SAAS,CAAC;AAC3D,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAU,KAAK,CAAC;;AAInC,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC;AAClF,QAAA,IAAK,aAAa,KAAK,SAAS,EAAG;AACjC,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC;;QAEpC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC;AACnF,QAAA,IAAI,cAAc,KAAK,SAAS,EAAE;AAChC,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACzB,YAAA,IAAI,cAAc,CAAC,IAAI,KAAK,SAAS,IAAI,cAAc,CAAC,IAAI,KAAK,EAAE,EAAE;AACnE,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;;;;AAK/D,IAAA,UAAU,CAAC,SAAiB,EAAA;AACxB,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC;AAClC;;;;AAIQ;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;;+GA9B7D,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrB5B,0jBAUA,EDGQ,MAAA,EAAA,CAAA,qYAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,kIACf,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,kBAAkB,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,SAAS,EAAA,QAAA,EAAA,gFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAKJ,eAAe,EAAA,UAAA,EAAA,CAAA;kBAX3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EACnB,OAAA,EAAA;wBACL,eAAe;wBACf,WAAW;wBACX,kBAAkB;wBAClB,SAAS;AACZ,qBAAA,EAAA,QAAA,EAAA,0jBAAA,EAAA,MAAA,EAAA,CAAA,qYAAA,CAAA,EAAA;iFAKM,IAAI,EAAA,CAAA;sBAAZ;gBACQ,IAAI,EAAA,CAAA;sBAAZ;;;;;"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { signal, HostListener, Input, Component } from '@angular/core';
|
|
3
|
-
import { R as RenderingModule } from './ngx-rendering-service-lib-ngx-rendering-service-lib-
|
|
3
|
+
import { R as RenderingModule } from './ngx-rendering-service-lib-ngx-rendering-service-lib-C28wFUyA.mjs';
|
|
4
4
|
import { MatIcon } from '@angular/material/icon';
|
|
5
|
-
import * as
|
|
5
|
+
import * as i7 from '@angular/material/button';
|
|
6
6
|
import { MatButtonModule } from '@angular/material/button';
|
|
7
7
|
import { FormsModule } from '@angular/forms';
|
|
8
8
|
import * as i3 from '@angular/common';
|
|
@@ -43,7 +43,7 @@ class DdbComponent {
|
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DdbComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
46
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: DdbComponent, isStandalone: true, selector: "rs-module-ddb", inputs: { data: "data", node: "node" }, host: { listeners: { "document:fullscreenchange": "loadOptimalSize()" } }, ngImport: i0, template: "<div class=\"ddb-wrapper\" *ngIf=\"activeObject()\">\n <img\n [src]=\"activeObject()\"\n [alt]=\"node?.title || node?.name || ''\"\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}.ddb-wrapper{width:100%}.ddb-wrapper img{width:100%;position:relative}.ddb-wrapper button{position:absolute;right:0;color:#fff;background-color:#00000080}\n"], dependencies: [{ kind: "ngmodule", type: RenderingModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type:
|
|
46
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: DdbComponent, isStandalone: true, selector: "rs-module-ddb", inputs: { data: "data", node: "node" }, host: { listeners: { "document:fullscreenchange": "loadOptimalSize()" } }, ngImport: i0, template: "<div class=\"ddb-wrapper\" *ngIf=\"activeObject()\">\n <img\n [src]=\"activeObject()\"\n [alt]=\"node?.title || node?.name || ''\"\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}.ddb-wrapper{width:100%}.ddb-wrapper img{width:100%;position:relative}.ddb-wrapper button{position:absolute;right:0;color:#fff;background-color:#00000080}\n"], dependencies: [{ kind: "ngmodule", type: RenderingModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
47
47
|
}
|
|
48
48
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DdbComponent, decorators: [{
|
|
49
49
|
type: Component,
|
|
@@ -63,4 +63,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
63
63
|
}] } });
|
|
64
64
|
|
|
65
65
|
export { DdbComponent };
|
|
66
|
-
//# sourceMappingURL=ngx-rendering-service-lib-ddb.component-
|
|
66
|
+
//# sourceMappingURL=ngx-rendering-service-lib-ddb.component-BYkkda5U.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-rendering-service-lib-ddb.component-
|
|
1
|
+
{"version":3,"file":"ngx-rendering-service-lib-ddb.component-BYkkda5U.mjs","sources":["../../src/lib/module/ddb/ddb.component.ts","../../src/lib/module/ddb/ddb.component.html"],"sourcesContent":["import {AfterViewInit, Component, ElementRef, HostListener, Input, signal} 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 {MatButtonModule} from '@angular/material/button';\nimport {FormsModule} from '@angular/forms';\nimport {RenderData} from '../../dto/RenderData';\n\n@Component({\n selector: 'rs-module-ddb',\n imports: [\n RenderingModule,\n MatButtonModule,\n FormsModule,\n MatIcon,\n ],\n templateUrl: './ddb.component.html',\n styleUrl: './ddb.component.scss'\n})\nexport class DdbComponent implements RenderModule, AfterViewInit{\n @Input() data: RenderData | undefined;\n @Input() node: Node | undefined;\n activeObject = signal<string | undefined>(undefined);\n\n constructor(public element: ElementRef) { }\n\n ngAfterViewInit(): void {\n this.loadOptimalSize()\n }\n\n @HostListener('document:fullscreenchange')\n private loadOptimalSize() {\n const size = this.element.nativeElement.getBoundingClientRect();\n if (this.data?.items !== undefined && this.data?.items[0].additionalData !== undefined) {\n const additionalData = this.data?.items[0].additionalData\n const keys = Object.keys(additionalData)\n const sizeKeys = keys.filter(key => key.startsWith('size_'))\n const sizes = sizeKeys.map(key => additionalData[key])\n const matchingSize = sizes.sort((a,b) => {\n return Math.abs(parseInt(a.split(',')[0]) - size.width) > Math.abs(parseInt(b.split(',')[0]) - size.width) ? 1 : -1;\n })[0]\n const width = matchingSize.split(',')[0]\n const height = matchingSize.split(',')[1]\n const widthPlaceHolder = additionalData['widthPlaceHolder'] ?? ''\n const heightPlaceHolder = additionalData['heightPlaceHolder'] ?? ''\n const linkTemplate = additionalData['linkTemplate'] ?? ''\n const link = linkTemplate.replace(widthPlaceHolder, width).replace(heightPlaceHolder, height)\n this.activeObject.set(link)\n }\n }\n\n toggleFullscreen() {\n if(document.fullscreenElement) {\n void document.exitFullscreen();\n } else {\n this.element.nativeElement.requestFullscreen();\n }\n }\n}\n","<div class=\"ddb-wrapper\" *ngIf=\"activeObject()\">\n <img\n [src]=\"activeObject()\"\n [alt]=\"node?.title || node?.name || ''\"\n >\n <button mat-icon-button (click)=\"toggleFullscreen()\"><mat-icon>fullscreen</mat-icon></button>\n</div>\n"],"names":["i2"],"mappings":";;;;;;;;;MAoBa,YAAY,CAAA;AAKvB,IAAA,WAAA,CAAmB,OAAmB,EAAA;QAAnB,IAAO,CAAA,OAAA,GAAP,OAAO;AAF1B,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAqB,SAAS,CAAC;;IAIpD,eAAe,GAAA;QACb,IAAI,CAAC,eAAe,EAAE;;IAIhB,eAAe,GAAA;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,qBAAqB,EAAE;QAC/D,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,KAAK,SAAS,EAAE;AACtF,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc;YACzD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;AACxC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC5D,YAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC;YACtD,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,KAAI;gBACtC,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACrH,aAAC,CAAC,CAAC,CAAC,CAAC;YACL,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,gBAAgB,GAAG,cAAc,CAAC,kBAAkB,CAAC,IAAI,EAAE;YACjE,MAAM,iBAAiB,GAAG,cAAc,CAAC,mBAAmB,CAAC,IAAI,EAAE;YACnE,MAAM,YAAY,GAAG,cAAc,CAAC,cAAc,CAAC,IAAI,EAAE;AACzD,YAAA,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC;AAC7F,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;;;IAI/B,gBAAgB,GAAA;AACd,QAAA,IAAG,QAAQ,CAAC,iBAAiB,EAAE;AAC7B,YAAA,KAAK,QAAQ,CAAC,cAAc,EAAE;;aACzB;AACL,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,iBAAiB,EAAE;;;+GApCvC,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,2BAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpBzB,6PAOA,EDKQ,MAAA,EAAA,CAAA,sNAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,kIACf,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAKF,YAAY,EAAA,UAAA,EAAA,CAAA;kBAXxB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAChB,OAAA,EAAA;wBACL,eAAe;wBACf,eAAe;wBACf,WAAW;wBACX,OAAO;AACV,qBAAA,EAAA,QAAA,EAAA,6PAAA,EAAA,MAAA,EAAA,CAAA,sNAAA,CAAA,EAAA;+EAKM,IAAI,EAAA,CAAA;sBAAZ;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBAUO,eAAe,EAAA,CAAA;sBADtB,YAAY;uBAAC,2BAA2B;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Input, Component } from '@angular/core';
|
|
3
|
-
import { R as RenderingModule } from './ngx-rendering-service-lib-ngx-rendering-service-lib-
|
|
3
|
+
import { R as RenderingModule } from './ngx-rendering-service-lib-ngx-rendering-service-lib-C28wFUyA.mjs';
|
|
4
4
|
import { MatIconModule } from '@angular/material/icon';
|
|
5
5
|
import { MatButtonModule } from '@angular/material/button';
|
|
6
6
|
|
|
@@ -30,4 +30,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
30
30
|
}] } });
|
|
31
31
|
|
|
32
32
|
export { DefaultComponent };
|
|
33
|
-
//# sourceMappingURL=ngx-rendering-service-lib-default.component-
|
|
33
|
+
//# sourceMappingURL=ngx-rendering-service-lib-default.component-BRgBBmNB.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-rendering-service-lib-default.component-
|
|
1
|
+
{"version":3,"file":"ngx-rendering-service-lib-default.component-BRgBBmNB.mjs","sources":["../../src/lib/module/default/default.component.ts","../../src/lib/module/default/default.component.html"],"sourcesContent":["import {\n Component,\n Input,\n OnChanges,\n SimpleChanges\n} from '@angular/core';\nimport {RenderingModule} from '../../rendering.module';\nimport {RenderModule} from '../RenderModule';\nimport {Node} from 'ngx-edu-sharing-api';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatButtonModule} from '@angular/material/button';\n\n@Component({\n selector: 'rs-module-default',\n imports: [\n RenderingModule,\n MatButtonModule,\n MatIconModule,\n ],\n templateUrl: './default.component.html',\n styleUrl: './default.component.scss'\n})\nexport class DefaultComponent implements RenderModule, OnChanges {\n @Input() data: undefined;\n @Input() node: Node | undefined;\n previewUrl: String = ''\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.node !== undefined) {\n this.previewUrl = this.node.preview?.url ?? ''\n }\n }\n}\n","<div class=\"rs-default-wrapper\">\n <img [src]=previewUrl>\n</div>\n"],"names":[],"mappings":";;;;;;MAsBa,gBAAgB,CAAA;AAV7B,IAAA,WAAA,GAAA;QAaE,IAAU,CAAA,UAAA,GAAW,EAAE;AAOxB;AALC,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;AAC3B,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE;;;+GAPvC,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,0ICtB7B,wEAGA,EAAA,MAAA,EAAA,CAAA,wFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDYQ,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,8BACf,aAAa,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAKR,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAV5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EACpB,OAAA,EAAA;wBACL,eAAe;wBACf,eAAe;wBACf,aAAa;AAChB,qBAAA,EAAA,QAAA,EAAA,wEAAA,EAAA,MAAA,EAAA,CAAA,wFAAA,CAAA,EAAA;8BAKM,IAAI,EAAA,CAAA;sBAAZ;gBACQ,IAAI,EAAA,CAAA;sBAAZ;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Input, Component } from '@angular/core';
|
|
3
|
-
import { R as RenderingModule } from './ngx-rendering-service-lib-ngx-rendering-service-lib-
|
|
3
|
+
import { R as RenderingModule } from './ngx-rendering-service-lib-ngx-rendering-service-lib-C28wFUyA.mjs';
|
|
4
4
|
import { MatIconModule } from '@angular/material/icon';
|
|
5
5
|
import { MatButtonModule } from '@angular/material/button';
|
|
6
6
|
import { EduSharingUiModule } from 'ngx-edu-sharing-ui';
|
|
@@ -36,4 +36,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
36
36
|
}] } });
|
|
37
37
|
|
|
38
38
|
export { ErrorComponent };
|
|
39
|
-
//# sourceMappingURL=ngx-rendering-service-lib-error.component-
|
|
39
|
+
//# sourceMappingURL=ngx-rendering-service-lib-error.component-CQPy_Eto.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-rendering-service-lib-error.component-
|
|
1
|
+
{"version":3,"file":"ngx-rendering-service-lib-error.component-CQPy_Eto.mjs","sources":["../../src/lib/module/error/error.component.ts","../../src/lib/module/error/error.component.html"],"sourcesContent":["import {\n AfterContentInit,\n Component,\n Input,\n} from '@angular/core';\nimport {RenderingModule} from '../../rendering.module';\nimport {RenderModule} from '../RenderModule';\nimport {Node} from 'ngx-edu-sharing-api';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatButtonModule} from '@angular/material/button';\nimport {RenderData} from '../../dto/RenderData';\nimport {EduSharingUiModule} from 'ngx-edu-sharing-ui';\nimport {MatCard, MatCardHeader, MatCardSubtitle, MatCardTitle} from '@angular/material/card';\n\n@Component({\n selector: 'rs-module-error',\n imports: [\n RenderingModule,\n MatButtonModule,\n MatIconModule,\n EduSharingUiModule,\n MatCard,\n MatCardSubtitle,\n MatCardHeader,\n MatCardTitle\n ],\n templateUrl: './error.component.html',\n styleUrl: './error.component.scss'\n})\nexport class ErrorComponent implements RenderModule, AfterContentInit {\n @Input() data: RenderData | undefined\n @Input() node: Node | undefined;\n errorMessage: string = ''\n\n ngAfterContentInit() {\n this.errorMessage = this.data?.publicErrorMessage ?? ''\n }\n}\n","<div class=\"rs-error-wrapper\">\n <mat-card appearance=\"outlined\">\n <mat-card-header>\n <mat-card-title class=\"card-title\">{{ 'RENDERING.ERROR.GENERIC_ERROR_MESSAGE' | translate }}</mat-card-title>\n <mat-card-subtitle class=\"card-subtitle\">{{errorMessage | translate}}</mat-card-subtitle>\n </mat-card-header>\n </mat-card>\n</div>\n"],"names":[],"mappings":";;;;;;;;;MA6Ba,cAAc,CAAA;AAf3B,IAAA,WAAA,GAAA;QAkBE,IAAY,CAAA,YAAA,GAAW,EAAE;AAK1B;IAHC,kBAAkB,GAAA;QAChB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,kBAAkB,IAAI,EAAE;;+GAN9C,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,mHC7B3B,0WAQA,EAAA,MAAA,EAAA,CAAA,2GAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDSQ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,EACb,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,kBAAkB,4FAClB,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,eAAe,EACf,QAAA,EAAA,2DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,aAAa,4DACb,YAAY,EAAA,QAAA,EAAA,kDAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAKP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAf1B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAClB,OAAA,EAAA;wBACL,eAAe;wBACf,eAAe;wBACf,aAAa;wBACb,kBAAkB;wBAClB,OAAO;wBACP,eAAe;wBACf,aAAa;wBACb;AACH,qBAAA,EAAA,QAAA,EAAA,0WAAA,EAAA,MAAA,EAAA,CAAA,2GAAA,CAAA,EAAA;8BAKM,IAAI,EAAA,CAAA;sBAAZ;gBACQ,IAAI,EAAA,CAAA;sBAAZ;;;;;"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Input, Component } from '@angular/core';
|
|
3
|
-
import { R as RenderingModule } from './ngx-rendering-service-lib-ngx-rendering-service-lib-
|
|
3
|
+
import { R as RenderingModule } from './ngx-rendering-service-lib-ngx-rendering-service-lib-C28wFUyA.mjs';
|
|
4
4
|
import { MatIconModule } from '@angular/material/icon';
|
|
5
|
-
import * as
|
|
5
|
+
import * as i7 from '@angular/material/button';
|
|
6
6
|
import { MatButtonModule } from '@angular/material/button';
|
|
7
7
|
import * as i4 from '@ngx-translate/core';
|
|
8
8
|
import { TranslateModule } from '@ngx-translate/core';
|
|
@@ -14,8 +14,7 @@ class MoodleComponent {
|
|
|
14
14
|
this.sanitizer = sanitizer;
|
|
15
15
|
this.isWebComponent = false;
|
|
16
16
|
this.previewUrl = '';
|
|
17
|
-
this.sanitizedUrl =
|
|
18
|
-
};
|
|
17
|
+
this.sanitizedUrl = null;
|
|
19
18
|
}
|
|
20
19
|
ngOnInit() {
|
|
21
20
|
if (this.data?.items !== undefined && this.data.items[0].link) {
|
|
@@ -28,11 +27,10 @@ class MoodleComponent {
|
|
|
28
27
|
const uri = new URL(this.data.items[0].link);
|
|
29
28
|
return this.sanitizer.bypassSecurityTrustResourceUrl(uri.toString());
|
|
30
29
|
}
|
|
31
|
-
return
|
|
32
|
-
};
|
|
30
|
+
return null;
|
|
33
31
|
}
|
|
34
32
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: MoodleComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: MoodleComponent, isStandalone: true, selector: "rs-module-moodle", inputs: { data: "data", node: "node", isWebComponent: "isWebComponent" }, ngImport: i0, template: "<div class=\"moodle-wrapper\" *ngIf=\"data?.items !== undefined\">\n <iframe *ngIf=\"!isWebComponent\" class=\"frame\" [src]=\"sanitizedUrl\"></iframe>\n <img *ngIf=\"isWebComponent\" [src]=previewUrl alt=\"preview\">\n <a mat-button=\"filled\" [href]=\"sanitizedUrl\" target=\"_blank\">{{ 'RENDERING.GO_TO_COURSE' | translate }}</a>\n</div>\n", styles: [":host{position:relative;display:flex;align-items:center;width:100%;height:100%}.moodle-wrapper{height:100%;width:100%;display:flex;flex-direction:column;align-items:center;gap:1em}.moodle-wrapper .frame{border:2px solid lightgray;width:100%;height:100%}\n"], dependencies: [{ kind: "ngmodule", type: RenderingModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type:
|
|
33
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: MoodleComponent, isStandalone: true, selector: "rs-module-moodle", inputs: { data: "data", node: "node", isWebComponent: "isWebComponent" }, ngImport: i0, template: "<div class=\"moodle-wrapper\" *ngIf=\"data?.items !== undefined\">\n <iframe *ngIf=\"!isWebComponent\" class=\"frame\" [src]=\"sanitizedUrl\"></iframe>\n <img *ngIf=\"isWebComponent\" [src]=previewUrl alt=\"preview\">\n <a mat-button=\"filled\" [href]=\"sanitizedUrl\" target=\"_blank\">{{ 'RENDERING.GO_TO_COURSE' | translate }}</a>\n</div>\n", styles: [":host{position:relative;display:flex;align-items:center;width:100%;height:100%}.moodle-wrapper{height:100%;width:100%;display:flex;flex-direction:column;align-items:center;gap:1em}.moodle-wrapper .frame{border:2px solid lightgray;width:100%;height:100%}\n"], dependencies: [{ kind: "ngmodule", type: RenderingModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
36
34
|
}
|
|
37
35
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: MoodleComponent, decorators: [{
|
|
38
36
|
type: Component,
|
|
@@ -51,4 +49,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
51
49
|
}] } });
|
|
52
50
|
|
|
53
51
|
export { MoodleComponent };
|
|
54
|
-
//# sourceMappingURL=ngx-rendering-service-lib-moodle.component-
|
|
52
|
+
//# sourceMappingURL=ngx-rendering-service-lib-moodle.component-o5gEOK8x.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ngx-rendering-service-lib-moodle.component-o5gEOK8x.mjs","sources":["../../src/lib/module/moodle/moodle.component.ts","../../src/lib/module/moodle/moodle.component.html"],"sourcesContent":["import {Component, Input, OnInit} from '@angular/core';\nimport {RenderingModule} from '../../rendering.module';\nimport {RenderModule} from '../RenderModule';\nimport {Node} from 'ngx-edu-sharing-api';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatButtonModule} from '@angular/material/button';\nimport {RenderData} from '../../dto/RenderData';\nimport {DomSanitizer, SafeResourceUrl} from '@angular/platform-browser';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@Component({\n selector: 'rs-module-moodle',\n imports: [\n RenderingModule,\n MatButtonModule,\n MatIconModule,\n TranslateModule,\n ],\n templateUrl: './moodle.component.html',\n styleUrl: './moodle.component.scss'\n})\nexport class MoodleComponent implements RenderModule, OnInit {\n @Input() data: RenderData | undefined\n @Input() node: Node | undefined\n @Input() isWebComponent: boolean = false\n previewUrl: string = ''\n sanitizedUrl: SafeResourceUrl | null = null\n\n constructor(private sanitizer: DomSanitizer) {\n }\n\n ngOnInit() {\n if (this.data?.items !== undefined && this.data.items[0].link) {\n this.sanitizedUrl = this.getSafeUri()\n this.previewUrl = this.node?.preview?.url ?? ''\n }\n }\n\n getSafeUri() {\n if (this.data?.items !== undefined && this.data.items[0].link) {\n const uri = new URL(this.data.items[0].link)\n return this.sanitizer.bypassSecurityTrustResourceUrl(uri.toString())\n }\n return null\n }\n}\n","<div class=\"moodle-wrapper\" *ngIf=\"data?.items !== undefined\">\n <iframe *ngIf=\"!isWebComponent\" class=\"frame\" [src]=\"sanitizedUrl\"></iframe>\n <img *ngIf=\"isWebComponent\" [src]=previewUrl alt=\"preview\">\n <a mat-button=\"filled\" [href]=\"sanitizedUrl\" target=\"_blank\">{{ 'RENDERING.GO_TO_COURSE' | translate }}</a>\n</div>\n"],"names":["i3"],"mappings":";;;;;;;;;;;MAqBa,eAAe,CAAA;AAO1B,IAAA,WAAA,CAAoB,SAAuB,EAAA;QAAvB,IAAS,CAAA,SAAA,GAAT,SAAS;QAJpB,IAAc,CAAA,cAAA,GAAY,KAAK;QACxC,IAAU,CAAA,UAAA,GAAW,EAAE;QACvB,IAAY,CAAA,YAAA,GAA2B,IAAI;;IAK3C,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC7D,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE;AACrC,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE;;;IAInD,UAAU,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC7D,YAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5C,OAAO,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;;AAEtE,QAAA,OAAO,IAAI;;+GAtBF,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrB5B,4VAKA,EDQI,MAAA,EAAA,CAAA,iQAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,kIACf,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,gFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAKN,eAAe,EAAA,UAAA,EAAA,CAAA;kBAX3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EACrB,OAAA,EAAA;wBACP,eAAe;wBACf,eAAe;wBACf,aAAa;wBACb,eAAe;AAChB,qBAAA,EAAA,QAAA,EAAA,4VAAA,EAAA,MAAA,EAAA,CAAA,iQAAA,CAAA,EAAA;iFAKQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,cAAc,EAAA,CAAA;sBAAtB;;;;;"}
|
|
@@ -6,7 +6,7 @@ import * as i1$1 from 'ngx-rendering-service-api';
|
|
|
6
6
|
import { RSApiConfiguration } from 'ngx-rendering-service-api';
|
|
7
7
|
import * as i1 from 'ngx-edu-sharing-api';
|
|
8
8
|
import { EduSharingApiModule, RestConstants } from 'ngx-edu-sharing-api';
|
|
9
|
-
import * as
|
|
9
|
+
import * as i7 from '@angular/material/button';
|
|
10
10
|
import { MatButtonModule, MatIconButton } from '@angular/material/button';
|
|
11
11
|
import * as i4 from '@angular/material/icon';
|
|
12
12
|
import { MatIconModule, MatIcon } from '@angular/material/icon';
|
|
@@ -21,9 +21,10 @@ import { pdfDefaultOptions, NgxExtendedPdfViewerModule, NgxExtendedPdfViewerComp
|
|
|
21
21
|
import { YouTubePlayer } from '@angular/youtube-player';
|
|
22
22
|
import { firstValueFrom, Subject, BehaviorSubject, debounceTime, switchMap, interval, takeUntil } from 'rxjs';
|
|
23
23
|
import * as i1$2 from '@angular/platform-browser';
|
|
24
|
-
import * as i5 from '
|
|
24
|
+
import * as i5 from 'ngx-edu-sharing-api/lib/edu-sharing-api-configuration';
|
|
25
|
+
import * as i5$1 from '@angular/material/progress-spinner';
|
|
25
26
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
26
|
-
import * as i6
|
|
27
|
+
import * as i6 from '@angular/material/progress-bar';
|
|
27
28
|
import { MatProgressBarModule } from '@angular/material/progress-bar';
|
|
28
29
|
import { filter } from 'rxjs/operators';
|
|
29
30
|
|
|
@@ -106,7 +107,7 @@ class ImageComponent {
|
|
|
106
107
|
}
|
|
107
108
|
}
|
|
108
109
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ImageComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
109
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", 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 | rsAssetLink\"\n [alt]=\"node?.title || node?.name || ''\"\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;width:100%;height:100%}.image-wrapper{width:100%;height:100%;max-height:var(--containerHeight)}.image-wrapper img{width:100%;height:100%;max-height:var(--containerHeight);object-fit:contain}.image-wrapper button{position:absolute;margin:5px;right:0;color:#fff;background-color:#00000080}\n"], dependencies: [{ kind: "ngmodule", type: RenderingModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AssetLinkPipe, name: "rsAssetLink" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type:
|
|
110
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", 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 | rsAssetLink\"\n [alt]=\"node?.title || node?.name || ''\"\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;width:100%;height:100%}.image-wrapper{width:100%;height:100%;max-height:var(--containerHeight)}.image-wrapper img{width:100%;height:100%;max-height:var(--containerHeight);object-fit:contain}.image-wrapper button{position:absolute;margin:5px;right:0;color:#fff;background-color:#00000080}\n"], dependencies: [{ kind: "ngmodule", type: RenderingModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AssetLinkPipe, name: "rsAssetLink" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
110
111
|
}
|
|
111
112
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ImageComponent, decorators: [{
|
|
112
113
|
type: Component,
|
|
@@ -496,11 +497,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
496
497
|
}], ctorParameters: () => [{ type: i1.ConfigService }] });
|
|
497
498
|
|
|
498
499
|
class UrlComponent {
|
|
499
|
-
|
|
500
|
+
static { this.LTI_PATH = '/rest/ltiplatform/v13/generateLoginInitiationFormResourceLink?nodeId='; }
|
|
501
|
+
static { this.LTI_QUERY = '&editMode=false&launchPresentation=iframe'; }
|
|
502
|
+
constructor(sanitizer, trackingService, gdprService, translate, apiConfig) {
|
|
500
503
|
this.sanitizer = sanitizer;
|
|
501
504
|
this.trackingService = trackingService;
|
|
502
505
|
this.gdprService = gdprService;
|
|
503
506
|
this.translate = translate;
|
|
507
|
+
this.apiConfig = apiConfig;
|
|
508
|
+
this.isWebComponent = false;
|
|
504
509
|
this.gdpr = null;
|
|
505
510
|
this.sanitizedUrl = null;
|
|
506
511
|
this.url = '';
|
|
@@ -509,6 +514,14 @@ class UrlComponent {
|
|
|
509
514
|
this.hasBeenClicked = false;
|
|
510
515
|
this.UrlEmbeddings = UrlEmbeddings;
|
|
511
516
|
}
|
|
517
|
+
ngAfterViewInit() {
|
|
518
|
+
if (!this.isWebComponent && this.ltiFrame !== undefined) {
|
|
519
|
+
const ltiIFrame = this.ltiFrame.nativeElement;
|
|
520
|
+
const targetHeight = window.innerHeight - ltiIFrame.getBoundingClientRect().top;
|
|
521
|
+
const height = targetHeight < 300 ? window.innerHeight : targetHeight;
|
|
522
|
+
ltiIFrame.height = height + "px";
|
|
523
|
+
}
|
|
524
|
+
}
|
|
512
525
|
async ngOnInit() {
|
|
513
526
|
if (this.node) {
|
|
514
527
|
this.gdpr = await this.gdprService.getGdprConfig(this.node);
|
|
@@ -527,6 +540,9 @@ class UrlComponent {
|
|
|
527
540
|
else if (this.embedding === UrlEmbeddings.LEARNINGAPPS) {
|
|
528
541
|
this.sanitizedUrl = this.getLearningAppsUrl();
|
|
529
542
|
}
|
|
543
|
+
else if (this.embedding === UrlEmbeddings.LTI13TOOL) {
|
|
544
|
+
this.sanitizedUrl = this.getLtiUrl();
|
|
545
|
+
}
|
|
530
546
|
}
|
|
531
547
|
consentToGdprWarning() {
|
|
532
548
|
if (this.isGdprGeneric()) {
|
|
@@ -546,6 +562,10 @@ class UrlComponent {
|
|
|
546
562
|
const learningAppsUrl = this.url.replace('https://learningapps.org/', 'https://learningapps.org/view');
|
|
547
563
|
return this.sanitizer.bypassSecurityTrustResourceUrl(learningAppsUrl);
|
|
548
564
|
}
|
|
565
|
+
getLtiUrl() {
|
|
566
|
+
const ltiUrl = this.apiConfig.rootUrl + UrlComponent.LTI_PATH + this.node?.ref.id + UrlComponent.LTI_QUERY;
|
|
567
|
+
return this.sanitizer.bypassSecurityTrustResourceUrl(ltiUrl);
|
|
568
|
+
}
|
|
549
569
|
onLinkClick() {
|
|
550
570
|
if (this.node?.ref.id && this.node?.ref.repo && !this.hasBeenClicked) {
|
|
551
571
|
this.trackingService.trackClicked(this.node.ref.id, this.node.ref.repo);
|
|
@@ -567,8 +587,8 @@ class UrlComponent {
|
|
|
567
587
|
}
|
|
568
588
|
}
|
|
569
589
|
}
|
|
570
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: UrlComponent, deps: [{ token: i1$2.DomSanitizer }, { token: TrackingService }, { token: GdprService }, { token: i4$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
571
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: UrlComponent, isStandalone: true, selector: "rs-module-url", inputs: { data: "data", node: "node" }, ngImport: i0, template: "<div class=\"url-wrapper\">\n <div *ngIf=\"gdpr === null\">\n <ng-container *ngIf=\"embedding === UrlEmbeddings.YOUTUBE && externalId !== ''\">\n <div class=\"youtube-wrapper\">\n <youtube-player\n [videoId]=\"externalId ?? ''\"\n [disableCookies]=\"true\"\n [width]=\"500\"\n ></youtube-player>\n </div>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.VIMEO && externalId !== ''\">\n <iframe class=\"vimeoFrame\" [src]=\"sanitizedUrl\" style=\"width: 500px; height: 300px;\"></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<ng-container *ngIf=\"embedding === UrlEmbeddings.LINK\">\n
|
|
590
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: UrlComponent, deps: [{ token: i1$2.DomSanitizer }, { token: TrackingService }, { token: GdprService }, { token: i4$1.TranslateService }, { token: i5.EduSharingApiConfiguration }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
591
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: UrlComponent, isStandalone: true, selector: "rs-module-url", inputs: { data: "data", node: "node", isWebComponent: "isWebComponent" }, viewQueries: [{ propertyName: "ltiFrame", first: true, predicate: ["ltiFrame"], descendants: true }], ngImport: i0, template: "<div class=\"url-wrapper\">\n <div *ngIf=\"gdpr === null\">\n <ng-container *ngIf=\"embedding === UrlEmbeddings.YOUTUBE && externalId !== ''\">\n <div class=\"youtube-wrapper\">\n <youtube-player\n [videoId]=\"externalId ?? ''\"\n [disableCookies]=\"true\"\n [width]=\"500\"\n ></youtube-player>\n </div>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.VIMEO && externalId !== ''\">\n <iframe class=\"vimeoFrame\" [src]=\"sanitizedUrl\" style=\"width: 500px; height: 300px;\"></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 <ng-container *ngIf=\"embedding === UrlEmbeddings.LTI13TOOL && url !== ''\">\n <iframe\n #ltiFrame\n class=\"ltiFrame\"\n [src]=sanitizedUrl\n allowfullscreen>\n </iframe>\n\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.LINK\">\n <div class=\"link-wrapper\">\n <img [src]=previewUrl>\n <a mat-button=\"filled\" [href]=\"url\" target=\"_blank\" (click)=\"onLinkClick()\">{{ 'SHARING.LINK' | translate }}</a>\n </div>\n </ng-container>\n </div>\n\n <div class=\"gdpr-wrapper\" *ngIf=\"gdpr !== null\">\n <div class=\"gdpr-image-container\">\n <img [src]=\"previewUrl\">\n <div class=\"gdpr-overlay\">\n <ng-container *ngIf=\"isGdprGeneric()\">\n <div class=\"gdpr-content\">\n <h3>{{ 'RENDERING.GDPR.EXTERNAL_SITE' | translate }}</h3>\n <span>{{gdprInfoText}}</span>\n <a [href]=\"gdpr.ref\" target=\"_blank\">{{ 'RENDERING.GDPR.GDPR_REGULATIONS' | translate }}</a>\n <button\n mat-button\n style=\"background-color: green; color: white;\"\n (click)=\"consentToGdprWarning()\">\n {{ 'SHARING.LINK' | translate }}\n </button>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!isGdprGeneric()\">\n <div class=\"gdpr-content\">\n <h3>{{ 'RENDERING.GDPR.EXTERNAL_CONTENT' | translate }}</h3>\n <span>{{gdprInfoText}}</span>\n <span>{{'RENDERING.GDPR.FURTHER_INFORMATION' | translate }}</span>\n <a [href]=\"gdpr.ref\" target=\"_blank\">{{ 'RENDERING.GDPR.GDPR_REGULATIONS' | translate }}</a>\n <button\n mat-button\n style=\"background-color: green; color: white;\"\n (click)=\"consentToGdprWarning()\">\n {{ 'RENDERING.GDPR.AGREE_AND_CONTINUE' | translate }}\n </button>\n </div>\n </ng-container>\n </div>\n </div>\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}.url-wrapper .ltiFrame{border:none;width:100%;max-width:100%}.url-wrapper .gdpr-wrapper{width:100%;display:flex;flex-direction:column;align-items:center}.url-wrapper .gdpr-wrapper .gdpr-image-container{position:relative;width:100%;display:inline-block}.url-wrapper .gdpr-wrapper .gdpr-image-container img{width:100%;height:auto;display:block}.url-wrapper .gdpr-wrapper .gdpr-image-container .gdpr-overlay{position:absolute;bottom:0;left:0;right:0;background-color:#0006;display:flex;align-items:center;justify-content:center}.url-wrapper .gdpr-wrapper .gdpr-image-container .gdpr-overlay .gdpr-content{display:flex;flex-direction:column;align-items:center;gap:.5em;color:#fff;text-align:center;padding-bottom:1em}.url-wrapper .gdpr-wrapper .gdpr-image-container .gdpr-overlay .gdpr-content a{padding-bottom:1em}.url-wrapper .gdpr-wrapper .gdpr-image-container .gdpr-overlay .gdpr-content span,.url-wrapper .gdpr-wrapper .gdpr-image-container .gdpr-overlay .gdpr-content a{font-size:.875rem}.url-wrapper .link-wrapper{width:100%;display:flex;flex-direction:column;align-items:center;gap:1em}.url-wrapper .youtube-wrapper{width:100%;height:auto;display:flex;justify-content:center}\n"], dependencies: [{ kind: "ngmodule", type: RenderingModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i7.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"] }, { kind: "ngmodule", type: EduSharingUiModule }, { kind: "pipe", type: i4$1.TranslatePipe, name: "translate" }] }); }
|
|
572
592
|
}
|
|
573
593
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: UrlComponent, decorators: [{
|
|
574
594
|
type: Component,
|
|
@@ -579,11 +599,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
579
599
|
YouTubePlayer,
|
|
580
600
|
NgOptimizedImage,
|
|
581
601
|
EduSharingUiModule,
|
|
582
|
-
], template: "<div class=\"url-wrapper\">\n <div *ngIf=\"gdpr === null\">\n <ng-container *ngIf=\"embedding === UrlEmbeddings.YOUTUBE && externalId !== ''\">\n <div class=\"youtube-wrapper\">\n <youtube-player\n [videoId]=\"externalId ?? ''\"\n [disableCookies]=\"true\"\n [width]=\"500\"\n ></youtube-player>\n </div>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.VIMEO && externalId !== ''\">\n <iframe class=\"vimeoFrame\" [src]=\"sanitizedUrl\" style=\"width: 500px; height: 300px;\"></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<ng-container *ngIf=\"embedding === UrlEmbeddings.LINK\">\n
|
|
583
|
-
}], ctorParameters: () => [{ type: i1$2.DomSanitizer }, { type: TrackingService }, { type: GdprService }, { type: i4$1.TranslateService }], propDecorators: { data: [{
|
|
602
|
+
], template: "<div class=\"url-wrapper\">\n <div *ngIf=\"gdpr === null\">\n <ng-container *ngIf=\"embedding === UrlEmbeddings.YOUTUBE && externalId !== ''\">\n <div class=\"youtube-wrapper\">\n <youtube-player\n [videoId]=\"externalId ?? ''\"\n [disableCookies]=\"true\"\n [width]=\"500\"\n ></youtube-player>\n </div>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.VIMEO && externalId !== ''\">\n <iframe class=\"vimeoFrame\" [src]=\"sanitizedUrl\" style=\"width: 500px; height: 300px;\"></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 <ng-container *ngIf=\"embedding === UrlEmbeddings.LTI13TOOL && url !== ''\">\n <iframe\n #ltiFrame\n class=\"ltiFrame\"\n [src]=sanitizedUrl\n allowfullscreen>\n </iframe>\n\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.LINK\">\n <div class=\"link-wrapper\">\n <img [src]=previewUrl>\n <a mat-button=\"filled\" [href]=\"url\" target=\"_blank\" (click)=\"onLinkClick()\">{{ 'SHARING.LINK' | translate }}</a>\n </div>\n </ng-container>\n </div>\n\n <div class=\"gdpr-wrapper\" *ngIf=\"gdpr !== null\">\n <div class=\"gdpr-image-container\">\n <img [src]=\"previewUrl\">\n <div class=\"gdpr-overlay\">\n <ng-container *ngIf=\"isGdprGeneric()\">\n <div class=\"gdpr-content\">\n <h3>{{ 'RENDERING.GDPR.EXTERNAL_SITE' | translate }}</h3>\n <span>{{gdprInfoText}}</span>\n <a [href]=\"gdpr.ref\" target=\"_blank\">{{ 'RENDERING.GDPR.GDPR_REGULATIONS' | translate }}</a>\n <button\n mat-button\n style=\"background-color: green; color: white;\"\n (click)=\"consentToGdprWarning()\">\n {{ 'SHARING.LINK' | translate }}\n </button>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!isGdprGeneric()\">\n <div class=\"gdpr-content\">\n <h3>{{ 'RENDERING.GDPR.EXTERNAL_CONTENT' | translate }}</h3>\n <span>{{gdprInfoText}}</span>\n <span>{{'RENDERING.GDPR.FURTHER_INFORMATION' | translate }}</span>\n <a [href]=\"gdpr.ref\" target=\"_blank\">{{ 'RENDERING.GDPR.GDPR_REGULATIONS' | translate }}</a>\n <button\n mat-button\n style=\"background-color: green; color: white;\"\n (click)=\"consentToGdprWarning()\">\n {{ 'RENDERING.GDPR.AGREE_AND_CONTINUE' | translate }}\n </button>\n </div>\n </ng-container>\n </div>\n </div>\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}.url-wrapper .ltiFrame{border:none;width:100%;max-width:100%}.url-wrapper .gdpr-wrapper{width:100%;display:flex;flex-direction:column;align-items:center}.url-wrapper .gdpr-wrapper .gdpr-image-container{position:relative;width:100%;display:inline-block}.url-wrapper .gdpr-wrapper .gdpr-image-container img{width:100%;height:auto;display:block}.url-wrapper .gdpr-wrapper .gdpr-image-container .gdpr-overlay{position:absolute;bottom:0;left:0;right:0;background-color:#0006;display:flex;align-items:center;justify-content:center}.url-wrapper .gdpr-wrapper .gdpr-image-container .gdpr-overlay .gdpr-content{display:flex;flex-direction:column;align-items:center;gap:.5em;color:#fff;text-align:center;padding-bottom:1em}.url-wrapper .gdpr-wrapper .gdpr-image-container .gdpr-overlay .gdpr-content a{padding-bottom:1em}.url-wrapper .gdpr-wrapper .gdpr-image-container .gdpr-overlay .gdpr-content span,.url-wrapper .gdpr-wrapper .gdpr-image-container .gdpr-overlay .gdpr-content a{font-size:.875rem}.url-wrapper .link-wrapper{width:100%;display:flex;flex-direction:column;align-items:center;gap:1em}.url-wrapper .youtube-wrapper{width:100%;height:auto;display:flex;justify-content:center}\n"] }]
|
|
603
|
+
}], ctorParameters: () => [{ type: i1$2.DomSanitizer }, { type: TrackingService }, { type: GdprService }, { type: i4$1.TranslateService }, { type: i5.EduSharingApiConfiguration }], propDecorators: { data: [{
|
|
584
604
|
type: Input
|
|
585
605
|
}], node: [{
|
|
586
606
|
type: Input
|
|
607
|
+
}], isWebComponent: [{
|
|
608
|
+
type: Input
|
|
609
|
+
}], ltiFrame: [{
|
|
610
|
+
type: ViewChild,
|
|
611
|
+
args: ['ltiFrame']
|
|
587
612
|
}] } });
|
|
588
613
|
|
|
589
614
|
var url_component = /*#__PURE__*/Object.freeze({
|
|
@@ -1125,9 +1150,9 @@ class RenderComponent {
|
|
|
1125
1150
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: RenderComponent, deps: [{ token: i1$1.RenderControllerWrapperService }, { token: i1$1.JobInfoControllerService }, { token: ModuleInfoService }, { token: i3.PlatformLocation }, { token: TrackingService }, { token: RENDERING_SERVICE_LIB_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1126
1151
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: RenderComponent, isStandalone: true, selector: "rs-root", inputs: { request: "request", node: "node", serviceWorkerUrl: "serviceWorkerUrl", activateServiceWorker: "activateServiceWorker", assetUrl: "assetUrl", resourceUrl: "resourceUrl", isWebComponent: "isWebComponent" }, providers: [
|
|
1127
1152
|
TranslateService
|
|
1128
|
-
], 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') && isWebComponent) {\n <rs-module-pdf-iframe [data]=\"data\" [node]=\"node\"></rs-module-pdf-iframe>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n @defer (when (data?.module === 'PDF' || data?.module === 'DOCUMENT') && !isWebComponent) {\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' || data.module === 'SPREADSHEET') {\n <rs-module-edu-html [data]=\"data\" [node]=\"node\"></rs-module-edu-html>\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 === 'MOODLE') {\n <rs-module-moodle [data]=\"data\" [node]=\"node\" [isWebComponent]=\"isWebComponent\"></rs-module-moodle>\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 @defer (when data?.module === 'DDB'){\n <rs-module-ddb [data]=\"data\" [node]=\"node\"></rs-module-ddb>\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 *ngIf=\"data.module === 'ERROR'\">\n @defer (when data.module === 'ERROR') {\n <rs-module-error [node]=\"node\" [data]=\"data\"></rs-module-error>\n }\n </ng-container>\n </ng-container>\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\">{{ 'RENDERING.QUEUE_POSITION' | translate }}: {{-(progress.progress ?? 0)}}</div>\n <div *ngIf=\"(progress.progress ?? 0) >= 0\">{{ 'RENDERING.CONVERTING' | translate }}</div>\n <div *ngIf=\"(progress.progress ?? 0) >= 0\">\n <mat-progress-bar [value]=\"(progress.progress ?? 0)\"></mat-progress-bar>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spinner'\">\n <div *ngIf=\"(progress.progress ?? 0) < 0\">{{ 'RENDERING.QUEUE_POSITION' | translate }}: {{-(progress.progress ?? 0)}}</div>\n <div *ngIf=\"(progress.progress ?? 0) >= 0\">{{ 'RENDERING.CONVERTING' | translate }}</div>\n <div *ngIf=\"(progress.progress ?? 0) >= 0\">\n <mat-spinner [diameter]=\"50\"></mat-spinner>\n </div>\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}.module{display:flex;flex-direction:column;gap:5px;height:auto}.module.module-PDF{height:100%}.module.module-{align-items:center}.module .progress{width:80%;min-height:80px;display:flex;justify-content:center;flex-grow:1;align-items:center;flex-direction:column;gap:10px}.module .progress>div{width:100%;display:flex;justify-content:center}.module .progress mat-progress-bar{width:100%;height:4px}\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: i5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i6
|
|
1153
|
+
], 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') && isWebComponent) {\n <rs-module-pdf-iframe [data]=\"data\" [node]=\"node\"></rs-module-pdf-iframe>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n @defer (when (data?.module === 'PDF' || data?.module === 'DOCUMENT') && !isWebComponent) {\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' || data.module === 'SPREADSHEET') {\n <rs-module-edu-html [data]=\"data\" [node]=\"node\"></rs-module-edu-html>\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 === 'MOODLE') {\n <rs-module-moodle [data]=\"data\" [node]=\"node\" [isWebComponent]=\"isWebComponent\"></rs-module-moodle>\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 @defer (when data?.module === 'DDB'){\n <rs-module-ddb [data]=\"data\" [node]=\"node\"></rs-module-ddb>\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\" [isWebComponent]=\"isWebComponent\"></rs-module-url>\n }\n </ng-container>\n <ng-container *ngIf=\"data.module === 'ERROR'\">\n @defer (when data.module === 'ERROR') {\n <rs-module-error [node]=\"node\" [data]=\"data\"></rs-module-error>\n }\n </ng-container>\n </ng-container>\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\">{{ 'RENDERING.QUEUE_POSITION' | translate }}: {{-(progress.progress ?? 0)}}</div>\n <div *ngIf=\"(progress.progress ?? 0) >= 0\">{{ 'RENDERING.CONVERTING' | translate }}</div>\n <div *ngIf=\"(progress.progress ?? 0) >= 0\">\n <mat-progress-bar [value]=\"(progress.progress ?? 0)\"></mat-progress-bar>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spinner'\">\n <div *ngIf=\"(progress.progress ?? 0) < 0\">{{ 'RENDERING.QUEUE_POSITION' | translate }}: {{-(progress.progress ?? 0)}}</div>\n <div *ngIf=\"(progress.progress ?? 0) >= 0\">{{ 'RENDERING.CONVERTING' | translate }}</div>\n <div *ngIf=\"(progress.progress ?? 0) >= 0\">\n <mat-spinner [diameter]=\"50\"></mat-spinner>\n </div>\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}.module{display:flex;flex-direction:column;gap:5px;height:auto}.module.module-PDF{height:100%}.module.module-{align-items:center}.module .progress{width:80%;min-height:80px;display:flex;justify-content:center;flex-grow:1;align-items:center;flex-direction:column;gap:10px}.module .progress>div{width:100%;display:flex;justify-content:center}.module .progress mat-progress-bar{width:100%;height:4px}\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: i5$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i6.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: EduSharingApiModule }, { kind: "ngmodule", type: EduSharingUiCommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4$1.TranslatePipe, name: "translate" }], deferBlockDependencies: [() => [Promise.resolve().then(function () { return image_component; }).then(m => m.ImageComponent)], () => [Promise.resolve().then(function () { return video_component; }).then(m => m.VideoComponent)], () => [Promise.resolve().then(function () { return pdfIframe_component; }).then(m => m.PdfIframeComponent)], () => [Promise.resolve().then(function () { return pdf_component; }).then(m => m.PdfComponent)], () => [Promise.resolve().then(function () { return eduHtml_component; }).then(m => m.EduHtmlComponent)], () => [import('./ngx-rendering-service-lib-audio.component-DxEyP5V_.mjs').then(m => m.AudioComponent)], () => [import('./ngx-rendering-service-lib-moodle.component-o5gEOK8x.mjs').then(m => m.MoodleComponent)], () => [import('./ngx-rendering-service-lib-binder.component-CvS0Y6AN.mjs').then(m => m.BinderComponent)], () => [import('./ngx-rendering-service-lib-ddb.component-BYkkda5U.mjs').then(m => m.DdbComponent)], () => [import('./ngx-rendering-service-lib-default.component-BRgBBmNB.mjs').then(m => m.DefaultComponent)], () => [Promise.resolve().then(function () { return url_component; }).then(m => m.UrlComponent)], () => [import('./ngx-rendering-service-lib-error.component-CQPy_Eto.mjs').then(m => m.ErrorComponent)]] }); }
|
|
1129
1154
|
}
|
|
1130
|
-
i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.14", ngImport: i0, type: RenderComponent, resolveDeferredDeps: () => [Promise.resolve().then(function () { return image_component; }).then(m => m.ImageComponent), Promise.resolve().then(function () { return video_component; }).then(m => m.VideoComponent), Promise.resolve().then(function () { return pdfIframe_component; }).then(m => m.PdfIframeComponent), Promise.resolve().then(function () { return pdf_component; }).then(m => m.PdfComponent), Promise.resolve().then(function () { return eduHtml_component; }).then(m => m.EduHtmlComponent), import('./ngx-rendering-service-lib-audio.component-
|
|
1155
|
+
i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.14", ngImport: i0, type: RenderComponent, resolveDeferredDeps: () => [Promise.resolve().then(function () { return image_component; }).then(m => m.ImageComponent), Promise.resolve().then(function () { return video_component; }).then(m => m.VideoComponent), Promise.resolve().then(function () { return pdfIframe_component; }).then(m => m.PdfIframeComponent), Promise.resolve().then(function () { return pdf_component; }).then(m => m.PdfComponent), Promise.resolve().then(function () { return eduHtml_component; }).then(m => m.EduHtmlComponent), import('./ngx-rendering-service-lib-audio.component-DxEyP5V_.mjs').then(m => m.AudioComponent), import('./ngx-rendering-service-lib-moodle.component-o5gEOK8x.mjs').then(m => m.MoodleComponent), import('./ngx-rendering-service-lib-binder.component-CvS0Y6AN.mjs').then(m => m.BinderComponent), import('./ngx-rendering-service-lib-ddb.component-BYkkda5U.mjs').then(m => m.DdbComponent), import('./ngx-rendering-service-lib-default.component-BRgBBmNB.mjs').then(m => m.DefaultComponent), Promise.resolve().then(function () { return url_component; }).then(m => m.UrlComponent), import('./ngx-rendering-service-lib-error.component-CQPy_Eto.mjs').then(m => m.ErrorComponent)], resolveMetadata: (ImageComponent, VideoComponent, PdfIframeComponent, PdfComponent, EduHtmlComponent, AudioComponent, MoodleComponent, BinderComponent, DdbComponent, DefaultComponent, UrlComponent, ErrorComponent) => ({ decorators: [{
|
|
1131
1156
|
type: Component,
|
|
1132
1157
|
args: [{ selector: 'rs-root', imports: [
|
|
1133
1158
|
RenderingApiModule,
|
|
@@ -1152,7 +1177,7 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.14", n
|
|
|
1152
1177
|
MoodleComponent,
|
|
1153
1178
|
], providers: [
|
|
1154
1179
|
TranslateService
|
|
1155
|
-
], 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') && isWebComponent) {\n <rs-module-pdf-iframe [data]=\"data\" [node]=\"node\"></rs-module-pdf-iframe>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n @defer (when (data?.module === 'PDF' || data?.module === 'DOCUMENT') && !isWebComponent) {\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' || data.module === 'SPREADSHEET') {\n <rs-module-edu-html [data]=\"data\" [node]=\"node\"></rs-module-edu-html>\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 === 'MOODLE') {\n <rs-module-moodle [data]=\"data\" [node]=\"node\" [isWebComponent]=\"isWebComponent\"></rs-module-moodle>\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 @defer (when data?.module === 'DDB'){\n <rs-module-ddb [data]=\"data\" [node]=\"node\"></rs-module-ddb>\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 *ngIf=\"data.module === 'ERROR'\">\n @defer (when data.module === 'ERROR') {\n <rs-module-error [node]=\"node\" [data]=\"data\"></rs-module-error>\n }\n </ng-container>\n </ng-container>\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\">{{ 'RENDERING.QUEUE_POSITION' | translate }}: {{-(progress.progress ?? 0)}}</div>\n <div *ngIf=\"(progress.progress ?? 0) >= 0\">{{ 'RENDERING.CONVERTING' | translate }}</div>\n <div *ngIf=\"(progress.progress ?? 0) >= 0\">\n <mat-progress-bar [value]=\"(progress.progress ?? 0)\"></mat-progress-bar>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spinner'\">\n <div *ngIf=\"(progress.progress ?? 0) < 0\">{{ 'RENDERING.QUEUE_POSITION' | translate }}: {{-(progress.progress ?? 0)}}</div>\n <div *ngIf=\"(progress.progress ?? 0) >= 0\">{{ 'RENDERING.CONVERTING' | translate }}</div>\n <div *ngIf=\"(progress.progress ?? 0) >= 0\">\n <mat-spinner [diameter]=\"50\"></mat-spinner>\n </div>\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}.module{display:flex;flex-direction:column;gap:5px;height:auto}.module.module-PDF{height:100%}.module.module-{align-items:center}.module .progress{width:80%;min-height:80px;display:flex;justify-content:center;flex-grow:1;align-items:center;flex-direction:column;gap:10px}.module .progress>div{width:100%;display:flex;justify-content:center}.module .progress mat-progress-bar{width:100%;height:4px}\n"] }]
|
|
1180
|
+
], 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') && isWebComponent) {\n <rs-module-pdf-iframe [data]=\"data\" [node]=\"node\"></rs-module-pdf-iframe>\n } @loading {\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n }\n @defer (when (data?.module === 'PDF' || data?.module === 'DOCUMENT') && !isWebComponent) {\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' || data.module === 'SPREADSHEET') {\n <rs-module-edu-html [data]=\"data\" [node]=\"node\"></rs-module-edu-html>\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 === 'MOODLE') {\n <rs-module-moodle [data]=\"data\" [node]=\"node\" [isWebComponent]=\"isWebComponent\"></rs-module-moodle>\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 @defer (when data?.module === 'DDB'){\n <rs-module-ddb [data]=\"data\" [node]=\"node\"></rs-module-ddb>\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\" [isWebComponent]=\"isWebComponent\"></rs-module-url>\n }\n </ng-container>\n <ng-container *ngIf=\"data.module === 'ERROR'\">\n @defer (when data.module === 'ERROR') {\n <rs-module-error [node]=\"node\" [data]=\"data\"></rs-module-error>\n }\n </ng-container>\n </ng-container>\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\">{{ 'RENDERING.QUEUE_POSITION' | translate }}: {{-(progress.progress ?? 0)}}</div>\n <div *ngIf=\"(progress.progress ?? 0) >= 0\">{{ 'RENDERING.CONVERTING' | translate }}</div>\n <div *ngIf=\"(progress.progress ?? 0) >= 0\">\n <mat-progress-bar [value]=\"(progress.progress ?? 0)\"></mat-progress-bar>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spinner'\">\n <div *ngIf=\"(progress.progress ?? 0) < 0\">{{ 'RENDERING.QUEUE_POSITION' | translate }}: {{-(progress.progress ?? 0)}}</div>\n <div *ngIf=\"(progress.progress ?? 0) >= 0\">{{ 'RENDERING.CONVERTING' | translate }}</div>\n <div *ngIf=\"(progress.progress ?? 0) >= 0\">\n <mat-spinner [diameter]=\"50\"></mat-spinner>\n </div>\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}.module{display:flex;flex-direction:column;gap:5px;height:auto}.module.module-PDF{height:100%}.module.module-{align-items:center}.module .progress{width:80%;min-height:80px;display:flex;justify-content:center;flex-grow:1;align-items:center;flex-direction:column;gap:10px}.module .progress>div{width:100%;display:flex;justify-content:center}.module .progress mat-progress-bar{width:100%;height:4px}\n"] }]
|
|
1156
1181
|
}], ctorParameters: () => [{ type: i1$1.RenderControllerWrapperService }, { type: i1$1.JobInfoControllerService }, { type: ModuleInfoService }, { type: i3.PlatformLocation }, { type: TrackingService }, { type: RenderingServiceLibConfiguration, decorators: [{
|
|
1157
1182
|
type: Optional
|
|
1158
1183
|
}, {
|
|
@@ -1212,4 +1237,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
1212
1237
|
*/
|
|
1213
1238
|
|
|
1214
1239
|
export { AssetLinkPipe as A, EduHtmlComponent as E, GdprService as G, ImageComponent as I, ModuleInfoService as M, PdfComponent as P, RenderingModule as R, TrackingService as T, UrlComponent as U, VideoComponent as V, PdfIframeComponent as a, RenderComponent as b, RenderingServiceLibModule as c };
|
|
1215
|
-
//# sourceMappingURL=ngx-rendering-service-lib-ngx-rendering-service-lib-
|
|
1240
|
+
//# sourceMappingURL=ngx-rendering-service-lib-ngx-rendering-service-lib-C28wFUyA.mjs.map
|