@elderbyte/ngx-starter 18.1.0-beta2 → 18.2.0-beta

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 (25) hide show
  1. package/esm2022/lib/common/utils/input-utils.mjs +6 -0
  2. package/esm2022/lib/components/data-view/table/activation/elder-table-activation.directive.mjs +14 -7
  3. package/esm2022/lib/components/files/blob-viewer/elder-blob-viewer.component.mjs +17 -23
  4. package/esm2022/lib/components/files/elder-file-select.directive.mjs +83 -85
  5. package/esm2022/lib/components/files/listing/file-entry.mjs +15 -30
  6. package/esm2022/lib/components/files/listing/file-listing-rx.mjs +70 -30
  7. package/esm2022/lib/components/forms/directives/validation/validators/elder-multiple-of.validator.mjs +17 -13
  8. package/fesm2022/elderbyte-ngx-starter.mjs +154 -425
  9. package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
  10. package/lib/common/utils/input-utils.d.ts +18 -0
  11. package/lib/components/data-view/table/activation/elder-table-activation.directive.d.ts +4 -1
  12. package/lib/components/files/blob-viewer/elder-blob-viewer.component.d.ts +3 -3
  13. package/lib/components/files/elder-file-select.directive.d.ts +23 -16
  14. package/lib/components/files/listing/file-entry.d.ts +1 -10
  15. package/lib/components/files/listing/file-listing-rx.d.ts +6 -3
  16. package/lib/components/forms/directives/validation/validators/elder-multiple-of.validator.d.ts +2 -4
  17. package/package.json +1 -1
  18. package/esm2022/lib/components/files/elder-file-select-input.mjs +0 -119
  19. package/esm2022/lib/components/files/file-system-api.mjs +0 -96
  20. package/esm2022/lib/components/files/listing/file-listing-system-handle.mjs +0 -35
  21. package/esm2022/lib/components/files/listing/file-listing-webkit.mjs +0 -77
  22. package/lib/components/files/elder-file-select-input.d.ts +0 -59
  23. package/lib/components/files/file-system-api.d.ts +0 -86
  24. package/lib/components/files/listing/file-listing-system-handle.d.ts +0 -21
  25. package/lib/components/files/listing/file-listing-webkit.d.ts +0 -26
@@ -0,0 +1,18 @@
1
+ /**
2
+ * To support empty input attributes and fall back to a default value.
3
+ * This is centralized in case Angular ever decides to change empty attributes
4
+ * to another value than an empty string (undefined, null etc.)
5
+ *
6
+ * e.g.
7
+ * <some-component directiveA> </some-component>
8
+ *
9
+ * .@Input("directiveA")
10
+ * public set valueA(input: SomeType | InputUtils): SomeType {
11
+ * return input instanceOf InputUtils ? SomeType.Empty() : input;
12
+ * }
13
+ *
14
+ */
15
+ export type NoInputArgs = '';
16
+ export declare class InputUtils {
17
+ static isNoInputArgs(input: any): input is NoInputArgs;
18
+ }
@@ -6,6 +6,7 @@ import { ElderTableActivationOptions } from './elder-table-activation-options';
6
6
  import { ItemActivationOptions } from './item-activation-options';
7
7
  import { ItemActivationEvent } from './item-activation-event';
8
8
  import { ElderActivationContext } from './elder-activation-context';
9
+ import { NoInputArgs } from '../../../../common/utils/input-utils';
9
10
  import * as i0 from "@angular/core";
