@solidev/data 0.4.8 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/solidev-data.mjs +181 -157
- package/fesm2022/solidev-data.mjs.map +1 -1
- package/lib/modellist/model-list-fields/model-list-field-header/model-list-field-header.component.d.ts +2 -2
- package/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetime-range-filter.component.d.ts +7 -1
- package/package.json +5 -7
- package/esm2022/lib/auth/auth-interceptor.service.mjs +0 -113
- package/esm2022/lib/auth/auth.service.mjs +0 -216
- package/esm2022/lib/auth/jwt.mjs +0 -21
- package/esm2022/lib/data/data-backend.mjs +0 -162
- package/esm2022/lib/data/data-collection.mjs +0 -125
- package/esm2022/lib/data/data-collection.mock.mjs +0 -39
- package/esm2022/lib/data/data-model.mjs +0 -291
- package/esm2022/lib/data/data-parameters.mjs +0 -34
- package/esm2022/lib/data/data-query.mjs +0 -154
- package/esm2022/lib/data/data-query.mock.mjs +0 -46
- package/esm2022/lib/data/fields/base.mjs +0 -144
- package/esm2022/lib/data/fields/boolean.mjs +0 -38
- package/esm2022/lib/data/fields/computed.mjs +0 -10
- package/esm2022/lib/data/fields/datetime.mjs +0 -167
- package/esm2022/lib/data/fields/index.mjs +0 -8
- package/esm2022/lib/data/fields/numbers.mjs +0 -38
- package/esm2022/lib/data/fields/primaryfield.mjs +0 -9
- package/esm2022/lib/data/fields/relations.mjs +0 -53
- package/esm2022/lib/data/fields/stringfields.mjs +0 -71
- package/esm2022/lib/dispedit/choice.pipe.mjs +0 -79
- package/esm2022/lib/dispedit/dispedit/dispedit.component.mjs +0 -480
- package/esm2022/lib/dispedit/dispedit/dispedit.constants.mjs +0 -2
- package/esm2022/lib/dispedit/factor.pipe.mjs +0 -81
- package/esm2022/lib/dispedit/factorc.pipe.mjs +0 -99
- package/esm2022/lib/dispedit/fkselect/fkselect.component.mjs +0 -139
- package/esm2022/lib/dispedit/flags/flags.component.mjs +0 -137
- package/esm2022/lib/dispedit/m2mselect/m2mselect.component.mjs +0 -312
- package/esm2022/lib/dispedit/richedit/richedit.component.mjs +0 -126
- package/esm2022/lib/dispedit/sdelete/sdelete.component.mjs +0 -103
- package/esm2022/lib/messages/message-zone/message-zone.component.mjs +0 -53
- package/esm2022/lib/messages/message.service.mjs +0 -151
- package/esm2022/lib/modellist/model-list-fields/model-list-field-header/messages.mjs +0 -2
- package/esm2022/lib/modellist/model-list-fields/model-list-field-header/model-list-field-header.component.mjs +0 -61
- package/esm2022/lib/modellist/model-list-fields/model-list-fields-selector/model-list-fields-selector.component.mjs +0 -64
- package/esm2022/lib/modellist/model-list-fields/model-list-fields.mjs +0 -273
- package/esm2022/lib/modellist/model-list-filters/filters/filtertypes.mjs +0 -3
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.component.mjs +0 -109
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.mjs +0 -28
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.component.mjs +0 -29
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.mjs +0 -9
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.component.mjs +0 -40
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.mjs +0 -14
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.component.mjs +0 -40
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.mjs +0 -14
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetime-range-filter.component.mjs +0 -21
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetimerange-filter.mjs +0 -14
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.component.mjs +0 -49
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.mjs +0 -23
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/adapters/ban.mjs +0 -24
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.component.mjs +0 -63
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.mjs +0 -16
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.component.mjs +0 -46
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.mjs +0 -49
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.component.mjs +0 -56
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.mjs +0 -40
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.component.mjs +0 -51
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.mjs +0 -21
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.component.mjs +0 -40
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.mjs +0 -17
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.component.mjs +0 -174
- package/esm2022/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.mjs +0 -18
- package/esm2022/lib/modellist/model-list-filters/model-list-filter-group.mjs +0 -19
- package/esm2022/lib/modellist/model-list-filters/model-list-filter.mjs +0 -157
- package/esm2022/lib/modellist/model-list-filters/model-list-filters/model-list-filters.component.mjs +0 -50
- package/esm2022/lib/modellist/model-list-filters/model-list-filters-select/model-list-filters-select.component.mjs +0 -51
- package/esm2022/lib/modellist/model-list-filters/model-list-filters.mjs +0 -134
- package/esm2022/lib/modellist/model-list-paginator/model-list-paginator/model-list-paginator.component.mjs +0 -69
- package/esm2022/lib/modellist/model-list-paginator/model-list-paginator.mjs +0 -47
- package/esm2022/lib/modellist/model-list-sorter/model-list-sorter/model-list-sorter.component.mjs +0 -49
- package/esm2022/lib/modellist/model-list-sorter/model-list-sorter.mjs +0 -116
- package/esm2022/lib/modellist/model-list.service.mjs +0 -168
- package/esm2022/lib/routing/breadcrumb/breadcrumb.component.mjs +0 -138
- package/esm2022/lib/routing/routing.mjs +0 -57
- package/esm2022/lib/updates/update/update.component.mjs +0 -17
- package/esm2022/lib/updates/update.service.mjs +0 -58
- package/esm2022/lib/uploader/index.mjs +0 -6
- package/esm2022/lib/uploader/interfaces.mjs +0 -8
- package/esm2022/lib/uploader/ng-file-drop.directive.mjs +0 -81
- package/esm2022/lib/uploader/ng-file-select.directive.mjs +0 -51
- package/esm2022/lib/uploader/ngx-uploader.class.mjs +0 -308
- package/esm2022/lib/uploader/ngx-uploader.module.mjs +0 -17
- package/esm2022/lib/utils/slugify.mjs +0 -16
- package/esm2022/lib/utils/tab-memory.service.mjs +0 -80
- package/esm2022/lib/utils/template.mjs +0 -72
- package/esm2022/public-api.mjs +0 -56
- package/esm2022/solidev-data.mjs +0 -5
- package/solidev-data-0.4.8.tgz +0 -0
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { filter, first, map, tap } from 'rxjs/operators';
|
|
3
|
-
import { merge, ReplaySubject, timer } from 'rxjs';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/service-worker";
|
|
6
|
-
export class UpdateService {
|
|
7
|
-
constructor(appRef, swUpdate) {
|
|
8
|
-
this.appRef = appRef;
|
|
9
|
-
this.swUpdate = swUpdate;
|
|
10
|
-
this.stable = false;
|
|
11
|
-
this._available$ = new ReplaySubject(1);
|
|
12
|
-
this._available$.next(false);
|
|
13
|
-
const appIsStable$ = this.appRef.isStable
|
|
14
|
-
.pipe(first((isStable) => isStable))
|
|
15
|
-
.pipe(tap(() => console.log('App is stable')));
|
|
16
|
-
const checkInterval$ = timer(10 * 1000, 5 * 60 * 1000);
|
|
17
|
-
const checkWhenStable$ = merge(appIsStable$, checkInterval$);
|
|
18
|
-
const updatesAvailable = swUpdate.versionUpdates.pipe(tap((evt) => console.log('Version updates event', evt)), filter((evt) => evt.type === 'VERSION_READY'), map((evt) => ({
|
|
19
|
-
type: 'UPDATE_AVAILABLE',
|
|
20
|
-
current: evt.currentVersion,
|
|
21
|
-
available: evt.latestVersion,
|
|
22
|
-
})));
|
|
23
|
-
updatesAvailable.subscribe(async (evt) => {
|
|
24
|
-
this._available$.next(true);
|
|
25
|
-
});
|
|
26
|
-
checkWhenStable$.subscribe(async () => {
|
|
27
|
-
this.stable = true;
|
|
28
|
-
try {
|
|
29
|
-
console.log('Checking for update');
|
|
30
|
-
const res = await swUpdate.checkForUpdate();
|
|
31
|
-
console.log('Check for update result', res);
|
|
32
|
-
}
|
|
33
|
-
catch (e) {
|
|
34
|
-
console.warn('No service worker');
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
get available$() {
|
|
39
|
-
return this._available$.asObservable();
|
|
40
|
-
}
|
|
41
|
-
activate() {
|
|
42
|
-
this._available$.next(false);
|
|
43
|
-
console.log('RELOADING FULL PAGE');
|
|
44
|
-
document.location.reload();
|
|
45
|
-
}
|
|
46
|
-
dismiss() {
|
|
47
|
-
this._available$.next(false);
|
|
48
|
-
}
|
|
49
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: UpdateService, deps: [{ token: i0.ApplicationRef }, { token: i1.SwUpdate }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
50
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: UpdateService, providedIn: 'root' }); }
|
|
51
|
-
}
|
|
52
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: UpdateService, decorators: [{
|
|
53
|
-
type: Injectable,
|
|
54
|
-
args: [{
|
|
55
|
-
providedIn: 'root',
|
|
56
|
-
}]
|
|
57
|
-
}], ctorParameters: () => [{ type: i0.ApplicationRef }, { type: i1.SwUpdate }] });
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvdXBkYXRlcy91cGRhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtCLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFFLEtBQUssRUFBYyxhQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFLL0QsTUFBTSxPQUFPLGFBQWE7SUFHeEIsWUFBb0IsTUFBc0IsRUFBVSxRQUFrQjtRQUFsRCxXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVU7UUFGOUQsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUdyQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksYUFBYSxDQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUTthQUN0QyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNuQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDdkQsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsWUFBWSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQzdELE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ25ELEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUN2RCxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQTRCLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxFQUN2RSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDWixJQUFJLEVBQUUsa0JBQWtCO1lBQ3hCLE9BQU8sRUFBRSxHQUFHLENBQUMsY0FBYztZQUMzQixTQUFTLEVBQUUsR0FBRyxDQUFDLGFBQWE7U0FDN0IsQ0FBQyxDQUFDLENBQ0osQ0FBQztRQUNGLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDdkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7UUFDSCxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDcEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDbkIsSUFBSSxDQUFDO2dCQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztnQkFDbkMsTUFBTSxHQUFHLEdBQUcsTUFBTSxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQzVDLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDOUMsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQ3BDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFJRCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ25DLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVNLE9BQU87UUFDWixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDOzhHQWpEVSxhQUFhO2tIQUFiLGFBQWEsY0FGWixNQUFNOzsyRkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uUmVmLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTd1VwZGF0ZSwgVmVyc2lvblJlYWR5RXZlbnQgfSBmcm9tICdAYW5ndWxhci9zZXJ2aWNlLXdvcmtlcic7XG5pbXBvcnQgeyBmaWx0ZXIsIGZpcnN0LCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IG1lcmdlLCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCB0aW1lciB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVXBkYXRlU2VydmljZSB7XG4gIHByaXZhdGUgc3RhYmxlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLCBwcml2YXRlIHN3VXBkYXRlOiBTd1VwZGF0ZSkge1xuICAgIHRoaXMuX2F2YWlsYWJsZSQgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigxKTtcbiAgICB0aGlzLl9hdmFpbGFibGUkLm5leHQoZmFsc2UpO1xuICAgIGNvbnN0IGFwcElzU3RhYmxlJCA9IHRoaXMuYXBwUmVmLmlzU3RhYmxlXG4gICAgICAucGlwZShmaXJzdCgoaXNTdGFibGUpID0+IGlzU3RhYmxlKSlcbiAgICAgIC5waXBlKHRhcCgoKSA9PiBjb25zb2xlLmxvZygnQXBwIGlzIHN0YWJsZScpKSk7XG4gICAgY29uc3QgY2hlY2tJbnRlcnZhbCQgPSB0aW1lcigxMCAqIDEwMDAsIDUgKiA2MCAqIDEwMDApO1xuICAgIGNvbnN0IGNoZWNrV2hlblN0YWJsZSQgPSBtZXJnZShhcHBJc1N0YWJsZSQsIGNoZWNrSW50ZXJ2YWwkKTtcbiAgICBjb25zdCB1cGRhdGVzQXZhaWxhYmxlID0gc3dVcGRhdGUudmVyc2lvblVwZGF0ZXMucGlwZShcbiAgICAgIHRhcCgoZXZ0KSA9PiBjb25zb2xlLmxvZygnVmVyc2lvbiB1cGRhdGVzIGV2ZW50JywgZXZ0KSksXG4gICAgICBmaWx0ZXIoKGV2dCk6IGV2dCBpcyBWZXJzaW9uUmVhZHlFdmVudCA9PiBldnQudHlwZSA9PT0gJ1ZFUlNJT05fUkVBRFknKSxcbiAgICAgIG1hcCgoZXZ0KSA9PiAoe1xuICAgICAgICB0eXBlOiAnVVBEQVRFX0FWQUlMQUJMRScsXG4gICAgICAgIGN1cnJlbnQ6IGV2dC5jdXJyZW50VmVyc2lvbixcbiAgICAgICAgYXZhaWxhYmxlOiBldnQubGF0ZXN0VmVyc2lvbixcbiAgICAgIH0pKVxuICAgICk7XG4gICAgdXBkYXRlc0F2YWlsYWJsZS5zdWJzY3JpYmUoYXN5bmMgKGV2dCkgPT4ge1xuICAgICAgdGhpcy5fYXZhaWxhYmxlJC5uZXh0KHRydWUpO1xuICAgIH0pO1xuICAgIGNoZWNrV2hlblN0YWJsZSQuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcbiAgICAgIHRoaXMuc3RhYmxlID0gdHJ1ZTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdDaGVja2luZyBmb3IgdXBkYXRlJyk7XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHN3VXBkYXRlLmNoZWNrRm9yVXBkYXRlKCk7XG4gICAgICAgIGNvbnNvbGUubG9nKCdDaGVjayBmb3IgdXBkYXRlIHJlc3VsdCcsIHJlcyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignTm8gc2VydmljZSB3b3JrZXInKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2F2YWlsYWJsZSQ6IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj47XG5cbiAgcHVibGljIGdldCBhdmFpbGFibGUkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9hdmFpbGFibGUkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGFjdGl2YXRlKCk6IHZvaWQge1xuICAgIHRoaXMuX2F2YWlsYWJsZSQubmV4dChmYWxzZSk7XG4gICAgY29uc29sZS5sb2coJ1JFTE9BRElORyBGVUxMIFBBR0UnKTtcbiAgICBkb2N1bWVudC5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNtaXNzKCk6IHZvaWQge1xuICAgIHRoaXMuX2F2YWlsYWJsZSQubmV4dChmYWxzZSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export * from "./interfaces";
|
|
2
|
-
export * from "./ng-file-drop.directive";
|
|
3
|
-
export * from "./ng-file-select.directive";
|
|
4
|
-
export * from "./ngx-uploader.class";
|
|
5
|
-
export * from "./ngx-uploader.module";
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhL3NyYy9saWIvdXBsb2FkZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2ludGVyZmFjZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL25nLWZpbGUtZHJvcC5kaXJlY3RpdmVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL25nLWZpbGUtc2VsZWN0LmRpcmVjdGl2ZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbmd4LXVwbG9hZGVyLmNsYXNzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9uZ3gtdXBsb2FkZXIubW9kdWxlXCI7XG4iXX0=
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export var UploadStatus;
|
|
2
|
-
(function (UploadStatus) {
|
|
3
|
-
UploadStatus[UploadStatus["Queue"] = 0] = "Queue";
|
|
4
|
-
UploadStatus[UploadStatus["Uploading"] = 1] = "Uploading";
|
|
5
|
-
UploadStatus[UploadStatus["Done"] = 2] = "Done";
|
|
6
|
-
UploadStatus[UploadStatus["Cancelled"] = 3] = "Cancelled";
|
|
7
|
-
})(UploadStatus || (UploadStatus = {}));
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi91cGxvYWRlci9pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWFBLE1BQU0sQ0FBTixJQUFZLFlBS1g7QUFMRCxXQUFZLFlBQVk7SUFDdEIsaURBQUssQ0FBQTtJQUNMLHlEQUFTLENBQUE7SUFDVCwrQ0FBSSxDQUFBO0lBQ0oseURBQVMsQ0FBQTtBQUNYLENBQUMsRUFMVyxZQUFZLEtBQVosWUFBWSxRQUt2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVwbG9hZGVyT3B0aW9ucyB7XG4gIGNvbmN1cnJlbmN5OiBudW1iZXI7XG4gIGFsbG93ZWRDb250ZW50VHlwZXM/OiBzdHJpbmdbXTtcbiAgbWF4VXBsb2Fkcz86IG51bWJlcjtcbiAgbWF4RmlsZVNpemU/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmxvYkZpbGUgZXh0ZW5kcyBCbG9iIHtcbiAgbmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgZW51bSBVcGxvYWRTdGF0dXMge1xuICBRdWV1ZSxcbiAgVXBsb2FkaW5nLFxuICBEb25lLFxuICBDYW5jZWxsZWRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGxvYWRQcm9ncmVzcyB7XG4gIHN0YXR1czogVXBsb2FkU3RhdHVzO1xuICBkYXRhPzoge1xuICAgIHBlcmNlbnRhZ2U6IG51bWJlcjtcbiAgICBzcGVlZDogbnVtYmVyO1xuICAgIHNwZWVkSHVtYW46IHN0cmluZztcbiAgICBzdGFydFRpbWU6IG51bWJlciB8IG51bGw7XG4gICAgZW5kVGltZTogbnVtYmVyIHwgbnVsbDtcbiAgICBldGE6IG51bWJlciB8IG51bGw7XG4gICAgZXRhSHVtYW46IHN0cmluZyB8IG51bGw7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBsb2FkRmlsZSB7XG4gIGlkOiBzdHJpbmc7XG4gIGZpbGVJbmRleDogbnVtYmVyO1xuICBsYXN0TW9kaWZpZWREYXRlOiBEYXRlO1xuICBuYW1lOiBzdHJpbmc7XG4gIHNpemU6IG51bWJlcjtcbiAgdHlwZTogc3RyaW5nO1xuICBmb3JtOiBGb3JtRGF0YTtcbiAgcHJvZ3Jlc3M6IFVwbG9hZFByb2dyZXNzO1xuICByZXNwb25zZT86IGFueTtcbiAgcmVzcG9uc2VTdGF0dXM/OiBudW1iZXI7XG4gIHN1Yj86IFN1YnNjcmlwdGlvbiB8IGFueTtcbiAgbmF0aXZlRmlsZT86IEZpbGU7XG4gIHJlc3BvbnNlSGVhZGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBsb2FkT3V0cHV0IHtcbiAgdHlwZTogXCJhZGRlZFRvUXVldWVcIiB8IFwiYWxsQWRkZWRUb1F1ZXVlXCIgfCBcInVwbG9hZGluZ1wiIHwgXCJkb25lXCIgfCBcInN0YXJ0XCIgfCBcImNhbmNlbGxlZFwiIHwgXCJkcmFnT3ZlclwiXG4gICAgfCBcImRyYWdPdXRcIiB8IFwiZHJvcFwiIHwgXCJyZW1vdmVkXCIgfCBcInJlbW92ZWRBbGxcIiB8IFwicmVqZWN0ZWRcIjtcbiAgZmlsZT86IFVwbG9hZEZpbGU7XG4gIG5hdGl2ZUZpbGU/OiBGaWxlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwbG9hZElucHV0IHtcbiAgdHlwZTogXCJ1cGxvYWRBbGxcIiB8IFwidXBsb2FkRmlsZVwiIHwgXCJjYW5jZWxcIiB8IFwiY2FuY2VsQWxsXCIgfCBcInJlbW92ZVwiIHwgXCJyZW1vdmVBbGxcIjtcbiAgdXJsPzogc3RyaW5nO1xuICBtZXRob2Q/OiBzdHJpbmc7XG4gIGlkPzogc3RyaW5nO1xuICBmaWVsZE5hbWU/OiBzdHJpbmc7XG4gIGZpbGVJbmRleD86IG51bWJlcjtcbiAgZmlsZT86IFVwbG9hZEZpbGU7XG4gIGRhdGE/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IEJsb2IgfTtcbiAgaGVhZGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIGluY2x1ZGVXZWJLaXRGb3JtQm91bmRhcnk/OiBib29sZWFuOyAvLyBJZiBmYWxzZSwgb25seSB0aGUgZmlsZSBpcyBzZW5kIHRyb3VnaCB4aHIuc2VuZCAoV2ViS2l0Rm9ybUJvdW5kYXJ5IGlzIG9taXQpXG4gIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG59XG4iXX0=
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { Directive, EventEmitter, HostListener, Input, Output } from "@angular/core";
|
|
2
|
-
import { DataUploaderService } from "./ngx-uploader.class";
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class NgFileDropDirective {
|
|
5
|
-
constructor(elementRef) {
|
|
6
|
-
this.elementRef = elementRef;
|
|
7
|
-
this.stopEvent = (e) => {
|
|
8
|
-
e.stopPropagation();
|
|
9
|
-
e.preventDefault();
|
|
10
|
-
};
|
|
11
|
-
this.uploadOutput = new EventEmitter();
|
|
12
|
-
}
|
|
13
|
-
ngOnInit() {
|
|
14
|
-
this._sub = [];
|
|
15
|
-
const concurrency = this.options && this.options.concurrency || Number.POSITIVE_INFINITY;
|
|
16
|
-
const allowedContentTypes = this.options && this.options.allowedContentTypes || ["*"];
|
|
17
|
-
const maxUploads = this.options && this.options.maxUploads || Number.POSITIVE_INFINITY;
|
|
18
|
-
const maxFileSize = this.options && this.options.maxFileSize || Number.POSITIVE_INFINITY;
|
|
19
|
-
this.upload = new DataUploaderService(concurrency, allowedContentTypes, maxUploads, maxFileSize);
|
|
20
|
-
this.el = this.elementRef.nativeElement;
|
|
21
|
-
this._sub.push(this.upload.serviceEvents.subscribe((event) => {
|
|
22
|
-
this.uploadOutput.emit(event);
|
|
23
|
-
}));
|
|
24
|
-
if (this.uploadInput instanceof EventEmitter) {
|
|
25
|
-
this._sub.push(this.upload.initInputEvents(this.uploadInput));
|
|
26
|
-
}
|
|
27
|
-
this.el.addEventListener("drop", this.stopEvent, false);
|
|
28
|
-
this.el.addEventListener("dragenter", this.stopEvent, false);
|
|
29
|
-
this.el.addEventListener("dragover", this.stopEvent, false);
|
|
30
|
-
}
|
|
31
|
-
ngOnDestroy() {
|
|
32
|
-
if (this._sub) {
|
|
33
|
-
this._sub.forEach(sub => sub.unsubscribe());
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
onDrop(e) {
|
|
37
|
-
e.stopPropagation();
|
|
38
|
-
e.preventDefault();
|
|
39
|
-
const event = { type: "drop" };
|
|
40
|
-
this.uploadOutput.emit(event);
|
|
41
|
-
this.upload.handleFiles(e.dataTransfer.files);
|
|
42
|
-
}
|
|
43
|
-
onDragOver(e) {
|
|
44
|
-
if (!e) {
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
const event = { type: "dragOver" };
|
|
48
|
-
this.uploadOutput.emit(event);
|
|
49
|
-
}
|
|
50
|
-
onDragLeave(e) {
|
|
51
|
-
if (!e) {
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
const event = { type: "dragOut" };
|
|
55
|
-
this.uploadOutput.emit(event);
|
|
56
|
-
}
|
|
57
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: NgFileDropDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
58
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.5", type: NgFileDropDirective, selector: "[dataFileDrop]", inputs: { options: "options", uploadInput: "uploadInput" }, outputs: { uploadOutput: "uploadOutput" }, host: { listeners: { "drop": "onDrop($event)", "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)" } }, ngImport: i0 }); }
|
|
59
|
-
}
|
|
60
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: NgFileDropDirective, decorators: [{
|
|
61
|
-
type: Directive,
|
|
62
|
-
args: [{
|
|
63
|
-
selector: "[dataFileDrop]"
|
|
64
|
-
}]
|
|
65
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { options: [{
|
|
66
|
-
type: Input
|
|
67
|
-
}], uploadInput: [{
|
|
68
|
-
type: Input
|
|
69
|
-
}], uploadOutput: [{
|
|
70
|
-
type: Output
|
|
71
|
-
}], onDrop: [{
|
|
72
|
-
type: HostListener,
|
|
73
|
-
args: ["drop", ["$event"]]
|
|
74
|
-
}], onDragOver: [{
|
|
75
|
-
type: HostListener,
|
|
76
|
-
args: ["dragover", ["$event"]]
|
|
77
|
-
}], onDragLeave: [{
|
|
78
|
-
type: HostListener,
|
|
79
|
-
args: ["dragleave", ["$event"]]
|
|
80
|
-
}] } });
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctZmlsZS1kcm9wLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi91cGxvYWRlci9uZy1maWxlLWRyb3AuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQWMsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVsSCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQzs7QUFNekQsTUFBTSxPQUFPLG1CQUFtQjtJQVU5QixZQUFtQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBbUN6QyxjQUFTLEdBQUcsQ0FBQyxDQUFRLEVBQUUsRUFBRTtZQUN2QixDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDcEIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQztRQXJDQSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFnQixDQUFDO0lBQ3ZELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztRQUN6RixNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLGlCQUFpQixDQUFDO1FBQ3ZGLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFP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c0JBRGhCLFlBQVk7dUJBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVc3QixXQUFXO3NCQURqQixZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXR9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1VwbG9hZGVyT3B0aW9ucywgVXBsb2FkSW5wdXQsIFVwbG9hZE91dHB1dH0gZnJvbSBcIi4vaW50ZXJmYWNlc1wiO1xuaW1wb3J0IHtEYXRhVXBsb2FkZXJTZXJ2aWNlfSBmcm9tIFwiLi9uZ3gtdXBsb2FkZXIuY2xhc3NcIjtcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6IFwiW2RhdGFGaWxlRHJvcF1cIlxufSlcbmV4cG9ydCBjbGFzcyBOZ0ZpbGVEcm9wRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBvcHRpb25zITogVXBsb2FkZXJPcHRpb25zO1xuICBASW5wdXQoKSB1cGxvYWRJbnB1dCE6IEV2ZW50RW1pdHRlcjxVcGxvYWRJbnB1dD47XG4gIEBPdXRwdXQoKSB1cGxvYWRPdXRwdXQ6IEV2ZW50RW1pdHRlcjxVcGxvYWRPdXRwdXQ+O1xuXG4gIHB1YmxpYyB1cGxvYWQhOiBEYXRhVXBsb2FkZXJTZXJ2aWNlO1xuICBwdWJsaWMgZWwhOiBIVE1MSW5wdXRFbGVtZW50O1xuXG4gIHByaXZhdGUgX3N1YiE6IFN1YnNjcmlwdGlvbltdO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgdGhpcy51cGxvYWRPdXRwdXQgPSBuZXcgRXZlbnRFbWl0dGVyPFVwbG9hZE91dHB1dD4oKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuX3N1YiA9IFtdO1xuICAgIGNvbnN0IGNvbmN1cnJlbmN5ID0gdGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5jb25jdXJyZW5jeSB8fCBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG4gICAgY29uc3QgYWxsb3dlZENvbnRlbnRUeXBlcyA9IHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMuYWxsb3dlZENvbnRlbnRUeXBlcyB8fCBbXCIqXCJdO1xuICAgIGNvbnN0IG1heFVwbG9hZHMgPSB0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLm1heFVwbG9hZHMgfHwgTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuICAgIGNvbnN0IG1heEZpbGVTaXplID0gdGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5tYXhGaWxlU2l6ZSB8fCBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG4gICAgdGhpcy51cGxvYWQgPSBuZXcgRGF0YVVwbG9hZGVyU2VydmljZShjb25jdXJyZW5jeSwgYWxsb3dlZENvbnRlbnRUeXBlcywgbWF4VXBsb2FkcywgbWF4RmlsZVNpemUpO1xuXG4gICAgdGhpcy5lbCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgdGhpcy5fc3ViLnB1c2goXG4gICAgICB0aGlzLnVwbG9hZC5zZXJ2aWNlRXZlbnRzLnN1YnNjcmliZSgoZXZlbnQ6IFVwbG9hZE91dHB1dCkgPT4ge1xuICAgICAgICB0aGlzLnVwbG9hZE91dHB1dC5lbWl0KGV2ZW50KTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGlmICh0aGlzLnVwbG9hZElucHV0IGluc3RhbmNlb2YgRXZlbnRFbWl0dGVyKSB7XG4gICAgICB0aGlzLl9zdWIucHVzaCh0aGlzLnVwbG9hZC5pbml0SW5wdXRFdmVudHModGhpcy51cGxvYWRJbnB1dCkpO1xuICAgIH1cblxuICAgIHRoaXMuZWwuYWRkRXZlbnRMaXN0ZW5lcihcImRyb3BcIiwgdGhpcy5zdG9wRXZlbnQsIGZhbHNlKTtcbiAgICB0aGlzLmVsLmFkZEV2ZW50TGlzdGVuZXIoXCJkcmFnZW50ZXJcIiwgdGhpcy5zdG9wRXZlbnQsIGZhbHNlKTtcbiAgICB0aGlzLmVsLmFkZEV2ZW50TGlzdGVuZXIoXCJkcmFnb3ZlclwiLCB0aGlzLnN0b3BFdmVudCwgZmFsc2UpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuX3N1Yikge1xuICAgICAgdGhpcy5fc3ViLmZvckVhY2goc3ViID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcbiAgICB9XG4gIH1cblxuICBzdG9wRXZlbnQgPSAoZTogRXZlbnQpID0+IHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgfTtcblxuICBASG9zdExpc3RlbmVyKFwiZHJvcFwiLCBbXCIkZXZlbnRcIl0pXG4gIHB1YmxpYyBvbkRyb3AoZTogYW55KSB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBjb25zdCBldmVudDogVXBsb2FkT3V0cHV0ID0ge3R5cGU6IFwiZHJvcFwifTtcbiAgICB0aGlzLnVwbG9hZE91dHB1dC5lbWl0KGV2ZW50KTtcbiAgICB0aGlzLnVwbG9hZC5oYW5kbGVGaWxlcyhlLmRhdGFUcmFuc2Zlci5maWxlcyk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKFwiZHJhZ292ZXJcIiwgW1wiJGV2ZW50XCJdKVxuICBwdWJsaWMgb25EcmFnT3ZlcihlOiBFdmVudCkge1xuICAgIGlmICghZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGV2ZW50OiBVcGxvYWRPdXRwdXQgPSB7dHlwZTogXCJkcmFnT3ZlclwifTtcbiAgICB0aGlzLnVwbG9hZE91dHB1dC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoXCJkcmFnbGVhdmVcIiwgW1wiJGV2ZW50XCJdKVxuICBwdWJsaWMgb25EcmFnTGVhdmUoZTogRXZlbnQpIHtcbiAgICBpZiAoIWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBldmVudDogVXBsb2FkT3V0cHV0ID0ge3R5cGU6IFwiZHJhZ091dFwifTtcbiAgICB0aGlzLnVwbG9hZE91dHB1dC5lbWl0KGV2ZW50KTtcbiAgfVxufVxuIl19
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { Directive, EventEmitter, Input, Output } from "@angular/core";
|
|
2
|
-
import { DataUploaderService } from "./ngx-uploader.class";
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class NgFileSelectDirective {
|
|
5
|
-
constructor(elementRef) {
|
|
6
|
-
this.elementRef = elementRef;
|
|
7
|
-
this.fileListener = () => {
|
|
8
|
-
if (this.el.files) {
|
|
9
|
-
this.upload.handleFiles(this.el.files);
|
|
10
|
-
}
|
|
11
|
-
};
|
|
12
|
-
this.uploadOutput = new EventEmitter();
|
|
13
|
-
}
|
|
14
|
-
ngOnInit() {
|
|
15
|
-
this._sub = [];
|
|
16
|
-
const concurrency = this.options && this.options.concurrency || Number.POSITIVE_INFINITY;
|
|
17
|
-
const allowedContentTypes = this.options && this.options.allowedContentTypes || ["*"];
|
|
18
|
-
const maxUploads = this.options && this.options.maxUploads || Number.POSITIVE_INFINITY;
|
|
19
|
-
const maxFileSize = this.options && this.options.maxFileSize || Number.POSITIVE_INFINITY;
|
|
20
|
-
this.upload = new DataUploaderService(concurrency, allowedContentTypes, maxUploads, maxFileSize);
|
|
21
|
-
this.el = this.elementRef.nativeElement;
|
|
22
|
-
this.el.addEventListener("change", this.fileListener, false);
|
|
23
|
-
this._sub.push(this.upload.serviceEvents.subscribe((event) => {
|
|
24
|
-
this.uploadOutput.emit(event);
|
|
25
|
-
}));
|
|
26
|
-
if (this.uploadInput instanceof EventEmitter) {
|
|
27
|
-
this._sub.push(this.upload.initInputEvents(this.uploadInput));
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
ngOnDestroy() {
|
|
31
|
-
if (this.el) {
|
|
32
|
-
this.el.removeEventListener("change", this.fileListener, false);
|
|
33
|
-
this._sub.forEach(sub => sub.unsubscribe());
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: NgFileSelectDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
37
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.5", type: NgFileSelectDirective, selector: "[dataFileSelect]", inputs: { options: "options", uploadInput: "uploadInput" }, outputs: { uploadOutput: "uploadOutput" }, ngImport: i0 }); }
|
|
38
|
-
}
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: NgFileSelectDirective, decorators: [{
|
|
40
|
-
type: Directive,
|
|
41
|
-
args: [{
|
|
42
|
-
selector: "[dataFileSelect]"
|
|
43
|
-
}]
|
|
44
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { options: [{
|
|
45
|
-
type: Input
|
|
46
|
-
}], uploadInput: [{
|
|
47
|
-
type: Input
|
|
48
|
-
}], uploadOutput: [{
|
|
49
|
-
type: Output
|
|
50
|
-
}] } });
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctZmlsZS1zZWxlY3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL3VwbG9hZGVyL25nLWZpbGUtc2VsZWN0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVwRyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQzs7QUFNekQsTUFBTSxPQUFPLHFCQUFxQjtJQVVoQyxZQUFtQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBaUN6QyxpQkFBWSxHQUFHLEdBQUcsRUFBRTtZQUNsQixJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekMsQ0FBQztRQUNILENBQUMsQ0FBQztRQXBDQSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFnQixDQUFDO0lBQ3ZELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztRQUN6RixNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLGlCQUFpQixDQUFDO1FBQ3ZGLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDLGlCQUFpQixDQUFDO1FBQ3pGLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRWpHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFDeEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUU3RCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDWixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFtQixFQUFFLEVBQUU7WUFDMUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVGLElBQUksSUFBSSxDQUFDLFdBQVcsWUFBWSxZQUFZLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNoRSxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDaEUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUM5QyxDQUFDO0lBQ0gsQ0FBQzs4R0F6Q1UscUJBQXFCO2tHQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBSGpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtpQkFDN0I7K0VBRVUsT0FBTztzQkFBZixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtVcGxvYWRlck9wdGlvbnMsIFVwbG9hZE91dHB1dH0gZnJvbSBcIi4vaW50ZXJmYWNlc1wiO1xuaW1wb3J0IHtEYXRhVXBsb2FkZXJTZXJ2aWNlfSBmcm9tIFwiLi9uZ3gtdXBsb2FkZXIuY2xhc3NcIjtcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6IFwiW2RhdGFGaWxlU2VsZWN0XVwiXG59KVxuZXhwb3J0IGNsYXNzIE5nRmlsZVNlbGVjdERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgb3B0aW9ucyE6IFVwbG9hZGVyT3B0aW9ucztcbiAgQElucHV0KCkgdXBsb2FkSW5wdXQhOiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgpIHVwbG9hZE91dHB1dDogRXZlbnRFbWl0dGVyPFVwbG9hZE91dHB1dD47XG5cbiAgcHVibGljIHVwbG9hZCE6IERhdGFVcGxvYWRlclNlcnZpY2U7XG4gIHB1YmxpYyBlbCE6IEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgcHJpdmF0ZSBfc3ViITogU3Vic2NyaXB0aW9uW107XG5cbiAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICB0aGlzLnVwbG9hZE91dHB1dCA9IG5ldyBFdmVudEVtaXR0ZXI8VXBsb2FkT3V0cHV0PigpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5fc3ViID0gW107XG4gICAgY29uc3QgY29uY3VycmVuY3kgPSB0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmNvbmN1cnJlbmN5IHx8IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgICBjb25zdCBhbGxvd2VkQ29udGVudFR5cGVzID0gdGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5hbGxvd2VkQ29udGVudFR5cGVzIHx8IFtcIipcIl07XG4gICAgY29uc3QgbWF4VXBsb2FkcyA9IHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMubWF4VXBsb2FkcyB8fCBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG4gICAgY29uc3QgbWF4RmlsZVNpemUgPSB0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLm1heEZpbGVTaXplIHx8IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgICB0aGlzLnVwbG9hZCA9IG5ldyBEYXRhVXBsb2FkZXJTZXJ2aWNlKGNvbmN1cnJlbmN5LCBhbGxvd2VkQ29udGVudFR5cGVzLCBtYXhVcGxvYWRzLCBtYXhGaWxlU2l6ZSk7XG5cbiAgICB0aGlzLmVsID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5lbC5hZGRFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsIHRoaXMuZmlsZUxpc3RlbmVyLCBmYWxzZSk7XG5cbiAgICB0aGlzLl9zdWIucHVzaChcbiAgICAgIHRoaXMudXBsb2FkLnNlcnZpY2VFdmVudHMuc3Vic2NyaWJlKChldmVudDogVXBsb2FkT3V0cHV0KSA9PiB7XG4gICAgICAgIHRoaXMudXBsb2FkT3V0cHV0LmVtaXQoZXZlbnQpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgaWYgKHRoaXMudXBsb2FkSW5wdXQgaW5zdGFuY2VvZiBFdmVudEVtaXR0ZXIpIHtcbiAgICAgIHRoaXMuX3N1Yi5wdXNoKHRoaXMudXBsb2FkLmluaXRJbnB1dEV2ZW50cyh0aGlzLnVwbG9hZElucHV0KSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuZWwpIHtcbiAgICAgIHRoaXMuZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCB0aGlzLmZpbGVMaXN0ZW5lciwgZmFsc2UpO1xuICAgICAgdGhpcy5fc3ViLmZvckVhY2goc3ViID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcbiAgICB9XG4gIH1cblxuICBmaWxlTGlzdGVuZXIgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMuZWwuZmlsZXMpIHtcbiAgICAgIHRoaXMudXBsb2FkLmhhbmRsZUZpbGVzKHRoaXMuZWwuZmlsZXMpO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==
|
|
@@ -1,308 +0,0 @@
|
|
|
1
|
-
import { EventEmitter } from '@angular/core';
|
|
2
|
-
import { Observable, Subject } from 'rxjs';
|
|
3
|
-
import { finalize, mergeMap } from 'rxjs/operators';
|
|
4
|
-
import { UploadStatus, } from './interfaces';
|
|
5
|
-
export function humanizeBytes(bytes) {
|
|
6
|
-
if (bytes === 0) {
|
|
7
|
-
return '0 Byte';
|
|
8
|
-
}
|
|
9
|
-
const k = 1024;
|
|
10
|
-
const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB'];
|
|
11
|
-
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
12
|
-
return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
|
|
13
|
-
}
|
|
14
|
-
export class DataUploaderService {
|
|
15
|
-
constructor(concurrency = Number.POSITIVE_INFINITY, contentTypes = ['*'], maxUploads = Number.POSITIVE_INFINITY, maxFileSize = Number.POSITIVE_INFINITY) {
|
|
16
|
-
this.queue = [];
|
|
17
|
-
this.serviceEvents = new EventEmitter();
|
|
18
|
-
this.uploadScheduler = new Subject();
|
|
19
|
-
this.subs = [];
|
|
20
|
-
this.contentTypes = contentTypes;
|
|
21
|
-
this.maxUploads = maxUploads;
|
|
22
|
-
this.maxFileSize = maxFileSize;
|
|
23
|
-
this.uploadScheduler
|
|
24
|
-
.pipe(mergeMap((upload) => this.startUpload(upload), concurrency))
|
|
25
|
-
.subscribe((uploadOutput) => this.serviceEvents.emit(uploadOutput));
|
|
26
|
-
}
|
|
27
|
-
handleFiles(incomingFiles) {
|
|
28
|
-
let acc = [];
|
|
29
|
-
for (let i = 0; i < incomingFiles.length; i++) {
|
|
30
|
-
const futureQueueLength = acc.length + this.queue.length + 1;
|
|
31
|
-
const checkFile = incomingFiles[i];
|
|
32
|
-
if (this.isContentTypeAllowed(checkFile.type) &&
|
|
33
|
-
futureQueueLength <= this.maxUploads &&
|
|
34
|
-
this.isFileSizeAllowed(checkFile.size)) {
|
|
35
|
-
acc = acc.concat(checkFile);
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
const rejectedFile = this.makeUploadFile(checkFile, i);
|
|
39
|
-
this.serviceEvents.emit({ type: 'rejected', file: rejectedFile });
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
for (let i = 0; i < acc.length; i++) {
|
|
43
|
-
const file = acc[i];
|
|
44
|
-
const uploadFile = this.makeUploadFile(file, i);
|
|
45
|
-
this.serviceEvents.emit({ type: 'addedToQueue', file: uploadFile });
|
|
46
|
-
this.queue.push(uploadFile);
|
|
47
|
-
}
|
|
48
|
-
this.serviceEvents.emit({ type: 'allAddedToQueue' });
|
|
49
|
-
}
|
|
50
|
-
initInputEvents(input) {
|
|
51
|
-
return input.subscribe((event) => {
|
|
52
|
-
switch (event.type) {
|
|
53
|
-
case 'uploadFile':
|
|
54
|
-
const uploadFileIndex = this.queue.findIndex((file) => file === event.file);
|
|
55
|
-
if (uploadFileIndex !== -1 && event.file) {
|
|
56
|
-
this.uploadScheduler.next({
|
|
57
|
-
file: this.queue[uploadFileIndex],
|
|
58
|
-
event: event,
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
break;
|
|
62
|
-
case 'uploadAll':
|
|
63
|
-
const files = this.queue.filter((file) => file.progress.status === UploadStatus.Queue);
|
|
64
|
-
files.forEach((file) => this.uploadScheduler.next({ file: file, event: event }));
|
|
65
|
-
break;
|
|
66
|
-
case 'cancel':
|
|
67
|
-
const id = event.id || null;
|
|
68
|
-
if (!id) {
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
const subs = this.subs.filter((sub) => sub.id === id);
|
|
72
|
-
subs.forEach((sub) => {
|
|
73
|
-
if (sub.sub) {
|
|
74
|
-
sub.sub.unsubscribe();
|
|
75
|
-
const fileIndex = this.queue.findIndex((file) => file.id === id);
|
|
76
|
-
if (fileIndex !== -1) {
|
|
77
|
-
this.queue[fileIndex].progress.status = UploadStatus.Cancelled;
|
|
78
|
-
this.serviceEvents.emit({
|
|
79
|
-
type: 'cancelled',
|
|
80
|
-
file: this.queue[fileIndex],
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
});
|
|
85
|
-
break;
|
|
86
|
-
case 'cancelAll':
|
|
87
|
-
this.subs.forEach((sub) => {
|
|
88
|
-
if (sub.sub) {
|
|
89
|
-
sub.sub.unsubscribe();
|
|
90
|
-
}
|
|
91
|
-
const file = this.queue.find((uploadFile) => uploadFile.id === sub.id);
|
|
92
|
-
if (file) {
|
|
93
|
-
file.progress.status = UploadStatus.Cancelled;
|
|
94
|
-
this.serviceEvents.emit({ type: 'cancelled', file: file });
|
|
95
|
-
}
|
|
96
|
-
});
|
|
97
|
-
break;
|
|
98
|
-
case 'remove':
|
|
99
|
-
if (!event.id) {
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
const i = this.queue.findIndex((file) => file.id === event.id);
|
|
103
|
-
if (i !== -1) {
|
|
104
|
-
const file = this.queue[i];
|
|
105
|
-
this.queue.splice(i, 1);
|
|
106
|
-
this.serviceEvents.emit({ type: 'removed', file: file });
|
|
107
|
-
}
|
|
108
|
-
break;
|
|
109
|
-
case 'removeAll':
|
|
110
|
-
if (this.queue.length) {
|
|
111
|
-
this.queue = [];
|
|
112
|
-
this.serviceEvents.emit({ type: 'removedAll' });
|
|
113
|
-
}
|
|
114
|
-
break;
|
|
115
|
-
}
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
startUpload(upload) {
|
|
119
|
-
return new Observable((observer) => {
|
|
120
|
-
const sub = this.uploadFile(upload.file, upload.event)
|
|
121
|
-
.pipe(finalize(() => {
|
|
122
|
-
if (!observer.closed) {
|
|
123
|
-
observer.complete();
|
|
124
|
-
}
|
|
125
|
-
}))
|
|
126
|
-
.subscribe({
|
|
127
|
-
next: (output) => {
|
|
128
|
-
observer.next(output);
|
|
129
|
-
},
|
|
130
|
-
error: (err) => {
|
|
131
|
-
observer.error(err);
|
|
132
|
-
observer.complete();
|
|
133
|
-
},
|
|
134
|
-
complete: () => {
|
|
135
|
-
observer.complete();
|
|
136
|
-
},
|
|
137
|
-
});
|
|
138
|
-
this.subs.push({ id: upload.file.id, sub: sub });
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
uploadFile(file, event) {
|
|
142
|
-
return new Observable((observer) => {
|
|
143
|
-
const url = event.url || '';
|
|
144
|
-
const method = event.method || 'POST';
|
|
145
|
-
const data = event.data || {};
|
|
146
|
-
const headers = event.headers || {};
|
|
147
|
-
const xhr = new XMLHttpRequest();
|
|
148
|
-
const time = new Date().getTime();
|
|
149
|
-
let progressStartTime = (file.progress.data && file.progress.data.startTime) || time;
|
|
150
|
-
let speed = 0;
|
|
151
|
-
let eta = null;
|
|
152
|
-
xhr.upload.addEventListener('progress', (e) => {
|
|
153
|
-
if (e.lengthComputable) {
|
|
154
|
-
const percentage = Math.round((e.loaded * 100) / e.total);
|
|
155
|
-
const diff = new Date().getTime() - time;
|
|
156
|
-
speed = Math.round((e.loaded / diff) * 1000);
|
|
157
|
-
progressStartTime =
|
|
158
|
-
(file.progress.data && file.progress.data.startTime) ||
|
|
159
|
-
new Date().getTime();
|
|
160
|
-
eta = Math.ceil((e.total - e.loaded) / speed);
|
|
161
|
-
file.progress = {
|
|
162
|
-
status: UploadStatus.Uploading,
|
|
163
|
-
data: {
|
|
164
|
-
percentage: percentage,
|
|
165
|
-
speed: speed,
|
|
166
|
-
speedHuman: `${humanizeBytes(speed)}/s`,
|
|
167
|
-
startTime: progressStartTime,
|
|
168
|
-
endTime: null,
|
|
169
|
-
eta: eta,
|
|
170
|
-
etaHuman: this.secondsToHuman(eta),
|
|
171
|
-
},
|
|
172
|
-
};
|
|
173
|
-
observer.next({ type: 'uploading', file: file });
|
|
174
|
-
}
|
|
175
|
-
}, false);
|
|
176
|
-
xhr.upload.addEventListener('error', (e) => {
|
|
177
|
-
observer.error(e);
|
|
178
|
-
observer.complete();
|
|
179
|
-
});
|
|
180
|
-
xhr.onreadystatechange = () => {
|
|
181
|
-
if (xhr.readyState === XMLHttpRequest.DONE) {
|
|
182
|
-
const speedAverage = Math.round((file.size / (new Date().getTime() - progressStartTime)) * 1000);
|
|
183
|
-
file.progress = {
|
|
184
|
-
status: UploadStatus.Done,
|
|
185
|
-
data: {
|
|
186
|
-
percentage: 100,
|
|
187
|
-
speed: speedAverage,
|
|
188
|
-
speedHuman: `${humanizeBytes(speedAverage)}/s`,
|
|
189
|
-
startTime: progressStartTime,
|
|
190
|
-
endTime: new Date().getTime(),
|
|
191
|
-
eta: eta,
|
|
192
|
-
etaHuman: this.secondsToHuman(eta || 0),
|
|
193
|
-
},
|
|
194
|
-
};
|
|
195
|
-
file.responseStatus = xhr.status;
|
|
196
|
-
try {
|
|
197
|
-
file.response = JSON.parse(xhr.response);
|
|
198
|
-
}
|
|
199
|
-
catch (e) {
|
|
200
|
-
file.response = xhr.response;
|
|
201
|
-
}
|
|
202
|
-
file.responseHeaders = this.parseResponseHeaders(xhr.getAllResponseHeaders());
|
|
203
|
-
observer.next({ type: 'done', file: file });
|
|
204
|
-
observer.complete();
|
|
205
|
-
}
|
|
206
|
-
};
|
|
207
|
-
xhr.open(method, url, true);
|
|
208
|
-
xhr.withCredentials = !!event.withCredentials;
|
|
209
|
-
try {
|
|
210
|
-
const uploadFile = file.nativeFile;
|
|
211
|
-
const uploadIndex = this.queue.findIndex((outFile) => outFile.nativeFile === uploadFile);
|
|
212
|
-
if (this.queue[uploadIndex].progress.status === UploadStatus.Cancelled) {
|
|
213
|
-
observer.complete();
|
|
214
|
-
}
|
|
215
|
-
Object.keys(headers).forEach((key) => xhr.setRequestHeader(key, headers[key]));
|
|
216
|
-
let bodyToSend;
|
|
217
|
-
if (event.includeWebKitFormBoundary !== false) {
|
|
218
|
-
Object.keys(data).forEach((key) => file.form.append(key, data[key]));
|
|
219
|
-
file.form.append(event.fieldName || 'file', uploadFile, uploadFile.name);
|
|
220
|
-
bodyToSend = file.form;
|
|
221
|
-
}
|
|
222
|
-
else {
|
|
223
|
-
bodyToSend = uploadFile;
|
|
224
|
-
}
|
|
225
|
-
this.serviceEvents.emit({ type: 'start', file: file });
|
|
226
|
-
xhr.send(bodyToSend);
|
|
227
|
-
}
|
|
228
|
-
catch (e) {
|
|
229
|
-
observer.complete();
|
|
230
|
-
}
|
|
231
|
-
return () => {
|
|
232
|
-
xhr.abort();
|
|
233
|
-
};
|
|
234
|
-
});
|
|
235
|
-
}
|
|
236
|
-
secondsToHuman(sec) {
|
|
237
|
-
return new Date(sec * 1000).toISOString().substring(11, 11 + 8);
|
|
238
|
-
}
|
|
239
|
-
generateId() {
|
|
240
|
-
return Math.random().toString(36).substring(7);
|
|
241
|
-
}
|
|
242
|
-
setContentTypes(contentTypes) {
|
|
243
|
-
if (typeof contentTypes !== 'undefined' && contentTypes instanceof Array) {
|
|
244
|
-
if (contentTypes.find((type) => type === '*') !== undefined) {
|
|
245
|
-
this.contentTypes = ['*'];
|
|
246
|
-
}
|
|
247
|
-
else {
|
|
248
|
-
this.contentTypes = contentTypes;
|
|
249
|
-
}
|
|
250
|
-
return;
|
|
251
|
-
}
|
|
252
|
-
this.contentTypes = ['*'];
|
|
253
|
-
}
|
|
254
|
-
allContentTypesAllowed() {
|
|
255
|
-
return this.contentTypes.find((type) => type === '*') !== undefined;
|
|
256
|
-
}
|
|
257
|
-
isContentTypeAllowed(mimetype) {
|
|
258
|
-
if (this.allContentTypesAllowed()) {
|
|
259
|
-
return true;
|
|
260
|
-
}
|
|
261
|
-
return (this.contentTypes.find((type) => type === mimetype) !== undefined);
|
|
262
|
-
}
|
|
263
|
-
isFileSizeAllowed(fileSize) {
|
|
264
|
-
if (!this.maxFileSize) {
|
|
265
|
-
return true;
|
|
266
|
-
}
|
|
267
|
-
return fileSize <= this.maxFileSize;
|
|
268
|
-
}
|
|
269
|
-
makeUploadFile(file, index) {
|
|
270
|
-
return {
|
|
271
|
-
fileIndex: index,
|
|
272
|
-
id: this.generateId(),
|
|
273
|
-
name: file.name,
|
|
274
|
-
size: file.size,
|
|
275
|
-
type: file.type,
|
|
276
|
-
form: new FormData(),
|
|
277
|
-
progress: {
|
|
278
|
-
status: UploadStatus.Queue,
|
|
279
|
-
data: {
|
|
280
|
-
percentage: 0,
|
|
281
|
-
speed: 0,
|
|
282
|
-
speedHuman: `${humanizeBytes(0)}/s`,
|
|
283
|
-
startTime: null,
|
|
284
|
-
endTime: null,
|
|
285
|
-
eta: null,
|
|
286
|
-
etaHuman: null,
|
|
287
|
-
},
|
|
288
|
-
},
|
|
289
|
-
lastModifiedDate: new Date(file.lastModified),
|
|
290
|
-
sub: undefined,
|
|
291
|
-
nativeFile: file,
|
|
292
|
-
};
|
|
293
|
-
}
|
|
294
|
-
parseResponseHeaders(httpHeaders) {
|
|
295
|
-
if (!httpHeaders) {
|
|
296
|
-
return {};
|
|
297
|
-
}
|
|
298
|
-
return httpHeaders
|
|
299
|
-
.split('\n')
|
|
300
|
-
.map((x) => x.split(/: */, 2))
|
|
301
|
-
.filter((x) => x[0])
|
|
302
|
-
.reduce((acc, x) => {
|
|
303
|
-
acc[x[0]] = x[1];
|
|
304
|
-
return acc;
|
|
305
|
-
}, {});
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXVwbG9hZGVyLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL3VwbG9hZGVyL25neC11cGxvYWRlci5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFLTCxZQUFZLEdBQ2IsTUFBTSxjQUFjLENBQUM7QUFFdEIsTUFBTSxVQUFVLGFBQWEsQ0FBQyxLQUFhO0lBQ3pDLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2hCLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDZixNQUFNLEtBQUssR0FBYSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEUsTUFBTSxDQUFDLEdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUU1RCxPQUFPLFVBQVUsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUUsQ0FBQztBQUVELE1BQU0sT0FBTyxtQkFBbUI7SUFTOUIsWUFDRSxjQUFzQixNQUFNLENBQUMsaUJB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QUFnQixFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDN0MsR0FBRyxFQUFFLFNBQVM7WUFDZCxVQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDO0lBQ0osQ0FBQztJQUVPLG9CQUFvQixDQUFDLFdBQW1CO1FBQzlDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCxPQUFPLFdBQVc7YUFDZixLQUFLLENBQUMsSUFBSSxDQUFDO2FBQ1gsR0FBRyxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNyQyxNQUFNLENBQUMsQ0FBQyxDQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM3QixNQUFNLENBQUMsQ0FBQyxHQUE4QixFQUFFLENBQVcsRUFBRSxFQUFFO1lBQ3RELEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakIsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDWCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmluYWxpemUsIG1lcmdlTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgQmxvYkZpbGUsXG4gIFVwbG9hZEZpbGUsXG4gIFVwbG9hZElucHV0LFxuICBVcGxvYWRPdXRwdXQsXG4gIFVwbG9hZFN0YXR1cyxcbn0gZnJvbSAnLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGh1bWFuaXplQnl0ZXMoYnl0ZXM6IG51bWJlcik6IHN0cmluZyB7XG4gIGlmIChieXRlcyA9PT0gMCkge1xuICAgIHJldHVybiAnMCBCeXRlJztcbiAgfVxuXG4gIGNvbnN0IGsgPSAxMDI0O1xuICBjb25zdCBzaXplczogc3RyaW5nW10gPSBbJ0J5dGVzJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJ107XG4gIGNvbnN0IGk6IG51bWJlciA9IE1hdGguZmxvb3IoTWF0aC5sb2coYnl0ZXMpIC8gTWF0aC5sb2coaykpO1xuXG4gIHJldHVybiBwYXJzZUZsb2F0KChieXRlcyAvIE1hdGgucG93KGssIGkpKS50b0ZpeGVkKDIpKSArICcgJyArIHNpemVzW2ldO1xufVxuXG5leHBvcnQgY2xhc3MgRGF0YVVwbG9hZGVyU2VydmljZSB7XG4gIHF1ZXVlOiBVcGxvYWRGaWxlW107XG4gIHNlcnZpY2VFdmVudHM6IEV2ZW50RW1pdHRlcjxVcGxvYWRPdXRwdXQ+O1xuICB1cGxvYWRTY2hlZHVsZXI6IFN1YmplY3Q8eyBmaWxlOiBVcGxvYWRGaWxlOyBldmVudDogVXBsb2FkSW5wdXQgfT47XG4gIHN1YnM6IHsgaWQ6IHN0cmluZzsgc3ViOiBTdWJzY3JpcHRpb24gfVtdO1xuICBjb250ZW50VHlwZXM6IHN0cmluZ1tdO1xuICBtYXhVcGxvYWRzOiBudW1iZXI7XG4gIG1heEZpbGVTaXplOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY29uY3VycmVuY3k6IG51bWJlciA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcbiAgICBjb250ZW50VHlwZXM6IHN0cmluZ1tdID0gWycqJ10sXG4gICAgbWF4VXBsb2FkczogbnVtYmVyID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuICAgIG1heEZpbGVTaXplOiBudW1iZXIgPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFlcbiAgKSB7XG4gICAgdGhpcy5xdWV1ZSA9IFtdO1xuICAgIHRoaXMuc2VydmljZUV2ZW50cyA9IG5ldyBFdmVudEVtaXR0ZXI8VXBsb2FkT3V0cHV0PigpO1xuICAgIHRoaXMudXBsb2FkU2NoZWR1bGVyID0gbmV3IFN1YmplY3QoKTtcbiAgICB0aGlzLnN1YnMgPSBbXTtcbiAgICB0aGlzLmNvbnRlbnRUeXBlcyA9IGNvbnRlbnRUeXBlcztcbiAgICB0aGlzLm1heFVwbG9hZHMgPSBtYXhVcGxvYWRzO1xuICAgIHRoaXMubWF4RmlsZVNpemUgPSBtYXhGaWxlU2l6ZTtcblxuICAgIHRoaXMudXBsb2FkU2NoZWR1bGVyXG4gICAgICAucGlwZShtZXJnZU1hcCgodXBsb2FkKSA9PiB0aGlzLnN0YXJ0VXBsb2FkKHVwbG9hZCksIGNvbmN1cnJlbmN5KSlcbiAgICAgIC5zdWJzY3JpYmUoKHVwbG9hZE91dHB1dCkgPT4gdGhpcy5zZXJ2aWNlRXZlbnRzLmVtaXQodXBsb2FkT3V0cHV0KSk7XG4gIH1cblxuICBoYW5kbGVGaWxlcyhpbmNvbWluZ0ZpbGVzOiBGaWxlTGlzdCk6IHZvaWQge1xuICAgIGxldCBhY2M6IEZpbGVbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbmNvbWluZ0ZpbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBmdXR1cmVRdWV1ZUxlbmd0aCA9IGFjYy5sZW5ndGggKyB0aGlzLnF1ZXVlLmxlbmd0aCArIDE7XG4gICAgICBjb25zdCBjaGVja0ZpbGUgPSBpbmNvbWluZ0ZpbGVzW2ldO1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmlzQ29udGVudFR5cGVBbGxvd2VkKGNoZWNrRmlsZS50eXBlKSAmJlxuICAgICAgICBmdXR1cmVRdWV1ZUxlbmd0aCA8PSB0aGlzLm1heFVwbG9hZHMgJiZcbiAgICAgICAgdGhpcy5pc0ZpbGVTaXplQWxsb3dlZChjaGVja0ZpbGUuc2l6ZSlcbiAgICAgICkge1xuICAgICAgICBhY2MgPSBhY2MuY29uY2F0KGNoZWNrRmlsZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZWplY3RlZEZpbGU6IFVwbG9hZEZpbGUgPSB0aGlzLm1ha2VVcGxvYWRGaWxlKGNoZWNrRmlsZSwgaSk7XG4gICAgICAgIHRoaXMuc2VydmljZUV2ZW50cy5lbWl0KHsgdHlwZTogJ3JlamVjdGVkJywgZmlsZTogcmVqZWN0ZWRGaWxlIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFjYy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZmlsZSA9IGFjY1tpXTtcbiAgICAgIGNvbnN0IHVwbG9hZEZpbGU6IFVwbG9hZEZpbGUgPSB0aGlzLm1ha2VVcGxvYWRGaWxlKGZpbGUsIGkpO1xuICAgICAgdGhpcy5zZXJ2aWNlRXZlbnRzLmVtaXQoeyB0eXBlOiAnYWRkZWRUb1F1ZXVlJywgZmlsZTogdXBsb2FkRmlsZSB9KTtcbiAgICAgIHRoaXMucXVldWUucHVzaCh1cGxvYWRGaWxlKTtcbiAgICB9XG4gICAgdGhpcy5zZXJ2aWNlRXZlbnRzLmVtaXQoeyB0eXBlOiAnYWxsQWRkZWRUb1F1ZXVlJyB9KTtcbiAgfVxuXG4gIGluaXRJbnB1dEV2ZW50cyhpbnB1dDogRXZlbnRFbWl0dGVyPFVwbG9hZElucHV0Pik6IFN1YnNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIGlucHV0LnN1YnNjcmliZSgoZXZlbnQ6IFVwbG9hZElucHV0KSA9PiB7XG4gICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgICAgY2FzZSAndXBsb2FkRmlsZSc6XG4gICAgICAgICAgY29uc3QgdXBsb2FkRmlsZUluZGV4ID0gdGhpcy5xdWV1ZS5maW5kSW5kZXgoXG4gICAgICAgICAgICAoZmlsZSkgPT4gZmlsZSA9PT0gZXZlbnQuZmlsZVxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKHVwbG9hZEZpbGVJbmRleCAhPT0gLTEgJiYgZXZlbnQuZmlsZSkge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRTY2hlZHVsZXIubmV4dCh7XG4gICAgICAgICAgICAgIGZpbGU6IHRoaXMucXVldWVbdXBsb2FkRmlsZUluZGV4XSxcbiAgICAgICAgICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd1cGxvYWRBbGwnOlxuICAgICAgICAgIGNvbnN0IGZpbGVzID0gdGhpcy5xdWV1ZS5maWx0ZXIoXG4gICAgICAgICAgICAoZmlsZSkgPT4gZmlsZS5wcm9ncmVzcy5zdGF0dXMgPT09IFVwbG9hZFN0YXR1cy5RdWV1ZVxuICAgICAgICAgICk7XG4gICAgICAgICAgZmlsZXMuZm9yRWFjaCgoZmlsZSkgPT5cbiAgICAgICAgICAgIHRoaXMudXBsb2FkU2NoZWR1bGVyLm5leHQoeyBmaWxlOiBmaWxlLCBldmVudDogZXZlbnQgfSlcbiAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdjYW5jZWwnOlxuICAgICAgICAgIGNvbnN0IGlkID0gZXZlbnQuaWQgfHwgbnVsbDtcbiAgICAgICAgICBpZiAoIWlkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHN1YnMgPSB0aGlzLnN1YnMuZmlsdGVyKChzdWIpID0+IHN1Yi5pZCA9PT0gaWQpO1xuICAgICAgICAgIHN1YnMuZm9yRWFjaCgoc3ViKSA9PiB7XG4gICAgICAgICAgICBpZiAoc3ViLnN1Yikge1xuICAgICAgICAgICAgICBzdWIuc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgIGNvbnN0IGZpbGVJbmRleCA9IHRoaXMucXVldWUuZmluZEluZGV4KChmaWxlKSA9PiBmaWxlLmlkID09PSBpZCk7XG4gICAgICAgICAgICAgIGlmIChmaWxlSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5xdWV1ZVtmaWxlSW5kZXhdLnByb2dyZXNzLnN0YXR1cyA9IFVwbG9hZFN0YXR1cy5DYW5jZWxsZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlRXZlbnRzLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ2NhbmNlbGxlZCcsXG4gICAgICAgICAgICAgICAgICBmaWxlOiB0aGlzLnF1ZXVlW2ZpbGVJbmRleF0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnY2FuY2VsQWxsJzpcbiAgICAgICAgICB0aGlzLnN1YnMuZm9yRWFjaCgoc3ViKSA9PiB7XG4gICAgICAgICAgICBpZiAoc3ViLnN1Yikge1xuICAgICAgICAgICAgICBzdWIuc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGZpbGUgPSB0aGlzLnF1ZXVlLmZpbmQoXG4gICAgICAgICAgICAgICh1cGxvYWRGaWxlKSA9PiB1cGxvYWRGaWxlLmlkID09PSBzdWIuaWRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoZmlsZSkge1xuICAgICAgICAgICAgICBmaWxlLnByb2dyZXNzLnN0YXR1cyA9IFVwbG9hZFN0YXR1cy5DYW5jZWxsZWQ7XG4gICAgICAgICAgICAgIHRoaXMuc2VydmljZUV2ZW50cy5lbWl0KHsgdHlwZTogJ2NhbmNlbGxlZCcsIGZpbGU6IGZpbGUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3JlbW92ZSc6XG4gICAgICAgICAgaWYgKCFldmVudC5pZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGkgPSB0aGlzLnF1ZXVlLmZpbmRJbmRleCgoZmlsZSkgPT4gZmlsZS5pZCA9PT0gZXZlbnQuaWQpO1xuICAgICAgICAgIGlmIChpICE9PSAtMSkge1xuICAgICAgICAgICAgY29uc3QgZmlsZSA9IHRoaXMucXVldWVbaV07XG4gICAgICAgICAgICB0aGlzLnF1ZXVlLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgIHRoaXMuc2VydmljZUV2ZW50cy5lbWl0KHsgdHlwZTogJ3JlbW92ZWQnLCBmaWxlOiBmaWxlIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncmVtb3ZlQWxsJzpcbiAgICAgICAgICBpZiAodGhpcy5xdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMucXVldWUgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuc2VydmljZUV2ZW50cy5lbWl0KHsgdHlwZTogJ3JlbW92ZWRBbGwnIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXJ0VXBsb2FkKHVwbG9hZDoge1xuICAgIGZpbGU6IFVwbG9hZEZpbGU7XG4gICAgZXZlbnQ6IFVwbG9hZElucHV0O1xuICB9KTogT2JzZXJ2YWJsZTxVcGxvYWRPdXRwdXQ+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyKSA9PiB7XG4gICAgICBjb25zdCBzdWIgPSB0aGlzLnVwbG9hZEZpbGUodXBsb2FkLmZpbGUsIHVwbG9hZC5ldmVudClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFvYnNlcnZlci5jbG9zZWQpIHtcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IChvdXRwdXQpID0+IHtcbiAgICAgICAgICAgIG9ic2VydmVyLm5leHQob3V0cHV0KTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgICBvYnNlcnZlci5lcnJvcihlcnIpO1xuICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XG4gICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICB0aGlzLnN1YnMucHVzaCh7IGlkOiB1cGxvYWQuZmlsZS5pZCwgc3ViOiBzdWIgfSk7XG4gICAgfSk7XG4gIH1cblxuICB1cGxvYWRGaWxlKGZpbGU6IFVwbG9hZEZpbGUsIGV2ZW50OiBVcGxvYWRJbnB1dCk6IE9ic2VydmFibGU8VXBsb2FkT3V0cHV0PiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcikgPT4ge1xuICAgICAgY29uc3QgdXJsID0gZXZlbnQudXJsIHx8ICcnO1xuICAgICAgY29uc3QgbWV0aG9kID0gZXZlbnQubWV0aG9kIHx8ICdQT1NUJztcbiAgICAgIGNvbnN0IGRhdGEgPSBldmVudC5kYXRhIHx8IHt9O1xuICAgICAgY29uc3QgaGVhZGVycyA9IGV2ZW50LmhlYWRlcnMgfHwge307XG5cbiAgICAgIGNvbnN0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgY29uc3QgdGltZTogbnVtYmVyID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICBsZXQgcHJvZ3Jlc3NTdGFydFRpbWU6IG51bWJlciA9XG4gICAgICAgIChmaWxlLnByb2dyZXNzLmRhdGEgJiYgZmlsZS5wcm9ncmVzcy5kYXRhLnN0YXJ0VGltZSkgfHwgdGltZTtcbiAgICAgIGxldCBzcGVlZCA9IDA7XG4gICAgICBsZXQgZXRhOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgeGhyLnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAncHJvZ3Jlc3MnLFxuICAgICAgICAoZTogUHJvZ3Jlc3NFdmVudCkgPT4ge1xuICAgICAgICAgIGlmIChlLmxlbmd0aENvbXB1dGFibGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHBlcmNlbnRhZ2UgPSBNYXRoLnJvdW5kKChlLmxvYWRlZCAqIDEwMCkgLyBlLnRvdGFsKTtcbiAgICAgICAgICAgIGNvbnN0IGRpZmYgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHRpbWU7XG4gICAgICAgICAgICBzcGVlZCA9IE1hdGgucm91bmQoKGUubG9hZGVkIC8gZGlmZikgKiAxMDAwKTtcbiAgICAgICAgICAgIHByb2dyZXNzU3RhcnRUaW1lID1cbiAgICAgICAgICAgICAgKGZpbGUucHJvZ3Jlc3MuZGF0YSAmJiBmaWxlLnByb2dyZXNzLmRhdGEuc3RhcnRUaW1lKSB8fFxuICAgICAgICAgICAgICBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgICAgIGV0YSA9IE1hdGguY2VpbCgoZS50b3RhbCAtIGUubG9hZGVkKSAvIHNwZWVkKTtcblxuICAgICAgICAgICAgZmlsZS5wcm9ncmVzcyA9IHtcbiAgICAgICAgICAgICAgc3RhdHVzOiBVcGxvYWRTdGF0dXMuVXBsb2FkaW5nLFxuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgcGVyY2VudGFnZTogcGVyY2VudGFnZSxcbiAgICAgICAgICAgICAgICBzcGVlZDogc3BlZWQsXG4gICAgICAgICAgICAgICAgc3BlZWRIdW1hbjogYCR7aHVtYW5pemVCeXRlcyhzcGVlZCl9L3NgLFxuICAgICAgICAgICAgICAgIHN0YXJ0VGltZTogcHJvZ3Jlc3NTdGFydFRpbWUsXG4gICAgICAgICAgICAgICAgZW5kVGltZTogbnVsbCxcbiAgICAgICAgICAgICAgICBldGE6IGV0YSxcbiAgICAgICAgICAgICAgICBldGFIdW1hbjogdGhpcy5zZWNvbmRzVG9IdW1hbihldGEpLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh7IHR5cGU6ICd1cGxvYWRpbmcnLCBmaWxlOiBmaWxlIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZmFsc2VcbiAgICAgICk7XG5cbiAgICAgIHhoci51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCAoZTogRXZlbnQpID0+IHtcbiAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZSk7XG4gICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICB9KTtcblxuICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgaWYgKHhoci5yZWFkeVN0YXRlID09PSBYTUxIdHRwUmVxdWVzdC5ET05FKSB7XG4gICAgICAgICAgY29uc3Qgc3BlZWRBdmVyYWdlID0gTWF0aC5yb3VuZChcbiAgICAgICAgICAgIChmaWxlLnNpemUgLyAobmV3IERhdGUoKS5nZXRUaW1lKCkgLSBwcm9ncmVzc1N0YXJ0VGltZSkpICogMTAwMFxuICAgICAgICAgICk7XG4gICAgICAgICAgZmlsZS5wcm9ncmVzcyA9IHtcbiAgICAgICAgICAgIHN0YXR1czogVXBsb2FkU3RhdHVzLkRvbmUsXG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgIHBlcmNlbnRhZ2U6IDEwMCxcbiAgICAgICAgICAgICAgc3BlZWQ6IHNwZWVkQXZlcmFnZSxcbiAgICAgICAgICAgICAgc3BlZWRIdW1hbjogYCR7aHVtYW5pemVCeXRlcyhzcGVlZEF2ZXJhZ2UpfS9zYCxcbiAgICAgICAgICAgICAgc3RhcnRUaW1lOiBwcm9ncmVzc1N0YXJ0VGltZSxcbiAgICAgICAgICAgICAgZW5kVGltZTogbmV3IERhdGUoKS5nZXRUaW1lKCksXG4gICAgICAgICAgICAgIGV0YTogZXRhLFxuICAgICAgICAgICAgICBldGFIdW1hbjogdGhpcy5zZWNvbmRzVG9IdW1hbihldGEgfHwgMCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBmaWxlLnJlc3BvbnNlU3RhdHVzID0geGhyLnN0YXR1cztcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgZmlsZS5yZXNwb25zZSA9IEpTT04ucGFyc2UoeGhyLnJlc3BvbnNlKTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBmaWxlLnJlc3BvbnNlID0geGhyLnJlc3BvbnNlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGZpbGUucmVzcG9uc2VIZWFkZXJzID0gdGhpcy5wYXJzZVJlc3BvbnNlSGVhZGVycyhcbiAgICAgICAgICAgIHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBvYnNlcnZlci5uZXh0KHsgdHlwZTogJ2RvbmUnLCBmaWxlOiBmaWxlIH0pO1xuXG4gICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgeGhyLm9wZW4obWV0aG9kLCB1cmwsIHRydWUpO1xuICAgICAgeGhyLndpdGhDcmVkZW50aWFscyA9ICEhZXZlbnQud2l0aENyZWRlbnRpYWxzO1xuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB1cGxvYWRGaWxlID0gPEJsb2JGaWxlPmZpbGUubmF0aXZlRmlsZTtcbiAgICAgICAgY29uc3QgdXBsb2FkSW5kZXggPSB0aGlzLnF1ZXVlLmZpbmRJbmRleChcbiAgICAgICAgICAob3V0RmlsZSkgPT4gb3V0RmlsZS5uYXRpdmVGaWxlID09PSB1cGxvYWRGaWxlXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMucXVldWVbdXBsb2FkSW5kZXhdLnByb2dyZXNzLnN0YXR1cyA9PT0gVXBsb2FkU3RhdHVzLkNhbmNlbGxlZFxuICAgICAgICApIHtcbiAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgT2JqZWN0LmtleXMoaGVhZGVycykuZm9yRWFjaCgoa2V5KSA9PlxuICAgICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKGtleSwgaGVhZGVyc1trZXldKVxuICAgICAgICApO1xuXG4gICAgICAgIGxldCBib2R5VG9TZW5kOiBGb3JtRGF0YSB8IEJsb2JGaWxlO1xuXG4gICAgICAgIGlmIChldmVudC5pbmNsdWRlV2ViS2l0Rm9ybUJvdW5kYXJ5ICE9PSBmYWxzZSkge1xuICAgICAgICAgIE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goKGtleSkgPT4gZmlsZS5mb3JtLmFwcGVuZChrZXksIGRhdGFba2V5XSkpO1xuICAgICAgICAgIGZpbGUuZm9ybS5hcHBlbmQoXG4gICAgICAgICAgICBldmVudC5maWVsZE5hbWUgfHwgJ2ZpbGUnLFxuICAgICAgICAgICAgdXBsb2FkRmlsZSxcbiAgICAgICAgICAgIHVwbG9hZEZpbGUubmFtZVxuICAgICAgICAgICk7XG4gICAgICAgICAgYm9keVRvU2VuZCA9IGZpbGUuZm9ybTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBib2R5VG9TZW5kID0gdXBsb2FkRmlsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VydmljZUV2ZW50cy5lbWl0KHsgdHlwZTogJ3N0YXJ0JywgZmlsZTogZmlsZSB9KTtcbiAgICAgICAgeGhyLnNlbmQoYm9keVRvU2VuZCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHhoci5hYm9ydCgpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHNlY29uZHNUb0h1bWFuKHNlYzogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IERhdGUoc2VjICogMTAwMCkudG9JU09TdHJpbmcoKS5zdWJzdHJpbmcoMTEsIDExICsgOCk7XG4gIH1cblxuICBnZW5lcmF0ZUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZyg3KTtcbiAgfVxuXG4gIHNldENvbnRlbnRUeXBlcyhjb250ZW50VHlwZXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiBjb250ZW50VHlwZXMgIT09ICd1bmRlZmluZWQnICYmIGNvbnRlbnRUeXBlcyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBpZiAoY29udGVudFR5cGVzLmZpbmQoKHR5cGU6IHN0cmluZykgPT4gdHlwZSA9PT0gJyonKSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuY29udGVudFR5cGVzID0gWycqJ107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbnRlbnRUeXBlcyA9IGNvbnRlbnRUeXBlcztcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jb250ZW50VHlwZXMgPSBbJyonXTtcbiAgfVxuXG4gIGFsbENvbnRlbnRUeXBlc0FsbG93ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudFR5cGVzLmZpbmQoKHR5cGU6IHN0cmluZykgPT4gdHlwZSA9PT0gJyonKSAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgaXNDb250ZW50VHlwZUFsbG93ZWQobWltZXR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmFsbENvbnRlbnRUeXBlc0FsbG93ZWQoKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmNvbnRlbnRUeXBlcy5maW5kKCh0eXBlOiBzdHJpbmcpID0+IHR5cGUgPT09IG1pbWV0eXBlKSAhPT0gdW5kZWZpbmVkXG4gICAgKTtcbiAgfVxuXG4gIGlzRmlsZVNpemVBbGxvd2VkKGZpbGVTaXplOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMubWF4RmlsZVNpemUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmlsZVNpemUgPD0gdGhpcy5tYXhGaWxlU2l6ZTtcbiAgfVxuXG4gIG1ha2VVcGxvYWRGaWxlKGZpbGU6IEZpbGUsIGluZGV4OiBudW1iZXIpOiBVcGxvYWRGaWxlIHtcbiAgICByZXR1cm4ge1xuICAgICAgZmlsZUluZGV4OiBpbmRleCxcbiAgICAgIGlkOiB0aGlzLmdlbmVyYXRlSWQoKSxcbiAgICAgIG5hbWU6IGZpbGUubmFtZSxcbiAgICAgIHNpemU6IGZpbGUuc2l6ZSxcbiAgICAgIHR5cGU6IGZpbGUudHlwZSxcbiAgICAgIGZvcm06IG5ldyBGb3JtRGF0YSgpLFxuICAgICAgcHJvZ3Jlc3M6IHtcbiAgICAgICAgc3RhdHVzOiBVcGxvYWRTdGF0dXMuUXVldWUsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBwZXJjZW50YWdlOiAwLFxuICAgICAgICAgIHNwZWVkOiAwLFxuICAgICAgICAgIHNwZWVkSHVtYW46IGAke2h1bWFuaXplQnl0ZXMoMCl9L3NgLFxuICAgICAgICAgIHN0YXJ0VGltZTogbnVsbCxcbiAgICAgICAgICBlbmRUaW1lOiBudWxsLFxuICAgICAgICAgIGV0YTogbnVsbCxcbiAgICAgICAgICBldGFIdW1hbjogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBsYXN0TW9kaWZpZWREYXRlOiBuZXcgRGF0ZShmaWxlLmxhc3RNb2RpZmllZCksXG4gICAgICBzdWI6IHVuZGVmaW5lZCxcbiAgICAgIG5hdGl2ZUZpbGU6IGZpbGUsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VSZXNwb25zZUhlYWRlcnMoaHR0cEhlYWRlcnM6IHN0cmluZyk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIGlmICghaHR0cEhlYWRlcnMpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICByZXR1cm4gaHR0cEhlYWRlcnNcbiAgICAgIC5zcGxpdCgnXFxuJylcbiAgICAgIC5tYXAoKHg6IHN0cmluZykgPT4geC5zcGxpdCgvOiAqLywgMikpXG4gICAgICAuZmlsdGVyKCh4OiBzdHJpbmdbXSkgPT4geFswXSlcbiAgICAgIC5yZWR1Y2UoKGFjYzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSwgeDogc3RyaW5nW10pID0+IHtcbiAgICAgICAgYWNjW3hbMF1dID0geFsxXTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIHt9KTtcbiAgfVxufVxuIl19
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { NgModule } from "@angular/core";
|
|
2
|
-
import { NgFileDropDirective } from "./ng-file-drop.directive";
|
|
3
|
-
import { NgFileSelectDirective } from "./ng-file-select.directive";
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class NgxUploaderModule {
|
|
6
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: NgxUploaderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
7
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.5", ngImport: i0, type: NgxUploaderModule, declarations: [NgFileDropDirective, NgFileSelectDirective], exports: [NgFileDropDirective, NgFileSelectDirective] }); }
|
|
8
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: NgxUploaderModule }); }
|
|
9
|
-
}
|
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: NgxUploaderModule, decorators: [{
|
|
11
|
-
type: NgModule,
|
|
12
|
-
args: [{
|
|
13
|
-
declarations: [NgFileDropDirective, NgFileSelectDirective],
|
|
14
|
-
exports: [NgFileDropDirective, NgFileSelectDirective]
|
|
15
|
-
}]
|
|
16
|
-
}] });
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXVwbG9hZGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi91cGxvYWRlci9uZ3gtdXBsb2FkZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7O0FBTWpFLE1BQU0sT0FBTyxpQkFBaUI7OEdBQWpCLGlCQUFpQjsrR0FBakIsaUJBQWlCLGlCQUhiLG1CQUFtQixFQUFFLHFCQUFxQixhQUMvQyxtQkFBbUIsRUFBRSxxQkFBcUI7K0dBRXpDLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFKN0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxxQkFBcUIsQ0FBQztvQkFDMUQsT0FBTyxFQUFFLENBQUMsbUJBQW1CLEVBQUUscUJBQXFCLENBQUM7aUJBQ3REIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7TmdGaWxlRHJvcERpcmVjdGl2ZX0gZnJvbSBcIi4vbmctZmlsZS1kcm9wLmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHtOZ0ZpbGVTZWxlY3REaXJlY3RpdmV9IGZyb20gXCIuL25nLWZpbGUtc2VsZWN0LmRpcmVjdGl2ZVwiO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtOZ0ZpbGVEcm9wRGlyZWN0aXZlLCBOZ0ZpbGVTZWxlY3REaXJlY3RpdmVdLFxuICBleHBvcnRzOiBbTmdGaWxlRHJvcERpcmVjdGl2ZSwgTmdGaWxlU2VsZWN0RGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hVcGxvYWRlck1vZHVsZSB7XG59XG4iXX0=
|