ngx-rendering-service-lib 0.1.6 → 0.1.8
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-BMryQbt4.mjs → ngx-rendering-service-lib-audio.component-C6xB3sSv.mjs} +2 -2
- package/fesm2022/{ngx-rendering-service-lib-audio.component-BMryQbt4.mjs.map → ngx-rendering-service-lib-audio.component-C6xB3sSv.mjs.map} +1 -1
- package/fesm2022/{ngx-rendering-service-lib-binder.component-CToLjTo1.mjs → ngx-rendering-service-lib-binder.component-D9LXNylY.mjs} +2 -2
- package/fesm2022/{ngx-rendering-service-lib-binder.component-CToLjTo1.mjs.map → ngx-rendering-service-lib-binder.component-D9LXNylY.mjs.map} +1 -1
- package/fesm2022/{ngx-rendering-service-lib-ddb.component-DcC_1-cN.mjs → ngx-rendering-service-lib-ddb.component-B4D3vyAw.mjs} +2 -2
- package/fesm2022/{ngx-rendering-service-lib-ddb.component-DcC_1-cN.mjs.map → ngx-rendering-service-lib-ddb.component-B4D3vyAw.mjs.map} +1 -1
- package/fesm2022/{ngx-rendering-service-lib-default.component-CcoF3xIt.mjs → ngx-rendering-service-lib-default.component-C6aCLEvg.mjs} +2 -2
- package/fesm2022/{ngx-rendering-service-lib-default.component-CcoF3xIt.mjs.map → ngx-rendering-service-lib-default.component-C6aCLEvg.mjs.map} +1 -1
- package/fesm2022/{ngx-rendering-service-lib-error.component-C5ElpxNO.mjs → ngx-rendering-service-lib-error.component-BOomz7QZ.mjs} +4 -4
- package/fesm2022/{ngx-rendering-service-lib-error.component-C5ElpxNO.mjs.map → ngx-rendering-service-lib-error.component-BOomz7QZ.mjs.map} +1 -1
- package/fesm2022/{ngx-rendering-service-lib-h5p.component-D4Xiue_W.mjs → ngx-rendering-service-lib-h5p.component-DlFVy4uD.mjs} +2 -2
- package/fesm2022/{ngx-rendering-service-lib-h5p.component-D4Xiue_W.mjs.map → ngx-rendering-service-lib-h5p.component-DlFVy4uD.mjs.map} +1 -1
- package/fesm2022/{ngx-rendering-service-lib-moodle.component-BWAGEimd.mjs → ngx-rendering-service-lib-moodle.component-JBzb9loF.mjs} +2 -2
- package/fesm2022/{ngx-rendering-service-lib-moodle.component-BWAGEimd.mjs.map → ngx-rendering-service-lib-moodle.component-JBzb9loF.mjs.map} +1 -1
- package/fesm2022/{ngx-rendering-service-lib-ngx-rendering-service-lib-CiwU3Ue9.mjs → ngx-rendering-service-lib-ngx-rendering-service-lib-43EhWUx7.mjs} +23 -85
- package/fesm2022/ngx-rendering-service-lib-ngx-rendering-service-lib-43EhWUx7.mjs.map +1 -0
- package/fesm2022/ngx-rendering-service-lib.mjs +1 -1
- package/lib/render.component.d.ts +4 -9
- package/package.json +1 -1
- package/fesm2022/ngx-rendering-service-lib-ngx-rendering-service-lib-CiwU3Ue9.mjs.map +0 -1
|
@@ -12,18 +12,18 @@ import * as i4 from '@angular/material/icon';
|
|
|
12
12
|
import { MatIconModule, MatIcon } from '@angular/material/icon';
|
|
13
13
|
import { FormsModule } from '@angular/forms';
|
|
14
14
|
import { MatMenu, MatMenuTrigger, MatMenuItem } from '@angular/material/menu';
|
|
15
|
-
import * as
|
|
15
|
+
import * as i6 from 'ngx-edu-sharing-ui';
|
|
16
16
|
import { EduSharingUiModule, NodesRightMode, EduSharingUiCommonModule, InfoMessageComponent } from 'ngx-edu-sharing-ui';
|
|
17
17
|
import * as i4$1 from '@ngx-translate/core';
|
|
18
18
|
import { TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
19
|
-
import * as i4$
|
|
19
|
+
import * as i4$2 from 'ngx-extended-pdf-viewer';
|
|
20
20
|
import { AnnotationEditorType, pdfDefaultOptions, NgxExtendedPdfViewerModule, NgxExtendedPdfViewerComponent } from 'ngx-extended-pdf-viewer';
|
|
21
21
|
import { firstValueFrom, Subject, BehaviorSubject, debounceTime, switchMap, interval, takeUntil, exhaustMap } from 'rxjs';
|
|
22
22
|
import * as i1$2 from '@angular/platform-browser';
|
|
23
23
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
24
|
-
import * as
|
|
24
|
+
import * as i4$3 from '@angular/material/progress-spinner';
|
|
25
25
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
26
|
-
import * as i6 from '@angular/material/progress-bar';
|
|
26
|
+
import * as i6$1 from '@angular/material/progress-bar';
|
|
27
27
|
import { MatProgressBarModule } from '@angular/material/progress-bar';
|
|
28
28
|
import { filter } from 'rxjs/operators';
|
|
29
29
|
|
|
@@ -354,8 +354,8 @@ class PdfComponent {
|
|
|
354
354
|
}
|
|
355
355
|
}
|
|
356
356
|
}
|
|
357
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PdfComponent, deps: [{ token: i1$1.AssetControllerService }, { token:
|
|
358
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: PdfComponent, isStandalone: true, selector: "rs-module-pdf", inputs: { data: "data", node: "node", assetUrl: "assetUrl" }, host: { listeners: { "window:keydown.control.s": "handleShortCutEvents($event)", "window:keydown.F12": "handleShortCutEvents($event)", "window:contextmenu": "handleContextMenu($event)" } }, viewQueries: [{ propertyName: "pdfViewer", first: true, predicate: NgxExtendedPdfViewerComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"pdf-wrapper\"\n [class.hide-all]=\"restrictedView\"\n *ngIf=\"fileData !== undefined\"\n>\n <ngx-extended-pdf-viewer\n [src]=\"fileData\"\n [enableDragAndDrop]=\"false\"\n [showPrintButton]=\"!restrictedView\"\n [showDownloadButton]=\"false\"\n [showOpenFileButton]=\"false\"\n [textLayer]=\"!restrictedView\"\n [enablePrint]=\"!restrictedView\"\n [showBookModeButton]=\"false\"\n [showFindHighlightAll]=\"false\"\n [showDrawEditor]=\"false\"\n [sidebarVisible]=\"false\"\n [showHighlightEditor]=\"false\"\n [showTextEditor]=\"false\"\n [height]=\"'var(--containerHeight, 100vh)'\"\n [showSecondaryToolbarButton]=\"false\"\n [showStampEditor]=\"false\"\n [authorization]=\"true\"\n [useInlineScripts]=\"false\"\n >\n </ngx-extended-pdf-viewer>\n</div>\n", styles: [":host{position:relative;display:flex;align-items:center;width:100%;max-height:var(--containerHeight, none);overflow:hidden}:host ::ng-deep ngx-extended-pdf-viewer,:host ::ng-deep ngx-extended-pdf-viewer .zoom{max-height:var(--containerHeight, none)}.pdf-wrapper{width:100%;height:100%;max-height:var(--containerHeight, none)}@media print{.hide-all *{display:none!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: RenderingModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: NgxExtendedPdfViewerModule }, { kind: "component", type: i4$
|
|
357
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PdfComponent, deps: [{ token: i1$1.AssetControllerService }, { token: i6.NodeHelperService }, { token: RENDERING_SERVICE_LIB_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
358
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: PdfComponent, isStandalone: true, selector: "rs-module-pdf", inputs: { data: "data", node: "node", assetUrl: "assetUrl" }, host: { listeners: { "window:keydown.control.s": "handleShortCutEvents($event)", "window:keydown.F12": "handleShortCutEvents($event)", "window:contextmenu": "handleContextMenu($event)" } }, viewQueries: [{ propertyName: "pdfViewer", first: true, predicate: NgxExtendedPdfViewerComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"pdf-wrapper\"\n [class.hide-all]=\"restrictedView\"\n *ngIf=\"fileData !== undefined\"\n>\n <ngx-extended-pdf-viewer\n [src]=\"fileData\"\n [enableDragAndDrop]=\"false\"\n [showPrintButton]=\"!restrictedView\"\n [showDownloadButton]=\"false\"\n [showOpenFileButton]=\"false\"\n [textLayer]=\"!restrictedView\"\n [enablePrint]=\"!restrictedView\"\n [showBookModeButton]=\"false\"\n [showFindHighlightAll]=\"false\"\n [showDrawEditor]=\"false\"\n [sidebarVisible]=\"false\"\n [showHighlightEditor]=\"false\"\n [showTextEditor]=\"false\"\n [height]=\"'var(--containerHeight, 100vh)'\"\n [showSecondaryToolbarButton]=\"false\"\n [showStampEditor]=\"false\"\n [authorization]=\"true\"\n [useInlineScripts]=\"false\"\n >\n </ngx-extended-pdf-viewer>\n</div>\n", styles: [":host{position:relative;display:flex;align-items:center;width:100%;max-height:var(--containerHeight, none);overflow:hidden}:host ::ng-deep ngx-extended-pdf-viewer,:host ::ng-deep ngx-extended-pdf-viewer .zoom{max-height:var(--containerHeight, none)}.pdf-wrapper{width:100%;height:100%;max-height:var(--containerHeight, none)}@media print{.hide-all *{display:none!important}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: RenderingModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: NgxExtendedPdfViewerModule }, { kind: "component", type: i4$2.NgxExtendedPdfViewerComponent, selector: "ngx-extended-pdf-viewer", inputs: ["customFindbarInputArea", "customToolbar", "customFindbar", "customFindbarButtons", "customPdfViewer", "customSecondaryToolbar", "customSidebar", "customThumbnail", "customFreeFloatingBar", "showFreeFloatingBar", "enableDragAndDrop", "forceUsingLegacyES5", "formData", "disableForms", "pageViewMode", "scrollMode", "authorization", "httpHeaders", "contextMenuAllowed", "enablePrint", "enablePrintAutoRotate", "forceFullReloadOfJavaScriptCode", "showTextEditor", "showStampEditor", "showDrawEditor", "showHighlightEditor", "logLevel", "relativeCoordsOptions", "minifiedJSLibraries", "printResolution", "rotation", "src", "base64Src", "minHeight", "height", "backgroundColor", "filenameForDownload", "ignoreKeyboard", "ignoreKeys", "acceptKeys", "imageResourcesPath", "localeFolderPath", "language", "listenToURL", "nameddest", "password", "replaceBrowserPrint", "useInlineScripts", "showUnverifiedSignatures", "startTabindex", "showSidebarButton", "sidebarVisible", "activeSidebarView", "findbarVisible", "propertiesDialogVisible", "showFindButton", "showFindHighlightAll", "showFindMatchCase", "showFindMultiple", "showFindRegexp", "showFindEntireWord", "showFindMatchDiacritics", "showFindResultsCount", "showFindMessages", "showPagingButtons", "showFirstAndLastPageButtons", "showPreviousAndNextPageButtons", "showPageNumber", "showPageLabel", "showZoomButtons", "showZoomDropdown", "showPresentationModeButton", "showOpenFileButton", "showPrintButton", "showDownloadButton", "theme", "showToolbar", "showSecondaryToolbarButton", "showSinglePageModeButton", "showVerticalScrollButton", "showHorizontalScrollButton", "showWrappedScrollButton", "showInfiniteScrollButton", "showBookModeButton", "showRotateButton", "showRotateCwButton", "showRotateCcwButton", "handTool", "showHandToolButton", "showSpreadButton", "showPropertiesButton", "showBorders", "spread", "showScrollingButtons", "page", "pageLabel", "textLayer", "zoom", "zoomLevels", "maxZoom", "minZoom", "mobileFriendlyZoom"], outputs: ["annotationEditorEvent", "formDataChange", "pageViewModeChange", "progress", "srcChange", "scrollModeChange", "afterPrint", "beforePrint", "currentZoomFactor", "rotationChange", "annotationLayerRendered", "annotationEditorLayerRendered", "xfaLayerRendered", "outlineLoaded", "attachmentsloaded", "layersloaded", "sidebarVisibleChange", "activeSidebarViewChange", "findbarVisibleChange", "propertiesDialogVisibleChange", "handToolChange", "spreadChange", "thumbnailDrawn", "pageChange", "pageLabelChange", "pagesLoaded", "pageRender", "pageRendered", "pdfDownloaded", "pdfLoaded", "pdfLoadingStarts", "pdfLoadingFailed", "textLayerRendered", "annotationEditorModeChanged", "updateFindMatchesCount", "updateFindState", "zoomChange"] }] }); }
|
|
359
359
|
}
|
|
360
360
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PdfComponent, decorators: [{
|
|
361
361
|
type: Component,
|
|
@@ -366,7 +366,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
366
366
|
MatIconModule,
|
|
367
367
|
NgxExtendedPdfViewerModule
|
|
368
368
|
], template: "<div\n class=\"pdf-wrapper\"\n [class.hide-all]=\"restrictedView\"\n *ngIf=\"fileData !== undefined\"\n>\n <ngx-extended-pdf-viewer\n [src]=\"fileData\"\n [enableDragAndDrop]=\"false\"\n [showPrintButton]=\"!restrictedView\"\n [showDownloadButton]=\"false\"\n [showOpenFileButton]=\"false\"\n [textLayer]=\"!restrictedView\"\n [enablePrint]=\"!restrictedView\"\n [showBookModeButton]=\"false\"\n [showFindHighlightAll]=\"false\"\n [showDrawEditor]=\"false\"\n [sidebarVisible]=\"false\"\n [showHighlightEditor]=\"false\"\n [showTextEditor]=\"false\"\n [height]=\"'var(--containerHeight, 100vh)'\"\n [showSecondaryToolbarButton]=\"false\"\n [showStampEditor]=\"false\"\n [authorization]=\"true\"\n [useInlineScripts]=\"false\"\n >\n </ngx-extended-pdf-viewer>\n</div>\n", styles: [":host{position:relative;display:flex;align-items:center;width:100%;max-height:var(--containerHeight, none);overflow:hidden}:host ::ng-deep ngx-extended-pdf-viewer,:host ::ng-deep ngx-extended-pdf-viewer .zoom{max-height:var(--containerHeight, none)}.pdf-wrapper{width:100%;height:100%;max-height:var(--containerHeight, none)}@media print{.hide-all *{display:none!important}}\n"] }]
|
|
369
|
-
}], ctorParameters: () => [{ type: i1$1.AssetControllerService }, { type:
|
|
369
|
+
}], ctorParameters: () => [{ type: i1$1.AssetControllerService }, { type: i6.NodeHelperService }, { type: RenderingServiceLibConfiguration, decorators: [{
|
|
370
370
|
type: Optional
|
|
371
371
|
}, {
|
|
372
372
|
type: Inject,
|
|
@@ -448,7 +448,7 @@ class PdfIframeComponent {
|
|
|
448
448
|
iframeDoc.close();
|
|
449
449
|
}
|
|
450
450
|
}
|
|
451
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PdfIframeComponent, deps: [{ token:
|
|
451
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PdfIframeComponent, deps: [{ token: i6.NodeHelperService }, { token: i0.ElementRef }, { token: RENDERING_SERVICE_LIB_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
452
452
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: PdfIframeComponent, isStandalone: true, selector: "rs-module-pdf-iframe", inputs: { data: "data", node: "node" }, viewQueries: [{ propertyName: "iframe", first: true, predicate: ["iframe"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"pdf-wrapper\"\n>\n <iframe #iframe></iframe>\n</div>\n", styles: [":host{position:relative;display:flex;align-items:center;width:100%;height:100%}.pdf-wrapper{width:100%;height:100%}.pdf-wrapper iframe{width:100%;height:500px;border:0}@media print{.hide-all *{display:none!important}}\n"], dependencies: [{ kind: "ngmodule", type: RenderingModule }] }); }
|
|
453
453
|
}
|
|
454
454
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PdfIframeComponent, decorators: [{
|
|
@@ -456,7 +456,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
456
456
|
args: [{ selector: 'rs-module-pdf-iframe', imports: [
|
|
457
457
|
RenderingModule,
|
|
458
458
|
], template: "<div\n class=\"pdf-wrapper\"\n>\n <iframe #iframe></iframe>\n</div>\n", styles: [":host{position:relative;display:flex;align-items:center;width:100%;height:100%}.pdf-wrapper{width:100%;height:100%}.pdf-wrapper iframe{width:100%;height:500px;border:0}@media print{.hide-all *{display:none!important}}\n"] }]
|
|
459
|
-
}], ctorParameters: () => [{ type:
|
|
459
|
+
}], ctorParameters: () => [{ type: i6.NodeHelperService }, { type: i0.ElementRef }, { type: RenderingServiceLibConfiguration, decorators: [{
|
|
460
460
|
type: Optional
|
|
461
461
|
}, {
|
|
462
462
|
type: Inject,
|
|
@@ -701,8 +701,8 @@ class UrlComponent {
|
|
|
701
701
|
}
|
|
702
702
|
this.embedding = UrlEmbeddings.SODIX;
|
|
703
703
|
}
|
|
704
|
-
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: i1.EduSharingApiConfiguration }, { token:
|
|
705
|
-
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 <iframe class=\"youtubeFrame\" [src]=\"sanitizedUrl\" allowfullscreen allow=\"fullscreen\"></iframe>\n </div>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.VIMEO && externalId !== ''\">\n <iframe class=\"vimeoFrame\" [src]=\"sanitizedUrl\"></iframe>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.AUDIO && url !== ''\" >\n <div class=\"audio-wrapper\">\n <video\n controls\n style=\"max-width: 100%\"\n [src]=\"url\"\n poster=\"assets/img/audio.svg\"\n >\n </video>\n </div>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.IMAGE && url !== ''\">\n <div class=\"image-wrapper\">\n <img\n [ngSrc]=\"url\"\n [alt]=\"node?.title ?? 'Edu-Sharing image'\"\n [title]=\"node?.title ?? 'Edu-Sharing image'\"\n >\n </div>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.VIDEO && url !== ''\">\n <div class=\"video-wrapper\">\n <video\n controls\n [src]=\"url\"\n >\n </video>\n </div>\n </ng-container>\n <ng-container *ngIf=\"(embedding === UrlEmbeddings.PREZI || embedding === UrlEmbeddings.LEARNINGAPPS) && url !== ''\">\n <iframe class=\"eduUrlFrame\" [src]=sanitizedUrl allowfullscreen=\"\" allow=\"autoplay; fullscreen\" ></iframe>\n </ng-container>\n <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.SODIX\">\n <iframe\n class=\"sodixFrame\"\n [src]=sanitizedUrl>\n </iframe>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.LINK || embedding === UrlEmbeddings.PIXABAY || embedding === UrlEmbeddings.OERSI || embedding === UrlEmbeddings.BROCKHAUS\" >\n <div class=\"link-wrapper\">\n <img [src]=previewUrl alt=\"preview\">\n <a mat-flat-button color=\"primary\" [href]=\"url\" target=\"_blank\" (click)=\"onLinkClick()\">\n <div class=\"link-label\">\n {{ 'SHARING.LINK' | translate }}<i esIcon=\"open_in_new\"></i>\n </div>\n </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\" [class.contrast-mode]=\"isContrastMode\">\n <ng-container *ngIf=\"isGdprGeneric()\">\n <div class=\"gdpr-content\">\n <h3>{{ 'RENDERING.GDPR.EXTERNAL_SITE' | translate }}</h3>\n <span>{{gdprInfoText}}</span>\n <a mat-button=\"outlined\" [href]=\"gdpr.ref\" target=\"_blank\">{{ 'RENDERING.GDPR.GDPR_REGULATIONS' | translate }}</a>\n <button\n mat-button\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 mat-button=\"outlined\" [href]=\"gdpr.ref\" target=\"_blank\">{{ 'RENDERING.GDPR.GDPR_REGULATIONS' | translate }}</a>\n <button\n mat-button\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;max-height:var(--containerHeight)}.url-wrapper{width:100%;max-height:var(--containerHeight)}.url-wrapper .audio-wrapper video[poster]{object-fit:cover}.url-wrapper .vimeoFrame,.url-wrapper .preziFrame,.url-wrapper .eduUrlFrame,.url-wrapper .youtubeFrame{width:100%;aspect-ratio:16/9;border:none}.url-wrapper .image-wrapper>img{width:100%;height:auto}.url-wrapper .sodixFrame{border:none;width:100%;height:var(--containerHeight)}.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;max-height:var(--containerHeight);display:block}.url-wrapper .gdpr-wrapper .gdpr-image-container .gdpr-overlay{position:absolute;bottom:0;left:0;right:0;background-color:#0009;display:flex;align-items:center;justify-content:center}.url-wrapper .gdpr-wrapper .gdpr-image-container .gdpr-overlay.contrast-mode{background-color:#000}.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{color:#fff}.url-wrapper .gdpr-wrapper .gdpr-image-container .gdpr-overlay .gdpr-content a[mat-button=outlined]{border:1px solid white}.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 .gdpr-wrapper .gdpr-image-container .gdpr-overlay .gdpr-content button{background-color:green;color:#fff}.url-wrapper .link-wrapper{width:100%;display:flex;flex-direction:column;align-items:center;gap:1em}.url-wrapper .link-wrapper img{width:100%;height:auto;max-height:calc(var(--containerHeight) - 60px);object-fit:contain;display:block}.url-wrapper .link-wrapper .link-label{display:flex;align-items:center;justify-content:center;gap:10px}.url-wrapper .youtube-wrapper{width:100%;height:auto;display:flex;justify-content:center}.url-wrapper .video-wrapper video{width:100%;height:auto;max-height:calc(var(--containerHeight) - 60px);object-fit:contain}\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.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { 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: "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" }, { kind: "directive", type:
|
|
704
|
+
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: i1.EduSharingApiConfiguration }, { token: i6.AccessibilityService }, { token: i1$1.GlobalStateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
705
|
+
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 <iframe class=\"youtubeFrame\" [src]=\"sanitizedUrl\" allowfullscreen allow=\"fullscreen\"></iframe>\n </div>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.VIMEO && externalId !== ''\">\n <iframe class=\"vimeoFrame\" [src]=\"sanitizedUrl\"></iframe>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.AUDIO && url !== ''\" >\n <div class=\"audio-wrapper\">\n <video\n controls\n style=\"max-width: 100%\"\n [src]=\"url\"\n poster=\"assets/img/audio.svg\"\n >\n </video>\n </div>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.IMAGE && url !== ''\">\n <div class=\"image-wrapper\">\n <img\n [ngSrc]=\"url\"\n [alt]=\"node?.title ?? 'Edu-Sharing image'\"\n [title]=\"node?.title ?? 'Edu-Sharing image'\"\n >\n </div>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.VIDEO && url !== ''\">\n <div class=\"video-wrapper\">\n <video\n controls\n [src]=\"url\"\n >\n </video>\n </div>\n </ng-container>\n <ng-container *ngIf=\"(embedding === UrlEmbeddings.PREZI || embedding === UrlEmbeddings.LEARNINGAPPS) && url !== ''\">\n <iframe class=\"eduUrlFrame\" [src]=sanitizedUrl allowfullscreen=\"\" allow=\"autoplay; fullscreen\" ></iframe>\n </ng-container>\n <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.SODIX\">\n <iframe\n class=\"sodixFrame\"\n [src]=sanitizedUrl>\n </iframe>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.LINK || embedding === UrlEmbeddings.PIXABAY || embedding === UrlEmbeddings.OERSI || embedding === UrlEmbeddings.BROCKHAUS\" >\n <div class=\"link-wrapper\">\n <img [src]=previewUrl alt=\"preview\">\n <a mat-flat-button color=\"primary\" [href]=\"url\" target=\"_blank\" (click)=\"onLinkClick()\">\n <div class=\"link-label\">\n {{ 'SHARING.LINK' | translate }}<i esIcon=\"open_in_new\"></i>\n </div>\n </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\" [class.contrast-mode]=\"isContrastMode\">\n <ng-container *ngIf=\"isGdprGeneric()\">\n <div class=\"gdpr-content\">\n <h3>{{ 'RENDERING.GDPR.EXTERNAL_SITE' | translate }}</h3>\n <span>{{gdprInfoText}}</span>\n <a mat-button=\"outlined\" [href]=\"gdpr.ref\" target=\"_blank\">{{ 'RENDERING.GDPR.GDPR_REGULATIONS' | translate }}</a>\n <button\n mat-button\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 mat-button=\"outlined\" [href]=\"gdpr.ref\" target=\"_blank\">{{ 'RENDERING.GDPR.GDPR_REGULATIONS' | translate }}</a>\n <button\n mat-button\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;max-height:var(--containerHeight)}.url-wrapper{width:100%;max-height:var(--containerHeight)}.url-wrapper .audio-wrapper video[poster]{object-fit:cover}.url-wrapper .vimeoFrame,.url-wrapper .preziFrame,.url-wrapper .eduUrlFrame,.url-wrapper .youtubeFrame{width:100%;aspect-ratio:16/9;border:none}.url-wrapper .image-wrapper>img{width:100%;height:auto}.url-wrapper .sodixFrame{border:none;width:100%;height:var(--containerHeight)}.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;max-height:var(--containerHeight);display:block}.url-wrapper .gdpr-wrapper .gdpr-image-container .gdpr-overlay{position:absolute;bottom:0;left:0;right:0;background-color:#0009;display:flex;align-items:center;justify-content:center}.url-wrapper .gdpr-wrapper .gdpr-image-container .gdpr-overlay.contrast-mode{background-color:#000}.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{color:#fff}.url-wrapper .gdpr-wrapper .gdpr-image-container .gdpr-overlay .gdpr-content a[mat-button=outlined]{border:1px solid white}.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 .gdpr-wrapper .gdpr-image-container .gdpr-overlay .gdpr-content button{background-color:green;color:#fff}.url-wrapper .link-wrapper{width:100%;display:flex;flex-direction:column;align-items:center;gap:1em}.url-wrapper .link-wrapper img{width:100%;height:auto;max-height:calc(var(--containerHeight) - 60px);object-fit:contain;display:block}.url-wrapper .link-wrapper .link-label{display:flex;align-items:center;justify-content:center;gap:10px}.url-wrapper .youtube-wrapper{width:100%;height:auto;display:flex;justify-content:center}.url-wrapper .video-wrapper video{width:100%;height:auto;max-height:calc(var(--containerHeight) - 60px);object-fit:contain}\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.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { 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: "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" }, { kind: "directive", type: i6.IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon", "esIconContext", "path"] }] }); }
|
|
706
706
|
}
|
|
707
707
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: UrlComponent, decorators: [{
|
|
708
708
|
type: Component,
|
|
@@ -713,7 +713,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
713
713
|
NgOptimizedImage,
|
|
714
714
|
EduSharingUiModule,
|
|
715
715
|
], template: "<div class=\"url-wrapper\">\n <div *ngIf=\"gdpr === null\">\n <ng-container *ngIf=\"embedding === UrlEmbeddings.YOUTUBE && externalId !== ''\">\n <div class=\"youtube-wrapper\">\n <iframe class=\"youtubeFrame\" [src]=\"sanitizedUrl\" allowfullscreen allow=\"fullscreen\"></iframe>\n </div>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.VIMEO && externalId !== ''\">\n <iframe class=\"vimeoFrame\" [src]=\"sanitizedUrl\"></iframe>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.AUDIO && url !== ''\" >\n <div class=\"audio-wrapper\">\n <video\n controls\n style=\"max-width: 100%\"\n [src]=\"url\"\n poster=\"assets/img/audio.svg\"\n >\n </video>\n </div>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.IMAGE && url !== ''\">\n <div class=\"image-wrapper\">\n <img\n [ngSrc]=\"url\"\n [alt]=\"node?.title ?? 'Edu-Sharing image'\"\n [title]=\"node?.title ?? 'Edu-Sharing image'\"\n >\n </div>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.VIDEO && url !== ''\">\n <div class=\"video-wrapper\">\n <video\n controls\n [src]=\"url\"\n >\n </video>\n </div>\n </ng-container>\n <ng-container *ngIf=\"(embedding === UrlEmbeddings.PREZI || embedding === UrlEmbeddings.LEARNINGAPPS) && url !== ''\">\n <iframe class=\"eduUrlFrame\" [src]=sanitizedUrl allowfullscreen=\"\" allow=\"autoplay; fullscreen\" ></iframe>\n </ng-container>\n <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.SODIX\">\n <iframe\n class=\"sodixFrame\"\n [src]=sanitizedUrl>\n </iframe>\n </ng-container>\n <ng-container *ngIf=\"embedding === UrlEmbeddings.LINK || embedding === UrlEmbeddings.PIXABAY || embedding === UrlEmbeddings.OERSI || embedding === UrlEmbeddings.BROCKHAUS\" >\n <div class=\"link-wrapper\">\n <img [src]=previewUrl alt=\"preview\">\n <a mat-flat-button color=\"primary\" [href]=\"url\" target=\"_blank\" (click)=\"onLinkClick()\">\n <div class=\"link-label\">\n {{ 'SHARING.LINK' | translate }}<i esIcon=\"open_in_new\"></i>\n </div>\n </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\" [class.contrast-mode]=\"isContrastMode\">\n <ng-container *ngIf=\"isGdprGeneric()\">\n <div class=\"gdpr-content\">\n <h3>{{ 'RENDERING.GDPR.EXTERNAL_SITE' | translate }}</h3>\n <span>{{gdprInfoText}}</span>\n <a mat-button=\"outlined\" [href]=\"gdpr.ref\" target=\"_blank\">{{ 'RENDERING.GDPR.GDPR_REGULATIONS' | translate }}</a>\n <button\n mat-button\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 mat-button=\"outlined\" [href]=\"gdpr.ref\" target=\"_blank\">{{ 'RENDERING.GDPR.GDPR_REGULATIONS' | translate }}</a>\n <button\n mat-button\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;max-height:var(--containerHeight)}.url-wrapper{width:100%;max-height:var(--containerHeight)}.url-wrapper .audio-wrapper video[poster]{object-fit:cover}.url-wrapper .vimeoFrame,.url-wrapper .preziFrame,.url-wrapper .eduUrlFrame,.url-wrapper .youtubeFrame{width:100%;aspect-ratio:16/9;border:none}.url-wrapper .image-wrapper>img{width:100%;height:auto}.url-wrapper .sodixFrame{border:none;width:100%;height:var(--containerHeight)}.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;max-height:var(--containerHeight);display:block}.url-wrapper .gdpr-wrapper .gdpr-image-container .gdpr-overlay{position:absolute;bottom:0;left:0;right:0;background-color:#0009;display:flex;align-items:center;justify-content:center}.url-wrapper .gdpr-wrapper .gdpr-image-container .gdpr-overlay.contrast-mode{background-color:#000}.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{color:#fff}.url-wrapper .gdpr-wrapper .gdpr-image-container .gdpr-overlay .gdpr-content a[mat-button=outlined]{border:1px solid white}.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 .gdpr-wrapper .gdpr-image-container .gdpr-overlay .gdpr-content button{background-color:green;color:#fff}.url-wrapper .link-wrapper{width:100%;display:flex;flex-direction:column;align-items:center;gap:1em}.url-wrapper .link-wrapper img{width:100%;height:auto;max-height:calc(var(--containerHeight) - 60px);object-fit:contain;display:block}.url-wrapper .link-wrapper .link-label{display:flex;align-items:center;justify-content:center;gap:10px}.url-wrapper .youtube-wrapper{width:100%;height:auto;display:flex;justify-content:center}.url-wrapper .video-wrapper video{width:100%;height:auto;max-height:calc(var(--containerHeight) - 60px);object-fit:contain}\n"] }]
|
|
716
|
-
}], ctorParameters: () => [{ type: i1$2.DomSanitizer }, { type: TrackingService }, { type: GdprService }, { type: i4$1.TranslateService }, { type: i1.EduSharingApiConfiguration }, { type:
|
|
716
|
+
}], ctorParameters: () => [{ type: i1$2.DomSanitizer }, { type: TrackingService }, { type: GdprService }, { type: i4$1.TranslateService }, { type: i1.EduSharingApiConfiguration }, { type: i6.AccessibilityService }, { type: i1$1.GlobalStateService }], propDecorators: { data: [{
|
|
717
717
|
type: Input
|
|
718
718
|
}], node: [{
|
|
719
719
|
type: Input
|
|
@@ -1088,8 +1088,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
1088
1088
|
}], ctorParameters: () => [{ type: i1$1.ModuleInfoControllerService }] });
|
|
1089
1089
|
|
|
1090
1090
|
class RenderComponent {
|
|
1091
|
-
constructor(
|
|
1092
|
-
this.platformLocation = platformLocation;
|
|
1091
|
+
constructor(trackingService, injector, envInjector, destroyRef, currentRootUrl, nodeHelperService, configuration) {
|
|
1093
1092
|
this.trackingService = trackingService;
|
|
1094
1093
|
this.injector = injector;
|
|
1095
1094
|
this.envInjector = envInjector;
|
|
@@ -1097,17 +1096,15 @@ class RenderComponent {
|
|
|
1097
1096
|
this.currentRootUrl = currentRootUrl;
|
|
1098
1097
|
this.nodeHelperService = nodeHelperService;
|
|
1099
1098
|
this.configuration = configuration;
|
|
1100
|
-
this.activateServiceWorker = true;
|
|
1101
1099
|
this.assetUrl = '';
|
|
1102
1100
|
this.resourceUrl = '';
|
|
1103
1101
|
this.isWebComponent = false;
|
|
1104
|
-
this.serviceWorkerReady = false;
|
|
1105
1102
|
this.loadData = new Subject();
|
|
1106
1103
|
this.renderData$ = new BehaviorSubject(null);
|
|
1107
1104
|
this.finished = new Subject();
|
|
1108
1105
|
this.someButNotAllFinished = new Subject();
|
|
1109
1106
|
this.progress$ = new BehaviorSubject(null);
|
|
1110
|
-
this.loadData.pipe(filter(() => this.node !== undefined
|
|
1107
|
+
this.loadData.pipe(filter(() => this.node !== undefined), debounceTime(10), switchMap(async () => {
|
|
1111
1108
|
// load services including the scope so they fetch via a remote render url (if applicable for the current request input)
|
|
1112
1109
|
const services = this.resolveServices(this.request?.renderingBaseUrl);
|
|
1113
1110
|
const frontendModule = await this.checkModule(services.moduleInfo);
|
|
@@ -1206,66 +1203,11 @@ class RenderComponent {
|
|
|
1206
1203
|
this.renderData$.next(data);
|
|
1207
1204
|
this.finished.next();
|
|
1208
1205
|
}
|
|
1209
|
-
|
|
1206
|
+
ngOnInit() {
|
|
1210
1207
|
if (this.assetUrl !== '') {
|
|
1211
1208
|
this.configuration.assetsUrl = this.assetUrl;
|
|
1212
1209
|
}
|
|
1213
|
-
|
|
1214
|
-
// Set DISABLE_SERVICE_WORKER back to false (or remove it) to restore the
|
|
1215
|
-
// `activateServiceWorker` behaviour.
|
|
1216
|
-
const DISABLE_SERVICE_WORKER = true;
|
|
1217
|
-
if (DISABLE_SERVICE_WORKER) {
|
|
1218
|
-
console.warn('Service worker registration is temporarily disabled');
|
|
1219
|
-
this.serviceWorkerReady = true;
|
|
1220
|
-
this.loadData.next();
|
|
1221
|
-
return;
|
|
1222
|
-
}
|
|
1223
|
-
if (!this.activateServiceWorker) {
|
|
1224
|
-
this.serviceWorkerReady = true;
|
|
1225
|
-
this.loadData.next();
|
|
1226
|
-
return;
|
|
1227
|
-
}
|
|
1228
|
-
if (!('serviceWorker' in navigator)) {
|
|
1229
|
-
console.warn('Service worker API not available');
|
|
1230
|
-
this.serviceWorkerReady = true;
|
|
1231
|
-
this.loadData.next();
|
|
1232
|
-
return;
|
|
1233
|
-
}
|
|
1234
|
-
// await firstValueFrom(this.translationsService.initialize())
|
|
1235
|
-
try {
|
|
1236
|
-
const reg = await navigator.serviceWorker.getRegistrations();
|
|
1237
|
-
await Promise.all(reg?.map((r) => r.unregister()));
|
|
1238
|
-
const serviceWorkerUrl = this.serviceWorkerUrl ?? (this.platformLocation.getBaseHrefFromDOM() + 'edu-service-worker.js');
|
|
1239
|
-
const scope = this.serviceWorkerUrl ? '/' : this.platformLocation.getBaseHrefFromDOM();
|
|
1240
|
-
const registration = await navigator.serviceWorker.register(serviceWorkerUrl, {
|
|
1241
|
-
scope: scope
|
|
1242
|
-
});
|
|
1243
|
-
if (registration.waiting) {
|
|
1244
|
-
registration.waiting.postMessage({ type: 'SKIP_WAITING' });
|
|
1245
|
-
}
|
|
1246
|
-
this.serviceWorkerReady = true;
|
|
1247
|
-
this.loadData.next();
|
|
1248
|
-
registration.onupdatefound = () => {
|
|
1249
|
-
const newWorker = registration.installing;
|
|
1250
|
-
if (newWorker) {
|
|
1251
|
-
newWorker.onstatechange = () => {
|
|
1252
|
-
if (newWorker.state === 'installed') {
|
|
1253
|
-
if (navigator.serviceWorker.controller) {
|
|
1254
|
-
newWorker.postMessage({ type: 'SKIP_WAITING' });
|
|
1255
|
-
}
|
|
1256
|
-
}
|
|
1257
|
-
};
|
|
1258
|
-
}
|
|
1259
|
-
};
|
|
1260
|
-
navigator.serviceWorker.addEventListener('controllerchange', () => {
|
|
1261
|
-
console.info('Service Worker controlling this page.');
|
|
1262
|
-
});
|
|
1263
|
-
}
|
|
1264
|
-
catch (error) {
|
|
1265
|
-
console.warn('Error during service worker registration:', error);
|
|
1266
|
-
this.serviceWorkerReady = true;
|
|
1267
|
-
this.loadData.next();
|
|
1268
|
-
}
|
|
1210
|
+
this.loadData.next();
|
|
1269
1211
|
}
|
|
1270
1212
|
async ngOnChanges(_) {
|
|
1271
1213
|
this.loadData.next();
|
|
@@ -1368,13 +1310,13 @@ class RenderComponent {
|
|
|
1368
1310
|
progress: progress
|
|
1369
1311
|
});
|
|
1370
1312
|
}
|
|
1371
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: RenderComponent, deps: [{ token:
|
|
1372
|
-
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",
|
|
1313
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: RenderComponent, deps: [{ token: TrackingService }, { token: i0.Injector }, { token: i0.EnvironmentInjector }, { token: i0.DestroyRef }, { token: CurrentRenderRootUrlService }, { token: i6.NodeHelperService }, { token: RENDERING_SERVICE_LIB_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1314
|
+
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", assetUrl: "assetUrl", resourceUrl: "resourceUrl", isWebComponent: "isWebComponent" }, providers: [
|
|
1373
1315
|
TranslateService,
|
|
1374
1316
|
CurrentRenderRootUrlService,
|
|
1375
|
-
], usesOnChanges: true, ngImport: i0, template: "@defer (when node && this.nodeHelperService.isNodeRevoked(node)){\n <rs-revoked [node]=\"node\"></rs-revoked>\n}\n@defer (when node && !(this.nodeHelperService.isNodeRevoked(node) && node.size === '0')) {\n <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 === 'SODIX'){\n <rs-module-url [data]=\"data\" [node]=\"node\"></rs-module-url>\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 === 'JUPYTER' || data.module === 'SPREADSHEET' || data.module === 'HTML') {\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 === 'H5P'){\n <rs-module-h5p [data]=\"data\" [node]=\"node\"></rs-module-h5p>\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' || data?.module === 'SCORM') {\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: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type:
|
|
1317
|
+
], usesOnChanges: true, ngImport: i0, template: "@defer (when node && this.nodeHelperService.isNodeRevoked(node)){\n <rs-revoked [node]=\"node\"></rs-revoked>\n}\n@defer (when node && !(this.nodeHelperService.isNodeRevoked(node) && node.size === '0')) {\n <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 === 'SODIX'){\n <rs-module-url [data]=\"data\" [node]=\"node\"></rs-module-url>\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 === 'JUPYTER' || data.module === 'SPREADSHEET' || data.module === 'HTML') {\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 === 'H5P'){\n <rs-module-h5p [data]=\"data\" [node]=\"node\"></rs-module-h5p>\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' || data?.module === 'SCORM') {\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: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i4$3.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: EduSharingApiModule }, { kind: "ngmodule", type: EduSharingUiCommonModule }, { kind: "ngmodule", type: TranslateModule }], deferBlockDependencies: [() => [Promise.resolve().then(function () { return revoked_component; }).then(m => m.RevokedComponent)], () => [i2.NgIf, i2.NgTemplateOutlet, i2.NgSwitch, i2.NgSwitchCase, i2.AsyncPipe, i4$3.MatProgressSpinner, i6$1.MatProgressBar, i4$1.TranslatePipe], () => [Promise.resolve().then(function () { return image_component; }).then(m => m.ImageComponent)], () => [Promise.resolve().then(function () { return url_component; }).then(m => m.UrlComponent)], () => [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-h5p.component-DlFVy4uD.mjs').then(m => m.H5pComponent)], () => [import('./ngx-rendering-service-lib-audio.component-C6xB3sSv.mjs').then(m => m.AudioComponent)], () => [import('./ngx-rendering-service-lib-moodle.component-JBzb9loF.mjs').then(m => m.MoodleComponent)], () => [import('./ngx-rendering-service-lib-binder.component-D9LXNylY.mjs').then(m => m.BinderComponent)], () => [import('./ngx-rendering-service-lib-ddb.component-B4D3vyAw.mjs').then(m => m.DdbComponent)], () => [import('./ngx-rendering-service-lib-default.component-C6aCLEvg.mjs').then(m => m.DefaultComponent)], () => [Promise.resolve().then(function () { return url_component; }).then(m => m.UrlComponent)], () => [import('./ngx-rendering-service-lib-error.component-BOomz7QZ.mjs').then(m => m.ErrorComponent)]] }); }
|
|
1376
1318
|
}
|
|
1377
|
-
i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.14", ngImport: i0, type: RenderComponent, resolveDeferredDeps: () => [Promise.resolve().then(function () { return revoked_component; }).then(m => m.RevokedComponent), Promise.resolve().then(function () { return image_component; }).then(m => m.ImageComponent), Promise.resolve().then(function () { return url_component; }).then(m => m.UrlComponent), 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-h5p.component-
|
|
1319
|
+
i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.14", ngImport: i0, type: RenderComponent, resolveDeferredDeps: () => [Promise.resolve().then(function () { return revoked_component; }).then(m => m.RevokedComponent), Promise.resolve().then(function () { return image_component; }).then(m => m.ImageComponent), Promise.resolve().then(function () { return url_component; }).then(m => m.UrlComponent), 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-h5p.component-DlFVy4uD.mjs').then(m => m.H5pComponent), import('./ngx-rendering-service-lib-audio.component-C6xB3sSv.mjs').then(m => m.AudioComponent), import('./ngx-rendering-service-lib-moodle.component-JBzb9loF.mjs').then(m => m.MoodleComponent), import('./ngx-rendering-service-lib-binder.component-D9LXNylY.mjs').then(m => m.BinderComponent), import('./ngx-rendering-service-lib-ddb.component-B4D3vyAw.mjs').then(m => m.DdbComponent), import('./ngx-rendering-service-lib-default.component-C6aCLEvg.mjs').then(m => m.DefaultComponent), import('./ngx-rendering-service-lib-error.component-BOomz7QZ.mjs').then(m => m.ErrorComponent)], resolveMetadata: (RevokedComponent, ImageComponent, UrlComponent, VideoComponent, PdfIframeComponent, PdfComponent, EduHtmlComponent, H5pComponent, AudioComponent, MoodleComponent, BinderComponent, DdbComponent, DefaultComponent, ErrorComponent) => ({ decorators: [{
|
|
1378
1320
|
type: Component,
|
|
1379
1321
|
args: [{ selector: 'rs-root', imports: [
|
|
1380
1322
|
RenderingApiModule,
|
|
@@ -1403,7 +1345,7 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.14", n
|
|
|
1403
1345
|
TranslateService,
|
|
1404
1346
|
CurrentRenderRootUrlService,
|
|
1405
1347
|
], template: "@defer (when node && this.nodeHelperService.isNodeRevoked(node)){\n <rs-revoked [node]=\"node\"></rs-revoked>\n}\n@defer (when node && !(this.nodeHelperService.isNodeRevoked(node) && node.size === '0')) {\n <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 === 'SODIX'){\n <rs-module-url [data]=\"data\" [node]=\"node\"></rs-module-url>\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 === 'JUPYTER' || data.module === 'SPREADSHEET' || data.module === 'HTML') {\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 === 'H5P'){\n <rs-module-h5p [data]=\"data\" [node]=\"node\"></rs-module-h5p>\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' || data?.module === 'SCORM') {\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"] }]
|
|
1406
|
-
}], ctorParameters: () => [{ type:
|
|
1348
|
+
}], ctorParameters: () => [{ type: TrackingService }, { type: i0.Injector }, { type: i0.EnvironmentInjector }, { type: i0.DestroyRef }, { type: CurrentRenderRootUrlService }, { type: i6.NodeHelperService }, { type: RenderingServiceLibConfiguration, decorators: [{
|
|
1407
1349
|
type: Optional
|
|
1408
1350
|
}, {
|
|
1409
1351
|
type: Inject,
|
|
@@ -1412,10 +1354,6 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.14", n
|
|
|
1412
1354
|
type: Input
|
|
1413
1355
|
}], node: [{
|
|
1414
1356
|
type: Input
|
|
1415
|
-
}], serviceWorkerUrl: [{
|
|
1416
|
-
type: Input
|
|
1417
|
-
}], activateServiceWorker: [{
|
|
1418
|
-
type: Input
|
|
1419
1357
|
}], assetUrl: [{
|
|
1420
1358
|
type: Input
|
|
1421
1359
|
}], resourceUrl: [{
|
|
@@ -1441,7 +1379,7 @@ class RevokedComponent {
|
|
|
1441
1379
|
});
|
|
1442
1380
|
}
|
|
1443
1381
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: RevokedComponent, deps: [{ token: DialogsService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1444
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: RevokedComponent, isStandalone: true, selector: "rs-revoked", inputs: { node: "node" }, ngImport: i0, template: "<div class=\"revoked\">\n <!--<h1 class=\"mat-heading-1\">{{ node!! | nodeTitle }}</h1>-->\n <es-info-message mode=\"warning\" class=\"details-message\">{{\n 'RENDERING.REVOKED.DETAILS' + (node?.size === '0' ? '_EMPTY' : '') | translate\n }}</es-info-message>\n <div class=\"details\">\n <div class=\"date\">\n <label for=\"revoked-date\">{{ 'RENDERING.REVOKED.DATE' | translate }}:</label\n ><span\n id=\"revoked-date\"\n >{{ node?.properties?.['ccm:revoked_date_LONG']?.[0]!! | formatDate:{relative: false, time: false} }}</span\n >\n </div>\n <div class=\"reason\">\n <label for=\"revoked-reason\">{{ 'RENDERING.REVOKED.REASON' | translate }}:</label\n ><span id=\"revoked-reason\">{{ node?.properties?.['ccm:revoked_reason']?.join('') }}</span>\n </div>\n </div>\n <div class=\"actions\">\n <button mat-button color=\"primary\" (click)=\"reportRevokeFeedback()\" *ngIf=\"dialogsService\">\n <i esIcon=\"arrow_forward\"></i>{{ 'RENDERING.REVOKED.FEEDBACK' | translate }}\n </button>\n </div>\n</div>\n", styles: [":root{--primary: var(--palette-primary-500);--warning: #cd2457;--aiColor: #2c0799;--aiColorChipBg: color-mix(in srgb, var(--aiColor), #fff 75%);--aiColorText: #fff;--aiColorChip: #fff;--aiColorChipRemove: #555;--aiColorChipBorder: #ddd;--aiColorChipText: var(--aiColor);--tableIconSize: 38px;--textLight: #585858;--textMediumLight: #888;--textMain: #383838;--cardWidth: 240px;--chipsSeperatorLineColor: #e2e2e2;--colorStatusPositive: #40bf8e;--colorStatusNegative: var(--warning);--colorStarActive: #ba7c00;--nodeVirtualColor: #42ca8d;--nodeVirtualColorLight: #b8fcdd;--transitionNormal: .2s;--genericSeperatorLineColor: #ececec;--tableSeperatorLineColor: #d2d2d2;--focusColor: var(--palette-primary-300);--focusWidth: 2px;--fontSizeXSmall: 85%;--topBarSearchFocusColor: var(--palette-primary-300);--workspaceTopBarSafeBackground: #963a3a;--workspaceTopBarNewAlpha: .1;--itemSelectedTextColor: var(--palette-primary-700);--listItemSelectedBackground: var(--palette-primary-50);--listItemSelectedBackgroundEffect: linear-gradient( to right, var(--primary) 0, var(--primary) 5px, var(--palette-primary-50) 5px, var(--palette-primary-50) 5px ) no-repeat}:host ::ng-deep .revoked es-info-message .message-container{white-space:pre-line}.revoked{max-width:700px;margin:auto;padding:30px 20px}.revoked>*{text-align:center;justify-content:center;color:#383838}.revoked .details-message{display:flex;margin-bottom:30px}.revoked .details{display:flex;flex-direction:column;gap:10px}.revoked .details label{font-size:90%;color:var(--textLight)}.revoked .details .reason>span{white-space:pre-line}.revoked .details>div{display:flex;flex-direction:column}.revoked .actions{padding-top:30px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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: "component", type: InfoMessageComponent, selector: "es-info-message", inputs: ["message", "mode"] }, { kind: "ngmodule", type: EduSharingUiCommonModule }, { kind: "pipe", type:
|
|
1382
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: RevokedComponent, isStandalone: true, selector: "rs-revoked", inputs: { node: "node" }, ngImport: i0, template: "<div class=\"revoked\">\n <!--<h1 class=\"mat-heading-1\">{{ node!! | nodeTitle }}</h1>-->\n <es-info-message mode=\"warning\" class=\"details-message\">{{\n 'RENDERING.REVOKED.DETAILS' + (node?.size === '0' ? '_EMPTY' : '') | translate\n }}</es-info-message>\n <div class=\"details\">\n <div class=\"date\">\n <label for=\"revoked-date\">{{ 'RENDERING.REVOKED.DATE' | translate }}:</label\n ><span\n id=\"revoked-date\"\n >{{ node?.properties?.['ccm:revoked_date_LONG']?.[0]!! | formatDate:{relative: false, time: false} }}</span\n >\n </div>\n <div class=\"reason\">\n <label for=\"revoked-reason\">{{ 'RENDERING.REVOKED.REASON' | translate }}:</label\n ><span id=\"revoked-reason\">{{ node?.properties?.['ccm:revoked_reason']?.join('') }}</span>\n </div>\n </div>\n <div class=\"actions\">\n <button mat-button color=\"primary\" (click)=\"reportRevokeFeedback()\" *ngIf=\"dialogsService\">\n <i esIcon=\"arrow_forward\"></i>{{ 'RENDERING.REVOKED.FEEDBACK' | translate }}\n </button>\n </div>\n</div>\n", styles: [":root{--primary: var(--palette-primary-500);--warning: #cd2457;--aiColor: #2c0799;--aiColorChipBg: color-mix(in srgb, var(--aiColor), #fff 75%);--aiColorText: #fff;--aiColorChip: #fff;--aiColorChipRemove: #555;--aiColorChipBorder: #ddd;--aiColorChipText: var(--aiColor);--tableIconSize: 38px;--textLight: #585858;--textMediumLight: #888;--textMain: #383838;--cardWidth: 240px;--chipsSeperatorLineColor: #e2e2e2;--colorStatusPositive: #40bf8e;--colorStatusNegative: var(--warning);--colorStarActive: #ba7c00;--nodeVirtualColor: #42ca8d;--nodeVirtualColorLight: #b8fcdd;--transitionNormal: .2s;--genericSeperatorLineColor: #ececec;--tableSeperatorLineColor: #d2d2d2;--focusColor: var(--palette-primary-300);--focusWidth: 2px;--fontSizeXSmall: 85%;--topBarSearchFocusColor: var(--palette-primary-300);--workspaceTopBarSafeBackground: #963a3a;--workspaceTopBarNewAlpha: .1;--itemSelectedTextColor: var(--palette-primary-700);--listItemSelectedBackground: var(--palette-primary-50);--listItemSelectedBackgroundEffect: linear-gradient( to right, var(--primary) 0, var(--primary) 5px, var(--palette-primary-50) 5px, var(--palette-primary-50) 5px ) no-repeat}:host ::ng-deep .revoked es-info-message .message-container{white-space:pre-line}.revoked{max-width:700px;margin:auto;padding:30px 20px}.revoked>*{text-align:center;justify-content:center;color:#383838}.revoked .details-message{display:flex;margin-bottom:30px}.revoked .details{display:flex;flex-direction:column;gap:10px}.revoked .details label{font-size:90%;color:var(--textLight)}.revoked .details .reason>span{white-space:pre-line}.revoked .details>div{display:flex;flex-direction:column}.revoked .actions{padding-top:30px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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: "component", type: InfoMessageComponent, selector: "es-info-message", inputs: ["message", "mode"] }, { kind: "ngmodule", type: EduSharingUiCommonModule }, { kind: "pipe", type: i6.FormatDatePipe, name: "formatDate" }, { kind: "directive", type: i6.IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon", "esIconContext", "path"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4$1.TranslatePipe, name: "translate" }] }); }
|
|
1445
1383
|
}
|
|
1446
1384
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: RevokedComponent, decorators: [{
|
|
1447
1385
|
type: Component,
|
|
@@ -1506,4 +1444,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
1506
1444
|
*/
|
|
1507
1445
|
|
|
1508
1446
|
export { AssetLinkPipe as A, DialogsService as D, EduHtmlComponent as E, GdprService as G, ImageComponent as I, ModuleInfoService as M, PdfComponent as P, RENDERING_SERVICE_LIB_CONFIG as R, TrackingService as T, UrlComponent as U, VideoComponent as V, RenderingModule as a, RenderingServiceLibConfiguration as b, PdfIframeComponent as c, RenderComponent as d, RevokedComponent as e, RenderingServiceLibModule as f };
|
|
1509
|
-
//# sourceMappingURL=ngx-rendering-service-lib-ngx-rendering-service-lib-
|
|
1447
|
+
//# sourceMappingURL=ngx-rendering-service-lib-ngx-rendering-service-lib-43EhWUx7.mjs.map
|