ngx-rendering-service-lib 0.0.66991 → 0.0.66992

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.
Files changed (21) hide show
  1. package/assets/h5p-resizer.js +131 -0
  2. package/fesm2022/{ngx-rendering-service-lib-audio.component-0DGNCq7W.mjs → ngx-rendering-service-lib-audio.component-ChyigJOW.mjs} +4 -4
  3. package/fesm2022/{ngx-rendering-service-lib-audio.component-0DGNCq7W.mjs.map → ngx-rendering-service-lib-audio.component-ChyigJOW.mjs.map} +1 -1
  4. package/fesm2022/{ngx-rendering-service-lib-binder.component-CcbIbOJF.mjs → ngx-rendering-service-lib-binder.component-BtwVaLD8.mjs} +4 -4
  5. package/fesm2022/{ngx-rendering-service-lib-binder.component-CcbIbOJF.mjs.map → ngx-rendering-service-lib-binder.component-BtwVaLD8.mjs.map} +1 -1
  6. package/fesm2022/{ngx-rendering-service-lib-ddb.component-CzpfQf2Y.mjs → ngx-rendering-service-lib-ddb.component-DNNdniqF.mjs} +5 -5
  7. package/fesm2022/{ngx-rendering-service-lib-ddb.component-CzpfQf2Y.mjs.map → ngx-rendering-service-lib-ddb.component-DNNdniqF.mjs.map} +1 -1
  8. package/fesm2022/{ngx-rendering-service-lib-default.component-BPxTImHn.mjs → ngx-rendering-service-lib-default.component-_SsoVge4.mjs} +2 -2
  9. package/fesm2022/{ngx-rendering-service-lib-default.component-BPxTImHn.mjs.map → ngx-rendering-service-lib-default.component-_SsoVge4.mjs.map} +1 -1
  10. package/fesm2022/{ngx-rendering-service-lib-error.component-BnFX_sXC.mjs → ngx-rendering-service-lib-error.component-_e77yVp_.mjs} +2 -2
  11. package/fesm2022/{ngx-rendering-service-lib-error.component-BnFX_sXC.mjs.map → ngx-rendering-service-lib-error.component-_e77yVp_.mjs.map} +1 -1
  12. package/fesm2022/ngx-rendering-service-lib-h5p.component-B-Jl983J.mjs +93 -0
  13. package/fesm2022/ngx-rendering-service-lib-h5p.component-B-Jl983J.mjs.map +1 -0
  14. package/fesm2022/{ngx-rendering-service-lib-moodle.component-ioYC-Ec4.mjs → ngx-rendering-service-lib-moodle.component-ConbyVbe.mjs} +5 -5
  15. package/fesm2022/{ngx-rendering-service-lib-moodle.component-ioYC-Ec4.mjs.map → ngx-rendering-service-lib-moodle.component-ConbyVbe.mjs.map} +1 -1
  16. package/fesm2022/{ngx-rendering-service-lib-ngx-rendering-service-lib-B5FX77CK.mjs → ngx-rendering-service-lib-ngx-rendering-service-lib-CGzn3e5c.mjs} +23 -22
  17. package/fesm2022/ngx-rendering-service-lib-ngx-rendering-service-lib-CGzn3e5c.mjs.map +1 -0
  18. package/fesm2022/ngx-rendering-service-lib.mjs +1 -1
  19. package/lib/module/h5p/h5p.component.d.ts +27 -0
  20. package/package.json +1 -1
  21. package/fesm2022/ngx-rendering-service-lib-ngx-rendering-service-lib-B5FX77CK.mjs.map +0 -1
