tnp-helpers 16.0.4 → 16.0.6

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 (174) hide show
  1. package/assets/shared/shared_folder_info.txt +1 -1
  2. package/browser/README.md +24 -24
  3. package/browser/esm2020/lib/base-component.mjs +50 -0
  4. package/browser/esm2020/lib/base-formly-component.mjs +113 -0
  5. package/browser/esm2020/lib/helpers-browser.mjs +47 -0
  6. package/browser/esm2020/lib/helpers.mjs +286 -0
  7. package/browser/esm2020/lib/long-press.directive.mjs +113 -0
  8. package/browser/esm2020/lib/project.mjs +430 -0
  9. package/browser/esm2020/lib/resize-service.mjs +22 -0
  10. package/browser/fesm2015/tnp-helpers.mjs +1741 -0
  11. package/browser/fesm2015/tnp-helpers.mjs.map +1 -0
  12. package/{client/fesm2022 → browser/fesm2020}/tnp-helpers.mjs +35 -39
  13. package/browser/{fesm2022 → fesm2020}/tnp-helpers.mjs.map +1 -1
  14. package/browser/lib/base-component.d.ts +1 -1
  15. package/browser/lib/base-formly-component.d.ts +1 -1
  16. package/browser/lib/condition-wait.d.ts +1 -1
  17. package/browser/lib/long-press.directive.d.ts +1 -1
  18. package/browser/lib/project.d.ts +2 -2
  19. package/browser/package.json +12 -6
  20. package/client/README.md +24 -24
  21. package/client/esm2020/lib/base-component.mjs +50 -0
  22. package/client/esm2020/lib/base-formly-component.mjs +113 -0
  23. package/client/esm2020/lib/helpers-browser.mjs +47 -0
  24. package/client/esm2020/lib/helpers.mjs +286 -0
  25. package/client/esm2020/lib/long-press.directive.mjs +113 -0
  26. package/client/esm2020/lib/project.mjs +430 -0
  27. package/client/esm2020/lib/resize-service.mjs +22 -0
  28. package/client/fesm2015/tnp-helpers.mjs +1741 -0
  29. package/client/fesm2015/tnp-helpers.mjs.map +1 -0
  30. package/{browser/fesm2022 → client/fesm2020}/tnp-helpers.mjs +35 -39
  31. package/client/{fesm2022 → fesm2020}/tnp-helpers.mjs.map +1 -1
  32. package/client/lib/base-component.d.ts +1 -1
  33. package/client/lib/base-formly-component.d.ts +1 -1
  34. package/client/lib/condition-wait.d.ts +1 -1
  35. package/client/lib/long-press.directive.d.ts +1 -1
  36. package/client/lib/project.d.ts +2 -2
  37. package/client/package.json +75 -30
  38. package/index.js.map +1 -1
  39. package/lib/angular.helper.js +3 -3
  40. package/lib/angular.helper.js.map +1 -1
  41. package/lib/base-component.js +3 -3
  42. package/lib/base-component.js.map +1 -1
  43. package/lib/base-formly-component.js +3 -3
  44. package/lib/base-formly-component.js.map +1 -1
  45. package/lib/condition-wait.d.ts +1 -1
  46. package/lib/condition-wait.js.map +1 -1
  47. package/lib/constants.js.map +1 -1
  48. package/lib/dual-component-ctrl.js +3 -3
  49. package/lib/dual-component-ctrl.js.map +1 -1
  50. package/lib/firedev-models.js.map +1 -1
  51. package/lib/git-project.js.map +1 -1
  52. package/lib/helpers-array-obj.js.map +1 -1
  53. package/lib/helpers-browser.js +2 -1
  54. package/lib/helpers-browser.js.map +1 -1
  55. package/lib/helpers-cli-tool.backend.js.map +1 -1
  56. package/lib/helpers-console-gui.js.map +1 -1
  57. package/lib/helpers-dependencies.backend.js.map +1 -1
  58. package/lib/helpers-environment.js.map +1 -1
  59. package/lib/helpers-file-folders.backend.js.map +1 -1
  60. package/lib/helpers-git.backend.js +5 -1
  61. package/lib/helpers-git.backend.js.map +1 -1
  62. package/lib/helpers-json5.backend.js.map +1 -1
  63. package/lib/helpers-morphi-framework.backend.js.map +1 -1
  64. package/lib/helpers-network.backend.js.map +1 -1
  65. package/lib/helpers-npm.backend.js.map +1 -1
  66. package/lib/helpers-numbers.js.map +1 -1
  67. package/lib/helpers-path.backend.js.map +1 -1
  68. package/lib/helpers-process.backend.js.map +1 -1
  69. package/lib/helpers-strings-regexes.js.map +1 -1
  70. package/lib/helpers-strings.js.map +1 -1
  71. package/lib/helpers-system-terminal.backend.js.map +1 -1
  72. package/lib/helpers-vscode.backend.js.map +1 -1
  73. package/lib/helpers.js.map +1 -1
  74. package/lib/index.js.map +1 -1
  75. package/lib/long-press.directive.js +2 -1
  76. package/lib/long-press.directive.js.map +1 -1
  77. package/lib/merge-helpers.backend.d.ts +1 -1
  78. package/lib/merge-helpers.backend.js.map +1 -1
  79. package/lib/project.d.ts +2 -2
  80. package/lib/project.js +3 -4
  81. package/lib/project.js.map +1 -1
  82. package/lib/resize-service.js +2 -1
  83. package/lib/resize-service.js.map +1 -1
  84. package/lib/ts-code/index.js.map +1 -1
  85. package/lib/ts-code/ts-code-extractor.d.ts +1 -1
  86. package/lib/ts-code/ts-code-extractor.js.map +1 -1
  87. package/lib/ts-code/ts-code-modifier.backend.js.map +1 -1
  88. package/package.json +45 -5
  89. package/package.json_devDependencies.json +222 -222
  90. package/package.json_tnp.json5 +49 -49
  91. package/tmp-environment.json +39 -34
  92. package/websql/README.md +24 -24
  93. package/websql/esm2020/lib/base-component.mjs +50 -0
  94. package/websql/esm2020/lib/base-formly-component.mjs +113 -0
  95. package/websql/esm2020/lib/helpers-browser.mjs +47 -0
  96. package/websql/esm2020/lib/helpers.mjs +286 -0
  97. package/{browser/esm2022 → websql/esm2020}/lib/long-press.directive.mjs +7 -8
  98. package/websql/esm2020/lib/project.mjs +430 -0
  99. package/websql/esm2020/lib/resize-service.mjs +22 -0
  100. package/websql/fesm2015/tnp-helpers.mjs +1741 -0
  101. package/websql/fesm2015/tnp-helpers.mjs.map +1 -0
  102. package/websql/{fesm2022 → fesm2020}/tnp-helpers.mjs +35 -39
  103. package/websql/{fesm2022 → fesm2020}/tnp-helpers.mjs.map +1 -1
  104. package/websql/lib/base-component.d.ts +1 -1
  105. package/websql/lib/base-formly-component.d.ts +1 -1
  106. package/websql/lib/condition-wait.d.ts +1 -1
  107. package/websql/lib/long-press.directive.d.ts +1 -1
  108. package/websql/lib/project.d.ts +2 -2
  109. package/websql/package.json +12 -6
  110. package/browser/esm2022/lib/base-component.mjs +0 -51
  111. package/browser/esm2022/lib/base-formly-component.mjs +0 -114
  112. package/browser/esm2022/lib/helpers-browser.mjs +0 -48
  113. package/browser/esm2022/lib/helpers.mjs +0 -286
  114. package/browser/esm2022/lib/project.mjs +0 -431
  115. package/browser/esm2022/lib/resize-service.mjs +0 -23
  116. package/client/esm2022/lib/base-component.mjs +0 -51
  117. package/client/esm2022/lib/base-formly-component.mjs +0 -114
  118. package/client/esm2022/lib/helpers-browser.mjs +0 -48
  119. package/client/esm2022/lib/helpers.mjs +0 -286
  120. package/client/esm2022/lib/long-press.directive.mjs +0 -114
  121. package/client/esm2022/lib/project.mjs +0 -431
  122. package/client/esm2022/lib/resize-service.mjs +0 -23
  123. package/websql/esm2022/lib/base-component.mjs +0 -51
  124. package/websql/esm2022/lib/base-formly-component.mjs +0 -114
  125. package/websql/esm2022/lib/helpers-browser.mjs +0 -48
  126. package/websql/esm2022/lib/helpers.mjs +0 -286
  127. package/websql/esm2022/lib/long-press.directive.mjs +0 -114
  128. package/websql/esm2022/lib/project.mjs +0 -431
  129. package/websql/esm2022/lib/resize-service.mjs +0 -23
  130. /package/browser/{esm2022 → esm2020}/lib/angular.helper.mjs +0 -0
  131. /package/browser/{esm2022 → esm2020}/lib/condition-wait.mjs +0 -0
  132. /package/browser/{esm2022 → esm2020}/lib/constants.mjs +0 -0
  133. /package/browser/{esm2022 → esm2020}/lib/dual-component-ctrl.mjs +0 -0
  134. /package/browser/{esm2022 → esm2020}/lib/firedev-models.mjs +0 -0
  135. /package/browser/{esm2022 → esm2020}/lib/helpers-array-obj.mjs +0 -0
  136. /package/browser/{esm2022 → esm2020}/lib/helpers-console-gui.mjs +0 -0
  137. /package/browser/{esm2022 → esm2020}/lib/helpers-environment.mjs +0 -0
  138. /package/browser/{esm2022 → esm2020}/lib/helpers-numbers.mjs +0 -0
  139. /package/browser/{esm2022 → esm2020}/lib/helpers-strings-regexes.mjs +0 -0
  140. /package/browser/{esm2022 → esm2020}/lib/helpers-strings.mjs +0 -0
  141. /package/browser/{esm2022 → esm2020}/lib/index.mjs +0 -0
  142. /package/browser/{esm2022 → esm2020}/public-api.mjs +0 -0
  143. /package/browser/{esm2022 → esm2020}/tnp-helpers.mjs +0 -0
  144. /package/browser/{index.d.ts → tnp-helpers.d.ts} +0 -0
  145. /package/client/{esm2022 → esm2020}/lib/angular.helper.mjs +0 -0
  146. /package/client/{esm2022 → esm2020}/lib/condition-wait.mjs +0 -0
  147. /package/client/{esm2022 → esm2020}/lib/constants.mjs +0 -0
  148. /package/client/{esm2022 → esm2020}/lib/dual-component-ctrl.mjs +0 -0
  149. /package/client/{esm2022 → esm2020}/lib/firedev-models.mjs +0 -0
  150. /package/client/{esm2022 → esm2020}/lib/helpers-array-obj.mjs +0 -0
  151. /package/client/{esm2022 → esm2020}/lib/helpers-console-gui.mjs +0 -0
  152. /package/client/{esm2022 → esm2020}/lib/helpers-environment.mjs +0 -0
  153. /package/client/{esm2022 → esm2020}/lib/helpers-numbers.mjs +0 -0
  154. /package/client/{esm2022 → esm2020}/lib/helpers-strings-regexes.mjs +0 -0
  155. /package/client/{esm2022 → esm2020}/lib/helpers-strings.mjs +0 -0
  156. /package/client/{esm2022 → esm2020}/lib/index.mjs +0 -0
  157. /package/client/{esm2022 → esm2020}/public-api.mjs +0 -0
  158. /package/client/{esm2022 → esm2020}/tnp-helpers.mjs +0 -0
  159. /package/client/{index.d.ts → tnp-helpers.d.ts} +0 -0
  160. /package/websql/{esm2022 → esm2020}/lib/angular.helper.mjs +0 -0
  161. /package/websql/{esm2022 → esm2020}/lib/condition-wait.mjs +0 -0
  162. /package/websql/{esm2022 → esm2020}/lib/constants.mjs +0 -0
  163. /package/websql/{esm2022 → esm2020}/lib/dual-component-ctrl.mjs +0 -0
  164. /package/websql/{esm2022 → esm2020}/lib/firedev-models.mjs +0 -0
  165. /package/websql/{esm2022 → esm2020}/lib/helpers-array-obj.mjs +0 -0
  166. /package/websql/{esm2022 → esm2020}/lib/helpers-console-gui.mjs +0 -0
  167. /package/websql/{esm2022 → esm2020}/lib/helpers-environment.mjs +0 -0
  168. /package/websql/{esm2022 → esm2020}/lib/helpers-numbers.mjs +0 -0
  169. /package/websql/{esm2022 → esm2020}/lib/helpers-strings-regexes.mjs +0 -0
  170. /package/websql/{esm2022 → esm2020}/lib/helpers-strings.mjs +0 -0
  171. /package/websql/{esm2022 → esm2020}/lib/index.mjs +0 -0
  172. /package/websql/{esm2022 → esm2020}/public-api.mjs +0 -0
  173. /package/websql/{esm2022 → esm2020}/tnp-helpers.mjs +0 -0
  174. /package/websql/{index.d.ts → tnp-helpers.d.ts} +0 -0
