@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.
Files changed (66) hide show
  1. package/esm2022/lib/action/action.confirm.directive.mjs +4 -4
  2. package/esm2022/lib/action/snackbar/action.snackbar.component.mjs +2 -2
  3. package/esm2022/lib/action/transition/transition.safety.dialog.component.mjs +2 -2
  4. package/esm2022/lib/button/button.component.mjs +46 -20
  5. package/esm2022/lib/button/progress/abstract.progress.button.directive.mjs +53 -7
  6. package/esm2022/lib/button/progress/bar.button.component.mjs +3 -3
  7. package/esm2022/lib/button/progress/button.progress.config.mjs +1 -1
  8. package/esm2022/lib/button/progress/spinner.button.component.mjs +3 -3
  9. package/esm2022/lib/extension/download/text/download.text.component.mjs +2 -2
  10. package/esm2022/lib/interaction/filter/filter.wrapper.component.mjs +2 -2
  11. package/esm2022/lib/interaction/index.mjs +2 -1
  12. package/esm2022/lib/interaction/popup/popup.controls.buttons.component.mjs +1 -1
  13. package/esm2022/lib/interaction/upload/abstract.upload.component.mjs +85 -0
  14. package/esm2022/lib/interaction/upload/index.mjs +8 -0
  15. package/esm2022/lib/interaction/upload/upload.accept.mjs +72 -0
  16. package/esm2022/lib/interaction/upload/upload.action.directive.mjs +36 -0
  17. package/esm2022/lib/interaction/upload/upload.action.mjs +18 -0
  18. package/esm2022/lib/interaction/upload/upload.area.component.mjs +138 -0
  19. package/esm2022/lib/interaction/upload/upload.button.component.mjs +81 -0
  20. package/esm2022/lib/interaction/upload/upload.component.mjs +116 -0
  21. package/esm2022/lib/layout/avatar/avatar.component.mjs +76 -0
  22. package/esm2022/lib/layout/avatar/avatar.mjs +7 -0
  23. package/esm2022/lib/layout/avatar/avatar.service.mjs +78 -0
  24. package/esm2022/lib/layout/avatar/avatar.view.component.mjs +89 -0
  25. package/esm2022/lib/layout/avatar/index.mjs +4 -0
  26. package/esm2022/lib/layout/content/content.pit.directive.mjs +34 -4
  27. package/esm2022/lib/layout/index.mjs +2 -1
  28. package/esm2022/lib/loading/basic-loading.component.mjs +32 -5
  29. package/esm2022/lib/loading/index.mjs +2 -1
  30. package/esm2022/lib/loading/loading.component.mjs +11 -4
  31. package/esm2022/lib/loading/loading.mjs +2 -0
  32. package/fesm2022/dereekb-dbx-web.mjs +930 -47
  33. package/fesm2022/dereekb-dbx-web.mjs.map +1 -1
  34. package/lib/action/action.confirm.directive.d.ts +1 -1
  35. package/lib/button/_button.scss +2 -1
  36. package/lib/button/button.component.d.ts +5 -1
  37. package/lib/button/progress/abstract.progress.button.directive.d.ts +9 -5
  38. package/lib/button/progress/button.progress.config.d.ts +6 -2
  39. package/lib/interaction/_interaction.scss +4 -0
  40. package/lib/interaction/index.d.ts +1 -0
  41. package/lib/interaction/upload/_upload.scss +100 -0
  42. package/lib/interaction/upload/abstract.upload.component.d.ts +54 -0
  43. package/lib/interaction/upload/index.d.ts +7 -0
  44. package/lib/interaction/upload/upload.accept.d.ts +87 -0
  45. package/lib/interaction/upload/upload.action.d.ts +17 -0
  46. package/lib/interaction/upload/upload.action.directive.d.ts +17 -0
  47. package/lib/interaction/upload/upload.area.component.d.ts +22 -0
  48. package/lib/interaction/upload/upload.button.component.d.ts +24 -0
  49. package/lib/interaction/upload/upload.component.d.ts +58 -0
  50. package/lib/layout/_layout.scss +4 -0
  51. package/lib/layout/avatar/_avatar.scss +102 -0
  52. package/lib/layout/avatar/avatar.component.d.ts +32 -0
  53. package/lib/layout/avatar/avatar.d.ts +54 -0
  54. package/lib/layout/avatar/avatar.service.d.ts +66 -0
  55. package/lib/layout/avatar/avatar.view.component.d.ts +24 -0
  56. package/lib/layout/avatar/index.d.ts +3 -0
  57. package/lib/layout/content/content.pit.directive.d.ts +6 -2
  58. package/lib/layout/index.d.ts +1 -0
  59. package/lib/loading/basic-loading.component.d.ts +13 -8
  60. package/lib/loading/index.d.ts +1 -0
  61. package/lib/loading/loading.component.d.ts +4 -3
  62. package/lib/loading/loading.d.ts +10 -0
  63. package/lib/style/_config.scss +17 -1
  64. package/lib/style/_root-variables.scss +4 -0
  65. package/lib/style/_variables.scss +8 -0
  66. 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLmFyZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LXdlYi9zcmMvbGliL2ludGVyYWN0aW9uL3VwbG9hZC91cGxvYWQuYXJlYS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsOEJBQThCLEVBQWtDLE1BQU0sNkJBQTZCLENBQUM7QUFDN0csT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQTZDdkUsTUFBTSxPQUFPLDBCQUEyQixTQUFRLDhCQUE4QjtJQUNuRSxJQUFJLEdBQUcsS0FBSyxFQUFpQixDQUFDO0lBQzlCLElBQUksR0FBRyxLQUFLLEVBQWlCLENBQUM7SUFDOUIsSUFBSSxHQUFHLEtBQUssRUFBMkIsQ0FBQztJQUN4QyxJQUFJLEdBQUcsS0FBSyxDQUFVLElBQUksQ0FBQyxDQUFDO0lBRTVCLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ2xDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixPQUFPLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFD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QUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzhCQW9CQyxPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVVqQyxVQUFVO3NCQURULFlBQVk7dUJBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVNwQyxXQUFXO3NCQURWLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVNyQyxNQUFNO3NCQURMLFlBQVk7dUJBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIEhvc3RMaXN0ZW5lciwgaW5wdXQsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgZmlsZUFycmF5QWNjZXB0TWF0Y2hGdW5jdGlvbiB9IGZyb20gJy4vdXBsb2FkLmFjY2VwdCc7XG5pbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFic3RyYWN0RGJ4RmlsZVVwbG9hZENvbXBvbmVudCwgRGJ4RmlsZVVwbG9hZEZpbGVzQ2hhbmdlZEV2ZW50IH0gZnJvbSAnLi9hYnN0cmFjdC51cGxvYWQuY29tcG9uZW50JztcbmltcG9ydCB7IHByb3ZpZGVEYnhGaWxlVXBsb2FkQWN0aW9uQ29tcGF0YWJsZSB9IGZyb20gJy4vdXBsb2FkLmFjdGlvbic7XG5cbmV4cG9ydCB0eXBlIERieEZpbGVVcGxvYWRBcmVhRmlsZXNDaGFuZ2VkRXZlbnQgPSBEYnhGaWxlVXBsb2FkRmlsZXNDaGFuZ2VkRXZlbnQ7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RieC1maWxlLXVwbG9hZC1hcmVhJyxcbiAgdGVtcGxhdGU6IGBcbiAgICBAaWYgKHNob3coKSkge1xuICAgICAgPGRpdiBjbGFzcz1cImRieC1maWxlLXVwbG9hZC1hcmVhLWNvbnRlbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRieC1maWxlLXVwbG9hZC1hcmVhLWNvbnRlbnQtdGV4dFwiPlxuICAgICAgICAgIEBpZiAoaWNvbigpICE9IG51bGwpIHtcbiAgICAgICAgICAgIDxtYXQtaWNvbj57eyBpY29uKCkgfX08L21hdC1pY29uPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKHRleHQoKSAhPSBudWxsKSB7XG4gICAgICAgICAgICA8c3Bhbj57eyB0ZXh0KCkgfX08L3NwYW4+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=