@@ -0,0 +1,131 @@
1
+ // H5P iframe Resizer
2
+ (function () {
3
+ if (!window.postMessage || !window.addEventListener || window.h5pResizerInitialized) {
4
+ return; // Not supported
5
+ }
6
+ window.h5pResizerInitialized = true;
7
+
8
+ // Map actions to handlers
9
+ var actionHandlers = {};
10
+
11
+ /**
12
+ * Prepare iframe resize.
13
+ *a
14
+ * @private
15
+ * @param {Object} iframe Element
16
+ * @param {Object} data Payload
17
+ * @param {Function} respond Send a response to the iframe
18
+ */
19
+ actionHandlers.hello = function (iframe, data, respond) {
20
+ // Make iframe responsive
21
+ iframe.style.width = '100%';
22
+
23
+ // Bugfix for Chrome: Force update of iframe width. If this is not done the
24
+ // document size may not be updated before the content resizes.
25
+ iframe.getBoundingClientRect();
26
+
27
+ // Tell iframe that it needs to resize when our window resizes
28
+ var resize = function () {
29
+ if (iframe.contentWindow) {
30
+ // Limit resize calls to avoid flickering
31
+ respond('resize');
32
+ }
33
+ else {
34
+ // Frame is gone, unregister.
35
+ window.removeEventListener('resize', resize);
36
+ }
37
+ };
38
+ window.addEventListener('resize', resize, false);
39
+
40
+ // Respond to let the iframe know we can resize it
41
+ respond('hello');
42
+ };
43
+
44
+ /**
45
+ * Prepare iframe resize.
46
+ *
47
+ * @private
48
+ * @param {Object} iframe Element
49
+ * @param {Object} data Payload
50
+ * @param {Function} respond Send a response to the iframe
51
+ */
52
+ actionHandlers.prepareResize = function (iframe, data, respond) {
53
+ // Do not resize unless page and scrolling differs
54
+ if (iframe.clientHeight !== data.scrollHeight ||
55
+ data.scrollHeight !== data.clientHeight) {
56
+
57
+ // Reset iframe height, in case content has shrinked.
58
+ iframe.style.height = data.clientHeight + 'px';
59
+ respond('resizePrepared');
60
+ }
61
+ };
62
+
63
+ /**
64
+ * Resize parent and iframe to desired height.
65
+ *
66
+ * @private
67
+ * @param {Object} iframe Element
68
+ * @param {Object} data Payload
69
+ * @param {Function} respond Send a response to the iframe
70
+ */
71
+ actionHandlers.resize = function (iframe, data) {
72
+ // Resize iframe so all content is visible. Use scrollHeight to make sure we get everything
73
+ iframe.style.height = data.scrollHeight + 'px';
74
+ };
75
+
76
+ /**
77
+ * Keyup event handler. Exits full screen on escape.
78
+ *
79
+ * @param {Event} event
80
+ */
81
+ var escape = function (event) {
82
+ if (event.keyCode === 27) {
83
+ exitFullScreen();
84
+ }
85
+ };
86
+
87
+ // Listen for messages from iframes
88
+ window.addEventListener('message', function receiveMessage(event) {
89
+ if (event.data.context !== 'h5p') {
90
+ return; // Only handle h5p requests.
91
+ }
92
+
93
+ // Find out who sent the message
94
+ var iframe, iframes = document.getElementsByTagName('iframe');
95
+ for (var i = 0; i < iframes.length; i++) {
96
+ if (iframes[i].contentWindow === event.source) {
97
+ iframe = iframes[i];
98
+ break;
99
+ }
100
+ }
101
+
102
+ if (!iframe) {
103
+ return; // Cannot find sender
104
+ }
105
+
106
+ // Find action handler handler
107
+ if (actionHandlers[event.data.action]) {
108
+ actionHandlers[event.data.action](iframe, event.data, function respond(action, data) {
109
+ if (data === undefined) {
110
+ data = {};
111
+ }
112
+ data.action = action;
113
+ data.context = 'h5p';
114
+ event.source.postMessage(data, event.origin);
115
+ });
116
+ }
117
+ }, false);
118
+
119
+ // Let h5p iframes know we're ready!
120
+ var iframes = document.getElementsByTagName('iframe');
121
+ var ready = {
122
+ context: 'h5p',
123
+ action: 'ready'
124
+ };
125
+ for (var i = 0; i < iframes.length; i++) {
126
+ if (iframes[i].src.indexOf('h5p') !== -1) {
127
+ iframes[i].contentWindow.postMessage(ready, '*');
128
+ }
129
+ }
130
+
131
+ })();
@@ -1,8 +1,8 @@
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-B5FX77CK.mjs';
3
+ import { T as TrackingService, a as RenderingModule, A as AssetLinkPipe } from './ngx-rendering-service-lib-ngx-rendering-service-lib-CGzn3e5c.mjs';
4
4
  import { FormsModule } from '@angular/forms';
