@acorex/core 7.0.41 → 7.1.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.
Files changed (170) hide show
  1. package/config/index.d.ts +5 -5
  2. package/config/public-api.d.ts +1 -1
  3. package/config/src/configs.d.ts +9 -9
  4. package/dateTime/index.d.ts +5 -5
  5. package/dateTime/public-api.d.ts +5 -5
  6. package/dateTime/src/datetime.class.d.ts +100 -100
  7. package/dateTime/src/datetime.module.d.ts +8 -8
  8. package/dateTime/src/datetime.pipe.d.ts +8 -8
  9. package/dateTime/src/georgian.calendar.d.ts +20 -20
  10. package/dateTime/src/jalali.calendar.d.ts +35 -35
  11. package/{esm2020 → esm2022}/acorex-core.mjs +4 -4
  12. package/{esm2020 → esm2022}/config/acorex-core-config.mjs +4 -4
  13. package/{esm2020 → esm2022}/config/public-api.mjs +1 -1
  14. package/esm2022/config/src/configs.mjs +25 -0
  15. package/{esm2020 → esm2022}/dateTime/acorex-core-dateTime.mjs +4 -4
  16. package/{esm2020 → esm2022}/dateTime/public-api.mjs +5 -5
  17. package/esm2022/dateTime/src/datetime.class.mjs +295 -0
  18. package/esm2022/dateTime/src/datetime.module.mjs +40 -0
  19. package/esm2022/dateTime/src/datetime.pipe.mjs +27 -0
  20. package/esm2022/dateTime/src/georgian.calendar.mjs +187 -0
  21. package/esm2022/dateTime/src/jalali.calendar.mjs +357 -0
  22. package/{esm2020 → esm2022}/events/acorex-core-events.mjs +4 -4
  23. package/{esm2020 → esm2022}/events/public-api.mjs +1 -1
  24. package/esm2022/events/src/event.service.mjs +35 -0
  25. package/{esm2020 → esm2022}/file/acorex-core-file.mjs +4 -4
  26. package/{esm2020 → esm2022}/file/public-api.mjs +4 -4
  27. package/esm2022/file/src/file-download-ref.class.mjs +13 -0
  28. package/esm2022/file/src/file-download-result.class.mjs +47 -0
  29. package/esm2022/file/src/file-upload-ref.class.mjs +13 -0
  30. package/esm2022/file/src/file.service.mjs +103 -0
  31. package/{esm2020 → esm2022}/http/acorex-core-http.mjs +4 -4
  32. package/{esm2020 → esm2022}/http/public-api.mjs +5 -5
  33. package/{esm2020 → esm2022}/http/src/http-error.class.mjs +1 -1
  34. package/{esm2020 → esm2022}/http/src/http-events.interceptor.mjs +2 -2
  35. package/{esm2020 → esm2022}/http/src/http-request.class.mjs +1 -1
  36. package/esm2022/http/src/http-result.class.mjs +25 -0
  37. package/esm2022/http/src/http.module.mjs +30 -0
  38. package/esm2022/http/src/http.service.mjs +152 -0
  39. package/{esm2020 → esm2022}/image/acorex-core-image.mjs +4 -4
  40. package/{esm2020 → esm2022}/image/public-api.mjs +1 -1
  41. package/esm2022/image/src/image.service.mjs +44 -0
  42. package/{esm2020 → esm2022}/pipes/acorex-core-pipes.mjs +4 -4
  43. package/{esm2020 → esm2022}/pipes/public-api.mjs +2 -2
  44. package/esm2022/pipes/src/pipes.module.mjs +20 -0
  45. package/{esm2020 → esm2022}/pipes/src/safe.pipe.mjs +32 -30
  46. package/{esm2020 → esm2022}/platform/acorex-core-platform.mjs +4 -4
  47. package/{esm2020 → esm2022}/platform/public-api.mjs +1 -1
  48. package/esm2022/platform/src/platform.service.mjs +152 -0
  49. package/{esm2020 → esm2022}/public-api.mjs +4 -4
  50. package/{esm2020 → esm2022}/translation/acorex-core-translation.mjs +4 -4
  51. package/{esm2020 → esm2022}/translation/public-api.mjs +3 -3
  52. package/esm2022/translation/src/translation.module.mjs +19 -0
  53. package/esm2022/translation/src/translator.mjs +44 -0
  54. package/esm2022/translation/src/translator.pipe.mjs +16 -0
  55. package/{esm2020 → esm2022}/utils/acorex-core-utils.mjs +4 -4
  56. package/{esm2020 → esm2022}/utils/public-api.mjs +5 -5
  57. package/{esm2020 → esm2022}/utils/src/color-util.mjs +114 -114
  58. package/{esm2020 → esm2022}/utils/src/drawing-util.mjs +29 -29
  59. package/{esm2020 → esm2022}/utils/src/html-util.mjs +15 -15
  60. package/{esm2020 → esm2022}/utils/src/object-util.mjs +38 -38
  61. package/{esm2020 → esm2022}/utils/src/string-util.mjs +18 -18
  62. package/events/index.d.ts +5 -5
  63. package/events/public-api.d.ts +1 -1
  64. package/events/src/event.service.d.ts +9 -9
  65. package/{fesm2015 → fesm2022}/acorex-core-config.mjs +23 -24
  66. package/{fesm2015 → fesm2022}/acorex-core-config.mjs.map +1 -1
  67. package/{fesm2015 → fesm2022}/acorex-core-dateTime.mjs +882 -880
  68. package/{fesm2020 → fesm2022}/acorex-core-dateTime.mjs.map +1 -1
  69. package/{fesm2020 → fesm2022}/acorex-core-events.mjs +32 -35
  70. package/fesm2022/acorex-core-events.mjs.map +1 -0
  71. package/{fesm2020 → fesm2022}/acorex-core-file.mjs +162 -159
  72. package/{fesm2020 → fesm2022}/acorex-core-file.mjs.map +1 -1
  73. package/{fesm2020 → fesm2022}/acorex-core-http.mjs +190 -184
  74. package/{fesm2020 → fesm2022}/acorex-core-http.mjs.map +1 -1
  75. package/{fesm2020 → fesm2022}/acorex-core-image.mjs +41 -42
  76. package/{fesm2020 → fesm2022}/acorex-core-image.mjs.map +1 -1
  77. package/{fesm2015 → fesm2022}/acorex-core-pipes.mjs +41 -41
  78. package/fesm2022/acorex-core-pipes.mjs.map +1 -0
  79. package/{fesm2020 → fesm2022}/acorex-core-platform.mjs +147 -154
  80. package/fesm2022/acorex-core-platform.mjs.map +1 -0
  81. package/{fesm2020 → fesm2022}/acorex-core-translation.mjs +64 -65
  82. package/{fesm2020 → fesm2022}/acorex-core-translation.mjs.map +1 -1
  83. package/{fesm2020 → fesm2022}/acorex-core-utils.mjs +209 -210
  84. package/{fesm2015 → fesm2022}/acorex-core.mjs +5 -6
  85. package/file/index.d.ts +5 -5
  86. package/file/public-api.d.ts +4 -4
  87. package/file/src/file-download-ref.class.d.ts +6 -6
  88. package/file/src/file-download-result.class.d.ts +8 -8
  89. package/file/src/file-upload-ref.class.d.ts +5 -5
  90. package/file/src/file.service.d.ts +18 -18
  91. package/http/index.d.ts +5 -5
  92. package/http/public-api.d.ts +5 -5
  93. package/http/src/http-error.class.d.ts +7 -7
  94. package/http/src/http-events.interceptor.d.ts +10 -10
  95. package/http/src/http-request.class.d.ts +14 -14
  96. package/http/src/http-result.class.d.ts +11 -11
  97. package/http/src/http.module.d.ts +8 -8
  98. package/http/src/http.service.d.ts +23 -23
  99. package/image/index.d.ts +5 -5
  100. package/image/public-api.d.ts +1 -1
  101. package/image/src/image.service.d.ts +12 -12
  102. package/index.d.ts +5 -5
  103. package/package.json +39 -65
  104. package/pipes/index.d.ts +5 -5
  105. package/pipes/public-api.d.ts +2 -2
  106. package/pipes/src/pipes.module.d.ts +8 -8
  107. package/pipes/src/safe.pipe.d.ts +10 -10
  108. package/platform/index.d.ts +5 -5
  109. package/platform/public-api.d.ts +1 -1
  110. package/platform/src/platform.service.d.ts +26 -26
  111. package/public-api.d.ts +1 -1
  112. package/translation/index.d.ts +5 -5
  113. package/translation/public-api.d.ts +3 -3
  114. package/translation/src/translation.module.d.ts +7 -7
  115. package/translation/src/translator.d.ts +11 -11
  116. package/translation/src/translator.pipe.d.ts +7 -7
  117. package/utils/index.d.ts +5 -5
  118. package/utils/public-api.d.ts +5 -5
  119. package/utils/src/color-util.d.ts +23 -23
  120. package/utils/src/drawing-util.d.ts +18 -18
  121. package/utils/src/html-util.d.ts +4 -4
  122. package/utils/src/object-util.d.ts +4 -4
  123. package/utils/src/string-util.d.ts +6 -6
  124. package/esm2020/config/src/configs.mjs +0 -24
  125. package/esm2020/dateTime/src/datetime.class.mjs +0 -288
  126. package/esm2020/dateTime/src/datetime.module.mjs +0 -39
  127. package/esm2020/dateTime/src/datetime.pipe.mjs +0 -26
  128. package/esm2020/dateTime/src/georgian.calendar.mjs +0 -189
  129. package/esm2020/dateTime/src/jalali.calendar.mjs +0 -359
  130. package/esm2020/events/src/event.service.mjs +0 -36
  131. package/esm2020/file/src/file-download-ref.class.mjs +0 -12
  132. package/esm2020/file/src/file-download-result.class.mjs +0 -46
  133. package/esm2020/file/src/file-upload-ref.class.mjs +0 -12
  134. package/esm2020/file/src/file.service.mjs +0 -101
  135. package/esm2020/http/src/http-result.class.mjs +0 -21
  136. package/esm2020/http/src/http.module.mjs +0 -29
  137. package/esm2020/http/src/http.service.mjs +0 -148
  138. package/esm2020/image/src/image.service.mjs +0 -43
  139. package/esm2020/pipes/src/pipes.module.mjs +0 -19
  140. package/esm2020/platform/src/platform.service.mjs +0 -157
  141. package/esm2020/translation/src/translation.module.mjs +0 -18
  142. package/esm2020/translation/src/translator.mjs +0 -43
  143. package/esm2020/translation/src/translator.pipe.mjs +0 -15
  144. package/fesm2015/acorex-core-dateTime.mjs.map +0 -1
  145. package/fesm2015/acorex-core-events.mjs +0 -44
  146. package/fesm2015/acorex-core-events.mjs.map +0 -1
  147. package/fesm2015/acorex-core-file.mjs +0 -176
  148. package/fesm2015/acorex-core-file.mjs.map +0 -1
  149. package/fesm2015/acorex-core-http.mjs +0 -203
  150. package/fesm2015/acorex-core-http.mjs.map +0 -1
  151. package/fesm2015/acorex-core-image.mjs +0 -54
  152. package/fesm2015/acorex-core-image.mjs.map +0 -1
  153. package/fesm2015/acorex-core-pipes.mjs.map +0 -1
  154. package/fesm2015/acorex-core-platform.mjs +0 -165
  155. package/fesm2015/acorex-core-platform.mjs.map +0 -1
  156. package/fesm2015/acorex-core-translation.mjs +0 -81
  157. package/fesm2015/acorex-core-translation.mjs.map +0 -1
  158. package/fesm2015/acorex-core-utils.mjs +0 -227
  159. package/fesm2020/acorex-core-config.mjs +0 -32
  160. package/fesm2020/acorex-core-config.mjs.map +0 -1
  161. package/fesm2020/acorex-core-dateTime.mjs +0 -899
  162. package/fesm2020/acorex-core-events.mjs.map +0 -1
  163. package/fesm2020/acorex-core-pipes.mjs +0 -54
  164. package/fesm2020/acorex-core-pipes.mjs.map +0 -1
  165. package/fesm2020/acorex-core-platform.mjs.map +0 -1
  166. package/fesm2020/acorex-core-utils.mjs.map +0 -1
  167. package/fesm2020/acorex-core.mjs +0 -12
  168. package/fesm2020/acorex-core.mjs.map +0 -1
  169. /package/{fesm2015 → fesm2022}/acorex-core-utils.mjs.map +0 -0
  170. /package/{fesm2015 → fesm2022}/acorex-core.mjs.map +0 -0
