@acorex/components 18.9.1 → 18.9.2
Sign up to get free protection for your applications and to get access to all the features.
- package/common/lib/components/base-component.class.d.ts +4 -4
- package/esm2022/common/lib/components/base-component.class.mjs +6 -6
- package/esm2022/conversation/lib/conversation-message/conversation-message.component.mjs +2 -2
- package/esm2022/conversation/lib/conversation.module.mjs +2 -2
- package/esm2022/media-viewer/acorex-components-media-viewer.mjs +5 -0
- package/esm2022/media-viewer/index.mjs +10 -0
- package/esm2022/media-viewer/lib/media-viewer-container/media-viewer-container.component.mjs +35 -0
- package/esm2022/media-viewer/lib/media-viewer-slider/media-viewer-slider.component.mjs +35 -0
- package/esm2022/media-viewer/lib/media-viewer-thumbnail/media-viewer-thumbnail.component.mjs +23 -0
- package/esm2022/media-viewer/lib/media-viewer-tools/audio-player/audio-player.component.mjs +19 -0
- package/esm2022/media-viewer/lib/media-viewer-tools/image-viewer/image-viewer.component.mjs +19 -0
- package/esm2022/media-viewer/lib/media-viewer-tools/pdf-reader/pdf-reader.component.mjs +23 -0
- package/esm2022/media-viewer/lib/media-viewer-tools/video-player/video-player.component.mjs +19 -0
- package/esm2022/media-viewer/lib/media-viewer-type-registry.service.mjs +20 -0
- package/esm2022/media-viewer/lib/media-viewer-types.mjs +10 -0
- package/esm2022/media-viewer/lib/media-viewer.module.mjs +113 -0
- package/esm2022/media-viewer/lib/media-viewer.service.mjs +14 -0
- package/fesm2022/acorex-components-common.mjs +4 -4
- package/fesm2022/acorex-components-common.mjs.map +1 -1
- package/fesm2022/acorex-components-conversation.mjs +1 -1
- package/fesm2022/acorex-components-conversation.mjs.map +1 -1
- package/fesm2022/acorex-components-media-viewer.mjs +298 -0
- package/fesm2022/acorex-components-media-viewer.mjs.map +1 -0
- package/media-viewer/README.md +3 -0
- package/media-viewer/index.d.ts +9 -0
- package/media-viewer/lib/media-viewer-container/media-viewer-container.component.d.ts +15 -0
- package/media-viewer/lib/media-viewer-slider/media-viewer-slider.component.d.ts +19 -0
- package/media-viewer/lib/media-viewer-thumbnail/media-viewer-thumbnail.component.d.ts +11 -0
- package/media-viewer/lib/media-viewer-tools/audio-player/audio-player.component.d.ts +8 -0
- package/media-viewer/lib/media-viewer-tools/image-viewer/image-viewer.component.d.ts +8 -0
- package/media-viewer/lib/media-viewer-tools/pdf-reader/pdf-reader.component.d.ts +7 -0
- package/media-viewer/lib/media-viewer-tools/video-player/video-player.component.d.ts +8 -0
- package/media-viewer/lib/media-viewer-type-registry.service.d.ts +9 -0
- package/media-viewer/lib/media-viewer-types.d.ts +17 -0
- package/media-viewer/lib/media-viewer.module.d.ts +26 -0
- package/media-viewer/lib/media-viewer.service.d.ts +8 -0
- package/package.json +53 -47
@@ -0,0 +1,298 @@
|
|
1
|
+
import * as i0 from '@angular/core';
|
2
|
+
import { signal, Injectable, inject, input, effect, Component, ChangeDetectionStrategy, ViewEncapsulation, computed, afterNextRender, NgModule, Optional, Inject } from '@angular/core';
|
3
|
+
import * as i1$1 from '@acorex/components/button';
|
4
|
+
import { AXButtonModule } from '@acorex/components/button';
|
5
|
+
import * as i2 from '@acorex/components/decorators';
|
6
|
+
import { AXDecoratorModule } from '@acorex/components/decorators';
|
7
|
+
import { isBrowser } from '@acorex/core/platform';
|
8
|
+
import * as i1 from '@angular/cdk/portal';
|
9
|
+
import { ComponentPortal, CdkPortalOutlet } from '@angular/cdk/portal';
|
10
|
+
import * as i1$2 from '@angular/common';
|
11
|
+
import { CommonModule } from '@angular/common';
|
12
|
+
import { FormsModule } from '@angular/forms';
|
13
|
+
|
14
|
+
class AXMediaViewerService {
|
15
|
+
constructor() {
|
16
|
+
this.dataArray = signal([]);
|
17
|
+
this.selectedIndex = signal(0);
|
18
|
+
}
|
19
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMediaViewerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
20
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMediaViewerService }); }
|
21
|
+
}
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMediaViewerService, decorators: [{
|
23
|
+
type: Injectable
|
24
|
+
}] });
|
25
|
+
|
26
|
+
class AXMediaViewerTypeRegistryService {
|
27
|
+
constructor() {
|
28
|
+
this.plugins = new Map();
|
29
|
+
}
|
30
|
+
register(...plugins) {
|
31
|
+
plugins.forEach((p) => this.plugins.set(p.name, p));
|
32
|
+
}
|
33
|
+
resolve(name) {
|
34
|
+
return this.plugins.get(name);
|
35
|
+
}
|
36
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMediaViewerTypeRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
37
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMediaViewerTypeRegistryService, providedIn: 'root' }); }
|
38
|
+
}
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMediaViewerTypeRegistryService, decorators: [{
|
40
|
+
type: Injectable,
|
41
|
+
args: [{ providedIn: 'root' }]
|
42
|
+
}] });
|
43
|
+
|
44
|
+
class AXMediaViewerSliderComponent {
|
45
|
+
/** @ignore */
|
46
|
+
constructor() {
|
47
|
+
this.service = inject(AXMediaViewerService);
|
48
|
+
this.dataObject = input();
|
49
|
+
/** @ignore */
|
50
|
+
this.portal = signal(null);
|
51
|
+
/** @ignore */
|
52
|
+
this.registryService = inject(AXMediaViewerTypeRegistryService);
|
53
|
+
effect(() => {
|
54
|
+
this.portal.set(new ComponentPortal(this.registryService.resolve(this.dataObject()?.type).component));
|
55
|
+
}, { allowSignalWrites: true });
|
56
|
+
}
|
57
|
+
/** @ignore */
|
58
|
+
_handleAttached(ref) {
|
59
|
+
ref = ref;
|
60
|
+
if (ref.instance && isBrowser()) {
|
61
|
+
Object.assign(ref.instance, { message: this.dataObject() });
|
62
|
+
}
|
63
|
+
}
|
64
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMediaViewerSliderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
65
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.0", type: AXMediaViewerSliderComponent, selector: "ax-media-viewer-slider", inputs: { dataObject: { classPropertyName: "dataObject", publicName: "dataObject", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<ng-template [cdkPortalOutlet]=\"portal()\" (attached)=\"_handleAttached($event)\"></ng-template>\n", styles: ["ax-media-viewer-slider{padding:1rem}\n"], dependencies: [{ kind: "directive", type: i1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
66
|
+
}
|
67
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMediaViewerSliderComponent, decorators: [{
|
68
|
+
type: Component,
|
69
|
+
args: [{ selector: 'ax-media-viewer-slider', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ng-template [cdkPortalOutlet]=\"portal()\" (attached)=\"_handleAttached($event)\"></ng-template>\n", styles: ["ax-media-viewer-slider{padding:1rem}\n"] }]
|
70
|
+
}], ctorParameters: () => [] });
|
71
|
+
|
72
|
+
class AXMediaViewerContainerComponent {
|
73
|
+
constructor() {
|
74
|
+
this.dataArray = input();
|
75
|
+
this.service = inject(AXMediaViewerService);
|
76
|
+
this.arrayLength = computed(() => this.dataArray().length);
|
77
|
+
this.arrayIndex = computed(() => this.service.selectedIndex());
|
78
|
+
this.showComponent = computed(() => this.dataArray()[this.arrayIndex()]);
|
79
|
+
afterNextRender(() => {
|
80
|
+
this.service.dataArray.set(this.dataArray());
|
81
|
+
});
|
82
|
+
}
|
83
|
+
nextHandler() {
|
84
|
+
if (this.arrayIndex() === this.arrayLength() - 1)
|
85
|
+
return;
|
86
|
+
this.service.selectedIndex.update((prev) => prev + 1);
|
87
|
+
}
|
88
|
+
backHandler() {
|
89
|
+
if (this.arrayIndex() === 0)
|
90
|
+
return;
|
91
|
+
this.service.selectedIndex.update((prev) => prev - 1);
|
92
|
+
}
|
93
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMediaViewerContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
94
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.0", type: AXMediaViewerContainerComponent, selector: "ax-media-viewer-container", inputs: { dataArray: { classPropertyName: "dataArray", publicName: "dataArray", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<ng-content select=\"ax-prefix\"> </ng-content>\n\n<div class=\"ax-media-viewer-slider-container ax-sm\">\n <ax-button (click)=\"backHandler()\">\n <ax-icon class=\"ax-icon ax-icon-arrow-left button-slider-media\"> </ax-icon>\n </ax-button>\n\n <ax-media-viewer-slider [dataObject]=\"showComponent()\"></ax-media-viewer-slider>\n\n <ax-button (click)=\"nextHandler()\">\n <ax-icon class=\"ax-icon ax-icon-arrow-right\"> </ax-icon>\n </ax-button>\n</div>\n\n<ng-content select=\"ax-suffix\"> </ng-content>\n", styles: ["ax-media-viewer-container{padding:.5rem;overflow:hidden}ax-media-viewer-container .ax-media-viewer-slider-container{display:flex;justify-content:space-between;align-items:center}ax-media-viewer-container .ax-media-viewer-slider-container ax-media-viewer-slider{width:90%}ax-media-viewer-container .ax-media-viewer-slider-container .button-slider-media{width:5%}\n"], dependencies: [{ kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: AXMediaViewerSliderComponent, selector: "ax-media-viewer-slider", inputs: ["dataObject"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
95
|
+
}
|
96
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMediaViewerContainerComponent, decorators: [{
|
97
|
+
type: Component,
|
98
|
+
args: [{ selector: 'ax-media-viewer-container', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ng-content select=\"ax-prefix\"> </ng-content>\n\n<div class=\"ax-media-viewer-slider-container ax-sm\">\n <ax-button (click)=\"backHandler()\">\n <ax-icon class=\"ax-icon ax-icon-arrow-left button-slider-media\"> </ax-icon>\n </ax-button>\n\n <ax-media-viewer-slider [dataObject]=\"showComponent()\"></ax-media-viewer-slider>\n\n <ax-button (click)=\"nextHandler()\">\n <ax-icon class=\"ax-icon ax-icon-arrow-right\"> </ax-icon>\n </ax-button>\n</div>\n\n<ng-content select=\"ax-suffix\"> </ng-content>\n", styles: ["ax-media-viewer-container{padding:.5rem;overflow:hidden}ax-media-viewer-container .ax-media-viewer-slider-container{display:flex;justify-content:space-between;align-items:center}ax-media-viewer-container .ax-media-viewer-slider-container ax-media-viewer-slider{width:90%}ax-media-viewer-container .ax-media-viewer-slider-container .button-slider-media{width:5%}\n"] }]
|
99
|
+
}], ctorParameters: () => [] });
|
100
|
+
|
101
|
+
class AXMediaViewerThumbnailComponent {
|
102
|
+
constructor() {
|
103
|
+
this.service = inject(AXMediaViewerService);
|
104
|
+
this.data = signal([]);
|
105
|
+
afterNextRender(() => {
|
106
|
+
this.data.set(this.service.dataArray());
|
107
|
+
});
|
108
|
+
}
|
109
|
+
clickHandler(i) {
|
110
|
+
this.service.selectedIndex.set(i);
|
111
|
+
}
|
112
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMediaViewerThumbnailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
113
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXMediaViewerThumbnailComponent, selector: "ax-media-viewer-thumbnail", ngImport: i0, template: "@for (item of data(); track $index) {\n <div\n class=\"ax-thumbnail\"\n (click)=\"clickHandler($index)\"\n [ngClass]=\"$index === service.selectedIndex() && 'active'\"\n >\n <img [src]=\"item.thumbnail\" alt=\"thumbnail\" />\n </div>\n}\n", styles: ["ax-media-viewer-thumbnail{padding:1rem;display:flex;align-items:center;justify-content:space-between;flex-wrap:nowrap;overflow-x:auto}ax-media-viewer-thumbnail .ax-thumbnail{cursor:pointer;padding:.5rem;min-width:9rem;aspect-ratio:1;background-color:gray;margin-inline:.6rem;overflow:hidden}ax-media-viewer-thumbnail .ax-thumbnail img{object-position:center;object-fit:cover;height:100%;width:100%}ax-media-viewer-thumbnail .ax-thumbnail.active{background-color:#87ceeb}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
114
|
+
}
|
115
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMediaViewerThumbnailComponent, decorators: [{
|
116
|
+
type: Component,
|
117
|
+
args: [{ selector: 'ax-media-viewer-thumbnail', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "@for (item of data(); track $index) {\n <div\n class=\"ax-thumbnail\"\n (click)=\"clickHandler($index)\"\n [ngClass]=\"$index === service.selectedIndex() && 'active'\"\n >\n <img [src]=\"item.thumbnail\" alt=\"thumbnail\" />\n </div>\n}\n", styles: ["ax-media-viewer-thumbnail{padding:1rem;display:flex;align-items:center;justify-content:space-between;flex-wrap:nowrap;overflow-x:auto}ax-media-viewer-thumbnail .ax-thumbnail{cursor:pointer;padding:.5rem;min-width:9rem;aspect-ratio:1;background-color:gray;margin-inline:.6rem;overflow:hidden}ax-media-viewer-thumbnail .ax-thumbnail img{object-position:center;object-fit:cover;height:100%;width:100%}ax-media-viewer-thumbnail .ax-thumbnail.active{background-color:#87ceeb}\n"] }]
|
118
|
+
}], ctorParameters: () => [] });
|
119
|
+
|
120
|
+
class AXMediaViewerBaseComponent {
|
121
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMediaViewerBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
122
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMediaViewerBaseComponent }); }
|
123
|
+
}
|
124
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMediaViewerBaseComponent, decorators: [{
|
125
|
+
type: Injectable
|
126
|
+
}] });
|
127
|
+
|
128
|
+
class AXAudioPlayerComponent extends AXMediaViewerBaseComponent {
|
129
|
+
constructor() {
|
130
|
+
super();
|
131
|
+
this.dataObject = signal(null);
|
132
|
+
afterNextRender(() => {
|
133
|
+
this.dataObject.set(this.message);
|
134
|
+
});
|
135
|
+
}
|
136
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXAudioPlayerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
137
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: AXAudioPlayerComponent, selector: "ax-audio-player", usesInheritance: true, ngImport: i0, template: "<audio class=\"ax-audio-player-tag\" controls [src]=\"dataObject()?.url\"></audio>\n", styles: ["ax-audio-player{display:flex;justify-content:center;align-items:center}ax-audio-player .ax-audio-player-tag{max-width:100%;min-width:7rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
138
|
+
}
|
139
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXAudioPlayerComponent, decorators: [{
|
140
|
+
type: Component,
|
141
|
+
args: [{ selector: 'ax-audio-player', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<audio class=\"ax-audio-player-tag\" controls [src]=\"dataObject()?.url\"></audio>\n", styles: ["ax-audio-player{display:flex;justify-content:center;align-items:center}ax-audio-player .ax-audio-player-tag{max-width:100%;min-width:7rem}\n"] }]
|
142
|
+
}], ctorParameters: () => [] });
|
143
|
+
|
144
|
+
class AXImageViewerComponent extends AXMediaViewerBaseComponent {
|
145
|
+
constructor() {
|
146
|
+
super();
|
147
|
+
this.dataObject = signal(null);
|
148
|
+
afterNextRender(() => {
|
149
|
+
this.dataObject.set(this.message);
|
150
|
+
});
|
151
|
+
}
|
152
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXImageViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
153
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: AXImageViewerComponent, selector: "ax-image-viewer", usesInheritance: true, ngImport: i0, template: "<img [src]=\"dataObject()?.url\" />\n", styles: ["ax-image-viewer{display:flex;justify-content:center;align-items:center}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
154
|
+
}
|
155
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXImageViewerComponent, decorators: [{
|
156
|
+
type: Component,
|
157
|
+
args: [{ selector: 'ax-image-viewer', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<img [src]=\"dataObject()?.url\" />\n", styles: ["ax-image-viewer{display:flex;justify-content:center;align-items:center}\n"] }]
|
158
|
+
}], ctorParameters: () => [] });
|
159
|
+
|
160
|
+
class AXPdfReaderComponent extends AXMediaViewerBaseComponent {
|
161
|
+
constructor() {
|
162
|
+
super();
|
163
|
+
afterNextRender(() => {
|
164
|
+
const obj = document.createElement('object');
|
165
|
+
obj.type = 'application/pdf';
|
166
|
+
obj.data = this.message.url;
|
167
|
+
obj.classList.add('pdfObj');
|
168
|
+
const container = document.querySelector('ax-pdf-reader');
|
169
|
+
container.appendChild(obj);
|
170
|
+
});
|
171
|
+
}
|
172
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPdfReaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
173
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: AXPdfReaderComponent, selector: "ax-pdf-reader", usesInheritance: true, ngImport: i0, template: "\n", styles: ["ax-pdf-reader .pdfObj{width:clamp(100%,30rem,35rem);height:30rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
174
|
+
}
|
175
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPdfReaderComponent, decorators: [{
|
176
|
+
type: Component,
|
177
|
+
args: [{ selector: 'ax-pdf-reader', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "\n", styles: ["ax-pdf-reader .pdfObj{width:clamp(100%,30rem,35rem);height:30rem}\n"] }]
|
178
|
+
}], ctorParameters: () => [] });
|
179
|
+
|
180
|
+
class AXVideoPlayerComponent extends AXMediaViewerBaseComponent {
|
181
|
+
constructor() {
|
182
|
+
super();
|
183
|
+
this.dataObject = signal(null);
|
184
|
+
afterNextRender(() => {
|
185
|
+
this.dataObject.set(this.message);
|
186
|
+
});
|
187
|
+
}
|
188
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXVideoPlayerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
189
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: AXVideoPlayerComponent, selector: "ax-video-player", usesInheritance: true, ngImport: i0, template: "<video controls [src]=\"dataObject()?.url\"></video>\n", styles: ["ax-video-player{display:flex;justify-content:center;align-items:center}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
190
|
+
}
|
191
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXVideoPlayerComponent, decorators: [{
|
192
|
+
type: Component,
|
193
|
+
args: [{ selector: 'ax-video-player', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<video controls [src]=\"dataObject()?.url\"></video>\n", styles: ["ax-video-player{display:flex;justify-content:center;align-items:center}\n"] }]
|
194
|
+
}], ctorParameters: () => [] });
|
195
|
+
|
196
|
+
const COMPONENT = [
|
197
|
+
AXMediaViewerContainerComponent,
|
198
|
+
AXMediaViewerSliderComponent,
|
199
|
+
AXMediaViewerThumbnailComponent,
|
200
|
+
AXAudioPlayerComponent,
|
201
|
+
AXImageViewerComponent,
|
202
|
+
AXPdfReaderComponent,
|
203
|
+
AXVideoPlayerComponent,
|
204
|
+
];
|
205
|
+
const MODULES = [CommonModule, AXButtonModule, AXDecoratorModule, CdkPortalOutlet, FormsModule];
|
206
|
+
class AXMediaViewerModule {
|
207
|
+
constructor(instances) {
|
208
|
+
instances?.forEach((f) => {
|
209
|
+
f();
|
210
|
+
});
|
211
|
+
}
|
212
|
+
static forRoot(config) {
|
213
|
+
return {
|
214
|
+
ngModule: AXMediaViewerModule,
|
215
|
+
providers: [
|
216
|
+
{
|
217
|
+
provide: 'AXMediaViewerFactory',
|
218
|
+
useFactory: (registry) => () => {
|
219
|
+
if (config?.types?.length) {
|
220
|
+
registry.register(...config.types);
|
221
|
+
}
|
222
|
+
registry.register({
|
223
|
+
name: 'audio',
|
224
|
+
component: AXAudioPlayerComponent,
|
225
|
+
});
|
226
|
+
registry.register({
|
227
|
+
name: 'image',
|
228
|
+
component: AXImageViewerComponent,
|
229
|
+
});
|
230
|
+
registry.register({
|
231
|
+
name: 'pdf',
|
232
|
+
component: AXPdfReaderComponent,
|
233
|
+
});
|
234
|
+
registry.register({
|
235
|
+
name: 'video',
|
236
|
+
component: AXVideoPlayerComponent,
|
237
|
+
});
|
238
|
+
},
|
239
|
+
deps: [AXMediaViewerTypeRegistryService],
|
240
|
+
multi: true,
|
241
|
+
},
|
242
|
+
],
|
243
|
+
};
|
244
|
+
}
|
245
|
+
static forChild(config) {
|
246
|
+
return {
|
247
|
+
ngModule: AXMediaViewerModule,
|
248
|
+
providers: [
|
249
|
+
{
|
250
|
+
provide: 'AXMediaViewerFactory',
|
251
|
+
useFactory: (registry) => () => {
|
252
|
+
if (config?.types?.length) {
|
253
|
+
registry.register(...config.types);
|
254
|
+
}
|
255
|
+
},
|
256
|
+
deps: [AXMediaViewerTypeRegistryService],
|
257
|
+
multi: true,
|
258
|
+
},
|
259
|
+
],
|
260
|
+
};
|
261
|
+
}
|
262
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMediaViewerModule, deps: [{ token: 'AXMediaViewerFactory', optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
263
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.0", ngImport: i0, type: AXMediaViewerModule, declarations: [AXMediaViewerContainerComponent,
|
264
|
+
AXMediaViewerSliderComponent,
|
265
|
+
AXMediaViewerThumbnailComponent,
|
266
|
+
AXAudioPlayerComponent,
|
267
|
+
AXImageViewerComponent,
|
268
|
+
AXPdfReaderComponent,
|
269
|
+
AXVideoPlayerComponent], imports: [CommonModule, AXButtonModule, AXDecoratorModule, CdkPortalOutlet, FormsModule], exports: [AXMediaViewerContainerComponent,
|
270
|
+
AXMediaViewerSliderComponent,
|
271
|
+
AXMediaViewerThumbnailComponent,
|
272
|
+
AXAudioPlayerComponent,
|
273
|
+
AXImageViewerComponent,
|
274
|
+
AXPdfReaderComponent,
|
275
|
+
AXVideoPlayerComponent] }); }
|
276
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMediaViewerModule, providers: [AXMediaViewerService], imports: [CommonModule, AXButtonModule, AXDecoratorModule, FormsModule] }); }
|
277
|
+
}
|
278
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMediaViewerModule, decorators: [{
|
279
|
+
type: NgModule,
|
280
|
+
args: [{
|
281
|
+
declarations: [...COMPONENT],
|
282
|
+
imports: [...MODULES],
|
283
|
+
exports: [...COMPONENT],
|
284
|
+
providers: [AXMediaViewerService],
|
285
|
+
}]
|
286
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
287
|
+
type: Optional
|
288
|
+
}, {
|
289
|
+
type: Inject,
|
290
|
+
args: ['AXMediaViewerFactory']
|
291
|
+
}] }] });
|
292
|
+
|
293
|
+
/**
|
294
|
+
* Generated bundle index. Do not edit.
|
295
|
+
*/
|
296
|
+
|
297
|
+
export { AXAudioPlayerComponent, AXImageViewerComponent, AXMediaViewerBaseComponent, AXMediaViewerContainerComponent, AXMediaViewerModule, AXMediaViewerSliderComponent, AXMediaViewerThumbnailComponent, AXPdfReaderComponent, AXVideoPlayerComponent };
|
298
|
+
//# sourceMappingURL=acorex-components-media-viewer.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"acorex-components-media-viewer.mjs","sources":["../../../../libs/components/media-viewer/src/lib/media-viewer.service.ts","../../../../libs/components/media-viewer/src/lib/media-viewer-type-registry.service.ts","../../../../libs/components/media-viewer/src/lib/media-viewer-slider/media-viewer-slider.component.ts","../../../../libs/components/media-viewer/src/lib/media-viewer-slider/media-viewer-slider.component.html","../../../../libs/components/media-viewer/src/lib/media-viewer-container/media-viewer-container.component.ts","../../../../libs/components/media-viewer/src/lib/media-viewer-container/media-viewer-container.component.html","../../../../libs/components/media-viewer/src/lib/media-viewer-thumbnail/media-viewer-thumbnail.component.ts","../../../../libs/components/media-viewer/src/lib/media-viewer-thumbnail/media-viewer-thumbnail.component.html","../../../../libs/components/media-viewer/src/lib/media-viewer-types.ts","../../../../libs/components/media-viewer/src/lib/media-viewer-tools/audio-player/audio-player.component.ts","../../../../libs/components/media-viewer/src/lib/media-viewer-tools/audio-player/audio-player.component.html","../../../../libs/components/media-viewer/src/lib/media-viewer-tools/image-viewer/image-viewer.component.ts","../../../../libs/components/media-viewer/src/lib/media-viewer-tools/image-viewer/image-viewer.component.html","../../../../libs/components/media-viewer/src/lib/media-viewer-tools/pdf-reader/pdf-reader.component.ts","../../../../libs/components/media-viewer/src/lib/media-viewer-tools/pdf-reader/pdf-reader.component.html","../../../../libs/components/media-viewer/src/lib/media-viewer-tools/video-player/video-player.component.ts","../../../../libs/components/media-viewer/src/lib/media-viewer-tools/video-player/video-player.component.html","../../../../libs/components/media-viewer/src/lib/media-viewer.module.ts","../../../../libs/components/media-viewer/src/acorex-components-media-viewer.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\nimport { AXMediaViewerData } from './media-viewer-types';\n\n@Injectable()\nexport class AXMediaViewerService {\n dataArray = signal<AXMediaViewerData[]>([]);\n selectedIndex = signal(0);\n}\n","import { Injectable } from '@angular/core';\nimport { AXMediaViewerType } from './media-viewer-types';\n\n@Injectable({ providedIn: 'root' })\nexport class AXMediaViewerTypeRegistryService {\n private plugins: Map<string, AXMediaViewerType> = new Map<string, AXMediaViewerType>();\n\n register(...plugins: AXMediaViewerType[]) {\n plugins.forEach((p) => this.plugins.set(p.name, p));\n }\n\n public resolve(name: string): AXMediaViewerType | undefined {\n return this.plugins.get(name);\n }\n}\n","import { isBrowser } from '@acorex/core/platform';\nimport { CdkPortalOutletAttachedRef, ComponentPortal } from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n effect,\n inject,\n input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { AXMediaViewerTypeRegistryService } from '../media-viewer-type-registry.service';\nimport { AXMediaViewerData } from '../media-viewer-types';\nimport { AXMediaViewerService } from '../media-viewer.service';\n\n@Component({\n selector: 'ax-media-viewer-slider',\n templateUrl: './media-viewer-slider.component.html',\n styleUrls: ['./media-viewer-slider.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXMediaViewerSliderComponent {\n protected service = inject(AXMediaViewerService);\n\n dataObject = input<AXMediaViewerData>();\n\n /** @ignore */\n protected portal = signal<ComponentPortal<any> | null>(null);\n\n /** @ignore */\n protected registryService = inject(AXMediaViewerTypeRegistryService);\n\n /** @ignore */\n constructor() {\n effect(\n () => {\n this.portal.set(new ComponentPortal(this.registryService.resolve(this.dataObject()?.type).component));\n },\n { allowSignalWrites: true },\n );\n }\n\n /** @ignore */\n protected _handleAttached(ref: CdkPortalOutletAttachedRef) {\n ref = ref as ComponentRef<unknown>;\n if (ref.instance && isBrowser()) {\n Object.assign(ref.instance, { message: this.dataObject() });\n }\n }\n}\n","<ng-template [cdkPortalOutlet]=\"portal()\" (attached)=\"_handleAttached($event)\"></ng-template>\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { AXMediaViewerData } from '../media-viewer-types';\nimport { AXMediaViewerService } from '../media-viewer.service';\n\n@Component({\n selector: 'ax-media-viewer-container',\n templateUrl: './media-viewer-container.component.html',\n styleUrls: ['./media-viewer-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXMediaViewerContainerComponent {\n dataArray = input<AXMediaViewerData[]>();\n\n protected service = inject(AXMediaViewerService);\n\n protected arrayLength = computed(() => this.dataArray().length);\n protected arrayIndex = computed(() => this.service.selectedIndex());\n protected showComponent = computed(() => this.dataArray()[this.arrayIndex()]);\n\n constructor() {\n afterNextRender(() => {\n this.service.dataArray.set(this.dataArray());\n });\n }\n\n protected nextHandler() {\n if (this.arrayIndex() === this.arrayLength() - 1) return;\n this.service.selectedIndex.update((prev) => prev + 1);\n }\n\n protected backHandler() {\n if (this.arrayIndex() === 0) return;\n this.service.selectedIndex.update((prev) => prev - 1);\n }\n}\n","<ng-content select=\"ax-prefix\"> </ng-content>\n\n<div class=\"ax-media-viewer-slider-container ax-sm\">\n <ax-button (click)=\"backHandler()\">\n <ax-icon class=\"ax-icon ax-icon-arrow-left button-slider-media\"> </ax-icon>\n </ax-button>\n\n <ax-media-viewer-slider [dataObject]=\"showComponent()\"></ax-media-viewer-slider>\n\n <ax-button (click)=\"nextHandler()\">\n <ax-icon class=\"ax-icon ax-icon-arrow-right\"> </ax-icon>\n </ax-button>\n</div>\n\n<ng-content select=\"ax-suffix\"> </ng-content>\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n inject,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { AXMediaViewerData } from '../media-viewer-types';\nimport { AXMediaViewerService } from '../media-viewer.service';\n\n@Component({\n selector: 'ax-media-viewer-thumbnail',\n templateUrl: './media-viewer-thumbnail.component.html',\n styleUrls: ['./media-viewer-thumbnail.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXMediaViewerThumbnailComponent {\n protected service = inject(AXMediaViewerService);\n protected data = signal<AXMediaViewerData[]>([]);\n\n constructor() {\n afterNextRender(() => {\n this.data.set(this.service.dataArray());\n });\n }\n\n protected clickHandler(i: number) {\n this.service.selectedIndex.set(i);\n }\n}\n","@for (item of data(); track $index) {\n <div\n class=\"ax-thumbnail\"\n (click)=\"clickHandler($index)\"\n [ngClass]=\"$index === service.selectedIndex() && 'active'\"\n >\n <img [src]=\"item.thumbnail\" alt=\"thumbnail\" />\n </div>\n}\n","import { Injectable, Type } from '@angular/core';\n\nexport interface AXMediaViewerType {\n name: string;\n component: Type<any>;\n}\n\nexport type AXMediaViewerData = {\n id: string;\n type: 'image' | 'audio' | 'pdf' | 'video';\n url: string;\n thumbnail: string;\n};\n\n@Injectable()\nexport class AXMediaViewerBaseComponent {\n message: AXMediaViewerData;\n}\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXMediaViewerBaseComponent, AXMediaViewerData } from '../../media-viewer-types';\n\n@Component({\n selector: 'ax-audio-player',\n templateUrl: './audio-player.component.html',\n styleUrls: ['./audio-player.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXAudioPlayerComponent extends AXMediaViewerBaseComponent {\n dataObject = signal<AXMediaViewerData>(null);\n\n constructor() {\n super();\n afterNextRender(() => {\n this.dataObject.set(this.message);\n });\n }\n}\n","<audio class=\"ax-audio-player-tag\" controls [src]=\"dataObject()?.url\"></audio>\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXMediaViewerBaseComponent, AXMediaViewerData } from '../../media-viewer-types';\n\n@Component({\n selector: 'ax-image-viewer',\n templateUrl: './image-viewer.component.html',\n styleUrls: ['./image-viewer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXImageViewerComponent extends AXMediaViewerBaseComponent {\n dataObject = signal<AXMediaViewerData>(null);\n\n constructor() {\n super();\n afterNextRender(() => {\n this.dataObject.set(this.message);\n });\n }\n}\n","<img [src]=\"dataObject()?.url\" />\n","import { afterNextRender, ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { AXMediaViewerBaseComponent } from '../../media-viewer-types';\n\n@Component({\n selector: 'ax-pdf-reader',\n templateUrl: './pdf-reader.component.html',\n styleUrls: ['./pdf-reader.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXPdfReaderComponent extends AXMediaViewerBaseComponent {\n constructor() {\n super();\n afterNextRender(() => {\n const obj = document.createElement('object');\n obj.type = 'application/pdf';\n obj.data = this.message.url;\n obj.classList.add('pdfObj');\n const container = document.querySelector('ax-pdf-reader');\n container.appendChild(obj);\n });\n }\n}\n","\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXMediaViewerBaseComponent, AXMediaViewerData } from '../../media-viewer-types';\n\n@Component({\n selector: 'ax-video-player',\n templateUrl: './video-player.component.html',\n styleUrls: ['./video-player.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXVideoPlayerComponent extends AXMediaViewerBaseComponent {\n dataObject = signal<AXMediaViewerData>(null);\n\n constructor() {\n super();\n afterNextRender(() => {\n this.dataObject.set(this.message);\n });\n }\n}\n","<video controls [src]=\"dataObject()?.url\"></video>\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { CdkPortalOutlet } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { Inject, ModuleWithProviders, NgModule, Optional } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXMediaViewerContainerComponent } from './media-viewer-container/media-viewer-container.component';\nimport { AXMediaViewerSliderComponent } from './media-viewer-slider/media-viewer-slider.component';\nimport { AXMediaViewerThumbnailComponent } from './media-viewer-thumbnail/media-viewer-thumbnail.component';\nimport { AXAudioPlayerComponent } from './media-viewer-tools/audio-player/audio-player.component';\nimport { AXImageViewerComponent } from './media-viewer-tools/image-viewer/image-viewer.component';\nimport { AXPdfReaderComponent } from './media-viewer-tools/pdf-reader/pdf-reader.component';\nimport { AXVideoPlayerComponent } from './media-viewer-tools/video-player/video-player.component';\nimport { AXMediaViewerTypeRegistryService } from './media-viewer-type-registry.service';\nimport { AXMediaViewerType } from './media-viewer-types';\nimport { AXMediaViewerService } from './media-viewer.service';\n\nexport interface AXMediaViewerModuleConfig {\n types: AXMediaViewerType[];\n}\n\nconst COMPONENT = [\n AXMediaViewerContainerComponent,\n AXMediaViewerSliderComponent,\n AXMediaViewerThumbnailComponent,\n AXAudioPlayerComponent,\n AXImageViewerComponent,\n AXPdfReaderComponent,\n AXVideoPlayerComponent,\n];\nconst MODULES = [CommonModule, AXButtonModule, AXDecoratorModule, CdkPortalOutlet, FormsModule];\n\n@NgModule({\n declarations: [...COMPONENT],\n imports: [...MODULES],\n exports: [...COMPONENT],\n providers: [AXMediaViewerService],\n})\nexport class AXMediaViewerModule {\n constructor(@Optional() @Inject('AXMediaViewerFactory') instances: any[]) {\n instances?.forEach((f) => {\n f();\n });\n }\n\n static forRoot(config?: AXMediaViewerModuleConfig): ModuleWithProviders<AXMediaViewerModule> {\n return {\n ngModule: AXMediaViewerModule,\n providers: [\n {\n provide: 'AXMediaViewerFactory',\n useFactory: (registry: AXMediaViewerTypeRegistryService) => () => {\n if (config?.types?.length) {\n registry.register(...config.types);\n }\n registry.register({\n name: 'audio',\n component: AXAudioPlayerComponent,\n });\n registry.register({\n name: 'image',\n component: AXImageViewerComponent,\n });\n registry.register({\n name: 'pdf',\n component: AXPdfReaderComponent,\n });\n registry.register({\n name: 'video',\n component: AXVideoPlayerComponent,\n });\n },\n deps: [AXMediaViewerTypeRegistryService],\n multi: true,\n },\n ],\n };\n }\n\n static forChild(config?: AXMediaViewerModuleConfig): ModuleWithProviders<AXMediaViewerModule> {\n return {\n ngModule: AXMediaViewerModule,\n providers: [\n {\n provide: 'AXMediaViewerFactory',\n useFactory: (registry: AXMediaViewerTypeRegistryService) => () => {\n if (config?.types?.length) {\n registry.register(...config.types);\n }\n },\n deps: [AXMediaViewerTypeRegistryService],\n multi: true,\n },\n ],\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i3.AXMediaViewerSliderComponent"],"mappings":"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"}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
export * from './lib/media-viewer-container/media-viewer-container.component';
|
2
|
+
export * from './lib/media-viewer-slider/media-viewer-slider.component';
|
3
|
+
export * from './lib/media-viewer-thumbnail/media-viewer-thumbnail.component';
|
4
|
+
export * from './lib/media-viewer-tools/audio-player/audio-player.component';
|
5
|
+
export * from './lib/media-viewer-tools/image-viewer/image-viewer.component';
|
6
|
+
export * from './lib/media-viewer-tools/pdf-reader/pdf-reader.component';
|
7
|
+
export * from './lib/media-viewer-tools/video-player/video-player.component';
|
8
|
+
export * from './lib/media-viewer-types';
|
9
|
+
export * from './lib/media-viewer.module';
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import { AXMediaViewerData } from '../media-viewer-types';
|
2
|
+
import { AXMediaViewerService } from '../media-viewer.service';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
export declare class AXMediaViewerContainerComponent {
|
5
|
+
dataArray: import("@angular/core").InputSignal<AXMediaViewerData[]>;
|
6
|
+
protected service: AXMediaViewerService;
|
7
|
+
protected arrayLength: import("@angular/core").Signal<number>;
|
8
|
+
protected arrayIndex: import("@angular/core").Signal<number>;
|
9
|
+
protected showComponent: import("@angular/core").Signal<AXMediaViewerData>;
|
10
|
+
constructor();
|
11
|
+
protected nextHandler(): void;
|
12
|
+
protected backHandler(): void;
|
13
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXMediaViewerContainerComponent, never>;
|
14
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AXMediaViewerContainerComponent, "ax-media-viewer-container", never, { "dataArray": { "alias": "dataArray"; "required": false; "isSignal": true; }; }, {}, never, ["ax-prefix", "ax-suffix"], false, never>;
|
15
|
+
}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import { CdkPortalOutletAttachedRef, ComponentPortal } from '@angular/cdk/portal';
|
2
|
+
import { AXMediaViewerTypeRegistryService } from '../media-viewer-type-registry.service';
|
3
|
+
import { AXMediaViewerData } from '../media-viewer-types';
|
4
|
+
import { AXMediaViewerService } from '../media-viewer.service';
|
5
|
+
import * as i0 from "@angular/core";
|
6
|
+
export declare class AXMediaViewerSliderComponent {
|
7
|
+
protected service: AXMediaViewerService;
|
8
|
+
dataObject: import("@angular/core").InputSignal<AXMediaViewerData>;
|
9
|
+
/** @ignore */
|
10
|
+
protected portal: import("@angular/core").WritableSignal<ComponentPortal<any>>;
|
11
|
+
/** @ignore */
|
12
|
+
protected registryService: AXMediaViewerTypeRegistryService;
|
13
|
+
/** @ignore */
|
14
|
+
constructor();
|
15
|
+
/** @ignore */
|
16
|
+
protected _handleAttached(ref: CdkPortalOutletAttachedRef): void;
|
17
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXMediaViewerSliderComponent, never>;
|
18
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AXMediaViewerSliderComponent, "ax-media-viewer-slider", never, { "dataObject": { "alias": "dataObject"; "required": false; "isSignal": true; }; }, {}, never, never, false, never>;
|
19
|
+
}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import { AXMediaViewerData } from '../media-viewer-types';
|
2
|
+
import { AXMediaViewerService } from '../media-viewer.service';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
export declare class AXMediaViewerThumbnailComponent {
|
5
|
+
protected service: AXMediaViewerService;
|
6
|
+
protected data: import("@angular/core").WritableSignal<AXMediaViewerData[]>;
|
7
|
+
constructor();
|
8
|
+
protected clickHandler(i: number): void;
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXMediaViewerThumbnailComponent, never>;
|
10
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AXMediaViewerThumbnailComponent, "ax-media-viewer-thumbnail", never, {}, {}, never, never, false, never>;
|
11
|
+
}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { AXMediaViewerBaseComponent, AXMediaViewerData } from '../../media-viewer-types';
|
2
|
+
import * as i0 from "@angular/core";
|
3
|
+
export declare class AXAudioPlayerComponent extends AXMediaViewerBaseComponent {
|
4
|
+
dataObject: import("@angular/core").WritableSignal<AXMediaViewerData>;
|
5
|
+
constructor();
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXAudioPlayerComponent, never>;
|
7
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AXAudioPlayerComponent, "ax-audio-player", never, {}, {}, never, never, false, never>;
|
8
|
+
}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { AXMediaViewerBaseComponent, AXMediaViewerData } from '../../media-viewer-types';
|
2
|
+
import * as i0 from "@angular/core";
|
3
|
+
export declare class AXImageViewerComponent extends AXMediaViewerBaseComponent {
|
4
|
+
dataObject: import("@angular/core").WritableSignal<AXMediaViewerData>;
|
5
|
+
constructor();
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXImageViewerComponent, never>;
|
7
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AXImageViewerComponent, "ax-image-viewer", never, {}, {}, never, never, false, never>;
|
8
|
+
}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import { AXMediaViewerBaseComponent } from '../../media-viewer-types';
|
2
|
+
import * as i0 from "@angular/core";
|
3
|
+
export declare class AXPdfReaderComponent extends AXMediaViewerBaseComponent {
|
4
|
+
constructor();
|
5
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPdfReaderComponent, never>;
|
6
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AXPdfReaderComponent, "ax-pdf-reader", never, {}, {}, never, never, false, never>;
|
7
|
+
}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { AXMediaViewerBaseComponent, AXMediaViewerData } from '../../media-viewer-types';
|
2
|
+
import * as i0 from "@angular/core";
|
3
|
+
export declare class AXVideoPlayerComponent extends AXMediaViewerBaseComponent {
|
4
|
+
dataObject: import("@angular/core").WritableSignal<AXMediaViewerData>;
|
5
|
+
constructor();
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXVideoPlayerComponent, never>;
|
7
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AXVideoPlayerComponent, "ax-video-player", never, {}, {}, never, never, false, never>;
|
8
|
+
}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import { AXMediaViewerType } from './media-viewer-types';
|
2
|
+
import * as i0 from "@angular/core";
|
3
|
+
export declare class AXMediaViewerTypeRegistryService {
|
4
|
+
private plugins;
|
5
|
+
register(...plugins: AXMediaViewerType[]): void;
|
6
|
+
resolve(name: string): AXMediaViewerType | undefined;
|
7
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXMediaViewerTypeRegistryService, never>;
|
8
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXMediaViewerTypeRegistryService>;
|
9
|
+
}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import { Type } from '@angular/core';
|
2
|
+
import * as i0 from "@angular/core";
|
3
|
+
export interface AXMediaViewerType {
|
4
|
+
name: string;
|
5
|
+
component: Type<any>;
|
6
|
+
}
|
7
|
+
export type AXMediaViewerData = {
|
8
|
+
id: string;
|
9
|
+
type: 'image' | 'audio' | 'pdf' | 'video';
|
10
|
+
url: string;
|
11
|
+
thumbnail: string;
|
12
|
+
};
|
13
|
+
export declare class AXMediaViewerBaseComponent {
|
14
|
+
message: AXMediaViewerData;
|
15
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXMediaViewerBaseComponent, never>;
|
16
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXMediaViewerBaseComponent>;
|
17
|
+
}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
import { ModuleWithProviders } from '@angular/core';
|
2
|
+
import { AXMediaViewerType } from './media-viewer-types';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
import * as i1 from "./media-viewer-container/media-viewer-container.component";
|
5
|
+
import * as i2 from "./media-viewer-slider/media-viewer-slider.component";
|
6
|
+
import * as i3 from "./media-viewer-thumbnail/media-viewer-thumbnail.component";
|
7
|
+
import * as i4 from "./media-viewer-tools/audio-player/audio-player.component";
|
8
|
+
import * as i5 from "./media-viewer-tools/image-viewer/image-viewer.component";
|
9
|
+
import * as i6 from "./media-viewer-tools/pdf-reader/pdf-reader.component";
|
10
|
+
import * as i7 from "./media-viewer-tools/video-player/video-player.component";
|
11
|
+
import * as i8 from "@angular/common";
|
12
|
+
import * as i9 from "@acorex/components/button";
|
13
|
+
import * as i10 from "@acorex/components/decorators";
|
14
|
+
import * as i11 from "@angular/cdk/portal";
|
15
|
+
import * as i12 from "@angular/forms";
|
16
|
+
export interface AXMediaViewerModuleConfig {
|
17
|
+
types: AXMediaViewerType[];
|
18
|
+
}
|
19
|
+
export declare class AXMediaViewerModule {
|
20
|
+
constructor(instances: any[]);
|
21
|
+
static forRoot(config?: AXMediaViewerModuleConfig): ModuleWithProviders<AXMediaViewerModule>;
|
22
|
+
static forChild(config?: AXMediaViewerModuleConfig): ModuleWithProviders<AXMediaViewerModule>;
|
23
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXMediaViewerModule, [{ optional: true; }]>;
|
24
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<AXMediaViewerModule, [typeof i1.AXMediaViewerContainerComponent, typeof i2.AXMediaViewerSliderComponent, typeof i3.AXMediaViewerThumbnailComponent, typeof i4.AXAudioPlayerComponent, typeof i5.AXImageViewerComponent, typeof i6.AXPdfReaderComponent, typeof i7.AXVideoPlayerComponent], [typeof i8.CommonModule, typeof i9.AXButtonModule, typeof i10.AXDecoratorModule, typeof i11.CdkPortalOutlet, typeof i12.FormsModule], [typeof i1.AXMediaViewerContainerComponent, typeof i2.AXMediaViewerSliderComponent, typeof i3.AXMediaViewerThumbnailComponent, typeof i4.AXAudioPlayerComponent, typeof i5.AXImageViewerComponent, typeof i6.AXPdfReaderComponent, typeof i7.AXVideoPlayerComponent]>;
|
25
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<AXMediaViewerModule>;
|
26
|
+
}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { AXMediaViewerData } from './media-viewer-types';
|
2
|
+
import * as i0 from "@angular/core";
|
3
|
+
export declare class AXMediaViewerService {
|
4
|
+
dataArray: import("@angular/core").WritableSignal<AXMediaViewerData[]>;
|
5
|
+
selectedIndex: import("@angular/core").WritableSignal<number>;
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXMediaViewerService, never>;
|
7
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXMediaViewerService>;
|
8
|
+
}
|