5
- import * as i3 from '@angular/common';
5
+ import * as i2 from '@angular/common';
6
6
 
7
7
  class AudioComponent {
8
8
  constructor(trackingService) {
@@ -23,7 +23,7 @@ class AudioComponent {
23
23
  this.hasBeenPlayed = true;
24
24
  }
25
25
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AudioComponent, deps: [{ token: TrackingService }], target: i0.ɵɵFactoryTarget.Component }); }
26
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: AudioComponent, isStandalone: true, selector: "rs-module-audio", inputs: { data: "data", node: "node" }, ngImport: i0, template: "<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", styles: [".audio-wrapper{width:100%;position:relative}.audio-wrapper video{width:100%;display:block;object-fit:cover;aspect-ratio:8/3}\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: FormsModule }] }); }
26
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: AudioComponent, isStandalone: true, selector: "rs-module-audio", inputs: { data: "data", node: "node" }, ngImport: i0, template: "<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", styles: [".audio-wrapper{width:100%;position:relative}.audio-wrapper video{width:100%;display:block;object-fit:cover;aspect-ratio:8/3}\n"], dependencies: [{ kind: "ngmodule", type: RenderingModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AssetLinkPipe, name: "rsAssetLink" }, { kind: "ngmodule", type: FormsModule }] }); }
27
27
  }
28
28
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AudioComponent, decorators: [{
29
29
  type: Component,
@@ -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-0DGNCq7W.mjs.map
41
+ //# sourceMappingURL=ngx-rendering-service-lib-audio.component-ChyigJOW.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-rendering-service-lib-audio.component-0DGNCq7W.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
+ {"version":3,"file":"ngx-rendering-service-lib-audio.component-ChyigJOW.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,11 +1,11 @@
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-B5FX77CK.mjs';
3
+ import { a as RenderingModule } from './ngx-rendering-service-lib-ngx-rendering-service-lib-CGzn3e5c.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';
7
7
  import * as i1 from '@angular/platform-browser';
8
- import * as i3 from '@angular/common';
8
+ import * as i2 from '@angular/common';
9
9
 
10
10
  class BinderComponent {
11
11
  constructor(sanitizer) {
@@ -37,7 +37,7 @@ class BinderComponent {
37
37
  return this.sanitizer.bypassSecurityTrustResourceUrl(uri.toString());
38
38
  }
39
39
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BinderComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
40
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: BinderComponent, isStandalone: true, selector: "rs-module-binder", inputs: { data: "data", node: "node" }, usesOnChanges: true, ngImport: i0, template: "<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", styles: [":host{position:relative;display:flex;align-items:center;width:100%}.binder-wrapper{width:100%;height:100%;position:relative;display:flex;flex-direction:column;justify-content:center}.binder-wrapper .preview-container{flex-grow:1}.binder-wrapper .preview-container>.frame{width:100%;height:100%}.binder-wrapper .binder-link-container{display:flex;justify-content:center;padding-top:1em}\n"], dependencies: [{ kind: "ngmodule", type: RenderingModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }] }); }
40
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: BinderComponent, isStandalone: true, selector: "rs-module-binder", inputs: { data: "data", node: "node" }, usesOnChanges: true, ngImport: i0, template: "<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", styles: [":host{position:relative;display:flex;align-items:center;width:100%}.binder-wrapper{width:100%;height:100%;position:relative;display:flex;flex-direction:column;justify-content:center}.binder-wrapper .preview-container{flex-grow:1}.binder-wrapper .preview-container>.frame{width:100%;height:100%}.binder-wrapper .binder-link-container{display:flex;justify-content:center;padding-top:1em}\n"], dependencies: [{ kind: "ngmodule", type: RenderingModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }] }); }
41
41
  }