10
11
  export declare class ElderTableActivationDirective<T> implements ElderActivationContext<T>, AfterViewInit, OnDestroy {
11
12
  private readonly elderTable;
@@ -20,7 +21,7 @@ export declare class ElderTableActivationDirective<T> implements ElderActivation
20
21
  private _data;
21
22
  readonly activeItem$: BehaviorSubject<T>;
22
23
  readonly rows$: BehaviorSubject<ElderTableRowDirective<T>[]>;
23
- activationOptions: ElderTableActivationOptions;
24
+ private _activationOptions;
24
25
  /***************************************************************************
25
26
  * *
26
27
  * Constructor *
@@ -45,6 +46,8 @@ export declare class ElderTableActivationDirective<T> implements ElderActivation
45
46
  * Properties *
46
47
  * *
47
48
  **************************************************************************/
49
+ set activationOptions(options: ElderTableActivationOptions | NoInputArgs);
50
+ get activationOptions(): ElderTableActivationOptions;
48
51
  get activeItemEventChange(): Observable<ItemActivationEvent<T>>;
49
52
  get activeItemChange(): Observable<T>;
50
53
  get activeItem(): T;
@@ -4,6 +4,7 @@ import { BlobUrl } from '../blob-url';
4
4
  import { BehaviorSubject } from 'rxjs';
5
5
  import { HttpClientPristine } from '../../../common/http/http-client-pristine';
6
6
  import { ElderToastService } from '../../toasts/elder-toast.service';
7
+ import { BooleanInput } from '@angular/cdk/coercion';
7
8
  import * as i0 from "@angular/core";
8
9
  declare class BlobContext {
9
10
  readonly safeUrl: SafeUrl;
@@ -43,7 +44,6 @@ export declare class ElderBlobViewerComponent implements OnInit, OnDestroy {
43
44
  private readonly _url$;
44
45
  private readonly _mimeType$;
45
46
  private readonly destroy$;
46
- private _displayUnknownAsText;
47
47
  /***************************************************************************
48
48
  * *
49
49
  * Constructor *
@@ -66,7 +66,7 @@ export declare class ElderBlobViewerComponent implements OnInit, OnDestroy {
66
66
  * Attempt to display unknown blobs as text. (i.e. mime-type is octet-stream)
67
67
  * @param unknownAsText
68
68
  */
69
- set displayUnknownAsText(unknownAsText: boolean);
69
+ displayUnknownAsText: import("@angular/core").InputSignalWithTransform<boolean, BooleanInput>;
70
70
  /**
71
71
  * Set a in memory blob to display.
72
72
  * @param blob
@@ -102,6 +102,6 @@ export declare class ElderBlobViewerComponent implements OnInit, OnDestroy {
102
102
  private canDisplayAsText;
103
103
  private downloadAsText;
104
104
  static ɵfac: i0.ɵɵFactoryDeclaration<ElderBlobViewerComponent, never>;
105
- static ɵcmp: i0.ɵɵComponentDeclaration<ElderBlobViewerComponent, "elder-blob-viewer", never, { "displayUnknownAsText": { "alias": "displayUnknownAsText"; "required": false; }; "blob": { "alias": "blob"; "required": false; }; "blobUrl": { "alias": "blobUrl"; "required": false; }; "url": { "alias": "url"; "required": false; }; "mimeType": { "alias": "mimeType"; "required": false; }; }, {}, never, never, true, never>;
105
+ static ɵcmp: i0.ɵɵComponentDeclaration<ElderBlobViewerComponent, "elder-blob-viewer", never, { "displayUnknownAsText": { "alias": "displayUnknownAsText"; "required": false; "isSignal": true; }; "blob": { "alias": "blob"; "required": false; }; "blobUrl": { "alias": "blobUrl"; "required": false; }; "url": { "alias": "url"; "required": false; }; "mimeType": { "alias": "mimeType"; "required": false; }; }, {}, never, never, true, never>;
106
106
  }
107
107
  export {};
@@ -1,31 +1,29 @@
1
- import { DestroyRef, ElementRef, EventEmitter, OnDestroy, OnInit, Renderer2 } from '@angular/core';
1
+ import { ElementRef, EventEmitter, OnDestroy, OnInit, Renderer2 } from '@angular/core';
2
2
  import { BooleanInput } from '@angular/cdk/coercion';
3
3
  import { FileEntry } from './listing/file-entry';
4
- import { FileSystemDirectoryPickerOptions, FileSystemFilePickerOptions } from './file-system-api';
5
- import { Observable } from 'rxjs';
6
4
  import * as i0 from "@angular/core";
7
5
  export declare class ElderFileSelectDirective implements OnInit, OnDestroy {
8
- private renderer;
9
6
  private el;
10
- private destroyRef;
7
+ private renderer;
11
8
  /***************************************************************************
12
9
  * *
13
10
  * Fields *
14
11
  * *
15
12
  **************************************************************************/
16
13
  private readonly logger;
14
+ private _fileInput;
15
+ private _unlisten;
17
16
  readonly elderFileSelectChange: EventEmitter<FileEntry[]>;
18
17
  readonly elderSingleFileSelectChange: EventEmitter<File>;
19
- private _legacyInput;
20
- private _filePickerOptions;
21
- private _directoryPickerOptions;
22
- private _useDirectoryPicker;
18
+ private _multiple;
19
+ private _directory;
20
+ private _accept;
23
21
  /***************************************************************************
24
22
  * *
25
23
  * Constructor *
26
24
  * *
27
25
  **************************************************************************/
28
- constructor(renderer: Renderer2, el: ElementRef, destroyRef: DestroyRef);
26
+ constructor(el: ElementRef, renderer: Renderer2);
29
27
  /***************************************************************************
30
28
  * *
31
29
  * Life Cycle *
@@ -39,9 +37,6 @@ export declare class ElderFileSelectDirective implements OnInit, OnDestroy {
39
37
  * *
40
38
  **************************************************************************/
41
39
  set elderFileSelect(value: string);
42
- private buildTypeOption;
43
- private isFileExtension;
44
- private isMimeType;
45
40
  set elderFileSelectMultiple(value: BooleanInput);
46
41
  /**
47
42
  * Allow the user to select a directory. All files that are recursively contained are selected.
@@ -55,14 +50,26 @@ export declare class ElderFileSelectDirective implements OnInit, OnDestroy {
55
50
  * *
56
51
  **************************************************************************/
57
52
  onClick(event: any): void;
53
+ openFileSelectDialog(): void;
58
54
  /***************************************************************************
59
55
  * *
60
56
  * Private methods *
61
57
  * *
62
58
  **************************************************************************/
63
- private pushFileChanges;
64
- openFilePicker(pickerOpts: FileSystemFilePickerOptions): Observable<FileEntry[]>;
65
- openDirectoryPicker(pickerOpts: FileSystemDirectoryPickerOptions): Observable<FileEntry[]>;
59
+ /**
60
+ * <input type="file"
61
+ * hidden #fileInput
62
+ * [multiple]="multiple"
63
+ * [accept]="accept"
64
+ * (change)="fileInputChanged()"
65
+ * />
66
+ */
67
+ private createFileSelect;
68
+ private removeFileSelect;
69
+ private fileInputChanged;
70
+ private clearFileList;
71
+ private emitFileList;
72
+ private toFileEntries;
66
73
  static ɵfac: i0.ɵɵFactoryDeclaration<ElderFileSelectDirective, never>;
67
74
  static ɵdir: i0.ɵɵDirectiveDeclaration<ElderFileSelectDirective, "[elderFileSelect]", never, { "elderFileSelect": { "alias": "elderFileSelect"; "required": false; }; "elderFileSelectMultiple": { "alias": "elderFileSelectMultiple"; "required": false; }; "elderFileSelectDirectory": { "alias": "elderFileSelectDirectory"; "required": false; }; }, { "elderFileSelectChange": "elderFileSelectChange"; "elderSingleFileSelectChange": "elderSingleFileSelectChange"; }, never, never, true, never>;
68
75
  }
@@ -1,4 +1,3 @@
1
- import { Observable } from 'rxjs';
2
1
  /**
3
2
  * Represents a file and the relative path where the user has selected it.
4
3
  * This is useful if the user has selected a folder and files
@@ -11,7 +10,6 @@ export declare class FileEntry {
11
10
  * to this file. Only relevant if the user has selected a folder.
12
11
  */
13
12
  readonly relativeParent: string | null;
14
- readonly fileHandle?: FileSystemFileHandle;
15
13
  /**
16
14
  * Creates a file Entry without an explicit relative parent.
17
15
  *
@@ -20,16 +18,10 @@ export declare class FileEntry {
20
18
  * which is also supported by this method.
21
19
  */
22
20
  static ofFile(file: File): FileEntry;
23
- /**
24
- * Creates an Observable of a File Entry by resolving its FileSystemFileHandle.
25
- * @param fileHandle
26
- * @param rootDirectory is needed to build a relative parent
27
- */
28
- static ofFileHandle(fileHandle: FileSystemFileHandle, rootDirectory?: FileSystemDirectoryHandle): Observable<FileEntry>;
29
21
  /**
30
22
  * Creates a file Entry with a relative parent path
31
23
  */
32
- static relativeFile(file: File, relativeParent: string | null, fileHandle?: FileSystemFileHandle): FileEntry;
24
+ static relativeFile(file: File, relativeParent: string | null): FileEntry;
33
25
  static toFileMap(entries: FileEntry[]): Map<File, FileEntry>;
34
26
  static toFileArray(entries: FileEntry[]): File[];
35
27
  /***************************************************************************
@@ -56,5 +48,4 @@ export declare class FileEntry {
56
48
  * Returns a string which specifies the file's path relative to the directory selected by the user.
57
49
  */
58
50
  private static buildRelativePath;
59
- private static buildRelativeParent;
60
51
  }
@@ -9,12 +9,15 @@ export declare class FileListingRx {
9
9
  * *
10
10
  **************************************************************************/
11
11
  toFileList(transferItemList: DataTransferItemList): Observable<FileEntry[]>;
12
+ listFilesRecursive(entry: FileSystemEntry): Observable<FileEntry[]>;
12
13
  /***************************************************************************
13
14
  * *
14
15
  * Private methods *
15
16
  * *
16
17
  **************************************************************************/
17
- private resolveTransferItem;
18
- private legacyFileListing;
19
- private fallbackFileListing;
18
+ private listFilesRecursiveAsync;
19
+ private observableFile;
20
+ private trimStaringSlash;
21
+ private readEntries;
22
+ private consumeReaderToCompletion;
20
23
  }
@@ -21,9 +21,7 @@ export declare class ElderMultipleOfValidator implements Validator {
21
21
  * Fields *
22
22
  * *
23
23
  **************************************************************************/
24
- private _factor;
25
- set elderMultipleOf(value: number | number[] | null);
26
- get factor(): number | number[] | null;
24
+ factor: import("@angular/core").InputSignalWithTransform<number | number[], number | "" | number[]>;
27
25
  /***************************************************************************
28
26
  * *
29
27
  * Public API *
@@ -31,5 +29,5 @@ export declare class ElderMultipleOfValidator implements Validator {
31
29
  **************************************************************************/
32
30
  validate(control: AbstractControl): ValidationErrors | null;
33
31
  static ɵfac: i0.ɵɵFactoryDeclaration<ElderMultipleOfValidator, never>;
34
- static ɵdir: i0.ɵɵDirectiveDeclaration<ElderMultipleOfValidator, "[elderMultipleOf][formControlName],[elderMultipleOf][formControl],[elderMultipleOf][ngModel]", never, { "elderMultipleOf": { "alias": "elderMultipleOf"; "required": false; }; }, {}, never, never, true, never>;
32
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ElderMultipleOfValidator, "[elderMultipleOf][formControlName],[elderMultipleOf][formControl],[elderMultipleOf][ngModel]", never, { "factor": { "alias": "elderMultipleOf"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
35
33
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elderbyte/ngx-starter",
3
- "version": "18.1.0-beta2",
3
+ "version": "18.2.0-beta",
4
4
  "peerDependencies": {
5
5
  "@angular/core": "^17.0.0 || ^18.0.0",
6
6
  "@angular/common": "^17.0.0 || ^18.0.0",
@@ -1,119 +0,0 @@
1
- import { FileEntry } from './listing/file-entry';
2
- import { coerceBooleanProperty } from '@angular/cdk/coercion';
3
- import { LoggerFactory } from '@elderbyte/ts-logger';
4
- import { Subject } from 'rxjs';
5
- export class ElderFileSelectInput {
6
- /***************************************************************************
7
- * *
8
- * Constructor *
9
- * *
10
- **************************************************************************/
11
- constructor(renderer, el) {
12
- this.renderer = renderer;
13
- this.el = el;
14
- /***************************************************************************
15
- * *
16
- * Fields *
17
- * *
18
- **************************************************************************/
19
- this.logger = LoggerFactory.getLogger(this.constructor.name);
20
- this._filesSelected = new Subject;
21
- }
22
- /***************************************************************************
23
- * *
24
- * Properties *
25
- * *
26
- **************************************************************************/
27
- get filesSelected() {
28
- return this._filesSelected;
29
- }
30
- set elderFileSelect(value) {
31
- this._accept = value;
32
- if (this._fileInput) {
33
- this.renderer.setProperty(this._fileInput, 'accept', value);
34
- }
35
- }
36
- set elderFileSelectMultiple(value) {
37
- this._multiple = coerceBooleanProperty(value);
38
- if (this._fileInput) {
39
- this.renderer.setProperty(this._fileInput, 'multiple', value);
40
- }
41
- }
42
- set elderFileSelectDirectory(value) {
43
- this._directory = coerceBooleanProperty(value);
44
- if (this._fileInput) {
45
- this.renderer.setAttribute(this._fileInput, 'webkitdirectory', 'true');
46
- this.renderer.setAttribute(this._fileInput, 'directory', 'true');
47
- }
48
- }
49
- /***************************************************************************
50
- * *
51
- * Public API *
52
- * *
53
- **************************************************************************/
54
- /**
55
- * <input type="file"
56
- * hidden #fileInput
57
- * [multiple]="multiple"
58
- * [accept]="accept"
59
- * (change)="fileInputChanged()"
60
- * />
61
- */
62
- createFileSelect() {
63
- this._fileInput = this.renderer.createElement('input');
64
- this.renderer.setAttribute(this._fileInput, 'hidden', 'true');
65
- this.renderer.setAttribute(this._fileInput, 'type', 'file');
66
- this.renderer.appendChild(this.el.nativeElement, this._fileInput);
67
- if (this._accept) {
68
- this.renderer.setProperty(this._fileInput, 'accept', this._accept);
69
- }
70
- if (this._multiple) {
71
- this.renderer.setProperty(this._fileInput, 'multiple', this._multiple);
72
- }
73
- if (this._directory) {
74
- this.renderer.setAttribute(this._fileInput, 'webkitdirectory', 'true');
75
- this.renderer.setAttribute(this._fileInput, 'directory', 'true');
76
- }
77
- this._unlisten = this.renderer.listen(this._fileInput, 'change', event => {
78
- this.fileInputChanged(this._fileInput.files);
79
- });
80
- }
81
- removeFileSelect() {
82
- if (this._unlisten) {
83
- this._unlisten();
84
- this._unlisten = null;
85
- }
86
- if (this._fileInput) {
87
- this.renderer.removeChild(this.el.nativeElement, this._fileInput);
88
- this._fileInput = null;
89
- }
90
- }
91
- openFileSelectDialog() {
92
- this._fileInput.click();
93
- }
94
- /***************************************************************************
95
- * *
96
- * Private methods *
97
- * *
98
- **************************************************************************/
99
- fileInputChanged(fileList) {
100
- const files = this.toFileEntries(fileList);
101
- this.logger.debug('fileInputChanged, files:', files);
102
- this.clearFileList();
103
- this._filesSelected.next(files);
104
- }
105
- clearFileList() {
106
- // not nice but works
107
- this._fileInput.value = null;
108
- }
109
- toFileEntries(fileList) {
110
- const files = [];
111
- for (const key in fileList) {
112
- if (!isNaN(parseInt(key, 0))) {
113
- files.push(FileEntry.ofFile(fileList[key]));
114
- }
115
- }
116
- return files;
117
- }
118
- }
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItZmlsZS1zZWxlY3QtaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2ZpbGVzL2VsZGVyLWZpbGUtc2VsZWN0LWlucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUUvQyxPQUFPLEVBQWUscUJBQXFCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFhLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUd6QyxNQUFNLE9BQU8sb0JBQW9CO0lBcUIvQjs7OztnRkFJNEU7SUFFNUUsWUFDVSxRQUFtQixFQUNuQixFQUFjO1FBRGQsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBMUJ4Qjs7OztvRkFJNEU7UUFFM0QsV0FBTSxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQVN4RCxtQkFBYyxHQUFHLElBQUksT0FBb0IsQ0FBQztJQWEzRCxDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRTVFLElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsZUFBZSxDQUFDLEtBQWE7UUFDdEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDOUQsQ0FBQztJQUNILENBQUM7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Q0FBQyxVQUFVLENBQUMsQ0FBQztZQUNsRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUVNLG9CQUFvQjtRQUN6QixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFHRDs7OztnRkFJNEU7SUFHcEUsZ0JBQWdCLENBQUMsUUFBa0I7UUFDekMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVPLGFBQWE7UUFDbkIscUJBQXFCO1FBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRU8sYUFBYSxDQUFDLFFBQWtCO1FBQ3RDLE1BQU0sS0FBSyxHQUFnQixFQUFFLENBQUM7UUFDOUIsS0FBSyxNQUFNLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUM3QixLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QyxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUlGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtGaWxlRW50cnl9IGZyb20gJy4vbGlzdGluZy9maWxlLWVudHJ5JztcbmltcG9ydCB7RWxlbWVudFJlZiwgUmVuZGVyZXIyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Qm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHl9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge0xvZ2dlckZhY3Rvcnl9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5cblxuZXhwb3J0IGNsYXNzIEVsZGVyRmlsZVNlbGVjdElucHV0IHtcblxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuICBwcml2YXRlIF9maWxlSW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQ7XG4gIHByaXZhdGUgX3VubGlzdGVuOiAoKSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgX211bHRpcGxlOiBib29sZWFuO1xuICBwcml2YXRlIF9kaXJlY3Rvcnk6IGJvb2xlYW47XG4gIHByaXZhdGUgX2FjY2VwdDogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbGVzU2VsZWN0ZWQgPSBuZXcgU3ViamVjdDxGaWxlRW50cnlbXT47XG5cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZlxuICApIHtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBnZXQgZmlsZXNTZWxlY3RlZCgpOiBPYnNlcnZhYmxlPEZpbGVFbnRyeVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbGVzU2VsZWN0ZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IGVsZGVyRmlsZVNlbGVjdCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fYWNjZXB0ID0gdmFsdWU7XG4gICAgaWYgKHRoaXMuX2ZpbGVJbnB1dCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLl9maWxlSW5wdXQsICdhY2NlcHQnLCB2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldCBlbGRlckZpbGVTZWxlY3RNdWx0aXBsZSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fbXVsdGlwbGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIGlmICh0aGlzLl9maWxlSW5wdXQpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZmlsZUlucHV0LCAnbXVsdGlwbGUnLCB2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldCBlbGRlckZpbGVTZWxlY3REaXJlY3RvcnkodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMuX2RpcmVjdG9yeSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgaWYgKHRoaXMuX2ZpbGVJbnB1dCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5fZmlsZUlucHV0LCAnd2Via2l0ZGlyZWN0b3J5JywgJ3RydWUnKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuX2ZpbGVJbnB1dCwgJ2RpcmVjdG9yeScsICd0cnVlJyk7XG4gICAgfVxuICB9XG5cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogPGlucHV0IHR5cGU9XCJmaWxlXCJcbiAgICogICAgIGhpZGRlbiAjZmlsZUlucHV0XG4gICAqICAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICAgKiAgICAgW2FjY2VwdF09XCJhY2NlcHRcIlxuICAgKiAgICAgKGNoYW5nZSk9XCJmaWxlSW5wdXRDaGFuZ2VkKClcIlxuICAgKiAvPlxuICAgKi9cbiAgcHVibGljIGNyZWF0ZUZpbGVTZWxlY3QoKTogdm9pZCB7XG5cbiAgICB0aGlzLl9maWxlSW5wdXQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5fZmlsZUlucHV0LCAnaGlkZGVuJywgJ3RydWUnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLl9maWxlSW5wdXQsICd0eXBlJywgJ2ZpbGUnKTtcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgdGhpcy5fZmlsZUlucHV0KTtcblxuICAgIGlmICh0aGlzLl9hY2NlcHQpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZmlsZUlucHV0LCAnYWNjZXB0JywgdGhpcy5fYWNjZXB0KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX211bHRpcGxlKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuX2ZpbGVJbnB1dCwgJ211bHRpcGxlJywgdGhpcy5fbXVsdGlwbGUpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fZGlyZWN0b3J5KSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLl9maWxlSW5wdXQsICd3ZWJraXRkaXJlY3RvcnknLCAndHJ1ZScpO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5fZmlsZUlucHV0LCAnZGlyZWN0b3J5JywgJ3RydWUnKTtcbiAgICB9XG5cbiAgICB0aGlzLl91bmxpc3RlbiA9IHRoaXMucmVuZGVyZXIubGlzdGVuKFxuICAgICAgdGhpcy5fZmlsZUlucHV0LFxuICAgICAgJ2NoYW5nZScsXG4gICAgICBldmVudCA9PiB7XG4gICAgICAgIHRoaXMuZmlsZUlucHV0Q2hhbmdlZCh0aGlzLl9maWxlSW5wdXQuZmlsZXMpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlRmlsZVNlbGVjdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdW5saXN0ZW4pIHtcbiAgICAgIHRoaXMuX3VubGlzdGVuKCk7XG4gICAgICB0aGlzLl91bmxpc3RlbiA9IG51bGw7XG4gICAgfVxuICAgIGlmICh0aGlzLl9maWxlSW5wdXQpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5lbC5uYXRpdmVFbGVtZW50LCB0aGlzLl9maWxlSW5wdXQpO1xuICAgICAgdGhpcy5fZmlsZUlucHV0ID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3BlbkZpbGVTZWxlY3REaWFsb2coKTogdm9pZCB7XG4gICAgdGhpcy5fZmlsZUlucHV0LmNsaWNrKCk7XG4gIH1cblxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5cbiAgcHJpdmF0ZSBmaWxlSW5wdXRDaGFuZ2VkKGZpbGVMaXN0OiBGaWxlTGlzdCk6IHZvaWQge1xuICAgIGNvbnN0IGZpbGVzID0gdGhpcy50b0ZpbGVFbnRyaWVzKGZpbGVMaXN0KTtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnZmlsZUlucHV0Q2hhbmdlZCwgZmlsZXM6JywgZmlsZXMpO1xuICAgIHRoaXMuY2xlYXJGaWxlTGlzdCgpO1xuICAgIHRoaXMuX2ZpbGVzU2VsZWN0ZWQubmV4dChmaWxlcyk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyRmlsZUxpc3QoKSB7XG4gICAgLy8gbm90IG5pY2UgYnV0IHdvcmtzXG4gICAgdGhpcy5fZmlsZUlucHV0LnZhbHVlID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgdG9GaWxlRW50cmllcyhmaWxlTGlzdDogRmlsZUxpc3QpOiBGaWxlRW50cnlbXSB7XG4gICAgY29uc3QgZmlsZXM6IEZpbGVFbnRyeVtdID0gW107XG4gICAgZm9yIChjb25zdCBrZXkgaW4gZmlsZUxpc3QpIHtcbiAgICAgIGlmICghaXNOYU4ocGFyc2VJbnQoa2V5LCAwKSkpIHtcbiAgICAgICAgZmlsZXMucHVzaChGaWxlRW50cnkub2ZGaWxlKGZpbGVMaXN0W2tleV0pKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZpbGVzO1xuICB9XG5cblxuXG59XG4iXX0=
@@ -1,96 +0,0 @@
1
- import { from, of, throwError } from 'rxjs';
2
- import { map } from 'rxjs/operators';
3
- /***************************************************************************
4
- * *
5
- * FileSystem API *
6
- * *
7
- **************************************************************************/
8
- /**
9
- * Holds experimental features of the browser `File System API`. No typescript lint checks
10
- * are performed here!
11
- */
12
- export class FileSystemApi {
13
- /***************************************************************************
14
- * *
15
- * DataTransferItem *
16
- * *
17
- **************************************************************************/
18
- static isGetAsFileSystemHandleSupported(transferItem) {
19
- // @ts-ignore
20
- return transferItem.getAsFileSystemHandle !== undefined;
21
- }
22
- /**
23
- * Returns an FileSystemHandle Observable of the given DataTransferItem. The FileSystemHandle can only be accessed in the `dragstart`
24
- * or `drop` event. Otherwise, it will return null!
25
- */
26
- static getAsFileSystemHandle(transferItem) {
27
- // @ts-ignore
28
- return from(transferItem.getAsFileSystemHandle());
29
- }
30
- /***************************************************************************
31
- * *
32
- * File Picker *
33
- * *
34
- **************************************************************************/
35
- static isFileSystemSupported() {
36
- return 'showOpenFilePicker' in window;
37
- }
38
- static openFilePicker(pickerOpts) {
39
- try {
40
- // @ts-ignore
41
- return from(window.showOpenFilePicker(pickerOpts));
42
- }
43
- catch (e) {
44
- return throwError(() => new Error(e));
45
- }
46
- }
47
- /***************************************************************************
48
- * *
49
- * Directory Picker *
50
- * *
51
- **************************************************************************/
52
- static isDirectoryPickerSupported() {
53
- return 'showDirectoryPicker' in window;
54
- }
55
- static openDirectoryPicker(pickerOpts) {
56
- try {
57
- // @ts-ignore
58
- return from(window.showDirectoryPicker(pickerOpts));
59
- }
60
- catch (e) {
61
- return throwError(() => new Error(e));
62
- }
63
- }
64
- /***************************************************************************
65
- * *
66
- * FileSystemDirectoryHandle *
67
- * *
68
- **************************************************************************/
69
- static getHandlesFromDirectory(dirHandle) {
70
- return from(FileSystemApi.getHandlesFromDirectoryAsync(dirHandle));
71
- }
72
- static buildRelativeParent(fileOrDirHandle, rootDirectory) {
73
- if (rootDirectory == null) {
74
- return of(undefined);
75
- }
76
- const relativeParents$ = from(rootDirectory.resolve(fileOrDirHandle));
77
- return relativeParents$.pipe(map(parents => {
78
- // path/to/folder/file.jpg
79
- const path = parents;
80
- // root/path/to/folder/file.jpg
81
- path.unshift(rootDirectory.name);
82
- // root/path/to/folder
83
- path.pop();
84
- return path.join('/');
85
- }));
86
- }
87
- static async getHandlesFromDirectoryAsync(dirHandle) {
88
- const handles = [];
89
- // @ts-ignore
90
- for await (const handle of dirHandle.values()) {
91
- handles.push(handle);
92
- }
93
- return handles;
94
- }
95
- }
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1zeXN0ZW0tYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy9maWxlcy9maWxlLXN5c3RlbS1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLElBQUksRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3RELE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQWlEbkM7Ozs7NEVBSTRFO0FBRTVFOzs7R0FHRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBRXhCOzs7O2dGQUk0RTtJQUVyRSxNQUFNLENBQUMsZ0NBQWdDLENBQUMsWUFBOEI7UUFDM0UsYUFBYTtRQUNiLE9BQU8sWUFBWSxDQUFDLHFCQUFxQixLQUFLLFNBQVMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLHFCQUFxQixDQUFDLFlBQThCO1FBQ2hFLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7OztnRkFJNEU7SUFFckUsTUFBTSxDQUFDLHFCQUFxQjtRQUNqQyxPQUFPLG9CQUFvQixJQUFJLE1BQU0sQ0FBQztJQUN4QyxDQUFDO0lBRU0sTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUF1QztRQUNsRSxJQUFJLENBQUM7WUFDSCxhQUFhO1lBQ2IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRXJFLE1BQU0sQ0FBQywwQkFBMEI7UUFDdEMsT0FBTyxxQkFBcUIsSUFBSSxNQUFNLENBQUM7SUFDekMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxVQUE0QztRQUM1RSxJQUFJLENBQUM7WUFDSCxhQUFhO1lBQ2IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRXJFLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxTQUFvQztRQUN4RSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsNEJBQTRCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRU0sTUFBTSxDQUFDLG1CQUFtQixDQUMvQixlQUFpQyxFQUNqQyxhQUF5QztRQUd6QyxJQUFJLGFBQWEsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN4QixPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6QixDQUFDO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxDQUMxQixHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDWiwwQkFBMEI7WUFDMUIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDO1lBRXJCLCtCQUErQjtZQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUVqQyxzQkFBc0I7WUFDdEIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLENBQUMsQ0FDRixDQUFDLENBQUE7SUFDSixDQUFDO0lBRU8sTUFBTSxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxTQUFvQztRQUNwRixNQUFNLE9BQU8sR0FBdUIsRUFBRSxDQUFDO1FBQ3ZDLGFBQWE7UUFDYixJQUFJLEtBQUssRUFBRSxNQUFNLE1BQU0sSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztZQUM5QyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2Zyb20sIE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yfSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAqIEZpbGUgUGlja2VyIE9wdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuZXhwb3J0IGludGVyZmFjZSBGaWxlU3lzdGVtRmlsZVBpY2tlck9wdGlvbnMge1xuICAvKipcbiAgICpcbiAgICogYGBgXG4gICAqICAgdHlwZXM6IFtcbiAgICogICAgIHtcbiAgICogICAgICAgZGVzY3JpcHRpb246IFwiSW1hZ2VzXCIsXG4gICAqICAgICAgIGFjY2VwdDoge1xuICAgKiAgICAgICAgIFwiaW1hZ2UvKlwiOiBbXCIucG5nXCIsIFwiLmdpZlwiLCBcIi5qcGVnXCIsIFwiLmpwZ1wiXSxcbiAgICogICAgICAgfSxcbiAgICogICAgIH0sXG4gICAqICAgXSxcbiAgICogICBleGNsdWRlQWNjZXB0QWxsT3B0aW9uOiB0cnVlLFxuICAgKiAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICogYGBgXG4gICAqL1xuICBleGNsdWRlQWNjZXB0QWxsT3B0aW9ucz86IGJvb2xlYW4sXG4gIGlkPzogc3RyaW5nLFxuICBtdWx0aXBsZT86IGJvb2xlYW4sXG4gIHN0YXJ0SW4/OiBGaWxlU3lzdGVtSGFuZGxlIHwgJ2Rlc2t0b3AnIHwgJ2RvY3VtZW50cycgfCAnZG93bmxvYWRzJyB8ICdtdXNpYycgfCAncGljdHVyZXMnIHwgJ3ZpZGVvcycsXG4gIHR5cGVzPzogRmlsZVN5c3RlbUZpbGVQaWNrZXJUeXBlT3B0aW9uc1tdXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZVN5c3RlbUZpbGVQaWNrZXJUeXBlT3B0aW9ucyB7XG4gIGFjY2VwdDogUmVjb3JkPHN0cmluZyxzdHJpbmdbXT4sXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nXG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAqIERpcmVjdG9yeSBQaWNrZXIgT3B0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuZXhwb3J0IGludGVyZmFjZSBGaWxlU3lzdGVtRGlyZWN0b3J5UGlja2VyT3B0aW9ucyB7XG4gIGlkPzogc3RyaW5nLFxuICBtb2RlPzogc3RyaW5nLFxuICBzdGFydEluPzogRmlsZVN5c3RlbUhhbmRsZSB8ICdkZXNrdG9wJyB8ICdkb2N1bWVudHMnIHwgJ2Rvd25sb2FkcycgfCAnbXVzaWMnIHwgJ3BpY3R1cmVzJyB8ICd2aWRlb3MnXG59XG5cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICogRmlsZVN5c3RlbSBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIEhvbGRzIGV4cGVyaW1lbnRhbCBmZWF0dXJlcyBvZiB0aGUgYnJvd3NlciBgRmlsZSBTeXN0ZW0gQVBJYC4gTm8gdHlwZXNjcmlwdCBsaW50IGNoZWNrc1xuICogYXJlIHBlcmZvcm1lZCBoZXJlIVxuICovXG5leHBvcnQgY2xhc3MgRmlsZVN5c3RlbUFwaSB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIERhdGFUcmFuc2Zlckl0ZW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIHN0YXRpYyBpc0dldEFzRmlsZVN5c3RlbUhhbmRsZVN1cHBvcnRlZCh0cmFuc2Zlckl0ZW06IERhdGFUcmFuc2Zlckl0ZW0pOiBib29sZWFuIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIHRyYW5zZmVySXRlbS5nZXRBc0ZpbGVTeXN0ZW1IYW5kbGUgIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIEZpbGVTeXN0ZW1IYW5kbGUgT2JzZXJ2YWJsZSBvZiB0aGUgZ2l2ZW4gRGF0YVRyYW5zZmVySXRlbS4gVGhlIEZpbGVTeXN0ZW1IYW5kbGUgY2FuIG9ubHkgYmUgYWNjZXNzZWQgaW4gdGhlIGBkcmFnc3RhcnRgXG4gICAqIG9yIGBkcm9wYCBldmVudC4gT3RoZXJ3aXNlLCBpdCB3aWxsIHJldHVybiBudWxsIVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRBc0ZpbGVTeXN0ZW1IYW5kbGUodHJhbnNmZXJJdGVtOiBEYXRhVHJhbnNmZXJJdGVtKTogT2JzZXJ2YWJsZTxGaWxlU3lzdGVtSGFuZGxlIHwgbnVsbD4ge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gZnJvbSh0cmFuc2Zlckl0ZW0uZ2V0QXNGaWxlU3lzdGVtSGFuZGxlKCkpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpbGUgUGlja2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIHN0YXRpYyBpc0ZpbGVTeXN0ZW1TdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICdzaG93T3BlbkZpbGVQaWNrZXInIGluIHdpbmRvdztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgb3BlbkZpbGVQaWNrZXIocGlja2VyT3B0czogRmlsZVN5c3RlbUZpbGVQaWNrZXJPcHRpb25zKTogT2JzZXJ2YWJsZTxGaWxlU3lzdGVtRmlsZUhhbmRsZVtdPiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiBmcm9tKHdpbmRvdy5zaG93T3BlbkZpbGVQaWNrZXIocGlja2VyT3B0cykpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihlKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIERpcmVjdG9yeSBQaWNrZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIHN0YXRpYyBpc0RpcmVjdG9yeVBpY2tlclN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gJ3Nob3dEaXJlY3RvcnlQaWNrZXInIGluIHdpbmRvdztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgb3BlbkRpcmVjdG9yeVBpY2tlcihwaWNrZXJPcHRzOiBGaWxlU3lzdGVtRGlyZWN0b3J5UGlja2VyT3B0aW9ucyk6IE9ic2VydmFibGU8RmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZT4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gZnJvbSh3aW5kb3cuc2hvd0RpcmVjdG9yeVBpY2tlcihwaWNrZXJPcHRzKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKGUpKTtcbiAgICB9XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgc3RhdGljIGdldEhhbmRsZXNGcm9tRGlyZWN0b3J5KGRpckhhbmRsZTogRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZSk6IE9ic2VydmFibGU8RmlsZVN5c3RlbUhhbmRsZVtdPiB7XG4gICAgcmV0dXJuIGZyb20oRmlsZVN5c3RlbUFwaS5nZXRIYW5kbGVzRnJvbURpcmVjdG9yeUFzeW5jKGRpckhhbmRsZSkpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBidWlsZFJlbGF0aXZlUGFyZW50KFxuICAgIGZpbGVPckRpckhhbmRsZTogRmlsZVN5c3RlbUhhbmRsZSxcbiAgICByb290RGlyZWN0b3J5PzogRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZVxuICApOiBPYnNlcnZhYmxlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuXG4gICAgaWYgKHJvb3REaXJlY3RvcnkgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBjb25zdCByZWxhdGl2ZVBhcmVudHMkID0gZnJvbShyb290RGlyZWN0b3J5LnJlc29sdmUoZmlsZU9yRGlySGFuZGxlKSk7XG4gICAgcmV0dXJuIHJlbGF0aXZlUGFyZW50cyQucGlwZShcbiAgICAgIG1hcChwYXJlbnRzID0+IHtcbiAgICAgICAgLy8gcGF0aC90by9mb2xkZXIvZmlsZS5qcGdcbiAgICAgICAgY29uc3QgcGF0aCA9IHBhcmVudHM7XG5cbiAgICAgICAgLy8gcm9vdC9wYXRoL3RvL2ZvbGRlci9maWxlLmpwZ1xuICAgICAgICBwYXRoLnVuc2hpZnQocm9vdERpcmVjdG9yeS5uYW1lKTtcblxuICAgICAgICAvLyByb290L3BhdGgvdG8vZm9sZGVyXG4gICAgICAgIHBhdGgucG9wKCk7XG4gICAgICAgIHJldHVybiBwYXRoLmpvaW4oJy8nKTtcbiAgICAgIH1cbiAgICApKVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgZ2V0SGFuZGxlc0Zyb21EaXJlY3RvcnlBc3luYyhkaXJIYW5kbGU6IEZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGUpOiBQcm9taXNlPEZpbGVTeXN0ZW1IYW5kbGVbXT4ge1xuICAgIGNvbnN0IGhhbmRsZXM6IEZpbGVTeXN0ZW1IYW5kbGVbXSA9IFtdO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBmb3IgYXdhaXQgKGNvbnN0IGhhbmRsZSBvZiBkaXJIYW5kbGUudmFsdWVzKCkpIHtcbiAgICAgIGhhbmRsZXMucHVzaChoYW5kbGUpO1xuICAgIH1cbiAgICByZXR1cm4gaGFuZGxlcztcbiAgfVxufVxuIl19
@@ -1,35 +0,0 @@
1
- import { switchMap, toArray, zip } from 'rxjs';
2
- import { FileEntry } from './file-entry';
3
- import { FileSystemApi } from '../file-system-api';
4
- import { map } from 'rxjs/operators';
5
- export class FileListingSystemHandle {
6
- /***************************************************************************
7
- * *
8
- * Public methods *
9
- * *
10
- **************************************************************************/
11
- /**
12
- * Creates a File Entry Array Observable by resolving its FileSystemHandle.
13
- * @returns An `Observable<FileEntry[]>` with the FileSystemFileHandle included
14
- */
15
- static listFiles(handle, rootDirectory) {
16
- switch (handle.kind) {
17
- case 'file':
18
- return FileEntry.ofFileHandle(handle, rootDirectory).pipe(toArray());
19
- case 'directory':
20
- return FileListingSystemHandle.listFilesRecursive(handle, rootDirectory);
21
- }
22
- }
23
- /***************************************************************************
24
- * *
25
- * Private methods *
26
- * *
27
- **************************************************************************/
28
- static listFilesRecursive(dirHandle, rootDirectory) {
29
- return FileSystemApi.getHandlesFromDirectory(dirHandle).pipe(map(handles => FileListingSystemHandle.listFilesOfEach(handles, rootDirectory ? rootDirectory : dirHandle)), switchMap(fileEntriesArray$ => zip(fileEntriesArray$)), map(fileEntriesArray => fileEntriesArray.flat()));
30
- }
31
- static listFilesOfEach(handles, rootDirectory) {
32
- return handles.map(fileOrDirHandle => FileListingSystemHandle.listFiles(fileOrDirHandle, rootDirectory));
33
- }
34
- }
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1saXN0aW5nLXN5c3RlbS1oYW5kbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL2ZpbGVzL2xpc3RpbmcvZmlsZS1saXN0aW5nLXN5c3RlbS1oYW5kbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFhLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDdkMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxNQUFNLE9BQU8sdUJBQXVCO0lBRWxDOzs7O2dGQUk0RTtJQUU1RTs7O09BR0c7SUFDSSxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQXdCLEVBQUUsYUFBeUM7UUFDekYsUUFBUSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDcEIsS0FBSyxNQUFNO2dCQUNULE9BQU8sU0FBUyxDQUFDLFlBQVksQ0FBQyxNQUE4QixFQUFFLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQy9GLEtBQUssV0FBVztnQkFDZCxPQUFPLHVCQUF1QixDQUFDLGtCQUFrQixDQUFDLE1BQW1DLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDMUcsQ0FBQztJQUNILENBQUM7SUFFRDs7OztnRkFJNEU7SUFHcEUsTUFBTSxDQUFDLGtCQUFrQixDQUFDLFNBQW9DLEVBQUUsYUFBeUM7UUFDL0csT0FBTyxhQUFhLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUMxRCxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUMzRyxTQUFTLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQ3RELEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FDakQsQ0FBQztJQUNKLENBQUM7SUFFTyxNQUFNLENBQUMsZUFBZSxDQUM1QixPQUEyQixFQUMzQixhQUF5QztRQUV6QyxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUE7SUFDMUcsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPYnNlcnZhYmxlLCBzd2l0Y2hNYXAsIHRvQXJyYXksIHppcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0ZpbGVFbnRyeX0gZnJvbSAnLi9maWxlLWVudHJ5JztcbmltcG9ydCB7RmlsZVN5c3RlbUFwaX0gZnJvbSAnLi4vZmlsZS1zeXN0ZW0tYXBpJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBjbGFzcyBGaWxlTGlzdGluZ1N5c3RlbUhhbmRsZSB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBGaWxlIEVudHJ5IEFycmF5IE9ic2VydmFibGUgYnkgcmVzb2x2aW5nIGl0cyBGaWxlU3lzdGVtSGFuZGxlLlxuICAgKiBAcmV0dXJucyBBbiBgT2JzZXJ2YWJsZTxGaWxlRW50cnlbXT5gIHdpdGggdGhlIEZpbGVTeXN0ZW1GaWxlSGFuZGxlIGluY2x1ZGVkXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGxpc3RGaWxlcyhoYW5kbGU6IEZpbGVTeXN0ZW1IYW5kbGUsIHJvb3REaXJlY3Rvcnk/OiBGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlKTogT2JzZXJ2YWJsZTxGaWxlRW50cnlbXT4ge1xuICAgIHN3aXRjaCAoaGFuZGxlLmtpbmQpIHtcbiAgICAgIGNhc2UgJ2ZpbGUnOlxuICAgICAgICByZXR1cm4gRmlsZUVudHJ5Lm9mRmlsZUhhbmRsZShoYW5kbGUgYXMgRmlsZVN5c3RlbUZpbGVIYW5kbGUsIHJvb3REaXJlY3RvcnkpLnBpcGUodG9BcnJheSgpKTtcbiAgICAgIGNhc2UgJ2RpcmVjdG9yeSc6XG4gICAgICAgIHJldHVybiBGaWxlTGlzdGluZ1N5c3RlbUhhbmRsZS5saXN0RmlsZXNSZWN1cnNpdmUoaGFuZGxlIGFzIEZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGUsIHJvb3REaXJlY3RvcnkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5cbiAgcHJpdmF0ZSBzdGF0aWMgbGlzdEZpbGVzUmVjdXJzaXZlKGRpckhhbmRsZTogRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZSwgcm9vdERpcmVjdG9yeT86IEZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGUpOiBPYnNlcnZhYmxlPEZpbGVFbnRyeVtdPiB7XG4gICAgcmV0dXJuIEZpbGVTeXN0ZW1BcGkuZ2V0SGFuZGxlc0Zyb21EaXJlY3RvcnkoZGlySGFuZGxlKS5waXBlKFxuICAgICAgbWFwKGhhbmRsZXMgPT4gRmlsZUxpc3RpbmdTeXN0ZW1IYW5kbGUubGlzdEZpbGVzT2ZFYWNoKGhhbmRsZXMsIHJvb3REaXJlY3RvcnkgPyByb290RGlyZWN0b3J5IDogZGlySGFuZGxlKSksXG4gICAgICBzd2l0Y2hNYXAoZmlsZUVudHJpZXNBcnJheSQgPT4gemlwKGZpbGVFbnRyaWVzQXJyYXkkKSksXG4gICAgICBtYXAoZmlsZUVudHJpZXNBcnJheSA9PiBmaWxlRW50cmllc0FycmF5LmZsYXQoKSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgbGlzdEZpbGVzT2ZFYWNoKFxuICAgIGhhbmRsZXM6IEZpbGVTeXN0ZW1IYW5kbGVbXSxcbiAgICByb290RGlyZWN0b3J5PzogRmlsZVN5c3RlbURpcmVjdG9yeUhhbmRsZVxuICApOiBPYnNlcnZhYmxlPEZpbGVFbnRyeVtdPltdIHtcbiAgICByZXR1cm4gaGFuZGxlcy5tYXAoZmlsZU9yRGlySGFuZGxlID0+IEZpbGVMaXN0aW5nU3lzdGVtSGFuZGxlLmxpc3RGaWxlcyhmaWxlT3JEaXJIYW5kbGUsIHJvb3REaXJlY3RvcnkpKVxuICB9XG59XG4iXX0=