@acorex/core 16.0.2 → 17.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (311) hide show
  1. package/common/README.md +3 -0
  2. package/common/countries/countries.data.d.ts +2 -0
  3. package/common/countries/country.d.ts +13 -0
  4. package/common/index.d.ts +2 -0
  5. package/config/README.md +3 -0
  6. package/config/index.d.ts +2 -0
  7. package/config/lib/configs.d.ts +6 -0
  8. package/config/lib/configs.service.d.ts +12 -0
  9. package/date-time/README.md +3 -0
  10. package/date-time/index.d.ts +10 -0
  11. package/date-time/lib/calendar.service.d.ts +27 -0
  12. package/date-time/lib/dateTime.config.d.ts +12 -0
  13. package/date-time/lib/datetime.class.d.ts +138 -0
  14. package/date-time/lib/datetime.module.d.ts +8 -0
  15. package/date-time/lib/datetime.pipe.d.ts +12 -0
  16. package/date-time/lib/formatters/datetime-formatter.d.ts +19 -0
  17. package/date-time/lib/formatters/timeleft-formatter.d.ts +16 -0
  18. package/date-time/lib/georgian.calendar.d.ts +21 -0
  19. package/date-time/lib/holidays.loader.d.ts +21 -0
  20. package/date-time/lib/jalali.calendar.d.ts +40 -0
  21. package/esm2022/common/acorex-core-common.mjs +5 -0
  22. package/esm2022/common/countries/countries.data.mjs +2625 -0
  23. package/esm2022/common/countries/country.mjs +2 -0
  24. package/esm2022/common/index.mjs +3 -0
  25. package/esm2022/config/acorex-core-config.mjs +5 -0
  26. package/esm2022/config/index.mjs +3 -0
  27. package/esm2022/config/lib/configs.mjs +7 -0
  28. package/esm2022/config/lib/configs.service.mjs +27 -0
  29. package/esm2022/date-time/acorex-core-date-time.mjs +5 -0
  30. package/esm2022/date-time/index.mjs +11 -0
  31. package/esm2022/date-time/lib/calendar.service.mjs +100 -0
  32. package/esm2022/date-time/lib/dateTime.config.mjs +50 -0
  33. package/esm2022/date-time/lib/datetime.class.mjs +337 -0
  34. package/esm2022/date-time/lib/datetime.module.mjs +27 -0
  35. package/esm2022/date-time/lib/datetime.pipe.mjs +29 -0
  36. package/esm2022/date-time/lib/formatters/datetime-formatter.mjs +32 -0
  37. package/esm2022/date-time/lib/formatters/timeleft-formatter.mjs +91 -0
  38. package/esm2022/date-time/lib/georgian.calendar.mjs +203 -0
  39. package/esm2022/date-time/lib/holidays.loader.mjs +13 -0
  40. package/esm2022/date-time/lib/jalali.calendar.mjs +440 -0
  41. package/esm2022/events/acorex-core-events.mjs +5 -0
  42. package/esm2022/events/index.mjs +3 -0
  43. package/esm2022/events/lib/event.service.mjs +43 -0
  44. package/esm2022/events/lib/event.type.mjs +6 -0
  45. package/esm2022/file/acorex-core-file.mjs +5 -0
  46. package/esm2022/file/index.mjs +7 -0
  47. package/esm2022/file/lib/file-download-ref.class.mjs +12 -0
  48. package/esm2022/file/lib/file-download-result.class.mjs +45 -0
  49. package/esm2022/file/lib/file-size-formatter.mjs +24 -0
  50. package/esm2022/file/lib/file-upload-ref.class.mjs +12 -0
  51. package/esm2022/file/lib/file.module.mjs +20 -0
  52. package/esm2022/file/lib/file.service.mjs +103 -0
  53. package/esm2022/format/acorex-core-format.mjs +5 -0
  54. package/esm2022/format/index.mjs +8 -0
  55. package/esm2022/format/lib/format.config.mjs +3 -0
  56. package/esm2022/format/lib/format.module.mjs +64 -0
  57. package/esm2022/format/lib/format.pipe.mjs +37 -0
  58. package/esm2022/format/lib/format.service.mjs +95 -0
  59. package/esm2022/format/lib/format.types.mjs +2 -0
  60. package/esm2022/format/lib/formatters/number-formatter.mjs +74 -0
  61. package/esm2022/format/lib/formatters/string-formatter.mjs +15 -0
  62. package/esm2022/image/acorex-core-image.mjs +5 -0
  63. package/esm2022/image/index.mjs +2 -0
  64. package/esm2022/image/lib/image.service.mjs +43 -0
  65. package/esm2022/index.mjs +2 -44
  66. package/esm2022/memorize/acorex-core-memorize.mjs +5 -0
  67. package/esm2022/memorize/index.mjs +2 -0
  68. package/esm2022/memorize/lib/memorize.decorator.mjs +19 -0
  69. package/esm2022/pipes/acorex-core-pipes.mjs +5 -0
  70. package/esm2022/pipes/index.mjs +2 -0
  71. package/esm2022/pipes/lib/safe/safe.pipe.mjs +38 -0
  72. package/esm2022/platform/acorex-core-platform.mjs +5 -0
  73. package/esm2022/platform/index.mjs +2 -0
  74. package/esm2022/platform/lib/platform.service.mjs +225 -0
  75. package/esm2022/storage/acorex-core-storage.mjs +5 -0
  76. package/esm2022/storage/cookie-storage.service.mjs +202 -0
  77. package/esm2022/storage/index.mjs +5 -0
  78. package/esm2022/storage/local-storage.service.mjs +58 -0
  79. package/esm2022/storage/session-storage.service.mjs +22 -0
  80. package/esm2022/storage/storage.interface.mjs +2 -0
  81. package/esm2022/translation/acorex-core-translation.mjs +5 -0
  82. package/esm2022/translation/index.mjs +9 -0
  83. package/esm2022/translation/lib/translation-scope.resolver.mjs +11 -0
  84. package/esm2022/translation/lib/translation.config.mjs +20 -0
  85. package/esm2022/translation/lib/translation.loader.mjs +14 -0
  86. package/esm2022/translation/lib/translation.module.mjs +40 -0
  87. package/esm2022/translation/lib/translation.service.mjs +173 -0
  88. package/esm2022/translation/lib/translation.types.mjs +2 -0
  89. package/esm2022/translation/lib/translator.directive.mjs +28 -0
  90. package/esm2022/translation/lib/translator.pipe.mjs +23 -0
  91. package/esm2022/types/acorex-core-types.mjs +5 -0
  92. package/esm2022/types/index.mjs +2 -0
  93. package/esm2022/utils/acorex-core-utils.mjs +5 -0
  94. package/esm2022/utils/index.mjs +6 -0
  95. package/esm2022/utils/lib/auto-unsubscribe.mjs +36 -0
  96. package/esm2022/utils/lib/color-util.mjs +111 -0
  97. package/esm2022/utils/lib/drawing-util.mjs +35 -0
  98. package/esm2022/utils/lib/html-util.mjs +39 -0
  99. package/esm2022/utils/lib/string-util.mjs +19 -0
  100. package/esm2022/validation/acorex-core-validation.mjs +5 -0
  101. package/esm2022/validation/index.mjs +18 -0
  102. package/esm2022/validation/lib/rules/between-rule.mjs +31 -0
  103. package/esm2022/validation/lib/rules/callback-rule.mjs +29 -0
  104. package/esm2022/validation/lib/rules/equal-rule.mjs +26 -0
  105. package/esm2022/validation/lib/rules/greater-than.mjs +29 -0
  106. package/esm2022/validation/lib/rules/length-rule.mjs +26 -0
  107. package/esm2022/validation/lib/rules/less-than-rule.mjs +29 -0
  108. package/esm2022/validation/lib/rules/maxlength-rule.mjs +27 -0
  109. package/esm2022/validation/lib/rules/minlength-rule.mjs +26 -0
  110. package/esm2022/validation/lib/rules/regex-rule.mjs +49 -0
  111. package/esm2022/validation/lib/rules/required-rule.mjs +36 -0
  112. package/esm2022/validation/lib/validation.config.mjs +33 -0
  113. package/esm2022/validation/lib/validation.module.mjs +84 -0
  114. package/esm2022/validation/lib/validation.service.mjs +98 -0
  115. package/esm2022/validation/lib/validation.types.mjs +3 -0
  116. package/events/README.md +3 -0
  117. package/events/index.d.ts +2 -0
  118. package/{lib/services → events/lib}/event.service.d.ts +8 -0
  119. package/events/lib/event.type.d.ts +5 -0
  120. package/fesm2022/acorex-core-common.mjs +2631 -0
  121. package/fesm2022/acorex-core-common.mjs.map +1 -0
  122. package/fesm2022/acorex-core-config.mjs +39 -0
  123. package/fesm2022/acorex-core-config.mjs.map +1 -0
  124. package/fesm2022/acorex-core-date-time.mjs +1305 -0
  125. package/fesm2022/acorex-core-date-time.mjs.map +1 -0
  126. package/fesm2022/acorex-core-events.mjs +56 -0
  127. package/fesm2022/acorex-core-events.mjs.map +1 -0
  128. package/fesm2022/acorex-core-file.mjs +214 -0
  129. package/fesm2022/acorex-core-file.mjs.map +1 -0
  130. package/fesm2022/acorex-core-format.mjs +282 -0
  131. package/fesm2022/acorex-core-format.mjs.map +1 -0
  132. package/fesm2022/acorex-core-image.mjs +50 -0
  133. package/fesm2022/acorex-core-image.mjs.map +1 -0
  134. package/fesm2022/acorex-core-memorize.mjs +26 -0
  135. package/fesm2022/acorex-core-memorize.mjs.map +1 -0
  136. package/fesm2022/acorex-core-pipes.mjs +44 -0
  137. package/fesm2022/acorex-core-pipes.mjs.map +1 -0
  138. package/fesm2022/acorex-core-platform.mjs +232 -0
  139. package/fesm2022/acorex-core-platform.mjs.map +1 -0
  140. package/fesm2022/acorex-core-storage.mjs +285 -0
  141. package/fesm2022/acorex-core-storage.mjs.map +1 -0
  142. package/fesm2022/acorex-core-translation.mjs +293 -0
  143. package/fesm2022/acorex-core-translation.mjs.map +1 -0
  144. package/fesm2022/acorex-core-types.mjs +6 -0
  145. package/fesm2022/acorex-core-types.mjs.map +1 -0
  146. package/fesm2022/acorex-core-utils.mjs +247 -0
  147. package/fesm2022/acorex-core-utils.mjs.map +1 -0
  148. package/fesm2022/acorex-core-validation.mjs +488 -0
  149. package/fesm2022/acorex-core-validation.mjs.map +1 -0
  150. package/fesm2022/acorex-core.mjs +2 -2309
  151. package/fesm2022/acorex-core.mjs.map +1 -1
  152. package/file/README.md +3 -0
  153. package/file/index.d.ts +6 -0
  154. package/file/lib/file-download-ref.class.d.ts +6 -0
  155. package/file/lib/file-download-result.class.d.ts +8 -0
  156. package/file/lib/file-size-formatter.d.ts +16 -0
  157. package/file/lib/file-upload-ref.class.d.ts +5 -0
  158. package/file/lib/file.module.d.ts +7 -0
  159. package/file/lib/file.service.d.ts +18 -0
  160. package/format/README.md +3 -0
  161. package/format/index.d.ts +7 -0
  162. package/format/lib/format.config.d.ts +5 -0
  163. package/format/lib/format.module.d.ts +18 -0
  164. package/format/lib/format.pipe.d.ts +12 -0
  165. package/format/lib/format.service.d.ts +43 -0
  166. package/format/lib/format.types.d.ts +4 -0
  167. package/format/lib/formatters/number-formatter.d.ts +23 -0
  168. package/format/lib/formatters/string-formatter.d.ts +14 -0
  169. package/image/README.md +3 -0
  170. package/image/index.d.ts +1 -0
  171. package/image/lib/image.service.d.ts +11 -0
  172. package/index.d.ts +1 -43
  173. package/memorize/README.md +3 -0
  174. package/memorize/index.d.ts +1 -0
  175. package/memorize/lib/memorize.decorator.d.ts +1 -0
  176. package/package.json +98 -5
  177. package/pipes/README.md +3 -0
  178. package/pipes/index.d.ts +1 -0
  179. package/pipes/lib/safe/safe.pipe.d.ts +10 -0
  180. package/platform/README.md +3 -0
  181. package/platform/index.d.ts +1 -0
  182. package/{lib/platform → platform/lib}/platform.service.d.ts +14 -6
  183. package/storage/README.md +3 -0
  184. package/storage/cookie-storage.service.d.ts +104 -0
  185. package/storage/index.d.ts +4 -0
  186. package/storage/local-storage.service.d.ts +16 -0
  187. package/storage/session-storage.service.d.ts +10 -0
  188. package/storage/storage.interface.d.ts +14 -0
  189. package/translation/README.md +3 -0
  190. package/translation/index.d.ts +8 -0
  191. package/translation/lib/translation-scope.resolver.d.ts +2 -0
  192. package/translation/lib/translation.config.d.ts +14 -0
  193. package/translation/lib/translation.loader.d.ts +14 -0
  194. package/translation/lib/translation.module.d.ts +8 -0
  195. package/translation/lib/translation.service.d.ts +31 -0
  196. package/translation/lib/translation.types.d.ts +10 -0
  197. package/translation/lib/translator.directive.d.ts +12 -0
  198. package/translation/lib/translator.pipe.d.ts +12 -0
  199. package/types/README.md +3 -0
  200. package/types/index.d.ts +2 -0
  201. package/utils/README.md +3 -0
  202. package/utils/index.d.ts +5 -0
  203. package/utils/lib/auto-unsubscribe.d.ts +12 -0
  204. package/utils/lib/color-util.d.ts +24 -0
  205. package/utils/lib/drawing-util.d.ts +18 -0
  206. package/utils/lib/html-util.d.ts +5 -0
  207. package/utils/lib/string-util.d.ts +6 -0
  208. package/validation/README.md +3 -0
  209. package/validation/index.d.ts +14 -0
  210. package/validation/lib/rules/between-rule.d.ts +18 -0
  211. package/validation/lib/rules/callback-rule.d.ts +23 -0
  212. package/validation/lib/rules/equal-rule.d.ts +17 -0
  213. package/validation/lib/rules/greater-than.d.ts +17 -0
  214. package/validation/lib/rules/length-rule.d.ts +17 -0
  215. package/validation/lib/rules/less-than-rule.d.ts +17 -0
  216. package/validation/lib/rules/maxlength-rule.d.ts +16 -0
  217. package/validation/lib/rules/minlength-rule.d.ts +16 -0
  218. package/validation/lib/rules/regex-rule.d.ts +17 -0
  219. package/validation/lib/rules/required-rule.d.ts +16 -0
  220. package/validation/lib/validation.config.d.ts +15 -0
  221. package/validation/lib/validation.module.d.ts +17 -0
  222. package/validation/lib/validation.service.d.ts +35 -0
  223. package/validation/lib/validation.types.d.ts +21 -0
  224. package/esm2022/lib/classes/base-page.class.mjs +0 -26
  225. package/esm2022/lib/classes/color.class.mjs +0 -49
  226. package/esm2022/lib/classes/datetime.class.mjs +0 -323
  227. package/esm2022/lib/classes/menu.class.mjs +0 -35
  228. package/esm2022/lib/classes/navigator.class.mjs +0 -2
  229. package/esm2022/lib/classes/popup.class.mjs +0 -2
  230. package/esm2022/lib/classes/promise.class.mjs +0 -21
  231. package/esm2022/lib/classes/sectionlist.class.mjs +0 -2
  232. package/esm2022/lib/classes/select.class.mjs +0 -8
  233. package/esm2022/lib/core.module.mjs +0 -27
  234. package/esm2022/lib/error/error.class.mjs +0 -2
  235. package/esm2022/lib/error/error.module.mjs +0 -19
  236. package/esm2022/lib/error/error.service.mjs +0 -22
  237. package/esm2022/lib/events/keyboard.mjs +0 -2
  238. package/esm2022/lib/http/http-error.class.mjs +0 -2
  239. package/esm2022/lib/http/http-events.interceptor.mjs +0 -3
  240. package/esm2022/lib/http/http-request.class.mjs +0 -2
  241. package/esm2022/lib/http/http-result.class.mjs +0 -25
  242. package/esm2022/lib/http/http.module.mjs +0 -35
  243. package/esm2022/lib/http/http.service.mjs +0 -148
  244. package/esm2022/lib/locale/en.json +0 -255
  245. package/esm2022/lib/locale/fa.json +0 -245
  246. package/esm2022/lib/pipe/datetime.pipe.mjs +0 -25
  247. package/esm2022/lib/pipe/htmlToText.pipe.mjs +0 -25
  248. package/esm2022/lib/platform/index.mjs +0 -2
  249. package/esm2022/lib/platform/platform.service.mjs +0 -152
  250. package/esm2022/lib/services/config.mjs +0 -29
  251. package/esm2022/lib/services/event.service.mjs +0 -34
  252. package/esm2022/lib/services/navigator.service.mjs +0 -10
  253. package/esm2022/lib/services/storage.service.mjs +0 -16
  254. package/esm2022/lib/translator/translator.mjs +0 -26
  255. package/esm2022/lib/translator/translator.module.mjs +0 -25
  256. package/esm2022/lib/translator/translator.pipe.mjs +0 -24
  257. package/esm2022/lib/translator/translator.service.mjs +0 -21
  258. package/esm2022/lib/utils/array/array-util.mjs +0 -133
  259. package/esm2022/lib/utils/html/html-util.mjs +0 -200
  260. package/esm2022/lib/utils/html/html.module.mjs +0 -19
  261. package/esm2022/lib/utils/math/math-util.mjs +0 -6
  262. package/esm2022/lib/utils/object/object-util.mjs +0 -83
  263. package/esm2022/lib/utils/render/on-demand-preload-strategy.service.mjs +0 -21
  264. package/esm2022/lib/utils/render/render.service.mjs +0 -109
  265. package/esm2022/lib/utils/render/rendering.module.mjs +0 -35
  266. package/esm2022/lib/utils/scroll/scroll.directive.mjs +0 -56
  267. package/esm2022/lib/utils/scroll/scroll.module.mjs +0 -19
  268. package/esm2022/lib/utils/separator/separator.module.mjs +0 -19
  269. package/esm2022/lib/utils/separator/separator.pipe.mjs +0 -33
  270. package/lib/classes/base-page.class.d.ts +0 -13
  271. package/lib/classes/color.class.d.ts +0 -17
  272. package/lib/classes/datetime.class.d.ts +0 -63
  273. package/lib/classes/menu.class.d.ts +0 -34
  274. package/lib/classes/navigator.class.d.ts +0 -5
  275. package/lib/classes/popup.class.d.ts +0 -12
  276. package/lib/classes/promise.class.d.ts +0 -7
  277. package/lib/classes/sectionlist.class.d.ts +0 -8
  278. package/lib/classes/select.class.d.ts +0 -7
  279. package/lib/core.module.d.ts +0 -9
  280. package/lib/error/error.class.d.ts +0 -4
  281. package/lib/error/error.module.d.ts +0 -7
  282. package/lib/error/error.service.d.ts +0 -13
  283. package/lib/events/keyboard.d.ts +0 -2
  284. package/lib/http/http-error.class.d.ts +0 -7
  285. package/lib/http/http-events.interceptor.d.ts +0 -10
  286. package/lib/http/http-request.class.d.ts +0 -14
  287. package/lib/http/http-result.class.d.ts +0 -11
  288. package/lib/http/http.module.d.ts +0 -10
  289. package/lib/http/http.service.d.ts +0 -23
  290. package/lib/pipe/datetime.pipe.d.ts +0 -8
  291. package/lib/pipe/htmlToText.pipe.d.ts +0 -7
  292. package/lib/platform/index.d.ts +0 -1
  293. package/lib/services/config.d.ts +0 -9
  294. package/lib/services/navigator.service.d.ts +0 -8
  295. package/lib/services/storage.service.d.ts +0 -7
  296. package/lib/translator/translator.d.ts +0 -9
  297. package/lib/translator/translator.module.d.ts +0 -8
  298. package/lib/translator/translator.pipe.d.ts +0 -8
  299. package/lib/translator/translator.service.d.ts +0 -8
  300. package/lib/utils/array/array-util.d.ts +0 -6
  301. package/lib/utils/html/html-util.d.ts +0 -62
  302. package/lib/utils/html/html.module.d.ts +0 -8
  303. package/lib/utils/math/math-util.d.ts +0 -3
  304. package/lib/utils/object/object-util.d.ts +0 -7
  305. package/lib/utils/render/on-demand-preload-strategy.service.d.ts +0 -10
  306. package/lib/utils/render/render.service.d.ts +0 -18
  307. package/lib/utils/render/rendering.module.d.ts +0 -8
  308. package/lib/utils/scroll/scroll.directive.d.ts +0 -18
  309. package/lib/utils/scroll/scroll.module.d.ts +0 -8
  310. package/lib/utils/separator/separator.module.d.ts +0 -8
  311. package/lib/utils/separator/separator.pipe.d.ts +0 -8