42
42
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BinderComponent, decorators: [{
43
43
  type: Component,
@@ -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-CcbIbOJF.mjs.map
57
+ //# sourceMappingURL=ngx-rendering-service-lib-binder.component-BtwVaLD8.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-rendering-service-lib-binder.component-CcbIbOJF.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
+ {"version":3,"file":"ngx-rendering-service-lib-binder.component-BtwVaLD8.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,11 +1,11 @@
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-B5FX77CK.mjs';
3
+ import { a as RenderingModule } from './ngx-rendering-service-lib-ngx-rendering-service-lib-CGzn3e5c.mjs';
4
4
  import { MatIcon } from '@angular/material/icon';
5
- import * as i3$1 from '@angular/material/button';
5
+ import * as i3 from '@angular/material/button';
6
6
  import { MatButtonModule } from '@angular/material/button';
7
7
  import { FormsModule } from '@angular/forms';
8
- import * as i3 from '@angular/common';
8
+ import * as i2 from '@angular/common';
9
9
 
10
10
  class DdbComponent {
11
11
  constructor(element) {
@@ -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: i3$1.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"] }] }); }
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: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.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-CzpfQf2Y.mjs.map
66
+ //# sourceMappingURL=ngx-rendering-service-lib-ddb.component-DNNdniqF.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-rendering-service-lib-ddb.component-CzpfQf2Y.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":"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"}
1
+ {"version":3,"file":"ngx-rendering-service-lib-ddb.component-DNNdniqF.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":"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"}
@@ -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-B5FX77CK.mjs';
3
+ import { a as RenderingModule } from './ngx-rendering-service-lib-ngx-rendering-service-lib-CGzn3e5c.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-BPxTImHn.mjs.map
33
+ //# sourceMappingURL=ngx-rendering-service-lib-default.component-_SsoVge4.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-rendering-service-lib-default.component-BPxTImHn.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
+ {"version":3,"file":"ngx-rendering-service-lib-default.component-_SsoVge4.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-B5FX77CK.mjs';
3
+ import { a as RenderingModule } from './ngx-rendering-service-lib-ngx-rendering-service-lib-CGzn3e5c.mjs';
4
4
  import { MatIconModule } from '@angular/material/icon';
5
5
  import { MatButtonModule } from '@angular/material/button';
6
6
  import * as i2 from 'ngx-edu-sharing-ui';
@@ -38,4 +38,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
38
38
  }] } });
39
39
 
40
40
  export { ErrorComponent };
41
- //# sourceMappingURL=ngx-rendering-service-lib-error.component-BnFX_sXC.mjs.map
41
+ //# sourceMappingURL=ngx-rendering-service-lib-error.component-_e77yVp_.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-rendering-service-lib-error.component-BnFX_sXC.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 {EduSharingUiCommonModule, 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 EduSharingUiCommonModule,\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 <es-info-message mode=\"error\">\n <div class=\"rs-error-message\">\n <h3>{{ 'RENDERING.ERROR.GENERIC_ERROR_MESSAGE' | translate }}</h3>\n <div>{{errorMessage | translate}}</div>\n </div>\n </es-info-message>\n</div>\n"],"names":["i1"],"mappings":";;;;;;;;;;MA8Ba,cAAc,CAAA;AAhB3B,IAAA,WAAA,GAAA;QAmBE,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;mGAAd,cAAc,EAAA,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,EC9B3B,iRAQA,EAAA,MAAA,EAAA,CAAA,0QAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDSQ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAElB,wBAAwB,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAQnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAhB1B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAClB,OAAA,EAAA;wBACL,eAAe;wBACf,eAAe;wBACf,aAAa;wBACb,kBAAkB;wBAClB,OAAO;wBACP,wBAAwB;wBACxB,eAAe;wBACf,aAAa;wBACb;AACH,qBAAA,EAAA,QAAA,EAAA,iRAAA,EAAA,MAAA,EAAA,CAAA,0QAAA,CAAA,EAAA;8BAKM,IAAI,EAAA,CAAA;sBAAZ;gBACQ,IAAI,EAAA,CAAA;sBAAZ;;;;;"}
1
+ {"version":3,"file":"ngx-rendering-service-lib-error.component-_e77yVp_.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 {EduSharingUiCommonModule, 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 EduSharingUiCommonModule,\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 <es-info-message mode=\"error\">\n <div class=\"rs-error-message\">\n <h3>{{ 'RENDERING.ERROR.GENERIC_ERROR_MESSAGE' | translate }}</h3>\n <div>{{errorMessage | translate}}</div>\n </div>\n </es-info-message>\n</div>\n"],"names":["i1"],"mappings":";;;;;;;;;;MA8Ba,cAAc,CAAA;AAhB3B,IAAA,WAAA,GAAA;QAmBE,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;mGAAd,cAAc,EAAA,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,EC9B3B,iRAQA,EAAA,MAAA,EAAA,CAAA,0QAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDSQ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAElB,wBAAwB,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAQnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAhB1B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAClB,OAAA,EAAA;wBACL,eAAe;wBACf,eAAe;wBACf,aAAa;wBACb,kBAAkB;wBAClB,OAAO;wBACP,wBAAwB;wBACxB,eAAe;wBACf,aAAa;wBACb;AACH,qBAAA,EAAA,QAAA,EAAA,iRAAA,EAAA,MAAA,EAAA,CAAA,0QAAA,CAAA,EAAA;8BAKM,IAAI,EAAA,CAAA;sBAAZ;gBACQ,IAAI,EAAA,CAAA;sBAAZ;;;;;"}
@@ -0,0 +1,93 @@
1
+ import * as i0 from '@angular/core';
2
+ import { ViewChild, Input, Inject, Optional, Component } from '@angular/core';
3
+ import { R as RENDERING_SERVICE_LIB_CONFIG, a as RenderingModule, b as RenderingServiceLibConfiguration } from './ngx-rendering-service-lib-ngx-rendering-service-lib-CGzn3e5c.mjs';
4
+ import { MatIconModule } from '@angular/material/icon';
5
+ import { MatButtonModule } from '@angular/material/button';
6
+ import * as i2 from '@angular/common';
7
+ import { DOCUMENT } from '@angular/common';
8
+ import * as i1 from '@angular/platform-browser';
9
+
10
+ class H5pComponent {
11
+ constructor(renderer, sanitizer, document, platformLocation, configuration) {
12
+ this.renderer = renderer;
13
+ this.sanitizer = sanitizer;
14
+ this.document = document;
15
+ this.platformLocation = platformLocation;
16
+ this.configuration = configuration;
17
+ this.assetsUrl = '';
18
+ this.sanitizedUrl = new class {
19
+ };
20
+ if (configuration && configuration.assetsUrl) {
21
+ this.assetsUrl = configuration?.assetsUrl;
22
+ }
23
+ else {
24
+ this.assetsUrl = this.platformLocation.getBaseHrefFromDOM();
25
+ }
26
+ console.log("asseturl");
27
+ console.log(this.assetsUrl);
28
+ }
29
+ ngOnInit() {
30
+ if (this.data?.items !== undefined && this.data.items[0].link) {
31
+ this.sanitizedUrl = this.getSafeUri();
32
+ }
33
+ }
34
+ ngAfterViewInit() {
35
+ const h5pResizerUrl = this.assetsUrl + 'h5p-resizer.js';
36
+ this.addScriptAfterIframe(h5pResizerUrl);
37
+ }
38
+ getSafeUri() {
39
+ if (this.data?.items !== undefined && this.data.items[0].link) {
40
+ const uri = new URL(this.data.items[0].link);
41
+ /**
42
+ if (uri.hostname.includes('nip.io')) {
43
+ uri.hostname = 'localhost'
44
+ }
45
+ */
46
+ return this.sanitizer.bypassSecurityTrustResourceUrl(uri.toString());
47
+ }
48
+ return new class {
49
+ };
50
+ }
51
+ addScriptAfterIframe(src) {
52
+ if (!this.iframeEl?.nativeElement?.parentNode) {
53
+ return;
54
+ }
55
+ if (this.document.querySelector(`script[src="${src}"]`)) {
56
+ return;
57
+ }
58
+ const script = this.renderer.createElement('script');
59
+ script.type = 'text/javascript';
60
+ script.src = src;
61
+ script.async = true;
62
+ const parent = this.iframeEl.nativeElement.parentNode;
63
+ this.renderer.insertBefore(parent, script, this.iframeEl.nativeElement.nextSibling);
64
+ }
65
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: H5pComponent, deps: [{ token: i0.Renderer2 }, { token: i1.DomSanitizer }, { token: DOCUMENT }, { token: i2.PlatformLocation }, { token: RENDERING_SERVICE_LIB_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
66
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: H5pComponent, isStandalone: true, selector: "rs-module-h5p", inputs: { data: "data", node: "node" }, viewQueries: [{ propertyName: "iframeEl", first: true, predicate: ["iframeEl"], descendants: true }], ngImport: i0, template: "<div class=\"h5p-wrapper\" *ngIf=\"data?.items !== undefined\">\n <iframe #iframeEl [title]=\"node?.title ?? 'H5P'\" class=\"frame\" [src]=\"sanitizedUrl\"></iframe>\n</div>\n", styles: [":host{position:relative;display:flex;align-items:center;width:100%;height:100%}.h5p-wrapper{width:100%;height:100%}.h5p-wrapper .frame{border:none;width:100%}\n"], dependencies: [{ kind: "ngmodule", type: RenderingModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }] }); }
67
+ }
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: H5pComponent, decorators: [{
69
+ type: Component,
70
+ args: [{ selector: 'rs-module-h5p', imports: [
71
+ RenderingModule,
72
+ MatButtonModule,
73
+ MatIconModule,
74
+ ], template: "<div class=\"h5p-wrapper\" *ngIf=\"data?.items !== undefined\">\n <iframe #iframeEl [title]=\"node?.title ?? 'H5P'\" class=\"frame\" [src]=\"sanitizedUrl\"></iframe>\n</div>\n", styles: [":host{position:relative;display:flex;align-items:center;width:100%;height:100%}.h5p-wrapper{width:100%;height:100%}.h5p-wrapper .frame{border:none;width:100%}\n"] }]
75
+ }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i1.DomSanitizer }, { type: Document, decorators: [{
76
+ type: Inject,
77
+ args: [DOCUMENT]
78
+ }] }, { type: i2.PlatformLocation }, { type: RenderingServiceLibConfiguration, decorators: [{
79
+ type: Optional
80
+ }, {
81
+ type: Inject,
82
+ args: [RENDERING_SERVICE_LIB_CONFIG]
83
+ }] }], propDecorators: { data: [{
84
+ type: Input
85
+ }], node: [{
86
+ type: Input
87
+ }], iframeEl: [{
88
+ type: ViewChild,
89
+ args: ['iframeEl', { static: false }]
90
+ }] } });
91
+
92
+ export { H5pComponent };
93
+ //# sourceMappingURL=ngx-rendering-service-lib-h5p.component-B-Jl983J.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngx-rendering-service-lib-h5p.component-B-Jl983J.mjs","sources":["../../src/lib/module/h5p/h5p.component.ts","../../src/lib/module/h5p/h5p.component.html"],"sourcesContent":["import {\n AfterViewInit,\n Component,\n ElementRef,\n Inject,\n Input,\n OnInit,\n Optional,\n Renderer2,\n ViewChild\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 {DomSanitizer, SafeResourceUrl} from '@angular/platform-browser';\nimport {DOCUMENT, PlatformLocation} from \"@angular/common\";\nimport {\n RENDERING_SERVICE_LIB_CONFIG,\n RenderingServiceLibConfiguration\n} from \"../../../rendering-service-lib-configuration\";\n\n@Component({\n selector: 'rs-module-h5p',\n imports: [\n RenderingModule,\n MatButtonModule,\n MatIconModule,\n ],\n templateUrl: './h5p.component.html',\n styleUrl: './h5p.component.scss'\n})\nexport class H5pComponent implements RenderModule, OnInit, AfterViewInit {\n @Input() data: RenderData | undefined\n @Input() node: Node | undefined\n @ViewChild('iframeEl', { static: false }) iframeEl?: ElementRef<HTMLIFrameElement>;\n private assetsUrl: string = ''\n\n sanitizedUrl: SafeResourceUrl = new class implements SafeResourceUrl {\n }\n\n constructor(\n private renderer: Renderer2,\n private sanitizer: DomSanitizer,\n @Inject(DOCUMENT) private document: Document,\n private platformLocation: PlatformLocation,\n @Optional() @Inject(RENDERING_SERVICE_LIB_CONFIG) public configuration: RenderingServiceLibConfiguration\n ) {\n if (configuration && configuration.assetsUrl) {\n this.assetsUrl = configuration?.assetsUrl\n } else {\n this.assetsUrl = this.platformLocation.getBaseHrefFromDOM()\n }\n console.log(\"asseturl\");\n console.log(this.assetsUrl)\n }\n\n ngOnInit() {\n if (this.data?.items !== undefined && this.data.items[0].link) {\n this.sanitizedUrl = this.getSafeUri()\n }\n }\n\n ngAfterViewInit(): void {\n const h5pResizerUrl = this.assetsUrl + 'h5p-resizer.js';\n\n this.addScriptAfterIframe(h5pResizerUrl);\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 /**\n if (uri.hostname.includes('nip.io')) {\n uri.hostname = 'localhost'\n }\n */\n return this.sanitizer.bypassSecurityTrustResourceUrl(uri.toString())\n }\n return new class implements SafeResourceUrl {\n }\n }\n\n private addScriptAfterIframe(src: string): void {\n if (!this.iframeEl?.nativeElement?.parentNode) {\n return;\n }\n\n if (this.document.querySelector(`script[src=\"${src}\"]`)) {\n return;\n }\n\n const script = this.renderer.createElement('script');\n script.type = 'text/javascript';\n script.src = src;\n script.async = true;\n\n const parent = this.iframeEl.nativeElement.parentNode;\n this.renderer.insertBefore(parent, script, this.iframeEl.nativeElement.nextSibling);\n }\n}\n","<div class=\"h5p-wrapper\" *ngIf=\"data?.items !== undefined\">\n <iframe #iframeEl [title]=\"node?.title ?? 'H5P'\" class=\"frame\" [src]=\"sanitizedUrl\"></iframe>\n</div>\n"],"names":[],"mappings":"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"}
@@ -1,13 +1,13 @@
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-B5FX77CK.mjs';
3
+ import { a as RenderingModule } from './ngx-rendering-service-lib-ngx-rendering-service-lib-CGzn3e5c.mjs';
4
4
  import { MatIconModule } from '@angular/material/icon';
