@acorex/core 7.0.40 → 7.1.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 (115) hide show
  1. package/dateTime/src/datetime.class.d.ts +1 -1
  2. package/esm2022/config/src/configs.mjs +24 -0
  3. package/esm2022/dateTime/src/datetime.class.mjs +295 -0
  4. package/{esm2020 → esm2022}/dateTime/src/datetime.module.mjs +5 -5
  5. package/{esm2020 → esm2022}/dateTime/src/datetime.pipe.mjs +4 -4
  6. package/esm2022/dateTime/src/georgian.calendar.mjs +187 -0
  7. package/esm2022/dateTime/src/jalali.calendar.mjs +357 -0
  8. package/esm2022/events/src/event.service.mjs +34 -0
  9. package/esm2022/file/src/file-download-ref.class.mjs +13 -0
  10. package/esm2022/file/src/file-download-result.class.mjs +47 -0
  11. package/esm2022/file/src/file-upload-ref.class.mjs +13 -0
  12. package/esm2022/file/src/file.service.mjs +102 -0
  13. package/esm2022/http/src/http-result.class.mjs +25 -0
  14. package/{esm2020 → esm2022}/http/src/http.module.mjs +9 -9
  15. package/esm2022/http/src/http.service.mjs +151 -0
  16. package/{esm2020 → esm2022}/image/src/image.service.mjs +4 -4
  17. package/{esm2020 → esm2022}/pipes/src/pipes.module.mjs +5 -5
  18. package/esm2022/pipes/src/safe.pipe.mjs +31 -0
  19. package/esm2022/platform/src/platform.service.mjs +159 -0
  20. package/{esm2020 → esm2022}/translation/src/translation.module.mjs +5 -5
  21. package/esm2022/translation/src/translator.mjs +43 -0
  22. package/{esm2020 → esm2022}/translation/src/translator.pipe.mjs +4 -4
  23. package/{fesm2015 → fesm2022}/acorex-core-config.mjs +3 -4
  24. package/{fesm2015 → fesm2022}/acorex-core-config.mjs.map +1 -1
  25. package/{fesm2015 → fesm2022}/acorex-core-dateTime.mjs +88 -86
  26. package/{fesm2015 → fesm2022}/acorex-core-dateTime.mjs.map +1 -1
  27. package/{fesm2020 → fesm2022}/acorex-core-events.mjs +4 -7
  28. package/fesm2022/acorex-core-events.mjs.map +1 -0
  29. package/{fesm2020 → fesm2022}/acorex-core-file.mjs +15 -12
  30. package/{fesm2020 → fesm2022}/acorex-core-file.mjs.map +1 -1
  31. package/{fesm2020 → fesm2022}/acorex-core-http.mjs +18 -12
  32. package/{fesm2015 → fesm2022}/acorex-core-http.mjs.map +1 -1
  33. package/{fesm2020 → fesm2022}/acorex-core-image.mjs +3 -4
  34. package/{fesm2020 → fesm2022}/acorex-core-image.mjs.map +1 -1
  35. package/{fesm2015 → fesm2022}/acorex-core-pipes.mjs +8 -8
  36. package/{fesm2015 → fesm2022}/acorex-core-pipes.mjs.map +1 -1
  37. package/{fesm2020 → fesm2022}/acorex-core-platform.mjs +39 -34
  38. package/fesm2022/acorex-core-platform.mjs.map +1 -0
  39. package/{fesm2020 → fesm2022}/acorex-core-translation.mjs +12 -13
  40. package/{fesm2020 → fesm2022}/acorex-core-translation.mjs.map +1 -1
  41. package/{fesm2020 → fesm2022}/acorex-core-utils.mjs +0 -1
  42. package/{fesm2015 → fesm2022}/acorex-core.mjs +0 -1
  43. package/package.json +42 -68
  44. package/platform/src/platform.service.d.ts +4 -4
  45. package/utils/src/color-util.d.ts +2 -2
  46. package/esm2020/config/src/configs.mjs +0 -24
  47. package/esm2020/dateTime/src/datetime.class.mjs +0 -288
  48. package/esm2020/dateTime/src/georgian.calendar.mjs +0 -189
  49. package/esm2020/dateTime/src/jalali.calendar.mjs +0 -359
  50. package/esm2020/events/src/event.service.mjs +0 -36
  51. package/esm2020/file/src/file-download-ref.class.mjs +0 -12
  52. package/esm2020/file/src/file-download-result.class.mjs +0 -46
  53. package/esm2020/file/src/file-upload-ref.class.mjs +0 -12
  54. package/esm2020/file/src/file.service.mjs +0 -101
  55. package/esm2020/http/src/http-result.class.mjs +0 -21
  56. package/esm2020/http/src/http.service.mjs +0 -148
  57. package/esm2020/pipes/src/safe.pipe.mjs +0 -30
  58. package/esm2020/platform/src/platform.service.mjs +0 -153
  59. package/esm2020/translation/src/translator.mjs +0 -43
  60. package/fesm2015/acorex-core-events.mjs +0 -44
  61. package/fesm2015/acorex-core-events.mjs.map +0 -1
  62. package/fesm2015/acorex-core-file.mjs +0 -176
  63. package/fesm2015/acorex-core-file.mjs.map +0 -1
  64. package/fesm2015/acorex-core-http.mjs +0 -203
  65. package/fesm2015/acorex-core-image.mjs +0 -54
  66. package/fesm2015/acorex-core-image.mjs.map +0 -1
  67. package/fesm2015/acorex-core-platform.mjs +0 -161
  68. package/fesm2015/acorex-core-platform.mjs.map +0 -1
  69. package/fesm2015/acorex-core-translation.mjs +0 -81
  70. package/fesm2015/acorex-core-translation.mjs.map +0 -1
  71. package/fesm2015/acorex-core-utils.mjs +0 -227
  72. package/fesm2020/acorex-core-config.mjs +0 -32
  73. package/fesm2020/acorex-core-config.mjs.map +0 -1
  74. package/fesm2020/acorex-core-dateTime.mjs +0 -899
  75. package/fesm2020/acorex-core-dateTime.mjs.map +0 -1
  76. package/fesm2020/acorex-core-events.mjs.map +0 -1
  77. package/fesm2020/acorex-core-http.mjs.map +0 -1
  78. package/fesm2020/acorex-core-pipes.mjs +0 -54
  79. package/fesm2020/acorex-core-pipes.mjs.map +0 -1
  80. package/fesm2020/acorex-core-platform.mjs.map +0 -1
  81. package/fesm2020/acorex-core-utils.mjs.map +0 -1
  82. package/fesm2020/acorex-core.mjs +0 -12
  83. package/fesm2020/acorex-core.mjs.map +0 -1
  84. /package/{esm2020 → esm2022}/acorex-core.mjs +0 -0
  85. /package/{esm2020 → esm2022}/config/acorex-core-config.mjs +0 -0
  86. /package/{esm2020 → esm2022}/config/public-api.mjs +0 -0
  87. /package/{esm2020 → esm2022}/dateTime/acorex-core-dateTime.mjs +0 -0
  88. /package/{esm2020 → esm2022}/dateTime/public-api.mjs +0 -0
  89. /package/{esm2020 → esm2022}/events/acorex-core-events.mjs +0 -0
  90. /package/{esm2020 → esm2022}/events/public-api.mjs +0 -0
  91. /package/{esm2020 → esm2022}/file/acorex-core-file.mjs +0 -0
  92. /package/{esm2020 → esm2022}/file/public-api.mjs +0 -0
  93. /package/{esm2020 → esm2022}/http/acorex-core-http.mjs +0 -0
  94. /package/{esm2020 → esm2022}/http/public-api.mjs +0 -0
  95. /package/{esm2020 → esm2022}/http/src/http-error.class.mjs +0 -0
  96. /package/{esm2020 → esm2022}/http/src/http-events.interceptor.mjs +0 -0
  97. /package/{esm2020 → esm2022}/http/src/http-request.class.mjs +0 -0
  98. /package/{esm2020 → esm2022}/image/acorex-core-image.mjs +0 -0
  99. /package/{esm2020 → esm2022}/image/public-api.mjs +0 -0
  100. /package/{esm2020 → esm2022}/pipes/acorex-core-pipes.mjs +0 -0
  101. /package/{esm2020 → esm2022}/pipes/public-api.mjs +0 -0
  102. /package/{esm2020 → esm2022}/platform/acorex-core-platform.mjs +0 -0
  103. /package/{esm2020 → esm2022}/platform/public-api.mjs +0 -0
  104. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  105. /package/{esm2020 → esm2022}/translation/acorex-core-translation.mjs +0 -0
  106. /package/{esm2020 → esm2022}/translation/public-api.mjs +0 -0
  107. /package/{esm2020 → esm2022}/utils/acorex-core-utils.mjs +0 -0
  108. /package/{esm2020 → esm2022}/utils/public-api.mjs +0 -0
  109. /package/{esm2020 → esm2022}/utils/src/color-util.mjs +0 -0
  110. /package/{esm2020 → esm2022}/utils/src/drawing-util.mjs +0 -0
  111. /package/{esm2020 → esm2022}/utils/src/html-util.mjs +0 -0
  112. /package/{esm2020 → esm2022}/utils/src/object-util.mjs +0 -0
  113. /package/{esm2020 → esm2022}/utils/src/string-util.mjs +0 -0
  114. /package/{fesm2015 → fesm2022}/acorex-core-utils.mjs.map +0 -0
  115. /package/{fesm2015 → fesm2022}/acorex-core.mjs.map +0 -0