@@ -3,174 +3,177 @@ import { Injectable } from '@angular/core';
3
3
  import { Observable } from 'rxjs';
4
4
  import * as i1 from '@angular/common/http';
5
5
 
6
- class AXFileDownloadRef extends Promise {
7
- constructor(executor) {
8
- super(executor);
9
- }
10
- //abort the operation
11
- abort() {
12
- if (this.abortMethod) {
13
- this.abortMethod();
14
- }
15
- }
6
+ class AXFileDownloadRef extends Promise {
7
+ abortMethod;
8
+ constructor(executor) {
9
+ super(executor);
10
+ }
11
+ //abort the operation
12
+ abort() {
13
+ if (this.abortMethod) {
14
+ this.abortMethod();
15
+ }
16
+ }
16
17
  }
17
18
 
18
- class AXFileDownloadResult {
19
- constructor(response) {
20
- this._response = response;
21
- }
22
- save(filename) {
23
- this._defaultBrowserDownload(filename);
24
- return Promise.resolve();
25
- // else {
26
- // return new Promise((resolve, reject) => {
27
- // const button = document.createElement("button");
28
- // button.addEventListener('click', async () => {
29
- // button.remove();
30
- // const opts = {
31
- // types: [{
32
- // description: 'Save File',
33
- // suggestedName: filename
34
- // // accept: {'text/plain': ['.txt']},
35
- // }],
36
- // };
37
- // const result = await window['showSaveFilePicker'](opts);
38
- // console.log(result);
39
- // resolve();
40
- // });
41
- // button.click();
42
- // });
43
- // }
44
- }
45
- blob() {
46
- return this._response;
47
- }
48
- base64() {
49
- return new Promise((resolve, reject) => {
50
- var reader = new window.FileReader();
51
- reader.onloadend = () => resolve(reader.result);
52
- reader.onerror = e => reject(e);
53
- reader.readAsDataURL(this._response);
54
- });
55
- }
56
- _defaultBrowserDownload(filename = 'download') {
57
- const link = document.createElement('a');
58
- link.href = URL.createObjectURL(this._response);
59
- link.download = filename;
60
- link.click();
61
- }
19
+ class AXFileDownloadResult {
20
+ _response;
21
+ constructor(response) {
22
+ this._response = response;
23
+ }
24
+ save(filename) {
25
+ this._defaultBrowserDownload(filename);
26
+ return Promise.resolve();
27
+ // else {
28
+ // return new Promise((resolve, reject) => {
29
+ // const button = document.createElement("button");
30
+ // button.addEventListener('click', async () => {
31
+ // button.remove();
32
+ // const opts = {
33
+ // types: [{
34
+ // description: 'Save File',
35
+ // suggestedName: filename
36
+ // // accept: {'text/plain': ['.txt']},
37
+ // }],
38
+ // };
39
+ // const result = await window['showSaveFilePicker'](opts);
40
+ // console.log(result);
41
+ // resolve();
42
+ // });
43
+ // button.click();
44
+ // });
45
+ // }
46
+ }
47
+ blob() {
48
+ return this._response;
49
+ }
50
+ base64() {
51
+ return new Promise((resolve, reject) => {
52
+ var reader = new window.FileReader();
53
+ reader.onloadend = () => resolve(reader.result);
54
+ reader.onerror = e => reject(e);
55
+ reader.readAsDataURL(this._response);
56
+ });
57
+ }
58
+ _defaultBrowserDownload(filename = 'download') {
59
+ const link = document.createElement('a');
60
+ link.href = URL.createObjectURL(this._response);
61
+ link.download = filename;
62
+ link.click();
63
+ }
62
64
  }
63
65
 
64
- class AXFileUploadRef extends Promise {
65
- constructor(executor) {
66
- super(executor);
67
- }
68
- //abort the operation
69
- abort() {
70
- if (this.abortMethod) {
71
- this.abortMethod();
72
- }
73
- }
66
+ class AXFileUploadRef extends Promise {
67
+ abortMethod;
68
+ constructor(executor) {
69
+ super(executor);
70
+ }
71
+ //abort the operation
72
+ abort() {
73
+ if (this.abortMethod) {
74
+ this.abortMethod();
75
+ }
76
+ }
74
77
  }
75
78
 
76
- class AXFileService {
77
- constructor(_httpClient) {
78
- this._httpClient = _httpClient;
79
- this.blobToBase64 = (blob) => new Promise((resolve, reject) => {
80
- const reader = new FileReader;
81
- reader.onerror = reject;
82
- reader.onload = () => {
83
- resolve(reader.result);
84
- };
85
- reader.readAsDataURL(blob);
86
- });
87
- }
88
- download(request) {
89
- let s;
90
- const promiseFunc = (resolve, reject) => {
91
- //TODO: add custome http request
92
- //const headers = new HttpHeaders().set('authorization','Bearer '+token);
93
- let b;
94
- if (typeof request === 'string') {
95
- b = this._httpClient.get(request, { responseType: 'blob' });
96
- }
97
- else if (b instanceof (Observable)) {
98
- b = request;
99
- }
100
- s = b?.subscribe({
101
- next: (v) => resolve(new AXFileDownloadResult(v)),
102
- error: (e) => reject(e)
103
- });
104
- };
105
- const a = new AXFileDownloadRef(promiseFunc);
106
- a.abort = () => {
107
- s?.unsubscribe();
108
- };
109
- return a;
110
- }
111
- upload(url, files) {
112
- let s;
113
- let formData = new FormData();
114
- files.forEach(f => {
115
- formData.append("files", f);
116
- });
117
- const promiseFunc = (resolve, reject) => {
118
- let b;
119
- b = this._httpClient.post(url, formData);
120
- s = b?.subscribe({
121
- next: (v) => resolve(v),
122
- error: (e) => reject(e)
123
- });
124
- };
125
- const a = new AXFileUploadRef(promiseFunc);
126
- a.abort = () => {
127
- s?.unsubscribe();
128
- };
129
- return a;
130
- }
131
- choose(options) {
132
- return new Promise((resolve, reject) => {
133
- options = Object.assign({ multiple: false }, options);
134
- const input = document.createElement("input");
135
- input.style.display = 'none';
136
- document.body.appendChild(input);
137
- input.type = 'file';
138
- input.accept = options.accept;
139
- input.multiple = options.multiple;
140
- //
141
- const onError = (e) => {
142
- reject(e);
143
- document.body.removeChild(input);
144
- input.remove();
145
- input.removeEventListener('change', onChange);
146
- input.removeEventListener('error', onError);
147
- };
148
- //
149
- const onChange = () => {
150
- resolve(Array.from(input.files));
151
- document.body.removeChild(input);
152
- input.remove();
153
- input.removeEventListener('change', onChange);
154
- input.removeEventListener('error', onError);
155
- };
156
- //
157
- input.addEventListener('change', onChange);
158
- input.addEventListener('error', onError);
159
- input.click();
160
- });
161
- }
162
- }
163
- AXFileService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXFileService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
164
- AXFileService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXFileService, providedIn: 'root' });
165
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXFileService, decorators: [{
166
- type: Injectable,
167
- args: [{ providedIn: 'root' }]
79
+ class AXFileService {
80
+ _httpClient;
81
+ constructor(_httpClient) {
82
+ this._httpClient = _httpClient;
83
+ }
84
+ download(request) {
85
+ let s;
86
+ const promiseFunc = (resolve, reject) => {
87
+ //TODO: add custome http request
88
+ //const headers = new HttpHeaders().set('authorization','Bearer '+token);
89
+ let b;
90
+ if (typeof request === 'string') {
91
+ b = this._httpClient.get(request, { responseType: 'blob' });
92
+ }
93
+ else if (b instanceof (Observable)) {
94
+ b = request;
95
+ }
96
+ s = b?.subscribe({
97
+ next: (v) => resolve(new AXFileDownloadResult(v)),
98
+ error: (e) => reject(e)
99
+ });
100
+ };
101
+ const a = new AXFileDownloadRef(promiseFunc);
102
+ a.abort = () => {
103
+ s?.unsubscribe();
104
+ };
105
+ return a;
106
+ }
107
+ upload(url, files) {
108
+ let s;
109
+ let formData = new FormData();
110
+ files.forEach(f => {
111
+ formData.append("files", f);
112
+ });
113
+ const promiseFunc = (resolve, reject) => {
114
+ let b;
115
+ b = this._httpClient.post(url, formData);
116
+ s = b?.subscribe({
117
+ next: (v) => resolve(v),
118
+ error: (e) => reject(e)
119
+ });
120
+ };
121
+ const a = new AXFileUploadRef(promiseFunc);
122
+ a.abort = () => {
123
+ s?.unsubscribe();
124
+ };
125
+ return a;
126
+ }
127
+ choose(options) {
128
+ return new Promise((resolve, reject) => {
129
+ options = Object.assign({ multiple: false }, options);
130
+ const input = document.createElement("input");
131
+ input.style.display = 'none';
132
+ document.body.appendChild(input);
133
+ input.type = 'file';
134
+ input.accept = options.accept;
135
+ input.multiple = options.multiple;
136
+ //
137
+ const onError = (e) => {
138
+ reject(e);
139
+ document.body.removeChild(input);
140
+ input.remove();
141
+ input.removeEventListener('change', onChange);
142
+ input.removeEventListener('error', onError);
143
+ };
144
+ //
145
+ const onChange = () => {
146
+ resolve(Array.from(input.files));
147
+ document.body.removeChild(input);
148
+ input.remove();
149
+ input.removeEventListener('change', onChange);
150
+ input.removeEventListener('error', onError);
151
+ };
152
+ //
153
+ input.addEventListener('change', onChange);
154
+ input.addEventListener('error', onError);
155
+ input.click();
156
+ });
157
+ }
158
+ blobToBase64 = (blob) => new Promise((resolve, reject) => {
159
+ const reader = new FileReader;
160
+ reader.onerror = reject;
161
+ reader.onload = () => {
162
+ resolve(reader.result);
163
+ };
164
+ reader.readAsDataURL(blob);
165
+ });
166
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AXFileService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
167
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AXFileService, providedIn: 'root' });
168
+ }
169
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: AXFileService, decorators: [{
170
+ type: Injectable,
171
+ args: [{ providedIn: 'root' }]
168
172
  }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
169
173
 
170
- /**
171
- * Generated bundle index. Do not edit.
174
+ /**
175
+ * Generated bundle index. Do not edit.
172
176
  */
173
177
 
174
178
  export { AXFileDownloadRef, AXFileDownloadResult, AXFileService, AXFileUploadRef };
175
179
  //# sourceMappingURL=acorex-core-file.mjs.map
176
- //# sourceMappingURL=acorex-core-file.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-core-file.mjs","sources":["../../../../projects/acorex/core/file/src/file-download-ref.class.ts","../../../../projects/acorex/core/file/src/file-download-result.class.ts","../../../../projects/acorex/core/file/src/file-upload-ref.class.ts","../../../../projects/acorex/core/file/src/file.service.ts","../../../../projects/acorex/core/file/acorex-core-file.ts"],"sourcesContent":["import { AXFileDownloadResult } from \"./file-download-result.class\";\r\n\r\nexport class AXFileDownloadRef extends Promise<AXFileDownloadResult>\r\n{\r\n public abortMethod: () => void;\r\n constructor(executor: (resolve: (value?: PromiseLike<AXFileDownloadResult>) => void, reject: (reason?: any) => void) => void) {\r\n super(executor);\r\n\r\n }\r\n //abort the operation\r\n public abort() {\r\n if (this.abortMethod) {\r\n this.abortMethod();\r\n }\r\n }\r\n}","export class AXFileDownloadResult {\r\n _response: Blob;\r\n\r\n constructor(response: Blob) {\r\n this._response = response;\r\n }\r\n\r\n save(filename?: string): Promise<void> {\r\n this._defaultBrowserDownload(filename);\r\n return Promise.resolve();\r\n // else {\r\n // return new Promise((resolve, reject) => {\r\n // const button = document.createElement(\"button\");\r\n // button.addEventListener('click', async () => {\r\n // button.remove();\r\n // const opts = {\r\n // types: [{\r\n // description: 'Save File',\r\n // suggestedName: filename\r\n // // accept: {'text/plain': ['.txt']},\r\n // }],\r\n // };\r\n // const result = await window['showSaveFilePicker'](opts);\r\n // console.log(result);\r\n\r\n // resolve();\r\n // });\r\n // button.click();\r\n // });\r\n\r\n // }\r\n }\r\n\r\n blob() {\r\n return this._response;\r\n }\r\n\r\n base64(): Promise<string> {\r\n return new Promise((resolve, reject) => {\r\n var reader = new window.FileReader();\r\n reader.onloadend = () => resolve(reader.result as string);\r\n reader.onerror = e => reject(e);\r\n reader.readAsDataURL(this._response);\r\n });\r\n }\r\n\r\n private _defaultBrowserDownload(filename: string = 'download') {\r\n const link = document.createElement('a');\r\n link.href = URL.createObjectURL(this._response);\r\n link.download = filename;\r\n link.click();\r\n }\r\n}\r\n","export class AXFileUploadRef<T = any> extends Promise<T>\r\n{\r\n public abortMethod: () => void;\r\n constructor(executor: (resolve: (value?: PromiseLike<T>) => void, reject: (reason?: any) => void) => void) {\r\n super(executor);\r\n\r\n }\r\n //abort the operation\r\n public abort() {\r\n if (this.abortMethod) {\r\n this.abortMethod();\r\n }\r\n }\r\n}","import { HttpClient, HttpContext, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { AXFileDownloadRef } from './file-download-ref.class';\r\nimport { AXFileDownloadResult } from './file-download-result.class';\r\nimport { AXFileUploadRef } from './file-upload-ref.class';\r\n\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXFileService {\r\n constructor(private _httpClient: HttpClient) { }\r\n\r\n public download(request: string | Observable<Blob>): AXFileDownloadRef {\r\n let s: Subscription;\r\n const promiseFunc = (resolve, reject) => {\r\n //TODO: add custome http request\r\n //const headers = new HttpHeaders().set('authorization','Bearer '+token);\r\n let b: Observable<Blob>;\r\n if (typeof request === 'string') {\r\n b = this._httpClient.get(request, { responseType: 'blob' });\r\n }\r\n else if (b instanceof Observable<Blob>) {\r\n b = request;\r\n }\r\n s = b?.subscribe({\r\n next: (v) => resolve(new AXFileDownloadResult(v)),\r\n error: (e) => reject(e)\r\n })\r\n };\r\n\r\n const a = new AXFileDownloadRef(promiseFunc);\r\n a.abort = () => {\r\n s?.unsubscribe();\r\n };\r\n\r\n return a;\r\n }\r\n\r\n public upload<T = any>(url: string, files: File[]): AXFileUploadRef<T> {\r\n let s: Subscription;\r\n let formData = new FormData();\r\n files.forEach(f => {\r\n formData.append(\"files\", f);\r\n })\r\n const promiseFunc = (resolve, reject) => {\r\n let b: Observable<T>;\r\n b = this._httpClient.post<T>(url, formData);\r\n\r\n s = b?.subscribe({\r\n next: (v) => resolve(v),\r\n error: (e) => reject(e)\r\n })\r\n };\r\n\r\n const a = new AXFileUploadRef(promiseFunc);\r\n a.abort = () => {\r\n s?.unsubscribe();\r\n };\r\n return a;\r\n }\r\n\r\n public choose(options?: { accept?: string, multiple?: boolean }): Promise<File[]> {\r\n return new Promise<File[]>((resolve, reject) => {\r\n options = Object.assign({ multiple: false }, options);\r\n const input = document.createElement(\"input\");\r\n input.style.display = 'none';\r\n document.body.appendChild(input);\r\n input.type = 'file';\r\n input.accept = options.accept;\r\n input.multiple = options.multiple;\r\n //\r\n const onError = (e) => {\r\n reject(e);\r\n document.body.removeChild(input)\r\n input.remove();\r\n input.removeEventListener('change', onChange);\r\n input.removeEventListener('error', onError);\r\n }\r\n //\r\n const onChange = () => {\r\n resolve(Array.from(input.files));\r\n document.body.removeChild(input)\r\n input.remove();\r\n input.removeEventListener('change', onChange);\r\n input.removeEventListener('error', onError);\r\n }\r\n //\r\n input.addEventListener('change', onChange);\r\n input.addEventListener('error', onError);\r\n input.click();\r\n });\r\n }\r\n\r\n blobToBase64 = (blob: Blob) => new Promise<string>((resolve, reject) => {\r\n const reader = new FileReader;\r\n reader.onerror = reject;\r\n reader.onload = () => {\r\n resolve(reader.result as string);\r\n };\r\n reader.readAsDataURL(blob);\r\n });\r\n}\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-core-file.mjs","sources":["../../../../projects/acorex/core/file/src/file-download-ref.class.ts","../../../../projects/acorex/core/file/src/file-download-result.class.ts","../../../../projects/acorex/core/file/src/file-upload-ref.class.ts","../../../../projects/acorex/core/file/src/file.service.ts","../../../../projects/acorex/core/file/acorex-core-file.ts"],"sourcesContent":["import { AXFileDownloadResult } from \"./file-download-result.class\";\r\n\r\nexport class AXFileDownloadRef extends Promise<AXFileDownloadResult>\r\n{\r\n public abortMethod: () => void;\r\n constructor(executor: (resolve: (value?: PromiseLike<AXFileDownloadResult>) => void, reject: (reason?: any) => void) => void) {\r\n super(executor);\r\n\r\n }\r\n //abort the operation\r\n public abort() {\r\n if (this.abortMethod) {\r\n this.abortMethod();\r\n }\r\n }\r\n}","export class AXFileDownloadResult {\r\n _response: Blob;\r\n\r\n constructor(response: Blob) {\r\n this._response = response;\r\n }\r\n\r\n save(filename?: string): Promise<void> {\r\n this._defaultBrowserDownload(filename);\r\n return Promise.resolve();\r\n // else {\r\n // return new Promise((resolve, reject) => {\r\n // const button = document.createElement(\"button\");\r\n // button.addEventListener('click', async () => {\r\n // button.remove();\r\n // const opts = {\r\n // types: [{\r\n // description: 'Save File',\r\n // suggestedName: filename\r\n // // accept: {'text/plain': ['.txt']},\r\n // }],\r\n // };\r\n // const result = await window['showSaveFilePicker'](opts);\r\n // console.log(result);\r\n\r\n // resolve();\r\n // });\r\n // button.click();\r\n // });\r\n\r\n // }\r\n }\r\n\r\n blob() {\r\n return this._response;\r\n }\r\n\r\n base64(): Promise<string> {\r\n return new Promise((resolve, reject) => {\r\n var reader = new window.FileReader();\r\n reader.onloadend = () => resolve(reader.result as string);\r\n reader.onerror = e => reject(e);\r\n reader.readAsDataURL(this._response);\r\n });\r\n }\r\n\r\n private _defaultBrowserDownload(filename: string = 'download') {\r\n const link = document.createElement('a');\r\n link.href = URL.createObjectURL(this._response);\r\n link.download = filename;\r\n link.click();\r\n }\r\n}\r\n","export class AXFileUploadRef<T = any> extends Promise<T>\r\n{\r\n public abortMethod: () => void;\r\n constructor(executor: (resolve: (value?: PromiseLike<T>) => void, reject: (reason?: any) => void) => void) {\r\n super(executor);\r\n\r\n }\r\n //abort the operation\r\n public abort() {\r\n if (this.abortMethod) {\r\n this.abortMethod();\r\n }\r\n }\r\n}","import { HttpClient, HttpContext, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { AXFileDownloadRef } from './file-download-ref.class';\r\nimport { AXFileDownloadResult } from './file-download-result.class';\r\nimport { AXFileUploadRef } from './file-upload-ref.class';\r\n\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXFileService {\r\n constructor(private _httpClient: HttpClient) { }\r\n\r\n public download(request: string | Observable<Blob>): AXFileDownloadRef {\r\n let s: Subscription;\r\n const promiseFunc = (resolve, reject) => {\r\n //TODO: add custome http request\r\n //const headers = new HttpHeaders().set('authorization','Bearer '+token);\r\n let b: Observable<Blob>;\r\n if (typeof request === 'string') {\r\n b = this._httpClient.get(request, { responseType: 'blob' });\r\n }\r\n else if (b instanceof Observable<Blob>) {\r\n b = request;\r\n }\r\n s = b?.subscribe({\r\n next: (v) => resolve(new AXFileDownloadResult(v)),\r\n error: (e) => reject(e)\r\n })\r\n };\r\n\r\n const a = new AXFileDownloadRef(promiseFunc);\r\n a.abort = () => {\r\n s?.unsubscribe();\r\n };\r\n\r\n return a;\r\n }\r\n\r\n public upload<T = any>(url: string, files: File[]): AXFileUploadRef<T> {\r\n let s: Subscription;\r\n let formData = new FormData();\r\n files.forEach(f => {\r\n formData.append(\"files\", f);\r\n })\r\n const promiseFunc = (resolve, reject) => {\r\n let b: Observable<T>;\r\n b = this._httpClient.post<T>(url, formData);\r\n\r\n s = b?.subscribe({\r\n next: (v) => resolve(v),\r\n error: (e) => reject(e)\r\n })\r\n };\r\n\r\n const a = new AXFileUploadRef(promiseFunc);\r\n a.abort = () => {\r\n s?.unsubscribe();\r\n };\r\n return a;\r\n }\r\n\r\n public choose(options?: { accept?: string, multiple?: boolean }): Promise<File[]> {\r\n return new Promise<File[]>((resolve, reject) => {\r\n options = Object.assign({ multiple: false }, options);\r\n const input = document.createElement(\"input\");\r\n input.style.display = 'none';\r\n document.body.appendChild(input);\r\n input.type = 'file';\r\n input.accept = options.accept;\r\n input.multiple = options.multiple;\r\n //\r\n const onError = (e) => {\r\n reject(e);\r\n document.body.removeChild(input)\r\n input.remove();\r\n input.removeEventListener('change', onChange);\r\n input.removeEventListener('error', onError);\r\n }\r\n //\r\n const onChange = () => {\r\n resolve(Array.from(input.files));\r\n document.body.removeChild(input)\r\n input.remove();\r\n input.removeEventListener('change', onChange);\r\n input.removeEventListener('error', onError);\r\n }\r\n //\r\n input.addEventListener('change', onChange);\r\n input.addEventListener('error', onError);\r\n input.click();\r\n });\r\n }\r\n\r\n blobToBase64 = (blob: Blob) => new Promise<string>((resolve, reject) => {\r\n const reader = new FileReader;\r\n reader.onerror = reject;\r\n reader.onload = () => {\r\n resolve(reader.result as string);\r\n };\r\n reader.readAsDataURL(blob);\r\n });\r\n}\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}