@acorex/core 7.0.20 → 7.0.22

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 (205) hide show
  1. package/config/index.d.ts +5 -0
  2. package/config/public-api.d.ts +1 -0
  3. package/config/src/configs.d.ts +9 -0
  4. package/dateTime/index.d.ts +5 -0
  5. package/dateTime/{public-api.ts → public-api.d.ts} +1 -1
  6. package/dateTime/src/datetime.class.d.ts +100 -0
  7. package/dateTime/src/datetime.module.d.ts +8 -0
  8. package/dateTime/src/datetime.pipe.d.ts +8 -0
  9. package/dateTime/src/georgian.calendar.d.ts +20 -0
  10. package/dateTime/src/jalali.calendar.d.ts +35 -0
  11. package/esm2020/acorex-core.mjs +5 -0
  12. package/esm2020/config/acorex-core-config.mjs +5 -0
  13. package/esm2020/config/public-api.mjs +2 -0
  14. package/esm2020/config/src/configs.mjs +32 -0
  15. package/esm2020/dateTime/acorex-core-dateTime.mjs +5 -0
  16. package/esm2020/dateTime/public-api.mjs +6 -0
  17. package/esm2020/dateTime/src/datetime.class.mjs +288 -0
  18. package/esm2020/dateTime/src/datetime.module.mjs +39 -0
  19. package/esm2020/dateTime/src/datetime.pipe.mjs +26 -0
  20. package/esm2020/dateTime/src/georgian.calendar.mjs +189 -0
  21. package/esm2020/dateTime/src/jalali.calendar.mjs +359 -0
  22. package/esm2020/events/acorex-core-events.mjs +5 -0
  23. package/esm2020/events/public-api.mjs +2 -0
  24. package/esm2020/events/src/event.service.mjs +36 -0
  25. package/esm2020/file/acorex-core-file.mjs +5 -0
  26. package/esm2020/file/public-api.mjs +5 -0
  27. package/esm2020/file/src/file-download-ref.class.mjs +12 -0
  28. package/esm2020/file/src/file-download-result.class.mjs +47 -0
  29. package/esm2020/file/src/file-upload-ref.class.mjs +12 -0
  30. package/esm2020/file/src/file.service.mjs +101 -0
  31. package/esm2020/http/acorex-core-http.mjs +5 -0
  32. package/esm2020/http/public-api.mjs +6 -0
  33. package/esm2020/http/src/http-error.class.mjs +2 -0
  34. package/esm2020/http/src/http-events.interceptor.mjs +3 -0
  35. package/esm2020/http/src/http-request.class.mjs +2 -0
  36. package/esm2020/http/src/http-result.class.mjs +21 -0
  37. package/esm2020/http/src/http.module.mjs +29 -0
  38. package/esm2020/http/src/http.service.mjs +148 -0
  39. package/esm2020/image/acorex-core-image.mjs +5 -0
  40. package/esm2020/image/public-api.mjs +2 -0
  41. package/esm2020/image/src/image.service.mjs +43 -0
  42. package/esm2020/pipes/acorex-core-pipes.mjs +5 -0
  43. package/esm2020/pipes/public-api.mjs +3 -0
  44. package/esm2020/pipes/src/pipes.module.mjs +19 -0
  45. package/esm2020/pipes/src/safe.pipe.mjs +30 -0
  46. package/esm2020/platform/acorex-core-platform.mjs +5 -0
  47. package/esm2020/platform/public-api.mjs +2 -0
  48. package/esm2020/platform/src/platform.service.mjs +153 -0
  49. package/esm2020/public-api.mjs +5 -0
  50. package/esm2020/translation/acorex-core-translation.mjs +5 -0
  51. package/esm2020/translation/public-api.mjs +4 -0
  52. package/esm2020/translation/src/translation.module.mjs +18 -0
  53. package/esm2020/translation/src/translator.mjs +43 -0
  54. package/esm2020/translation/src/translator.pipe.mjs +15 -0
  55. package/esm2020/utils/acorex-core-utils.mjs +5 -0
  56. package/esm2020/utils/public-api.mjs +5 -0
  57. package/esm2020/utils/src/color-util.mjs +71 -0
  58. package/esm2020/utils/src/drawing-util.mjs +27 -0
  59. package/esm2020/utils/src/object-util.mjs +39 -0
  60. package/esm2020/utils/src/string-util.mjs +19 -0
  61. package/events/index.d.ts +5 -0
  62. package/events/public-api.d.ts +1 -0
  63. package/events/src/event.service.d.ts +9 -0
  64. package/fesm2015/acorex-core-config.mjs +40 -0
  65. package/fesm2015/acorex-core-config.mjs.map +1 -0
  66. package/fesm2015/acorex-core-dateTime.mjs +899 -0
  67. package/fesm2015/acorex-core-dateTime.mjs.map +1 -0
  68. package/fesm2015/acorex-core-events.mjs +44 -0
  69. package/fesm2015/acorex-core-events.mjs.map +1 -0
  70. package/fesm2015/acorex-core-file.mjs +177 -0
  71. package/fesm2015/acorex-core-file.mjs.map +1 -0
  72. package/fesm2015/acorex-core-http.mjs +203 -0
  73. package/fesm2015/acorex-core-http.mjs.map +1 -0
  74. package/fesm2015/acorex-core-image.mjs +54 -0
  75. package/fesm2015/acorex-core-image.mjs.map +1 -0
  76. package/fesm2015/acorex-core-pipes.mjs +54 -0
  77. package/fesm2015/acorex-core-pipes.mjs.map +1 -0
  78. package/fesm2015/acorex-core-platform.mjs +161 -0
  79. package/fesm2015/acorex-core-platform.mjs.map +1 -0
  80. package/fesm2015/acorex-core-translation.mjs +81 -0
  81. package/fesm2015/acorex-core-translation.mjs.map +1 -0
  82. package/fesm2015/acorex-core-utils.mjs +164 -0
  83. package/fesm2015/acorex-core-utils.mjs.map +1 -0
  84. package/fesm2015/acorex-core.mjs +12 -0
  85. package/fesm2015/acorex-core.mjs.map +1 -0
  86. package/fesm2020/acorex-core-config.mjs +40 -0
  87. package/fesm2020/acorex-core-config.mjs.map +1 -0
  88. package/fesm2020/acorex-core-dateTime.mjs +899 -0
  89. package/fesm2020/acorex-core-dateTime.mjs.map +1 -0
  90. package/fesm2020/acorex-core-events.mjs +44 -0
  91. package/fesm2020/acorex-core-events.mjs.map +1 -0
  92. package/fesm2020/acorex-core-file.mjs +177 -0
  93. package/fesm2020/acorex-core-file.mjs.map +1 -0
  94. package/fesm2020/acorex-core-http.mjs +202 -0
  95. package/fesm2020/acorex-core-http.mjs.map +1 -0
  96. package/fesm2020/acorex-core-image.mjs +51 -0
  97. package/fesm2020/acorex-core-image.mjs.map +1 -0
  98. package/fesm2020/acorex-core-pipes.mjs +54 -0
  99. package/fesm2020/acorex-core-pipes.mjs.map +1 -0
  100. package/fesm2020/acorex-core-platform.mjs +161 -0
  101. package/fesm2020/acorex-core-platform.mjs.map +1 -0
  102. package/fesm2020/acorex-core-translation.mjs +80 -0
  103. package/fesm2020/acorex-core-translation.mjs.map +1 -0
  104. package/fesm2020/acorex-core-utils.mjs +164 -0
  105. package/fesm2020/acorex-core-utils.mjs.map +1 -0
  106. package/fesm2020/acorex-core.mjs +12 -0
  107. package/fesm2020/acorex-core.mjs.map +1 -0
  108. package/file/index.d.ts +5 -0
  109. package/file/public-api.d.ts +4 -0
  110. package/file/src/file-download-ref.class.d.ts +6 -0
  111. package/file/src/file-download-result.class.d.ts +8 -0
  112. package/file/src/file-upload-ref.class.d.ts +5 -0
  113. package/file/src/file.service.d.ts +18 -0
  114. package/http/index.d.ts +5 -0
  115. package/http/{public-api.ts → public-api.d.ts} +1 -1
  116. package/http/src/{http-error.class.ts → http-error.class.d.ts} +2 -2
  117. package/http/src/{http-events.interceptor.ts → http-events.interceptor.d.ts} +3 -7
  118. package/http/src/{http-request.class.ts → http-request.class.d.ts} +5 -5
  119. package/http/src/http-result.class.d.ts +11 -0
  120. package/http/src/http.module.d.ts +8 -0
  121. package/http/src/http.service.d.ts +23 -0
  122. package/image/index.d.ts +5 -0
  123. package/image/public-api.d.ts +1 -0
  124. package/image/src/image.service.d.ts +12 -0
  125. package/index.d.ts +5 -0
  126. package/package.json +115 -16
  127. package/pipes/index.d.ts +5 -0
  128. package/pipes/public-api.d.ts +2 -0
  129. package/pipes/src/pipes.module.d.ts +8 -0
  130. package/pipes/src/safe.pipe.d.ts +10 -0
  131. package/platform/index.d.ts +5 -0
  132. package/platform/public-api.d.ts +1 -0
  133. package/platform/src/platform.service.d.ts +26 -0
  134. package/public-api.d.ts +1 -0
  135. package/translation/index.d.ts +5 -0
  136. package/translation/{public-api.ts → public-api.d.ts} +1 -1
  137. package/translation/src/translation.module.d.ts +7 -0
  138. package/translation/src/translator.d.ts +11 -0
  139. package/translation/src/translator.pipe.d.ts +7 -0
  140. package/utils/index.d.ts +5 -0
  141. package/utils/{public-api.ts → public-api.d.ts} +1 -1
  142. package/utils/src/color-util.d.ts +20 -0
  143. package/utils/src/drawing-util.d.ts +17 -0
  144. package/utils/src/object-util.d.ts +4 -0
  145. package/utils/src/string-util.d.ts +6 -0
  146. package/config/ax-preset.js +0 -186
  147. package/config/index.ts +0 -1
  148. package/config/ng-package.json +0 -6
  149. package/config/public-api.ts +0 -1
  150. package/config/src/configs.ts +0 -37
  151. package/dateTime/index.ts +0 -1
  152. package/dateTime/ng-package.json +0 -6
  153. package/dateTime/src/datetime.class.ts +0 -449
  154. package/dateTime/src/datetime.module.ts +0 -35
  155. package/dateTime/src/datetime.pipe.ts +0 -21
  156. package/dateTime/src/georgian.calendar.ts +0 -205
  157. package/dateTime/src/jalali.calendar.ts +0 -416
  158. package/events/index.ts +0 -1
  159. package/events/ng-package.json +0 -6
  160. package/events/public-api.ts +0 -1
  161. package/events/src/event.service.ts +0 -31
  162. package/file/index.ts +0 -1
  163. package/file/ng-package.json +0 -7
  164. package/file/public-api.ts +0 -4
  165. package/file/src/file-download-ref.class.ts +0 -16
  166. package/file/src/file-download-result.class.ts +0 -56
  167. package/file/src/file-upload-ref.class.ts +0 -14
  168. package/file/src/file.service.ts +0 -104
  169. package/http/index.ts +0 -1
  170. package/http/ng-package.json +0 -6
  171. package/http/src/http-result.class.ts +0 -34
  172. package/http/src/http.module.ts +0 -25
  173. package/http/src/http.service.ts +0 -161
  174. package/image/index.ts +0 -1
  175. package/image/ng-package.json +0 -7
  176. package/image/public-api.ts +0 -1
  177. package/image/src/image.service.ts +0 -42
  178. package/index.ts +0 -1
  179. package/karma.conf.js +0 -44
  180. package/ng-package.json +0 -7
  181. package/pipes/index.ts +0 -1
  182. package/pipes/ng-package.json +0 -6
  183. package/pipes/public-api.ts +0 -2
  184. package/pipes/src/pipes.module.ts +0 -11
  185. package/pipes/src/safe.pipe.ts +0 -24
  186. package/platform/index.ts +0 -1
  187. package/platform/ng-package.json +0 -6
  188. package/platform/public-api.ts +0 -1
  189. package/platform/src/platform.service.ts +0 -223
  190. package/public-api.ts +0 -4
  191. package/test.ts +0 -27
  192. package/translation/index.ts +0 -1
  193. package/translation/ng-package.json +0 -6
  194. package/translation/src/translation.module.ts +0 -12
  195. package/translation/src/translator.pipe.ts +0 -9
  196. package/translation/src/translator.ts +0 -49
  197. package/tsconfig.lib.json +0 -15
  198. package/tsconfig.lib.prod.json +0 -10
  199. package/tsconfig.spec.json +0 -17
  200. package/utils/index.ts +0 -1
  201. package/utils/ng-package.json +0 -6
  202. package/utils/src/color-util.ts +0 -83
  203. package/utils/src/drawing-util.ts +0 -43
  204. package/utils/src/object-util.ts +0 -82
  205. package/utils/src/string-util.ts +0 -25
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-core-http.mjs","sources":["../../../../projects/acorex/core/http/src/http-events.interceptor.ts","../../../../projects/acorex/core/http/src/http-result.class.ts","../../../../projects/acorex/core/http/src/http.service.ts","../../../../projects/acorex/core/http/src/http.module.ts","../../../../projects/acorex/core/http/acorex-core-http.ts"],"sourcesContent":["import { IHttpError } from './http-error.class';\r\nimport { InjectionToken } from '@angular/core';\r\nimport { AXHttpRequestOptions } from './http-request.class';\r\n\r\nexport const AX_HTTP_EVENT_INTERCEPTOR = new InjectionToken<AXHttpEventInterceptor>('ax.http.events');\r\n\r\nexport interface AXHttpEventInterceptor {\r\n begin(request: AXHttpRequestOptions): Promise<AXHttpRequestOptions>;\r\n success(request: AXHttpRequestOptions, result: any): Promise<any>;\r\n complete(request: AXHttpRequestOptions);\r\n error(request: AXHttpRequestOptions, error: IHttpError);\r\n}\r\n\r\n\r\n","import { IHttpError } from './http-error.class';\r\n\r\nexport class HttpResult<T> {\r\n private _executor: (result: (e?: T) => void, error: (e?: IHttpError) => void, complete: () => void) => void;\r\n constructor(\r\n executor: (\r\n result: (e?: T) => void,\r\n error: (e?: IHttpError) => void,\r\n complete: () => void\r\n ) => void\r\n ) {\r\n this._executor = executor;\r\n setTimeout(() => {\r\n this._executor(this.resultAction, this.errorAction, this.completeAction);\r\n }, 50);\r\n }\r\n\r\n private resultAction: (e?: T) => void;\r\n private errorAction: (e?: IHttpError) => void;\r\n private completeAction: () => void;\r\n\r\n result(action: (e?: T) => void): HttpResult<T> { \r\n this.resultAction = action;\r\n return this;\r\n }\r\n error(action: (e?: IHttpError) => void): HttpResult<T> {\r\n this.errorAction = action;\r\n return this;\r\n }\r\n complete(action: () => void): HttpResult<T> {\r\n this.completeAction = action;\r\n return this;\r\n }\r\n}","import { Injectable, Injector, InjectFlags } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams, HttpErrorResponse } from '@angular/common/http';\r\nimport { HttpResult } from './http-result.class';\r\nimport { IHttpError } from './http-error.class';\r\nimport { AXHttpRequestOptions } from './http-request.class';\r\nimport {\r\n AX_HTTP_EVENT_INTERCEPTOR, AXHttpEventInterceptor\r\n} from './http-events.interceptor';\r\n// import { catchError, retry, retryWhen, mergeMap, delay, switchMap, scan, takeWhile, flatMap } from 'rxjs/operators';\r\n// import { of, concat, throwError } from 'rxjs';\r\n\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXHttpService {\r\n\r\n private interceptor: AXHttpEventInterceptor;\r\n constructor(private http: HttpClient, private injector: Injector) {\r\n this.interceptor = this.injector.get(AX_HTTP_EVENT_INTERCEPTOR);\r\n }\r\n\r\n\r\n get<T>(url: string, config: AXHttpRequestOptions = {}): HttpResult<T> {\r\n config.url = url;\r\n config.method = \"get\";\r\n return this.request(config);\r\n }\r\n\r\n post<T>(url: string, config: AXHttpRequestOptions = {}): HttpResult<T> {\r\n config.url = url;\r\n config.method = \"post\";\r\n return this.request(config);\r\n }\r\n\r\n delete<T>(url: string, config: AXHttpRequestOptions = {}): HttpResult<T> {\r\n config.url = url;\r\n config.method = \"delete\";\r\n return this.request(config);\r\n }\r\n\r\n put<T>(url: string, config: AXHttpRequestOptions = {}): HttpResult<T> {\r\n config.url = url;\r\n config.method = \"put\";\r\n return this.request(config);\r\n }\r\n\r\n\r\n request<T>(config: AXHttpRequestOptions): HttpResult<T> {\r\n return new HttpResult<T>((result?, error?, complete?) => {\r\n this.handleBegin(config).then(c => {\r\n this.http\r\n //TODO: check ts error\r\n //@ts-ignore\r\n .request<T>(config.method, config.url, this.mapOptions(config))\r\n //.pipe(this.retry)\r\n .subscribe(data => {\r\n this.handleResult(data, result, complete, config);\r\n }, c => {\r\n this.handleError(c, error, complete, config);\r\n });\r\n });\r\n })\r\n }\r\n\r\n\r\n private handleResult(data, result, complete, config: AXHttpRequestOptions) {\r\n if (this.interceptor) {\r\n this.interceptor.success(config, data).then(c => {\r\n if (result)\r\n result(c);\r\n this.handleComplete(complete, config);\r\n });\r\n }\r\n else {\r\n //\r\n if (result)\r\n result(data);\r\n this.handleComplete(complete, config);\r\n }\r\n }\r\n\r\n private handleBegin(config: AXHttpRequestOptions): Promise<AXHttpRequestOptions> {\r\n return new Promise((resolve) => {\r\n if (!config.headers)\r\n config.headers = {};\r\n if (!config.params)\r\n config.params = {};\r\n //\r\n if (this.interceptor) {\r\n this.interceptor.begin(config).then(c => {\r\n resolve(c);\r\n });\r\n }\r\n else {\r\n resolve(config)\r\n }\r\n })\r\n }\r\n\r\n private handleComplete(complete: Function, config: AXHttpRequestOptions) {\r\n if (complete)\r\n complete();\r\n if (this.interceptor)\r\n this.interceptor.complete(config);\r\n }\r\n\r\n private handleError(c: HttpErrorResponse, error: Function, complete: Function, config: AXHttpRequestOptions) {\r\n let r: IHttpError = {\r\n message: c.message,\r\n status: c.status,\r\n code: c.status?.toString(),\r\n handled: false,\r\n error: c.error\r\n }\r\n if (error) {\r\n error(r);\r\n }\r\n if (!r.handled) {\r\n if (this.interceptor)\r\n this.interceptor.error(config, r);\r\n }\r\n this.handleComplete(complete, config);\r\n }\r\n\r\n private mapOptions(options: AXHttpRequestOptions) {\r\n let headers = new HttpHeaders();\r\n\r\n for (const key in options.headers) {\r\n if (options.headers.hasOwnProperty(key)) {\r\n const value = options.headers[key];\r\n headers = headers.set(key, value)\r\n }\r\n }\r\n let params = new HttpParams();\r\n for (const key in options.params) {\r\n if (options.params.hasOwnProperty(key)) {\r\n const value = options.params[key];\r\n params = params.set(key, value);\r\n }\r\n }\r\n return {\r\n headers: headers,\r\n params: params,\r\n body: options.body,\r\n responseType: options.responseType || 'json'\r\n };\r\n // if (options.method == \"get\") {\r\n // return {\r\n // headers: headers,\r\n // params: params\r\n // };\r\n // }\r\n // else {\r\n // return {\r\n // headers: headers,\r\n // params: params,\r\n // body: options.body\r\n // };\r\n // }\r\n }\r\n\r\n}","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { AXHttpService } from './http.service';\r\n\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n HttpClientModule\r\n ],\r\n exports: [HttpClientModule],\r\n providers: [\r\n AXHttpService\r\n ]\r\n})\r\nexport class AXHttpModule {\r\n // static forRoot(): ModuleWithProviders {\r\n // return {\r\n // ngModule: AXHttpModule,\r\n // providers: [AXHttpService]\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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"}
@@ -0,0 +1,51 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Injectable } from '@angular/core';
3
+
4
+ class AXImageService {
5
+ constructor() { }
6
+ async resize(options) {
7
+ options = Object.assign({ type: 'image/png', quality: 1 }, options);
8
+ let image;
9
+ if (options.source instanceof File) {
10
+ var a = new Image();
11
+ a.src = URL.createObjectURL(options.source);
12
+ await new Promise((res) => a.onload = res);
13
+ image = a;
14
+ }
15
+ else {
16
+ image = options.source;
17
+ }
18
+ // Resize the image
19
+ var canvas = document.createElement('canvas'), width = image.width, height = image.height;
20
+ if (width > height) {
21
+ if (width > options.maxSize) {
22
+ height *= options.maxSize / width;
23
+ width = options.maxSize;
24
+ }
25
+ }
26
+ else {
27
+ if (height > options.maxSize) {
28
+ width *= options.maxSize / height;
29
+ height = options.maxSize;
30
+ }
31
+ }
32
+ canvas.width = width;
33
+ canvas.height = height;
34
+ canvas.getContext('2d').drawImage(image, 0, 0, width, height);
35
+ return new Promise((resolve) => canvas.toBlob(resolve, options.type, options.quality));
36
+ }
37
+ }
38
+ AXImageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXImageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
39
+ AXImageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXImageService, providedIn: 'root' });
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXImageService, decorators: [{
41
+ type: Injectable,
42
+ args: [{ providedIn: 'root' }]
43
+ }], ctorParameters: function () { return []; } });
44
+
45
+ /**
46
+ * Generated bundle index. Do not edit.
47
+ */
48
+
49
+ export { AXImageService };
50
+ //# sourceMappingURL=acorex-core-image.mjs.map
51
+ //# sourceMappingURL=acorex-core-image.mjs.map
@@ -0,0 +1 @@
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;IAGjB,MAAM,MAAM,CAAC,OAAiI,EAAA;AAC1I,QAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAEpE,QAAA,IAAI,KAAuB,CAAC;AAC5B,QAAA,IAAI,OAAO,CAAC,MAAM,YAAY,IAAI,EAAE;AAChC,YAAA,IAAI,CAAC,GAAG,IAAI,KAAK,EAAE,CAAA;YACnB,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC5C,YAAA,MAAM,IAAI,OAAO,CAAQ,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;YAClD,KAAK,GAAG,CAAC,CAAC;AACb,SAAA;AACI,aAAA;AACD,YAAA,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;AAC1B,SAAA;;QAGD,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,EACzC,KAAK,GAAG,KAAK,CAAC,KAAK,EACnB,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC1B,IAAI,KAAK,GAAG,MAAM,EAAE;AAChB,YAAA,IAAI,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE;AACzB,gBAAA,MAAM,IAAI,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;AAClC,gBAAA,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;AAC3B,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE;AAC1B,gBAAA,KAAK,IAAI,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;AAClC,gBAAA,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;AAC5B,aAAA;AACJ,SAAA;AACD,QAAA,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,QAAA,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,QAAA,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAC9D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;KAC1F;;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;;;;"}
@@ -0,0 +1,54 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Pipe, NgModule } from '@angular/core';
3
+ import * as i1 from '@angular/platform-browser';
4
+ import { CommonModule } from '@angular/common';
5
+
6
+ class AXSafePipe {
7
+ constructor(sanitizer) {
8
+ this.sanitizer = sanitizer;
9
+ }
10
+ transform(value, type) {
11
+ if (value == null || value == undefined || value == '')
12
+ return '';
13
+ switch (type) {
14
+ case 'html': return this.sanitizer.bypassSecurityTrustHtml(value);
15
+ case 'style': return this.sanitizer.bypassSecurityTrustStyle(value);
16
+ case 'script': return this.sanitizer.bypassSecurityTrustScript(value);
17
+ case 'url': return this.sanitizer.bypassSecurityTrustUrl(value);
18
+ case 'resourceUrl': return this.sanitizer.bypassSecurityTrustResourceUrl(value);
19
+ default: throw new Error(`Invalid safe type specified: ${type}`);
20
+ }
21
+ }
22
+ }
23
+ AXSafePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXSafePipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
24
+ AXSafePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.1.4", ngImport: i0, type: AXSafePipe, name: "safe" });
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXSafePipe, decorators: [{
26
+ type: Pipe,
27
+ args: [{
28
+ name: 'safe',
29
+ pure: true
30
+ }]
31
+ }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; } });
32
+
33
+ class AXPipesModule {
34
+ }
35
+ AXPipesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXPipesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
36
+ AXPipesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.4", ngImport: i0, type: AXPipesModule, declarations: [AXSafePipe], imports: [CommonModule], exports: [AXSafePipe] });
37
+ AXPipesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXPipesModule, imports: [CommonModule] });
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXPipesModule, decorators: [{
39
+ type: NgModule,
40
+ args: [{
41
+ declarations: [AXSafePipe],
42
+ imports: [CommonModule],
43
+ exports: [AXSafePipe],
44
+ providers: [],
45
+ }]
46
+ }] });
47
+
48
+ /**
49
+ * Generated bundle index. Do not edit.
50
+ */
51
+
52
+ export { AXPipesModule, AXSafePipe };
53
+ //# sourceMappingURL=acorex-core-pipes.mjs.map
54
+ //# sourceMappingURL=acorex-core-pipes.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-core-pipes.mjs","sources":["../../../../projects/acorex/core/pipes/src/safe.pipe.ts","../../../../projects/acorex/core/pipes/src/pipes.module.ts","../../../../projects/acorex/core/pipes/acorex-core-pipes.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml, SafeStyle, SafeScript, SafeUrl, SafeResourceUrl } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n\tname: 'safe',\r\n\tpure: true\r\n})\r\nexport class AXSafePipe implements PipeTransform {\r\n\r\n\tconstructor(protected sanitizer: DomSanitizer) { }\r\n\r\n\tpublic transform(value: any, type: string): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\r\n\t\tif (value == null || value == undefined || value == '')\r\n\t\t\treturn '';\r\n\t\tswitch (type) {\r\n\t\t\tcase 'html': return this.sanitizer.bypassSecurityTrustHtml(value);\r\n\t\t\tcase 'style': return this.sanitizer.bypassSecurityTrustStyle(value);\r\n\t\t\tcase 'script': return this.sanitizer.bypassSecurityTrustScript(value);\r\n\t\t\tcase 'url': return this.sanitizer.bypassSecurityTrustUrl(value);\r\n\t\t\tcase 'resourceUrl': return this.sanitizer.bypassSecurityTrustResourceUrl(value);\r\n\t\t\tdefault: throw new Error(`Invalid safe type specified: ${type}`);\r\n\t\t}\r\n\t}\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXSafePipe } from './safe.pipe';\r\n\r\n@NgModule({\r\n declarations: [AXSafePipe],\r\n imports: [CommonModule],\r\n exports: [AXSafePipe],\r\n providers: [],\r\n})\r\nexport class AXPipesModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAOa,UAAU,CAAA;AAEtB,IAAA,WAAA,CAAsB,SAAuB,EAAA;QAAvB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAc;KAAK;IAE3C,SAAS,CAAC,KAAU,EAAE,IAAY,EAAA;QACxC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,EAAE;AACrD,YAAA,OAAO,EAAE,CAAC;AACX,QAAA,QAAQ,IAAI;AACX,YAAA,KAAK,MAAM,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;AAClE,YAAA,KAAK,OAAO,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;AACpE,YAAA,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;AACtE,YAAA,KAAK,KAAK,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;AAChE,YAAA,KAAK,aAAa,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC;YAChF,SAAS,MAAM,IAAI,KAAK,CAAC,CAAgC,6BAAA,EAAA,IAAI,CAAE,CAAA,CAAC,CAAC;AACjE,SAAA;KACD;;uGAfW,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;qGAAV,UAAU,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,CAAA;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBAJtB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACL,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,IAAI,EAAE,IAAI;AACV,iBAAA,CAAA;;;MCIY,aAAa,CAAA;;0GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,EALT,YAAA,EAAA,CAAA,UAAU,CACf,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,UAAU,CAAA,EAAA,CAAA,CAAA;AAGT,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAJd,YAAY,CAAA,EAAA,CAAA,CAAA;2FAIX,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,UAAU,CAAC;oBAC1B,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,UAAU,CAAC;AACrB,oBAAA,SAAS,EAAE,EAAE;AACd,iBAAA,CAAA;;;ACTD;;AAEG;;;;"}
@@ -0,0 +1,161 @@
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
+ document
142
+ .querySelector(':root')
143
+ ?.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
@@ -0,0 +1 @@
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;QACzB,QAAQ;aACL,aAAa,CAAc,OAAO,CAAC;AACpC,cAAE,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;AACnB,iBAAA,CAAA;;;AC/ID;;AAEG;;;;"}
@@ -0,0 +1,80 @@
1
+ import { Subject } from 'rxjs';
2
+ import merge from 'lodash-es/merge';
3
+ import * as _ from 'lodash';
4
+ import * as i0 from '@angular/core';
5
+ import { Pipe, NgModule } from '@angular/core';
6
+
7
+ // @dynamic
8
+ class AXTranslator {
9
+ static get onChange() {
10
+ return AXTranslator.dataChangeSubject.asObservable();
11
+ }
12
+ static load(lang, value) {
13
+ if (typeof value === 'object') {
14
+ if (!AXTranslator[`__data__${lang}`]) {
15
+ AXTranslator[`__data__${lang}`] = {};
16
+ }
17
+ AXTranslator[`__data__${lang}`] = merge(AXTranslator[`__data__${lang}`], value);
18
+ }
19
+ }
20
+ static use(lang) {
21
+ AXTranslator.lang = lang;
22
+ }
23
+ static get(key, arg1, arg2) {
24
+ const lang = arg1 && typeof arg1 == 'string' ? arg1 : AXTranslator.lang;
25
+ const params = arg1 && typeof arg1 == 'object' ? arg1 : arg2;
26
+ let result = _.get(AXTranslator[`__data__${lang}`], key, key);
27
+ const vars = typeof (result) == 'string' ? result?.match(this._varsRegx) : [];
28
+ if (vars?.length) {
29
+ vars.forEach((v) => {
30
+ const varKey = v.match(this._varNameRegx)?.length ? v.match(this._varNameRegx)[0] : null;
31
+ if (varKey) {
32
+ const p = _.get(params, varKey) || this.get(varKey, lang);
33
+ if (p) {
34
+ result = result.replace(v, p);
35
+ }
36
+ }
37
+ });
38
+ }
39
+ return typeof (result) == 'string' ? result : JSON.stringify(result);
40
+ }
41
+ }
42
+ AXTranslator.lang = 'en';
43
+ AXTranslator.dataChangeSubject = new Subject();
44
+ AXTranslator._varsRegx = /((\$\{[a-zA-Z_0-9\.]+\})+)/gm;
45
+ AXTranslator._varNameRegx = /[a-zA-Z_0-9\.]+/gm;
46
+
47
+ class AXTranslatorPipe {
48
+ transform(value, arg1, arg2) {
49
+ return AXTranslator.get(value, arg1, arg2);
50
+ }
51
+ }
52
+ AXTranslatorPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXTranslatorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
53
+ AXTranslatorPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.1.4", ngImport: i0, type: AXTranslatorPipe, name: "trans" });
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXTranslatorPipe, decorators: [{
55
+ type: Pipe,
56
+ args: [{ name: 'trans', pure: true }]
57
+ }] });
58
+
59
+ class AXTranslationModule {
60
+ }
61
+ AXTranslationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXTranslationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
62
+ AXTranslationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.4", ngImport: i0, type: AXTranslationModule, declarations: [AXTranslatorPipe], exports: [AXTranslatorPipe] });
63
+ AXTranslationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXTranslationModule });
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AXTranslationModule, decorators: [{
65
+ type: NgModule,
66
+ args: [{
67
+ imports: [],
68
+ exports: [AXTranslatorPipe],
69
+ declarations: [AXTranslatorPipe],
70
+ providers: [],
71
+ }]
72
+ }] });
73
+
74
+ /**
75
+ * Generated bundle index. Do not edit.
76
+ */
77
+
78
+ export { AXTranslationModule, AXTranslator, AXTranslatorPipe };
79
+ //# sourceMappingURL=acorex-core-translation.mjs.map
80
+ //# sourceMappingURL=acorex-core-translation.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-core-translation.mjs","sources":["../../../../projects/acorex/core/translation/src/translator.ts","../../../../projects/acorex/core/translation/src/translator.pipe.ts","../../../../projects/acorex/core/translation/src/translation.module.ts","../../../../projects/acorex/core/translation/acorex-core-translation.ts"],"sourcesContent":["import { Subject, Observable } from 'rxjs';\r\nimport merge from 'lodash-es/merge';\r\nimport * as _ from 'lodash';\r\n\r\n// @dynamic\r\nexport class AXTranslator {\r\n private static lang: string = 'en';\r\n private static dataChangeSubject = new Subject<any>();\r\n private static _varsRegx = /((\\$\\{[a-zA-Z_0-9\\.]+\\})+)/gm;\r\n private static _varNameRegx = /[a-zA-Z_0-9\\.]+/gm;\r\n\r\n\r\n static get onChange(): Observable<any> {\r\n return AXTranslator.dataChangeSubject.asObservable();\r\n }\r\n\r\n public static load(lang: string, value: any) {\r\n if (typeof value === 'object') {\r\n if (!AXTranslator[`__data__${lang}`]) {\r\n AXTranslator[`__data__${lang}`] = {};\r\n }\r\n AXTranslator[`__data__${lang}`] = merge(AXTranslator[`__data__${lang}`], value);\r\n }\r\n }\r\n\r\n public static use(lang: string) {\r\n AXTranslator.lang = lang;\r\n }\r\n\r\n public static get(key: string, arg1?: object | string, arg2?: object): string {\r\n\r\n const lang = arg1 && typeof arg1 == 'string' ? arg1 : AXTranslator.lang;\r\n const params = arg1 && typeof arg1 == 'object' ? arg1 : arg2;\r\n let result = _.get(AXTranslator[`__data__${lang}`], key, key);\r\n const vars = typeof (result) == 'string' ? result?.match(this._varsRegx) : [];\r\n if (vars?.length) {\r\n vars.forEach((v:any) => {\r\n const varKey = v.match(this._varNameRegx)?.length ? v.match(this._varNameRegx)[0] : null;\r\n if (varKey) {\r\n const p = _.get(params, varKey) || this.get(varKey, lang);\r\n if (p) {\r\n result = result.replace(v, p);\r\n }\r\n }\r\n })\r\n }\r\n return typeof (result) == 'string' ? result : JSON.stringify(result);\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { AXTranslator } from './translator';\r\n\r\n@Pipe({ name: 'trans', pure: true })\r\nexport class AXTranslatorPipe implements PipeTransform {\r\n transform(value: string, arg1?: object | string, arg2?: object): string {\r\n return AXTranslator.get(value, arg1, arg2);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { AXTranslatorPipe } from './translator.pipe';\r\n\r\n@NgModule({\r\n imports: [],\r\n exports: [AXTranslatorPipe],\r\n declarations: [AXTranslatorPipe],\r\n providers: [],\r\n})\r\nexport class AXTranslationModule {\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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"}
@@ -0,0 +1,164 @@
1
+ import tinycolor from 'tinycolor2';
2
+ import tinygradient from 'tinygradient';
3
+
4
+ // @dynamic
5
+ class AXObjectUtil {
6
+ static deepJSONClone(obj) {
7
+ return obj ? JSON.parse(JSON.stringify(obj)) : null;
8
+ }
9
+ static deepCopy(obj) {
10
+ let copy;
11
+ // Handle the 3 simple types, and null or undefined
12
+ if (null == obj || 'object' !== typeof obj) {
13
+ return obj;
14
+ }
15
+ // Handle Date
16
+ if (obj instanceof Date) {
17
+ copy = new Date();
18
+ copy.setTime(obj.getTime());
19
+ return copy;
20
+ }
21
+ // Handle Array
22
+ if (obj instanceof Array) {
23
+ copy = [];
24
+ for (let i = 0, len = obj.length; i < len; i++) {
25
+ copy[i] = AXObjectUtil.deepCopy(obj[i]);
26
+ }
27
+ return copy;
28
+ }
29
+ // Handle Object
30
+ if (obj instanceof Object) {
31
+ copy = {};
32
+ for (const attr in obj) {
33
+ if (obj.hasOwnProperty(attr)) {
34
+ copy[attr] = AXObjectUtil.deepCopy(obj[attr]);
35
+ }
36
+ }
37
+ return copy;
38
+ }
39
+ throw new Error('Unable to copy obj! Its type isn\'t supported.');
40
+ }
41
+ }
42
+
43
+ // @dynamic
44
+ class AXDrawingUtil {
45
+ static collision(a, b) {
46
+ const ac = a.getBoundingClientRect();
47
+ const bc = b.getBoundingClientRect();
48
+ if (ac.left < bc.left + bc.width && ac.left + ac.width > bc.left &&
49
+ ac.top < bc.top + bc.height && ac.top + ac.height > bc.top) {
50
+ return true;
51
+ }
52
+ else {
53
+ return false;
54
+ }
55
+ }
56
+ static isInElementBound(pos, element) {
57
+ const elBound = element.getBoundingClientRect();
58
+ return AXDrawingUtil.isInRecPoint(pos, {
59
+ left: elBound.x,
60
+ width: elBound.width,
61
+ top: elBound.y,
62
+ height: elBound.height
63
+ });
64
+ }
65
+ static isInRecPoint(pos, rec) {
66
+ return pos.x >= rec.left && pos.x <= (rec.left + rec.width) && pos.y >= rec.top && (pos.y <= (rec.top + rec.height));
67
+ }
68
+ }
69
+
70
+ // @dynamic
71
+ class AXStringUtil {
72
+ static getWordBoundsAtPosition(str, position) {
73
+ const isSpace = (c) => /[^a-zA-Z0-9]+/i.test(c);
74
+ let start = position - 1;
75
+ while (start >= 0 && !isSpace(str[start])) {
76
+ start -= 1;
77
+ }
78
+ start = Math.max(0, start + 1);
79
+ const leftSideString = str.slice(start).match(/[a-zA-Z0-9]+/i);
80
+ start += leftSideString.index;
81
+ let end = start + leftSideString[0].length;
82
+ return {
83
+ start,
84
+ end
85
+ };
86
+ }
87
+ }
88
+
89
+ class AXColorUtil {
90
+ static to(color, mode) {
91
+ const _color = tinycolor(color);
92
+ switch (mode) {
93
+ case 'rgba':
94
+ ;
95
+ return _color.toRgb();
96
+ case 'hsla':
97
+ return _color.toHsl();
98
+ case 'hsva':
99
+ return _color.toHsv();
100
+ default:
101
+ return _color.toHex();
102
+ }
103
+ }
104
+ ;
105
+ static toString(color, mode) {
106
+ const _color = tinycolor(color);
107
+ switch (mode) {
108
+ case 'rgba':
109
+ return _color.toRgbString();
110
+ case 'hsla':
111
+ return _color.toHslString();
112
+ case 'hsva':
113
+ return _color.toHsvString();
114
+ default:
115
+ return _color.toHexString();
116
+ }
117
+ }
118
+ ;
119
+ static mix(baseColor, hex, percentage) {
120
+ return tinycolor.mix(baseColor, hex, percentage).toString('rgb');
121
+ }
122
+ static multiply(color1, color2) {
123
+ let rgb1 = tinycolor(color1).toRgb();
124
+ let rgb2 = tinycolor(color2).toRgb();
125
+ rgb1.b = Math.floor(rgb1.b * rgb2.b / 255);
126
+ rgb1.g = Math.floor(rgb1.g * rgb2.g / 255);
127
+ rgb1.r = Math.floor(rgb1.r * rgb2.r / 255);
128
+ return tinycolor('rgb ' + rgb1.r + ' ' + rgb1.g + ' ' + rgb1.b).toString('rgb');
129
+ }
130
+ static toHexSting(color) {
131
+ const _color = tinycolor(color);
132
+ return _color.toHexString();
133
+ }
134
+ ;
135
+ static toRGBString(color) {
136
+ const _color = tinycolor(color);
137
+ return _color.toRgbString();
138
+ }
139
+ ;
140
+ static contrastToWhite(color) {
141
+ return tinycolor.readability("#fff", color);
142
+ }
143
+ ;
144
+ static lighten(hex, percentage) {
145
+ return tinycolor(hex).lighten(percentage);
146
+ }
147
+ static darken(hex, percentage) {
148
+ return tinycolor(hex).darken(percentage);
149
+ }
150
+ static equal(color1, color2) {
151
+ return tinycolor.equals(color1, color2);
152
+ }
153
+ static gradient(values) {
154
+ return tinygradient([...values]);
155
+ }
156
+ }
157
+
158
+ /**
159
+ * Generated bundle index. Do not edit.
160
+ */
161
+
162
+ export { AXColorUtil, AXDrawingUtil, AXObjectUtil, AXStringUtil };
163
+ //# sourceMappingURL=acorex-core-utils.mjs.map
164
+ //# sourceMappingURL=acorex-core-utils.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-core-utils.mjs","sources":["../../../../projects/acorex/core/utils/src/object-util.ts","../../../../projects/acorex/core/utils/src/drawing-util.ts","../../../../projects/acorex/core/utils/src/string-util.ts","../../../../projects/acorex/core/utils/src/color-util.ts","../../../../projects/acorex/core/utils/acorex-core-utils.ts"],"sourcesContent":["// @dynamic\r\nexport class AXObjectUtil {\r\n static deepJSONClone(obj: any): any {\r\n return obj ? JSON.parse(JSON.stringify(obj)) : null;\r\n }\r\n\r\n static deepCopy(obj) {\r\n let copy;\r\n // Handle the 3 simple types, and null or undefined\r\n if (null == obj || 'object' !== typeof obj) { return obj; }\r\n // Handle Date\r\n if (obj instanceof Date) {\r\n copy = new Date();\r\n copy.setTime(obj.getTime());\r\n return copy;\r\n }\r\n // Handle Array\r\n if (obj instanceof Array) {\r\n copy = [];\r\n for (let i = 0, len = obj.length; i < len; i++) {\r\n copy[i] = AXObjectUtil.deepCopy(obj[i]);\r\n }\r\n return copy;\r\n }\r\n // Handle Object\r\n if (obj instanceof Object) {\r\n copy = {};\r\n for (const attr in obj) {\r\n if (obj.hasOwnProperty(attr)) { copy[attr] = AXObjectUtil.deepCopy(obj[attr]); }\r\n }\r\n return copy;\r\n }\r\n throw new Error('Unable to copy obj! Its type isn\\'t supported.');\r\n }\r\n\r\n // static fetchProp(obj, prop: string) {\r\n // if (typeof obj === 'undefined') {\r\n // return false;\r\n // }\r\n // const index = prop.indexOf('.');\r\n\r\n // if (index > -1) {\r\n // return AXObjectUtil.fetchProp(obj[prop.substring(0, index)], prop.substr(index + 1));\r\n // }\r\n\r\n // return obj[prop];\r\n // }\r\n\r\n // static getPropByPath(obj, path, defaultVal?) {\r\n // path = path\r\n // .replace(/\\[/g, '.')\r\n // .replace(/]/g, '')\r\n // .split('.');\r\n\r\n // path.forEach((level) => {\r\n // if (obj) {\r\n // obj = obj[level];\r\n // }\r\n // });\r\n\r\n // if (obj === undefined) {\r\n // return defaultVal;\r\n // }\r\n // return obj;\r\n // }\r\n\r\n // static setPropByPath(obj, path, value) {\r\n // if (Object(obj) !== obj) { return obj; } // When obj is not an object\r\n // // If not yet an array, get the keys from the string-path\r\n // if (!Array.isArray(path)) { path = path.toString().match(/[^.[\\]]+/g) || []; }\r\n // path.slice(0, -1).reduce((a, c, i) => // Iterate all of them except the last one\r\n // Object(a[c]) === a[c] // Does the key exist and is its value an object?\r\n // // Yes: then follow that path\r\n // ? a[c]\r\n // // No: create the key. Is the next key a potential array-index?\r\n // : a[c] = Math.abs(path[i + 1]) >> 0 === +path[i + 1]\r\n // ? [] // Yes: assign a new array object\r\n // : {}, // No: assign a new plain object\r\n // obj)[path[path.length - 1]] = value; // Finally assign the value to the last key\r\n // return obj; // Return the top-level object to allow chaining\r\n // }\r\n}","export interface AXPoint {\r\n x: number;\r\n y: number;\r\n}\r\n\r\nexport interface AXBoundingClientRect {\r\n left?: number;\r\n top?: number;\r\n width?: number;\r\n height?: number;\r\n bottom?: number;\r\n right?: number;\r\n}\r\n// @dynamic\r\nexport class AXDrawingUtil {\r\n static collision(a: HTMLElement, b: HTMLElement): boolean {\r\n const ac = a.getBoundingClientRect();\r\n const bc = b.getBoundingClientRect();\r\n\r\n if (ac.left < bc.left + bc.width && ac.left + ac.width > bc.left &&\r\n ac.top < bc.top + bc.height && ac.top + ac.height > bc.top) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n\r\n static isInElementBound(pos: AXPoint, element: HTMLElement): boolean {\r\n const elBound = element.getBoundingClientRect();\r\n return AXDrawingUtil.isInRecPoint(pos, {\r\n left: elBound.x,\r\n width: elBound.width,\r\n top: elBound.y,\r\n height: elBound.height\r\n });\r\n }\r\n\r\n static isInRecPoint(pos: AXPoint, rec: AXBoundingClientRect | any): boolean {\r\n return pos.x >= rec.left && pos.x <= (rec.left + rec.width) && pos.y >= rec.top && (pos.y <= (rec.top + rec.height));\r\n }\r\n\r\n}","// @dynamic\r\nexport class AXStringUtil {\r\n\r\n static getWordBoundsAtPosition(str: string, position: number): { start: number, end: number } {\r\n const isSpace = (c) => /[^a-zA-Z0-9]+/i.test(c);\r\n let start = position - 1;\r\n\r\n while (start >= 0 && !isSpace(str[start])) {\r\n start -= 1;\r\n }\r\n start = Math.max(0, start + 1);\r\n const leftSideString:any = str.slice(start).match(/[a-zA-Z0-9]+/i);\r\n start += leftSideString.index;\r\n let end = start + leftSideString[0].length;\r\n return {\r\n start,\r\n end\r\n };\r\n }\r\n\r\n\r\n\r\n\r\n\r\n}","export type AXColorMode = 'rgba' | 'hex' | 'hsla' | 'hsva';\r\n\r\nimport tinycolor, { ColorInput } from 'tinycolor2';\r\nimport tinygradient from 'tinygradient'\r\n\r\nexport type AXColorFormat = ColorInput;\r\n\r\nexport class AXColorUtil {\r\n\r\n\r\n static to(color: AXColorFormat, mode: AXColorMode): AXColorFormat {\r\n const _color = tinycolor(color)\r\n switch (mode) {\r\n case 'rgba': ;\r\n return _color.toRgb();\r\n case 'hsla':\r\n return _color.toHsl();\r\n case 'hsva':\r\n return _color.toHsv();\r\n default:\r\n return _color.toHex();\r\n }\r\n };\r\n\r\n static toString(color: AXColorFormat, mode: AXColorMode): string {\r\n const _color = tinycolor(color)\r\n switch (mode) {\r\n case 'rgba':\r\n return _color.toRgbString();\r\n case 'hsla':\r\n return _color.toHslString();\r\n case 'hsva':\r\n return _color.toHsvString();\r\n default:\r\n return _color.toHexString();\r\n }\r\n };\r\n\r\n static mix(baseColor: AXColorFormat, hex: AXColorFormat, percentage: number): string {\r\n return tinycolor.mix(baseColor, hex, percentage).toString('rgb');\r\n }\r\n\r\n static multiply(color1: AXColorFormat, color2: AXColorFormat): string {\r\n let rgb1 = tinycolor(color1).toRgb();\r\n let rgb2 = tinycolor(color2).toRgb();\r\n rgb1.b = Math.floor(rgb1.b * rgb2.b / 255);\r\n rgb1.g = Math.floor(rgb1.g * rgb2.g / 255);\r\n rgb1.r = Math.floor(rgb1.r * rgb2.r / 255);\r\n return tinycolor('rgb ' + rgb1.r + ' ' + rgb1.g + ' ' + rgb1.b).toString('rgb');\r\n }\r\n static toHexSting(color: string): string {\r\n const _color = tinycolor(color)\r\n return _color.toHexString()\r\n };\r\n\r\n static toRGBString(color: AXColorFormat): string {\r\n const _color = tinycolor(color)\r\n return _color.toRgbString()\r\n };\r\n\r\n static contrastToWhite(color: AXColorFormat): number {\r\n return tinycolor.readability(\"#fff\", color);\r\n };\r\n\r\n\r\n static lighten(hex: AXColorFormat, percentage?: number) {\r\n return tinycolor(hex).lighten(percentage)\r\n }\r\n\r\n static darken(hex: AXColorFormat, percentage?: number) {\r\n return tinycolor(hex).darken(percentage)\r\n }\r\n\r\n static equal(color1: AXColorFormat, color2: AXColorFormat): boolean {\r\n return tinycolor.equals(color1, color2);\r\n }\r\n\r\n\r\n static gradient(values: any[] | { color: any, pos: number }[]): tinygradient.Instance {\r\n return tinygradient([...values])\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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"}