@@ -1,176 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { Injectable } from '@angular/core';
3
- import { Observable } from 'rxjs';
4
- import * as i1 from '@angular/common/http';
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
- }
16
- }
17
-
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
- }
62
- }
63
-
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
- }
74
- }
75
-
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 === null || b === void 0 ? void 0 : 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 === null || s === void 0 ? void 0 : 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 === null || b === void 0 ? void 0 : 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 === null || s === void 0 ? void 0 : 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' }]
168
- }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
169
-
170
- /**
171
- * Generated bundle index. Do not edit.
172
- */
173
-
174
- export { AXFileDownloadRef, AXFileDownloadResult, AXFileService, AXFileUploadRef };
175
- //# sourceMappingURL=acorex-core-file.mjs.map
176
- //# sourceMappingURL=acorex-core-file.mjs.map
@@ -1 +0,0 @@
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,203 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { InjectionToken, Injectable, NgModule } from '@angular/core';
3
- import { CommonModule } from '@angular/common';
4
- import * as i1 from '@angular/common/http';
5
- import { HttpHeaders, HttpParams, HttpClientModule } from '@angular/common/http';
6
-
7
- const AX_HTTP_EVENT_INTERCEPTOR = new InjectionToken('ax.http.events');
8
-
9
- class HttpResult {
10
- constructor(executor) {
11
- this._executor = executor;
12
- setTimeout(() => {
13
- this._executor(this.resultAction, this.errorAction, this.completeAction);
14
- }, 50);
15
- }
16
- result(action) {
17
- this.resultAction = action;
18
- return this;
19
- }
20
- error(action) {
21
- this.errorAction = action;
22
- return this;
23
- }
24
- complete(action) {
25
- this.completeAction = action;
26
- return this;
27
- }
28
- }
29
-
30
- // import { catchError, retry, retryWhen, mergeMap, delay, switchMap, scan, takeWhile, flatMap } from 'rxjs/operators';
31
- // import { of, concat, throwError } from 'rxjs';
32
- class AXHttpService {
33
- constructor(http, injector) {
34
- this.http = http;
35
- this.injector = injector;
36
- this.interceptor = this.injector.get(AX_HTTP_EVENT_INTERCEPTOR);
37
- }
38
- get(url, config = {}) {
39
- config.url = url;
40
- config.method = "get";
41
- return this.request(config);
42
- }
43
- post(url, config = {}) {
44
- config.url = url;
45
- config.method = "post";
46
- return this.request(config);
47
- }
48
- delete(url, config = {}) {
49
- config.url = url;
50
- config.method = "delete";
51
- return this.request(config);
52
- }
53
- put(url, config = {}) {
54
- config.url = url;
55
- config.method = "put";
56
- return this.request(config);
57
- }
58
- request(config) {
59
- return new HttpResult((result, error, complete) => {
60
- this.handleBegin(config).then(c => {
61
- this.http
62
- //TODO: check ts error
63
- //@ts-ignore
64
- .request(config.method, config.url, this.mapOptions(config))
65
- //.pipe(this.retry)
66
- .subscribe(data => {
67
- this.handleResult(data, result, complete, config);
68
- }, c => {
69
- this.handleError(c, error, complete, config);
70
- });
71
- });
72
- });
73
- }
74
- handleResult(data, result, complete, config) {
75
- if (this.interceptor) {
76
- this.interceptor.success(config, data).then(c => {
77
- if (result)
78
- result(c);
79
- this.handleComplete(complete, config);
80
- });
81
- }
82
- else {
83
- //
84
- if (result)
85
- result(data);
86
- this.handleComplete(complete, config);
87
- }
88
- }
89
- handleBegin(config) {
90
- return new Promise((resolve) => {
91
- if (!config.headers)
92
- config.headers = {};
93
- if (!config.params)
94
- config.params = {};
95
- //
96
- if (this.interceptor) {
97
- this.interceptor.begin(config).then(c => {
98
- resolve(c);
99
- });
100
- }
101
- else {
102
- resolve(config);
103
- }
104
- });
105
- }
106
- handleComplete(complete, config) {
107
- if (complete)
108
- complete();
109
- if (this.interceptor)
110
- this.interceptor.complete(config);
111
- }
112
- handleError(c, error, complete, config) {
113
- var _a;
114
- let r = {
115
- message: c.message,
116
- status: c.status,
117
- code: (_a = c.status) === null || _a === void 0 ? void 0 : _a.toString(),
118
- handled: false,
119
- error: c.error
120
- };
121
- if (error) {
122
- error(r);
123
- }
124
- if (!r.handled) {
125
- if (this.interceptor)
126
- this.interceptor.error(config, r);
127
- }
128
- this.handleComplete(complete, config);
129
- }
130
- mapOptions(options) {
131
- let headers = new HttpHeaders();
132
- for (const key in options.headers) {
133
- if (options.headers.hasOwnProperty(key)) {
134
- const value = options.headers[key];
135
- headers = headers.set(key, value);
136
- }
137
- }
138
- let params = new HttpParams();
139
- for (const key in options.params) {
140
- if (options.params.hasOwnProperty(key)) {
141
- const value = options.params[key];
142
- params = params.set(key, value);
143
- }
144
- }
145
- return {
146
- headers: headers,
147
- params: params,
148
- body: options.body,
149
- responseType: options.responseType || 'json'
150
- };
151
- // if (options.method == "get") {
152
- // return {
153
- // headers: headers,
154
- // params: params
155
- // };
156
- // }
157
- // else {
158
- // return {
159
- // headers: headers,
160
- // params: params,
161
- // body: options.body
162
- // };
163
- // }
164
- }
165
- }
166
- AXHttpService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXHttpService, deps: [{ token: i1.HttpClient }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
167
- AXHttpService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXHttpService, providedIn: 'root' });
168
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXHttpService, decorators: [{
169
- type: Injectable,
170
- args: [{ providedIn: 'root' }]
171
- }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i0.Injector }]; } });
172
-
173
- class AXHttpModule {
174
- }
175
- AXHttpModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXHttpModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
176
- AXHttpModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.4", ngImport: i0, type: AXHttpModule, imports: [CommonModule,
177
- HttpClientModule], exports: [HttpClientModule] });
178
- AXHttpModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXHttpModule, providers: [
179
- AXHttpService
180
- ], imports: [CommonModule,
181
- HttpClientModule, HttpClientModule] });
182
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXHttpModule, decorators: [{
183
- type: NgModule,
184
- args: [{
185
- declarations: [],
186
- imports: [
187
- CommonModule,
188
- HttpClientModule
189
- ],
190
- exports: [HttpClientModule],
191
- providers: [
192
- AXHttpService
193
- ]
194
- }]
195
- }] });
196
-
197
- /**
198
- * Generated bundle index. Do not edit.
199
- */
200
-
201
- export { AXHttpModule, AX_HTTP_EVENT_INTERCEPTOR, HttpResult };
202
- //# sourceMappingURL=acorex-core-http.mjs.map
203
- //# sourceMappingURL=acorex-core-http.mjs.map
@@ -1,54 +0,0 @@
1
- import { __awaiter } from 'tslib';
2
- import * as i0 from '@angular/core';
3
- import { Injectable } from '@angular/core';
4
-
5
- class AXImageService {
6
- constructor() { }
7
- resize(options) {
8
- return __awaiter(this, void 0, void 0, function* () {
9
- options = Object.assign({ type: 'image/png', quality: 1 }, options);
10
- let image;
11
- if (options.source instanceof File) {
12
- var a = new Image();
13
- a.src = URL.createObjectURL(options.source);
14
- yield new Promise((res) => a.onload = res);
15
- image = a;
16
- }
17
- else {
18
- image = options.source;
19
- }
20
- // Resize the image
21
- var canvas = document.createElement('canvas'), width = image.width, height = image.height;
22
- if (width > height) {
23
- if (width > options.maxSize) {
24
- height *= options.maxSize / width;
25
- width = options.maxSize;
26
- }
27
- }
28
- else {
29
- if (height > options.maxSize) {
30
- width *= options.maxSize / height;
31
- height = options.maxSize;
32
- }
33
- }
34
- canvas.width = width;
35
- canvas.height = height;
36
- canvas.getContext('2d').drawImage(image, 0, 0, width, height);
37
- return new Promise((resolve) => canvas.toBlob(resolve, options.type, options.quality));
38
- });
39
- }
40
- }
41
- AXImageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXImageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
42
- AXImageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXImageService, providedIn: 'root' });
43
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXImageService, decorators: [{
44
- type: Injectable,
45
- args: [{ providedIn: 'root' }]
46
- }], ctorParameters: function () { return []; } });
47
-
48
- /**
49
- * Generated bundle index. Do not edit.
50
- */
51
-
52
- export { AXImageService };
53
- //# sourceMappingURL=acorex-core-image.mjs.map
54
- //# sourceMappingURL=acorex-core-image.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-core-image.mjs","sources":["../../../../projects/acorex/core/image/src/image.service.ts","../../../../projects/acorex/core/image/acorex-core-image.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXImageService {\r\n constructor() { }\r\n\r\n\r\n async resize(options: { maxSize: number, source: HTMLImageElement | File, type?: 'image/png' | 'image/jpeg' | 'image/webp', quality?: number }): Promise<Blob> {\r\n options = Object.assign({ type: 'image/png', quality: 1 }, options);\r\n\r\n let image: HTMLImageElement;\r\n if (options.source instanceof File) {\r\n var a = new Image()\r\n a.src = URL.createObjectURL(options.source);\r\n await new Promise<Event>((res) => a.onload = res);\r\n image = a;\r\n }\r\n else {\r\n image = options.source;\r\n }\r\n\r\n // Resize the image\r\n var canvas = document.createElement('canvas'),\r\n width = image.width,\r\n height = image.height;\r\n if (width > height) {\r\n if (width > options.maxSize) {\r\n height *= options.maxSize / width;\r\n width = options.maxSize;\r\n }\r\n } else {\r\n if (height > options.maxSize) {\r\n width *= options.maxSize / height;\r\n height = options.maxSize;\r\n }\r\n }\r\n canvas.width = width;\r\n canvas.height = height;\r\n canvas.getContext('2d').drawImage(image, 0, 0, width, height);\r\n return new Promise((resolve) => canvas.toBlob(resolve, options.type, options.quality));\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAGa,cAAc,CAAA;AACvB,IAAA,WAAA,GAAA,GAAiB;AAGX,IAAA,MAAM,CAAC,OAAiI,EAAA;;AAC1I,YAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAEpE,YAAA,IAAI,KAAuB,CAAC;AAC5B,YAAA,IAAI,OAAO,CAAC,MAAM,YAAY,IAAI,EAAE;AAChC,gBAAA,IAAI,CAAC,GAAG,IAAI,KAAK,EAAE,CAAA;gBACnB,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC5C,gBAAA,MAAM,IAAI,OAAO,CAAQ,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;gBAClD,KAAK,GAAG,CAAC,CAAC;AACb,aAAA;AACI,iBAAA;AACD,gBAAA,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;AAC1B,aAAA;;YAGD,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,EACzC,KAAK,GAAG,KAAK,CAAC,KAAK,EACnB,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC1B,IAAI,KAAK,GAAG,MAAM,EAAE;AAChB,gBAAA,IAAI,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE;AACzB,oBAAA,MAAM,IAAI,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;AAClC,oBAAA,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;AAC3B,iBAAA;AACJ,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE;AAC1B,oBAAA,KAAK,IAAI,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;AAClC,oBAAA,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;AAC5B,iBAAA;AACJ,aAAA;AACD,YAAA,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,YAAA,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,YAAA,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAC9D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;SAC1F,CAAA,CAAA;AAAA,KAAA;;2GArCQ,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cADD,MAAM,EAAA,CAAA,CAAA;2FACnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;ACFlC;;AAEG;;;;"}
@@ -1,161 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { Injectable } from '@angular/core';
3
- import { Subject, fromEvent } from 'rxjs';
4
- import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
5
-
6
- const isChrome = (win) => testUserAgent(win, /Chrome/i);
7
- const isFirefox = (win) => testUserAgent(win, /Firefox/i);
8
- const isEdge = (win) => testUserAgent(win, /Edge/i);
9
- const isSafari = (win) => testUserAgent(win, /Safari/i);
10
- const isOpera = (win) => testUserAgent(win, /Opera/i) || testUserAgent(win, /OPR/i);
11
- const isMSIE = (win) => testUserAgent(win, /MSIE/i) || testUserAgent(win, /Trident/i);
12
- const isMobileWeb = (win) => isMobile(win) && !isHybrid(win);
13
- const isIpad = (win) => {
14
- // iOS 12 and below
15
- if (testUserAgent(win, /iPad/i)) {
16
- return true;
17
- }
18
- // iOS 13+
19
- if (testUserAgent(win, /Macintosh/i) && isMobile(win)) {
20
- return true;
21
- }
22
- return false;
23
- };
24
- const isIphone = (win) => testUserAgent(win, /iPhone/i);
25
- const isIOS = (win) => testUserAgent(win, /iPhone|iPod/i) || isIpad(win);
26
- const isAndroid = (win) => testUserAgent(win, /android|sink/i);
27
- const isAndroidTablet = (win) => {
28
- return isAndroid(win) && !testUserAgent(win, /mobile/i);
29
- };
30
- const isPhablet = (win) => {
31
- const width = win.innerWidth;
32
- const height = win.innerHeight;
33
- const smallest = Math.min(width, height);
34
- const largest = Math.max(width, height);
35
- return smallest > 390 && smallest < 520 && largest > 620 && largest < 800;
36
- };
37
- const isTablet = (win) => {
38
- const width = win.innerWidth;
39
- const height = win.innerHeight;
40
- const smallest = Math.min(width, height);
41
- const largest = Math.max(width, height);
42
- return (isIpad(win) ||
43
- isAndroidTablet(win) ||
44
- (smallest > 460 && smallest < 820 && largest > 780 && largest < 1400));
45
- };
46
- const isMobile = (win) => matchMedia(win, '(any-pointer:coarse)');
47
- const isTouch = (win) => matchMedia(win, '(any-pointer:coarse)');
48
- const isDesktop = (win) => !isMobile(win);
49
- const isHybrid = (win) => isCordova(win) || isCapacitorNative(win);
50
- const isCordova = (win) => !!(win['cordova'] || win['phonegap'] || win['PhoneGap']);
51
- const isCapacitorNative = (win) => {
52
- const capacitor = win['Capacitor'];
53
- return !!(capacitor && capacitor.isNative);
54
- };
55
- const isElectron = (win) => testUserAgent(win, /electron/i);
56
- const isPWA = (win) => !!(win.matchMedia('(display-mode: standalone)').matches ||
57
- win.navigator.standalone);
58
- const testUserAgent = (win, expr) => expr.test(win.navigator.userAgent);
59
- const matchMedia = (win, query) => win.matchMedia(query).matches;
60
- const isSMScreen = (win) => matchMedia(win, '(max-width: 640px)');
61
- const isMDScreen = (win) => matchMedia(win, '(max-width: 768px)');
62
- const isLGScreen = (win) => matchMedia(win, '(max-width: 1024px)');
63
- const isXLScreen = (win) => matchMedia(win, '(max-width: 1280px)');
64
- const is2XLScreen = (win) => matchMedia(win, '(max-width: 1536px)');
65
- const PLATFORMS_MAP = {
66
- Android: isAndroid,
67
- iOS: isIOS,
68
- Desktop: isDesktop,
69
- Mobile: isMobile,
70
- Touch: isTouch,
71
- Chrome: isChrome,
72
- Firefox: isFirefox,
73
- Safari: isSafari,
74
- Edge: isEdge,
75
- Opera: isOpera,
76
- Hybrid: isHybrid,
77
- PWA: isPWA,
78
- Electron: isElectron,
79
- SM: isSMScreen,
80
- MD: isMDScreen,
81
- LG: isLGScreen,
82
- XL: isXLScreen,
83
- "2XL": is2XLScreen,
84
- };
85
- class AXPlatformEvent {
86
- }
87
- class AXPlatform {
88
- constructor() {
89
- this.resize = new Subject();
90
- this.click = new Subject();
91
- this.scroll = new Subject();
92
- fromEvent(window, 'resize')
93
- .pipe(debounceTime(100))
94
- .pipe(distinctUntilChanged())
95
- .subscribe((e) => {
96
- this.resize.next({
97
- nativeEvent: e,
98
- source: this,
99
- });
100
- //
101
- this._setFullHeightRatio();
102
- });
103
- document.addEventListener('click', (e) => {
104
- this.click.next({
105
- nativeEvent: e,
106
- source: this,
107
- });
108
- }, true);
109
- document.addEventListener('scroll', (e) => {
110
- this.scroll.next({
111
- nativeEvent: e,
112
- source: this,
113
- });
114
- }, true);
115
- // init functions
116
- this._setFullHeightRatio();
117
- }
118
- isRtl() {
119
- return (document.dir == 'rtl' ||
120
- document.body.dir == 'rtl' ||
121
- document.body.style.direction == 'rtl');
122
- }
123
- isLandscape() {
124
- return window.innerHeight < window.innerWidth;
125
- }
126
- isPortrate() {
127
- return !this.isLandscape();
128
- }
129
- is(name) {
130
- return PLATFORMS_MAP[name](window) || false;
131
- }
132
- switchDarkMode() {
133
- const _html = document.getElementsByTagName('html')[0];
134
- _html.classList.add('ax-dark');
135
- }
136
- switchLightMode() {
137
- const _html = document.getElementsByTagName('html')[0];
138
- _html.classList.remove('ax-dark');
139
- }
140
- _setFullHeightRatio() {
141
- var _a;
142
- (_a = document
143
- .querySelector(':root')) === null || _a === void 0 ? void 0 : _a.style.setProperty('--ax-vh', window.innerHeight / 100 + 'px');
144
- }
145
- }
146
- AXPlatform.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXPlatform, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
147
- AXPlatform.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXPlatform, providedIn: 'root' });
148
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXPlatform, decorators: [{
149
- type: Injectable,
150
- args: [{
151
- providedIn: 'root',
152
- }]
153
- }], ctorParameters: function () { return []; } });
154
-
155
- /**
156
- * Generated bundle index. Do not edit.
157
- */
158
-
159
- export { AXPlatform, AXPlatformEvent, testUserAgent };
160
- //# sourceMappingURL=acorex-core-platform.mjs.map
161
- //# sourceMappingURL=acorex-core-platform.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-core-platform.mjs","sources":["../../../../projects/acorex/core/platform/src/platform.service.ts","../../../../projects/acorex/core/platform/acorex-core-platform.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { fromEvent, Subject } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\n\r\nexport type AXPlatforms = 'Android' | 'Desktop' | 'iOS' | 'Mobile';\r\nexport type AXBrowsers =\r\n | 'Chrome'\r\n | 'Safari'\r\n | 'Edge'\r\n | 'Firefox'\r\n | 'Opera'\r\n | 'MSIE';\r\nexport type AXTechnologies = 'PWA' | 'Hybrid' | 'Electron';\r\n\r\nexport type AXScreenSizes = 'SM' | 'MD' | 'LG' | 'XL' | '2XL';\r\n\r\nconst isChrome = (win: Window): boolean => testUserAgent(win, /Chrome/i);\r\n\r\nconst isFirefox = (win: Window): boolean => testUserAgent(win, /Firefox/i);\r\n\r\nconst isEdge = (win: Window): boolean => testUserAgent(win, /Edge/i);\r\n\r\nconst isSafari = (win: Window): boolean => testUserAgent(win, /Safari/i);\r\n\r\nconst isOpera = (win: Window): boolean =>\r\n testUserAgent(win, /Opera/i) || testUserAgent(win, /OPR/i);\r\n\r\nconst isMSIE = (win: Window): boolean =>\r\n testUserAgent(win, /MSIE/i) || testUserAgent(win, /Trident/i);\r\n\r\nconst isMobileWeb = (win: Window): boolean => isMobile(win) && !isHybrid(win);\r\n\r\nconst isIpad = (win: Window) => {\r\n // iOS 12 and below\r\n if (testUserAgent(win, /iPad/i)) {\r\n return true;\r\n }\r\n\r\n // iOS 13+\r\n if (testUserAgent(win, /Macintosh/i) && isMobile(win)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n};\r\n\r\nconst isIphone = (win: Window) => testUserAgent(win, /iPhone/i);\r\n\r\nconst isIOS = (win: Window) =>\r\n testUserAgent(win, /iPhone|iPod/i) || isIpad(win);\r\n\r\nconst isAndroid = (win: Window) => testUserAgent(win, /android|sink/i);\r\n\r\nconst isAndroidTablet = (win: Window) => {\r\n return isAndroid(win) && !testUserAgent(win, /mobile/i);\r\n};\r\n\r\nconst isPhablet = (win: Window) => {\r\n const width = win.innerWidth;\r\n const height = win.innerHeight;\r\n const smallest = Math.min(width, height);\r\n const largest = Math.max(width, height);\r\n\r\n return smallest > 390 && smallest < 520 && largest > 620 && largest < 800;\r\n};\r\n\r\nconst isTablet = (win: Window) => {\r\n const width = win.innerWidth;\r\n const height = win.innerHeight;\r\n const smallest = Math.min(width, height);\r\n const largest = Math.max(width, height);\r\n\r\n return (\r\n isIpad(win) ||\r\n isAndroidTablet(win) ||\r\n (smallest > 460 && smallest < 820 && largest > 780 && largest < 1400)\r\n );\r\n};\r\n\r\nconst isMobile = (win: Window) => matchMedia(win, '(any-pointer:coarse)');\r\nconst isTouch = (win: Window) => matchMedia(win, '(any-pointer:coarse)');\r\n\r\nconst isDesktop = (win: Window) => !isMobile(win);\r\n\r\nconst isHybrid = (win: Window) => isCordova(win) || isCapacitorNative(win);\r\n\r\nconst isCordova = (win: any): boolean =>\r\n !!(win['cordova'] || win['phonegap'] || win['PhoneGap']);\r\n\r\nconst isCapacitorNative = (win: any): boolean => {\r\n const capacitor = win['Capacitor'];\r\n return !!(capacitor && capacitor.isNative);\r\n};\r\n\r\nconst isElectron = (win: Window): boolean => testUserAgent(win, /electron/i);\r\n\r\nconst isPWA = (win: Window): boolean =>\r\n !!(\r\n win.matchMedia('(display-mode: standalone)').matches ||\r\n (win.navigator as any).standalone\r\n );\r\n\r\nexport const testUserAgent = (win: Window, expr: RegExp) =>\r\n expr.test(win.navigator.userAgent);\r\n\r\nconst matchMedia = (win: Window, query: string): boolean =>\r\n win.matchMedia(query).matches;\r\n\r\n\r\nconst isSMScreen = (win: Window) => matchMedia(win, '(max-width: 640px)');\r\nconst isMDScreen = (win: Window) => matchMedia(win, '(max-width: 768px)');\r\nconst isLGScreen = (win: Window) => matchMedia(win, '(max-width: 1024px)');\r\nconst isXLScreen = (win: Window) => matchMedia(win, '(max-width: 1280px)');\r\nconst is2XLScreen = (win: Window) => matchMedia(win, '(max-width: 1536px)');\r\n\r\nconst PLATFORMS_MAP: any = {\r\n Android: isAndroid,\r\n iOS: isIOS,\r\n Desktop: isDesktop,\r\n Mobile: isMobile,\r\n Touch: isTouch,\r\n Chrome: isChrome,\r\n Firefox: isFirefox,\r\n Safari: isSafari,\r\n Edge: isEdge,\r\n Opera: isOpera,\r\n Hybrid: isHybrid,\r\n PWA: isPWA,\r\n Electron: isElectron,\r\n SM: isSMScreen,\r\n MD: isMDScreen,\r\n LG: isLGScreen,\r\n XL: isXLScreen,\r\n \"2XL\": is2XLScreen,\r\n};\r\n\r\nexport class AXPlatformEvent<T extends Event = Event> {\r\n nativeEvent!: T;\r\n source!: AXPlatform;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AXPlatform {\r\n resize: Subject<AXPlatformEvent> = new Subject<AXPlatformEvent>();\r\n click: Subject<AXPlatformEvent> = new Subject<AXPlatformEvent>();\r\n scroll: Subject<AXPlatformEvent> = new Subject<AXPlatformEvent>();\r\n\r\n isRtl(): boolean {\r\n return (\r\n document.dir == 'rtl' ||\r\n document.body.dir == 'rtl' ||\r\n document.body.style.direction == 'rtl'\r\n );\r\n }\r\n\r\n isLandscape(): boolean {\r\n return window.innerHeight < window.innerWidth;\r\n }\r\n\r\n isPortrate(): boolean {\r\n return !this.isLandscape();\r\n }\r\n\r\n is(name: AXPlatforms | AXBrowsers | AXTechnologies | AXScreenSizes): boolean {\r\n return PLATFORMS_MAP[name](window) || false;\r\n }\r\n\r\n switchDarkMode() {\r\n const _html = document.getElementsByTagName('html')[0];\r\n _html.classList.add('ax-dark');\r\n }\r\n\r\n switchLightMode() {\r\n const _html = document.getElementsByTagName('html')[0];\r\n _html.classList.remove('ax-dark');\r\n }\r\n\r\n private _setFullHeightRatio() {\r\n document\r\n .querySelector<HTMLElement>(':root')\r\n ?.style.setProperty('--ax-vh', window.innerHeight / 100 + 'px');\r\n }\r\n\r\n constructor() {\r\n fromEvent<UIEvent>(window, 'resize')\r\n .pipe(debounceTime(100))\r\n .pipe(distinctUntilChanged())\r\n .subscribe((e) => {\r\n this.resize.next({\r\n nativeEvent: e,\r\n source: this,\r\n });\r\n //\r\n this._setFullHeightRatio();\r\n });\r\n\r\n document.addEventListener(\r\n 'click',\r\n (e) => {\r\n this.click.next({\r\n nativeEvent: e,\r\n source: this,\r\n });\r\n },\r\n true\r\n );\r\n\r\n document.addEventListener(\r\n 'scroll',\r\n (e) => {\r\n this.scroll.next({\r\n nativeEvent: e,\r\n source: this,\r\n });\r\n },\r\n true\r\n );\r\n // init functions\r\n this._setFullHeightRatio();\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;AAgBA,MAAM,QAAQ,GAAG,CAAC,GAAW,KAAc,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAEzE,MAAM,SAAS,GAAG,CAAC,GAAW,KAAc,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AAE3E,MAAM,MAAM,GAAG,CAAC,GAAW,KAAc,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAErE,MAAM,QAAQ,GAAG,CAAC,GAAW,KAAc,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAEzE,MAAM,OAAO,GAAG,CAAC,GAAW,KAC1B,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAE7D,MAAM,MAAM,GAAG,CAAC,GAAW,KACzB,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AAEhE,MAAM,WAAW,GAAG,CAAC,GAAW,KAAc,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAE9E,MAAM,MAAM,GAAG,CAAC,GAAW,KAAI;;AAE7B,IAAA,IAAI,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE;AAC/B,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;;IAGD,IAAI,aAAa,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;AACrD,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AAED,IAAA,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,GAAW,KAAK,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAEhE,MAAM,KAAK,GAAG,CAAC,GAAW,KACxB,aAAa,CAAC,GAAG,EAAE,cAAc,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;AAEpD,MAAM,SAAS,GAAG,CAAC,GAAW,KAAK,aAAa,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;AAEvE,MAAM,eAAe,GAAG,CAAC,GAAW,KAAI;AACtC,IAAA,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAC1D,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,GAAW,KAAI;AAChC,IAAA,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC;AAC7B,IAAA,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW,CAAC;IAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAExC,IAAA,OAAO,QAAQ,GAAG,GAAG,IAAI,QAAQ,GAAG,GAAG,IAAI,OAAO,GAAG,GAAG,IAAI,OAAO,GAAG,GAAG,CAAC;AAC5E,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,GAAW,KAAI;AAC/B,IAAA,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC;AAC7B,IAAA,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW,CAAC;IAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAExC,IAAA,QACE,MAAM,CAAC,GAAG,CAAC;QACX,eAAe,CAAC,GAAG,CAAC;AACpB,SAAC,QAAQ,GAAG,GAAG,IAAI,QAAQ,GAAG,GAAG,IAAI,OAAO,GAAG,GAAG,IAAI,OAAO,GAAG,IAAI,CAAC,EACrE;AACJ,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,GAAW,KAAK,UAAU,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC;AAC1E,MAAM,OAAO,GAAG,CAAC,GAAW,KAAK,UAAU,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC;AAEzE,MAAM,SAAS,GAAG,CAAC,GAAW,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAElD,MAAM,QAAQ,GAAG,CAAC,GAAW,KAAK,SAAS,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAE3E,MAAM,SAAS,GAAG,CAAC,GAAQ,KACzB,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AAE3D,MAAM,iBAAiB,GAAG,CAAC,GAAQ,KAAa;AAC9C,IAAA,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,GAAW,KAAc,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;AAE7E,MAAM,KAAK,GAAG,CAAC,GAAW,KACxB,CAAC,EACC,GAAG,CAAC,UAAU,CAAC,4BAA4B,CAAC,CAAC,OAAO;AACnD,IAAA,GAAG,CAAC,SAAiB,CAAC,UAAU,CAClC,CAAC;MAES,aAAa,GAAG,CAAC,GAAW,EAAE,IAAY,KACrD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE;AAErC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,KAAa,KAC5C,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;AAGhC,MAAM,UAAU,GAAG,CAAC,GAAW,KAAK,UAAU,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;AAC1E,MAAM,UAAU,GAAG,CAAC,GAAW,KAAK,UAAU,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;AAC1E,MAAM,UAAU,GAAG,CAAC,GAAW,KAAK,UAAU,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;AAC3E,MAAM,UAAU,GAAG,CAAC,GAAW,KAAK,UAAU,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;AAC3E,MAAM,WAAW,GAAG,CAAC,GAAW,KAAK,UAAU,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;AAE5E,MAAM,aAAa,GAAQ;AACzB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,KAAK,EAAE,WAAW;CACnB,CAAC;MAEW,eAAe,CAAA;AAG3B,CAAA;MAKY,UAAU,CAAA;AAyCrB,IAAA,WAAA,GAAA;AAxCA,QAAA,IAAA,CAAA,MAAM,GAA6B,IAAI,OAAO,EAAmB,CAAC;AAClE,QAAA,IAAA,CAAA,KAAK,GAA6B,IAAI,OAAO,EAAmB,CAAC;AACjE,QAAA,IAAA,CAAA,MAAM,GAA6B,IAAI,OAAO,EAAmB,CAAC;AAuChE,QAAA,SAAS,CAAU,MAAM,EAAE,QAAQ,CAAC;AACjC,aAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;aACvB,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC5B,aAAA,SAAS,CAAC,CAAC,CAAC,KAAI;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACf,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,MAAM,EAAE,IAAI;AACb,aAAA,CAAC,CAAC;;YAEH,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC7B,SAAC,CAAC,CAAC;QAEL,QAAQ,CAAC,gBAAgB,CACvB,OAAO,EACP,CAAC,CAAC,KAAI;AACJ,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AACd,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,MAAM,EAAE,IAAI;AACb,aAAA,CAAC,CAAC;SACJ,EACD,IAAI,CACL,CAAC;QAEF,QAAQ,CAAC,gBAAgB,CACvB,QAAQ,EACR,CAAC,CAAC,KAAI;AACJ,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACf,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,MAAM,EAAE,IAAI;AACb,aAAA,CAAC,CAAC;SACJ,EACD,IAAI,CACL,CAAC;;QAEF,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;IAxED,KAAK,GAAA;AACH,QAAA,QACE,QAAQ,CAAC,GAAG,IAAI,KAAK;AACrB,YAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK;YAC1B,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,EACtC;KACH;IAED,WAAW,GAAA;AACT,QAAA,OAAO,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;KAC/C;IAED,UAAU,GAAA;AACR,QAAA,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;KAC5B;AAED,IAAA,EAAE,CAAC,IAA+D,EAAA;QAChE,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;KAC7C;IAED,cAAc,GAAA;QACZ,MAAM,KAAK,GAAG,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,QAAA,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;KAChC;IAED,eAAe,GAAA;QACb,MAAM,KAAK,GAAG,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,QAAA,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;KACnC;IAEO,mBAAmB,GAAA;;AACzB,QAAA,CAAA,EAAA,GAAA,QAAQ;AACL,aAAA,aAAa,CAAc,OAAO,CAAC,0CAClC,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;KACnE;;uGAvCU,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAV,UAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,cAFT,MAAM,EAAA,CAAA,CAAA;2FAEP,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;AC/ID;;AAEG;;;;"}