@acorex/core 5.1.1 → 5.1.5

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 (131) hide show
  1. package/README.md +2 -23
  2. package/esm2020/lib/classes/base-page.class.mjs +28 -0
  3. package/esm2020/lib/classes/color.class.mjs +49 -0
  4. package/esm2020/lib/classes/datetime.class.mjs +314 -0
  5. package/esm2020/lib/classes/menu.class.mjs +27 -0
  6. package/esm2020/lib/classes/navigator.class.mjs +2 -0
  7. package/esm2020/lib/classes/popup.class.mjs +2 -0
  8. package/esm2020/lib/classes/promise.class.mjs +19 -0
  9. package/esm2020/lib/classes/sectionlist.class.mjs +2 -0
  10. package/esm2020/lib/classes/select.class.mjs +3 -0
  11. package/esm2020/lib/core.module.mjs +20 -11
  12. package/esm2020/lib/error/error.class.mjs +2 -0
  13. package/esm2020/lib/error/error.module.mjs +19 -0
  14. package/esm2020/lib/error/error.service.mjs +21 -0
  15. package/esm2020/lib/events/keyboard.mjs +2 -0
  16. package/esm2020/lib/http/http-error.class.mjs +2 -0
  17. package/esm2020/lib/http/http-events.interceptor.mjs +3 -0
  18. package/esm2020/lib/http/http-request.class.mjs +2 -0
  19. package/esm2020/lib/http/http-result.class.mjs +21 -0
  20. package/esm2020/lib/http/http.module.mjs +37 -0
  21. package/esm2020/lib/http/http.service.mjs +145 -0
  22. package/esm2020/lib/locale/en.json +255 -0
  23. package/esm2020/lib/locale/fa.json +244 -0
  24. package/esm2020/lib/pipe/datetime.pipe.mjs +25 -0
  25. package/esm2020/lib/pipe/htmlToText.pipe.mjs +25 -0
  26. package/esm2020/lib/platform/platform.service.mjs +10 -6
  27. package/esm2020/lib/services/config.mjs +29 -0
  28. package/esm2020/lib/services/event.service.mjs +36 -0
  29. package/esm2020/lib/services/navigator.service.mjs +10 -0
  30. package/esm2020/lib/services/storage.service.mjs +16 -0
  31. package/esm2020/lib/translator/translator.mjs +26 -0
  32. package/esm2020/lib/translator/translator.module.mjs +25 -0
  33. package/esm2020/lib/translator/translator.pipe.mjs +24 -0
  34. package/esm2020/lib/translator/translator.service.mjs +21 -0
  35. package/esm2020/lib/utils/array/array-util.mjs +133 -0
  36. package/esm2020/lib/utils/html/html-util.mjs +192 -0
  37. package/esm2020/lib/utils/html/html.module.mjs +19 -0
  38. package/esm2020/lib/utils/math/math-util.mjs +6 -0
  39. package/esm2020/lib/utils/object/object-util.mjs +83 -0
  40. package/esm2020/lib/utils/render/on-demand-preload-strategy.service.mjs +20 -0
  41. package/esm2020/lib/utils/render/render.service.mjs +103 -0
  42. package/esm2020/lib/utils/render/rendering.module.mjs +35 -0
  43. package/esm2020/lib/utils/scroll/scroll.directive.mjs +54 -0
  44. package/esm2020/lib/utils/scroll/scroll.module.mjs +19 -0
  45. package/esm2020/lib/utils/separator/separator.module.mjs +19 -0
  46. package/esm2020/lib/utils/separator/separator.pipe.mjs +33 -0
  47. package/esm2020/public-api.mjs +43 -12
  48. package/fesm2015/acorex-core.mjs +1939 -1006
  49. package/fesm2015/acorex-core.mjs.map +1 -1
  50. package/fesm2020/acorex-core.mjs +1939 -1007
  51. package/fesm2020/acorex-core.mjs.map +1 -1
  52. package/lib/classes/base-page.class.d.ts +13 -0
  53. package/lib/classes/color.class.d.ts +17 -0
  54. package/lib/classes/datetime.class.d.ts +63 -0
  55. package/lib/classes/menu.class.d.ts +34 -0
  56. package/lib/classes/navigator.class.d.ts +5 -0
  57. package/lib/classes/popup.class.d.ts +12 -0
  58. package/lib/classes/promise.class.d.ts +7 -0
  59. package/lib/classes/sectionlist.class.d.ts +8 -0
  60. package/lib/classes/select.class.d.ts +7 -0
  61. package/lib/core.module.d.ts +4 -2
  62. package/lib/error/error.class.d.ts +4 -0
  63. package/lib/error/error.module.d.ts +7 -0
  64. package/lib/error/error.service.d.ts +13 -0
  65. package/lib/events/keyboard.d.ts +2 -0
  66. package/lib/http/http-error.class.d.ts +7 -0
  67. package/lib/http/http-events.interceptor.d.ts +10 -0
  68. package/lib/http/http-request.class.d.ts +14 -0
  69. package/lib/http/http-result.class.d.ts +11 -0
  70. package/lib/http/http.module.d.ts +10 -0
  71. package/lib/http/http.service.d.ts +23 -0
  72. package/lib/{dateTime → pipe}/datetime.pipe.d.ts +2 -2
  73. package/lib/pipe/htmlToText.pipe.d.ts +7 -0
  74. package/lib/{config/configs.d.ts → services/config.d.ts} +1 -1
  75. package/lib/{events → services}/event.service.d.ts +0 -0
  76. package/lib/services/navigator.service.d.ts +8 -0
  77. package/lib/services/storage.service.d.ts +7 -0
  78. package/lib/{translation → translator}/translator.d.ts +1 -3
  79. package/lib/translator/translator.module.d.ts +8 -0
  80. package/lib/{translation → translator}/translator.pipe.d.ts +1 -0
  81. package/lib/translator/translator.service.d.ts +8 -0
  82. package/lib/utils/array/array-util.d.ts +6 -0
  83. package/lib/utils/html/html-util.d.ts +62 -0
  84. package/lib/utils/html/html.module.d.ts +8 -0
  85. package/lib/utils/math/math-util.d.ts +3 -0
  86. package/lib/utils/object/object-util.d.ts +7 -0
  87. package/lib/utils/render/on-demand-preload-strategy.service.d.ts +10 -0
  88. package/lib/utils/render/render.service.d.ts +18 -0
  89. package/lib/utils/render/rendering.module.d.ts +8 -0
  90. package/lib/utils/scroll/scroll.directive.d.ts +18 -0
  91. package/lib/utils/scroll/scroll.module.d.ts +8 -0
  92. package/lib/utils/separator/separator.module.d.ts +8 -0
  93. package/lib/utils/separator/separator.pipe.d.ts +8 -0
  94. package/package.json +6 -11
  95. package/public-api.d.ts +42 -11
  96. package/config/ax-preset.js +0 -182
  97. package/esm2020/lib/config/configs.mjs +0 -29
  98. package/esm2020/lib/dateTime/datetime.class.mjs +0 -295
  99. package/esm2020/lib/dateTime/datetime.module.mjs +0 -33
  100. package/esm2020/lib/dateTime/datetime.pipe.mjs +0 -26
  101. package/esm2020/lib/dateTime/georgian.calendar.mjs +0 -189
  102. package/esm2020/lib/dateTime/index.mjs +0 -6
  103. package/esm2020/lib/dateTime/jalali.calendar.mjs +0 -359
  104. package/esm2020/lib/events/event.service.mjs +0 -36
  105. package/esm2020/lib/events/index.mjs +0 -2
  106. package/esm2020/lib/hotkeys/hotkeys.service.mjs +0 -37
  107. package/esm2020/lib/hotkeys/index.mjs +0 -2
  108. package/esm2020/lib/translation/index.mjs +0 -4
  109. package/esm2020/lib/translation/translation.module.mjs +0 -18
  110. package/esm2020/lib/translation/translator.mjs +0 -42
  111. package/esm2020/lib/translation/translator.pipe.mjs +0 -15
  112. package/esm2020/lib/utils/drawing-util.mjs +0 -27
  113. package/esm2020/lib/utils/index.mjs +0 -5
  114. package/esm2020/lib/utils/object-util.mjs +0 -39
  115. package/esm2020/lib/utils/safe.pipe.mjs +0 -30
  116. package/esm2020/lib/utils/string-util.mjs +0 -19
  117. package/lib/dateTime/datetime.class.d.ts +0 -100
  118. package/lib/dateTime/datetime.module.d.ts +0 -8
  119. package/lib/dateTime/georgian.calendar.d.ts +0 -20
  120. package/lib/dateTime/index.d.ts +0 -5
  121. package/lib/dateTime/jalali.calendar.d.ts +0 -35
  122. package/lib/events/index.d.ts +0 -1
  123. package/lib/hotkeys/hotkeys.service.d.ts +0 -17
  124. package/lib/hotkeys/index.d.ts +0 -1
  125. package/lib/translation/index.d.ts +0 -3
  126. package/lib/translation/translation.module.d.ts +0 -7
  127. package/lib/utils/drawing-util.d.ts +0 -17
  128. package/lib/utils/index.d.ts +0 -4
  129. package/lib/utils/object-util.d.ts +0 -4
  130. package/lib/utils/safe.pipe.d.ts +0 -10
  131. package/lib/utils/string-util.d.ts +0 -6