@@ -0,0 +1,50 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { NavigationEnd } from '@angular/router';
3
+ import * as i0 from "@angular/core";
4
+ export class BaseComponent {
5
+ constructor() {
6
+ // @ts-ignore
7
+ this.model = {};
8
+ this.handlers = [];
9
+ }
10
+ ngOnDestroy() {
11
+ this.handlers.forEach(h => h.unsubscribe());
12
+ this.handlers.length = 0;
13
+ }
14
+ }
15
+ BaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
16
+ BaseComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: BaseComponent, selector: "app-base-component-meta", inputs: { model: "model" }, ngImport: i0, template: '<div></div>', isInline: true });
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BaseComponent, decorators: [{
18
+ type: Component,
19
+ args: [{
20
+ selector: 'app-base-component-meta',
21
+ template: '<div></div>'
22
+ }]
23
+ }], propDecorators: { model: [{
24
+ type: Input
25
+ }] } });
26
+ const isCalledNgInitAfterInternalRefresh = Symbol();
27
+ export class BaseComponentForRouter extends BaseComponent {
28
+ constructor(__router) {
29
+ super();
30
+ this.__router = __router;
31
+ this[isCalledNgInitAfterInternalRefresh] = false;
32
+ }
33
+ isCalledNgInitAfterInternalRefresh() {
34
+ return !!this[isCalledNgInitAfterInternalRefresh];
35
+ }
36
+ reloadNgOninitOnUrlChange() {
37
+ this.handlers.push(this.__router.events.subscribe(event => {
38
+ if (event instanceof NavigationEnd && this['ngOnInit']) {
39
+ this[isCalledNgInitAfterInternalRefresh] = true;
40
+ this['ngOnInit']();
41
+ if (this[isCalledNgInitAfterInternalRefresh]) {
42
+ this[isCalledNgInitAfterInternalRefresh] = false;
43
+ }
44
+ }
45
+ }));
46
+ }
47
+ }
48
+ ;
49
+ ({}); // @--end-of-file-for-module=tnp-helpers lib/base-component.ts
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItYnVuZGxlL3RucC1oZWxwZXJzL3Byb2plY3RzL3RucC1oZWxwZXJzL3NyYy9saWIvYmFzZS1jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFPeEQsTUFBTSxPQUFnQixhQUFhO0lBSm5DO1FBTUUsYUFBYTtRQUNKLFVBQUssR0FBUSxFQUFFLENBQUM7UUFFekIsYUFBUSxHQUFtQixFQUFFLENBQUM7S0FRL0I7SUFOQyxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDM0IsQ0FBQzs7MkdBVm1CLGFBQWE7K0ZBQWIsYUFBYSwyRkFGdkIsYUFBYTs0RkFFSCxhQUFhO2tCQUpsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFFBQVEsRUFBRSxhQUFhO2lCQUN4Qjs4QkFJVSxLQUFLO3NCQUFiLEtBQUs7O0FBWVIsTUFBTSxrQ0FBa0MsR0FBRyxNQUFNLEVBQUUsQ0FBQTtBQUVuRCxNQUFNLE9BQWdCLHNCQUF1QixTQUFRLGFBQWE7SUFFaEUsWUFDVSxRQUFnQjtRQUV4QixLQUFLLEVBQUUsQ0FBQztRQUZBLGFBQVEsR0FBUixRQUFRLENBQVE7UUFHeEIsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ25ELENBQUM7SUFHUyxrQ0FBa0M7UUFDMUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUNTLHlCQUF5QjtRQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDeEQsSUFBSSxLQUFLLFlBQVksYUFBYSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDdEQsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUNoRCxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxJQUFJLENBQUMsa0NBQWtDLENBQUMsRUFBRTtvQkFDNUMsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLEdBQUcsS0FBSyxDQUFDO2lCQUNsRDthQUNGO1FBQ0gsQ0FBQyxDQUFRLENBQUMsQ0FBQztJQUNiLENBQUM7Q0FFRjtBQUdBLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsOERBQThEIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE9uRGVzdHJveSwgT25Jbml0LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1iYXNlLWNvbXBvbmVudC1tZXRhJyxcbiAgdGVtcGxhdGU6ICc8ZGl2PjwvZGl2Pidcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBASW5wdXQoKSBtb2RlbDogYW55ID0ge307XG5cbiAgaGFuZGxlcnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5oYW5kbGVycy5mb3JFYWNoKGggPT4gaC51bnN1YnNjcmliZSgpKTtcbiAgICB0aGlzLmhhbmRsZXJzLmxlbmd0aCA9IDA7XG4gIH1cblxuXG59XG5cbmNvbnN0IGlzQ2FsbGVkTmdJbml0QWZ0ZXJJbnRlcm5hbFJlZnJlc2ggPSBTeW1ib2woKVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUNvbXBvbmVudEZvclJvdXRlciBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX19yb3V0ZXI6IFJvdXRlclxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXNbaXNDYWxsZWROZ0luaXRBZnRlckludGVybmFsUmVmcmVzaF0gPSBmYWxzZTtcbiAgfVxuXG5cbiAgcHJvdGVjdGVkIGlzQ2FsbGVkTmdJbml0QWZ0ZXJJbnRlcm5hbFJlZnJlc2goKSB7XG4gICAgcmV0dXJuICEhdGhpc1tpc0NhbGxlZE5nSW5pdEFmdGVySW50ZXJuYWxSZWZyZXNoXTtcbiAgfVxuICBwcm90ZWN0ZWQgcmVsb2FkTmdPbmluaXRPblVybENoYW5nZSgpIHtcbiAgICB0aGlzLmhhbmRsZXJzLnB1c2godGhpcy5fX3JvdXRlci5ldmVudHMuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQgJiYgdGhpc1snbmdPbkluaXQnXSkge1xuICAgICAgICB0aGlzW2lzQ2FsbGVkTmdJbml0QWZ0ZXJJbnRlcm5hbFJlZnJlc2hdID0gdHJ1ZTtcbiAgICAgICAgdGhpc1snbmdPbkluaXQnXSgpO1xuICAgICAgICBpZiAodGhpc1tpc0NhbGxlZE5nSW5pdEFmdGVySW50ZXJuYWxSZWZyZXNoXSkge1xuICAgICAgICAgIHRoaXNbaXNDYWxsZWROZ0luaXRBZnRlckludGVybmFsUmVmcmVzaF0gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pIGFzIGFueSk7XG4gIH1cblxufVxuXG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10bnAtaGVscGVycyBsaWIvYmFzZS1jb21wb25lbnQudHMiXX0=
@@ -0,0 +1,113 @@
1
+ import { FieldType } from '@ngx-formly/core';
2
+ import { Component, Input, Output, } from '@angular/core'; /* */
3
+ /* */
4
+ /* */
5
+ import { Log, Level } from 'ng2-logger/browser';
6
+ import { DualComponentController } from './dual-component-ctrl';
7
+ import { EventEmitter } from '@angular/core';
8
+ import * as i0 from "@angular/core";
9
+ const log = Log.create('base formly component', Level.__NOTHING);
10
+ export class BaseFormlyComponent extends FieldType {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.DualComponentController = DualComponentController;
14
+ this.ctrl = {};
15
+ this.change = new EventEmitter();
16
+ // @ts-ignore
17
+ this.handlers = [];
18
+ this.__field = {
19
+ templateOptions: {}
20
+ };
21
+ }
22
+ // @ts-ignore
23
+ get mode() {
24
+ return this.ctrl.mode;
25
+ }
26
+ // @ts-ignore
27
+ set mode(v) {
28
+ this.ctrl.mode = v;
29
+ }
30
+ // @ts-ignore
31
+ set model(v) {
32
+ this.ctrl.model = v;
33
+ }
34
+ get model() {
35
+ return this.ctrl.model;
36
+ }
37
+ // @ts-ignore
38
+ set key(value) {
39
+ if (this.ctrl && this.ctrl.isFormlyMode) {
40
+ return;
41
+ }
42
+ this.path = value;
43
+ }
44
+ get key() {
45
+ if (this.ctrl && this.ctrl.isFormlyMode) {
46
+ return this.field.key;
47
+ }
48
+ return this.path;
49
+ }
50
+ ngOnDestroy() {
51
+ this.handlers.forEach(h => h.unsubscribe());
52
+ this.handlers.length = 0;
53
+ }
54
+ ngAfterViewInit() {
55
+ }
56
+ ngOnInit() {
57
+ const isFormlyMode = !!this.field;
58
+ log.i(`isFormlyMode: ${isFormlyMode}`);
59
+ if (!isFormlyMode) {
60
+ const that = this;
61
+ Object.defineProperty(this, 'field', {
62
+ get: function () {
63
+ return that.__field;
64
+ },
65
+ set: function (v) {
66
+ that.__field = v;
67
+ }
68
+ });
69
+ }
70
+ const existed = this.ctrl;
71
+ this.ctrl = new this.DualComponentController(this, isFormlyMode);
72
+ // @ts-ignore
73
+ Object.keys(existed).forEach(key => {
74
+ this.ctrl[key] = existed[key];
75
+ });
76
+ // @ts-ignore
77
+ this.change.next(this.ctrl.value);
78
+ }
79
+ }
80
+ BaseFormlyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BaseFormlyComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
81
+ BaseFormlyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: BaseFormlyComponent, selector: "app-base-formly-component-meta", inputs: { pizda: "pizda", mode: "mode", disabled: "disabled", required: "required", label: "label", placeholder: "placeholder", defaultValue: "defaultValue", model: "model", path: "path", key: "key" }, outputs: { change: "change" }, usesInheritance: true, ngImport: i0, template: `<div></div>`, isInline: true });
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BaseFormlyComponent, decorators: [{
83
+ type: Component,
84
+ args: [{
85
+ selector: 'app-base-formly-component-meta',
86
+ template: `<div></div>`
87
+ }]
88
+ }], propDecorators: { pizda: [{
89
+ type: Input
90
+ }], mode: [{
91
+ type: Input
92
+ }], disabled: [{
93
+ type: Input
94
+ }], required: [{
95
+ type: Input
96
+ }], label: [{
97
+ type: Input
98
+ }], placeholder: [{
99
+ type: Input
100
+ }], defaultValue: [{
101
+ type: Input
102
+ }], model: [{
103
+ type: Input
104
+ }], path: [{
105
+ type: Input
106
+ }], change: [{
107
+ type: Output
108
+ }], key: [{
109
+ type: Input
110
+ }] } });
111
+ ;
112
+ ({}); // @--end-of-file-for-module=tnp-helpers lib/base-formly-component.ts
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1mb3JtbHktY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS90bnAtaGVscGVycy9wcm9qZWN0cy90bnAtaGVscGVycy9zcmMvbGliL2Jhc2UtZm9ybWx5LWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGtCQUFrQixDQUFDO0FBRWhFLE9BQU8sRUFBSSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sR0FBa0IsTUFBTSxlQUFlLENBQUMsQ0FBQSxLQUFLO0FBSXhGLEtBQUs7QUFDTCxLQUFLO0FBRUwsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUU3QyxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLHVCQUF1QixFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQTtBQU9oRSxNQUFNLE9BQWdCLG1CQUNwQixTQUFRLFNBQVM7SUFMbkI7O1FBUVksNEJBQXVCLEdBQUcsdUJBQXVCLENBQUM7UUFDckQsU0FBSSxHQUFNLEVBQVMsQ0FBQztRQTBCakIsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFpQnRDLGFBQWE7UUFFSCxhQUFRLEdBQW1CLEVBQUUsQ0FBQztRQVloQyxZQUFPLEdBQUc7WUFDaEIsZUFBZSxFQUFFLEVBRWhCO1NBQ21CLENBQUM7S0F5Q3hCO0lBbkdDLGFBQWE7SUFDYixJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxhQUFhO0lBQ2IsSUFBYSxJQUFJLENBQUMsQ0FBQztRQUNqQixJQUFJ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RztzQkFBZixLQUFLOztBQTJFUCxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHFFQUFxRSIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGaWVsZFR5cGUsIEZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5cbmltcG9ydCB7ICAgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEFmdGVyVmlld0luaXQsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7LyogKi9cbi8qICovXG5cbmltcG9ydCB7ICAgRm9ybUNvbnRyb2wsICAgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnOy8qICovXG4vKiAqL1xuLyogKi9cblxuaW1wb3J0IHsgTG9nLCBMZXZlbCB9IGZyb20gJ25nMi1sb2dnZXIvYnJvd3Nlcic7XG5pbXBvcnQgeyBEdWFsQ29tcG9uZW50Q29udHJvbGxlciB9IGZyb20gJy4vZHVhbC1jb21wb25lbnQtY3RybCc7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuY29uc3QgbG9nID0gTG9nLmNyZWF0ZSgnYmFzZSBmb3JtbHkgY29tcG9uZW50JywgTGV2ZWwuX19OT1RISU5HKVxuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1iYXNlLWZvcm1seS1jb21wb25lbnQtbWV0YScsXG4gIHRlbXBsYXRlOiBgPGRpdj48L2Rpdj5gXG59KSAvLyBAdHMtaWdub3JlXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUZvcm1seUNvbXBvbmVudDxUIGV4dGVuZHMgRHVhbENvbXBvbmVudENvbnRyb2xsZXIgPSBEdWFsQ29tcG9uZW50Q29udHJvbGxlcj5cbiAgZXh0ZW5kcyBGaWVsZFR5cGVcbiAgaW1wbGVtZW50cyBPbkluaXQsIFBhcnRpYWw8RHVhbENvbXBvbmVudENvbnRyb2xsZXI8VD4+LCBBZnRlclZpZXdJbml0IHtcblxuICBwcm90ZWN0ZWQgRHVhbENvbXBvbmVudENvbnRyb2xsZXIgPSBEdWFsQ29tcG9uZW50Q29udHJvbGxlcjtcbiAgcHVibGljIGN0cmw6IFQgPSB7fSBhcyBhbnk7XG4gIEBJbnB1dCgpIHBpemRhOiBhbnk7XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBnZXQgbW9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jdHJsLm1vZGU7XG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIEBJbnB1dCgpIHNldCBtb2RlKHYpIHtcbiAgICB0aGlzLmN0cmwubW9kZSA9IHY7XG4gIH1cbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuO1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICBASW5wdXQoKSBkZWZhdWx0VmFsdWU6IFQ7XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBASW5wdXQoKSBzZXQgbW9kZWwodikge1xuICAgIHRoaXMuY3RybC5tb2RlbCA9IHY7XG4gIH1cbiAgZ2V0IG1vZGVsKCkge1xuICAgIHJldHVybiB0aGlzLmN0cmwubW9kZWw7XG4gIH1cbiAgQElucHV0KCkgcGF0aDogc3RyaW5nO1xuICBAT3V0cHV0KCkgY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG5cbiAgLy8gQHRzLWlnbm9yZVxuICBASW5wdXQoKSBzZXQga2V5KHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5jdHJsICYmIHRoaXMuY3RybC5pc0Zvcm1seU1vZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5wYXRoID0gdmFsdWU7XG4gIH1cbiAgZ2V0IGtleSgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmN0cmwgJiYgdGhpcy5jdHJsLmlzRm9ybWx5TW9kZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZmllbGQua2V5IGFzIGFueTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucGF0aDtcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcblxuICBwcm90ZWN0ZWQgaGFuZGxlcnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5oYW5kbGVycy5mb3JFYWNoKGggPT4gaC51bnN1YnNjcmliZSgpKTtcbiAgICB0aGlzLmhhbmRsZXJzLmxlbmd0aCA9IDA7XG5cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcblxuICB9XG5cbiAgcHJpdmF0ZSBfX2ZpZWxkID0ge1xuICAgIHRlbXBsYXRlT3B0aW9uczoge1xuXG4gICAgfVxuICB9IGFzIEZvcm1seUZpZWxkQ29uZmlnO1xuXG4gIG5nT25Jbml0KCkge1xuXG5cbiAgICBjb25zdCBpc0Zvcm1seU1vZGUgPSAhIXRoaXMuZmllbGQ7XG4gICAgbG9nLmkoYGlzRm9ybWx5TW9kZTogJHtpc0Zvcm1seU1vZGV9YCk7XG4gICAgaWYgKCFpc0Zvcm1seU1vZGUpIHtcbiAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdmaWVsZCcsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoYXQuX19maWVsZDtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAodikge1xuICAgICAgICAgIHRoYXQuX19maWVsZCA9IHY7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgY29uc3QgZXhpc3RlZCA9IHRoaXMuY3RybDtcbiAgICB0aGlzLmN0cmwgPSBuZXcgKHRoaXMuRHVhbENvbXBvbmVudENvbnRyb2xsZXIgYXMgYW55KSh0aGlzLCBpc0Zvcm1seU1vZGUpO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBPYmplY3Qua2V5cyhleGlzdGVkKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICB0aGlzLmN0cmxba2V5XSA9IGV4aXN0ZWRba2V5XTtcbiAgICB9KTtcblxuXG5cblxuXG5cblxuXG5cblxuXG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdGhpcy5jaGFuZ2UubmV4dCh0aGlzLmN0cmwudmFsdWUpO1xuICB9XG5cbn1cblxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dG5wLWhlbHBlcnMgbGliL2Jhc2UtZm9ybWx5LWNvbXBvbmVudC50cyJdfQ==
@@ -0,0 +1,47 @@
1
+ const key = Symbol('[firedev-helpers] helper browser key');
2
+ export class HelpersBrowaser {
3
+ constructor(win) {
4
+ this.init = (() => {
5
+ const win = this.win;
6
+ if (!win[key]) {
7
+ win[key] = new HelpersBrowaser(win);
8
+ }
9
+ HelpersBrowaser.inst = win[key];
10
+ })();
11
+ win.addEventListener("beforeunload", (e) => {
12
+ win.sessionStorage.tabId = this.tabId;
13
+ return null;
14
+ });
15
+ setTimeout(() => {
16
+ if (win.sessionStorage?.tabId) {
17
+ // @ts-ignore
18
+ this.tabId = Number(win.sessionStorage.tabId);
19
+ win.sessionStorage.removeItem("tabId");
20
+ }
21
+ else {
22
+ // @ts-ignore
23
+ this.tabId = Math.floor(Math.random() * 1000000) + (new Date()).getTime();
24
+ }
25
+ HelpersBrowaser.callbacks.forEach((c) => {
26
+ c(this);
27
+ });
28
+ });
29
+ }
30
+ static onInit(callback) {
31
+ this.callbacks.push(callback);
32
+ }
33
+ get win() {
34
+ let win = window;
35
+ return win;
36
+ }
37
+ get tabIdSessionStorage() {
38
+ return Number(this.win.sessionStorage?.tabId) || 0;
39
+ }
40
+ static get instance() {
41
+ return HelpersBrowaser.inst;
42
+ }
43
+ }
44
+ HelpersBrowaser.callbacks = [];
45
+ ;
46
+ ({}); // @--end-of-file-for-module=tnp-helpers lib/helpers-browser.ts
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy1icm93c2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS90bnAtaGVscGVycy9wcm9qZWN0cy90bnAtaGVscGVycy9zcmMvbGliL2hlbHBlcnMtYnJvd3Nlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsc0NBQXNDLENBQUMsQ0FBQTtBQUUxRCxNQUFNLE9BQU8sZUFBZTtJQTRCMUIsWUFBb0IsR0FBVztRQVQvQixTQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDWCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBRXJCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2IsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3JDO1lBQ0QsZUFBZSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUlILEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN6QyxHQUFHLENBQUMsY0FBYyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ3RDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7UUFFSCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBRWQsSUFBSSxHQUFHLENBQUMsY0FBYyxFQUFFLEtBQUssRUFBRTtnQkFDN0IsYUFBYTtnQkFDYixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM5QyxHQUFHLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUN4QztpQkFDSTtnQkFDSCxhQUFhO2dCQUNiLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDM0U7WUFDRCxlQUFlLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUN0QyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDVixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFBO0lBR0osQ0FBQztJQWpERCxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQXVDO1FBQ25ELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFJLEdBQUc7UUFDTCxJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUM7UUFDakIsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsSUFBWSxtQkFBbUI7UUFDN0IsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUF5Q0QsTUFBTSxLQUFLLFFBQVE7UUFDakIsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDO0lBQzlCLENBQUM7O0FBdkRjLHlCQUFTLEdBQUcsRUFBRSxDQUFDO0FBZ0UvQixDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLCtEQUErRCIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5cbmNvbnN0IGtleSA9IFN5bWJvbCgnW2ZpcmVkZXYtaGVscGVyc10gaGVscGVyIGJyb3dzZXIga2V5JylcblxuZXhwb3J0IGNsYXNzIEhlbHBlcnNCcm93YXNlciB7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY2FsbGJhY2tzID0gW107XG4gIHN0YXRpYyBvbkluaXQoY2FsbGJhY2s6IChpbnM6IEhlbHBlcnNCcm93YXNlcikgPT4gYW55KSB7XG4gICAgdGhpcy5jYWxsYmFja3MucHVzaChjYWxsYmFjayk7XG4gIH1cblxuICBnZXQgd2luKCkge1xuICAgIGxldCB3aW4gPSB3aW5kb3c7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHRhYklkU2Vzc2lvblN0b3JhZ2UoKSB7XG4gICAgcmV0dXJuIE51bWJlcih0aGlzLndpbi5zZXNzaW9uU3RvcmFnZT8udGFiSWQpIHx8IDA7XG4gIH1cblxuICByZWFkb25seSB0YWJJZDogbnVtYmVyO1xuXG4gIHByaXZhdGUgc3RhdGljIGluc3Q6IEhlbHBlcnNCcm93YXNlcjtcbiAgaW5pdCA9ICgoKSA9PiB7XG4gICAgY29uc3Qgd2luID0gdGhpcy53aW47XG5cbiAgICBpZiAoIXdpbltrZXldKSB7XG4gICAgICB3aW5ba2V5XSA9IG5ldyBIZWxwZXJzQnJvd2FzZXIod2luKTtcbiAgICB9XG4gICAgSGVscGVyc0Jyb3dhc2VyLmluc3QgPSB3aW5ba2V5XTtcbiAgfSkoKTtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHdpbjogV2luZG93KSB7XG5cbiAgICB3aW4uYWRkRXZlbnRMaXN0ZW5lcihcImJlZm9yZXVubG9hZFwiLCAoZSkgPT4ge1xuICAgICAgd2luLnNlc3Npb25TdG9yYWdlLnRhYklkID0gdGhpcy50YWJJZDtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0pO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG5cbiAgICAgIGlmICh3aW4uc2Vzc2lvblN0b3JhZ2U/LnRhYklkKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGhpcy50YWJJZCA9IE51bWJlcih3aW4uc2Vzc2lvblN0b3JhZ2UudGFiSWQpO1xuICAgICAgICB3aW4uc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShcInRhYklkXCIpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGhpcy50YWJJZCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwMDAwMDApICsgKG5ldyBEYXRlKCkpLmdldFRpbWUoKTtcbiAgICAgIH1cbiAgICAgIEhlbHBlcnNCcm93YXNlci5jYWxsYmFja3MuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICBjKHRoaXMpO1xuICAgICAgfSk7XG4gICAgfSlcblxuXG4gIH1cblxuXG4gIHN0YXRpYyBnZXQgaW5zdGFuY2UoKSB7XG4gICAgcmV0dXJuIEhlbHBlcnNCcm93YXNlci5pbnN0O1xuICB9XG5cbn1cblxuXG5cblxuXG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10bnAtaGVscGVycyBsaWIvaGVscGVycy1icm93c2VyLnRzIl19
@@ -0,0 +1,286 @@
1
+ import { _ } from 'tnp-core/browser';
2
+ import { HelpersArrayObj } from './helpers-array-obj';
3
+ import { HelpersStringsRegexes } from './helpers-strings-regexes';
4
+ import { HelpersEnvironment } from './helpers-environment';
5
+ import { HelpersStrings } from './helpers-strings';
6
+ import { HelpersConsoleGui } from './helpers-console-gui';
7
+ import { conditionWait } from './condition-wait';
8
+ import { Helpers } from './index';
9
+ import { CLASS } from 'typescript-class-helpers/browser';
10
+ import { Morphi } from 'morphi/browser';
11
+ import { CoreHelpers } from 'tnp-core/browser';
12
+ import { HelpersNumber } from './helpers-numbers';
13
+ import { HelpersBrowaser } from './helpers-browser';
14
+ import { NgHelpers } from './angular.helper';
15
+ export function applyMixins(derivedCtor, baseCtors) {
16
+ baseCtors.forEach(baseCtor => {
17
+ Object.getOwnPropertyNames(baseCtor.prototype).forEach(name => {
18
+ Object.defineProperty(derivedCtor.prototype, name, Object.getOwnPropertyDescriptor(baseCtor.prototype, name));
19
+ });
20
+ });
21
+ }
22
+ // @ts-ignore
23
+ export class HelpersTnp extends CoreHelpers {
24
+ constructor(
25
+ /* */
26
+ /* */
27
+ /* */
28
+ /* */
29
+ /* */
30
+ /* */
31
+ /* */
32
+ /* */
33
+ /* */
34
+ /* */
35
+ /* */
36
+ /* */
37
+ /* */
38
+ arrays = new HelpersArrayObj(), strings = new HelpersStrings(), numbers = new HelpersNumber(), consoleGui = new HelpersConsoleGui(), browser = HelpersBrowaser.instance, ng = NgHelpers) {
39
+ super();
40
+ this.arrays = arrays;
41
+ this.strings = strings;
42
+ this.numbers = numbers;
43
+ this.consoleGui = consoleGui;
44
+ this.browser = browser;
45
+ this.ng = ng;
46
+ this.conditionWait = conditionWait;
47
+ /* */
48
+ /* */
49
+ /* */
50
+ /* */
51
+ /* */
52
+ /* */
53
+ /* */
54
+ /* */
55
+ /* */
56
+ /* */
57
+ /* */
58
+ /* */
59
+ /* */
60
+ /* */
61
+ /* */
62
+ /* */
63
+ /* */
64
+ /* */
65
+ /* */
66
+ /* */
67
+ /* */
68
+ /* */
69
+ /* */
70
+ /* */
71
+ /* */
72
+ /* */
73
+ /* */
74
+ /* */
75
+ /* */
76
+ /* */
77
+ /* */
78
+ /* */
79
+ /* */
80
+ /* */
81
+ /* */
82
+ /* */
83
+ /* */
84
+ /* */
85
+ /* */
86
+ /* */
87
+ /* */
88
+ /* */
89
+ /* */
90
+ /* */
91
+ /* */
92
+ /* */
93
+ /* */
94
+ /* */
95
+ /* */
96
+ /* */
97
+ /* */
98
+ /* */
99
+ /* */
100
+ /* */
101
+ /* */
102
+ /* */
103
+ /* */
104
+ /* */
105
+ /* */
106
+ /* */
107
+ /* */
108
+ /* */
109
+ /* */
110
+ /* */
111
+ /* */
112
+ /* */
113
+ /* */
114
+ /* */
115
+ /* */
116
+ /* */
117
+ /* */
118
+ /* */
119
+ /* */
120
+ /* */
121
+ /* */
122
+ /* */
123
+ /* */
124
+ /* */
125
+ this.applyMixins = applyMixins;
126
+ }
127
+ static get Instance() {
128
+ if (!HelpersTnp._instance) {
129
+ HelpersTnp._instance = new HelpersTnp();
130
+ }
131
+ return HelpersTnp._instance;
132
+ }
133
+ CLIWRAP(f, name) {
134
+ CLASS.setName(f, name);
135
+ return f;
136
+ }
137
+ /* */
138
+ /* */
139
+ /* */
140
+ /* */
141
+ /* */
142
+ /* */
143
+ /* */
144
+ /* */
145
+ /* */
146
+ /* */
147
+ /* */
148
+ /* */
149
+ /* */
150
+ /* */
151
+ /* */
152
+ /* */
153
+ /* */
154
+ /* */
155
+ /* */
156
+ /* */
157
+ /* */
158
+ /* */
159
+ /* */
160
+ /* */
161
+ /* */
162
+ /* */
163
+ /* */
164
+ /* */
165
+ /* */
166
+ /* */
167
+ /* */
168
+ /* */
169
+ /* */
170
+ /* */
171
+ /* */
172
+ /* */
173
+ /* */
174
+ /* */
175
+ async isElevated() {
176
+ /* */
177
+ /* */
178
+ /* */
179
+ /* */
180
+ }
181
+ /* */
182
+ /* */
183
+ /* */
184
+ /* */
185
+ /* */
186
+ /* */
187
+ /* */
188
+ /* */
189
+ /* */
190
+ /* */
191
+ /* */
192
+ /* */
193
+ /* */
194
+ /* */
195
+ /* */
196
+ /* */
197
+ /* */
198
+ /* */
199
+ /* */
200
+ /* */
201
+ /* */
202
+ /* */
203
+ /* */
204
+ /* */
205
+ async mesureExectionInMs(description, functionToExecute, ...functionArguments) {
206
+ var start = new Date();
207
+ await Helpers.runSyncOrAsync(functionToExecute, ...functionArguments);
208
+ //@ts-ignore
209
+ var end = new Date() - start;
210
+ if (Morphi.IsBrowser) {
211
+ Helpers.info(`Execution time: ${end.toString()}ms for "${description}"`);
212
+ }
213
+ /* */
214
+ /* */
215
+ return end;
216
+ }
217
+ mesureExectionInMsSync(description, functionToExecute) {
218
+ var start = new Date();
219
+ functionToExecute();
220
+ //@ts-ignore
221
+ var end = new Date() - start;
222
+ if (Morphi.IsBrowser) {
223
+ Helpers.log(`Execution time: ${end.toString()}ms for "${description}"`);
224
+ }
225
+ /* */
226
+ /* */
227
+ return end;
228
+ }
229
+ waitForCondition(conditionFn, howOfftenCheckInMs = 1000) {
230
+ return new Promise(async (resolve, reject) => {
231
+ const result = await Helpers.runSyncOrAsync(conditionFn);
232
+ if (result) {
233
+ resolve(void 0);
234
+ }
235
+ else {
236
+ setTimeout(() => {
237
+ Helpers.waitForCondition(conditionFn, howOfftenCheckInMs).then(() => {
238
+ resolve(void 0);
239
+ });
240
+ }, howOfftenCheckInMs);
241
+ }
242
+ });
243
+ }
244
+ getBrowserVerPath(moduleName, websql = false) {
245
+ /* */
246
+ /* */
247
+ /* */
248
+ /* */
249
+ /* */
250
+ }
251
+ getMethodName(obj, method) {
252
+ var methodName = null;
253
+ Object.getOwnPropertyNames(obj).forEach(prop => {
254
+ if (obj[prop] === method) {
255
+ methodName = prop;
256
+ }
257
+ });
258
+ if (methodName !== null) {
259
+ return methodName;
260
+ }
261
+ var proto = Object.getPrototypeOf(obj);
262
+ if (proto) {
263
+ return Helpers.getMethodName(proto, method);
264
+ }
265
+ return null;
266
+ }
267
+ fixWebpackEnv(env) {
268
+ _.forIn(env, (v, k) => {
269
+ const value = v;
270
+ if (value === 'true')
271
+ env[k] = true;
272
+ if (value === 'false')
273
+ env[k] = false;
274
+ });
275
+ }
276
+ }
277
+ applyMixins(HelpersTnp, [
278
+ HelpersStringsRegexes,
279
+ HelpersEnvironment,
280
+ /* */
281
+ /* */
282
+ /* */
283
+ ]);
284
+ ;
285
+ ({}); // @--end-of-file-for-module=tnp-helpers lib/helpers.ts
286
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1idW5kbGUvdG5wLWhlbHBlcnMvcHJvamVjdHMvdG5wLWhlbHBlcnMvc3JjL2xpYi9oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQXdCakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNsQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXBELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUk3QyxNQUFNLFVBQVUsV0FBVyxDQUFDLFdBQWdCLEVBQUUsU0FBZ0I7SUFDNUQsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtRQUMzQixNQUFNLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLFNB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Q0FBQztRQUN4QyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FvRkY7QUFhRCxXQUFXLENBQUMsVUFBVSxFQUFFO0lBQ3RCLHFCQUFxQjtJQUNyQixrQkFBa0I7SUFDcEIsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0NBRUosQ0FBQyxDQUFDO0FBRUYsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyx1REFBdUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcic7XG5pbXBvcnQgeyBIZWxwZXJzQXJyYXlPYmogfSBmcm9tICcuL2hlbHBlcnMtYXJyYXktb2JqJztcbmltcG9ydCB7IEhlbHBlcnNTdHJpbmdzUmVnZXhlcyB9IGZyb20gJy4vaGVscGVycy1zdHJpbmdzLXJlZ2V4ZXMnO1xuaW1wb3J0IHsgSGVscGVyc0Vudmlyb25tZW50IH0gZnJvbSAnLi9oZWxwZXJzLWVudmlyb25tZW50JztcbmltcG9ydCB7IEhlbHBlcnNTdHJpbmdzIH0gZnJvbSAnLi9oZWxwZXJzLXN0cmluZ3MnO1xuaW1wb3J0IHsgSGVscGVyc0NvbnNvbGVHdWkgfSBmcm9tICcuL2hlbHBlcnMtY29uc29sZS1ndWknO1xuaW1wb3J0IHsgY29uZGl0aW9uV2FpdCB9IGZyb20gJy4vY29uZGl0aW9uLXdhaXQnO1xuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5pbXBvcnQgeyBjb25maWcsIENvbmZpZ01vZGVscyB9IGZyb20gJ3RucC1jb25maWcvYnJvd3Nlcic7XG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSAnLi9pbmRleCc7XG5pbXBvcnQgeyBDTEFTUyB9IGZyb20gJ3R5cGVzY3JpcHQtY2xhc3MtaGVscGVycy9icm93c2VyJztcbmltcG9ydCB7IE1vcnBoaSB9IGZyb20gJ21vcnBoaS9icm93c2VyJztcbmltcG9ydCB7IENvcmVIZWxwZXJzIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcic7XG5pbXBvcnQgeyBIZWxwZXJzTnVtYmVyIH0gZnJvbSAnLi9oZWxwZXJzLW51bWJlcnMnO1xuXG5pbXBvcnQgeyBIZWxwZXJzQnJvd2FzZXIgfSBmcm9tICcuL2hlbHBlcnMtYnJvd3Nlcic7XG5cbmltcG9ydCB7IE5nSGVscGVycyB9IGZyb20gJy4vYW5ndWxhci5oZWxwZXInO1xuXG5cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5TWl4aW5zKGRlcml2ZWRDdG9yOiBhbnksIGJhc2VDdG9yczogYW55W10pIHtcbiAgYmFzZUN0b3JzLmZvckVhY2goYmFzZUN0b3IgPT4ge1xuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGJhc2VDdG9yLnByb3RvdHlwZSkuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkZXJpdmVkQ3Rvci5wcm90b3R5cGUsIG5hbWUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYmFzZUN0b3IucHJvdG90eXBlLCBuYW1lKSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vLyBAdHMtaWdub3JlXG5leHBvcnQgY2xhc3MgSGVscGVyc1RucCBleHRlbmRzIENvcmVIZWxwZXJzIHtcblxuICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IEhlbHBlcnNUbnAgJiBDb3JlSGVscGVycztcbiAgcHVibGljIHN0YXRpYyBnZXQgSW5zdGFuY2UoKSB7XG4gICAgaWYgKCFIZWxwZXJzVG5wLl9pbnN0YW5jZSkge1xuICAgICAgSGVscGVyc1RucC5faW5zdGFuY2UgPSBuZXcgSGVscGVyc1RucCgpO1xuICAgIH1cbiAgICByZXR1cm4gSGVscGVyc1RucC5faW5zdGFuY2U7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKFxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gICAgcHVibGljIGFycmF5cyA9IG5ldyBIZWxwZXJzQXJyYXlPYmooKSxcbiAgICBwdWJsaWMgc3RyaW5ncyA9IG5ldyBIZWxwZXJzU3RyaW5ncygpLFxuICAgIHB1YmxpYyBudW1iZXJzID0gbmV3IEhlbHBlcnNOdW1iZXIoKSxcbiAgICBwdWJsaWMgY29uc29sZUd1aSA9IG5ldyBIZWxwZXJzQ29uc29sZUd1aSgpLFxuXG4gICAgcHVibGljIGJyb3dzZXIgPSBIZWxwZXJzQnJvd2FzZXIuaW5zdGFuY2UsXG4gICAgcHVibGljIG5nID0gTmdIZWxwZXJzXG5cbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIENMSVdSQVAoZjogRnVuY3Rpb24sIG5hbWU6IHN0cmluZykge1xuICAgIENMQVNTLnNldE5hbWUoZiwgbmFtZSk7XG4gICAgcmV0dXJuIGY7XG4gIH1cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG4gIGFzeW5jIGlzRWxldmF0ZWQoKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgfVxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5cblxuICBhc3luYyBtZXN1cmVFeGVjdGlvbkluTXMoXG4gICAgZGVzY3JpcHRpb246IHN0cmluZyxcbiAgICBmdW5jdGlvblRvRXhlY3V0ZTogRnVuY3Rpb24sXG4gICAgLi4uZnVuY3Rpb25Bcmd1bWVudHM6IGFueVtdKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICB2YXIgc3RhcnQgPSBuZXcgRGF0ZSgpXG4gICAgYXdhaXQgSGVscGVycy5ydW5TeW5jT3JBc3luYyhmdW5jdGlvblRvRXhlY3V0ZSwgLi4uZnVuY3Rpb25Bcmd1bWVudHMpO1xuICAgIC8vQHRzLWlnbm9yZVxuICAgIHZhciBlbmQgPSBuZXcgRGF0ZSgpIC0gc3RhcnRcbiAgICBpZiAoTW9ycGhpLklzQnJvd3Nlcikge1xuICAgICAgSGVscGVycy5pbmZvKGBFeGVjdXRpb24gdGltZTogJHtlbmQudG9TdHJpbmcoKX1tcyBmb3IgXCIke2Rlc2NyaXB0aW9ufVwiYCk7XG4gICAgfVxuLyogKi9cbi8qICovXG4gIFxuICAgIHJldHVybiBlbmQ7XG4gIH1cblxuICBtZXN1cmVFeGVjdGlvbkluTXNTeW5jKFxuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmcsXG4gICAgZnVuY3Rpb25Ub0V4ZWN1dGU6ICgpID0+IHZvaWQpOiBudW1iZXIge1xuICAgIHZhciBzdGFydCA9IG5ldyBEYXRlKClcbiAgICBmdW5jdGlvblRvRXhlY3V0ZSgpO1xuICAgIC8vQHRzLWlnbm9yZVxuICAgIHZhciBlbmQgPSBuZXcgRGF0ZSgpIC0gc3RhcnRcbiAgICBpZiAoTW9ycGhpLklzQnJvd3Nlcikge1xuICAgICAgSGVscGVycy5sb2coYEV4ZWN1dGlvbiB0aW1lOiAke2VuZC50b1N0cmluZygpfW1zIGZvciBcIiR7ZGVzY3JpcHRpb259XCJgKTtcbiAgICB9XG4vKiAqL1xuLyogKi9cbiAgXG4gICAgcmV0dXJuIGVuZDtcbiAgfVxuXG4gIGNvbmRpdGlvbldhaXQgPSBjb25kaXRpb25XYWl0O1xuXG4gIHdhaXRGb3JDb25kaXRpb24oY29uZGl0aW9uRm46IChhbnkpID0+IGJvb2xlYW4sIGhvd09mZnRlbkNoZWNrSW5NcyA9IDEwMDApIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBIZWxwZXJzLnJ1blN5bmNPckFzeW5jKGNvbmRpdGlvbkZuKTtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgcmVzb2x2ZSh2b2lkIDApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBIZWxwZXJzLndhaXRGb3JDb25kaXRpb24oY29uZGl0aW9uRm4sIGhvd09mZnRlbkNoZWNrSW5NcykudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZXNvbHZlKHZvaWQgMCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfSwgaG93T2ZmdGVuQ2hlY2tJbk1zKTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgZ2V0QnJvd3NlclZlclBhdGgobW9kdWxlTmFtZT86IHN0cmluZywgd2Vic3FsOiBib29sZWFuID0gZmFsc2UpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgfVxuXG4gIGdldE1ldGhvZE5hbWUob2JqLCBtZXRob2QpOiBzdHJpbmcge1xuICAgIHZhciBtZXRob2ROYW1lID0gbnVsbDtcbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmopLmZvckVhY2gocHJvcCA9PiB7XG4gICAgICBpZiAob2JqW3Byb3BdID09PSBtZXRob2QpIHtcbiAgICAgICAgbWV0aG9kTmFtZSA9IHByb3A7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAobWV0aG9kTmFtZSAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG1ldGhvZE5hbWU7XG4gICAgfVxuXG4gICAgdmFyIHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaik7XG4gICAgaWYgKHByb3RvKSB7XG4gICAgICByZXR1cm4gSGVscGVycy5nZXRNZXRob2ROYW1lKHByb3RvLCBtZXRob2QpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGZpeFdlYnBhY2tFbnYoZW52OiBPYmplY3QpIHtcbiAgICBfLmZvckluKGVudiwgKHYsIGspID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlOiBzdHJpbmcgPSB2IGFzIGFueTtcbiAgICAgIGlmICh2YWx1ZSA9PT0gJ3RydWUnKSBlbnZba10gPSB0cnVlO1xuICAgICAgaWYgKHZhbHVlID09PSAnZmFsc2UnKSBlbnZba10gPSBmYWxzZTtcbiAgICB9KVxuICB9XG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG4vKiAqL1xuLyogKi9cbiAgXG4gIHB1YmxpYyBhcHBseU1peGlucyA9IGFwcGx5TWl4aW5zO1xufVxuXG4vLyBAdHMtaWdub3JlXG5leHBvcnQgaW50ZXJmYWNlIEhlbHBlcnNUbnAgZXh0ZW5kc1xuICBIZWxwZXJzU3RyaW5nc1JlZ2V4ZXMsXG4gIEhlbHBlcnNFbnZpcm9ubWVudFxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG57IH1cblxuYXBwbHlNaXhpbnMoSGVscGVyc1RucCwgW1xuICBIZWxwZXJzU3RyaW5nc1JlZ2V4ZXMsXG4gIEhlbHBlcnNFbnZpcm9ubWVudCxcbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5dKTtcblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRucC1oZWxwZXJzIGxpYi9oZWxwZXJzLnRzIl19