ng2-file-upload 1.1.4-2 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/bundles/ng2-file-upload.umd.js +1994 -1036
  2. package/bundles/ng2-file-upload.umd.js.map +1 -1
  3. package/bundles/ng2-file-upload.umd.min.js +2 -1
  4. package/bundles/ng2-file-upload.umd.min.js.map +1 -0
  5. package/esm2015/file-upload/file-drop.directive.js +139 -0
  6. package/esm2015/file-upload/file-item.class.js +268 -0
  7. package/esm2015/file-upload/file-like-object.class.js +60 -0
  8. package/esm2015/file-upload/file-select.directive.js +73 -0
  9. package/esm2015/file-upload/file-type.class.js +194 -0
  10. package/esm2015/file-upload/file-upload.module.js +18 -0
  11. package/esm2015/file-upload/file-uploader.class.js +845 -0
  12. package/esm2015/index.js +11 -0
  13. package/esm2015/ng2-file-upload.js +9 -0
  14. package/esm5/file-upload/file-drop.directive.js +171 -0
  15. package/esm5/file-upload/file-item.class.js +347 -0
  16. package/esm5/file-upload/file-like-object.class.js +67 -0
  17. package/esm5/file-upload/file-select.directive.js +84 -0
  18. package/esm5/file-upload/file-type.class.js +206 -0
  19. package/esm5/file-upload/file-upload.module.js +22 -0
  20. package/esm5/file-upload/file-uploader.class.js +1132 -0
  21. package/esm5/index.js +11 -0
  22. package/esm5/ng2-file-upload.js +9 -0
  23. package/fesm2015/ng2-file-upload.js +1599 -0
  24. package/fesm2015/ng2-file-upload.js.map +1 -0
  25. package/fesm5/ng2-file-upload.js +2020 -0
  26. package/fesm5/ng2-file-upload.js.map +1 -0
  27. package/file-upload/file-drop.directive.d.ts +6 -6
  28. package/file-upload/file-item.class.d.ts +3 -3
  29. package/file-upload/file-like-object.class.d.ts +1 -0
  30. package/file-upload/file-select.directive.d.ts +3 -2
  31. package/file-upload/file-type.class.d.ts +2 -1
  32. package/file-upload/file-uploader.class.d.ts +32 -24
  33. package/index.d.ts +2 -0
  34. package/ng2-file-upload.d.ts +4 -4
  35. package/ng2-file-upload.metadata.json +1 -1
  36. package/package.json +16 -25
  37. package/CHANGELOG.md +0 -91
  38. package/README.md +0 -64
  39. package/file-upload/file-drop.directive.js +0 -89
  40. package/file-upload/file-drop.directive.metadata.json +0 -1
  41. package/file-upload/file-item.class.js +0 -126
  42. package/file-upload/file-like-object.class.js +0 -27
  43. package/file-upload/file-select.directive.js +0 -40
  44. package/file-upload/file-select.directive.metadata.json +0 -1
  45. package/file-upload/file-type.class.js +0 -162
  46. package/file-upload/file-upload.module.js +0 -20
  47. package/file-upload/file-upload.module.metadata.json +0 -1
  48. package/file-upload/file-uploader.class.js +0 -398
  49. package/index.js +0 -9
  50. package/index.metadata.json +0 -1
  51. package/ng2-file-upload.js +0 -9