@@ -1,359 +0,0 @@
1
- import { AXDateTime } from "./datetime.class";
2
- export class JalaliCalendar {
3
- constructor() {
4
- this.monthNames = ("فروردین_اردیبهشت_خرداد_تیر_مرداد_شهریور_مهر_آبان_آذر_دی_بهمن_اسفند").split("_");
5
- this.monthShortNames = ("فروردین_اردیبهشت_خرداد_تیر_مرداد_شهریور_مهر_آبان_آذر_دی_بهمن_اسفند").split("_");
6
- this.dayNames = ("شنبه_یکشنبه_دوشنبه_سه شنبه_چهارشنبه_پنج شنبه_جمعه").split("_");
7
- this.dayShortNames = "ش_ی_د_س_چ_پ_ج".split("_");
8
- }
9
- create(value) {
10
- const a = this.toGregorian(value.year, value.month, value.date);
11
- return new AXDateTime(new Date(a.getFullYear(), a.getMonth(), a.getDate(), value.hours || 0, value.minutes || 0, value.seconds || 0, value.ms || 0), this.name());
12
- }
13
- name() {
14
- return 'jalali';
15
- }
16
- dayOfMonth(date) {
17
- return this.toJalali(date).day;
18
- }
19
- dayOfYear(date) {
20
- const j = this.toJalali(date);
21
- return (j.month <= 6 ? ((j.month - 1) * 31) : ((6 * 31) + (j.month - 7) * 30)) + j.day;
22
- }
23
- dayOfWeek(date) {
24
- return date.getDay() == 6 ? 1 : date.getDay() + 2;
25
- }
26
- weekOfYear(date) {
27
- //TODO : apply jalali
28
- const firstDay = new AXDateTime(date).startOf('year');
29
- return Math.ceil((((date.getTime() - firstDay.date.getTime()) / 86400000) + firstDay.date.getDay() + 1) / 7);
30
- }
31
- year(date) {
32
- return this.toJalali(date).year;
33
- }
34
- monthOfYear(date) {
35
- return this.toJalali(date).month;
36
- }
37
- add(date, unit, amount) {
38
- let value = date.valueOf();
39
- switch (unit) {
40
- case 'second':
41
- value += 1000 * amount;
42
- break;
43
- case 'minute':
44
- value += 60000 * amount;
45
- break;
46
- case 'hour':
47
- value += 3600000 * amount;
48
- break;
49
- case 'month':
50
- {
51
- const v = new Date(value);
52
- let jd = this.dayOfMonth(date);
53
- let jm = this.monthOfYear(date);
54
- let jy = this.year(date);
55
- const nm = (jm + amount);
56
- const ny = (nm % 12) ? Math.floor(nm / 12) : 0;
57
- jy += ny;
58
- jm = nm - (ny * 12);
59
- const vv = this.toGregorian(jy, jm, jd);
60
- v.setFullYear(vv.getFullYear());
61
- v.setMonth(vv.getMonth());
62
- v.setDate(vv.getDate());
63
- value = v.valueOf();
64
- break;
65
- }
66
- case 'week':
67
- value += 7 * 86400000 * amount;
68
- break;
69
- case 'year':
70
- {
71
- // const v = new Date(value);
72
- // v.setFullYear(v.getFullYear() + amount);
73
- // value = v.valueOf();
74
- // break
75
- const v = new Date(value);
76
- let jd = this.dayOfMonth(date);
77
- let jm = this.monthOfYear(date);
78
- let jy = this.year(date);
79
- const vv = this.toGregorian(jy + amount, jm, jd);
80
- v.setFullYear(vv.getFullYear());
81
- v.setMonth(vv.getMonth());
82
- v.setDate(vv.getDate());
83
- value = v.valueOf();
84
- break;
85
- }
86
- case 'day':
87
- default:
88
- value += 86400000 * amount;
89
- }
90
- return new AXDateTime(new Date(value), this.name());
91
- }
92
- set(date, unit, value) {
93
- const clone = new Date(date.valueOf());
94
- const jDate = this.toJalali(clone);
95
- switch (unit) {
96
- case 'second':
97
- clone.setHours(clone.getHours(), clone.getMinutes(), value, clone.getMilliseconds());
98
- break;
99
- case 'minute':
100
- clone.setHours(clone.getHours(), value, clone.getSeconds(), clone.getMilliseconds());
101
- break;
102
- case 'hour':
103
- clone.setHours(value, clone.getMinutes(), clone.getSeconds(), clone.getMilliseconds());
104
- break;
105
- default:
106
- case 'day':
107
- const gDate = this.toGregorian(jDate.year, jDate.month, value);
108
- clone.setDate(gDate.getDate());
109
- break;
110
- case "week":
111
- break;
112
- case "month":
113
- const gDate2 = this.toGregorian(jDate.year, value, jDate.day);
114
- clone.setMonth(gDate2.getMonth());
115
- break;
116
- case "year":
117
- const gDate3 = this.toGregorian(value, jDate.month, jDate.day);
118
- clone.setFullYear(gDate3.getFullYear());
119
- break;
120
- }
121
- return new AXDateTime(clone, this.name());
122
- }
123
- startOf(date, unit) {
124
- const clone = new Date(date.valueOf());
125
- switch (unit) {
126
- case 'second':
127
- clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 0);
128
- return new AXDateTime(clone, this.name());
129
- case 'minute':
130
- clone.setHours(clone.getHours(), clone.getMinutes(), 0, 0);
131
- return new AXDateTime(clone, this.name());
132
- case 'hour':
133
- clone.setHours(clone.getHours(), 0, 0, 0);
134
- return new AXDateTime(clone, this.name());
135
- default:
136
- case 'day':
137
- clone.setHours(0, 0, 0, 0);
138
- return new AXDateTime(clone, this.name());
139
- case "week":
140
- return new AXDateTime(clone, this.name()).add('day', -this.dayOfWeek(clone) + 1).startOf('day');
141
- case "month":
142
- {
143
- const jy = this.year(date);
144
- const jm = this.monthOfYear(date);
145
- const gDate = this.toGregorian(jy, jm, 1);
146
- return new AXDateTime(gDate, this.name()).startOf('day');
147
- }
148
- case "year":
149
- {
150
- const jy = this.year(date);
151
- const gDate = this.toGregorian(jy, 1, 1);
152
- return new AXDateTime(gDate, this.name()).startOf('day');
153
- }
154
- }
155
- }
156
- endOf(date, unit) {
157
- const clone = new Date(date.valueOf());
158
- switch (unit) {
159
- case 'second':
160
- clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 999);
161
- return new AXDateTime(clone, this.name());
162
- case 'minute':
163
- clone.setHours(clone.getHours(), clone.getMinutes(), 59, 999);
164
- return new AXDateTime(clone, this.name());
165
- case 'hour':
166
- clone.setHours(clone.getHours(), 59, 59, 999);
167
- return new AXDateTime(clone, this.name());
168
- default:
169
- case 'day':
170
- clone.setHours(23, 59, 59, 999);
171
- return new AXDateTime(clone, this.name());
172
- case 'week':
173
- {
174
- return this.startOf(date, 'week').add('day', 6).endOf('day');
175
- }
176
- case 'month':
177
- {
178
- const jy = this.year(date);
179
- const jm = this.monthOfYear(date);
180
- const jd = this.monthLength(jy, jm);
181
- const gDate = this.toGregorian(jy, jm, jd);
182
- return new AXDateTime(gDate, this.name()).endOf('day');
183
- }
184
- case "year":
185
- let jy = this.year(date);
186
- const gDate = this.toGregorian(jy, 12, this.monthLength(jy, 12));
187
- return new AXDateTime(gDate, this.name()).endOf('day');
188
- }
189
- }
190
- toJalali(date) {
191
- const gy = date.getFullYear();
192
- const gm = date.getMonth() + 1;
193
- const gd = date.getDate();
194
- const r = this.d2j(this.g2d(gy, gm, gd));
195
- return {
196
- year: r.jy,
197
- month: r.jm,
198
- day: r.jd,
199
- };
200
- }
201
- /*
202
- Converts a Jalaali date to Gregorian.
203
- */
204
- toGregorian(jy, jm, jd) {
205
- const g = this.d2g(this.j2d(jy, jm, jd));
206
- return new Date(g.gy, g.gm - 1, g.gd);
207
- }
208
- /*
209
- Checks whether a Jalaali date is valid or not.
210
- */
211
- isValid(jy, jm, jd) {
212
- return jy >= -61 && jy <= 3177 &&
213
- jm >= 1 && jm <= 12 &&
214
- jd >= 1 && jd <= this.monthLength(jy, jm);
215
- }
216
- /*
217
- Is this a leap year or not?
218
- */
219
- isLeapYear(jy) {
220
- return this.jalCal(jy).leap === 0;
221
- }
222
- /*
223
- Number of days in a given month in a Jalaali year.
224
- */
225
- monthLength(jy, jm) {
226
- if (jm <= 6)
227
- return 31;
228
- if (jm <= 11)
229
- return 30;
230
- if (this.isLeapYear(jy))
231
- return 30;
232
- return 29;
233
- }
234
- jalCal(jy) {
235
- // Jalaali years starting the 33-year rule.
236
- let breaks = [-61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210,
237
- 1635, 2060, 2097, 2192, 2262, 2324, 2394, 2456, 3178
238
- ], bl = breaks.length, gy = jy + 621, leapJ = -14, jp = breaks[0], jm, jump, leap, leapG, march, n, i;
239
- if (jy < jp || jy >= breaks[bl - 1])
240
- throw new Error('Invalid Jalaali year ' + jy);
241
- // Find the limiting years for the Jalaali year jy.
242
- for (i = 1; i < bl; i += 1) {
243
- jm = breaks[i];
244
- jump = jm - jp;
245
- if (jy < jm)
246
- break;
247
- leapJ = leapJ + this.div(jump, 33) * 8 + this.div(this.mod(jump, 33), 4);
248
- jp = jm;
249
- }
250
- n = jy - jp;
251
- // Find the number of leap years from AD 621 to the beginning
252
- // of the current Jalaali year in the Persian calendar.
253
- leapJ = leapJ + this.div(n, 33) * 8 + this.div(this.mod(n, 33) + 3, 4);
254
- if (this.mod(jump, 33) === 4 && jump - n === 4)
255
- leapJ += 1;
256
- // And the same in the Gregorian calendar (until the year gy).
257
- leapG = this.div(gy, 4) - this.div((this.div(gy, 100) + 1) * 3, 4) - 150;
258
- // Determine the Gregorian date of Farvardin the 1st.
259
- march = 20 + leapJ - leapG;
260
- // Find how many years have passed since the last leap year.
261
- if (jump - n < 6)
262
- n = n - jump + this.div(jump + 4, 33) * 33;
263
- leap = this.mod(this.mod(n + 1, 33) - 1, 4);
264
- if (leap === -1) {
265
- leap = 4;
266
- }
267
- return {
268
- leap: leap,
269
- gy: gy,
270
- march: march
271
- };
272
- }
273
- /*
274
- Converts a date of the Jalaali calendar to the Julian Day number.
275
- @param jy Jalaali year (1 to 3100)
276
- @param jm Jalaali month (1 to 12)
277
- @param jd Jalaali day (1 to 29/31)
278
- @return Julian Day number
279
- */
280
- j2d(jy, jm, jd) {
281
- let r = this.jalCal(jy);
282
- return this.g2d(r.gy, 3, r.march) + (jm - 1) * 31 - this.div(jm, 7) * (jm - 7) + jd - 1;
283
- }
284
- /*
285
- Converts the Julian Day number to a date in the Jalaali calendar.
286
- @param jdn Julian Day number
287
- @return
288
- jy: Jalaali year (1 to 3100)
289
- jm: Jalaali month (1 to 12)
290
- jd: Jalaali day (1 to 29/31)
291
- */
292
- d2j(jdn) {
293
- let gy = this.d2g(jdn).gy // Calculate Gregorian year (gy).
294
- , jy = gy - 621, r = this.jalCal(jy), jdn1f = this.g2d(gy, 3, r.march), jd, jm, k;
295
- // Find number of days that passed since 1 Farvardin.
296
- k = jdn - jdn1f;
297
- if (k >= 0) {
298
- if (k <= 185) {
299
- // The first 6 months.
300
- jm = 1 + this.div(k, 31);
301
- jd = this.mod(k, 31) + 1;
302
- return {
303
- jy: jy,
304
- jm: jm,
305
- jd: jd
306
- };
307
- }
308
- else {
309
- // The remaining months.
310
- k -= 186;
311
- }
312
- }
313
- else {
314
- // Previous Jalaali year.
315
- jy -= 1;
316
- k += 179;
317
- if (r.leap === 1)
318
- k += 1;
319
- }
320
- jm = 7 + this.div(k, 30);
321
- jd = this.mod(k, 30) + 1;
322
- return {
323
- jy: jy,
324
- jm: jm,
325
- jd: jd
326
- };
327
- }
328
- g2d(gy, gm, gd) {
329
- let d = this.div((gy + this.div(gm - 8, 6) + 100100) * 1461, 4)
330
- + this.div(153 * this.mod(gm + 9, 12) + 2, 5)
331
- + gd - 34840408;
332
- d = d - this.div(this.div(gy + 100100 + this.div(gm - 8, 6), 100) * 3, 4) + 752;
333
- return d;
334
- }
335
- d2g(jdn) {
336
- let j, i, gd, gm, gy;
337
- j = 4 * jdn + 139361631;
338
- j = j + this.div(this.div(4 * jdn + 183187720, 146097) * 3, 4) * 4 - 3908;
339
- i = this.div(this.mod(j, 1461), 4) * 5 + 308;
340
- gd = this.div(this.mod(i, 153), 5) + 1;
341
- gm = this.mod(this.div(i, 153), 12) + 1;
342
- gy = this.div(j, 1461) - 100100 + this.div(8 - gm, 6);
343
- return {
344
- gy: gy,
345
- gm: gm,
346
- gd: gd
347
- };
348
- }
349
- /*
350
- Utility helper functions.
351
- */
352
- div(a, b) {
353
- return ~~(a / b);
354
- }
355
- mod(a, b) {
356
- return a - ~~(a / b) * b;
357
- }
358
- }
359
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamFsYWxpLmNhbGVuZGFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvcmUvc3JjL2xpYi9kYXRlVGltZS9qYWxhbGkuY2FsZW5kYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBeUIsTUFBTSxrQkFBa0IsQ0FBQztBQUVqRixNQUFNLE9BQU8sY0FBYztJQUEzQjtRQUVJLGVBQVUsR0FBRyxDQUFDLG9FQUFvRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRS9GLG9CQUFlLEdBQUcsQ0FBQyxvRUFBb0UsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVwRyxhQUFRLEdBQUcsQ0FBQyxtREFBbUQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUU1RSxrQkFBYSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFxWi9DLENBQUM7SUFsWkcsTUFBTSxDQUFDLEtBQWtCO1FBQ3JCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoRSxPQUFPLElBQUksVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssQ0FBQyxLQUFLLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxPQUFPLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxPQUFPLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdEssQ0FB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SUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQ3RFLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQztZQUMxQyxLQUFLLElBQUksQ0FBQyxDQUFBO1FBRWQsOERBQThEO1FBQzlELEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQTtRQUV4RSxxREFBcUQ7UUFDckQsS0FBSyxHQUFHLEVBQUUsR0FBRyxLQUFLLEdBQUcsS0FBSyxDQUFBO1FBRTFCLDREQUE0RDtRQUM1RCxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQztZQUNaLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUE7UUFDOUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUMzQyxJQUFJLElBQUksS0FBSyxDQUFDLENBQUMsRUFBRTtZQUNiLElBQUksR0FBRyxDQUFDLENBQUE7U0FDWDtRQUVELE9BQU87WUFDSCxJQUFJLEVBQUUsSUFBSTtZQUNSLEVBQUUsRUFBRSxFQUFFO1lBQ04sS0FBSyxFQUFFLEtBQUs7U0FDakIsQ0FBQTtJQUNMLENBQUM7SUFFRDs7Ozs7O01BTUU7SUFDTSxHQUFHLENBQUMsRUFBRSxFQUFF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QUFFLEVBQUU7WUFDTixFQUFFLEVBQUUsRUFBRTtTQUNYLENBQUE7SUFDTCxDQUFDO0lBRUQ7O01BRUU7SUFDTSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDWixPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUNwQixDQUFDO0lBRU8sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUM1QixDQUFDO0NBRUoiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWENhbGVuZGFyLCBBWERhdGVUaW1lLCBBWERhdGVWYWx1ZSwgVGltZVVuaXQgfSBmcm9tIFwiLi9kYXRldGltZS5jbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEphbGFsaUNhbGVuZGFyIGltcGxlbWVudHMgQVhDYWxlbmRhciB7XHJcblxyXG4gICAgbW9udGhOYW1lcyA9IChcItmB2LHZiNix2K/bjNmGX9in2LHYr9uM2KjZh9i02Kpf2K7Ysdiv2KfYr1/YqtuM2LFf2YXYsdiv2KfYr1/YtNmH2LHbjNmI2LFf2YXZh9ixX9ii2KjYp9mGX9ii2LDYsV/Yr9uMX9io2YfZhdmGX9in2LPZgdmG2K9cIikuc3BsaXQoXCJfXCIpO1xyXG5cclxuICAgIG1vbnRoU2hvcnROYW1lcyA9IChcItmB2LHZiNix2K/bjNmGX9in2LHYr9uM2KjZh9i02Kpf2K7Ysdiv2KfYr1/YqtuM2LFf2YXYsdiv2KfYr1/YtNmH2LHbjNmI2LFf2YXZh9ixX9ii2KjYp9mGX9ii2LDYsV/Yr9uMX9io2YfZhdmGX9in2LPZgdmG2K9cIikuc3BsaXQoXCJfXCIpO1xyXG5cclxuICAgIGRheU5hbWVzID0gKFwi2LTZhtio2Ydf24zaqdi02YbYqNmHX9iv2YjYtNmG2KjZh1/Ys9mHINi02YbYqNmHX9qG2YfYp9ix2LTZhtio2Ydf2b7ZhtisINi02YbYqNmHX9is2YXYudmHXCIpLnNwbGl0KFwiX1wiKTtcclxuXHJcbiAgICBkYXlTaG9ydE5hbWVzID0gXCLYtF/bjF/Yr1/Ys1/ahl/Zvl/YrFwiLnNwbGl0KFwiX1wiKTtcclxuXHJcblxyXG4gICAgY3JlYXRlKHZhbHVlOiBBWERhdGVWYWx1ZSk6IEFYRGF0ZVRpbWUge1xyXG4gICAgICAgIGNvbnN0IGEgPSB0aGlzLnRvR3JlZ29yaWFuKHZhbHVlLnllYXIsIHZhbHVlLm1vbnRoLCB2YWx1ZS5kYXRlKTtcclxuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUobmV3IERhdGUoYS5nZXRGdWxsWWVhcigpLCBhLmdldE1vbnRoKCksIGEuZ2V0RGF0ZSgpLCB2YWx1ZS5ob3VycyB8fCAwLCB2YWx1ZS5taW51dGVzIHx8IDAsIHZhbHVlLnNlY29uZHMgfHwgMCwgdmFsdWUubXMgfHwgMCksIHRoaXMubmFtZSgpKTtcclxuICAgIH1cclxuXHJcbiAgICBuYW1lKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuICdqYWxhbGknXHJcbiAgICB9XHJcblxyXG4gICAgZGF5T2ZNb250aChkYXRlOiBEYXRlKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy50b0phbGFsaShkYXRlKS5kYXk7XHJcbiAgICB9XHJcblxyXG4gICAgZGF5T2ZZZWFyKGRhdGU6IERhdGUpOiBudW1iZXIge1xyXG4gICAgICAgIGNvbnN0IGogPSB0aGlzLnRvSmFsYWxpKGRhdGUpO1xyXG4gICAgICAgIHJldHVybiAoai5tb250aCA8PSA2ID8gKChqLm1vbnRoIC0gMSkgKiAzMSkgOiAoKDYgKiAzMSkgKyAoai5tb250aCAtIDcpICogMzApKSArIGouZGF5O1xyXG4gICAgfVxyXG5cclxuICAgIGRheU9mV2VlayhkYXRlOiBEYXRlKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gZGF0ZS5nZXREYXkoKSA9PSA2ID8gMSA6IGRhdGUuZ2V0RGF5KCkgKyAyO1xyXG4gICAgfVxyXG5cclxuICAgIHdlZWtPZlllYXIoZGF0ZTogRGF0ZSk6IG51bWJlciB7XHJcbiAgICAgICAgLy9UT0RPIDogYXBwbHkgamFsYWxpXHJcbiAgICAgICAgY29uc3QgZmlyc3REYXkgPSBuZXcgQVhEYXRlVGltZShkYXRlKS5zdGFydE9mKCd5ZWFyJyk7XHJcbiAgICAgICAgcmV0dXJuIE1hdGguY2VpbCgoKChkYXRlLmdldFRpbWUoKSAtIGZpcnN0RGF5LmRhdGUuZ2V0VGltZSgpKSAvIDg2NDAwMDAwKSArIGZpcnN0RGF5LmRhdGUuZ2V0RGF5KCkgKyAxKSAvIDcpO1xyXG4gICAgfVxyXG5cclxuICAgIHllYXIoZGF0ZTogRGF0ZSk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG9KYWxhbGkoZGF0ZSkueWVhcjtcclxuICAgIH1cclxuXHJcbiAgICBtb250aE9mWWVhcihkYXRlOiBEYXRlKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy50b0phbGFsaShkYXRlKS5tb250aDtcclxuICAgIH1cclxuXHJcblxyXG4gICAgYWRkKGRhdGU6IERhdGUsIHVuaXQ6IFRpbWVVbml0LCBhbW91bnQ6IG51bWJlcik6IEFYRGF0ZVRpbWUge1xyXG4gICAgICAgIGxldCB2YWx1ZSA9IGRhdGUudmFsdWVPZigpO1xyXG4gICAgICAgIHN3aXRjaCAodW5pdCkge1xyXG4gICAgICAgICAgICBjYXNlICdzZWNvbmQnOlxyXG4gICAgICAgICAgICAgICAgdmFsdWUgKz0gMTAwMCAqIGFtb3VudDtcclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIGNhc2UgJ21pbnV0ZSc6XHJcbiAgICAgICAgICAgICAgICB2YWx1ZSArPSA2MDAwMCAqIGFtb3VudDtcclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIGNhc2UgJ2hvdXInOlxyXG4gICAgICAgICAgICAgICAgdmFsdWUgKz0gMzYwMDAwMCAqIGFtb3VudDtcclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIGNhc2UgJ21vbnRoJzpcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB2ID0gbmV3IERhdGUodmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBqZCA9IHRoaXMuZGF5T2ZNb250aChkYXRlKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgam0gPSB0aGlzLm1vbnRoT2ZZZWFyKGRhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBqeSA9IHRoaXMueWVhcihkYXRlKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBubSA9IChqbSArIGFtb3VudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbnkgPSAobm0gJSAxMikgPyBNYXRoLmZsb29yKG5tIC8gMTIpIDogMDtcclxuICAgICAgICAgICAgICAgICAgICBqeSArPSBueTtcclxuICAgICAgICAgICAgICAgICAgICBqbSA9IG5tIC0gKG55ICogMTIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZ2ID0gdGhpcy50b0dyZWdvcmlhbihqeSwgam0sIGpkKTtcclxuICAgICAgICAgICAgICAgICAgICB2LnNldEZ1bGxZZWFyKHZ2LmdldEZ1bGxZZWFyKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIHYuc2V0TW9udGgodnYuZ2V0TW9udGgoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdi5zZXREYXRlKHZ2LmdldERhdGUoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2LnZhbHVlT2YoKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlICd3ZWVrJzpcclxuICAgICAgICAgICAgICAgIHZhbHVlICs9IDcgKiA4NjQwMDAwMCAqIGFtb3VudDtcclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIGNhc2UgJ3llYXInOlxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0IHYgPSBuZXcgRGF0ZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdi5zZXRGdWxsWWVhcih2LmdldEZ1bGxZZWFyKCkgKyBhbW91bnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlID0gdi52YWx1ZU9mKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gYnJlYWtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB2ID0gbmV3IERhdGUodmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBqZCA9IHRoaXMuZGF5T2ZNb250aChkYXRlKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgam0gPSB0aGlzLm1vbnRoT2ZZZWFyKGRhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBqeSA9IHRoaXMueWVhcihkYXRlKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB2diA9IHRoaXMudG9HcmVnb3JpYW4oankgKyBhbW91bnQsIGptLCBqZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdi5zZXRGdWxsWWVhcih2di5nZXRGdWxsWWVhcigpKTtcclxuICAgICAgICAgICAgICAgICAgICB2LnNldE1vbnRoKHZ2LmdldE1vbnRoKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIHYuc2V0RGF0ZSh2di5nZXREYXRlKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdi52YWx1ZU9mKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSAnZGF5JzpcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHZhbHVlICs9IDg2NDAwMDAwICogYW1vdW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUobmV3IERhdGUodmFsdWUpLCB0aGlzLm5hbWUoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0KGRhdGU6IERhdGUsIHVuaXQ6IFRpbWVVbml0LCB2YWx1ZTogbnVtYmVyKTogQVhEYXRlVGltZSB7XHJcbiAgICAgICAgY29uc3QgY2xvbmUgPSBuZXcgRGF0ZShkYXRlLnZhbHVlT2YoKSk7XHJcbiAgICAgICAgY29uc3QgakRhdGUgPSB0aGlzLnRvSmFsYWxpKGNsb25lKTtcclxuICAgICAgICBzd2l0Y2ggKHVuaXQpIHtcclxuICAgICAgICAgICAgY2FzZSAnc2Vjb25kJzpcclxuICAgICAgICAgICAgICAgIGNsb25lLnNldEhvdXJzKGNsb25lLmdldEhvdXJzKCksIGNsb25lLmdldE1pbnV0ZXMoKSwgdmFsdWUsIGNsb25lLmdldE1pbGxpc2Vjb25kcygpKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdtaW51dGUnOlxyXG4gICAgICAgICAgICAgICAgY2xvbmUuc2V0SG91cnMoY2xvbmUuZ2V0SG91cnMoKSwgdmFsdWUsIGNsb25lLmdldFNlY29uZHMoKSwgY2xvbmUuZ2V0TWlsbGlzZWNvbmRzKCkpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ2hvdXInOlxyXG4gICAgICAgICAgICAgICAgY2xvbmUuc2V0SG91cnModmFsdWUsIGNsb25lLmdldE1pbnV0ZXMoKSwgY2xvbmUuZ2V0U2Vjb25kcygpLCBjbG9uZS5nZXRNaWxsaXNlY29uZHMoKSk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgY2FzZSAnZGF5JzpcclxuICAgICAgICAgICAgICAgIGNvbnN0IGdEYXRlID0gdGhpcy50b0dyZWdvcmlhbihqRGF0ZS55ZWFyLCBqRGF0ZS5tb250aCwgdmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgY2xvbmUuc2V0RGF0ZShnRGF0ZS5nZXREYXRlKCkpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJ3ZWVrXCI6XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcIm1vbnRoXCI6XHJcbiAgICAgICAgICAgICAgICBjb25zdCBnRGF0ZTIgPSB0aGlzLnRvR3JlZ29yaWFuKGpEYXRlLnllYXIsIHZhbHVlLCBqRGF0ZS5kYXkpO1xyXG4gICAgICAgICAgICAgICAgY2xvbmUuc2V0TW9udGgoZ0RhdGUyLmdldE1vbnRoKCkpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJ5ZWFyXCI6XHJcbiAgICAgICAgICAgICAgICBjb25zdCBnRGF0ZTMgPSB0aGlzLnRvR3JlZ29yaWFuKHZhbHVlLCBqRGF0ZS5tb250aCwgakRhdGUuZGF5KTtcclxuICAgICAgICAgICAgICAgIGNsb25lLnNldEZ1bGxZZWFyKGdEYXRlMy5nZXRGdWxsWWVhcigpKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMubmFtZSgpKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydE9mKGRhdGU6IERhdGUsIHVuaXQ6IFRpbWVVbml0KTogQVhEYXRlVGltZSB7XHJcbiAgICAgICAgY29uc3QgY2xvbmUgPSBuZXcgRGF0ZShkYXRlLnZhbHVlT2YoKSk7XHJcbiAgICAgICAgc3dpdGNoICh1bml0KSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ3NlY29uZCc6XHJcbiAgICAgICAgICAgICAgICBjbG9uZS5zZXRIb3VycyhjbG9uZS5nZXRIb3VycygpLCBjbG9uZS5nZXRNaW51dGVzKCksIGNsb25lLmdldFNlY29uZHMoKSwgMCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMubmFtZSgpKTtcclxuICAgICAgICAgICAgY2FzZSAnbWludXRlJzpcclxuICAgICAgICAgICAgICAgIGNsb25lLnNldEhvdXJzKGNsb25lLmdldEhvdXJzKCksIGNsb25lLmdldE1pbnV0ZXMoKSwgMCwgMCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMubmFtZSgpKTtcclxuICAgICAgICAgICAgY2FzZSAnaG91cic6XHJcbiAgICAgICAgICAgICAgICBjbG9uZS5zZXRIb3VycyhjbG9uZS5nZXRIb3VycygpLCAwLCAwLCAwKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcy5uYW1lKCkpO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICBjYXNlICdkYXknOlxyXG4gICAgICAgICAgICAgICAgY2xvbmUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMubmFtZSgpKTtcclxuICAgICAgICAgICAgY2FzZSBcIndlZWtcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcy5uYW1lKCkpLmFkZCgnZGF5JywgLXRoaXMuZGF5T2ZXZWVrKGNsb25lKSArIDEpLnN0YXJ0T2YoJ2RheScpO1xyXG4gICAgICAgICAgICBjYXNlIFwibW9udGhcIjpcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBqeSA9IHRoaXMueWVhcihkYXRlKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBqbSA9IHRoaXMubW9udGhPZlllYXIoZGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ0RhdGUgPSB0aGlzLnRvR3JlZ29yaWFuKGp5LCBqbSwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGdEYXRlLCB0aGlzLm5hbWUoKSkuc3RhcnRPZignZGF5Jyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgXCJ5ZWFyXCI6XHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgankgPSB0aGlzLnllYXIoZGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ0RhdGUgPSB0aGlzLnRvR3JlZ29yaWFuKGp5LCAxLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoZ0RhdGUsIHRoaXMubmFtZSgpKS5zdGFydE9mKCdkYXknKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZW5kT2YoZGF0ZTogRGF0ZSwgdW5pdDogVGltZVVuaXQpOiBBWERhdGVUaW1lIHtcclxuICAgICAgICBjb25zdCBjbG9uZSA9IG5ldyBEYXRlKGRhdGUudmFsdWVPZigpKTtcclxuICAgICAgICBzd2l0Y2ggKHVuaXQpIHtcclxuICAgICAgICAgICAgY2FzZSAnc2Vjb25kJzpcclxuICAgICAgICAgICAgICAgIGNsb25lLnNldEhvdXJzKGNsb25lLmdldEhvdXJzKCksIGNsb25lLmdldE1pbnV0ZXMoKSwgY2xvbmUuZ2V0U2Vjb25kcygpLCA5OTkpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGNsb25lLCB0aGlzLm5hbWUoKSk7XHJcbiAgICAgICAgICAgIGNhc2UgJ21pbnV0ZSc6XHJcbiAgICAgICAgICAgICAgICBjbG9uZS5zZXRIb3VycyhjbG9uZS5nZXRIb3VycygpLCBjbG9uZS5nZXRNaW51dGVzKCksIDU5LCA5OTkpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGNsb25lLCB0aGlzLm5hbWUoKSk7XHJcbiAgICAgICAgICAgIGNhc2UgJ2hvdXInOlxyXG4gICAgICAgICAgICAgICAgY2xvbmUuc2V0SG91cnMoY2xvbmUuZ2V0SG91cnMoKSwgNTksIDU5LCA5OTkpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGNsb25lLCB0aGlzLm5hbWUoKSk7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGNhc2UgJ2RheSc6XHJcbiAgICAgICAgICAgICAgICBjbG9uZS5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGNsb25lLCB0aGlzLm5hbWUoKSk7XHJcbiAgICAgICAgICAgIGNhc2UgJ3dlZWsnOlxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN0YXJ0T2YoZGF0ZSwgJ3dlZWsnKS5hZGQoJ2RheScsIDYpLmVuZE9mKCdkYXknKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSAnbW9udGgnOlxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGp5ID0gdGhpcy55ZWFyKGRhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGptID0gdGhpcy5tb250aE9mWWVhcihkYXRlKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBqZCA9IHRoaXMubW9udGhMZW5ndGgoanksIGptKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBnRGF0ZSA9IHRoaXMudG9HcmVnb3JpYW4oanksIGptLCBqZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGdEYXRlLCB0aGlzLm5hbWUoKSkuZW5kT2YoJ2RheScpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlIFwieWVhclwiOlxyXG4gICAgICAgICAgICAgICAgbGV0IGp5ID0gdGhpcy55ZWFyKGRhdGUpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZ0RhdGUgPSB0aGlzLnRvR3JlZ29yaWFuKGp5LCAxMiwgdGhpcy5tb250aExlbmd0aChqeSwgMTIpKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShnRGF0ZSwgdGhpcy5uYW1lKCkpLmVuZE9mKCdkYXknKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICB0b0phbGFsaShkYXRlOiBEYXRlKTogeyB5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRheTogbnVtYmVyIH0ge1xyXG4gICAgICAgIGNvbnN0IGd5ID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgICAgIGNvbnN0IGdtID0gZGF0ZS5nZXRNb250aCgpICsgMTtcclxuICAgICAgICBjb25zdCBnZCA9IGRhdGUuZ2V0RGF0ZSgpO1xyXG4gICAgICAgIGNvbnN0IHIgPSB0aGlzLmQyaih0aGlzLmcyZChneSwgZ20sIGdkKSlcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB5ZWFyOiByLmp5LFxyXG4gICAgICAgICAgICBtb250aDogci5qbSxcclxuICAgICAgICAgICAgZGF5OiByLmpkLFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKlxyXG4gICAgICBDb252ZXJ0cyBhIEphbGFhbGkgZGF0ZSB0byBHcmVnb3JpYW4uXHJcbiAgICAqL1xyXG4gICAgdG9HcmVnb3JpYW4oanksIGptLCBqZCkge1xyXG4gICAgICAgIGNvbnN0IGcgPSB0aGlzLmQyZyh0aGlzLmoyZChqeSwgam0sIGpkKSlcclxuICAgICAgICByZXR1cm4gbmV3IERhdGUoZy5neSwgZy5nbSAtIDEsIGcuZ2QpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qXHJcbiAgICAgIENoZWNrcyB3aGV0aGVyIGEgSmFsYWFsaSBkYXRlIGlzIHZhbGlkIG9yIG5vdC5cclxuICAgICovXHJcbiAgICBpc1ZhbGlkKGp5LCBqbSwgamQpIHtcclxuICAgICAgICByZXR1cm4gankgPj0gLTYxICYmIGp5IDw9IDMxNzcgJiZcclxuICAgICAgICAgICAgam0gPj0gMSAmJiBqbSA8PSAxMiAmJlxyXG4gICAgICAgICAgICBqZCA+PSAxICYmIGpkIDw9IHRoaXMubW9udGhMZW5ndGgoanksIGptKVxyXG4gICAgfVxyXG5cclxuICAgIC8qXHJcbiAgICAgIElzIHRoaXMgYSBsZWFwIHllYXIgb3Igbm90P1xyXG4gICAgKi9cclxuICAgIGlzTGVhcFllYXIoankpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5qYWxDYWwoankpLmxlYXAgPT09IDBcclxuICAgIH1cclxuXHJcbiAgICAvKlxyXG4gICAgICBOdW1iZXIgb2YgZGF5cyBpbiBhIGdpdmVuIG1vbnRoIGluIGEgSmFsYWFsaSB5ZWFyLlxyXG4gICAgKi9cclxuICAgIG1vbnRoTGVuZ3RoKGp5LCBqbSkge1xyXG4gICAgICAgIGlmIChqbSA8PSA2KSByZXR1cm4gMzFcclxuICAgICAgICBpZiAoam0gPD0gMTEpIHJldHVybiAzMFxyXG4gICAgICAgIGlmICh0aGlzLmlzTGVhcFllYXIoankpKSByZXR1cm4gMzBcclxuICAgICAgICByZXR1cm4gMjlcclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJpdmF0ZSBqYWxDYWwoankpIHtcclxuICAgICAgICAvLyBKYWxhYWxpIHllYXJzIHN0YXJ0aW5nIHRoZSAzMy15ZWFyIHJ1bGUuXHJcbiAgICAgICAgbGV0IGJyZWFrcyA9IFstNjEsIDksIDM4LCAxOTksIDQyNiwgNjg2LCA3NTYsIDgxOCwgMTExMSwgMTE4MSwgMTIxMFxyXG4gICAgICAgICAgICAsIDE2MzUsIDIwNjAsIDIwOTcsIDIxOTIsIDIyNjIsIDIzMjQsIDIzOTQsIDI0NTYsIDMxNzhcclxuICAgICAgICBdXHJcbiAgICAgICAgICAgICwgYmwgPSBicmVha3MubGVuZ3RoXHJcbiAgICAgICAgICAgICwgZ3kgPSBqeSArIDYyMVxyXG4gICAgICAgICAgICAsIGxlYXBKID0gLTE0XHJcbiAgICAgICAgICAgICwganAgPSBicmVha3NbMF1cclxuICAgICAgICAgICAgLCBqbVxyXG4gICAgICAgICAgICAsIGp1bXBcclxuICAgICAgICAgICAgLCBsZWFwXHJcbiAgICAgICAgICAgICwgbGVhcEdcclxuICAgICAgICAgICAgLCBtYXJjaFxyXG4gICAgICAgICAgICAsIG5cclxuICAgICAgICAgICAgLCBpXHJcblxyXG4gICAgICAgIGlmIChqeSA8IGpwIHx8IGp5ID49IGJyZWFrc1tibCAtIDFdKVxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgSmFsYWFsaSB5ZWFyICcgKyBqeSlcclxuXHJcbiAgICAgICAgLy8gRmluZCB0aGUgbGltaXRpbmcgeWVhcnMgZm9yIHRoZSBKYWxhYWxpIHllYXIgankuXHJcbiAgICAgICAgZm9yIChpID0gMTsgaSA8IGJsOyBpICs9IDEpIHtcclxuICAgICAgICAgICAgam0gPSBicmVha3NbaV1cclxuICAgICAgICAgICAganVtcCA9IGptIC0ganBcclxuICAgICAgICAgICAgaWYgKGp5IDwgam0pXHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICBsZWFwSiA9IGxlYXBKICsgdGhpcy5kaXYoanVtcCwgMzMpICogOCArIHRoaXMuZGl2KHRoaXMubW9kKGp1bXAsIDMzKSwgNClcclxuICAgICAgICAgICAganAgPSBqbVxyXG4gICAgICAgIH1cclxuICAgICAgICBuID0gankgLSBqcFxyXG5cclxuICAgICAgICAvLyBGaW5kIHRoZSBudW1iZXIgb2YgbGVhcCB5ZWFycyBmcm9tIEFEIDYyMSB0byB0aGUgYmVnaW5uaW5nXHJcbiAgICAgICAgLy8gb2YgdGhlIGN1cnJlbnQgSmFsYWFsaSB5ZWFyIGluIHRoZSBQZXJzaWFuIGNhbGVuZGFyLlxyXG4gICAgICAgIGxlYXBKID0gbGVhcEogKyB0aGlzLmRpdihuLCAzMykgKiA4ICsgdGhpcy5kaXYodGhpcy5tb2QobiwgMzMpICsgMywgNClcclxuICAgICAgICBpZiAodGhpcy5tb2QoanVtcCwgMzMpID09PSA0ICYmIGp1bXAgLSBuID09PSA0KVxyXG4gICAgICAgICAgICBsZWFwSiArPSAxXHJcblxyXG4gICAgICAgIC8vIEFuZCB0aGUgc2FtZSBpbiB0aGUgR3JlZ29yaWFuIGNhbGVuZGFyICh1bnRpbCB0aGUgeWVhciBneSkuXHJcbiAgICAgICAgbGVhcEcgPSB0aGlzLmRpdihneSwgNCkgLSB0aGlzLmRpdigodGhpcy5kaXYoZ3ksIDEwMCkgKyAxKSAqIDMsIDQpIC0gMTUwXHJcblxyXG4gICAgICAgIC8vIERldGVybWluZSB0aGUgR3JlZ29yaWFuIGRhdGUgb2YgRmFydmFyZGluIHRoZSAxc3QuXHJcbiAgICAgICAgbWFyY2ggPSAyMCArIGxlYXBKIC0gbGVhcEdcclxuXHJcbiAgICAgICAgLy8gRmluZCBob3cgbWFueSB5ZWFycyBoYXZlIHBhc3NlZCBzaW5jZSB0aGUgbGFzdCBsZWFwIHllYXIuXHJcbiAgICAgICAgaWYgKGp1bXAgLSBuIDwgNilcclxuICAgICAgICAgICAgbiA9IG4gLSBqdW1wICsgdGhpcy5kaXYoanVtcCArIDQsIDMzKSAqIDMzXHJcbiAgICAgICAgbGVhcCA9IHRoaXMubW9kKHRoaXMubW9kKG4gKyAxLCAzMykgLSAxLCA0KVxyXG4gICAgICAgIGlmIChsZWFwID09PSAtMSkge1xyXG4gICAgICAgICAgICBsZWFwID0gNFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgbGVhcDogbGVhcFxyXG4gICAgICAgICAgICAsIGd5OiBneVxyXG4gICAgICAgICAgICAsIG1hcmNoOiBtYXJjaFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKlxyXG4gICAgICBDb252ZXJ0cyBhIGRhdGUgb2YgdGhlIEphbGFhbGkgY2FsZW5kYXIgdG8gdGhlIEp1bGlhbiBEYXkgbnVtYmVyLlxyXG4gICAgICBAcGFyYW0gankgSmFsYWFsaSB5ZWFyICgxIHRvIDMxMDApXHJcbiAgICAgIEBwYXJhbSBqbSBKYWxhYWxpIG1vbnRoICgxIHRvIDEyKVxyXG4gICAgICBAcGFyYW0gamQgSmFsYWFsaSBkYXkgKDEgdG8gMjkvMzEpXHJcbiAgICAgIEByZXR1cm4gSnVsaWFuIERheSBudW1iZXJcclxuICAgICovXHJcbiAgICBwcml2YXRlIGoyZChqeSwgam0sIGpkKSB7XHJcbiAgICAgICAgbGV0IHIgPSB0aGlzLmphbENhbChqeSlcclxuICAgICAgICByZXR1cm4gdGhpcy5nMmQoci5neSwgMywgci5tYXJjaCkgKyAoam0gLSAxKSAqIDMxIC0gdGhpcy5kaXYoam0sIDcpICogKGptIC0gNykgKyBqZCAtIDFcclxuICAgIH1cclxuXHJcbiAgICAvKlxyXG4gICAgICBDb252ZXJ0cyB0aGUgSnVsaWFuIERheSBudW1iZXIgdG8gYSBkYXRlIGluIHRoZSBKYWxhYWxpIGNhbGVuZGFyLlxyXG4gICAgICBAcGFyYW0gamRuIEp1bGlhbiBEYXkgbnVtYmVyXHJcbiAgICAgIEByZXR1cm5cclxuICAgICAgICBqeTogSmFsYWFsaSB5ZWFyICgxIHRvIDMxMDApXHJcbiAgICAgICAgam06IEphbGFhbGkgbW9udGggKDEgdG8gMTIpXHJcbiAgICAgICAgamQ6IEphbGFhbGkgZGF5ICgxIHRvIDI5LzMxKVxyXG4gICAgKi9cclxuICAgIHByaXZhdGUgZDJqKGpkbikge1xyXG4gICAgICAgIGxldCBneSA9IHRoaXMuZDJnKGpkbikuZ3kgLy8gQ2FsY3VsYXRlIEdyZWdvcmlhbiB5ZWFyIChneSkuXHJcbiAgICAgICAgICAgICwgankgPSBneSAtIDYyMVxyXG4gICAgICAgICAgICAsIHIgPSB0aGlzLmphbENhbChqeSlcclxuICAgICAgICAgICAgLCBqZG4xZiA9IHRoaXMuZzJkKGd5LCAzLCByLm1hcmNoKVxyXG4gICAgICAgICAgICAsIGpkXHJcbiAgICAgICAgICAgICwgam1cclxuICAgICAgICAgICAgLCBrXHJcblxyXG4gICAgICAgIC8vIEZpbmQgbnVtYmVyIG9mIGRheXMgdGhhdCBwYXNzZWQgc2luY2UgMSBGYXJ2YXJkaW4uXHJcbiAgICAgICAgayA9IGpkbiAtIGpkbjFmXHJcbiAgICAgICAgaWYgKGsgPj0gMCkge1xyXG4gICAgICAgICAgICBpZiAoayA8PSAxODUpIHtcclxuICAgICAgICAgICAgICAgIC8vIFRoZSBmaXJzdCA2IG1vbnRocy5cclxuICAgICAgICAgICAgICAgIGptID0gMSArIHRoaXMuZGl2KGssIDMxKVxyXG4gICAgICAgICAgICAgICAgamQgPSB0aGlzLm1vZChrLCAzMSkgKyAxXHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGp5OiBqeVxyXG4gICAgICAgICAgICAgICAgICAgICwgam06IGptXHJcbiAgICAgICAgICAgICAgICAgICAgLCBqZDogamRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIFRoZSByZW1haW5pbmcgbW9udGhzLlxyXG4gICAgICAgICAgICAgICAgayAtPSAxODZcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIFByZXZpb3VzIEphbGFhbGkgeWVhci5cclxuICAgICAgICAgICAgankgLT0gMVxyXG4gICAgICAgICAgICBrICs9IDE3OVxyXG4gICAgICAgICAgICBpZiAoci5sZWFwID09PSAxKVxyXG4gICAgICAgICAgICAgICAgayArPSAxXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGptID0gNyArIHRoaXMuZGl2KGssIDMwKVxyXG4gICAgICAgIGpkID0gdGhpcy5tb2QoaywgMzApICsgMVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGp5OiBqeVxyXG4gICAgICAgICAgICAsIGptOiBqbVxyXG4gICAgICAgICAgICAsIGpkOiBqZFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJpdmF0ZSBnMmQoZ3ksIGdtLCBnZCkge1xyXG4gICAgICAgIGxldCBkID0gdGhpcy5kaXYoKGd5ICsgdGhpcy5kaXYoZ20gLSA4LCA2KSArIDEwMDEwMCkgKiAxNDYxLCA0KVxyXG4gICAgICAgICAgICArIHRoaXMuZGl2KDE1MyAqIHRoaXMubW9kKGdtICsgOSwgMTIpICsgMiwgNSlcclxuICAgICAgICAgICAgKyBnZCAtIDM0ODQwNDA4XHJcbiAgICAgICAgZCA9IGQgLSB0aGlzLmRpdih0aGlzLmRpdihneSArIDEwMDEwMCArIHRoaXMuZGl2KGdtIC0gOCwgNiksIDEwMCkgKiAzLCA0KSArIDc1MlxyXG4gICAgICAgIHJldHVybiBkXHJcbiAgICB9XHJcblxyXG5cclxuICAgIHByaXZhdGUgZDJnKGpkbikge1xyXG4gICAgICAgIGxldCBqXHJcbiAgICAgICAgICAgICwgaVxyXG4gICAgICAgICAgICAsIGdkXHJcbiAgICAgICAgICAgICwgZ21cclxuICAgICAgICAgICAgLCBneVxyXG4gICAgICAgIGogPSA0ICogamRuICsgMTM5MzYxNjMxXHJcbiAgICAgICAgaiA9IGogKyB0aGlzLmRpdih0aGlzLmRpdig0ICogamRuICsgMTgzMTg3NzIwLCAxNDYwOTcpICogMywgNCkgKiA0IC0gMzkwOFxyXG4gICAgICAgIGkgPSB0aGlzLmRpdih0aGlzLm1vZChqLCAxNDYxKSwgNCkgKiA1ICsgMzA4XHJcbiAgICAgICAgZ2QgPSB0aGlzLmRpdih0aGlzLm1vZChpLCAxNTMpLCA1KSArIDFcclxuICAgICAgICBnbSA9IHRoaXMubW9kKHRoaXMuZGl2KGksIDE1MyksIDEyKSArIDFcclxuICAgICAgICBneSA9IHRoaXMuZGl2KGosIDE0NjEpIC0gMTAwMTAwICsgdGhpcy5kaXYoOCAtIGdtLCA2KVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGd5OiBneVxyXG4gICAgICAgICAgICAsIGdtOiBnbVxyXG4gICAgICAgICAgICAsIGdkOiBnZFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKlxyXG4gICAgICBVdGlsaXR5IGhlbHBlciBmdW5jdGlvbnMuXHJcbiAgICAqL1xyXG4gICAgcHJpdmF0ZSBkaXYoYSwgYikge1xyXG4gICAgICAgIHJldHVybiB+fihhIC8gYilcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG1vZChhLCBiKSB7XHJcbiAgICAgICAgcmV0dXJuIGEgLSB+fihhIC8gYikgKiBiXHJcbiAgICB9XHJcblxyXG59Il19
@@ -1,36 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class AXEventService {
4
- constructor() {
5
- this.list = [];
6
- }
7
- broadcast(key, options) {
8
- const d = this.list.find(c => c.key === key);
9
- if (d) {
10
- d.events.forEach(c => {
11
- c(options);
12
- });
13
- }
14
- }
15
- on(key, callback) {
16
- let d = this.list.find(c => c.key === key);
17
- if (!d) {
18
- d = { key, events: [] };
19
- this.list.push(d);
20
- }
21
- d.events.push(callback);
22
- }
23
- destroy(key, callback) {
24
- const d = this.list.find(c => c.key === key);
25
- if (d) {
26
- d.events = [];
27
- }
28
- }
29
- }
30
- AXEventService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AXEventService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
31
- AXEventService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AXEventService, providedIn: 'root' });
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AXEventService, decorators: [{
33
- type: Injectable,
34
- args: [{ providedIn: 'root' }]
35
- }] });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb3JlL3NyYy9saWIvZXZlbnRzL2V2ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0MsTUFBTSxPQUFPLGNBQWM7SUFEM0I7UUFFWSxTQUFJLEdBQVUsRUFBRSxDQUFDO0tBMEI1QjtJQXhCVSxTQUFTLENBQUMsR0FBVyxFQUFFLE9BQWE7UUFDdkMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxFQUFFO1lBQ0gsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2pCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNmLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDO0lBRU0sRUFBRSxDQUFDLEdBQVcsRUFBRSxRQUFpQztRQUNwRCxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNKLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDckI7UUFDRCxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRU0sT0FBTyxDQUFDLEdBQVcsRUFBRSxRQUFpQztRQUN6RCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLEVBQUU7WUFDSCxDQUFDLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztTQUNqQjtJQUNMLENBQUM7OzJHQTFCUSxjQUFjOytHQUFkLGNBQWMsY0FERCxNQUFNOzJGQUNuQixjQUFjO2tCQUQxQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBBWEV2ZW50U2VydmljZSB7XHJcbiAgICBwcml2YXRlIGxpc3Q6IGFueVtdID0gW107XHJcblxyXG4gICAgcHVibGljIGJyb2FkY2FzdChrZXk6IHN0cmluZywgb3B0aW9ucz86IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGQgPSB0aGlzLmxpc3QuZmluZChjID0+IGMua2V5ID09PSBrZXkpO1xyXG4gICAgICAgIGlmIChkKSB7XHJcbiAgICAgICAgICAgIGQuZXZlbnRzLmZvckVhY2goYyA9PiB7XHJcbiAgICAgICAgICAgICAgICBjKG9wdGlvbnMpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uKGtleTogc3RyaW5nLCBjYWxsYmFjazogKG9wdGlvbnM/OiBhbnkpID0+IHZvaWQpIHtcclxuICAgICAgICBsZXQgZCA9IHRoaXMubGlzdC5maW5kKGMgPT4gYy5rZXkgPT09IGtleSk7XHJcbiAgICAgICAgaWYgKCFkKSB7XHJcbiAgICAgICAgICAgIGQgPSB7IGtleSwgZXZlbnRzOiBbXSB9O1xyXG4gICAgICAgICAgICB0aGlzLmxpc3QucHVzaChkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZC5ldmVudHMucHVzaChjYWxsYmFjayk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRlc3Ryb3koa2V5OiBzdHJpbmcsIGNhbGxiYWNrOiAob3B0aW9ucz86IGFueSkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGQgPSB0aGlzLmxpc3QuZmluZChjID0+IGMua2V5ID09PSBrZXkpO1xyXG4gICAgICAgIGlmIChkKSB7XHJcbiAgICAgICAgICAgIGQuZXZlbnRzID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -1,2 +0,0 @@
1
- export * from './event.service';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29yZS9zcmMvbGliL2V2ZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9ldmVudC5zZXJ2aWNlJzsiXX0=
@@ -1,37 +0,0 @@
1
- import { DOCUMENT } from "@angular/common";
2
- import { Inject, Injectable } from "@angular/core";
3
- import { Observable } from "rxjs/internal/Observable";
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/platform-browser";
6
- export class AXHotkeysService {
7
- constructor(eventManager, document) {
8
- this.eventManager = eventManager;
9
- this.document = document;
10
- this.defaults = {
11
- element: this.document
12
- };
13
- }
14
- addShortcut(options) {
15
- const merged = { ...this.defaults, ...options };
16
- const event = `keydown.${merged.keys}`;
17
- return new Observable(observer => {
18
- const handler = (e) => {
19
- e.preventDefault();
20
- observer.next(e);
21
- };
22
- const dispose = this.eventManager.addEventListener(merged.element, event, handler);
23
- return () => {
24
- dispose();
25
- };
26
- });
27
- }
28
- }
29
- AXHotkeysService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AXHotkeysService, deps: [{ token: i1.EventManager }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
30
- AXHotkeysService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AXHotkeysService });
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AXHotkeysService, decorators: [{
32
- type: Injectable
33
- }], ctorParameters: function () { return [{ type: i1.EventManager }, { type: Document, decorators: [{
34
- type: Inject,
35
- args: [DOCUMENT]
36
- }] }]; } });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90a2V5cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvcmUvc3JjL2xpYi9ob3RrZXlzL2hvdGtleXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7QUFRdEQsTUFBTSxPQUFPLGdCQUFnQjtJQUt6QixZQUFvQixZQUEwQixFQUNoQixRQUFrQjtRQUQ1QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUNoQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBTGhELGFBQVEsR0FBcUI7WUFDekIsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRO1NBQ3pCLENBQUE7SUFJRCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXlCO1FBQ2pDLE1BQU0sTUFBTSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFDaEQsTUFBTSxLQUFLLEdBQUcsV0FBVyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFdkMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUM3QixNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNsQixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUE7Z0JBQ2xCLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckIsQ0FBQyxDQUFDO1lBRUYsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FDOUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUNqQyxDQUFDO1lBRUYsT0FBTyxHQUFHLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLENBQUM7WUFDZCxDQUFDLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7OzZHQTNCUSxnQkFBZ0IsOENBTWIsUUFBUTtpSEFOWCxnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVTtxRkFPaUMsUUFBUTswQkFBM0MsTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEV2ZW50TWFuYWdlciB9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqcy9pbnRlcm5hbC9PYnNlcnZhYmxlXCI7XHJcblxyXG50eXBlIE9wdGlvbnMgPSB7XHJcbiAgICBlbGVtZW50OiBhbnk7XHJcbiAgICBrZXlzOiBzdHJpbmc7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEFYSG90a2V5c1NlcnZpY2Uge1xyXG4gICAgZGVmYXVsdHM6IFBhcnRpYWw8T3B0aW9ucz4gPSB7XHJcbiAgICAgICAgZWxlbWVudDogdGhpcy5kb2N1bWVudFxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZXZlbnRNYW5hZ2VyOiBFdmVudE1hbmFnZXIsXHJcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQpIHtcclxuICAgIH1cclxuXHJcbiAgICBhZGRTaG9ydGN1dChvcHRpb25zOiBQYXJ0aWFsPE9wdGlvbnM+KSB7XHJcbiAgICAgICAgY29uc3QgbWVyZ2VkID0geyAuLi50aGlzLmRlZmF1bHRzLCAuLi5vcHRpb25zIH07XHJcbiAgICAgICAgY29uc3QgZXZlbnQgPSBga2V5ZG93bi4ke21lcmdlZC5rZXlzfWA7XHJcblxyXG4gICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlciA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZXIgPSAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KGUpO1xyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgY29uc3QgZGlzcG9zZSA9IHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoXHJcbiAgICAgICAgICAgICAgICBtZXJnZWQuZWxlbWVudCwgZXZlbnQsIGhhbmRsZXJcclxuICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBkaXNwb3NlKCk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxufSJdfQ==
@@ -1,2 +0,0 @@
1
- export * from './hotkeys.service';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29yZS9zcmMvbGliL2hvdGtleXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vaG90a2V5cy5zZXJ2aWNlJyJdfQ==
@@ -1,4 +0,0 @@
1
- export * from './translator';
2
- export * from './translator.pipe';
3
- export * from './translation.module';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29yZS9zcmMvbGliL3RyYW5zbGF0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdHJhbnNsYXRvcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vdHJhbnNsYXRvci5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi90cmFuc2xhdGlvbi5tb2R1bGUnOyJdfQ==
@@ -1,18 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { AXTranslatorPipe } from './translator.pipe';
3
- import * as i0 from "@angular/core";
4
- export class AXTranslationModule {
5
- }
6
- AXTranslationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AXTranslationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7
- AXTranslationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AXTranslationModule, declarations: [AXTranslatorPipe], exports: [AXTranslatorPipe] });
8
- AXTranslationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AXTranslationModule, providers: [], imports: [[]] });
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AXTranslationModule, decorators: [{
10
- type: NgModule,
11
- args: [{
12
- imports: [],
13
- exports: [AXTranslatorPipe],
14
- declarations: [AXTranslatorPipe],
15
- providers: [],
16
- }]
17
- }] });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvcmUvc3JjL2xpYi90cmFuc2xhdGlvbi90cmFuc2xhdGlvbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFRckQsTUFBTSxPQUFPLG1CQUFtQjs7Z0hBQW5CLG1CQUFtQjtpSEFBbkIsbUJBQW1CLGlCQUhiLGdCQUFnQixhQURyQixnQkFBZ0I7aUhBSWpCLG1CQUFtQixhQUZqQixFQUFFLFlBSEosRUFBRTsyRkFLRixtQkFBbUI7a0JBTi9CLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLEVBQUU7b0JBQ1gsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQzNCLFlBQVksRUFBRSxDQUFDLGdCQUFnQixDQUFDO29CQUNoQyxTQUFTLEVBQUUsRUFBRTtpQkFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBWFRyYW5zbGF0b3JQaXBlIH0gZnJvbSAnLi90cmFuc2xhdG9yLnBpcGUnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICAgIGltcG9ydHM6IFtdLFxyXG4gICAgZXhwb3J0czogW0FYVHJhbnNsYXRvclBpcGVdLFxyXG4gICAgZGVjbGFyYXRpb25zOiBbQVhUcmFuc2xhdG9yUGlwZV0sXHJcbiAgICBwcm92aWRlcnM6IFtdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQVhUcmFuc2xhdGlvbk1vZHVsZSB7XHJcbiAgXHJcbn1cclxuIl19
@@ -1,42 +0,0 @@
1
- import { Subject } from 'rxjs';
2
- import merge from 'lodash-es/merge';
3
- import _ from 'lodash';
4
- // @dynamic
5
- export class AXTranslator {
6
- static get onChange() {
7
- return AXTranslator.dataChangeSubject.asObservable();
8
- }
9
- static load(lang, value) {
10
- if (typeof value === 'object') {
11
- if (!AXTranslator[`__data__${lang}`]) {
12
- AXTranslator[`__data__${lang}`] = {};
13
- }
14
- AXTranslator[`__data__${lang}`] = merge(AXTranslator[`__data__${lang}`], value);
15
- }
16
- }
17
- static use(lang) {
18
- AXTranslator.lang = lang;
19
- }
20
- static get(key, lang, params) {
21
- lang = lang || AXTranslator.lang;
22
- let result = _.get(AXTranslator[`__data__${lang}`], key, key);
23
- const vars = typeof (result) == 'string' ? result?.match(this._varsRegx) : [];
24
- if (vars?.length) {
25
- vars.forEach(v => {
26
- const varKey = v.match(this._varNameRegx)?.length ? v.match(this._varNameRegx)[0] : null;
27
- if (varKey) {
28
- const p = _.get(params, varKey) || this.get(varKey, lang);
29
- if (p) {
30
- result = result.replace(v, p);
31
- }
32
- }
33
- });
34
- }
35
- return typeof (result) == 'string' ? result : JSON.stringify(result);
36
- }
37
- }
38
- AXTranslator.lang = 'en';
39
- AXTranslator.dataChangeSubject = new Subject();
40
- AXTranslator._varsRegx = /((\$\{[a-zA-Z_0-9\.]+\})+)/gm;
41
- AXTranslator._varNameRegx = /[a-zA-Z_0-9\.]+/gm;
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb3JlL3NyYy9saWIvdHJhbnNsYXRpb24vdHJhbnNsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sS0FBSyxNQUFNLGlCQUFpQixDQUFDO0FBQ3BDLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUV2QixXQUFXO0FBQ1gsTUFBTSxPQUFPLFlBQVk7SUFPckIsTUFBTSxLQUFLLFFBQVE7UUFDZixPQUFPLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6RCxDQUFDO0lBRU0sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFZLEVBQUUsS0FBVTtRQUN2QyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsRUFBRTtnQkFDbEMsWUFBWSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDeEM7WUFDRCxZQUFZLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ25GO0lBQ0wsQ0FBQztJQUVNLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBWTtRQUMxQixZQUFZLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUM3QixDQUFDO0lBRU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFXLEVBQUUsSUFBYSxFQUFFLE1BQVk7UUFDdEQsSUFBSSxHQUFHLElBQUksSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDO1FBQ2pDLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDOUQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM5RSxJQUFJLElBQUksRUFBRSxNQUFNLEVBQUU7WUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNiLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDekYsSUFBSSxNQUFNLEVBQUU7b0JBQ1IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQzFELElBQUksQ0FBQyxFQUFFO3dCQUNILE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztxQkFDakM7aUJBQ0o7WUFDTCxDQUFDLENBQUMsQ0FBQTtTQUNMO1FBQ0QsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekUsQ0FBQzs7QUF2Q2MsaUJBQUksR0FBVyxJQUFJLENBQUM7QUFDcEIsOEJBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztBQUN2QyxzQkFBUyxHQUFHLDhCQUE4QixDQUFDO0FBQzNDLHlCQUFZLEdBQUcsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCBtZXJnZSBmcm9tICdsb2Rhc2gtZXMvbWVyZ2UnO1xyXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xyXG5cclxuLy8gQGR5bmFtaWNcclxuZXhwb3J0IGNsYXNzIEFYVHJhbnNsYXRvciB7XHJcbiAgICBwcml2YXRlIHN0YXRpYyBsYW5nOiBzdHJpbmcgPSAnZW4nO1xyXG4gICAgcHJpdmF0ZSBzdGF0aWMgZGF0YUNoYW5nZVN1YmplY3QgPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcbiAgICBwcml2YXRlIHN0YXRpYyBfdmFyc1JlZ3ggPSAvKChcXCRcXHtbYS16QS1aXzAtOVxcLl0rXFx9KSspL2dtO1xyXG4gICAgcHJpdmF0ZSBzdGF0aWMgX3Zhck5hbWVSZWd4ID0gL1thLXpBLVpfMC05XFwuXSsvZ207XHJcblxyXG5cclxuICAgIHN0YXRpYyBnZXQgb25DaGFuZ2UoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gQVhUcmFuc2xhdG9yLmRhdGFDaGFuZ2VTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgbG9hZChsYW5nOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcclxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgICBpZiAoIUFYVHJhbnNsYXRvcltgX19kYXRhX18ke2xhbmd9YF0pIHtcclxuICAgICAgICAgICAgICAgIEFYVHJhbnNsYXRvcltgX19kYXRhX18ke2xhbmd9YF0gPSB7fTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBBWFRyYW5zbGF0b3JbYF9fZGF0YV9fJHtsYW5nfWBdID0gbWVyZ2UoQVhUcmFuc2xhdG9yW2BfX2RhdGFfXyR7bGFuZ31gXSwgdmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIHVzZShsYW5nOiBzdHJpbmcpIHtcclxuICAgICAgICBBWFRyYW5zbGF0b3IubGFuZyA9IGxhbmc7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBnZXQoa2V5OiBzdHJpbmcsIGxhbmc/OiBzdHJpbmcsIHBhcmFtcz86IGFueSk6IHN0cmluZyB7XHJcbiAgICAgICAgbGFuZyA9IGxhbmcgfHwgQVhUcmFuc2xhdG9yLmxhbmc7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IF8uZ2V0KEFYVHJhbnNsYXRvcltgX19kYXRhX18ke2xhbmd9YF0sIGtleSwga2V5KTtcclxuICAgICAgICBjb25zdCB2YXJzID0gdHlwZW9mIChyZXN1bHQpID09ICdzdHJpbmcnID8gcmVzdWx0Py5tYXRjaCh0aGlzLl92YXJzUmVneCkgOiBbXTtcclxuICAgICAgICBpZiAodmFycz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHZhcnMuZm9yRWFjaCh2ID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZhcktleSA9IHYubWF0Y2godGhpcy5fdmFyTmFtZVJlZ3gpPy5sZW5ndGggPyB2Lm1hdGNoKHRoaXMuX3Zhck5hbWVSZWd4KVswXSA6IG51bGw7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFyS2V5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcCA9IF8uZ2V0KHBhcmFtcywgdmFyS2V5KSB8fCB0aGlzLmdldCh2YXJLZXksIGxhbmcpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKHYsIHApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiAocmVzdWx0KSA9PSAnc3RyaW5nJyA/IHJlc3VsdCA6IEpTT04uc3RyaW5naWZ5KHJlc3VsdCk7XHJcbiAgICB9XHJcbn0iXX0=
@@ -1,15 +0,0 @@
1
- import { Pipe } from '@angular/core';
2
- import { AXTranslator } from './translator';
3
- import * as i0 from "@angular/core";
4
- export class AXTranslatorPipe {
5
- transform(value, lang) {
6
- return AXTranslator.get(value, lang);
7
- }
8
- }
9
- AXTranslatorPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AXTranslatorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
10
- AXTranslatorPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AXTranslatorPipe, name: "trans" });
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AXTranslatorPipe, decorators: [{
12
- type: Pipe,
13
- args: [{ name: 'trans', pure: true }]
14
- }] });
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvcmUvc3JjL2xpYi90cmFuc2xhdGlvbi90cmFuc2xhdG9yLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFHNUMsTUFBTSxPQUFPLGdCQUFnQjtJQUN6QixTQUFTLENBQUMsS0FBYSxFQUFFLElBQWE7UUFDbEMsT0FBTyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDOzs2R0FIUSxnQkFBZ0I7MkdBQWhCLGdCQUFnQjsyRkFBaEIsZ0JBQWdCO2tCQUQ1QixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBWFRyYW5zbGF0b3IgfSBmcm9tICcuL3RyYW5zbGF0b3InO1xyXG5cclxuQFBpcGUoeyBuYW1lOiAndHJhbnMnLCBwdXJlOiB0cnVlIH0pXHJcbmV4cG9ydCBjbGFzcyBBWFRyYW5zbGF0b3JQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcbiAgICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZywgbGFuZz86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIEFYVHJhbnNsYXRvci5nZXQodmFsdWUsIGxhbmcpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==