5
- import * as i3$1 from '@angular/material/button';
5
+ import * as i3 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';
9
9
  import * as i1 from '@angular/platform-browser';
10
- import * as i3 from '@angular/common';
10
+ import * as i2 from '@angular/common';
11
11
 
12
12
  class MoodleComponent {
13
13
  constructor(sanitizer) {
@@ -39,7 +39,7 @@ class MoodleComponent {
39
39
  return null;
40
40
  }
41
41
  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 }); }
42
- 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]=\"sanitizedLinkUrl\" 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: i3$1.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" }] }); }
42
+ 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]=\"sanitizedLinkUrl\" 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: 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: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
43
43
  }
44
44
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: MoodleComponent, decorators: [{
45
45
  type: Component,
@@ -58,4 +58,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
58
58
  }] } });
59
59
 
60
60
  export { MoodleComponent };
61
- //# sourceMappingURL=ngx-rendering-service-lib-moodle.component-ioYC-Ec4.mjs.map
61
+ //# sourceMappingURL=ngx-rendering-service-lib-moodle.component-ConbyVbe.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-rendering-service-lib-moodle.component-ioYC-Ec4.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 sanitizedLinkUrl: 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.sanitizedLinkUrl = this.getSafeLinkUri()\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 getSafeLinkUri() {\n if (this.data?.items !== undefined && this.data.items[0].additionalData) {\n const uri = new URL(this.data.items[0].additionalData['linkUrl'] ?? '')\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]=\"sanitizedLinkUrl\" target=\"_blank\">{{ 'RENDERING.GO_TO_COURSE' | translate }}</a>\n</div>\n"],"names":["i3"],"mappings":"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"}
1
+ {"version":3,"file":"ngx-rendering-service-lib-moodle.component-ConbyVbe.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 sanitizedLinkUrl: 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.sanitizedLinkUrl = this.getSafeLinkUri()\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 getSafeLinkUri() {\n if (this.data?.items !== undefined && this.data.items[0].additionalData) {\n const uri = new URL(this.data.items[0].additionalData['linkUrl'] ?? '')\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]=\"sanitizedLinkUrl\" target=\"_blank\">{{ 'RENDERING.GO_TO_COURSE' | translate }}</a>\n</div>\n"],"names":[],"mappings":"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"}