@dereekb/dbx-web 12.4.5 → 12.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/action/action.confirm.directive.mjs +4 -4
- package/esm2022/lib/action/snackbar/action.snackbar.component.mjs +2 -2
- package/esm2022/lib/action/transition/transition.safety.dialog.component.mjs +2 -2
- package/esm2022/lib/button/button.component.mjs +46 -20
- package/esm2022/lib/button/progress/abstract.progress.button.directive.mjs +53 -7
- package/esm2022/lib/button/progress/bar.button.component.mjs +3 -3
- package/esm2022/lib/button/progress/button.progress.config.mjs +1 -1
- package/esm2022/lib/button/progress/spinner.button.component.mjs +3 -3
- package/esm2022/lib/extension/download/text/download.text.component.mjs +2 -2
- package/esm2022/lib/interaction/filter/filter.wrapper.component.mjs +2 -2
- package/esm2022/lib/interaction/index.mjs +2 -1
- package/esm2022/lib/interaction/popup/popup.controls.buttons.component.mjs +1 -1
- package/esm2022/lib/interaction/upload/abstract.upload.component.mjs +85 -0
- package/esm2022/lib/interaction/upload/index.mjs +8 -0
- package/esm2022/lib/interaction/upload/upload.accept.mjs +72 -0
- package/esm2022/lib/interaction/upload/upload.action.directive.mjs +36 -0
- package/esm2022/lib/interaction/upload/upload.action.mjs +18 -0
- package/esm2022/lib/interaction/upload/upload.area.component.mjs +138 -0
- package/esm2022/lib/interaction/upload/upload.button.component.mjs +81 -0
- package/esm2022/lib/interaction/upload/upload.component.mjs +116 -0
- package/esm2022/lib/layout/avatar/avatar.component.mjs +76 -0
- package/esm2022/lib/layout/avatar/avatar.mjs +7 -0
- package/esm2022/lib/layout/avatar/avatar.service.mjs +78 -0
- package/esm2022/lib/layout/avatar/avatar.view.component.mjs +89 -0
- package/esm2022/lib/layout/avatar/index.mjs +4 -0
- package/esm2022/lib/layout/content/content.pit.directive.mjs +34 -4
- package/esm2022/lib/layout/index.mjs +2 -1
- package/esm2022/lib/loading/basic-loading.component.mjs +32 -5
- package/esm2022/lib/loading/index.mjs +2 -1
- package/esm2022/lib/loading/loading.component.mjs +11 -4
- package/esm2022/lib/loading/loading.mjs +2 -0
- package/fesm2022/dereekb-dbx-web.mjs +930 -47
- package/fesm2022/dereekb-dbx-web.mjs.map +1 -1
- package/lib/action/action.confirm.directive.d.ts +1 -1
- package/lib/button/_button.scss +2 -1
- package/lib/button/button.component.d.ts +5 -1
- package/lib/button/progress/abstract.progress.button.directive.d.ts +9 -5
- package/lib/button/progress/button.progress.config.d.ts +6 -2
- package/lib/interaction/_interaction.scss +4 -0
- package/lib/interaction/index.d.ts +1 -0
- package/lib/interaction/upload/_upload.scss +100 -0
- package/lib/interaction/upload/abstract.upload.component.d.ts +54 -0
- package/lib/interaction/upload/index.d.ts +7 -0
- package/lib/interaction/upload/upload.accept.d.ts +87 -0
- package/lib/interaction/upload/upload.action.d.ts +17 -0
- package/lib/interaction/upload/upload.action.directive.d.ts +17 -0
- package/lib/interaction/upload/upload.area.component.d.ts +22 -0
- package/lib/interaction/upload/upload.button.component.d.ts +24 -0
- package/lib/interaction/upload/upload.component.d.ts +58 -0
- package/lib/layout/_layout.scss +4 -0
- package/lib/layout/avatar/_avatar.scss +102 -0
- package/lib/layout/avatar/avatar.component.d.ts +32 -0
- package/lib/layout/avatar/avatar.d.ts +54 -0
- package/lib/layout/avatar/avatar.service.d.ts +66 -0
- package/lib/layout/avatar/avatar.view.component.d.ts +24 -0
- package/lib/layout/avatar/index.d.ts +3 -0
- package/lib/layout/content/content.pit.directive.d.ts +6 -2
- package/lib/layout/index.d.ts +1 -0
- package/lib/loading/basic-loading.component.d.ts +13 -8
- package/lib/loading/index.d.ts +1 -0
- package/lib/loading/loading.component.d.ts +4 -3
- package/lib/loading/loading.d.ts +10 -0
- package/lib/style/_config.scss +17 -1
- package/lib/style/_root-variables.scss +4 -0
- package/lib/style/_variables.scss +8 -0
- package/package.json +1 -1
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, HostListener, input, output, signal } from '@angular/core';
|
|
2
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
3
|
+
import { fileArrayAcceptMatchFunction } from './upload.accept';
|
|
4
|
+
import { NgTemplateOutlet } from '@angular/common';
|
|
5
|
+
import { AbstractDbxFileUploadComponent } from './abstract.upload.component';
|
|
6
|
+
import { provideDbxFileUploadActionCompatable } from './upload.action';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/material/icon";
|
|
9
|
+
export class DbxFileUploadAreaComponent extends AbstractDbxFileUploadComponent {
|
|
10
|
+
icon = input();
|
|
11
|
+
text = input();
|
|
12
|
+
hint = input();
|
|
13
|
+
show = input(true);
|
|
14
|
+
hintSignal = computed(() => {
|
|
15
|
+
const hint = this.hint();
|
|
16
|
+
return typeof hint === 'string' ? hint : hint === true ? 'Drag to upload' : null;
|
|
17
|
+
});
|
|
18
|
+
filesChanged = output();
|
|
19
|
+
areaClicked = output();
|
|
20
|
+
areaDragActiveChanged = output();
|
|
21
|
+
dragOverStateSignal = signal(false);
|
|
22
|
+
filesAcceptedFunctionSignal = computed(() => fileArrayAcceptMatchFunction({ multiple: this.multipleSignal() ?? false, accept: this.acceptSignal() }));
|
|
23
|
+
onClick(evt) {
|
|
24
|
+
evt.stopPropagation();
|
|
25
|
+
if (!this.disabled()) {
|
|
26
|
+
this.areaClicked.emit();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
onDragOver(evt) {
|
|
30
|
+
evt.preventDefault();
|
|
31
|
+
evt.stopPropagation();
|
|
32
|
+
this.dragOverStateSignal.set(true);
|
|
33
|
+
this.areaDragActiveChanged.emit(true);
|
|
34
|
+
}
|
|
35
|
+
onDragLeave(evt) {
|
|
36
|
+
evt.preventDefault();
|
|
37
|
+
evt.stopPropagation();
|
|
38
|
+
this.dragOverStateSignal.set(false);
|
|
39
|
+
this.areaDragActiveChanged.emit(false);
|
|
40
|
+
}
|
|
41
|
+
onDrop(evt) {
|
|
42
|
+
evt.preventDefault();
|
|
43
|
+
evt.stopPropagation();
|
|
44
|
+
this.dragOverStateSignal.set(false);
|
|
45
|
+
if (!this.disabled()) {
|
|
46
|
+
const allFiles = evt.dataTransfer?.files;
|
|
47
|
+
if (allFiles) {
|
|
48
|
+
const matchResult = this.filesAcceptedFunctionSignal()(Array.from(allFiles));
|
|
49
|
+
this.filesChanged.emit({ allFiles: matchResult.input, matchResult });
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFileUploadAreaComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
54
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DbxFileUploadAreaComponent, isStandalone: true, selector: "dbx-file-upload-area", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, show: { classPropertyName: "show", publicName: "show", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { filesChanged: "filesChanged", areaClicked: "areaClicked", areaDragActiveChanged: "areaDragActiveChanged" }, host: { listeners: { "click": "onClick($event)", "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)", "drop": "onDrop($event)" }, properties: { "class.dbx-file-upload-area-with-hint": "hintSignal()", "class.dbx-file-upload-area-disabled": "disabledSignal()", "class.dbx-file-upload-area-working": "isWorkingSignal()", "class.dbx-file-upload-area-drag-over": "!disabledSignal() && dragOverStateSignal()" }, classAttribute: "dbx-file-upload-area dbx-block" }, providers: provideDbxFileUploadActionCompatable(DbxFileUploadAreaComponent), usesInheritance: true, ngImport: i0, template: `
|
|
55
|
+
@if (show()) {
|
|
56
|
+
<div class="dbx-file-upload-area-content">
|
|
57
|
+
<div class="dbx-file-upload-area-content-text">
|
|
58
|
+
@if (icon() != null) {
|
|
59
|
+
<mat-icon>{{ icon() }}</mat-icon>
|
|
60
|
+
}
|
|
61
|
+
@if (text() != null) {
|
|
62
|
+
<span>{{ text() }}</span>
|
|
63
|
+
}
|
|
64
|
+
</div>
|
|
65
|
+
<div class="dbx-file-upload-area-content-wrapped">
|
|
66
|
+
<ng-template [ngTemplateOutlet]="contentTemplate"></ng-template>
|
|
67
|
+
</div>
|
|
68
|
+
</div>
|
|
69
|
+
@if (hintSignal()) {
|
|
70
|
+
<div class="dbx-file-upload-area-content-hint dbx-hint dbx-small">{{ hintSignal() }}</div>
|
|
71
|
+
}
|
|
72
|
+
} @else {
|
|
73
|
+
<ng-template [ngTemplateOutlet]="contentTemplate"></ng-template>
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
<!-- Content Template -->
|
|
77
|
+
<ng-template #contentTemplate>
|
|
78
|
+
<ng-content></ng-content>
|
|
79
|
+
</ng-template>
|
|
80
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
81
|
+
}
|
|
82
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFileUploadAreaComponent, decorators: [{
|
|
83
|
+
type: Component,
|
|
84
|
+
args: [{
|
|
85
|
+
selector: 'dbx-file-upload-area',
|
|
86
|
+
template: `
|
|
87
|
+
@if (show()) {
|
|
88
|
+
<div class="dbx-file-upload-area-content">
|
|
89
|
+
<div class="dbx-file-upload-area-content-text">
|
|
90
|
+
@if (icon() != null) {
|
|
91
|
+
<mat-icon>{{ icon() }}</mat-icon>
|
|
92
|
+
}
|
|
93
|
+
@if (text() != null) {
|
|
94
|
+
<span>{{ text() }}</span>
|
|
95
|
+
}
|
|
96
|
+
</div>
|
|
97
|
+
<div class="dbx-file-upload-area-content-wrapped">
|
|
98
|
+
<ng-template [ngTemplateOutlet]="contentTemplate"></ng-template>
|
|
99
|
+
</div>
|
|
100
|
+
</div>
|
|
101
|
+
@if (hintSignal()) {
|
|
102
|
+
<div class="dbx-file-upload-area-content-hint dbx-hint dbx-small">{{ hintSignal() }}</div>
|
|
103
|
+
}
|
|
104
|
+
} @else {
|
|
105
|
+
<ng-template [ngTemplateOutlet]="contentTemplate"></ng-template>
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
<!-- Content Template -->
|
|
109
|
+
<ng-template #contentTemplate>
|
|
110
|
+
<ng-content></ng-content>
|
|
111
|
+
</ng-template>
|
|
112
|
+
`,
|
|
113
|
+
host: {
|
|
114
|
+
class: 'dbx-file-upload-area dbx-block',
|
|
115
|
+
'[class.dbx-file-upload-area-with-hint]': 'hintSignal()',
|
|
116
|
+
'[class.dbx-file-upload-area-disabled]': 'disabledSignal()',
|
|
117
|
+
'[class.dbx-file-upload-area-working]': 'isWorkingSignal()',
|
|
118
|
+
'[class.dbx-file-upload-area-drag-over]': '!disabledSignal() && dragOverStateSignal()'
|
|
119
|
+
},
|
|
120
|
+
providers: provideDbxFileUploadActionCompatable(DbxFileUploadAreaComponent),
|
|
121
|
+
imports: [MatIconModule, NgTemplateOutlet],
|
|
122
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
123
|
+
standalone: true
|
|
124
|
+
}]
|
|
125
|
+
}], propDecorators: { onClick: [{
|
|
126
|
+
type: HostListener,
|
|
127
|
+
args: ['click', ['$event']]
|
|
128
|
+
}], onDragOver: [{
|
|
129
|
+
type: HostListener,
|
|
130
|
+
args: ['dragover', ['$event']]
|
|
131
|
+
}], onDragLeave: [{
|
|
132
|
+
type: HostListener,
|
|
133
|
+
args: ['dragleave', ['$event']]
|
|
134
|
+
}], onDrop: [{
|
|
135
|
+
type: HostListener,
|
|
136
|
+
args: ['drop', ['$event']]
|
|
137
|
+
}] } });
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLmFyZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LXdlYi9zcmMvbGliL2ludGVyYWN0aW9uL3VwbG9hZC91cGxvYWQuYXJlYS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsOEJBQThCLEVBQWtDLE1BQU0sNkJBQTZCLENBQUM7QUFDN0csT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQTZDdkUsTUFBTSxPQUFPLDBCQUEyQixTQUFRLDhCQUE4QjtJQUNuRSxJQUFJLEdBQUcsS0FBSyxFQUFpQixDQUFDO0lBQzlCLElBQUksR0FBRyxLQUFLLEVBQWlCLENBQUM7SUFDOUIsSUFBSSxHQUFHLEtBQUssRUFBMkIsQ0FBQztJQUN4QyxJQUFJLEdBQUcsS0FBSyxDQUFVLElBQUksQ0FBQyxDQUFDO0lBRTVCLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ2xDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixPQUFPLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ25GLENBQUMsQ0FBQyxDQUFDO0lBRU0sWUFBWSxHQUFHLE1BQU0sRUFBc0MsQ0FBQztJQUM1RCxXQUFXLEdBQUcsTUFBTSxFQUFRLENBQUM7SUFDN0IscUJBQXFCLEdBQUcsTUFBTSxFQUFXLENBQUM7SUFFMUMsbUJBQW1CLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQzdDLDJCQUEyQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFHL0osT0FBTyxDQUFDLEdBQWU7UUFDckIsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXRCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBR0QsVUFBVSxDQUFDLEdBQWM7UUFDdkIsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3JCLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUdELFdBQVcsQ0FBQyxHQUFjO1FBQ3hCLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNyQixHQUFHLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFHRCxNQUFNLENBQUMsR0FBYztRQUNuQixHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDckIsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDO1lBRXpDLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUM3RSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDdkUsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO3dHQXpEVSwwQkFBMEI7NEZBQTFCLDBCQUEwQixxbkNBTDFCLG9DQUFvQyxDQUFDLDBCQUEwQixDQUFDLGlEQWxDakU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJULDJEQVNTLGFBQWEsb0xBQUUsZ0JBQWdCOzs0RkFJOUIsMEJBQTBCO2tCQXpDdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJUO29CQUNELElBQUksRUFBRTt3QkFDSixLQUFLLEVBQUUsZ0NBQWdDO3dCQUN2Qyx3Q0FBd0MsRUFBRSxjQUFjO3dCQUN4RCx1Q0FBdUMsRUFBRSxrQkFBa0I7d0JBQzNELHNDQUFzQyxFQUFFLG1CQUFtQjt3QkFDM0Qsd0NBQXdDLEVBQUUsNENBQTRDO3FCQUN2RjtvQkFDRCxTQUFTLEVBQUUsb0NBQW9DLDRCQUE0QjtvQkFDM0UsT0FBTyxFQUFFLENBQUMsYUFBYSxFQUFFLGdCQUFnQixDQUFDO29CQUMxQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzhCQW9CQyxPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVVqQyxVQUFVO3NCQURULFlBQVk7dUJBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVNwQyxXQUFXO3NCQURWLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVNyQyxNQUFNO3NCQURMLFlBQVk7dUJBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIEhvc3RMaXN0ZW5lciwgaW5wdXQsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgZmlsZUFycmF5QWNjZXB0TWF0Y2hGdW5jdGlvbiB9IGZyb20gJy4vdXBsb2FkLmFjY2VwdCc7XG5pbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFic3RyYWN0RGJ4RmlsZVVwbG9hZENvbXBvbmVudCwgRGJ4RmlsZVVwbG9hZEZpbGVzQ2hhbmdlZEV2ZW50IH0gZnJvbSAnLi9hYnN0cmFjdC51cGxvYWQuY29tcG9uZW50JztcbmltcG9ydCB7IHByb3ZpZGVEYnhGaWxlVXBsb2FkQWN0aW9uQ29tcGF0YWJsZSB9IGZyb20gJy4vdXBsb2FkLmFjdGlvbic7XG5cbmV4cG9ydCB0eXBlIERieEZpbGVVcGxvYWRBcmVhRmlsZXNDaGFuZ2VkRXZlbnQgPSBEYnhGaWxlVXBsb2FkRmlsZXNDaGFuZ2VkRXZlbnQ7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RieC1maWxlLXVwbG9hZC1hcmVhJyxcbiAgdGVtcGxhdGU6IGBcbiAgICBAaWYgKHNob3coKSkge1xuICAgICAgPGRpdiBjbGFzcz1cImRieC1maWxlLXVwbG9hZC1hcmVhLWNvbnRlbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRieC1maWxlLXVwbG9hZC1hcmVhLWNvbnRlbnQtdGV4dFwiPlxuICAgICAgICAgIEBpZiAoaWNvbigpICE9IG51bGwpIHtcbiAgICAgICAgICAgIDxtYXQtaWNvbj57eyBpY29uKCkgfX08L21hdC1pY29uPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKHRleHQoKSAhPSBudWxsKSB7XG4gICAgICAgICAgICA8c3Bhbj57eyB0ZXh0KCkgfX08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRieC1maWxlLXVwbG9hZC1hcmVhLWNvbnRlbnQtd3JhcHBlZFwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250ZW50VGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgQGlmIChoaW50U2lnbmFsKCkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImRieC1maWxlLXVwbG9hZC1hcmVhLWNvbnRlbnQtaGludCBkYngtaGludCBkYngtc21hbGxcIj57eyBoaW50U2lnbmFsKCkgfX08L2Rpdj5cbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250ZW50VGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgIH1cblxuICAgIDwhLS0gQ29udGVudCBUZW1wbGF0ZSAtLT5cbiAgICA8bmctdGVtcGxhdGUgI2NvbnRlbnRUZW1wbGF0ZT5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICBgLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdkYngtZmlsZS11cGxvYWQtYXJlYSBkYngtYmxvY2snLFxuICAgICdbY2xhc3MuZGJ4LWZpbGUtdXBsb2FkLWFyZWEtd2l0aC1oaW50XSc6ICdoaW50U2lnbmFsKCknLFxuICAgICdbY2xhc3MuZGJ4LWZpbGUtdXBsb2FkLWFyZWEtZGlzYWJsZWRdJzogJ2Rpc2FibGVkU2lnbmFsKCknLFxuICAgICdbY2xhc3MuZGJ4LWZpbGUtdXBsb2FkLWFyZWEtd29ya2luZ10nOiAnaXNXb3JraW5nU2lnbmFsKCknLFxuICAgICdbY2xhc3MuZGJ4LWZpbGUtdXBsb2FkLWFyZWEtZHJhZy1vdmVyXSc6ICchZGlzYWJsZWRTaWduYWwoKSAmJiBkcmFnT3ZlclN0YXRlU2lnbmFsKCknXG4gIH0sXG4gIHByb3ZpZGVyczogcHJvdmlkZURieEZpbGVVcGxvYWRBY3Rpb25Db21wYXRhYmxlKERieEZpbGVVcGxvYWRBcmVhQ29tcG9uZW50KSxcbiAgaW1wb3J0czogW01hdEljb25Nb2R1bGUsIE5nVGVtcGxhdGVPdXRsZXRdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBEYnhGaWxlVXBsb2FkQXJlYUNvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RGJ4RmlsZVVwbG9hZENvbXBvbmVudCB7XG4gIHJlYWRvbmx5IGljb24gPSBpbnB1dDxNYXliZTxzdHJpbmc+PigpO1xuICByZWFkb25seSB0ZXh0ID0gaW5wdXQ8TWF5YmU8c3RyaW5nPj4oKTtcbiAgcmVhZG9ubHkgaGludCA9IGlucHV0PE1heWJlPHN0cmluZyB8IGJvb2xlYW4+PigpO1xuICByZWFkb25seSBzaG93ID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgcmVhZG9ubHkgaGludFNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBoaW50ID0gdGhpcy5oaW50KCk7XG4gICAgcmV0dXJuIHR5cGVvZiBoaW50ID09PSAnc3RyaW5nJyA/IGhpbnQgOiBoaW50ID09PSB0cnVlID8gJ0RyYWcgdG8gdXBsb2FkJyA6IG51bGw7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGZpbGVzQ2hhbmdlZCA9IG91dHB1dDxEYnhGaWxlVXBsb2FkQXJlYUZpbGVzQ2hhbmdlZEV2ZW50PigpO1xuICByZWFkb25seSBhcmVhQ2xpY2tlZCA9IG91dHB1dDx2b2lkPigpO1xuICByZWFkb25seSBhcmVhRHJhZ0FjdGl2ZUNoYW5nZWQgPSBvdXRwdXQ8Ym9vbGVhbj4oKTtcblxuICByZWFkb25seSBkcmFnT3ZlclN0YXRlU2lnbmFsID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgZmlsZXNBY2NlcHRlZEZ1bmN0aW9uU2lnbmFsID0gY29tcHV0ZWQoKCkgPT4gZmlsZUFycmF5QWNjZXB0TWF0Y2hGdW5jdGlvbih7IG11bHRpcGxlOiB0aGlzLm11bHRpcGxlU2lnbmFsKCkgPz8gZmFsc2UsIGFjY2VwdDogdGhpcy5hY2NlcHRTaWduYWwoKSB9KSk7XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICBvbkNsaWNrKGV2dDogTW91c2VFdmVudCkge1xuICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGlmICghdGhpcy5kaXNhYmxlZCgpKSB7XG4gICAgICB0aGlzLmFyZWFDbGlja2VkLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcmFnb3ZlcicsIFsnJGV2ZW50J10pXG4gIG9uRHJhZ092ZXIoZXZ0OiBEcmFnRXZlbnQpIHtcbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5kcmFnT3ZlclN0YXRlU2lnbmFsLnNldCh0cnVlKTtcbiAgICB0aGlzLmFyZWFEcmFnQWN0aXZlQ2hhbmdlZC5lbWl0KHRydWUpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZHJhZ2xlYXZlJywgWyckZXZlbnQnXSlcbiAgb25EcmFnTGVhdmUoZXZ0OiBEcmFnRXZlbnQpIHtcbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5kcmFnT3ZlclN0YXRlU2lnbmFsLnNldChmYWxzZSk7XG4gICAgdGhpcy5hcmVhRHJhZ0FjdGl2ZUNoYW5nZWQuZW1pdChmYWxzZSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcm9wJywgWyckZXZlbnQnXSlcbiAgb25Ecm9wKGV2dDogRHJhZ0V2ZW50KSB7XG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuZHJhZ092ZXJTdGF0ZVNpZ25hbC5zZXQoZmFsc2UpO1xuXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKCkpIHtcbiAgICAgIGNvbnN0IGFsbEZpbGVzID0gZXZ0LmRhdGFUcmFuc2Zlcj8uZmlsZXM7XG5cbiAgICAgIGlmIChhbGxGaWxlcykge1xuICAgICAgICBjb25zdCBtYXRjaFJlc3VsdCA9IHRoaXMuZmlsZXNBY2NlcHRlZEZ1bmN0aW9uU2lnbmFsKCkoQXJyYXkuZnJvbShhbGxGaWxlcykpO1xuICAgICAgICB0aGlzLmZpbGVzQ2hhbmdlZC5lbWl0KHsgYWxsRmlsZXM6IG1hdGNoUmVzdWx0LmlucHV0LCBtYXRjaFJlc3VsdCB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, ElementRef, input, output, viewChild } from '@angular/core';
|
|
2
|
+
import { fileAcceptString, fileArrayAcceptMatchFunction } from './upload.accept';
|
|
3
|
+
import { DbxButtonComponent } from '../../button/button.component';
|
|
4
|
+
import { AbstractDbxFileUploadComponent } from './abstract.upload.component';
|
|
5
|
+
import { provideDbxFileUploadActionCompatable } from './upload.action';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class DbxFileUploadButtonComponent extends AbstractDbxFileUploadComponent {
|
|
8
|
+
fileInput = viewChild.required('fileInput', { read: ElementRef });
|
|
9
|
+
text = input();
|
|
10
|
+
icon = input();
|
|
11
|
+
buttonStyle = input();
|
|
12
|
+
filesChanged = output();
|
|
13
|
+
buttonAcceptSignal = computed(() => {
|
|
14
|
+
const accept = this.acceptSignal();
|
|
15
|
+
return typeof accept === 'function' ? undefined : fileAcceptString(accept);
|
|
16
|
+
});
|
|
17
|
+
buttonMultipleSignal = computed(() => this.multipleSignal() ?? false);
|
|
18
|
+
filesAcceptedFunctionSignal = computed(() => {
|
|
19
|
+
const accept = this.acceptSignal();
|
|
20
|
+
const multiple = this.buttonMultipleSignal();
|
|
21
|
+
return typeof accept === 'function' ? fileArrayAcceptMatchFunction({ multiple, accept }) : undefined;
|
|
22
|
+
});
|
|
23
|
+
/**
|
|
24
|
+
* The HTML attribute should not be added if it is false, so we return null.
|
|
25
|
+
*/
|
|
26
|
+
multipleAttributeSignal = computed(() => (this.buttonMultipleSignal() ? '' : null));
|
|
27
|
+
openInput() {
|
|
28
|
+
const inputRef = this.fileInput();
|
|
29
|
+
const input = inputRef.nativeElement;
|
|
30
|
+
const isDisabled = this.disabledSignal();
|
|
31
|
+
if (!isDisabled) {
|
|
32
|
+
input.click();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
fileInputChanged() {
|
|
36
|
+
const inputRef = this.fileInput();
|
|
37
|
+
const input = inputRef.nativeElement;
|
|
38
|
+
const isDisabled = this.disabledSignal();
|
|
39
|
+
if (!isDisabled) {
|
|
40
|
+
const allFiles = input.files ? Array.from(input.files) : [];
|
|
41
|
+
const fileAcceptFunction = this.filesAcceptedFunctionSignal();
|
|
42
|
+
if (fileAcceptFunction) {
|
|
43
|
+
const matchResult = fileAcceptFunction(allFiles);
|
|
44
|
+
this.filesChanged.emit({ allFiles, matchResult });
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
// if not using a filesAcceptedFunction, then accept all files as the input should have filtered them
|
|
48
|
+
const multiple = this.buttonMultipleSignal();
|
|
49
|
+
this.filesChanged.emit({ allFiles, matchResult: { multiple, input: allFiles, accepted: allFiles, rejected: [], acceptedType: allFiles, rejectedType: [] } });
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// reset the input value
|
|
53
|
+
if (input.value) {
|
|
54
|
+
input.value = '';
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFileUploadButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
58
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.13", type: DbxFileUploadButtonComponent, isStandalone: true, selector: "dbx-file-upload-button", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, buttonStyle: { classPropertyName: "buttonStyle", publicName: "buttonStyle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { filesChanged: "filesChanged" }, providers: provideDbxFileUploadActionCompatable(DbxFileUploadButtonComponent), viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true, read: ElementRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
|
|
59
|
+
<dbx-button [buttonStyle]="buttonStyle()" [text]="text()" [icon]="icon()" (buttonClick)="openInput()" [disabled]="disabledSignal()" [working]="workingSignal()">
|
|
60
|
+
<ng-content></ng-content>
|
|
61
|
+
</dbx-button>
|
|
62
|
+
<input #fileInput hidden type="file" [attr.accept]="buttonAcceptSignal() ?? null" [attr.multiple]="multipleAttributeSignal() ? '' : null" (change)="fileInputChanged()" />
|
|
63
|
+
`, isInline: true, dependencies: [{ kind: "component", type: DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "raised", "stroked", "flat", "iconOnly", "fab", "mode"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
64
|
+
}
|
|
65
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFileUploadButtonComponent, decorators: [{
|
|
66
|
+
type: Component,
|
|
67
|
+
args: [{
|
|
68
|
+
selector: 'dbx-file-upload-button',
|
|
69
|
+
template: `
|
|
70
|
+
<dbx-button [buttonStyle]="buttonStyle()" [text]="text()" [icon]="icon()" (buttonClick)="openInput()" [disabled]="disabledSignal()" [working]="workingSignal()">
|
|
71
|
+
<ng-content></ng-content>
|
|
72
|
+
</dbx-button>
|
|
73
|
+
<input #fileInput hidden type="file" [attr.accept]="buttonAcceptSignal() ?? null" [attr.multiple]="multipleAttributeSignal() ? '' : null" (change)="fileInputChanged()" />
|
|
74
|
+
`,
|
|
75
|
+
providers: provideDbxFileUploadActionCompatable(DbxFileUploadButtonComponent),
|
|
76
|
+
imports: [DbxButtonComponent],
|
|
77
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
78
|
+
standalone: true
|
|
79
|
+
}]
|
|
80
|
+
}] });
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLmJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtd2ViL3NyYy9saWIvaW50ZXJhY3Rpb24vdXBsb2FkL3VwbG9hZC5idXR0b24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsa0JBQWtCLEVBQWtCLE1BQU0sK0JBQStCLENBQUM7QUFFbkYsT0FBTyxFQUFFLDhCQUE4QixFQUFrQyxNQUFNLDZCQUE2QixDQUFDO0FBQzdHLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQWlCdkUsTUFBTSxPQUFPLDRCQUE2QixTQUFRLDhCQUE4QjtJQUNyRSxTQUFTLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBdUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFFeEcsSUFBSSxHQUFHLEtBQUssRUFBaUIsQ0FBQztJQUM5QixJQUFJLEdBQUcsS0FBSyxFQUFpQixDQUFDO0lBQzlCLFdBQVcsR0FBRyxLQUFLLEVBQXlCLENBQUM7SUFFN0MsWUFBWSxHQUFHLE1BQU0sRUFBd0MsQ0FBQztJQUU5RCxrQkFBa0IsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQzFDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNuQyxPQUFPLE9BQU8sTUFBTSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxN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QUFRLEVBQUU7Ozs7O0dBS1Q7b0JBQ0QsU0FBUyxFQUFFLG9DQUFvQyw4QkFBOEI7b0JBQzdFLE9BQU8sRUFBRSxDQUFDLGtCQUFrQixDQUFDO29CQUM3QixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIEVsZW1lbnRSZWYsIGlucHV0LCBvdXRwdXQsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmlsZUFjY2VwdFN0cmluZywgZmlsZUFycmF5QWNjZXB0TWF0Y2hGdW5jdGlvbiB9IGZyb20gJy4vdXBsb2FkLmFjY2VwdCc7XG5pbXBvcnQgeyBEYnhCdXR0b25Db21wb25lbnQsIERieEJ1dHRvblN0eWxlIH0gZnJvbSAnLi4vLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF5YmUgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IEFic3RyYWN0RGJ4RmlsZVVwbG9hZENvbXBvbmVudCwgRGJ4RmlsZVVwbG9hZEZpbGVzQ2hhbmdlZEV2ZW50IH0gZnJvbSAnLi9hYnN0cmFjdC51cGxvYWQuY29tcG9uZW50JztcbmltcG9ydCB7IHByb3ZpZGVEYnhGaWxlVXBsb2FkQWN0aW9uQ29tcGF0YWJsZSB9IGZyb20gJy4vdXBsb2FkLmFjdGlvbic7XG5cbmV4cG9ydCB0eXBlIERieEZpbGVVcGxvYWRCdXR0b25GaWxlc0NoYW5nZWRFdmVudCA9IERieEZpbGVVcGxvYWRGaWxlc0NoYW5nZWRFdmVudDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGJ4LWZpbGUtdXBsb2FkLWJ1dHRvbicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRieC1idXR0b24gW2J1dHRvblN0eWxlXT1cImJ1dHRvblN0eWxlKClcIiBbdGV4dF09XCJ0ZXh0KClcIiBbaWNvbl09XCJpY29uKClcIiAoYnV0dG9uQ2xpY2spPVwib3BlbklucHV0KClcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRTaWduYWwoKVwiIFt3b3JraW5nXT1cIndvcmtpbmdTaWduYWwoKVwiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGJ4LWJ1dHRvbj5cbiAgICA8aW5wdXQgI2ZpbGVJbnB1dCBoaWRkZW4gdHlwZT1cImZpbGVcIiBbYXR0ci5hY2NlcHRdPVwiYnV0dG9uQWNjZXB0U2lnbmFsKCkgPz8gbnVsbFwiIFthdHRyLm11bHRpcGxlXT1cIm11bHRpcGxlQXR0cmlidXRlU2lnbmFsKCkgPyAnJyA6IG51bGxcIiAoY2hhbmdlKT1cImZpbGVJbnB1dENoYW5nZWQoKVwiIC8+XG4gIGAsXG4gIHByb3ZpZGVyczogcHJvdmlkZURieEZpbGVVcGxvYWRBY3Rpb25Db21wYXRhYmxlKERieEZpbGVVcGxvYWRCdXR0b25Db21wb25lbnQpLFxuICBpbXBvcnRzOiBbRGJ4QnV0dG9uQ29tcG9uZW50XSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRGJ4RmlsZVVwbG9hZEJ1dHRvbkNvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RGJ4RmlsZVVwbG9hZENvbXBvbmVudCB7XG4gIHJlYWRvbmx5IGZpbGVJbnB1dCA9IHZpZXdDaGlsZC5yZXF1aXJlZDxzdHJpbmcsIEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4+KCdmaWxlSW5wdXQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSk7XG5cbiAgcmVhZG9ubHkgdGV4dCA9IGlucHV0PE1heWJlPHN0cmluZz4+KCk7XG4gIHJlYWRvbmx5IGljb24gPSBpbnB1dDxNYXliZTxzdHJpbmc+PigpO1xuICByZWFkb25seSBidXR0b25TdHlsZSA9IGlucHV0PE1heWJlPERieEJ1dHRvblN0eWxlPj4oKTtcblxuICByZWFkb25seSBmaWxlc0NoYW5nZWQgPSBvdXRwdXQ8RGJ4RmlsZVVwbG9hZEJ1dHRvbkZpbGVzQ2hhbmdlZEV2ZW50PigpO1xuXG4gIHJlYWRvbmx5IGJ1dHRvbkFjY2VwdFNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBhY2NlcHQgPSB0aGlzLmFjY2VwdFNpZ25hbCgpO1xuICAgIHJldHVybiB0eXBlb2YgYWNjZXB0ID09PSAnZnVuY3Rpb24nID8gdW5kZWZpbmVkIDogZmlsZUFjY2VwdFN0cmluZyhhY2NlcHQpO1xuICB9KTtcblxuICByZWFkb25seSBidXR0b25NdWx0aXBsZVNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMubXVsdGlwbGVTaWduYWwoKSA/PyBmYWxzZSk7XG5cbiAgcmVhZG9ubHkgZmlsZXNBY2NlcHRlZEZ1bmN0aW9uU2lnbmFsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGFjY2VwdCA9IHRoaXMuYWNjZXB0U2lnbmFsKCk7XG4gICAgY29uc3QgbXVsdGlwbGUgPSB0aGlzLmJ1dHRvbk11bHRpcGxlU2lnbmFsKCk7XG4gICAgcmV0dXJuIHR5cGVvZiBhY2NlcHQgPT09ICdmdW5jdGlvbicgPyBmaWxlQXJyYXlBY2NlcHRNYXRjaEZ1bmN0aW9uKHsgbXVsdGlwbGUsIGFjY2VwdCB9KSA6IHVuZGVmaW5lZDtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFRoZSBIVE1MIGF0dHJpYnV0ZSBzaG91bGQgbm90IGJlIGFkZGVkIGlmIGl0IGlzIGZhbHNlLCBzbyB3ZSByZXR1cm4gbnVsbC5cbiAgICovXG4gIHJlYWRvbmx5IG11bHRpcGxlQXR0cmlidXRlU2lnbmFsID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMuYnV0dG9uTXVsdGlwbGVTaWduYWwoKSA/ICcnIDogbnVsbCkpO1xuXG4gIG9wZW5JbnB1dCgpIHtcbiAgICBjb25zdCBpbnB1dFJlZiA9IHRoaXMuZmlsZUlucHV0KCk7XG4gICAgY29uc3QgaW5wdXQgPSBpbnB1dFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgY29uc3QgaXNEaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWRTaWduYWwoKTtcblxuICAgIGlmICghaXNEaXNhYmxlZCkge1xuICAgICAgaW5wdXQuY2xpY2soKTtcbiAgICB9XG4gIH1cblxuICBmaWxlSW5wdXRDaGFuZ2VkKCkge1xuICAgIGNvbnN0IGlucHV0UmVmID0gdGhpcy5maWxlSW5wdXQoKTtcbiAgICBjb25zdCBpbnB1dCA9IGlucHV0UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgaXNEaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWRTaWduYWwoKTtcblxuICAgIGlmICghaXNEaXNhYmxlZCkge1xuICAgICAgY29uc3QgYWxsRmlsZXMgPSBpbnB1dC5maWxlcyA/IEFycmF5LmZyb20oaW5wdXQuZmlsZXMpIDogW107XG4gICAgICBjb25zdCBmaWxlQWNjZXB0RnVuY3Rpb24gPSB0aGlzLmZpbGVzQWNjZXB0ZWRGdW5jdGlvblNpZ25hbCgpO1xuXG4gICAgICBpZiAoZmlsZUFjY2VwdEZ1bmN0aW9uKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoUmVzdWx0ID0gZmlsZUFjY2VwdEZ1bmN0aW9uKGFsbEZpbGVzKTtcbiAgICAgICAgdGhpcy5maWxlc0NoYW5nZWQuZW1pdCh7IGFsbEZpbGVzLCBtYXRjaFJlc3VsdCB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGlmIG5vdCB1c2luZyBhIGZpbGVzQWNjZXB0ZWRGdW5jdGlvbiwgdGhlbiBhY2NlcHQgYWxsIGZpbGVzIGFzIHRoZSBpbnB1dCBzaG91bGQgaGF2ZSBmaWx0ZXJlZCB0aGVtXG4gICAgICAgIGNvbnN0IG11bHRpcGxlID0gdGhpcy5idXR0b25NdWx0aXBsZVNpZ25hbCgpO1xuICAgICAgICB0aGlzLmZpbGVzQ2hhbmdlZC5lbWl0KHsgYWxsRmlsZXMsIG1hdGNoUmVzdWx0OiB7IG11bHRpcGxlLCBpbnB1dDogYWxsRmlsZXMsIGFjY2VwdGVkOiBhbGxGaWxlcywgcmVqZWN0ZWQ6IFtdLCBhY2NlcHRlZFR5cGU6IGFsbEZpbGVzLCByZWplY3RlZFR5cGU6IFtdIH0gfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gcmVzZXQgdGhlIGlucHV0IHZhbHVlXG4gICAgaWYgKGlucHV0LnZhbHVlKSB7XG4gICAgICBpbnB1dC52YWx1ZSA9ICcnO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, input, output, viewChild } from '@angular/core';
|
|
2
|
+
import { DbxFileUploadButtonComponent } from './upload.button.component';
|
|
3
|
+
import { DbxFileUploadAreaComponent } from './upload.area.component';
|
|
4
|
+
import { NgTemplateOutlet } from '@angular/common';
|
|
5
|
+
import { AbstractDbxFileUploadComponent } from './abstract.upload.component';
|
|
6
|
+
import { provideDbxFileUploadActionCompatable } from './upload.action';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
/**
|
|
9
|
+
* Combines both the file upload area and button into a single component.
|
|
10
|
+
*/
|
|
11
|
+
export class DbxFileUploadComponent extends AbstractDbxFileUploadComponent {
|
|
12
|
+
config = input();
|
|
13
|
+
area = viewChild.required('area', { read: DbxFileUploadAreaComponent });
|
|
14
|
+
button = viewChild.required('button', { read: DbxFileUploadButtonComponent });
|
|
15
|
+
buttonStyle = input();
|
|
16
|
+
mode = input();
|
|
17
|
+
text = input(); // button text
|
|
18
|
+
icon = input(); // button icon
|
|
19
|
+
hint = input(); // area hint
|
|
20
|
+
modeSignal = computed(() => {
|
|
21
|
+
const config = this.config();
|
|
22
|
+
const mode = this.mode();
|
|
23
|
+
return config?.mode ?? mode ?? 'default';
|
|
24
|
+
});
|
|
25
|
+
showButtonSignal = computed(() => {
|
|
26
|
+
const mode = this.modeSignal();
|
|
27
|
+
return mode === 'button' || mode === 'default';
|
|
28
|
+
});
|
|
29
|
+
showAreaSignal = computed(() => {
|
|
30
|
+
const mode = this.modeSignal();
|
|
31
|
+
return mode === 'area' || mode === 'default';
|
|
32
|
+
});
|
|
33
|
+
clickAreaToUpload = input();
|
|
34
|
+
clickAreaToUploadSignal = computed(() => {
|
|
35
|
+
const config = this.config();
|
|
36
|
+
const clickAreaToUpload = this.clickAreaToUpload();
|
|
37
|
+
return config?.clickAreaToUpload ?? clickAreaToUpload;
|
|
38
|
+
});
|
|
39
|
+
buttonTextSignal = computed(() => {
|
|
40
|
+
const config = this.config();
|
|
41
|
+
const text = this.text();
|
|
42
|
+
return config?.button?.text ?? text;
|
|
43
|
+
});
|
|
44
|
+
buttonIconSignal = computed(() => {
|
|
45
|
+
const config = this.config();
|
|
46
|
+
const icon = this.icon();
|
|
47
|
+
return config?.button?.icon ?? icon;
|
|
48
|
+
});
|
|
49
|
+
areaTextSignal = computed(() => this.config()?.area?.text);
|
|
50
|
+
areaIconSignal = computed(() => this.config()?.area?.icon);
|
|
51
|
+
areaHintSignal = computed(() => {
|
|
52
|
+
const config = this.config();
|
|
53
|
+
const hint = this.hint();
|
|
54
|
+
return config?.area?.hint ?? hint;
|
|
55
|
+
});
|
|
56
|
+
uploadMultipleSignal = computed(() => {
|
|
57
|
+
const config = this.config();
|
|
58
|
+
const multiple = this.multipleSignal();
|
|
59
|
+
return multiple ?? config?.multiple;
|
|
60
|
+
});
|
|
61
|
+
uploadAcceptSignal = computed(() => {
|
|
62
|
+
const config = this.config();
|
|
63
|
+
const accept = this.acceptSignal();
|
|
64
|
+
return accept ?? config?.accept;
|
|
65
|
+
});
|
|
66
|
+
filesChanged = output();
|
|
67
|
+
areaClicked() {
|
|
68
|
+
const clickAreaToUpload = this.clickAreaToUploadSignal();
|
|
69
|
+
if (clickAreaToUpload) {
|
|
70
|
+
const button = this.button();
|
|
71
|
+
button.openInput();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
areaFilesChanged(event) {
|
|
75
|
+
this.filesChanged.emit(event);
|
|
76
|
+
}
|
|
77
|
+
buttonFilesChanged(event) {
|
|
78
|
+
this.filesChanged.emit(event);
|
|
79
|
+
}
|
|
80
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFileUploadComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
81
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DbxFileUploadComponent, isStandalone: true, selector: "dbx-file-upload", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, buttonStyle: { classPropertyName: "buttonStyle", publicName: "buttonStyle", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, clickAreaToUpload: { classPropertyName: "clickAreaToUpload", publicName: "clickAreaToUpload", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { filesChanged: "filesChanged" }, providers: provideDbxFileUploadActionCompatable(DbxFileUploadComponent), viewQueries: [{ propertyName: "area", first: true, predicate: ["area"], descendants: true, read: DbxFileUploadAreaComponent, isSignal: true }, { propertyName: "button", first: true, predicate: ["button"], descendants: true, read: DbxFileUploadButtonComponent, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
|
|
82
|
+
<dbx-file-upload-area #area [show]="showAreaSignal()" [hint]="areaHintSignal()" [text]="areaTextSignal()" [icon]="areaIconSignal()" [accept]="acceptSignal()" [multiple]="multipleSignal()" (filesChanged)="areaFilesChanged($event)" (areaClicked)="areaClicked()" [disabled]="disabledSignal()" [working]="workingSignal()">
|
|
83
|
+
<ng-content></ng-content>
|
|
84
|
+
@if (showButtonSignal()) {
|
|
85
|
+
<ng-template [ngTemplateOutlet]="buttonTemplate"></ng-template>
|
|
86
|
+
}
|
|
87
|
+
</dbx-file-upload-area>
|
|
88
|
+
<!-- Button Template -->
|
|
89
|
+
<ng-template #buttonTemplate>
|
|
90
|
+
<dbx-file-upload-button #button [text]="buttonTextSignal()" [icon]="buttonIconSignal()" [accept]="acceptSignal()" [multiple]="multipleSignal()" (filesChanged)="buttonFilesChanged($event)" [disabled]="disabledSignal()" [working]="workingSignal()" [buttonStyle]="buttonStyle()"></dbx-file-upload-button>
|
|
91
|
+
</ng-template>
|
|
92
|
+
`, isInline: true, dependencies: [{ kind: "component", type: DbxFileUploadAreaComponent, selector: "dbx-file-upload-area", inputs: ["icon", "text", "hint", "show"], outputs: ["filesChanged", "areaClicked", "areaDragActiveChanged"] }, { kind: "component", type: DbxFileUploadButtonComponent, selector: "dbx-file-upload-button", inputs: ["text", "icon", "buttonStyle"], outputs: ["filesChanged"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
93
|
+
}
|
|
94
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFileUploadComponent, decorators: [{
|
|
95
|
+
type: Component,
|
|
96
|
+
args: [{
|
|
97
|
+
selector: 'dbx-file-upload',
|
|
98
|
+
template: `
|
|
99
|
+
<dbx-file-upload-area #area [show]="showAreaSignal()" [hint]="areaHintSignal()" [text]="areaTextSignal()" [icon]="areaIconSignal()" [accept]="acceptSignal()" [multiple]="multipleSignal()" (filesChanged)="areaFilesChanged($event)" (areaClicked)="areaClicked()" [disabled]="disabledSignal()" [working]="workingSignal()">
|
|
100
|
+
<ng-content></ng-content>
|
|
101
|
+
@if (showButtonSignal()) {
|
|
102
|
+
<ng-template [ngTemplateOutlet]="buttonTemplate"></ng-template>
|
|
103
|
+
}
|
|
104
|
+
</dbx-file-upload-area>
|
|
105
|
+
<!-- Button Template -->
|
|
106
|
+
<ng-template #buttonTemplate>
|
|
107
|
+
<dbx-file-upload-button #button [text]="buttonTextSignal()" [icon]="buttonIconSignal()" [accept]="acceptSignal()" [multiple]="multipleSignal()" (filesChanged)="buttonFilesChanged($event)" [disabled]="disabledSignal()" [working]="workingSignal()" [buttonStyle]="buttonStyle()"></dbx-file-upload-button>
|
|
108
|
+
</ng-template>
|
|
109
|
+
`,
|
|
110
|
+
providers: provideDbxFileUploadActionCompatable(DbxFileUploadComponent),
|
|
111
|
+
imports: [DbxFileUploadAreaComponent, DbxFileUploadButtonComponent, NgTemplateOutlet],
|
|
112
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
113
|
+
standalone: true
|
|
114
|
+
}]
|
|
115
|
+
}] });
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC13ZWIvc3JjL2xpYi9pbnRlcmFjdGlvbi91cGxvYWQvdXBsb2FkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUl2RyxPQUFPLEVBQUUsNEJBQTRCLEVBQXdDLE1BQU0sMkJBQTJCLENBQUM7QUFDL0csT0FBTyxFQUFFLDBCQUEwQixFQUFzQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSw4QkFBOEIsRUFBa0MsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RyxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUEyQnZFOztHQUVHO0FBb0JILE1BQU0sT0FBTyxzQkFBdUIsU0FBUSw4QkFBOEI7SUFDL0QsTUFBTSxHQUFHLEtBQUssRUFBdUMsQ0FBQztJQUV0RCxJQUFJLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBcUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLDBCQUEwQixFQUFFLENBQUMsQ0FBQztJQUM1RyxNQUFNLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBdUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLDRCQUE0QixFQUFFLENBQUMsQ0FBQztJQUNwSCxXQUFXLEdBQUcsS0FBSyxFQUF5QixDQUFDO0lBRTdDLElBQUksR0FBRyxLQUFLLEVBQTRCLENBQUM7SUFDekMsSUFBSSxHQUFHLEtBQUssRUFBaUIsQ0FBQyxDQUFDLGNBQWM7SUFDN0MsSUFBSSxHQUFHLEtBQUssRUFBaUIsQ0FBQyxDQUFDLGNBQWM7SUFD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VUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGlucHV0LCBvdXRwdXQsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmlsZUFycmF5QWNjZXB0TWF0Y2hDb25maWcgfSBmcm9tICcuL3VwbG9hZC5hY2NlcHQnO1xuaW1wb3J0IHsgRGJ4QnV0dG9uU3R5bGUgfSBmcm9tICcuLi8uLi9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgRGJ4RmlsZVVwbG9hZEJ1dHRvbkNvbXBvbmVudCwgRGJ4RmlsZVVwbG9hZEJ1dHRvbkZpbGVzQ2hhbmdlZEV2ZW50IH0gZnJvbSAnLi91cGxvYWQuYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYnhGaWxlVXBsb2FkQXJlYUNvbXBvbmVudCwgRGJ4RmlsZVVwbG9hZEFyZWFGaWxlc0NoYW5nZWRFdmVudCB9IGZyb20gJy4vdXBsb2FkLmFyZWEuY29tcG9uZW50JztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWJzdHJhY3REYnhGaWxlVXBsb2FkQ29tcG9uZW50LCBEYnhGaWxlVXBsb2FkRmlsZXNDaGFuZ2VkRXZlbnQgfSBmcm9tICcuL2Fic3RyYWN0LnVwbG9hZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgcHJvdmlkZURieEZpbGVVcGxvYWRBY3Rpb25Db21wYXRhYmxlIH0gZnJvbSAnLi91cGxvYWQuYWN0aW9uJztcblxuZXhwb3J0IHR5cGUgRGJ4RmlsZVVwbG9hZE1vZGUgPSAnYXJlYScgfCAnYnV0dG9uJyB8ICdkZWZhdWx0JztcblxuZXhwb3J0IGludGVyZmFjZSBEYnhGaWxlVXBsb2FkQ29tcG9uZW50Q29uZmlnIHtcbiAgcmVhZG9ubHkgbW9kZT86IERieEZpbGVVcGxvYWRNb2RlO1xuICByZWFkb25seSBhY2NlcHQ/OiBNYXliZTxGaWxlQXJyYXlBY2NlcHRNYXRjaENvbmZpZ1snYWNjZXB0J10+O1xuICByZWFkb25seSBtdWx0aXBsZT86IE1heWJlPGJvb2xlYW4+O1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgYXJlYSB3aWxsIGJlIGNsaWNrYWJsZSB0byBvcGVuIHRoZSBmaWxlIHBpY2tlci5cbiAgICovXG4gIHJlYWRvbmx5IGNsaWNrQXJlYVRvVXBsb2FkPzogTWF5YmU8Ym9vbGVhbj47XG5cbiAgcmVhZG9ubHkgYXJlYT86IE1heWJlPHtcbiAgICByZWFkb25seSBpY29uPzogTWF5YmU8c3RyaW5nPjtcbiAgICByZWFkb25seSB0ZXh0PzogTWF5YmU8c3RyaW5nPjtcbiAgICByZWFkb25seSBoaW50PzogTWF5YmU8c3RyaW5nIHwgYm9vbGVhbj47XG4gIH0+O1xuXG4gIHJlYWRvbmx5IGJ1dHRvbj86IE1heWJlPHtcbiAgICByZWFkb25seSBpY29uPzogTWF5YmU8c3RyaW5nPjtcbiAgICByZWFkb25seSB0ZXh0PzogTWF5YmU8c3RyaW5nPjtcbiAgICByZWFkb25seSBzdHlsZT86IERieEJ1dHRvblN0eWxlO1xuICB9Pjtcbn1cblxuLyoqXG4gKiBDb21iaW5lcyBib3RoIHRoZSBmaWxlIHVwbG9hZCBhcmVhIGFuZCBidXR0b24gaW50byBhIHNpbmdsZSBjb21wb25lbnQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RieC1maWxlLXVwbG9hZCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRieC1maWxlLXVwbG9hZC1hcmVhICNhcmVhIFtzaG93XT1cInNob3dBcmVhU2lnbmFsKClcIiBbaGludF09XCJhcmVhSGludFNpZ25hbCgpXCIgW3RleHRdPVwiYXJlYVRleHRTaWduYWwoKVwiIFtpY29uXT1cImFyZWFJY29uU2lnbmFsKClcIiBbYWNjZXB0XT1cImFjY2VwdFNpZ25hbCgpXCIgW211bHRpcGxlXT1cIm11bHRpcGxlU2lnbmFsKClcIiAoZmlsZXNDaGFuZ2VkKT1cImFyZWFGaWxlc0NoYW5nZWQoJGV2ZW50KVwiIChhcmVhQ2xpY2tlZCk9XCJhcmVhQ2xpY2tlZCgpXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkU2lnbmFsKClcIiBbd29ya2luZ109XCJ3b3JraW5nU2lnbmFsKClcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgIEBpZiAoc2hvd0J1dHRvblNpZ25hbCgpKSB7XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJidXR0b25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICB9XG4gICAgPC9kYngtZmlsZS11cGxvYWQtYXJlYT5cbiAgICA8IS0tIEJ1dHRvbiBUZW1wbGF0ZSAtLT5cbiAgICA8bmctdGVtcGxhdGUgI2J1dHRvblRlbXBsYXRlPlxuICAgICAgPGRieC1maWxlLXVwbG9hZC1idXR0b24gI2J1dHRvbiBbdGV4dF09XCJidXR0b25UZXh0U2lnbmFsKClcIiBbaWNvbl09XCJidXR0b25JY29uU2lnbmFsKClcIiBbYWNjZXB0XT1cImFjY2VwdFNpZ25hbCgpXCIgW211bHRpcGxlXT1cIm11bHRpcGxlU2lnbmFsKClcIiAoZmlsZXNDaGFuZ2VkKT1cImJ1dHRvbkZpbGVzQ2hhbmdlZCgkZXZlbnQpXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkU2lnbmFsKClcIiBbd29ya2luZ109XCJ3b3JraW5nU2lnbmFsKClcIiBbYnV0dG9uU3R5bGVdPVwiYnV0dG9uU3R5bGUoKVwiPjwvZGJ4LWZpbGUtdXBsb2FkLWJ1dHRvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICBgLFxuICBwcm92aWRlcnM6IHByb3ZpZGVEYnhGaWxlVXBsb2FkQWN0aW9uQ29tcGF0YWJsZShEYnhGaWxlVXBsb2FkQ29tcG9uZW50KSxcbiAgaW1wb3J0czogW0RieEZpbGVVcGxvYWRBcmVhQ29tcG9uZW50LCBEYnhGaWxlVXBsb2FkQnV0dG9uQ29tcG9uZW50LCBOZ1RlbXBsYXRlT3V0bGV0XSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRGJ4RmlsZVVwbG9hZENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RGJ4RmlsZVVwbG9hZENvbXBvbmVudCB7XG4gIHJlYWRvbmx5IGNvbmZpZyA9IGlucHV0PE1heWJlPERieEZpbGVVcGxvYWRDb21wb25lbnRDb25maWc+PigpO1xuXG4gIHJlYWRvbmx5IGFyZWEgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8c3RyaW5nLCBEYnhGaWxlVXBsb2FkQXJlYUNvbXBvbmVudD4oJ2FyZWEnLCB7IHJlYWQ6IERieEZpbGVVcGxvYWRBcmVhQ29tcG9uZW50IH0pO1xuICByZWFkb25seSBidXR0b24gPSB2aWV3Q2hpbGQucmVxdWlyZWQ8c3RyaW5nLCBEYnhGaWxlVXBsb2FkQnV0dG9uQ29tcG9uZW50PignYnV0dG9uJywgeyByZWFkOiBEYnhGaWxlVXBsb2FkQnV0dG9uQ29tcG9uZW50IH0pO1xuICByZWFkb25seSBidXR0b25TdHlsZSA9IGlucHV0PE1heWJlPERieEJ1dHRvblN0eWxlPj4oKTtcblxuICByZWFkb25seSBtb2RlID0gaW5wdXQ8TWF5YmU8RGJ4RmlsZVVwbG9hZE1vZGU+PigpO1xuICByZWFkb25seSB0ZXh0ID0gaW5wdXQ8TWF5YmU8c3RyaW5nPj4oKTsgLy8gYnV0dG9uIHRleHRcbiAgcmVhZG9ubHkgaWNvbiA9IGlucHV0PE1heWJlPHN0cmluZz4+KCk7IC8vIGJ1dHRvbiBpY29uXG4gIHJlYWRvbmx5IGhpbnQgPSBpbnB1dDxNYXliZTxzdHJpbmcgfCBib29sZWFuPj4oKTsgLy8gYXJlYSBoaW50XG5cbiAgcmVhZG9ubHkgbW9kZVNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZygpO1xuICAgIGNvbnN0IG1vZGUgPSB0aGlzLm1vZGUoKTtcbiAgICByZXR1cm4gY29uZmlnPy5tb2RlID8/IG1vZGUgPz8gJ2RlZmF1bHQnO1xuICB9KTtcblxuICByZWFkb25seSBzaG93QnV0dG9uU2lnbmFsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG1vZGUgPSB0aGlzLm1vZGVTaWduYWwoKTtcbiAgICByZXR1cm4gbW9kZSA9PT0gJ2J1dHRvbicgfHwgbW9kZSA9PT0gJ2RlZmF1bHQnO1xuICB9KTtcblxuICByZWFkb25seSBzaG93QXJlYVNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBtb2RlID0gdGhpcy5tb2RlU2lnbmFsKCk7XG4gICAgcmV0dXJuIG1vZGUgPT09ICdhcmVhJyB8fCBtb2RlID09PSAnZGVmYXVsdCc7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGNsaWNrQXJlYVRvVXBsb2FkID0gaW5wdXQ8TWF5YmU8Ym9vbGVhbj4+KCk7XG4gIHJlYWRvbmx5IGNsaWNrQXJlYVRvVXBsb2FkU2lnbmFsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnKCk7XG4gICAgY29uc3QgY2xpY2tBcmVhVG9VcGxvYWQgPSB0aGlzLmNsaWNrQXJlYVRvVXBsb2FkKCk7XG4gICAgcmV0dXJuIGNvbmZpZz8uY2xpY2tBcmVhVG9VcGxvYWQgPz8gY2xpY2tBcmVhVG9VcGxvYWQ7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGJ1dHRvblRleHRTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWcoKTtcbiAgICBjb25zdCB0ZXh0ID0gdGhpcy50ZXh0KCk7XG4gICAgcmV0dXJuIGNvbmZpZz8uYnV0dG9uPy50ZXh0ID8/IHRleHQ7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGJ1dHRvbkljb25TaWduYWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWcoKTtcbiAgICBjb25zdCBpY29uID0gdGhpcy5pY29uKCk7XG4gICAgcmV0dXJuIGNvbmZpZz8uYnV0dG9uPy5pY29uID8/IGljb247XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGFyZWFUZXh0U2lnbmFsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKT8uYXJlYT8udGV4dCk7XG4gIHJlYWRvbmx5IGFyZWFJY29uU2lnbmFsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKT8uYXJlYT8uaWNvbik7XG4gIHJlYWRvbmx5IGFyZWFIaW50U2lnbmFsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnKCk7XG4gICAgY29uc3QgaGludCA9IHRoaXMuaGludCgpO1xuICAgIHJldHVybiBjb25maWc/LmFyZWE/LmhpbnQgPz8gaGludDtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgdXBsb2FkTXVsdGlwbGVTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWcoKTtcbiAgICBjb25zdCBtdWx0aXBsZSA9IHRoaXMubXVsdGlwbGVTaWduYWwoKTtcbiAgICByZXR1cm4gbXVsdGlwbGUgPz8gY29uZmlnPy5tdWx0aXBsZTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgdXBsb2FkQWNjZXB0U2lnbmFsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnKCk7XG4gICAgY29uc3QgYWNjZXB0ID0gdGhpcy5hY2NlcHRTaWduYWwoKTtcbiAgICByZXR1cm4gYWNjZXB0ID8/IGNvbmZpZz8uYWNjZXB0O1xuICB9KTtcblxuICByZWFkb25seSBmaWxlc0NoYW5nZWQgPSBvdXRwdXQ8RGJ4RmlsZVVwbG9hZEZpbGVzQ2hhbmdlZEV2ZW50PigpO1xuXG4gIGFyZWFDbGlja2VkKCkge1xuICAgIGNvbnN0IGNsaWNrQXJlYVRvVXBsb2FkID0gdGhpcy5jbGlja0FyZWFUb1VwbG9hZFNpZ25hbCgpO1xuXG4gICAgaWYgKGNsaWNrQXJlYVRvVXBsb2FkKSB7XG4gICAgICBjb25zdCBidXR0b24gPSB0aGlzLmJ1dHRvbigpO1xuICAgICAgYnV0dG9uLm9wZW5JbnB1dCgpO1xuICAgIH1cbiAgfVxuXG4gIGFyZWFGaWxlc0NoYW5nZWQoZXZlbnQ6IERieEZpbGVVcGxvYWRBcmVhRmlsZXNDaGFuZ2VkRXZlbnQpIHtcbiAgICB0aGlzLmZpbGVzQ2hhbmdlZC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIGJ1dHRvbkZpbGVzQ2hhbmdlZChldmVudDogRGJ4RmlsZVVwbG9hZEJ1dHRvbkZpbGVzQ2hhbmdlZEV2ZW50KSB7XG4gICAgdGhpcy5maWxlc0NoYW5nZWQuZW1pdChldmVudCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, inject, Injector, input } from '@angular/core';
|
|
2
|
+
import { DBX_AVATAR_CONTEXT_DATA_TOKEN } from './avatar';
|
|
3
|
+
import { DbxAvatarViewService } from './avatar.service';
|
|
4
|
+
import { DbxInjectionComponent, mergeStaticProviders } from '@dereekb/dbx-core';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
/**
|
|
7
|
+
* Component that displays an avatar based on the input context.
|
|
8
|
+
*/
|
|
9
|
+
export class DbxAvatarComponent {
|
|
10
|
+
injector = inject(Injector);
|
|
11
|
+
avatarService = inject(DbxAvatarViewService);
|
|
12
|
+
context = input();
|
|
13
|
+
avatarSelector = input();
|
|
14
|
+
avatarUid = input();
|
|
15
|
+
avatarUrl = input();
|
|
16
|
+
avatarKey = input();
|
|
17
|
+
avatarIcon = input();
|
|
18
|
+
avatarStyle = input();
|
|
19
|
+
avatarSize = input(undefined);
|
|
20
|
+
contextSignal = computed(() => {
|
|
21
|
+
const inputContext = this.context();
|
|
22
|
+
const selector = this.avatarSelector() ?? inputContext?.selector;
|
|
23
|
+
const uid = this.avatarUid() ?? inputContext?.uid;
|
|
24
|
+
const url = this.avatarUrl() ?? inputContext?.url;
|
|
25
|
+
const key = this.avatarKey() ?? inputContext?.key;
|
|
26
|
+
const icon = this.avatarIcon() ?? inputContext?.icon;
|
|
27
|
+
const style = this.avatarStyle() ?? inputContext?.style;
|
|
28
|
+
const context = {
|
|
29
|
+
selector,
|
|
30
|
+
uid,
|
|
31
|
+
url,
|
|
32
|
+
key,
|
|
33
|
+
icon,
|
|
34
|
+
style
|
|
35
|
+
};
|
|
36
|
+
return context;
|
|
37
|
+
});
|
|
38
|
+
configSignal = computed(() => {
|
|
39
|
+
const context = this.contextSignal();
|
|
40
|
+
const returnedConfig = this.avatarService.avatarComponentForContext(context);
|
|
41
|
+
const dataProvider = {
|
|
42
|
+
provide: DBX_AVATAR_CONTEXT_DATA_TOKEN,
|
|
43
|
+
useValue: context
|
|
44
|
+
};
|
|
45
|
+
const injector = Injector.create({
|
|
46
|
+
parent: this.injector,
|
|
47
|
+
providers: mergeStaticProviders(dataProvider, returnedConfig.providers)
|
|
48
|
+
});
|
|
49
|
+
const config = {
|
|
50
|
+
...returnedConfig,
|
|
51
|
+
injector
|
|
52
|
+
};
|
|
53
|
+
return config;
|
|
54
|
+
});
|
|
55
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxAvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
56
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: DbxAvatarComponent, isStandalone: true, selector: "dbx-avatar", inputs: { context: { classPropertyName: "context", publicName: "context", isSignal: true, isRequired: false, transformFunction: null }, avatarSelector: { classPropertyName: "avatarSelector", publicName: "avatarSelector", isSignal: true, isRequired: false, transformFunction: null }, avatarUid: { classPropertyName: "avatarUid", publicName: "avatarUid", isSignal: true, isRequired: false, transformFunction: null }, avatarUrl: { classPropertyName: "avatarUrl", publicName: "avatarUrl", isSignal: true, isRequired: false, transformFunction: null }, avatarKey: { classPropertyName: "avatarKey", publicName: "avatarKey", isSignal: true, isRequired: false, transformFunction: null }, avatarIcon: { classPropertyName: "avatarIcon", publicName: "avatarIcon", isSignal: true, isRequired: false, transformFunction: null }, avatarStyle: { classPropertyName: "avatarStyle", publicName: "avatarStyle", isSignal: true, isRequired: false, transformFunction: null }, avatarSize: { classPropertyName: "avatarSize", publicName: "avatarSize", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.dbx-avatar-small": "avatarSize() === 'small'", "class.dbx-avatar-large": "avatarSize() === 'large'" } }, ngImport: i0, template: `
|
|
57
|
+
<dbx-injection [config]="configSignal()"></dbx-injection>
|
|
58
|
+
`, isInline: true, dependencies: [{ kind: "component", type: DbxInjectionComponent, selector: "dbx-injection, [dbxInjection], [dbx-injection]", inputs: ["config", "template"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
59
|
+
}
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxAvatarComponent, decorators: [{
|
|
61
|
+
type: Component,
|
|
62
|
+
args: [{
|
|
63
|
+
selector: 'dbx-avatar',
|
|
64
|
+
template: `
|
|
65
|
+
<dbx-injection [config]="configSignal()"></dbx-injection>
|
|
66
|
+
`,
|
|
67
|
+
imports: [DbxInjectionComponent],
|
|
68
|
+
host: {
|
|
69
|
+
'[class.dbx-avatar-small]': `avatarSize() === 'small'`,
|
|
70
|
+
'[class.dbx-avatar-large]': `avatarSize() === 'large'`
|
|
71
|
+
},
|
|
72
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
73
|
+
standalone: true
|
|
74
|
+
}]
|
|
75
|
+
}] });
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC13ZWIvc3JjL2xpYi9sYXlvdXQvYXZhdGFyL2F2YXRhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEcsT0FBTyxFQUFFLDZCQUE2QixFQUFvRixNQUFNLFVBQVUsQ0FBQztBQUMzSSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RCxPQUFPLEVBQXNCLHFCQUFxQixFQUErQixvQkFBb0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUdqSTs7R0FFRztBQWNILE1BQU0sT0FBTyxrQkFBa0I7SUFDcEIsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1QixhQUFhLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFN0MsT0FBTyxHQUFHLEtBQUssRUFBb0IsQ0FBQztJQUVwQyxjQUFjLEdBQUcsS0FBSyxFQUE0QixDQUFDO0lBQ25ELFNBQVMsR0FBRyxLQUFLLEVBQTZCLENBQUM7SUFDL0MsU0FBUyxHQUFHLEtBQUssRUFBK0IsQ0FBQztJQUNqRCxTQUFTLEdBQUcsS0FBSyxFQUF1QixDQUFDO0lBQ3pDLFVBQVUsR0FBRyxLQUFLLEVBQWlCLENBQUM7SUFDcEMsV0FBVyxHQUFHLEtBQUssRUFBeUIsQ0FBQztJQUM3QyxVQUFVLEdBQUcsS0FBSyxDQUF1QixTQUFTLENBQUMsQ0FBQztJQUVwRCxhQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUNyQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFcEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLFlBQVksRUFBRSxRQUFRLENBQUM7UUFDakUsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLFlBQVksRUFBRSxHQUFHLENBQUM7UUFDbEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLFlBQVksRUFBRSxHQUFHLENBQUM7UUFDbEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLFlBQVksRUFBRSxHQUFHLENBQUM7UUFDbEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLFlBQVksRUFBRSxJQUFJLENBQUM7UUFDckQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLFlBQVksRUFBRSxLQUFLLENBQUM7UUFFeEQsTUFBTSxPQUFPLEdBQUc7WUFDZCxRQUFRO1lBQ1IsR0FBRztZQUNILEdBQUc7WUFDSCxHQUFHO1lBQ0gsSUFBSTtZQUNKLEtBQUs7U0FDTixDQUFDO1FBRUYsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQyxDQUFDLENBQUM7SUFFTSxZQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUNwQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU3RSxNQUFNLFlBQVksR0FBRztZQUNuQixPQUFPLEVBQUUsNkJBQTZCO1lBQ3RDLFFBQVEsRUFBRSxPQUFPO1NBQ2xCLENBQUM7UUFFRixNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQy9CLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUTtZQUNyQixTQUFTLEVBQUUsb0JBQW9CLENBQUMsWUFBWSxFQUFFLGNBQWMsQ0FBQyxTQUFTLENBQUM7U0FDeEUsQ0FBQyxDQUFDO1FBRUgsTUFBTSxNQUFNLEdBQWdDO1lBQzFDLEdBQUcsY0FBYztZQUNqQixRQUFRO1NBQ1QsQ0FBQztRQUVGLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUMsQ0FBQyxDQUFDO3dHQXhEUSxrQkFBa0I7NEZBQWxCLGtCQUFrQiw2d0NBWG5COztHQUVULDREQUNTLHFCQUFxQjs7NEZBUXBCLGtCQUFrQjtrQkFiOUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsUUFBUSxFQUFFOztHQUVUO29CQUNELE9BQU8sRUFBRSxDQUFDLHFCQUFxQixDQUFDO29CQUNoQyxJQUFJLEVBQUU7d0JBQ0osMEJBQTBCLEVBQUUsMEJBQTBCO3dCQUN0RCwwQkFBMEIsRUFBRSwwQkFBMEI7cUJBQ3ZEO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBJbmplY3RvciwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERCWF9BVkFUQVJfQ09OVEVYVF9EQVRBX1RPS0VOLCBEYnhBdmF0YXJDb250ZXh0LCBEYnhBdmF0YXJLZXksIERieEF2YXRhclNlbGVjdG9yLCBEYnhBdmF0YXJTaXplLCBEYnhBdmF0YXJTdHlsZSB9IGZyb20gJy4vYXZhdGFyJztcbmltcG9ydCB7IERieEF2YXRhclZpZXdTZXJ2aWNlIH0gZnJvbSAnLi9hdmF0YXIuc2VydmljZSc7XG5pbXBvcnQgeyBBdXRoVXNlcklkZW50aWZpZXIsIERieEluamVjdGlvbkNvbXBvbmVudCwgRGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnLCBtZXJnZVN0YXRpY1Byb3ZpZGVycyB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IE1heWJlLCBXZWJzaXRlVXJsV2l0aFByZWZpeCB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuXG4vKipcbiAqIENvbXBvbmVudCB0aGF0IGRpc3BsYXlzIGFuIGF2YXRhciBiYXNlZCBvbiB0aGUgaW5wdXQgY29udGV4dC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGJ4LWF2YXRhcicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRieC1pbmplY3Rpb24gW2NvbmZpZ109XCJjb25maWdTaWduYWwoKVwiPjwvZGJ4LWluamVjdGlvbj5cbiAgYCxcbiAgaW1wb3J0czogW0RieEluamVjdGlvbkNvbXBvbmVudF0sXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLmRieC1hdmF0YXItc21hbGxdJzogYGF2YXRhclNpemUoKSA9PT0gJ3NtYWxsJ2AsXG4gICAgJ1tjbGFzcy5kYngtYXZhdGFyLWxhcmdlXSc6IGBhdmF0YXJTaXplKCkgPT09ICdsYXJnZSdgXG4gIH0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIERieEF2YXRhckNvbXBvbmVudCB7XG4gIHJlYWRvbmx5IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgcmVhZG9ubHkgYXZhdGFyU2VydmljZSA9IGluamVjdChEYnhBdmF0YXJWaWV3U2VydmljZSk7XG5cbiAgcmVhZG9ubHkgY29udGV4dCA9IGlucHV0PERieEF2YXRhckNvbnRleHQ+KCk7XG5cbiAgcmVhZG9ubHkgYXZhdGFyU2VsZWN0b3IgPSBpbnB1dDxNYXliZTxEYnhBdmF0YXJTZWxlY3Rvcj4+KCk7XG4gIHJlYWRvbmx5IGF2YXRhclVpZCA9IGlucHV0PE1heWJlPEF1dGhVc2VySWRlbnRpZmllcj4+KCk7XG4gIHJlYWRvbmx5IGF2YXRhclVybCA9IGlucHV0PE1heWJlPFdlYnNpdGVVcmxXaXRoUHJlZml4Pj4oKTtcbiAgcmVhZG9ubHkgYXZhdGFyS2V5ID0gaW5wdXQ8TWF5YmU8RGJ4QXZhdGFyS2V5Pj4oKTtcbiAgcmVhZG9ubHkgYXZhdGFySWNvbiA9IGlucHV0PE1heWJlPHN0cmluZz4+KCk7XG4gIHJlYWRvbmx5IGF2YXRhclN0eWxlID0gaW5wdXQ8TWF5YmU8RGJ4QXZhdGFyU3R5bGU+PigpO1xuICByZWFkb25seSBhdmF0YXJTaXplID0gaW5wdXQ8TWF5YmU8RGJ4QXZhdGFyU2l6ZT4+KHVuZGVmaW5lZCk7XG5cbiAgcmVhZG9ubHkgY29udGV4dFNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBpbnB1dENvbnRleHQgPSB0aGlzLmNvbnRleHQoKTtcblxuICAgIGNvbnN0IHNlbGVjdG9yID0gdGhpcy5hdmF0YXJTZWxlY3RvcigpID8/IGlucHV0Q29udGV4dD8uc2VsZWN0b3I7XG4gICAgY29uc3QgdWlkID0gdGhpcy5hdmF0YXJVaWQoKSA/PyBpbnB1dENvbnRleHQ/LnVpZDtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmF2YXRhclVybCgpID8/IGlucHV0Q29udGV4dD8udXJsO1xuICAgIGNvbnN0IGtleSA9IHRoaXMuYXZhdGFyS2V5KCkgPz8gaW5wdXRDb250ZXh0Py5rZXk7XG4gICAgY29uc3QgaWNvbiA9IHRoaXMuYXZhdGFySWNvbigpID8/IGlucHV0Q29udGV4dD8uaWNvbjtcbiAgICBjb25zdCBzdHlsZSA9IHRoaXMuYXZhdGFyU3R5bGUoKSA/PyBpbnB1dENvbnRleHQ/LnN0eWxlO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHtcbiAgICAgIHNlbGVjdG9yLFxuICAgICAgdWlkLFxuICAgICAgdXJsLFxuICAgICAga2V5LFxuICAgICAgaWNvbixcbiAgICAgIHN0eWxlXG4gICAgfTtcblxuICAgIHJldHVybiBjb250ZXh0O1xuICB9KTtcblxuICByZWFkb25seSBjb25maWdTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuY29udGV4dFNpZ25hbCgpO1xuICAgIGNvbnN0IHJldHVybmVkQ29uZmlnID0gdGhpcy5hdmF0YXJTZXJ2aWNlLmF2YXRhckNvbXBvbmVudEZvckNvbnRleHQoY29udGV4dCk7XG5cbiAgICBjb25zdCBkYXRhUHJvdmlkZXIgPSB7XG4gICAgICBwcm92aWRlOiBEQlhfQVZBVEFSX0NPTlRFWFRfREFUQV9UT0tFTixcbiAgICAgIHVzZVZhbHVlOiBjb250ZXh0XG4gICAgfTtcblxuICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHBhcmVudDogdGhpcy5pbmplY3RvcixcbiAgICAgIHByb3ZpZGVyczogbWVyZ2VTdGF0aWNQcm92aWRlcnMoZGF0YVByb3ZpZGVyLCByZXR1cm5lZENvbmZpZy5wcm92aWRlcnMpXG4gICAgfSk7XG5cbiAgICBjb25zdCBjb25maWc6IERieEluamVjdGlvbkNvbXBvbmVudENvbmZpZyA9IHtcbiAgICAgIC4uLnJldHVybmVkQ29uZmlnLFxuICAgICAgaW5qZWN0b3JcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfSk7XG59XG4iXX0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
// MARK: Injection Token
|
|
3
|
+
/**
|
|
4
|
+
* Injection token for the avatar context data.
|
|
5
|
+
*/
|
|
6
|
+
export const DBX_AVATAR_CONTEXT_DATA_TOKEN = new InjectionToken('DbxAvatarContextData');
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LXdlYi9zcmMvbGliL2xheW91dC9hdmF0YXIvYXZhdGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUF3RC9DLHdCQUF3QjtBQUN4Qjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLElBQUksY0FBYyxDQUFtQixzQkFBc0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEF1dGhVc2VySWRlbnRpZmllciB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IE1heWJlLCBXZWJzaXRlVXJsV2l0aFByZWZpeCB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuXG4vKipcbiAqIEFyYml0cmFyeSBzdHJpbmcgc2VsZWN0b3IgdXNlZCB0byBkaWZmZXJlbnRpYXRlIGF2YXRhcnMuXG4gKi9cbmV4cG9ydCB0eXBlIERieEF2YXRhclNlbGVjdG9yID0gc3RyaW5nO1xuXG4vKipcbiAqIEFyYml0cmFyeSBrZXkgdGhhdCBpcyB1c2VkIHRvIGNvbmZpZ3VyZSBhbiBhdmF0YXIgcGF0aC5cbiAqL1xuZXhwb3J0IHR5cGUgRGJ4QXZhdGFyS2V5ID0gc3RyaW5nO1xuXG4vKipcbiAqIFRoZSBhdmF0YXIgc3R5bGUuXG4gKi9cbmV4cG9ydCB0eXBlIERieEF2YXRhclN0eWxlID0gJ2NpcmNsZScgfCAnc3F1YXJlJztcblxuLyoqXG4gKiBUaGUgYXZhdGFyIHNpemUuXG4gKi9cbmV4cG9ydCB0eXBlIERieEF2YXRhclNpemUgPSAnc21hbGwnIHwgJ25vcm1hbCcgfCAnbGFyZ2UnO1xuXG4vKipcbiAqIFByb3ZpZGVzIGNvbnRleHR1YWwgaW5mb3JtYXRpb24gZm9yIGRpc3BsYXlpbmcgYW4gYXZhdGFyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERieEF2YXRhckNvbnRleHQge1xuICAvKipcbiAgICogQW4gYXJiaXRyYXJ5IGRpc2NyaW1pbmF0b3IgdXNlZCB0byBkaWZmZXJlbnRpYXRlIGF2YXRhcnMuXG4gICAqL1xuICByZWFkb25seSBzZWxlY3Rvcj86IE1heWJlPERieEF2YXRhclNlbGVjdG9yPjtcbiAgLyoqXG4gICAqIFVzZXIgaWRlbnRpZmllci5cbiAgICpcbiAgICogTWF5IGJlIHVzZWQgaW4gc29tZSBjYXNlcyB0byBkaXNwbGF5IGEgdXNlci1zcGVjaWZpYyBhdmF0YXIuXG4gICAqL1xuICByZWFkb25seSB1aWQ/OiBNYXliZTxBdXRoVXNlcklkZW50aWZpZXI+O1xuICAvKipcbiAgICogQSBmdWxsIHdlYnNpdGUgVVJMIHRvIGFuIGF2YXRhciBpbWFnZS5cbiAgICovXG4gIHJlYWRvbmx5IHVybD86IE1heWJlPFdlYnNpdGVVcmxXaXRoUHJlZml4PjtcbiAgLyoqXG4gICAqIEFyYml0cmFyeSBrZXkgdGhhdCBpcyB1c2VkIHRvIGNvbmZpZ3VyZSBhbiBhdmF0YXIuXG4gICAqL1xuICByZWFkb25seSBrZXk/OiBNYXliZTxEYnhBdmF0YXJLZXk+O1xuICAvKipcbiAgICogVGhlIGF2YXRhciBzdHlsZS5cbiAgICovXG4gIHJlYWRvbmx5IHN0eWxlPzogRGJ4QXZhdGFyU3R5bGU7XG4gIC8qKlxuICAgKiBJY29uIG5hbWUgdG8gdXNlIGZvciB0aGUgZmFsbGJhY2sgYXZhdGFyIHdoZW4gbm8gaW1hZ2UgaXMgcHJvdmlkZWQuXG4gICAqL1xuICByZWFkb25seSBpY29uPzogTWF5YmU8c3RyaW5nPjtcbn1cblxuLy8gTUFSSzogSW5qZWN0aW9uIFRva2VuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiBmb3IgdGhlIGF2YXRhciBjb250ZXh0IGRhdGEuXG4gKi9cbmV4cG9ydCBjb25zdCBEQlhfQVZBVEFSX0NPTlRFWFRfREFUQV9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxEYnhBdmF0YXJDb250ZXh0PignRGJ4QXZhdGFyQ29udGV4dERhdGEnKTtcbiJdfQ==
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { inject, Injectable } from '@angular/core';
|
|
2
|
+
import { DbxAvatarViewComponent } from './avatar.view.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Configuration for a DbxAvatarViewService.
|
|
6
|
+
*/
|
|
7
|
+
export class DbxAvatarViewServiceConfig {
|
|
8
|
+
/**
|
|
9
|
+
* The default avatar URL to use in DbxAvatarViewComponent if no other url is available
|
|
10
|
+
*/
|
|
11
|
+
defaultAvatarUrl;
|
|
12
|
+
/**
|
|
13
|
+
* The default fallback icon to use when no avatar image is provided.
|
|
14
|
+
*/
|
|
15
|
+
defaultAvatarIcon;
|
|
16
|
+
/**
|
|
17
|
+
* The default fallback icon to use when an avatar image is provided but fails to load.
|
|
18
|
+
*/
|
|
19
|
+
defaultAvatarErrorIcon;
|
|
20
|
+
/**
|
|
21
|
+
* Overrides the default avatar component.
|
|
22
|
+
*/
|
|
23
|
+
defaultAvatarComponentConfig;
|
|
24
|
+
/**
|
|
25
|
+
* Custom function that returns a DbxInjectionComponentConfig for the given context.
|
|
26
|
+
*/
|
|
27
|
+
avatarComponentForContext;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Service for registering avatars.
|
|
31
|
+
*/
|
|
32
|
+
export class DbxAvatarViewService {
|
|
33
|
+
_serviceConfig = inject(DbxAvatarViewServiceConfig, { optional: true });
|
|
34
|
+
_defaultAvatarUrl = this._serviceConfig?.defaultAvatarUrl;
|
|
35
|
+
_defaultAvatarIcon = this._serviceConfig?.defaultAvatarIcon ?? 'person';
|
|
36
|
+
_defaultAvatarErrorIcon;
|
|
37
|
+
_defaultAvatarComponentConfig = this._serviceConfig?.defaultAvatarComponentConfig ?? {
|
|
38
|
+
componentClass: DbxAvatarViewComponent
|
|
39
|
+
};
|
|
40
|
+
_avatarComponentForContext = this._serviceConfig?.avatarComponentForContext;
|
|
41
|
+
avatarComponentForContext(context) {
|
|
42
|
+
let config = this._defaultAvatarComponentConfig;
|
|
43
|
+
if (this._avatarComponentForContext) {
|
|
44
|
+
config = this._avatarComponentForContext(context) ?? config;
|
|
45
|
+
}
|
|
46
|
+
return config;
|
|
47
|
+
}
|
|
48
|
+
get defaultAvatarUrl() {
|
|
49
|
+
return this._defaultAvatarUrl;
|
|
50
|
+
}
|
|
51
|
+
get defaultAvatarIcon() {
|
|
52
|
+
return this._defaultAvatarIcon;
|
|
53
|
+
}
|
|
54
|
+
get defaultAvatarErrorIcon() {
|
|
55
|
+
return this._defaultAvatarErrorIcon;
|
|
56
|
+
}
|
|
57
|
+
setDefaultAvatarUrl(url) {
|
|
58
|
+
this._defaultAvatarUrl = url;
|
|
59
|
+
}
|
|
60
|
+
setDefaultAvatarIcon(icon) {
|
|
61
|
+
this._defaultAvatarIcon = icon;
|
|
62
|
+
}
|
|
63
|
+
setDefaultAvatarErrorIcon(icon) {
|
|
64
|
+
this._defaultAvatarErrorIcon = icon;
|
|
65
|
+
}
|
|
66
|
+
setDefaultAvatarComponentConfig(config) {
|
|
67
|
+
this._defaultAvatarComponentConfig = config;
|
|
68
|
+
}
|
|
69
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxAvatarViewService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
70
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxAvatarViewService, providedIn: 'root' });
|
|
71
|
+
}
|
|
72
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxAvatarViewService, decorators: [{
|
|
73
|
+
type: Injectable,
|
|
74
|
+
args: [{
|
|
75
|
+
providedIn: 'root'
|
|
76
|
+
}]
|
|
77
|
+
}] });
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtd2ViL3NyYy9saWIvbGF5b3V0L2F2YXRhci9hdmF0YXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFzQmpFOztHQUVHO0FBQ0gsTUFBTSxPQUFnQiwwQkFBMEI7SUFDOUM7O09BRUc7SUFDTSxnQkFBZ0IsQ0FBNkM7SUFDdEU7O09BRUc7SUFDTSxpQkFBaUIsQ0FBaUI7SUFDM0M7O09BRUc7SUFDTSxzQkFBc0IsQ0FBaUI7SUFDaEQ7O09BRUc7SUFDTSw0QkFBNEIsQ0FBNEM7SUFDakY7O09BRUc7SUFDTSx5QkFBeUIsQ0FBd0M7Q0FDM0U7QUFFRDs7R0FFRztBQUlILE1BQU0sT0FBTyxvQkFBb0I7SUFDZCxjQUFjLEdBQUcsTUFBTSxDQUFDLDBCQUEwQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFakYsaUJBQWlCLEdBQThDLElBQUksQ0FBQyxjQUFjLEVBQUUsZ0JBQWdCLENBQUM7SUFDckcsa0JBQWtCLEdBQWtCLElBQUksQ0FBQyxjQUFjLEVBQUUsaUJBQWlCLElBQUksUUFBUSxDQUFDO0lBQ3ZGLHVCQUF1QixDQUFnQjtJQUV2Qyw2QkFBNkIsR0FBc0MsSUFBSSxDQUFDLGNBQWMsRUFBRSw0QkFBNEIsSUFBSTtRQUM5SCxjQUFjLEVBQUUsc0JBQXNCO0tBQ3ZDLENBQUM7SUFFTSwwQkFBMEIsR0FBMEMsSUFBSSxDQUFDLGNBQWMsRUFBRSx5QkFBeUIsQ0FBQztJQUUzSCx5QkFBeUIsQ0FBQyxPQUF5QjtRQUNqRCxJQUFJLE1BQU0sR0FBc0MsSUFBSSxDQUFDLDZCQUE2QixDQUFDO1FBRW5GLElBQUksSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDcEMsTUFBTSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUM7UUFDOUQsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksc0JBQXNCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDO0lBQ3RDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxHQUE4QztRQUNoRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxDQUFDO0lBQy9CLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxJQUFtQjtRQUN0QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO0lBQ2pDLENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxJQUFtQjtRQUMzQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDO0lBQ3RDLENBQUM7SUFFRCwrQkFBK0IsQ0FBQyxNQUF5QztRQUN2RSxJQUFJLENBQUMsNkJBQTZCLEdBQUcsTUFBTSxDQUFDO0lBQzlDLENBQUM7d0dBakRVLG9CQUFvQjs0R0FBcEIsb0JBQW9CLGNBRm5CLE1BQU07OzRGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERieEluamVjdGlvbkNvbXBvbmVudENvbmZpZyB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IERieEF2YXRhclZpZXdDb21wb25lbnQgfSBmcm9tICcuL2F2YXRhci52aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYnhBdmF0YXJDb250ZXh0IH0gZnJvbSAnLi9hdmF0YXInO1xuaW1wb3J0IHsgTWF5YmUsIFdlYnNpdGVQYXRoLCBXZWJzaXRlVXJsV2l0aFByZWZpeCB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuXG4vKipcbiAqIFRoZSBpbmplY3Rpb24gY29uZmlndXJhdGlvbiBmb3IgYSBEYnhBdmF0YXIgY29tcG9uZW50LlxuICpcbiAqIE5vdCBhbGxvd2VkIHRvIG92ZXJyaWRlIHRoZSBpbmplY3Rvci5cbiAqXG4gKiBUaGUgZmluYWwgaW5qZWN0b3IgdGhhdCB3aWxsIGJlIHBhc3NlZCB3aWxsIHByb3ZpZGUgREJYX0FWQVRBUl9DT05URVhUX0RBVEFfVE9LRU4uXG4gKi9cbmV4cG9ydCB0eXBlIERieEF2YXRhckluamVjdGlvbkNvbXBvbmVudENvbmZpZyA9IE9taXQ8RGJ4SW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnLCAnaW5qZWN0b3InPjtcblxuLyoqXG4gKiBGdW5jdGlvbiB0aGF0IHJldHVybnMgYSBEYnhJbmplY3Rpb25Db21wb25lbnRDb25maWcgZm9yIHRoZSBnaXZlbiBjb250ZXh0LlxuICpcbiAqIENhbiByZXR1cm4gbnVsbC91bmRlZmluZWQgaWYgdGhlIGRlZmF1bHQgYXZhdGFyIGNvbXBvbmVudCBzaG91bGQgYmUgdXNlZC5cbiAqXG4gKiBAcGFyYW0gY29udGV4dCBUaGUgY3VycmVudCBjb250ZXh0IGlucHV0LlxuICovXG5leHBvcnQgdHlwZSBEYnhBdmF0YXJDb21wb25lbnRGb3JDb250ZXh0RnVuY3Rpb24gPSAoY29udGV4dDogRGJ4QXZhdGFyQ29udGV4dCkgPT4gTWF5YmU8RGJ4QXZhdGFySW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnPjtcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBhIERieEF2YXRhclZpZXdTZXJ2aWNlLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGJ4QXZhdGFyVmlld1NlcnZpY2VDb25maWcge1xuICAvKipcbiAgICogVGhlIGRlZmF1bHQgYXZhdGFyIFVSTCB0byB1c2UgaW4gRGJ4QXZhdGFyVmlld0NvbXBvbmVudCBpZiBubyBvdGhlciB1cmwgaXMgYXZhaWxhYmxlXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0QXZhdGFyVXJsPzogTWF5YmU8V2Vic2l0ZVBhdGggfCBXZWJzaXRlVXJsV2l0aFByZWZpeD47XG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBmYWxsYmFjayBpY29uIHRvIHVzZSB3aGVuIG5vIGF2YXRhciBpbWFnZSBpcyBwcm92aWRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRBdmF0YXJJY29uPzogTWF5YmU8c3RyaW5nPjtcbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IGZhbGxiYWNrIGljb24gdG8gdXNlIHdoZW4gYW4gYXZhdGFyIGltYWdlIGlzIHByb3ZpZGVkIGJ1dCBmYWlscyB0byBsb2FkLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdEF2YXRhckVycm9ySWNvbj86IE1heWJlPHN0cmluZz47XG4gIC8qKlxuICAgKiBPdmVycmlkZXMgdGhlIGRlZmF1bHQgYXZhdGFyIGNvbXBvbmVudC5cbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRBdmF0YXJDb21wb25lbnRDb25maWc/OiBNYXliZTxEYnhBdmF0YXJJbmplY3Rpb25Db21wb25lbnRDb25maWc+O1xuICAvKipcbiAgICogQ3VzdG9tIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIERieEluamVjdGlvbkNvbXBvbmVudENvbmZpZyBmb3IgdGhlIGdpdmVuIGNvbnRleHQuXG4gICAqL1xuICByZWFkb25seSBhdmF0YXJDb21wb25lbnRGb3JDb250ZXh0PzogRGJ4QXZhdGFyQ29tcG9uZW50Rm9yQ29udGV4dEZ1bmN0aW9uO1xufVxuXG4vKipcbiAqIFNlcnZpY2UgZm9yIHJlZ2lzdGVyaW5nIGF2YXRhcnMuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIERieEF2YXRhclZpZXdTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2VydmljZUNvbmZpZyA9IGluamVjdChEYnhBdmF0YXJWaWV3U2VydmljZUNvbmZpZywgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBwcml2YXRlIF9kZWZhdWx0QXZhdGFyVXJsOiBNYXliZTxXZWJzaXRlUGF0aCB8IFdlYnNpdGVVcmxXaXRoUHJlZml4PiA9IHRoaXMuX3NlcnZpY2VDb25maWc/LmRlZmF1bHRBdmF0YXJVcmw7XG4gIHByaXZhdGUgX2RlZmF1bHRBdmF0YXJJY29uOiBNYXliZTxzdHJpbmc+ID0gdGhpcy5fc2VydmljZUNvbmZpZz8uZGVmYXVsdEF2YXRhckljb24gPz8gJ3BlcnNvbic7XG4gIHByaXZhdGUgX2RlZmF1bHRBdmF0YXJFcnJvckljb246IE1heWJlPHN0cmluZz47XG5cbiAgcHJpdmF0ZSBfZGVmYXVsdEF2YXRhckNvbXBvbmVudENvbmZpZzogRGJ4QXZhdGFySW5qZWN0aW9uQ29tcG9uZW50Q29uZmlnID0gdGhpcy5fc2VydmljZUNvbmZpZz8uZGVmYXVsdEF2YXRhckNvbXBvbmVudENvbmZpZyA/PyB7XG4gICAgY29tcG9uZW50Q2xhc3M6IERieEF2YXRhclZpZXdDb21wb25lbnRcbiAgfTtcblxuICBwcml2YXRlIF9hdmF0YXJDb21wb25lbnRGb3JDb250ZXh0PzogRGJ4QXZhdGFyQ29tcG9uZW50Rm9yQ29udGV4dEZ1bmN0aW9uID0gdGhpcy5fc2VydmljZUNvbmZpZz8uYXZhdGFyQ29tcG9uZW50Rm9yQ29udGV4dDtcblxuICBhdmF0YXJDb21wb25lbnRGb3JDb250ZXh0KGNvbnRleHQ6IERieEF2YXRhckNvbnRleHQpOiBEYnhBdmF0YXJJbmplY3Rpb25Db21wb25lbnRDb25maWcge1xuICAgIGxldCBjb25maWc6IERieEF2YXRhckluamVjdGlvbkNvbXBvbmVudENvbmZpZyA9IHRoaXMuX2RlZmF1bHRBdmF0YXJDb21wb25lbnRDb25maWc7XG5cbiAgICBpZiAodGhpcy5fYXZhdGFyQ29tcG9uZW50Rm9yQ29udGV4dCkge1xuICAgICAgY29uZmlnID0gdGhpcy5fYXZhdGFyQ29tcG9uZW50Rm9yQ29udGV4dChjb250ZXh0KSA/PyBjb25maWc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxuXG4gIGdldCBkZWZhdWx0QXZhdGFyVXJsKCkge1xuICAgIHJldHVybiB0aGlzLl9kZWZhdWx0QXZhdGFyVXJsO1xuICB9XG5cbiAgZ2V0IGRlZmF1bHRBdmF0YXJJY29uKCkge1xuICAgIHJldHVybiB0aGlzLl9kZWZhdWx0QXZhdGFySWNvbjtcbiAgfVxuXG4gIGdldCBkZWZhdWx0QXZhdGFyRXJyb3JJY29uKCkge1xuICAgIHJldHVybiB0aGlzLl9kZWZhdWx0QXZhdGFyRXJyb3JJY29uO1xuICB9XG5cbiAgc2V0RGVmYXVsdEF2YXRhclVybCh1cmw6IE1heWJlPFdlYnNpdGVQYXRoIHwgV2Vic2l0ZVVybFdpdGhQcmVmaXg+KSB7XG4gICAgdGhpcy5fZGVmYXVsdEF2YXRhclVybCA9IHVybDtcbiAgfVxuXG4gIHNldERlZmF1bHRBdmF0YXJJY29uKGljb246IE1heWJlPHN0cmluZz4pIHtcbiAgICB0aGlzLl9kZWZhdWx0QXZhdGFySWNvbiA9IGljb247XG4gIH1cblxuICBzZXREZWZhdWx0QXZhdGFyRXJyb3JJY29uKGljb246IE1heWJlPHN0cmluZz4pIHtcbiAgICB0aGlzLl9kZWZhdWx0QXZhdGFyRXJyb3JJY29uID0gaWNvbjtcbiAgfVxuXG4gIHNldERlZmF1bHRBdmF0YXJDb21wb25lbnRDb25maWcoY29uZmlnOiBEYnhBdmF0YXJJbmplY3Rpb25Db21wb25lbnRDb25maWcpIHtcbiAgICB0aGlzLl9kZWZhdWx0QXZhdGFyQ29tcG9uZW50Q29uZmlnID0gY29uZmlnO1xuICB9XG59XG4iXX0=
|