@@ -0,0 +1,293 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, inject, Injectable, Pipe, Directive, APP_INITIALIZER, NgModule } from '@angular/core';
3
+ import { of, BehaviorSubject, forkJoin, tap, catchError, finalize, shareReplay, map, switchMap, startWith, firstValueFrom, take } from 'rxjs';
4
+ import { set, get } from 'lodash-es';
5
+ import { AXEventService, AXEventTypes } from '@acorex/core/events';
6
+
7
+ const AX_TRANSLATION_CONFIG = new InjectionToken('AX_TRANSLATION_CONFIG', {
8
+ providedIn: 'root',
9
+ factory: () => {
10
+ return AXTranslationDefaultConfig;
11
+ },
12
+ });
13
+ const AXTranslationDefaultConfig = {
14
+ defaultLang: 'en',
15
+ defaultScope: 'common',
16
+ scopeResolverKey: 'scope',
17
+ };
18
+ function translationConfig(config = {}) {
19
+ const result = {
20
+ ...AXTranslationDefaultConfig,
21
+ ...config,
22
+ };
23
+ return result;
24
+ }
25
+
26
+ class AXTranslationLoaderDefault {
27
+ getTranslation(options) {
28
+ return of({});
29
+ }
30
+ }
31
+ const AX_TRANSLATION_LOADER = new InjectionToken('AX_TRANSLATION_LOADER', {
32
+ providedIn: 'root',
33
+ factory: () => {
34
+ return new AXTranslationLoaderDefault();
35
+ },
36
+ });
37
+
38
+ let service;
39
+ function translateSync(key, options) {
40
+ return service.translateSync(key, options);
41
+ }
42
+ class AXTranslationService {
43
+ /**
44
+ * @ignore
45
+ */
46
+ constructor() {
47
+ this.loader = inject(AX_TRANSLATION_LOADER);
48
+ this.config = inject(AX_TRANSLATION_CONFIG);
49
+ this.eventService = inject(AXEventService);
50
+ this.translationCache = {};
51
+ this.ongoingRequests = new Map();
52
+ this.activeLang = new BehaviorSubject(this.getDefaultLang());
53
+ this.langChanges$ = this.activeLang.asObservable();
54
+ this.lastActiveLang = null;
55
+ service = this;
56
+ }
57
+ loadLanguagesAndScopes(languages, scopes) {
58
+ const requests = languages.flatMap((lang) => scopes.map((scope) => {
59
+ // Check if translations are already cached
60
+ if (this.translationCache[lang]?.[scope]) {
61
+ return of(this.translationCache[lang][scope]);
62
+ }
63
+ // Use the new method to handle ongoing requests and loading
64
+ return this.getOrLoadTranslations(lang, scope);
65
+ }));
66
+ return forkJoin(requests);
67
+ }
68
+ getOrLoadTranslations(lang, scope) {
69
+ const requestKey = `${lang}_${scope}`;
70
+ // Return existing observable if the request is already in progress
71
+ if (this.ongoingRequests.has(requestKey)) {
72
+ return this.ongoingRequests.get(requestKey);
73
+ }
74
+ // Load translations if not in cache or ongoing requests
75
+ const translationObservable = this.loader
76
+ .getTranslation({ lang, scope })
77
+ .pipe(tap((translations) => this.cacheTranslations(lang, scope, translations)), catchError((error) => {
78
+ console.error(`Error loading translations for lang: ${lang}, scope: ${scope}`, error);
79
+ return of(null);
80
+ }), finalize(() => {
81
+ this.eventService.emitEvent({
82
+ type: AXEventTypes.AXLanguageLoaded,
83
+ payload: lang,
84
+ });
85
+ this.ongoingRequests.delete(requestKey);
86
+ }), shareReplay(1));
87
+ this.ongoingRequests.set(requestKey, translationObservable);
88
+ return translationObservable;
89
+ }
90
+ cacheTranslations(lang, scope, translations) {
91
+ set(this.translationCache, `${lang}.${scope}`, translations);
92
+ }
93
+ getDefaultLang() {
94
+ return this.config.defaultLang;
95
+ }
96
+ getActiveLang() {
97
+ return this.activeLang.getValue();
98
+ }
99
+ setActiveLang(lang) {
100
+ if (lang != this.getActiveLang()) {
101
+ this.lastActiveLang = this.getActiveLang(); // Update last active language
102
+ this.activeLang.next(lang);
103
+ this.eventService.emitEvent({
104
+ type: AXEventTypes.AXLanguageChanged,
105
+ payload: lang,
106
+ });
107
+ }
108
+ }
109
+ load(key, options = {}) {
110
+ const { lang = this.getActiveLang(), scope = this.config.defaultScope } = options;
111
+ // Function to fetch translation
112
+ const fetchTranslation = (language) => {
113
+ // Check if translations are available in the cache
114
+ if (this.translationCache[language]?.[scope]) {
115
+ return of(this.getTranslation(key, language, scope, options.params));
116
+ }
117
+ // Use the new method to handle ongoing requests and loading
118
+ return this.getOrLoadTranslations(language, scope).pipe(map(() => {
119
+ const translation = this.translationCache[language]?.[scope]?.[key] || key;
120
+ return this.getTranslation(translation, language, scope, options.params);
121
+ }), switchMap((translatedText) => {
122
+ if (translatedText === key && language !== this.getDefaultLang()) {
123
+ // If the translation is not found and the language is not default,
124
+ // try fetching from the default language
125
+ return fetchTranslation(this.getDefaultLang());
126
+ }
127
+ return of(translatedText);
128
+ }));
129
+ };
130
+ // First, try to fetch the translation for the requested language
131
+ const translationForRequestedLang = fetchTranslation(lang);
132
+ // If lastActiveLang is available and different from the requested language, use it as a fallback
133
+ if (this.lastActiveLang && this.lastActiveLang !== lang) {
134
+ const translationForLastActiveLang = this.getTranslation(key, this.lastActiveLang, scope, options.params);
135
+ return translationForRequestedLang.pipe(startWith(translationForLastActiveLang));
136
+ }
137
+ return translationForRequestedLang;
138
+ }
139
+ getTranslation(key, lang, scope, params) {
140
+ let translation = (get(this.translationCache, `${lang}.${scope}.${key}`) || key);
141
+ // Replace params like {{ name }}
142
+ if (params) {
143
+ Object.keys(params).forEach((paramKey) => {
144
+ const paramValue = params[paramKey];
145
+ translation = translation.replace(new RegExp(`{{\\s*${paramKey}\\s*}}`, 'g'), paramValue);
146
+ });
147
+ }
148
+ // Replace translations like {{ t('key') }}
149
+ const translationPattern = /{{\s*t\('([^']+)'\)\s*}}/g;
150
+ translation = translation.replace(translationPattern, (match, innerKey) => {
151
+ return this.getTranslation(innerKey, lang, scope, params);
152
+ });
153
+ return translation;
154
+ }
155
+ translate(key, options) {
156
+ if (options?.lang) {
157
+ return this.load(key, options);
158
+ }
159
+ return this.langChanges$.pipe(startWith(this.getActiveLang()), switchMap((lang) => {
160
+ return this.load(key, { ...options, lang: lang });
161
+ }));
162
+ }
163
+ async translateAsync(key, options) {
164
+ const { lang = this.getActiveLang(), scope = this.config.defaultScope } = options || {};
165
+ let translation = get(this.translationCache, `${lang}.${scope}.${key}`);
166
+ if (!translation) {
167
+ // If the translation is not in the cache, load it
168
+ await firstValueFrom(this.load(key, { lang, scope }).pipe(take(1)));
169
+ translation = get(this.translationCache, `${lang}.${scope}.${key}`);
170
+ }
171
+ // If still not available, try the last active language or default language
172
+ if (!translation && this.lastActiveLang) {
173
+ translation = get(this.translationCache, `${this.lastActiveLang}.${scope}.${key}`);
174
+ }
175
+ if (!translation) {
176
+ translation = get(this.translationCache, `${this.getDefaultLang()}.${scope}.${key}`);
177
+ }
178
+ // Perform parameter replacement
179
+ return this.getTranslation((translation || key), lang, scope, options?.params);
180
+ }
181
+ translateSync(key, options) {
182
+ const { lang = this.getActiveLang(), scope = this.config.defaultScope } = options || {};
183
+ // Check if the translation for the active language is available
184
+ let translation = get(this.translationCache, `${lang}.${scope}.${key}`);
185
+ // If not available, check lastActiveLang
186
+ if (!translation && this.lastActiveLang) {
187
+ translation = get(this.translationCache, `${this.lastActiveLang}.${scope}.${key}`);
188
+ }
189
+ // If still not available, use the default language
190
+ if (!translation) {
191
+ translation = get(this.translationCache, `${this.getDefaultLang()}.${scope}.${key}`);
192
+ }
193
+ // Perform parameter replacement
194
+ return this.getTranslation((translation || key), lang, scope, options?.params);
195
+ }
196
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AXTranslationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
197
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AXTranslationService, providedIn: 'root' }); }
198
+ }
199
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AXTranslationService, decorators: [{
200
+ type: Injectable,
201
+ args: [{ providedIn: 'root' }]
202
+ }], ctorParameters: () => [] });
203
+
204
+ class AXTranslatorPipe {
205
+ constructor(service) {
206
+ this.service = service;
207
+ }
208
+ transform(key, options) {
209
+ if (!key) {
210
+ return of(''); // Return an empty observable if the key is not provided
211
+ }
212
+ return this.service.translate(key, options);
213
+ }
214
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AXTranslatorPipe, deps: [{ token: AXTranslationService }], target: i0.ɵɵFactoryTarget.Pipe }); }
215
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.2", ngImport: i0, type: AXTranslatorPipe, name: "translate" }); }
216
+ }
217
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AXTranslatorPipe, decorators: [{
218
+ type: Pipe,
219
+ args: [{ name: 'translate', pure: true }]
220
+ }], ctorParameters: () => [{ type: AXTranslationService }] });
221
+
222
+ class AXTranslatorDirective {
223
+ constructor(templateRef, viewContainer, translationService) {
224
+ this.templateRef = templateRef;
225
+ this.viewContainer = viewContainer;
226
+ this.translationService = translationService;
227
+ }
228
+ ngOnInit() {
229
+ this.viewContainer.clear();
230
+ this.viewContainer.createEmbeddedView(this.templateRef, {
231
+ $implicit: (key, options) => {
232
+ return this.translationService.translate(key, options);
233
+ },
234
+ });
235
+ }
236
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AXTranslatorDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: AXTranslationService }], target: i0.ɵɵFactoryTarget.Directive }); }
237
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.2", type: AXTranslatorDirective, selector: "[translate]", ngImport: i0 }); }
238
+ }
239
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AXTranslatorDirective, decorators: [{
240
+ type: Directive,
241
+ args: [{
242
+ selector: '[translate]',
243
+ }]
244
+ }], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: AXTranslationService }] });
245
+
246
+ function initializeApp(translatorService, config) {
247
+ return () => {
248
+ return translatorService.loadLanguagesAndScopes(config.preloadLangs ?? [config.defaultLang], config.preloadScopes ?? [config.defaultScope]);
249
+ };
250
+ }
251
+ class AXTranslationModule {
252
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AXTranslationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
253
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.2", ngImport: i0, type: AXTranslationModule, declarations: [AXTranslatorPipe, AXTranslatorDirective], exports: [AXTranslatorPipe, AXTranslatorDirective] }); }
254
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AXTranslationModule, providers: [
255
+ {
256
+ provide: APP_INITIALIZER,
257
+ useFactory: initializeApp,
258
+ deps: [AXTranslationService, AX_TRANSLATION_CONFIG],
259
+ multi: true,
260
+ },
261
+ ] }); }
262
+ }
263
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AXTranslationModule, decorators: [{
264
+ type: NgModule,
265
+ args: [{
266
+ imports: [],
267
+ exports: [AXTranslatorPipe, AXTranslatorDirective],
268
+ declarations: [AXTranslatorPipe, AXTranslatorDirective],
269
+ providers: [
270
+ {
271
+ provide: APP_INITIALIZER,
272
+ useFactory: initializeApp,
273
+ deps: [AXTranslationService, AX_TRANSLATION_CONFIG],
274
+ multi: true,
275
+ },
276
+ ],
277
+ }]
278
+ }] });
279
+
280
+ const loadTranslationScope = (route, state) => {
281
+ const translatorService = inject(AXTranslationService);
282
+ const config = inject(AX_TRANSLATION_CONFIG);
283
+ const scopeValue = route.data[config.scopeResolverKey];
284
+ const scopes = Array.isArray(scopeValue) ? scopeValue : [scopeValue];
285
+ return translatorService.loadLanguagesAndScopes([translatorService.getActiveLang()], scopes);
286
+ };
287
+
288
+ /**
289
+ * Generated bundle index. Do not edit.
290
+ */
291
+
292
+ export { AXTranslationDefaultConfig, AXTranslationLoaderDefault, AXTranslationModule, AXTranslationService, AXTranslatorDirective, AXTranslatorPipe, AX_TRANSLATION_CONFIG, AX_TRANSLATION_LOADER, loadTranslationScope, translateSync, translationConfig };
293
+ //# sourceMappingURL=acorex-core-translation.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-core-translation.mjs","sources":["../../../../libs/core/translation/src/lib/translation.config.ts","../../../../libs/core/translation/src/lib/translation.loader.ts","../../../../libs/core/translation/src/lib/translation.service.ts","../../../../libs/core/translation/src/lib/translator.pipe.ts","../../../../libs/core/translation/src/lib/translator.directive.ts","../../../../libs/core/translation/src/lib/translation.module.ts","../../../../libs/core/translation/src/lib/translation-scope.resolver.ts","../../../../libs/core/translation/src/acorex-core-translation.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { AXTranslateLang, AXTranslateScope } from './translation.types';\n\nexport interface AXTranslationConfig {\n defaultLang: AXTranslateLang;\n defaultScope: AXTranslateScope;\n preloadLangs?: AXTranslateLang[];\n preloadScopes?: AXTranslateLang[];\n availableLangs?: AXTranslateLang[];\n scopeResolverKey: string;\n}\n\nexport const AX_TRANSLATION_CONFIG = new InjectionToken<AXTranslationConfig>(\n 'AX_TRANSLATION_CONFIG',\n {\n providedIn: 'root',\n factory: () => {\n return AXTranslationDefaultConfig;\n },\n }\n);\n\nexport const AXTranslationDefaultConfig: AXTranslationConfig = {\n defaultLang: 'en',\n defaultScope: 'common',\n scopeResolverKey: 'scope',\n};\n\nexport type AXPartialTranslationConfig = Partial<AXTranslationConfig>;\n\nexport function translationConfig(\n config: AXPartialTranslationConfig = {}\n): AXTranslationConfig {\n const result = {\n ...AXTranslationDefaultConfig,\n ...config,\n };\n return result;\n}\n","import { InjectionToken } from '@angular/core';\nimport {\n AXTranslateLang,\n AXTranslateScope,\n AXTranslation,\n} from './translation.types';\nimport { Observable, of } from 'rxjs';\n\nexport interface AXTranslationLoaderOptions {\n lang: AXTranslateLang;\n scope?: AXTranslateScope;\n}\n\nexport interface AXTranslationLoader {\n getTranslation(\n options: AXTranslationLoaderOptions\n ): Observable<AXTranslation>;\n}\n\nexport class AXTranslationLoaderDefault implements AXTranslationLoader {\n getTranslation(\n options: AXTranslationLoaderOptions\n ): Observable<AXTranslation> {\n return of({});\n }\n}\n\nexport const AX_TRANSLATION_LOADER = new InjectionToken<AXTranslationLoader>(\n 'AX_TRANSLATION_LOADER',\n {\n providedIn: 'root',\n factory: () => {\n return new AXTranslationLoaderDefault();\n },\n }\n);\n","import { Injectable, inject } from '@angular/core';\nimport {\n BehaviorSubject,\n Observable,\n catchError,\n finalize,\n firstValueFrom,\n forkJoin,\n map,\n of,\n shareReplay,\n startWith,\n switchMap,\n take,\n tap,\n} from 'rxjs';\nimport {\n AXTranslateHashMap,\n AXTranslateOptions,\n AXTranslateParams,\n} from './translation.types';\nimport { AX_TRANSLATION_LOADER } from './translation.loader';\nimport { set as lodashSet, get as lodashGet } from 'lodash-es';\nimport { AX_TRANSLATION_CONFIG } from './translation.config';\nimport { AXEventService, AXEventTypes } from '@acorex/core/events';\n\nlet service: AXTranslationService;\n\nexport function translateSync(\n key: string,\n options?: AXTranslateOptions\n): string {\n return service.translateSync(key, options);\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AXTranslationService {\n private loader = inject(AX_TRANSLATION_LOADER);\n private config = inject(AX_TRANSLATION_CONFIG);\n\n private eventService = inject(AXEventService);\n\n private translationCache: AXTranslateHashMap<AXTranslateHashMap<string>> = {};\n private ongoingRequests: Map<string, Observable<any>> = new Map();\n\n private activeLang: BehaviorSubject<string> = new BehaviorSubject<string>(\n this.getDefaultLang()\n );\n langChanges$: Observable<string> = this.activeLang.asObservable();\n\n private lastActiveLang: string | null = null;\n\n /**\n * @ignore\n */\n constructor() {\n service = this;\n }\n\n public loadLanguagesAndScopes(\n languages: string[],\n scopes: string[]\n ): Observable<unknown> {\n const requests = languages.flatMap((lang) =>\n scopes.map((scope) => {\n // Check if translations are already cached\n if (this.translationCache[lang]?.[scope]) {\n return of(this.translationCache[lang][scope]);\n }\n\n // Use the new method to handle ongoing requests and loading\n return this.getOrLoadTranslations(lang, scope);\n })\n );\n\n return forkJoin(requests);\n }\n\n private getOrLoadTranslations(\n lang: string,\n scope: string\n ): Observable<AXTranslateHashMap<string>> {\n const requestKey = `${lang}_${scope}`;\n\n // Return existing observable if the request is already in progress\n if (this.ongoingRequests.has(requestKey)) {\n return this.ongoingRequests.get(requestKey);\n }\n\n // Load translations if not in cache or ongoing requests\n const translationObservable = this.loader\n .getTranslation({ lang, scope })\n .pipe(\n tap((translations) =>\n this.cacheTranslations(lang, scope, translations)\n ),\n catchError((error) => {\n console.error(\n `Error loading translations for lang: ${lang}, scope: ${scope}`,\n error\n );\n return of(null);\n }),\n finalize(() => {\n this.eventService.emitEvent({\n type: AXEventTypes.AXLanguageLoaded,\n payload: lang,\n });\n this.ongoingRequests.delete(requestKey);\n }),\n shareReplay(1)\n );\n\n this.ongoingRequests.set(requestKey, translationObservable);\n return translationObservable;\n }\n\n private cacheTranslations(\n lang: string,\n scope: string,\n translations: AXTranslateHashMap<string>\n ): void {\n lodashSet(this.translationCache, `${lang}.${scope}`, translations);\n }\n\n public getDefaultLang(): string {\n return this.config.defaultLang;\n }\n\n public getActiveLang(): string {\n return this.activeLang.getValue();\n }\n\n public setActiveLang(lang: string): void {\n if (lang != this.getActiveLang()) {\n this.lastActiveLang = this.getActiveLang(); // Update last active language\n this.activeLang.next(lang);\n this.eventService.emitEvent({\n type: AXEventTypes.AXLanguageChanged,\n payload: lang,\n });\n }\n }\n\n private load(\n key: string,\n options: AXTranslateOptions = {}\n ): Observable<string> {\n const { lang = this.getActiveLang(), scope = this.config.defaultScope } =\n options;\n\n // Function to fetch translation\n const fetchTranslation = (language: string): Observable<string> => {\n // Check if translations are available in the cache\n if (this.translationCache[language]?.[scope]) {\n return of(this.getTranslation(key, language, scope, options.params));\n }\n\n // Use the new method to handle ongoing requests and loading\n return this.getOrLoadTranslations(language, scope).pipe(\n map(() => {\n const translation =\n this.translationCache[language]?.[scope]?.[key] || key;\n return this.getTranslation(\n translation,\n language,\n scope,\n options.params\n );\n }),\n switchMap((translatedText) => {\n if (translatedText === key && language !== this.getDefaultLang()) {\n // If the translation is not found and the language is not default,\n // try fetching from the default language\n return fetchTranslation(this.getDefaultLang());\n }\n return of(translatedText);\n })\n );\n };\n\n // First, try to fetch the translation for the requested language\n const translationForRequestedLang = fetchTranslation(lang);\n\n // If lastActiveLang is available and different from the requested language, use it as a fallback\n if (this.lastActiveLang && this.lastActiveLang !== lang) {\n const translationForLastActiveLang = this.getTranslation(\n key,\n this.lastActiveLang,\n scope,\n options.params\n );\n return translationForRequestedLang.pipe(\n startWith(translationForLastActiveLang)\n );\n }\n\n return translationForRequestedLang;\n }\n\n private getTranslation(\n key: string,\n lang: string,\n scope: string,\n params?: AXTranslateParams\n ): string {\n let translation: string = (lodashGet(\n this.translationCache,\n `${lang}.${scope}.${key}`\n ) || key) as string;\n\n // Replace params like {{ name }}\n if (params) {\n Object.keys(params).forEach((paramKey) => {\n const paramValue = params[paramKey] as string;\n translation = translation.replace(\n new RegExp(`{{\\\\s*${paramKey}\\\\s*}}`, 'g'),\n paramValue\n );\n });\n }\n\n // Replace translations like {{ t('key') }}\n const translationPattern = /{{\\s*t\\('([^']+)'\\)\\s*}}/g;\n translation = translation.replace(translationPattern, (match, innerKey) => {\n return this.getTranslation(innerKey, lang, scope, params);\n });\n return translation;\n }\n\n public translate(\n key: string,\n options?: AXTranslateOptions\n ): Observable<string> {\n if (options?.lang) {\n return this.load(key, options);\n }\n return this.langChanges$.pipe(\n startWith(this.getActiveLang()),\n switchMap((lang) => {\n return this.load(key, { ...options, lang: lang });\n })\n );\n }\n\n public async translateAsync(\n key: string,\n options?: AXTranslateOptions\n ): Promise<string> {\n const { lang = this.getActiveLang(), scope = this.config.defaultScope } =\n options || {};\n let translation = lodashGet(\n this.translationCache,\n `${lang}.${scope}.${key}`\n );\n\n if (!translation) {\n // If the translation is not in the cache, load it\n await firstValueFrom(this.load(key, { lang, scope }).pipe(take(1)));\n translation = lodashGet(this.translationCache, `${lang}.${scope}.${key}`);\n }\n\n // If still not available, try the last active language or default language\n if (!translation && this.lastActiveLang) {\n translation = lodashGet(\n this.translationCache,\n `${this.lastActiveLang}.${scope}.${key}`\n );\n }\n if (!translation) {\n translation = lodashGet(\n this.translationCache,\n `${this.getDefaultLang()}.${scope}.${key}`\n );\n }\n\n // Perform parameter replacement\n return this.getTranslation(\n (translation || key) as any,\n lang,\n scope,\n options?.params\n );\n }\n\n public translateSync(key: string, options?: AXTranslateOptions): string {\n const { lang = this.getActiveLang(), scope = this.config.defaultScope } =\n options || {};\n\n // Check if the translation for the active language is available\n let translation = lodashGet(\n this.translationCache,\n `${lang}.${scope}.${key}`\n );\n\n // If not available, check lastActiveLang\n if (!translation && this.lastActiveLang) {\n translation = lodashGet(\n this.translationCache,\n `${this.lastActiveLang}.${scope}.${key}`\n );\n }\n\n // If still not available, use the default language\n if (!translation) {\n translation = lodashGet(\n this.translationCache,\n `${this.getDefaultLang()}.${scope}.${key}`\n );\n }\n\n // Perform parameter replacement\n return this.getTranslation(\n (translation || key) as any,\n lang,\n scope,\n options?.params\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { AXTranslationService } from './translation.service';\nimport { Observable, of } from 'rxjs';\nimport { AXTranslateOptions } from './translation.types';\n\n@Pipe({ name: 'translate', pure: true }) // The pipe can now be pure\nexport class AXTranslatorPipe implements PipeTransform {\n constructor(private service: AXTranslationService) {}\n\n transform(key: string, options?: AXTranslateOptions): Observable<string> {\n if (!key) {\n return of(''); // Return an empty observable if the key is not provided\n }\n return this.service.translate(key, options);\n }\n}\n","import {\n Directive,\n OnInit,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { AXTranslationService } from './translation.service';\nimport { AXTranslateOptions } from './translation.types';\n\n@Directive({\n selector: '[translate]',\n})\nexport class AXTranslatorDirective implements OnInit {\n constructor(\n private templateRef: TemplateRef<any>,\n private viewContainer: ViewContainerRef,\n private translationService: AXTranslationService\n ) {}\n\n ngOnInit() {\n this.viewContainer.clear();\n this.viewContainer.createEmbeddedView(this.templateRef, {\n $implicit: (key: string, options?: AXTranslateOptions) => {\n return this.translationService.translate(key, options);\n },\n });\n }\n}\n","import { APP_INITIALIZER, NgModule } from '@angular/core';\nimport { AXTranslatorPipe } from './translator.pipe';\nimport { AXTranslatorDirective } from './translator.directive';\nimport { AXTranslationService } from './translation.service';\nimport { Observable } from 'rxjs';\nimport {\n AXTranslationConfig,\n AX_TRANSLATION_CONFIG,\n} from './translation.config';\n\nfunction initializeApp(\n translatorService: AXTranslationService,\n config: AXTranslationConfig\n) {\n return (): Observable<any> => {\n return translatorService.loadLanguagesAndScopes(\n config.preloadLangs ?? [config.defaultLang],\n config.preloadScopes ?? [config.defaultScope]\n );\n };\n}\n\n@NgModule({\n imports: [],\n exports: [AXTranslatorPipe, AXTranslatorDirective],\n declarations: [AXTranslatorPipe, AXTranslatorDirective],\n providers: [\n {\n provide: APP_INITIALIZER,\n useFactory: initializeApp,\n deps: [AXTranslationService, AX_TRANSLATION_CONFIG],\n multi: true,\n },\n ],\n})\nexport class AXTranslationModule {}\n","import { inject } from '@angular/core';\nimport { AXTranslationService } from './translation.service';\nimport { ResolveFn } from '@angular/router';\nimport { AX_TRANSLATION_CONFIG } from './translation.config';\n\nexport const loadTranslationScope: ResolveFn<unknown> = (route, state) => {\n const translatorService = inject(AXTranslationService);\n const config = inject(AX_TRANSLATION_CONFIG);\n const scopeValue = route.data[config.scopeResolverKey];\n const scopes = Array.isArray(scopeValue) ? scopeValue : [scopeValue];\n return translatorService.loadLanguagesAndScopes(\n [translatorService.getActiveLang()],\n scopes\n );\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["lodashSet","lodashGet","i1.AXTranslationService"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ var index = {};
2
+
3
+ /**
4
+ * Generated bundle index. Do not edit.
5
+ */
6
+ //# sourceMappingURL=acorex-core-types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-core-types.mjs","sources":["../../../../libs/core/types/src/index.ts","../../../../libs/core/types/src/acorex-core-types.ts"],"sourcesContent":["export default {};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA,YAAe,EAAE;;ACAjB;;AAEG"}
@@ -0,0 +1,247 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Injectable } from '@angular/core';
3
+ import { Subject, takeUntil } from 'rxjs';
4
+ import tinycolor from 'tinycolor2';
5
+ import tinygradient from 'tinygradient-es';
6
+
7
+ function AXAutoUnsubscriber() {
8
+ return function (constructor) {
9
+ const orig = constructor.prototype.ngOnDestroy;
10
+ constructor.prototype.ngOnDestroy = function () {
11
+ for (const prop in this) {
12
+ const property = this[prop];
13
+ if (typeof property.subscribe === 'function') {
14
+ property.unsubscribe();
15
+ }
16
+ }
17
+ orig.apply();
18
+ };
19
+ };
20
+ }
21
+ class AXUnsubscriber {
22
+ constructor() {
23
+ this._destroy$ = new Subject();
24
+ this.takeUntilDestroy = (origin) => origin.pipe(takeUntil(this._destroy$));
25
+ }
26
+ unsubscribe() {
27
+ this._destroy$.next();
28
+ this._destroy$.complete();
29
+ }
30
+ ngOnDestroy() {
31
+ this.unsubscribe();
32
+ }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AXUnsubscriber, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
34
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AXUnsubscriber }); }
35
+ }
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AXUnsubscriber, decorators: [{
37
+ type: Injectable
38
+ }] });
39
+
40
+ class AXColorUtil {
41
+ static to(color, mode) {
42
+ const _color = tinycolor(color);
43
+ switch (mode) {
44
+ case 'rgba':
45
+ return _color.toRgb();
46
+ case 'hsla':
47
+ return _color.toHsl();
48
+ case 'hsva':
49
+ return _color.toHsv();
50
+ default:
51
+ return _color.toHex();
52
+ }
53
+ }
54
+ static toString(color, mode = null) {
55
+ const _color = tinycolor(color);
56
+ switch (mode) {
57
+ case 'rgba':
58
+ return _color.toRgbString();
59
+ case 'hsla':
60
+ return _color.toHslString();
61
+ case 'hsva':
62
+ return _color.toHsvString();
63
+ case 'hex': {
64
+ const rgba = _color.toRgb();
65
+ return rgba.a != 1 ? _color.toHex8String() : _color.toHexString();
66
+ }
67
+ default: {
68
+ if (typeof color == 'string') {
69
+ if (color.toLowerCase().startsWith('#'))
70
+ return this.toString(color, 'hex');
71
+ else
72
+ return this.toString(color, 'rgba');
73
+ }
74
+ else {
75
+ return this.toString(color, 'rgba');
76
+ }
77
+ }
78
+ }
79
+ }
80
+ static isValid(color) {
81
+ const _color = tinycolor(color);
82
+ return _color.isValid();
83
+ }
84
+ static mix(baseColor, hex, percentage) {
85
+ return tinycolor.mix(baseColor, hex, percentage).toString('rgb');
86
+ }
87
+ static multiply(color1, color2) {
88
+ const rgb1 = tinycolor(color1).toRgb();
89
+ const rgb2 = tinycolor(color2).toRgb();
90
+ rgb1.b = Math.floor((rgb1.b * rgb2.b) / 255);
91
+ rgb1.g = Math.floor((rgb1.g * rgb2.g) / 255);
92
+ rgb1.r = Math.floor((rgb1.r * rgb2.r) / 255);
93
+ return tinycolor('rgb ' + rgb1.r + ' ' + rgb1.g + ' ' + rgb1.b).toString('rgb');
94
+ }
95
+ static contrastToWhite(color) {
96
+ return tinycolor.readability('#fff', color);
97
+ }
98
+ static lighten(hex, percentage) {
99
+ return tinycolor(hex).lighten(percentage);
100
+ }
101
+ static darken(hex, percentage) {
102
+ return tinycolor(hex).darken(percentage);
103
+ }
104
+ static brighten(hex, percentage) {
105
+ return tinycolor(hex).brighten(percentage);
106
+ }
107
+ static saturate(hex, percentage) {
108
+ return tinycolor(hex).saturate(percentage);
109
+ }
110
+ static desaturate(hex) {
111
+ return tinycolor(hex).getLuminance();
112
+ }
113
+ static equal(color1, color2) {
114
+ return tinycolor.equals(color1, color2);
115
+ }
116
+ static gradient(values) {
117
+ return tinygradient([...values]);
118
+ }
119
+ static getLuminance(hex) {
120
+ return tinycolor(hex).getLuminance();
121
+ }
122
+ static xyToRgb(vX, vY) {
123
+ vY = vY || 0.00000000001;
124
+ const Y = 1;
125
+ const X = (Y / vY) * vX;
126
+ const Z = (Y / vY) * (1 - vX - vY);
127
+ // Convert to RGB using Wide RGB D65 conversion.
128
+ let rgb = [
129
+ X * 1.656492 - Y * 0.354851 - Z * 0.255038,
130
+ -X * 0.707196 + Y * 1.655397 + Z * 0.036152,
131
+ X * 0.051713 - Y * 0.121364 + Z * 1.01153,
132
+ ];
133
+ // Apply reverse gamma correction.
134
+ rgb = rgb.map((x) => x <= 0.0031308
135
+ ? 12.92 * x
136
+ : (1.0 + 0.055) * Math.pow(x, 1.0 / 2.4) - 0.055);
137
+ // Bring all negative components to zero.
138
+ rgb = rgb.map((x) => Math.max(0, x));
139
+ // If one component is greater than 1, weight components by that value.
140
+ const max = Math.max(...rgb);
141
+ if (max > 1) {
142
+ rgb = rgb.map((x) => x / max);
143
+ }
144
+ rgb = rgb.map((x) => Math.round(x * 255));
145
+ return 'rgb(' + rgb.join(',') + ')';
146
+ }
147
+ }
148
+
149
+ // @dynamic
150
+ class AXDrawingUtil {
151
+ static collision(a, b) {
152
+ const ac = a.getBoundingClientRect();
153
+ const bc = b.getBoundingClientRect();
154
+ if (ac.left < bc.left + bc.width &&
155
+ ac.left + ac.width > bc.left &&
156
+ ac.top < bc.top + bc.height &&
157
+ ac.top + ac.height > bc.top) {
158
+ return true;
159
+ }
160
+ else {
161
+ return false;
162
+ }
163
+ }
164
+ static isInElementBound(pos, element) {
165
+ const elBound = element.getBoundingClientRect();
166
+ return AXDrawingUtil.isInRecPoint(pos, {
167
+ left: elBound.x,
168
+ width: elBound.width,
169
+ top: elBound.y,
170
+ height: elBound.height,
171
+ });
172
+ }
173
+ static isInRecPoint(pos, rec) {
174
+ return (pos.x >= rec.left &&
175
+ pos.x <= rec.left + rec.width &&
176
+ pos.y >= rec.top &&
177
+ pos.y <= rec.top + rec.height);
178
+ }
179
+ static convertRemToPixels(rem) {
180
+ return (rem * parseFloat(getComputedStyle(document.documentElement).fontSize));
181
+ }
182
+ }
183
+
184
+ // @dynamic
185
+ class AXHtmlUtil {
186
+ static focusElement(element) {
187
+ const list = [
188
+ 'button',
189
+ 'input',
190
+ '[href]',
191
+ 'select',
192
+ 'textarea',
193
+ '[tabindex]',
194
+ ].map((c) => c + ':not([tabindex="-1"])');
195
+ const focusable = element.querySelector(list.join(', '));
196
+ if (focusable) {
197
+ focusable.focus();
198
+ return focusable;
199
+ }
200
+ return null;
201
+ }
202
+ static blurElement(element) {
203
+ const list = [
204
+ 'button',
205
+ 'input',
206
+ '[href]',
207
+ 'select',
208
+ 'textarea',
209
+ '[tabindex]',
210
+ ].map((c) => c + ':not([tabindex="-1"])');
211
+ const focusable = element.querySelector(list.join(', '));
212
+ if (focusable) {
213
+ focusable.blur();
214
+ return focusable;
215
+ }
216
+ return null;
217
+ }
218
+ static hasFocus(element) {
219
+ return element.matches(':focus-within') || element.matches(':focus');
220
+ }
221
+ }
222
+
223
+ // @dynamic
224
+ class AXStringUtil {
225
+ static getWordBoundsAtPosition(str, position) {
226
+ const isSpace = (c) => /[^a-zA-Z0-9]+/i.test(c);
227
+ let start = position - 1;
228
+ while (start >= 0 && !isSpace(str[start])) {
229
+ start -= 1;
230
+ }
231
+ start = Math.max(0, start + 1);
232
+ const leftSideString = str.slice(start).match(/[a-zA-Z0-9]+/i);
233
+ start += leftSideString.index;
234
+ let end = start + leftSideString[0].length;
235
+ return {
236
+ start,
237
+ end,
238
+ };
239
+ }
240
+ }
241
+
242
+ /**
243
+ * Generated bundle index. Do not edit.
244
+ */
245
+
246
+ export { AXAutoUnsubscriber, AXColorUtil, AXDrawingUtil, AXHtmlUtil, AXStringUtil, AXUnsubscriber };
247
+ //# sourceMappingURL=acorex-core-utils.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-core-utils.mjs","sources":["../../../../libs/core/utils/src/lib/auto-unsubscribe.ts","../../../../libs/core/utils/src/lib/color-util.ts","../../../../libs/core/utils/src/lib/drawing-util.ts","../../../../libs/core/utils/src/lib/html-util.ts","../../../../libs/core/utils/src/lib/string-util.ts","../../../../libs/core/utils/src/acorex-core-utils.ts"],"sourcesContent":["import { Injectable, OnDestroy } from '@angular/core';\nimport { Observable, Subject, takeUntil } from 'rxjs';\n\nexport function AXAutoUnsubscriber() {\n return function (constructor) {\n const orig = constructor.prototype.ngOnDestroy;\n constructor.prototype.ngOnDestroy = function () {\n for (const prop in this) {\n const property = this[prop];\n if (typeof property.subscribe === 'function') {\n property.unsubscribe();\n }\n }\n orig.apply();\n };\n };\n}\n\n@Injectable()\nexport class AXUnsubscriber implements OnDestroy {\n private readonly _destroy$ = new Subject<void>();\n\n public readonly takeUntilDestroy = <T>(\n origin: Observable<T> | Subject<T>\n ): Observable<T> | Subject<T> => origin.pipe(takeUntil(this._destroy$));\n\n public unsubscribe(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public ngOnDestroy(): void {\n this.unsubscribe();\n }\n}\n","export type AXColorMode = 'rgba' | 'hex' | 'hsla' | 'hsva' | null;\n\nimport tinycolor, { ColorInput } from 'tinycolor2';\nimport tinygradient, { Instance } from 'tinygradient-es';\n\nexport type AXColorFormat = ColorInput;\n\nexport class AXColorUtil {\n static to(color: AXColorFormat, mode: AXColorMode): AXColorFormat {\n const _color = tinycolor(color);\n switch (mode) {\n case 'rgba':\n return _color.toRgb();\n case 'hsla':\n return _color.toHsl();\n case 'hsva':\n return _color.toHsv();\n default:\n return _color.toHex();\n }\n }\n\n static toString(color: AXColorFormat, mode: AXColorMode = null): string {\n const _color = tinycolor(color);\n switch (mode) {\n case 'rgba':\n return _color.toRgbString();\n case 'hsla':\n return _color.toHslString();\n case 'hsva':\n return _color.toHsvString();\n\n case 'hex': {\n const rgba = _color.toRgb();\n return rgba.a != 1 ? _color.toHex8String() : _color.toHexString();\n }\n default: {\n if (typeof color == 'string') {\n if (color.toLowerCase().startsWith('#'))\n return this.toString(color, 'hex');\n else return this.toString(color, 'rgba');\n } else {\n return this.toString(color, 'rgba');\n }\n }\n }\n }\n\n static isValid(color: AXColorFormat): boolean {\n const _color = tinycolor(color);\n return _color.isValid();\n }\n\n static mix(\n baseColor: AXColorFormat,\n hex: AXColorFormat,\n percentage: number\n ): string {\n return tinycolor.mix(baseColor, hex, percentage).toString('rgb');\n }\n\n static multiply(color1: AXColorFormat, color2: AXColorFormat): string {\n const rgb1 = tinycolor(color1).toRgb();\n const rgb2 = tinycolor(color2).toRgb();\n rgb1.b = Math.floor((rgb1.b * rgb2.b) / 255);\n rgb1.g = Math.floor((rgb1.g * rgb2.g) / 255);\n rgb1.r = Math.floor((rgb1.r * rgb2.r) / 255);\n return tinycolor('rgb ' + rgb1.r + ' ' + rgb1.g + ' ' + rgb1.b).toString(\n 'rgb'\n );\n }\n\n static contrastToWhite(color: AXColorFormat): number {\n return tinycolor.readability('#fff', color);\n }\n\n static lighten(hex: AXColorFormat, percentage?: number) {\n return tinycolor(hex).lighten(percentage);\n }\n\n static darken(hex: AXColorFormat, percentage?: number) {\n return tinycolor(hex).darken(percentage);\n }\n\n static brighten(hex: AXColorFormat, percentage?: number) {\n return tinycolor(hex).brighten(percentage);\n }\n\n static saturate(hex: AXColorFormat, percentage?: number) {\n return tinycolor(hex).saturate(percentage);\n }\n\n static desaturate(hex: AXColorFormat) {\n return tinycolor(hex).getLuminance();\n }\n\n static equal(color1: AXColorFormat, color2: AXColorFormat): boolean {\n return tinycolor.equals(color1, color2);\n }\n\n static gradient(\n values: unknown[] | { color: unknown; pos: number }[]\n ): Instance {\n return tinygradient([...values]);\n }\n\n static getLuminance(hex: AXColorFormat) {\n return tinycolor(hex).getLuminance();\n }\n\n static xyToRgb(vX, vY): string {\n vY = vY || 0.00000000001;\n const Y = 1;\n const X = (Y / vY) * vX;\n const Z = (Y / vY) * (1 - vX - vY);\n\n // Convert to RGB using Wide RGB D65 conversion.\n let rgb = [\n X * 1.656492 - Y * 0.354851 - Z * 0.255038,\n -X * 0.707196 + Y * 1.655397 + Z * 0.036152,\n X * 0.051713 - Y * 0.121364 + Z * 1.01153,\n ];\n\n // Apply reverse gamma correction.\n rgb = rgb.map((x) =>\n x <= 0.0031308\n ? 12.92 * x\n : (1.0 + 0.055) * Math.pow(x, 1.0 / 2.4) - 0.055\n );\n\n // Bring all negative components to zero.\n rgb = rgb.map((x) => Math.max(0, x));\n\n // If one component is greater than 1, weight components by that value.\n const max = Math.max(...rgb);\n if (max > 1) {\n rgb = rgb.map((x) => x / max);\n }\n\n rgb = rgb.map((x) => Math.round(x * 255));\n\n return 'rgb(' + rgb.join(',') + ')';\n }\n}\n","export interface AXPoint {\n x: number;\n y: number;\n}\n\nexport interface AXBoundingClientRect {\n left?: number;\n top?: number;\n width?: number;\n height?: number;\n bottom?: number;\n right?: number;\n}\n// @dynamic\nexport class AXDrawingUtil {\n static collision(a: HTMLElement, b: HTMLElement): boolean {\n const ac = a.getBoundingClientRect();\n const bc = b.getBoundingClientRect();\n\n if (\n ac.left < bc.left + bc.width &&\n ac.left + ac.width > bc.left &&\n ac.top < bc.top + bc.height &&\n ac.top + ac.height > bc.top\n ) {\n return true;\n } else {\n return false;\n }\n }\n\n static isInElementBound(pos: AXPoint, element: HTMLElement): boolean {\n const elBound = element.getBoundingClientRect();\n return AXDrawingUtil.isInRecPoint(pos, {\n left: elBound.x,\n width: elBound.width,\n top: elBound.y,\n height: elBound.height,\n });\n }\n\n static isInRecPoint(pos: AXPoint, rec: AXBoundingClientRect | any): boolean {\n return (\n pos.x >= rec.left &&\n pos.x <= rec.left + rec.width &&\n pos.y >= rec.top &&\n pos.y <= rec.top + rec.height\n );\n }\n\n static convertRemToPixels(rem: number): number {\n return (\n rem * parseFloat(getComputedStyle(document.documentElement).fontSize)\n );\n }\n}\n","// @dynamic\nexport class AXHtmlUtil {\n static focusElement(element: HTMLElement): HTMLElement {\n const list = [\n 'button',\n 'input',\n '[href]',\n 'select',\n 'textarea',\n '[tabindex]',\n ].map((c) => c + ':not([tabindex=\"-1\"])');\n const focusable = element.querySelector<HTMLElement>(list.join(', '));\n if (focusable) {\n focusable.focus();\n return focusable;\n }\n return null;\n }\n static blurElement(element: HTMLElement): HTMLElement {\n const list = [\n 'button',\n 'input',\n '[href]',\n 'select',\n 'textarea',\n '[tabindex]',\n ].map((c) => c + ':not([tabindex=\"-1\"])');\n const focusable = element.querySelector<HTMLElement>(list.join(', '));\n if (focusable) {\n focusable.blur();\n return focusable;\n }\n return null;\n }\n\n static hasFocus(element: HTMLElement) {\n return element.matches(':focus-within') || element.matches(':focus');\n }\n}\n","// @dynamic\nexport class AXStringUtil {\n static getWordBoundsAtPosition(\n str: string,\n position: number\n ): { start: number; end: number } {\n const isSpace = (c) => /[^a-zA-Z0-9]+/i.test(c);\n let start = position - 1;\n\n while (start >= 0 && !isSpace(str[start])) {\n start -= 1;\n }\n start = Math.max(0, start + 1);\n const leftSideString: any = str.slice(start).match(/[a-zA-Z0-9]+/i);\n start += leftSideString.index;\n let end = start + leftSideString[0].length;\n return {\n start,\n end,\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}