@acorex/core 7.2.6 → 7.2.8

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 (40) hide show
  1. package/dateTime/lib/jalali.calendar.d.ts +8 -4
  2. package/esm2022/acorex-core.mjs +1 -1
  3. package/esm2022/config/lib/configs.service.mjs +3 -3
  4. package/esm2022/dateTime/lib/datetime.class.mjs +3 -3
  5. package/esm2022/dateTime/lib/datetime.module.mjs +4 -4
  6. package/esm2022/dateTime/lib/datetime.pipe.mjs +3 -3
  7. package/esm2022/dateTime/lib/jalali.calendar.mjs +94 -55
  8. package/esm2022/events/lib/event.service.mjs +3 -3
  9. package/esm2022/file/lib/file.service.mjs +3 -3
  10. package/esm2022/http/lib/http.module.mjs +4 -4
  11. package/esm2022/http/lib/http.service.mjs +3 -3
  12. package/esm2022/image/lib/image.service.mjs +3 -3
  13. package/esm2022/index.mjs +1 -1
  14. package/esm2022/pipes/lib/pipes.module.mjs +4 -4
  15. package/esm2022/pipes/lib/safe.pipe.mjs +3 -3
  16. package/esm2022/platform/lib/platform.service.mjs +3 -3
  17. package/esm2022/translation/lib/translation.module.mjs +4 -4
  18. package/esm2022/translation/lib/translator.mjs +7 -7
  19. package/esm2022/translation/lib/translator.pipe.mjs +3 -3
  20. package/esm2022/utils/index.mjs +2 -1
  21. package/esm2022/utils/lib/auto-unsubscribe.mjs +37 -0
  22. package/esm2022/utils/lib/color-util.mjs +25 -34
  23. package/fesm2022/acorex-core-config.mjs +3 -3
  24. package/fesm2022/acorex-core-dateTime.mjs +102 -63
  25. package/fesm2022/acorex-core-dateTime.mjs.map +1 -1
  26. package/fesm2022/acorex-core-events.mjs +3 -3
  27. package/fesm2022/acorex-core-file.mjs +3 -3
  28. package/fesm2022/acorex-core-http.mjs +7 -7
  29. package/fesm2022/acorex-core-image.mjs +3 -3
  30. package/fesm2022/acorex-core-pipes.mjs +7 -7
  31. package/fesm2022/acorex-core-platform.mjs +3 -3
  32. package/fesm2022/acorex-core-translation.mjs +13 -13
  33. package/fesm2022/acorex-core-translation.mjs.map +1 -1
  34. package/fesm2022/acorex-core-utils.mjs +62 -34
  35. package/fesm2022/acorex-core-utils.mjs.map +1 -1
  36. package/fesm2022/acorex-core.mjs.map +1 -1
  37. package/package.json +10 -11
  38. package/utils/index.d.ts +1 -0
  39. package/utils/lib/auto-unsubscribe.d.ts +12 -0
  40. package/utils/lib/color-util.d.ts +2 -2
@@ -1,6 +1,6 @@
1
- import { Subject } from 'rxjs';
1
+ import { get } from 'lodash-es';
2
2
  import merge from 'lodash-es/merge';
3
- import * as _ from 'lodash';
3
+ import { Subject } from 'rxjs';
4
4
  // @dynamic