@@ -1,89 +0,0 @@
1
- "use strict";
2
- var core_1 = require('@angular/core');
3
- var FileDropDirective = (function () {
4
- function FileDropDirective(element) {
5
- this.fileOver = new core_1.EventEmitter();
6
- this.onFileDrop = new core_1.EventEmitter();
7
- this.element = element;
8
- }
9
- FileDropDirective.prototype.getOptions = function () {
10
- return this.uploader.options;
11
- };
12
- FileDropDirective.prototype.getFilters = function () {
13
- return {};
14
- };
15
- FileDropDirective.prototype.onDrop = function (event) {
16
- var transfer = this._getTransfer(event);
17
- if (!transfer) {
18
- return;
19
- }
20
- var options = this.getOptions();
21
- var filters = this.getFilters();
22
- this._preventAndStop(event);
23
- this.uploader.addToQueue(transfer.files, options, filters);
24
- this.fileOver.emit(false);
25
- this.onFileDrop.emit(transfer.files);
26
- };
27
- FileDropDirective.prototype.onDragOver = function (event) {
28
- var transfer = this._getTransfer(event);
29
- if (!this._haveFiles(transfer.types)) {
30
- return;
31
- }
32
- transfer.dropEffect = 'copy';
33
- this._preventAndStop(event);
34
- this.fileOver.emit(true);
35
- };
36
- FileDropDirective.prototype.onDragLeave = function (event) {
37
- if (event.currentTarget === this.element[0]) {
38
- return;
39
- }
40
- this._preventAndStop(event);
41
- this.fileOver.emit(false);
42
- };
43
- FileDropDirective.prototype._getTransfer = function (event) {
44
- return event.dataTransfer ? event.dataTransfer : event.originalEvent.dataTransfer; // jQuery fix;
45
- };
46
- FileDropDirective.prototype._preventAndStop = function (event) {
47
- event.preventDefault();
48
- event.stopPropagation();
49
- };
50
- FileDropDirective.prototype._haveFiles = function (types) {
51
- if (!types) {
52
- return false;
53
- }
54
- if (types.indexOf) {
55
- return types.indexOf('Files') !== -1;
56
- }
57
- else if (types.contains) {
58
- return types.contains('Files');
59
- }
60
- else {
61
- return false;
62
- }
63
- };
64
- /*
65
- _addOverClass(item:any):any {
66
- item.addOverClass();
67
- }
68
-
69
- _removeOverClass(item:any):any {
70
- item.removeOverClass();
71
- }*/
72
- FileDropDirective.decorators = [
73
- { type: core_1.Directive, args: [{ selector: '[ng2FileDrop]' },] },
74
- ];
75
- /** @nocollapse */
76
- FileDropDirective.ctorParameters = [
77
- { type: core_1.ElementRef, },
78
- ];
79
- FileDropDirective.propDecorators = {
80
- 'uploader': [{ type: core_1.Input },],
81
- 'fileOver': [{ type: core_1.Output },],
82
- 'onFileDrop': [{ type: core_1.Output },],
83
- 'onDrop': [{ type: core_1.HostListener, args: ['drop', ['$event'],] },],
84
- 'onDragOver': [{ type: core_1.HostListener, args: ['dragover', ['$event'],] },],
85
- 'onDragLeave': [{ type: core_1.HostListener, args: ['dragleave', ['$event'],] },],
86
- };
87
- return FileDropDirective;
88
- }());
89
- exports.FileDropDirective = FileDropDirective;
@@ -1 +0,0 @@
1
- {"__symbolic":"module","version":1,"metadata":{"FileDropDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[ng2FileDrop]"}]}],"members":{"uploader":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"fileOver":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"onFileDrop":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef"}]}],"getOptions":[{"__symbolic":"method"}],"getFilters":[{"__symbolic":"method"}],"onDrop":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener"},"arguments":["drop",["$event"]]}]}],"onDragOver":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener"},"arguments":["dragover",["$event"]]}]}],"onDragLeave":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener"},"arguments":["dragleave",["$event"]]}]}],"_getTransfer":[{"__symbolic":"method"}],"_preventAndStop":[{"__symbolic":"method"}],"_haveFiles":[{"__symbolic":"method"}]}}}}
@@ -1,126 +0,0 @@
1
- "use strict";
2
- var file_like_object_class_1 = require('./file-like-object.class');
3
- var FileItem = (function () {
4
- function FileItem(uploader, some, options) {
5
- this.url = '/';
6
- this.headers = [];
7
- this.withCredentials = true;
8
- this.formData = [];
9
- this.isReady = false;
10
- this.isUploading = false;
11
- this.isUploaded = false;
12
- this.isSuccess = false;
13
- this.isCancel = false;
14
- this.isError = false;
15
- this.progress = 0;
16
- this.index = void 0;
17
- this.uploader = uploader;
18
- this.some = some;
19
- this.options = options;
20
- this.file = new file_like_object_class_1.FileLikeObject(some);
21
- this._file = some;
22
- if (uploader.options) {
23
- this.method = uploader.options.method || 'POST';
24
- this.alias = uploader.options.itemAlias || 'file';
25
- }
26
- this.url = uploader.options.url;
27
- }
28
- FileItem.prototype.upload = function () {
29
- try {
30
- this.uploader.uploadItem(this);
31
- }
32
- catch (e) {
33
- this.uploader._onCompleteItem(this, '', 0, {});
34
- this.uploader._onErrorItem(this, '', 0, {});
35
- }
36
- };
37
- FileItem.prototype.cancel = function () {
38
- this.uploader.cancelItem(this);
39
- };
40
- FileItem.prototype.remove = function () {
41
- this.uploader.removeFromQueue(this);
42
- };
43
- FileItem.prototype.onBeforeUpload = function () {
44
- return void 0;
45
- };
46
- FileItem.prototype.onBuildForm = function (form) {
47
- return { form: form };
48
- };
49
- FileItem.prototype.onProgress = function (progress) {
50
- return { progress: progress };
51
- };
52
- FileItem.prototype.onSuccess = function (response, status, headers) {
53
- return { response: response, status: status, headers: headers };
54
- };
55
- FileItem.prototype.onError = function (response, status, headers) {
56
- return { response: response, status: status, headers: headers };
57
- };
58
- FileItem.prototype.onCancel = function (response, status, headers) {
59
- return { response: response, status: status, headers: headers };
60
- };
61
- FileItem.prototype.onComplete = function (response, status, headers) {
62
- return { response: response, status: status, headers: headers };
63
- };
64
- FileItem.prototype._onBeforeUpload = function () {
65
- this.isReady = true;
66
- this.isUploading = true;
67
- this.isUploaded = false;
68
- this.isSuccess = false;
69
- this.isCancel = false;
70
- this.isError = false;
71
- this.progress = 0;
72
- this.onBeforeUpload();
73
- };
74
- FileItem.prototype._onBuildForm = function (form) {
75
- this.onBuildForm(form);
76
- };
77
- FileItem.prototype._onProgress = function (progress) {
78
- this.progress = progress;
79
- this.onProgress(progress);
80
- };
81
- FileItem.prototype._onSuccess = function (response, status, headers) {
82
- this.isReady = false;
83
- this.isUploading = false;
84
- this.isUploaded = true;
85
- this.isSuccess = true;
86
- this.isCancel = false;
87
- this.isError = false;
88
- this.progress = 100;
89
- this.index = void 0;
90
- this.onSuccess(response, status, headers);
91
- };
92
- FileItem.prototype._onError = function (response, status, headers) {
93
- this.isReady = false;
94
- this.isUploading = false;
95
- this.isUploaded = true;
96
- this.isSuccess = false;
97
- this.isCancel = false;
98
- this.isError = true;
99
- this.progress = 0;
100
- this.index = void 0;
101
- this.onError(response, status, headers);
102
- };
103
- FileItem.prototype._onCancel = function (response, status, headers) {
104
- this.isReady = false;
105
- this.isUploading = false;
106
- this.isUploaded = false;
107
- this.isSuccess = false;
108
- this.isCancel = true;
109
- this.isError = false;
110
- this.progress = 0;
111
- this.index = void 0;
112
- this.onCancel(response, status, headers);
113
- };
114
- FileItem.prototype._onComplete = function (response, status, headers) {
115
- this.onComplete(response, status, headers);
116
- if (this.uploader.options.removeAfterUpload) {
117
- this.remove();
118
- }
119
- };
120
- FileItem.prototype._prepareToUploading = function () {
121
- this.index = this.index || ++this.uploader._nextIndex;
122
- this.isReady = true;
123
- };
124
- return FileItem;
125
- }());
126
- exports.FileItem = FileItem;
@@ -1,27 +0,0 @@
1
- "use strict";
2
- function isElement(node) {
3
- return !!(node && (node.nodeName || node.prop && node.attr && node.find));
4
- }
5
- var FileLikeObject = (function () {
6
- function FileLikeObject(fileOrInput) {
7
- var isInput = isElement(fileOrInput);
8
- var fakePathOrObject = isInput ? fileOrInput.value : fileOrInput;
9
- var postfix = typeof fakePathOrObject === 'string' ? 'FakePath' : 'Object';
10
- var method = '_createFrom' + postfix;
11
- this[method](fakePathOrObject);
12
- }
13
- FileLikeObject.prototype._createFromFakePath = function (path) {
14
- this.lastModifiedDate = void 0;
15
- this.size = void 0;
16
- this.type = 'like/' + path.slice(path.lastIndexOf('.') + 1).toLowerCase();
17
- this.name = path.slice(path.lastIndexOf('/') + path.lastIndexOf('\\') + 2);
18
- };
19
- FileLikeObject.prototype._createFromObject = function (object) {
20
- // this.lastModifiedDate = copy(object.lastModifiedDate);
21
- this.size = object.size;
22
- this.type = object.type;
23
- this.name = object.name;
24
- };
25
- return FileLikeObject;
26
- }());
27
- exports.FileLikeObject = FileLikeObject;
@@ -1,40 +0,0 @@
1
- "use strict";
2
- var core_1 = require('@angular/core');
3
- // todo: filters
4
- var FileSelectDirective = (function () {
5
- function FileSelectDirective(element) {
6
- this.element = element;
7
- }
8
- FileSelectDirective.prototype.getOptions = function () {
9
- return this.uploader.options;
10
- };
11
- FileSelectDirective.prototype.getFilters = function () {
12
- return void 0;
13
- };
14
- FileSelectDirective.prototype.isEmptyAfterSelection = function () {
15
- return !!this.element.nativeElement.attributes.multiple;
16
- };
17
- FileSelectDirective.prototype.onChange = function () {
18
- // let files = this.uploader.isHTML5 ? this.element.nativeElement[0].files : this.element.nativeElement[0];
19
- var files = this.element.nativeElement.files;
20
- var options = this.getOptions();
21
- var filters = this.getFilters();
22
- // if(!this.uploader.isHTML5) this.destroy();
23
- this.uploader.addToQueue(files, options, filters);
24
- if (this.isEmptyAfterSelection()) {
25
- }
26
- };
27
- FileSelectDirective.decorators = [
28
- { type: core_1.Directive, args: [{ selector: '[ng2FileSelect]' },] },
29
- ];
30
- /** @nocollapse */
31
- FileSelectDirective.ctorParameters = [
32
- { type: core_1.ElementRef, },
33
- ];
34
- FileSelectDirective.propDecorators = {
35
- 'uploader': [{ type: core_1.Input },],
36
- 'onChange': [{ type: core_1.HostListener, args: ['change',] },],
37
- };
38
- return FileSelectDirective;
39
- }());
40
- exports.FileSelectDirective = FileSelectDirective;
@@ -1 +0,0 @@
1
- {"__symbolic":"module","version":1,"metadata":{"FileSelectDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive"},"arguments":[{"selector":"[ng2FileSelect]"}]}],"members":{"uploader":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef"}]}],"getOptions":[{"__symbolic":"method"}],"getFilters":[{"__symbolic":"method"}],"isEmptyAfterSelection":[{"__symbolic":"method"}],"onChange":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener"},"arguments":["change"]}]}]}}}}
@@ -1,162 +0,0 @@
1
- "use strict";
2
- var FileType = (function () {
3
- function FileType() {
4
- }
5
- FileType.getMimeClass = function (file) {
6
- var mimeClass = 'application';
7
- if (this.mime_psd.indexOf(file.type) !== -1) {
8
- mimeClass = 'image';
9
- }
10
- else if (file.type.match('image.*')) {
11
- mimeClass = 'image';
12
- }
13
- else if (file.type.match('video.*')) {
14
- mimeClass = 'video';
15
- }
16
- else if (file.type.match('audio.*')) {
17
- mimeClass = 'audio';
18
- }
19
- else if (file.type === 'application/pdf') {
20
- mimeClass = 'pdf';
21
- }
22
- else if (this.mime_compress.indexOf(file.type) !== -1) {
23
- mimeClass = 'compress';
24
- }
25
- else if (this.mime_doc.indexOf(file.type) !== -1) {
26
- mimeClass = 'doc';
27
- }
28
- else if (this.mime_xsl.indexOf(file.type) !== -1) {
29
- mimeClass = 'xls';
30
- }
31
- else if (this.mime_ppt.indexOf(file.type) !== -1) {
32
- mimeClass = 'ppt';
33
- }
34
- if (mimeClass === 'application') {
35
- mimeClass = this.fileTypeDetection(file.name);
36
- }
37
- return mimeClass;
38
- };
39
- FileType.fileTypeDetection = function (inputFilename) {
40
- var types = {
41
- 'jpg': 'image',
42
- 'jpeg': 'image',
43
- 'tif': 'image',
44
- 'psd': 'image',
45
- 'bmp': 'image',
46
- 'png': 'image',
47
- 'nef': 'image',
48
- 'tiff': 'image',
49
- 'cr2': 'image',
50
- 'dwg': 'image',
51
- 'cdr': 'image',
52
- 'ai': 'image',
53
- 'indd': 'image',
54
- 'pin': 'image',
55
- 'cdp': 'image',
56
- 'skp': 'image',
57
- 'stp': 'image',
58
- '3dm': 'image',
59
- 'mp3': 'audio',
60
- 'wav': 'audio',
61
- 'wma': 'audio',
62
- 'mod': 'audio',
63
- 'm4a': 'audio',
64
- 'compress': 'compress',
65
- 'rar': 'compress',
66
- '7z': 'compress',
67
- 'lz': 'compress',
68
- 'z01': 'compress',
69
- 'pdf': 'pdf',
70
- 'xls': 'xls',
71
- 'xlsx': 'xls',
72
- 'ods': 'xls',
73
- 'mp4': 'video',
74
- 'avi': 'video',
75
- 'wmv': 'video',
76
- 'mpg': 'video',
77
- 'mts': 'video',
78
- 'flv': 'video',
79
- '3gp': 'video',
80
- 'vob': 'video',
81
- 'm4v': 'video',
82
- 'mpeg': 'video',
83
- 'm2ts': 'video',
84
- 'mov': 'video',
85
- 'doc': 'doc',
86
- 'docx': 'doc',
87
- 'eps': 'doc',
88
- 'txt': 'doc',
89
- 'odt': 'doc',
90
- 'rtf': 'doc',
91
- 'ppt': 'ppt',
92
- 'pptx': 'ppt',
93
- 'pps': 'ppt',
94
- 'ppsx': 'ppt',
95
- 'odp': 'ppt'
96
- };
97
- var chunks = inputFilename.split('.');
98
- if (chunks.length < 2) {
99
- return 'application';
100
- }
101
- var extension = chunks[chunks.length - 1].toLowerCase();
102
- if (types[extension] === undefined) {
103
- return 'application';
104
- }
105
- else {
106
- return types[extension];
107
- }
108
- };
109
- /* MS office */
110
- FileType.mime_doc = [
111
- 'application/msword',
112
- 'application/msword',
113
- 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
114
- 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
115
- 'application/vnd.ms-word.document.macroEnabled.12',
116
- 'application/vnd.ms-word.template.macroEnabled.12'
117
- ];
118
- FileType.mime_xsl = [
119
- 'application/vnd.ms-excel',
120
- 'application/vnd.ms-excel',
121
- 'application/vnd.ms-excel',
122
- 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
123
- 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',
124
- 'application/vnd.ms-excel.sheet.macroEnabled.12',
125
- 'application/vnd.ms-excel.template.macroEnabled.12',
126
- 'application/vnd.ms-excel.addin.macroEnabled.12',
127
- 'application/vnd.ms-excel.sheet.binary.macroEnabled.12'
128
- ];
129
- FileType.mime_ppt = [
130
- 'application/vnd.ms-powerpoint',
131
- 'application/vnd.ms-powerpoint',
132
- 'application/vnd.ms-powerpoint',
133
- 'application/vnd.ms-powerpoint',
134
- 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
135
- 'application/vnd.openxmlformats-officedocument.presentationml.template',
136
- 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',
137
- 'application/vnd.ms-powerpoint.addin.macroEnabled.12',
138
- 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',
139
- 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',
140
- 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12'
141
- ];
142
- /* PSD */
143
- FileType.mime_psd = [
144
- 'image/photoshop',
145
- 'image/x-photoshop',
146
- 'image/psd',
147
- 'application/photoshop',
148
- 'application/psd',
149
- 'zz-application/zz-winassoc-psd'
150
- ];
151
- /* Compressed files */
152
- FileType.mime_compress = [
153
- 'application/x-gtar',
154
- 'application/x-gcompress',
155
- 'application/compress',
156
- 'application/x-tar',
157
- 'application/x-rar-compressed',
158
- 'application/octet-stream'
159
- ];
160
- return FileType;
161
- }());
162
- exports.FileType = FileType;
@@ -1,20 +0,0 @@
1
- "use strict";
2
- var common_1 = require('@angular/common');
3
- var core_1 = require('@angular/core');
4
- var file_drop_directive_1 = require('./file-drop.directive');
5
- var file_select_directive_1 = require('./file-select.directive');
6
- var FileUploadModule = (function () {
7
- function FileUploadModule() {
8
- }
9
- FileUploadModule.decorators = [
10
- { type: core_1.NgModule, args: [{
11
- imports: [common_1.CommonModule],
12
- declarations: [file_drop_directive_1.FileDropDirective, file_select_directive_1.FileSelectDirective],
13
- exports: [file_drop_directive_1.FileDropDirective, file_select_directive_1.FileSelectDirective]
14
- },] },
15
- ];
16
- /** @nocollapse */
17
- FileUploadModule.ctorParameters = [];
18
- return FileUploadModule;
19
- }());
20
- exports.FileUploadModule = FileUploadModule;
@@ -1 +0,0 @@
1
- {"__symbolic":"module","version":1,"metadata":{"FileUploadModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule"},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule"}],"declarations":[{"__symbolic":"reference","module":"./file-drop.directive","name":"FileDropDirective"},{"__symbolic":"reference","module":"./file-select.directive","name":"FileSelectDirective"}],"exports":[{"__symbolic":"reference","module":"./file-drop.directive","name":"FileDropDirective"},{"__symbolic":"reference","module":"./file-select.directive","name":"FileSelectDirective"}]}]}]}}}