5
5
  export class AXTranslator {
6
6
  static { this.lang = 'en'; }
@@ -24,20 +24,20 @@ export class AXTranslator {
24
24
  static get(key, arg1, arg2) {
25
25
  const lang = arg1 && typeof arg1 == 'string' ? arg1 : AXTranslator.lang;
26
26
  const params = arg1 && typeof arg1 == 'object' ? arg1 : arg2;
27
- let result = _.get(AXTranslator[`__data__${lang}`], key, key);
28
- const vars = typeof (result) == 'string' ? result?.match(this._varsRegx) : [];
27
+ let result = get(AXTranslator[`__data__${lang}`], key, key);
28
+ const vars = typeof result == 'string' ? result?.match(this._varsRegx) : [];
29
29
  if (vars?.length) {
30
30
  vars.forEach((v) => {
31
31
  const varKey = v.match(this._varNameRegx)?.length ? v.match(this._varNameRegx)[0] : null;
32
32
  if (varKey) {
33
- const p = _.get(params, varKey) || this.get(varKey, lang);
33
+ const p = get(params, varKey) || this.get(varKey, lang);
34
34
  if (p) {
35
35
  result = result.replace(v, p);
36
36
  }
37
37
  }
38
38
  });
39
39
  }
40
- return typeof (result) == 'string' ? result : JSON.stringify(result);
40
+ return typeof result == 'string' ? result : JSON.stringify(result);
41
41
  }
42
42
  }
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS90cmFuc2xhdGlvbi9zcmMvbGliL3RyYW5zbGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEtBQUssTUFBTSxpQkFBaUIsQ0FBQztBQUNwQyxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUU1QixXQUFXO0FBQ1gsTUFBTSxPQUFPLFlBQVk7YUFDTixTQUFJLEdBQVcsSUFBSSxDQUFDO2FBQ3BCLHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7YUFDdkMsY0FBUyxHQUFHLDhCQUE4QixDQUFDO2FBQzNDLGlCQUFZLEdBQUcsbUJBQW1CLENBQUM7SUFHbEQsTUFBTSxLQUFLLFFBQVE7UUFDZixPQUFPLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6RCxDQUFDO0lBRU0sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFZLEVBQUUsS0FBVTtRQUN2QyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsRUFBRTtnQkFDbEMsWUFBWSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDeEM7WUFDRCxZQUFZLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ25GO0lBQ0wsQ0FBQztJQUVNLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBWTtRQUMxQixZQUFZLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUM3QixDQUFDO0lBRU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFXLEVBQUUsSUFBc0IsRUFBRSxJQUFhO1FBRWhFLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxPQUFPLElBQUksSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztRQUN4RSxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksT0FBTyxJQUFJLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUM3RCxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzlELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDOUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUssRUFBRSxFQUFFO2dCQUNuQixNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ3pGLElBQUksTUFBTSxFQUFFO29CQUNSLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUMxRCxJQUFJLENBQUMsRUFBRTt3QkFDSCxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7cUJBQ2pDO2lCQUNKO1lBQ0wsQ0FBQyxDQUFDLENBQUE7U0FDTDtRQUNELE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgbWVyZ2UgZnJvbSAnbG9kYXNoLWVzL21lcmdlJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcblxuLy8gQGR5bmFtaWNcbmV4cG9ydCBjbGFzcyBBWFRyYW5zbGF0b3Ige1xuICAgIHByaXZhdGUgc3RhdGljIGxhbmc6IHN0cmluZyA9ICdlbic7XG4gICAgcHJpdmF0ZSBzdGF0aWMgZGF0YUNoYW5nZVN1YmplY3QgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gICAgcHJpdmF0ZSBzdGF0aWMgX3ZhcnNSZWd4ID0gLygoXFwkXFx7W2EtekEtWl8wLTlcXC5dK1xcfSkrKS9nbTtcbiAgICBwcml2YXRlIHN0YXRpYyBfdmFyTmFtZVJlZ3ggPSAvW2EtekEtWl8wLTlcXC5dKy9nbTtcblxuXG4gICAgc3RhdGljIGdldCBvbkNoYW5nZSgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gQVhUcmFuc2xhdG9yLmRhdGFDaGFuZ2VTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgbG9hZChsYW5nOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGlmICghQVhUcmFuc2xhdG9yW2BfX2RhdGFfXyR7bGFuZ31gXSkge1xuICAgICAgICAgICAgICAgIEFYVHJhbnNsYXRvcltgX19kYXRhX18ke2xhbmd9YF0gPSB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEFYVHJhbnNsYXRvcltgX19kYXRhX18ke2xhbmd9YF0gPSBtZXJnZShBWFRyYW5zbGF0b3JbYF9fZGF0YV9fJHtsYW5nfWBdLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHVzZShsYW5nOiBzdHJpbmcpIHtcbiAgICAgICAgQVhUcmFuc2xhdG9yLmxhbmcgPSBsYW5nO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0KGtleTogc3RyaW5nLCBhcmcxPzogb2JqZWN0IHwgc3RyaW5nLCBhcmcyPzogb2JqZWN0KTogc3RyaW5nIHtcblxuICAgICAgICBjb25zdCBsYW5nID0gYXJnMSAmJiB0eXBlb2YgYXJnMSA9PSAnc3RyaW5nJyA/IGFyZzEgOiBBWFRyYW5zbGF0b3IubGFuZztcbiAgICAgICAgY29uc3QgcGFyYW1zID0gYXJnMSAmJiB0eXBlb2YgYXJnMSA9PSAnb2JqZWN0JyA/IGFyZzEgOiBhcmcyO1xuICAgICAgICBsZXQgcmVzdWx0ID0gXy5nZXQoQVhUcmFuc2xhdG9yW2BfX2RhdGFfXyR7bGFuZ31gXSwga2V5LCBrZXkpO1xuICAgICAgICBjb25zdCB2YXJzID0gdHlwZW9mIChyZXN1bHQpID09ICdzdHJpbmcnID8gcmVzdWx0Py5tYXRjaCh0aGlzLl92YXJzUmVneCkgOiBbXTtcbiAgICAgICAgaWYgKHZhcnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdmFycy5mb3JFYWNoKCh2OmFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhcktleSA9IHYubWF0Y2godGhpcy5fdmFyTmFtZVJlZ3gpPy5sZW5ndGggPyB2Lm1hdGNoKHRoaXMuX3Zhck5hbWVSZWd4KVswXSA6IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKHZhcktleSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwID0gXy5nZXQocGFyYW1zLCB2YXJLZXkpIHx8IHRoaXMuZ2V0KHZhcktleSwgbGFuZyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZSh2LCBwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHR5cGVvZiAocmVzdWx0KSA9PSAnc3RyaW5nJyA/IHJlc3VsdCA6IEpTT04uc3RyaW5naWZ5KHJlc3VsdCk7XG4gICAgfVxufSJdfQ==
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS90cmFuc2xhdGlvbi9zcmMvbGliL3RyYW5zbGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEtBQUssTUFBTSxpQkFBaUIsQ0FBQztBQUNwQyxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNDLFdBQVc7QUFDWCxNQUFNLE9BQU8sWUFBWTthQUNSLFNBQUksR0FBVyxJQUFJLENBQUM7YUFDcEIsc0JBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQzthQUN2QyxjQUFTLEdBQUcsOEJBQThCLENBQUM7YUFDM0MsaUJBQVksR0FBRyxtQkFBbUIsQ0FBQztJQUVsRCxNQUFNLEtBQUssUUFBUTtRQUNqQixPQUFPLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBRU0sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFZLEVBQUUsS0FBVTtRQUN6QyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsRUFBRTtnQkFDcEMsWUFBWSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDdEM7WUFDRCxZQUFZLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ2pGO0lBQ0gsQ0FBQztJQUVNLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBWTtRQUM1QixZQUFZLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUMzQixDQUFDO0lBRU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFXLEVBQUUsSUFBc0IsRUFBRSxJQUFhO1FBQ2xFLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxPQUFPLElBQUksSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztRQUN4RSxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksT0FBTyxJQUFJLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUM3RCxJQUFJLE1BQU0sR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDNUQsTUFBTSxJQUFJLEdBQUcsT0FBTyxNQUFNLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzVFLElBQUksSUFBSSxFQUFFLE1BQU0sRUFBRTtZQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7Z0JBQ3RCLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDekYsSUFBSSxNQUFNLEVBQUU7b0JBQ1YsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDeEQsSUFBSSxDQUFDLEVBQUU7d0JBQ0wsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO3FCQUMvQjtpQkFDRjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxPQUFPLE9BQU8sTUFBTSxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IG1lcmdlIGZyb20gJ2xvZGFzaC1lcy9tZXJnZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbi8vIEBkeW5hbWljXG5leHBvcnQgY2xhc3MgQVhUcmFuc2xhdG9yIHtcbiAgcHJpdmF0ZSBzdGF0aWMgbGFuZzogc3RyaW5nID0gJ2VuJztcbiAgcHJpdmF0ZSBzdGF0aWMgZGF0YUNoYW5nZVN1YmplY3QgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gIHByaXZhdGUgc3RhdGljIF92YXJzUmVneCA9IC8oKFxcJFxce1thLXpBLVpfMC05XFwuXStcXH0pKykvZ207XG4gIHByaXZhdGUgc3RhdGljIF92YXJOYW1lUmVneCA9IC9bYS16QS1aXzAtOVxcLl0rL2dtO1xuXG4gIHN0YXRpYyBnZXQgb25DaGFuZ2UoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gQVhUcmFuc2xhdG9yLmRhdGFDaGFuZ2VTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBsb2FkKGxhbmc6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAoIUFYVHJhbnNsYXRvcltgX19kYXRhX18ke2xhbmd9YF0pIHtcbiAgICAgICAgQVhUcmFuc2xhdG9yW2BfX2RhdGFfXyR7bGFuZ31gXSA9IHt9O1xuICAgICAgfVxuICAgICAgQVhUcmFuc2xhdG9yW2BfX2RhdGFfXyR7bGFuZ31gXSA9IG1lcmdlKEFYVHJhbnNsYXRvcltgX19kYXRhX18ke2xhbmd9YF0sIHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHVzZShsYW5nOiBzdHJpbmcpIHtcbiAgICBBWFRyYW5zbGF0b3IubGFuZyA9IGxhbmc7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldChrZXk6IHN0cmluZywgYXJnMT86IG9iamVjdCB8IHN0cmluZywgYXJnMj86IG9iamVjdCk6IHN0cmluZyB7XG4gICAgY29uc3QgbGFuZyA9IGFyZzEgJiYgdHlwZW9mIGFyZzEgPT0gJ3N0cmluZycgPyBhcmcxIDogQVhUcmFuc2xhdG9yLmxhbmc7XG4gICAgY29uc3QgcGFyYW1zID0gYXJnMSAmJiB0eXBlb2YgYXJnMSA9PSAnb2JqZWN0JyA/IGFyZzEgOiBhcmcyO1xuICAgIGxldCByZXN1bHQgPSBnZXQoQVhUcmFuc2xhdG9yW2BfX2RhdGFfXyR7bGFuZ31gXSwga2V5LCBrZXkpO1xuICAgIGNvbnN0IHZhcnMgPSB0eXBlb2YgcmVzdWx0ID09ICdzdHJpbmcnID8gcmVzdWx0Py5tYXRjaCh0aGlzLl92YXJzUmVneCkgOiBbXTtcbiAgICBpZiAodmFycz8ubGVuZ3RoKSB7XG4gICAgICB2YXJzLmZvckVhY2goKHY6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCB2YXJLZXkgPSB2Lm1hdGNoKHRoaXMuX3Zhck5hbWVSZWd4KT8ubGVuZ3RoID8gdi5tYXRjaCh0aGlzLl92YXJOYW1lUmVneClbMF0gOiBudWxsO1xuICAgICAgICBpZiAodmFyS2V5KSB7XG4gICAgICAgICAgY29uc3QgcCA9IGdldChwYXJhbXMsIHZhcktleSkgfHwgdGhpcy5nZXQodmFyS2V5LCBsYW5nKTtcbiAgICAgICAgICBpZiAocCkge1xuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UodiwgcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHR5cGVvZiByZXN1bHQgPT0gJ3N0cmluZycgPyByZXN1bHQgOiBKU09OLnN0cmluZ2lmeShyZXN1bHQpO1xuICB9XG59XG4iXX0=
@@ -5,10 +5,10 @@ export class AXTranslatorPipe {
5
5
  transform(value, arg1, arg2) {
6
6
  return AXTranslator.get(value, arg1, arg2);
7
7
  }
8
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: AXTranslatorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
9
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.5", ngImport: i0, type: AXTranslatorPipe, name: "trans" }); }
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AXTranslatorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
9
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.6", ngImport: i0, type: AXTranslatorPipe, name: "trans" }); }
10
10
  }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: AXTranslatorPipe, decorators: [{
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AXTranslatorPipe, decorators: [{
12
12
  type: Pipe,
13
13
  args: [{ name: 'trans', pure: true }]
14
14
  }] });
@@ -1,6 +1,7 @@
1
+ export * from './lib/auto-unsubscribe';
1
2
  export * from './lib/color-util';
2
3
  export * from './lib/drawing-util';
3
4
  export * from './lib/html-util';
4
5
  export * from './lib/object-util';
5
6
  export * from './lib/string-util';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdXRpbHMvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2NvbG9yLXV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZHJhd2luZy11dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2h0bWwtdXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9vYmplY3QtdXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdHJpbmctdXRpbCc7XG4iXX0=
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdXRpbHMvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0by11bnN1YnNjcmliZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2xvci11dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RyYXdpbmctdXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9odG1sLXV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvb2JqZWN0LXV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RyaW5nLXV0aWwnO1xuIl19
@@ -0,0 +1,37 @@
1
+ import { Injectable } from "@angular/core";
2
+ import { Subject, takeUntil } from "rxjs";
3
+ import * as i0 from "@angular/core";
4
+ export function AXAutoUnsubscriber() {
5
+ return function (constructor) {
6
+ const orig = constructor.prototype.ngOnDestroy;
7
+ constructor.prototype.ngOnDestroy = function () {
8
+ debugger;
9
+ for (const prop in this) {
10
+ const property = this[prop];
11
+ if (typeof property.subscribe === "function") {
12
+ property.unsubscribe();
13
+ }
14
+ }
15
+ orig.apply();
16
+ };
17
+ };
18
+ }
19
+ export class AXUnsubscriber {
20
+ constructor() {
21
+ this._destroy$ = new Subject();
22
+ this.takeUntilDestroy = (origin) => origin.pipe(takeUntil(this._destroy$));
23
+ }
24
+ unsubscribe() {
25
+ this._destroy$.next();
26
+ this._destroy$.complete();
27
+ }
28
+ ngOnDestroy() {
29
+ this.unsubscribe();
30
+ }
31
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AXUnsubscriber, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
32
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AXUnsubscriber }); }
33
+ }
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AXUnsubscriber, decorators: [{
35
+ type: Injectable
36
+ }] });
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by11bnN1YnNjcmliZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS91dGlscy9zcmMvbGliL2F1dG8tdW5zdWJzY3JpYmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQTtBQUNyRCxPQUFPLEVBQWMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQTs7QUFFckQsTUFBTSxVQUFVLGtCQUFrQjtJQUM5QixPQUFPLFVBQVUsV0FBVztRQUN4QixNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQTtRQUM5QyxXQUFXLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRztZQUNoQyxRQUFRLENBQUE7WUFDUixLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRTtnQkFDckIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUMzQixJQUFJLE9BQU8sUUFBUSxDQUFDLFNBQVMsS0FBSyxVQUFVLEVBQUU7b0JBQzFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtpQkFDekI7YUFDSjtZQUNELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUNoQixDQUFDLENBQUE7SUFDTCxDQUFDLENBQUE7QUFDTCxDQUFDO0FBR0QsTUFBTSxPQUFPLGNBQWM7SUFEM0I7UUFFcUIsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFakMscUJBQWdCLEdBQUcsQ0FBSSxNQUFxQixFQUFpQixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7S0FVMUg7SUFSVSxXQUFXO1FBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7OEdBWlEsY0FBYztrSEFBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anNcIlxuXG5leHBvcnQgZnVuY3Rpb24gQVhBdXRvVW5zdWJzY3JpYmVyKCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoY29uc3RydWN0b3IpIHtcbiAgICAgICAgY29uc3Qgb3JpZyA9IGNvbnN0cnVjdG9yLnByb3RvdHlwZS5uZ09uRGVzdHJveVxuICAgICAgICBjb25zdHJ1Y3Rvci5wcm90b3R5cGUubmdPbkRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBkZWJ1Z2dlclxuICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wIGluIHRoaXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IHRoaXNbcHJvcF1cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHByb3BlcnR5LnN1YnNjcmliZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5LnVuc3Vic2NyaWJlKClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcmlnLmFwcGx5KClcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYVW5zdWJzY3JpYmVyIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgdGFrZVVudGlsRGVzdHJveSA9IDxUPihvcmlnaW46IE9ic2VydmFibGU8VD4pOiBPYnNlcnZhYmxlPFQ+ID0+IG9yaWdpbi5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpO1xuXG4gICAgcHVibGljIHVuc3Vic2NyaWJlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxufSJdfQ==
@@ -5,7 +5,6 @@ export class AXColorUtil {
5
5
  const _color = tinycolor(color);
6
6
  switch (mode) {
7
7
  case 'rgba':
8
- ;
9
8
  return _color.toRgb();
10
9
  case 'hsla':
11
10
  return _color.toHsl();
@@ -15,7 +14,6 @@ export class AXColorUtil {
15
14
  return _color.toHex();
16
15
  }
17
16
  }
18
- ;
19
17
  static toString(color, mode = null) {
20
18
  const _color = tinycolor(color);
21
19
  switch (mode) {
@@ -25,48 +23,41 @@ export class AXColorUtil {
25
23
  return _color.toHslString();
26
24
  case 'hsva':
27
25
  return _color.toHsvString();
28
- case 'hsva':
29
- return _color.toHsvString();
30
- case 'hex':
31
- {
32
- const rgba = _color.toRgb();
33
- return rgba.a != 1 ? _color.toHex8String() : _color.toHexString();
26
+ case 'hex': {
27
+ const rgba = _color.toRgb();
28
+ return rgba.a != 1 ? _color.toHex8String() : _color.toHexString();
29
+ }
30
+ default: {
31
+ if (typeof color == 'string') {
32
+ if (color.toLowerCase().startsWith('#'))
33
+ return this.toString(color, 'hex');
34
+ else
35
+ return this.toString(color, 'rgba');
34
36
  }
35
- default:
36
- {
37
- if (typeof color == 'string') {
38
- if (color.toLowerCase().startsWith("#"))
39
- return this.toString(color, "hex");
40
- else
41
- return this.toString(color, "rgba");
42
- }
43
- else {
44
- return this.toString(color, "rgba");
45
- }
37
+ else {
38
+ return this.toString(color, 'rgba');
46
39
  }
40
+ }
47
41
  }
48
42
  }
49
- ;
50
43
  static isValid(color) {
51
44
  const _color = tinycolor(color);
52
45
  return _color.isValid();
53
46
  }
54
- ;
55
47
  static mix(baseColor, hex, percentage) {
56
48
  return tinycolor.mix(baseColor, hex, percentage).toString('rgb');
57
49
  }
58
50
  static multiply(color1, color2) {
59
- let rgb1 = tinycolor(color1).toRgb();
60
- let rgb2 = tinycolor(color2).toRgb();
61
- rgb1.b = Math.floor(rgb1.b * rgb2.b / 255);
62
- rgb1.g = Math.floor(rgb1.g * rgb2.g / 255);
63
- rgb1.r = Math.floor(rgb1.r * rgb2.r / 255);
51
+ const rgb1 = tinycolor(color1).toRgb();
52
+ const rgb2 = tinycolor(color2).toRgb();
53
+ rgb1.b = Math.floor((rgb1.b * rgb2.b) / 255);
54
+ rgb1.g = Math.floor((rgb1.g * rgb2.g) / 255);
55
+ rgb1.r = Math.floor((rgb1.r * rgb2.r) / 255);
64
56
  return tinycolor('rgb ' + rgb1.r + ' ' + rgb1.g + ' ' + rgb1.b).toString('rgb');
65
57
  }
66
58
  static contrastToWhite(color) {
67
- return tinycolor.readability("#fff", color);
59
+ return tinycolor.readability('#fff', color);
68
60
  }
69
- ;
70
61
  static lighten(hex, percentage) {
71
62
  return tinycolor(hex).lighten(percentage);
72
63
  }
@@ -97,19 +88,19 @@ export class AXColorUtil {
97
88
  let rgb = [
98
89
  X * 1.656492 - Y * 0.354851 - Z * 0.255038,
99
90
  -X * 0.707196 + Y * 1.655397 + Z * 0.036152,
100
- X * 0.051713 - Y * 0.121364 + Z * 1.011530
91
+ X * 0.051713 - Y * 0.121364 + Z * 1.01153,
101
92
  ];
102
93
  // Apply reverse gamma correction.
103
- rgb = rgb.map(x => x <= 0.0031308 ? 12.92 * x : (1.0 + 0.055) * Math.pow(x, 1.0 / 2.4) - 0.055);
94
+ rgb = rgb.map((x) => x <= 0.0031308 ? 12.92 * x : (1.0 + 0.055) * Math.pow(x, 1.0 / 2.4) - 0.055);
104
95
  // Bring all negative components to zero.
105
- rgb = rgb.map(x => Math.max(0, x));
96
+ rgb = rgb.map((x) => Math.max(0, x));
106
97
  // If one component is greater than 1, weight components by that value.
107
98
  const max = Math.max(...rgb);
108
99
  if (max > 1) {
109
- rgb = rgb.map(x => x / max);
100
+ rgb = rgb.map((x) => x / max);
110
101
  }
111
- rgb = rgb.map(x => Math.round(x * 255));
102
+ rgb = rgb.map((x) => Math.round(x * 255));
112
103
  return 'rgb(' + rgb.join(',') + ')';
113
104
  }
114
105
  }
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItdXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS91dGlscy9zcmMvbGliL2NvbG9yLXV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxTQUF5QixNQUFNLFlBQVksQ0FBQztBQUNuRCxPQUFPLFlBQVksTUFBTSxjQUFjLENBQUE7QUFJdkMsTUFBTSxPQUFPLFdBQVc7SUFHcEIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFvQixFQUFFLElBQWlCO1FBRTdDLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUMvQixRQUFRLElBQUksRUFBRTtZQUNWLEtBQUssTUFBTTtnQkFBRSxDQUFDO2dCQUNWLE9BQU8sTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzFCLEtBQUssTUFBTTtnQkFDUCxPQUFPLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMxQixLQUFLLE1BQU07Z0JBQ1AsT0FBTyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDMUI7Z0JBQ0ksT0FBTyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDN0I7SUFDTCxDQUFDO0lBQUEsQ0FBQztJQUVGLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBb0IsRUFBRSxPQUFvQixJQUFJO1FBQzFELE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUMvQixRQUFRLElBQUksRUFBRTtZQUNWLEtBQUssTUFBTTtnQkFDUCxPQUFPLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNoQyxLQUFLLE1BQU07Z0JBQ1AsT0FBTyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDaEMsS0FBSyxNQUFNO2dCQUNQLE9BQU8sTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2hDLEtBQUssTUFBTTtnQkFDUCxPQUFPLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNoQyxL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UTtZQUMzQyxDQUFDLEdBQUcsUUFBUSxHQUFHLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxHQUFHLFFBQVE7U0FDN0MsQ0FBQztRQUVGLGtDQUFrQztRQUNsQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUNkLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQzlFLENBQUM7UUFFRix5Q0FBeUM7UUFDekMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRW5DLHVFQUF1RTtRQUN2RSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDN0IsSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7U0FDL0I7UUFFRCxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFeEMsT0FBTyxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDeEMsQ0FBQztDQUVKIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgQVhDb2xvck1vZGUgPSAncmdiYScgfCAnaGV4JyB8ICdoc2xhJyB8ICdoc3ZhJztcblxuaW1wb3J0IHRpbnljb2xvciwgeyBDb2xvcklucHV0IH0gZnJvbSAndGlueWNvbG9yMic7XG5pbXBvcnQgdGlueWdyYWRpZW50IGZyb20gJ3RpbnlncmFkaWVudCdcblxuZXhwb3J0IHR5cGUgQVhDb2xvckZvcm1hdCA9IENvbG9ySW5wdXQ7XG5cbmV4cG9ydCBjbGFzcyBBWENvbG9yVXRpbCB7XG5cblxuICAgIHN0YXRpYyB0byhjb2xvcjogQVhDb2xvckZvcm1hdCwgbW9kZTogQVhDb2xvck1vZGUpOiBBWENvbG9yRm9ybWF0IHtcblxuICAgICAgICBjb25zdCBfY29sb3IgPSB0aW55Y29sb3IoY29sb3IpXG4gICAgICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICAgICAgY2FzZSAncmdiYSc6IDtcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbG9yLnRvUmdiKCk7XG4gICAgICAgICAgICBjYXNlICdoc2xhJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbG9yLnRvSHNsKCk7XG4gICAgICAgICAgICBjYXNlICdoc3ZhJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbG9yLnRvSHN2KCk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29sb3IudG9IZXgoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBzdGF0aWMgdG9TdHJpbmcoY29sb3I6IEFYQ29sb3JGb3JtYXQsIG1vZGU6IEFYQ29sb3JNb2RlID0gbnVsbCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IF9jb2xvciA9IHRpbnljb2xvcihjb2xvcilcbiAgICAgICAgc3dpdGNoIChtb2RlKSB7XG4gICAgICAgICAgICBjYXNlICdyZ2JhJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbG9yLnRvUmdiU3RyaW5nKCk7XG4gICAgICAgICAgICBjYXNlICdoc2xhJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbG9yLnRvSHNsU3RyaW5nKCk7XG4gICAgICAgICAgICBjYXNlICdoc3ZhJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbG9yLnRvSHN2U3RyaW5nKCk7XG4gICAgICAgICAgICBjYXNlICdoc3ZhJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbG9yLnRvSHN2U3RyaW5nKCk7XG4gICAgICAgICAgICBjYXNlICdoZXgnOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmdiYSA9IF9jb2xvci50b1JnYigpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmdiYS5hICE9IDEgPyBfY29sb3IudG9IZXg4U3RyaW5nKCkgOiBfY29sb3IudG9IZXhTdHJpbmcoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb2xvciA9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbG9yLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChcIiNcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoY29sb3IsIFwiaGV4XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKGNvbG9yLCBcInJnYmFcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50b1N0cmluZyhjb2xvciwgXCJyZ2JhXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIHN0YXRpYyBpc1ZhbGlkKGNvbG9yOiBBWENvbG9yRm9ybWF0KTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IF9jb2xvciA9IHRpbnljb2xvcihjb2xvcilcbiAgICAgICAgcmV0dXJuIF9jb2xvci5pc1ZhbGlkKCk7XG4gICAgfTtcblxuICAgIHN0YXRpYyBtaXgoYmFzZUNvbG9yOiBBWENvbG9yRm9ybWF0LCBoZXg6IEFYQ29sb3JGb3JtYXQsIHBlcmNlbnRhZ2U6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aW55Y29sb3IubWl4KGJhc2VDb2xvciwgaGV4LCBwZXJjZW50YWdlKS50b1N0cmluZygncmdiJyk7XG4gICAgfVxuXG4gICAgc3RhdGljIG11bHRpcGx5KGNvbG9yMTogQVhDb2xvckZvcm1hdCwgY29sb3IyOiBBWENvbG9yRm9ybWF0KTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHJnYjEgPSB0aW55Y29sb3IoY29sb3IxKS50b1JnYigpO1xuICAgICAgICBsZXQgcmdiMiA9IHRpbnljb2xvcihjb2xvcjIpLnRvUmdiKCk7XG4gICAgICAgIHJnYjEuYiA9IE1hdGguZmxvb3IocmdiMS5iICogcmdiMi5iIC8gMjU1KTtcbiAgICAgICAgcmdiMS5nID0gTWF0aC5mbG9vcihyZ2IxLmcgKiByZ2IyLmcgLyAyNTUpO1xuICAgICAgICByZ2IxLnIgPSBNYXRoLmZsb29yKHJnYjEuciAqIHJnYjIuciAvIDI1NSk7XG4gICAgICAgIHJldHVybiB0aW55Y29sb3IoJ3JnYiAnICsgcmdiMS5yICsgJyAnICsgcmdiMS5nICsgJyAnICsgcmdiMS5iKS50b1N0cmluZygncmdiJyk7XG4gICAgfVxuXG4gICAgc3RhdGljIGNvbnRyYXN0VG9XaGl0ZShjb2xvcjogQVhDb2xvckZvcm1hdCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aW55Y29sb3IucmVhZGFiaWxpdHkoXCIjZmZmXCIsIGNvbG9yKTtcbiAgICB9O1xuXG4gICAgc3RhdGljIGxpZ2h0ZW4oaGV4OiBBWENvbG9yRm9ybWF0LCBwZXJjZW50YWdlPzogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aW55Y29sb3IoaGV4KS5saWdodGVuKHBlcmNlbnRhZ2UpXG4gICAgfVxuXG4gICAgc3RhdGljIGRhcmtlbihoZXg6IEFYQ29sb3JGb3JtYXQsIHBlcmNlbnRhZ2U/OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRpbnljb2xvcihoZXgpLmRhcmtlbihwZXJjZW50YWdlKVxuICAgIH1cblxuICAgIHN0YXRpYyBicmlnaHRlbihoZXg6IEFYQ29sb3JGb3JtYXQsIHBlcmNlbnRhZ2U/OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRpbnljb2xvcihoZXgpLmJyaWdodGVuKHBlcmNlbnRhZ2UpXG4gICAgfVxuXG4gICAgc3RhdGljIHNhdHVyYXRlKGhleDogQVhDb2xvckZvcm1hdCwgcGVyY2VudGFnZT86IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGlueWNvbG9yKGhleCkuc2F0dXJhdGUocGVyY2VudGFnZSlcbiAgICB9XG5cbiAgICBzdGF0aWMgZGVzYXR1cmF0ZShoZXg6IEFYQ29sb3JGb3JtYXQsIHBlcmNlbnRhZ2U/OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRpbnljb2xvcihoZXgpLmdldEx1bWluYW5jZSgpXG4gICAgfVxuXG4gICAgc3RhdGljIGVxdWFsKGNvbG9yMTogQVhDb2xvckZvcm1hdCwgY29sb3IyOiBBWENvbG9yRm9ybWF0KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aW55Y29sb3IuZXF1YWxzKGNvbG9yMSwgY29sb3IyKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ3JhZGllbnQodmFsdWVzOiBhbnlbXSB8IHsgY29sb3I6IGFueSwgcG9zOiBudW1iZXIgfVtdKTogdGlueWdyYWRpZW50Lkluc3RhbmNlIHtcbiAgICAgICAgcmV0dXJuIHRpbnlncmFkaWVudChbLi4udmFsdWVzXSlcbiAgICB9XG5cbiAgICBzdGF0aWMgeHlUb1JnYih2WCwgdlkpOiBzdHJpbmcge1xuICAgICAgICB2WSA9IHZZIHx8IDAuMDAwMDAwMDAwMDE7XG4gICAgICAgIGNvbnN0IFkgPSAxO1xuICAgICAgICBjb25zdCBYID0gKFkgLyB2WSkgKiB2WDtcbiAgICAgICAgY29uc3QgWiA9IChZIC8gdlkpICogKDEgLSB2WCAtIHZZKTtcblxuICAgICAgICAvLyBDb252ZXJ0IHRvIFJHQiB1c2luZyBXaWRlIFJHQiBENjUgY29udmVyc2lvbi5cbiAgICAgICAgbGV0IHJnYiA9IFtcbiAgICAgICAgICAgIFggKiAxLjY1NjQ5MiAtIFkgKiAwLjM1NDg1MSAtIFogKiAwLjI1NTAzOCxcbiAgICAgICAgICAgIC1YICogMC43MDcxOTYgKyBZICogMS42NTUzOTcgKyBaICogMC4wMzYxNTIsXG4gICAgICAgICAgICBYICogMC4wNTE3MTMgLSBZICogMC4xMjEzNjQgKyBaICogMS4wMTE1MzBcbiAgICAgICAgXTtcblxuICAgICAgICAvLyBBcHBseSByZXZlcnNlIGdhbW1hIGNvcnJlY3Rpb24uXG4gICAgICAgIHJnYiA9IHJnYi5tYXAoeCA9PlxuICAgICAgICAgICAgeCA8PSAwLjAwMzEzMDggPyAxMi45MiAqIHggOiAoMS4wICsgMC4wNTUpICogTWF0aC5wb3coeCwgMS4wIC8gMi40KSAtIDAuMDU1XG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gQnJpbmcgYWxsIG5lZ2F0aXZlIGNvbXBvbmVudHMgdG8gemVyby5cbiAgICAgICAgcmdiID0gcmdiLm1hcCh4ID0+IE1hdGgubWF4KDAsIHgpKTtcblxuICAgICAgICAvLyBJZiBvbmUgY29tcG9uZW50IGlzIGdyZWF0ZXIgdGhhbiAxLCB3ZWlnaHQgY29tcG9uZW50cyBieSB0aGF0IHZhbHVlLlxuICAgICAgICBjb25zdCBtYXggPSBNYXRoLm1heCguLi5yZ2IpO1xuICAgICAgICBpZiAobWF4ID4gMSkge1xuICAgICAgICAgICAgcmdiID0gcmdiLm1hcCh4ID0+IHggLyBtYXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmdiID0gcmdiLm1hcCh4ID0+IE1hdGgucm91bmQoeCAqIDI1NSkpO1xuXG4gICAgICAgIHJldHVybiAncmdiKCcgKyByZ2Iuam9pbignLCcpICsgJyknO1xuICAgIH1cblxufSJdfQ==
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItdXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS91dGlscy9zcmMvbGliL2NvbG9yLXV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxTQUF5QixNQUFNLFlBQVksQ0FBQztBQUNuRCxPQUFPLFlBQTBCLE1BQU0sY0FBYyxDQUFDO0FBSXRELE1BQU0sT0FBTyxXQUFXO0lBQ3RCLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBb0IsRUFBRSxJQUFpQjtRQUMvQyxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsUUFBUSxJQUFJLEVBQUU7WUFDWixLQUFLLE1BQU07Z0JBQ1QsT0FBTyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDeEIsS0FBSyxNQUFNO2dCQUNULE9BQU8sTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3hCLEtBQUssTUFBTTtnQkFDVCxPQUFPLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN4QjtnQkFDRSxPQUFPLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUN6QjtJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQW9CLEVBQUUsT0FBb0IsSUFBSTtRQUM1RCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsUUFBUSxJQUFJLEVBQUU7WUFDWixLQUFLLE1BQU07Z0JBQ1QsT0FBTyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDOUIsS0FBSyxNQUFNO2dCQUNULE9BQU8sTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzlCLEtBQUssTUFBTTtnQkFDVCxPQUFPLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUU5QixLQUFLLEtBQUssQ0FBQyxDQUFDO2dCQUNWLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDNUIs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O1NBQzFDLENBQUM7UUFFRixrQ0FBa0M7UUFDbEMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNsQixDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUM1RSxDQUFDO1FBRUYseUNBQXlDO1FBQ3pDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXJDLHVFQUF1RTtRQUN2RSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDN0IsSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFO1lBQ1gsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztTQUMvQjtRQUVELEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTFDLE9BQU8sTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ3RDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEFYQ29sb3JNb2RlID0gJ3JnYmEnIHwgJ2hleCcgfCAnaHNsYScgfCAnaHN2YSc7XG5cbmltcG9ydCB0aW55Y29sb3IsIHsgQ29sb3JJbnB1dCB9IGZyb20gJ3Rpbnljb2xvcjInO1xuaW1wb3J0IHRpbnlncmFkaWVudCwgeyBJbnN0YW5jZSB9IGZyb20gJ3RpbnlncmFkaWVudCc7XG5cbmV4cG9ydCB0eXBlIEFYQ29sb3JGb3JtYXQgPSBDb2xvcklucHV0O1xuXG5leHBvcnQgY2xhc3MgQVhDb2xvclV0aWwge1xuICBzdGF0aWMgdG8oY29sb3I6IEFYQ29sb3JGb3JtYXQsIG1vZGU6IEFYQ29sb3JNb2RlKTogQVhDb2xvckZvcm1hdCB7XG4gICAgY29uc3QgX2NvbG9yID0gdGlueWNvbG9yKGNvbG9yKTtcbiAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgIGNhc2UgJ3JnYmEnOlxuICAgICAgICByZXR1cm4gX2NvbG9yLnRvUmdiKCk7XG4gICAgICBjYXNlICdoc2xhJzpcbiAgICAgICAgcmV0dXJuIF9jb2xvci50b0hzbCgpO1xuICAgICAgY2FzZSAnaHN2YSc6XG4gICAgICAgIHJldHVybiBfY29sb3IudG9Ic3YoKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBfY29sb3IudG9IZXgoKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgdG9TdHJpbmcoY29sb3I6IEFYQ29sb3JGb3JtYXQsIG1vZGU6IEFYQ29sb3JNb2RlID0gbnVsbCk6IHN0cmluZyB7XG4gICAgY29uc3QgX2NvbG9yID0gdGlueWNvbG9yKGNvbG9yKTtcbiAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgIGNhc2UgJ3JnYmEnOlxuICAgICAgICByZXR1cm4gX2NvbG9yLnRvUmdiU3RyaW5nKCk7XG4gICAgICBjYXNlICdoc2xhJzpcbiAgICAgICAgcmV0dXJuIF9jb2xvci50b0hzbFN0cmluZygpO1xuICAgICAgY2FzZSAnaHN2YSc6XG4gICAgICAgIHJldHVybiBfY29sb3IudG9Ic3ZTdHJpbmcoKTtcblxuICAgICAgY2FzZSAnaGV4Jzoge1xuICAgICAgICBjb25zdCByZ2JhID0gX2NvbG9yLnRvUmdiKCk7XG4gICAgICAgIHJldHVybiByZ2JhLmEgIT0gMSA/IF9jb2xvci50b0hleDhTdHJpbmcoKSA6IF9jb2xvci50b0hleFN0cmluZygpO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBpZiAodHlwZW9mIGNvbG9yID09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgaWYgKGNvbG9yLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgnIycpKSByZXR1cm4gdGhpcy50b1N0cmluZyhjb2xvciwgJ2hleCcpO1xuICAgICAgICAgIGVsc2UgcmV0dXJuIHRoaXMudG9TdHJpbmcoY29sb3IsICdyZ2JhJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoY29sb3IsICdyZ2JhJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdGF0aWMgaXNWYWxpZChjb2xvcjogQVhDb2xvckZvcm1hdCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IF9jb2xvciA9IHRpbnljb2xvcihjb2xvcik7XG4gICAgcmV0dXJuIF9jb2xvci5pc1ZhbGlkKCk7XG4gIH1cblxuICBzdGF0aWMgbWl4KGJhc2VDb2xvcjogQVhDb2xvckZvcm1hdCwgaGV4OiBBWENvbG9yRm9ybWF0LCBwZXJjZW50YWdlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aW55Y29sb3IubWl4KGJhc2VDb2xvciwgaGV4LCBwZXJjZW50YWdlKS50b1N0cmluZygncmdiJyk7XG4gIH1cblxuICBzdGF0aWMgbXVsdGlwbHkoY29sb3IxOiBBWENvbG9yRm9ybWF0LCBjb2xvcjI6IEFYQ29sb3JGb3JtYXQpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJnYjEgPSB0aW55Y29sb3IoY29sb3IxKS50b1JnYigpO1xuICAgIGNvbnN0IHJnYjIgPSB0aW55Y29sb3IoY29sb3IyKS50b1JnYigpO1xuICAgIHJnYjEuYiA9IE1hdGguZmxvb3IoKHJnYjEuYiAqIHJnYjIuYikgLyAyNTUpO1xuICAgIHJnYjEuZyA9IE1hdGguZmxvb3IoKHJnYjEuZyAqIHJnYjIuZykgLyAyNTUpO1xuICAgIHJnYjEuciA9IE1hdGguZmxvb3IoKHJnYjEuciAqIHJnYjIucikgLyAyNTUpO1xuICAgIHJldHVybiB0aW55Y29sb3IoJ3JnYiAnICsgcmdiMS5yICsgJyAnICsgcmdiMS5nICsgJyAnICsgcmdiMS5iKS50b1N0cmluZygncmdiJyk7XG4gIH1cblxuICBzdGF0aWMgY29udHJhc3RUb1doaXRlKGNvbG9yOiBBWENvbG9yRm9ybWF0KTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGlueWNvbG9yLnJlYWRhYmlsaXR5KCcjZmZmJywgY29sb3IpO1xuICB9XG5cbiAgc3RhdGljIGxpZ2h0ZW4oaGV4OiBBWENvbG9yRm9ybWF0LCBwZXJjZW50YWdlPzogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRpbnljb2xvcihoZXgpLmxpZ2h0ZW4ocGVyY2VudGFnZSk7XG4gIH1cblxuICBzdGF0aWMgZGFya2VuKGhleDogQVhDb2xvckZvcm1hdCwgcGVyY2VudGFnZT86IG51bWJlcikge1xuICAgIHJldHVybiB0aW55Y29sb3IoaGV4KS5kYXJrZW4ocGVyY2VudGFnZSk7XG4gIH1cblxuICBzdGF0aWMgYnJpZ2h0ZW4oaGV4OiBBWENvbG9yRm9ybWF0LCBwZXJjZW50YWdlPzogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRpbnljb2xvcihoZXgpLmJyaWdodGVuKHBlcmNlbnRhZ2UpO1xuICB9XG5cbiAgc3RhdGljIHNhdHVyYXRlKGhleDogQVhDb2xvckZvcm1hdCwgcGVyY2VudGFnZT86IG51bWJlcikge1xuICAgIHJldHVybiB0aW55Y29sb3IoaGV4KS5zYXR1cmF0ZShwZXJjZW50YWdlKTtcbiAgfVxuXG4gIHN0YXRpYyBkZXNhdHVyYXRlKGhleDogQVhDb2xvckZvcm1hdCwgcGVyY2VudGFnZT86IG51bWJlcikge1xuICAgIHJldHVybiB0aW55Y29sb3IoaGV4KS5nZXRMdW1pbmFuY2UoKTtcbiAgfVxuXG4gIHN0YXRpYyBlcXVhbChjb2xvcjE6IEFYQ29sb3JGb3JtYXQsIGNvbG9yMjogQVhDb2xvckZvcm1hdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aW55Y29sb3IuZXF1YWxzKGNvbG9yMSwgY29sb3IyKTtcbiAgfVxuXG4gIHN0YXRpYyBncmFkaWVudCh2YWx1ZXM6IGFueVtdIHwgeyBjb2xvcjogYW55OyBwb3M6IG51bWJlciB9W10pOiBJbnN0YW5jZSB7XG4gICAgcmV0dXJuIHRpbnlncmFkaWVudChbLi4udmFsdWVzXSk7XG4gIH1cblxuICBzdGF0aWMgeHlUb1JnYih2WCwgdlkpOiBzdHJpbmcge1xuICAgIHZZID0gdlkgfHwgMC4wMDAwMDAwMDAwMTtcbiAgICBjb25zdCBZID0gMTtcbiAgICBjb25zdCBYID0gKFkgLyB2WSkgKiB2WDtcbiAgICBjb25zdCBaID0gKFkgLyB2WSkgKiAoMSAtIHZYIC0gdlkpO1xuXG4gICAgLy8gQ29udmVydCB0byBSR0IgdXNpbmcgV2lkZSBSR0IgRDY1IGNvbnZlcnNpb24uXG4gICAgbGV0IHJnYiA9IFtcbiAgICAgIFggKiAxLjY1NjQ5MiAtIFkgKiAwLjM1NDg1MSAtIFogKiAwLjI1NTAzOCxcbiAgICAgIC1YICogMC43MDcxOTYgKyBZICogMS42NTUzOTcgKyBaICogMC4wMzYxNTIsXG4gICAgICBYICogMC4wNTE3MTMgLSBZICogMC4xMjEzNjQgKyBaICogMS4wMTE1MyxcbiAgICBdO1xuXG4gICAgLy8gQXBwbHkgcmV2ZXJzZSBnYW1tYSBjb3JyZWN0aW9uLlxuICAgIHJnYiA9IHJnYi5tYXAoKHgpID0+XG4gICAgICB4IDw9IDAuMDAzMTMwOCA/IDEyLjkyICogeCA6ICgxLjAgKyAwLjA1NSkgKiBNYXRoLnBvdyh4LCAxLjAgLyAyLjQpIC0gMC4wNTVcbiAgICApO1xuXG4gICAgLy8gQnJpbmcgYWxsIG5lZ2F0aXZlIGNvbXBvbmVudHMgdG8gemVyby5cbiAgICByZ2IgPSByZ2IubWFwKCh4KSA9PiBNYXRoLm1heCgwLCB4KSk7XG5cbiAgICAvLyBJZiBvbmUgY29tcG9uZW50IGlzIGdyZWF0ZXIgdGhhbiAxLCB3ZWlnaHQgY29tcG9uZW50cyBieSB0aGF0IHZhbHVlLlxuICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KC4uLnJnYik7XG4gICAgaWYgKG1heCA+IDEpIHtcbiAgICAgIHJnYiA9IHJnYi5tYXAoKHgpID0+IHggLyBtYXgpO1xuICAgIH1cblxuICAgIHJnYiA9IHJnYi5tYXAoKHgpID0+IE1hdGgucm91bmQoeCAqIDI1NSkpO1xuXG4gICAgcmV0dXJuICdyZ2IoJyArIHJnYi5qb2luKCcsJykgKyAnKSc7XG4gIH1cbn1cbiJdfQ==
@@ -26,10 +26,10 @@ class AXConfig {
26
26
  }
27
27
 
28
28
  class AXConfigService {
29
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: AXConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
30
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: AXConfigService, providedIn: 'platform' }); }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AXConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
30
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AXConfigService, providedIn: 'platform' }); }
31
31
  }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: AXConfigService, decorators: [{
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AXConfigService, decorators: [{
33
33
  type: Injectable,
34
34
  args: [{ providedIn: 'platform' }]
35
35
  }] });
@@ -1,5 +1,5 @@
1
- import * as _ from 'lodash';
2
1
  import { AXConfig } from '@acorex/core/config';
2
+ import { orderBy } from 'lodash-es';
3
3
  import * as i0 from '@angular/core';
4
4
  import { Pipe, NgModule } from '@angular/core';
5
5
 
@@ -132,7 +132,7 @@ class AXDateTime {
132
132
  return this._calendar.endOf(this.date, unit);
133
133
  }
134
134
  format(format = AXConfig.get('dateTime.shortDateFormat')) {
135
- const re = new RegExp(_.orderBy(Object.keys(this._formatKeys), (c) => c.length, ['desc']).join('|'), 'gi');
135
+ const re = new RegExp(orderBy(Object.keys(this._formatKeys), (c) => c.length, ['desc']).join('|'), 'gi');
136
136
  return format.replace(re, (matched) => {
137
137
  return this._formatKeys[matched]();
138
138
  });
@@ -303,10 +303,10 @@ class AXDateTimePipe {
303
303
  return date.format(format);
304
304
  }
305
305
  }
306
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: AXDateTimePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
307
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.5", ngImport: i0, type: AXDateTimePipe, name: "axDate" }); }
306
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AXDateTimePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
307
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.6", ngImport: i0, type: AXDateTimePipe, name: "axDate" }); }
308
308
  }
309
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: AXDateTimePipe, decorators: [{
309
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AXDateTimePipe, decorators: [{
310
310
  type: Pipe,
311
311
  args: [{ name: 'axDate' }]
312
312
  }], ctorParameters: function () { return []; } });
@@ -505,6 +505,13 @@ class JalaliCalendar {
505
505
  this.monthShortNames = 'فروردین_اردیبهشت_خرداد_تیر_مرداد_شهریور_مهر_آبان_آذر_دی_بهمن_اسفند'.split('_');
506
506
  this.dayNames = 'شنبه_یکشنبه_دوشنبه_سه شنبه_چهارشنبه_پنج شنبه_جمعه'.split('_');
507
507
  this.dayShortNames = 'ش_ی_د_س_چ_پ_ج'.split('_');
508
+ /*
509
+ Jalaali years starting the 33-year rule.
510
+ */
511
+ this.breaks = [
512
+ -61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210, 1635, 2060, 2097, 2192, 2262, 2324, 2394,
513
+ 2456, 3178,
514
+ ];
508
515
  }
509
516
  create(value) {
510
517
  const a = this.toGregorian(value.year, value.month, value.date);
@@ -514,10 +521,10 @@ class JalaliCalendar {
514
521
  return 'jalali';
515
522
  }
516
523
  dayOfMonth(date) {
517
- return this.toJalali(date).day;
524
+ return this.toJalaali(date).day;
518
525
  }
519
526
  dayOfYear(date) {
520
- const j = this.toJalali(date);
527
+ const j = this.toJalaali(date);
521
528
  return (j.month <= 6 ? (j.month - 1) * 31 : 6 * 31 + (j.month - 7) * 30) + j.day;
522
529
  }
523
530
  dayOfWeek(date) {
@@ -529,10 +536,10 @@ class JalaliCalendar {
529
536
  return Math.ceil(((date.getTime() - firstDay.date.getTime()) / 86400000 + firstDay.date.getDay() + 1) / 7);
530
537
  }
531
538
  year(date) {
532
- return this.toJalali(date).year;
539
+ return this.toJalaali(date).year;
533
540
  }
534
541
  monthOfYear(date) {
535
- return this.toJalali(date).month;
542
+ return this.toJalaali(date).month;
536
543
  }
537
544
  add(date, unit, amount) {
538
545
  let value = date.valueOf();
@@ -589,7 +596,7 @@ class JalaliCalendar {
589
596
  }
590
597
  set(date, unit, value) {
591
598
  const clone = new Date(date.valueOf());
592
- const jDate = this.toJalali(clone);
599
+ const jDate = this.toJalaali(clone);
593
600
  switch (unit) {
594
601
  case 'second':
595
602
  clone.setHours(clone.getHours(), clone.getMinutes(), value, clone.getMilliseconds());
@@ -673,20 +680,23 @@ class JalaliCalendar {
673
680
  case 'month': {
674
681
  const jy = this.year(date);
675
682
  const jm = this.monthOfYear(date);
676
- const jd = this.monthLength(jy, jm);
683
+ const jd = this.jalaaliMonthLength(jy, jm);
677
684
  const gDate = this.toGregorian(jy, jm, jd);
678
685
  return new AXDateTime(gDate, this.name()).endOf('day');
679
686
  }
680
687
  case 'year':
681
688
  let jy = this.year(date);
682
- const gDate = this.toGregorian(jy, 12, this.monthLength(jy, 12));
689
+ const gDate = this.toGregorian(jy, 12, this.jalaaliMonthLength(jy, 12));
683
690
  return new AXDateTime(gDate, this.name()).endOf('day');
684
691
  }
685
692
  }
686
- toJalali(date) {
687
- const gy = date.getFullYear();
688
- const gm = date.getMonth() + 1;
689
- const gd = date.getDate();
693
+ /*
694
+ Converts a Gregorian date to Jalaali.
695
+ */
696
+ toJalaali(date) {
697
+ let gd = date.getDate();
698
+ let gm = date.getMonth() + 1;
699
+ let gy = date.getFullYear();
690
700
  const r = this.d2j(this.g2d(gy, gm, gd));
691
701
  return {
692
702
  year: r.jy,
@@ -695,47 +705,75 @@ class JalaliCalendar {
695
705
  };
696
706
  }
697
707
  /*
698
- Converts a Jalaali date to Gregorian.
699
- */
708
+ Converts a Jalaali date to Gregorian.
709
+ */
700
710
  toGregorian(jy, jm, jd) {
701
711
  const g = this.d2g(this.j2d(jy, jm, jd));
702
712
  return new Date(g.gy, g.gm - 1, g.gd);
703
713
  }
704
714
  /*
705
- Checks whether a Jalaali date is valid or not.
706
- */
707
- isValid(jy, jm, jd) {
708
- return (jy >= -61 && jy <= 3177 && jm >= 1 && jm <= 12 && jd >= 1 && jd <= this.monthLength(jy, jm));
715
+ Checks whether a Jalaali date is valid or not.
716
+ */
717
+ isValidJalaaliDate(jy, jm, jd) {
718
+ return (jy >= -61 &&
719
+ jy <= 3177 &&
720
+ jm >= 1 &&
721
+ jm <= 12 &&
722
+ jd >= 1 &&
723
+ jd <= this.jalaaliMonthLength(jy, jm));
709
724
  }
710
725
  /*
711
- Is this a leap year or not?
712
- */
713
- isLeapYear(jy) {
714
- return this.jalCal(jy).leap === 0;
726
+ Is this a leap year or not?
727
+ */
728
+ isLeapJalaaliYear(jy) {
729
+ return this.jalCalLeap(jy) === 0;
715
730
  }
716
731
  /*
717
- Number of days in a given month in a Jalaali year.
718
- */
719
- monthLength(jy, jm) {
732
+ Number of days in a given month in a Jalaali year.
733
+ */
734
+ jalaaliMonthLength(jy, jm) {
720
735
  if (jm <= 6)
721
736
  return 31;
722
737
  if (jm <= 11)
723
738
  return 30;
724
- if (this.isLeapYear(jy))
739
+ if (this.isLeapJalaaliYear(jy))
725
740
  return 30;
726
741
  return 29;
727
742
  }
728
- jalCal(jy) {
729
- // Jalaali years starting the 33-year rule.
730
- let breaks = [
731
- -61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210, 1635, 2060, 2097, 2192, 2262, 2324,
732
- 2394, 2456, 3178,
733
- ], bl = breaks.length, gy = jy + 621, leapJ = -14, jp = breaks[0], jm, jump, leap, leapG, march, n, i;
734
- if (jy < jp || jy >= breaks[bl - 1])
743
+ /*
744
+ This determines if the Jalaali (Persian) year is
745
+ leap (366-day long) or is the common year (365 days)
746
+
747
+ @param jy Jalaali calendar year (-61 to 3177)
748
+ @returns number of years since the last leap year (0 to 4)
749
+ */
750
+ jalCalLeap(jy) {
751
+ let bl = this.breaks.length, jp = this.breaks[0], jm, jump, leap, n, i;
752
+ if (jy < jp || jy >= this.breaks[bl - 1])
753
+ throw new Error('Invalid Jalaali year ' + jy);
754
+ for (i = 1; i < bl; i += 1) {
755
+ jm = this.breaks[i];
756
+ jump = jm - jp;
757
+ if (jy < jm)
758
+ break;
759
+ jp = jm;
760
+ }
761
+ n = jy - jp;
762
+ if (jump - n < 6)
763
+ n = n - jump + this.div(jump + 4, 33) * 33;
764
+ leap = this.mod(this.mod(n + 1, 33) - 1, 4);
765
+ if (leap === -1) {
766
+ leap = 4;
767
+ }
768
+ return leap;
769
+ }
770
+ jalCal(jy, withoutLeap) {
771
+ let bl = this.breaks.length, gy = jy + 621, leapJ = -14, jp = this.breaks[0], jm, jump, leap, leapG, march, n, i;
772
+ if (jy < jp || jy >= this.breaks[bl - 1])
735
773
  throw new Error('Invalid Jalaali year ' + jy);
736
774
  // Find the limiting years for the Jalaali year jy.
737
775
  for (i = 1; i < bl; i += 1) {
738
- jm = breaks[i];
776
+ jm = this.breaks[i];
739
777
  jump = jm - jp;
740
778
  if (jy < jm)
741
779
  break;
@@ -752,6 +790,9 @@ class JalaliCalendar {
752
790
  leapG = this.div(gy, 4) - this.div((this.div(gy, 100) + 1) * 3, 4) - 150;
753
791
  // Determine the Gregorian date of Farvardin the 1st.
754
792
  march = 20 + leapJ - leapG;
793
+ // return with gy and march when we don't need leap
794
+ if (withoutLeap)
795
+ return { gy: gy, march: march };
755
796
  // Find how many years have passed since the last leap year.
756
797
  if (jump - n < 6)
757
798
  n = n - jump + this.div(jump + 4, 33) * 33;
@@ -765,28 +806,13 @@ class JalaliCalendar {
765
806
  march: march,
766
807
  };
767
808
  }
768
- /*
769
- Converts a date of the Jalaali calendar to the Julian Day number.
770
- @param jy Jalaali year (1 to 3100)
771
- @param jm Jalaali month (1 to 12)
772
- @param jd Jalaali day (1 to 29/31)
773
- @return Julian Day number
774
- */
775
809
  j2d(jy, jm, jd) {
776
- let r = this.jalCal(jy);
810
+ let r = this.jalCal(jy, true);
777
811
  return this.g2d(r.gy, 3, r.march) + (jm - 1) * 31 - this.div(jm, 7) * (jm - 7) + jd - 1;
778
812
  }
779
- /*
780
- Converts the Julian Day number to a date in the Jalaali calendar.
781
- @param jdn Julian Day number
782
- @return
783
- jy: Jalaali year (1 to 3100)
784
- jm: Jalaali month (1 to 12)
785
- jd: Jalaali day (1 to 29/31)
786
- */
787
813
  d2j(jdn) {
788
814
  let gy = this.d2g(jdn).gy, // Calculate Gregorian year (gy).
789
- jy = gy - 621, r = this.jalCal(jy), jdn1f = this.g2d(gy, 3, r.march), jd, jm, k;
815
+ jy = gy - 621, r = this.jalCal(jy, false), jdn1f = this.g2d(gy, 3, r.march), jd, jm, k;
790
816
  // Find number of days that passed since 1 Farvardin.
791
817
  k = jdn - jdn1f;
792
818
  if (k >= 0) {
@@ -842,14 +868,27 @@ class JalaliCalendar {
842
868
  gd: gd,
843
869
  };
844
870
  }
871
+ jalaaliWeek(jy, jm, jd) {
872
+ let dayOfWeek = this.jalaaliToDateObject(jy, jm, jd, 0, 0, 0, 0).getDay();
873
+ let startDayDifference = dayOfWeek == 6 ? 0 : -(dayOfWeek + 1);
874
+ let endDayDifference = 6 + startDayDifference;
875
+ return {
876
+ saturday: this.d2j(this.j2d(jy, jm, jd + startDayDifference)),
877
+ friday: this.d2j(this.j2d(jy, jm, jd + endDayDifference)),
878
+ };
879
+ }
880
+ jalaaliToDateObject(jy, jm, jd, h = 0, m = 0, s = 0, ms = 0) {
881
+ let gregorianCalenderDate = this.toGregorian(jy, jm, jd);
882
+ return new Date(gregorianCalenderDate.getFullYear(), gregorianCalenderDate.getMonth() - 1, gregorianCalenderDate.getDate(), h || 0, m || 0, s || 0, ms || 0);
883
+ }
845
884
  /*
846
- Utility helper functions.
847
- */
885
+ Utility helper functions.
886
+ */
848
887
  div(a, b) {
849
- return a / b;
888
+ return ~~(a / b);
850
889
  }
851
890
  mod(a, b) {
852
- return a - (a / b) * b;
891
+ return a - ~~(a / b) * b;
853
892
  }
854
893
  }
855
894
 
@@ -872,11 +911,11 @@ class AXDateTimeModule {
872
911
  }
873
912
  });
874
913
  }
875
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: AXDateTimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
876
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.5", ngImport: i0, type: AXDateTimeModule, declarations: [AXDateTimePipe], exports: [AXDateTimePipe] }); }
877
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: AXDateTimeModule }); }
914
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AXDateTimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
915
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.6", ngImport: i0, type: AXDateTimeModule, declarations: [AXDateTimePipe], exports: [AXDateTimePipe] }); }
916
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AXDateTimeModule }); }
878
917
  }
879
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: AXDateTimeModule, decorators: [{
918
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: AXDateTimeModule, decorators: [{
880
919
  type: NgModule,
881
920
  args: [{
882
921
  imports: [],