tnp-helpers 16.0.6 → 16.0.7

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/esm2022/lib/base-component.mjs +51 -0
  4. package/browser/esm2022/lib/base-formly-component.mjs +114 -0
  5. package/browser/esm2022/lib/helpers-browser.mjs +48 -0
  6. package/browser/esm2022/lib/helpers.mjs +286 -0
  7. package/{websql/esm2020 → browser/esm2022}/lib/long-press.directive.mjs +8 -7
  8. package/browser/esm2022/lib/project.mjs +431 -0
  9. package/browser/esm2022/lib/resize-service.mjs +23 -0
  10. package/{client/fesm2020 → browser/fesm2022}/tnp-helpers.mjs +39 -35
  11. package/{client/fesm2020 → browser/fesm2022}/tnp-helpers.mjs.map +1 -1
  12. package/browser/lib/base-component.d.ts +1 -1
  13. package/browser/lib/base-formly-component.d.ts +1 -1
  14. package/browser/lib/condition-wait.d.ts +1 -1
  15. package/browser/lib/long-press.directive.d.ts +1 -1
  16. package/browser/lib/project.d.ts +2 -2
  17. package/browser/package.json +6 -12
  18. package/client/README.md +24 -24
  19. package/client/esm2022/lib/base-component.mjs +51 -0
  20. package/client/esm2022/lib/base-formly-component.mjs +114 -0
  21. package/client/esm2022/lib/helpers-browser.mjs +48 -0
  22. package/client/esm2022/lib/helpers.mjs +286 -0
  23. package/client/esm2022/lib/long-press.directive.mjs +114 -0
  24. package/client/esm2022/lib/project.mjs +431 -0
  25. package/client/esm2022/lib/resize-service.mjs +23 -0
  26. package/{browser/fesm2020 → client/fesm2022}/tnp-helpers.mjs +39 -35
  27. package/{browser/fesm2020 → client/fesm2022}/tnp-helpers.mjs.map +1 -1
  28. package/client/lib/base-component.d.ts +1 -1
  29. package/client/lib/base-formly-component.d.ts +1 -1
  30. package/client/lib/condition-wait.d.ts +1 -1
  31. package/client/lib/long-press.directive.d.ts +1 -1
  32. package/client/lib/project.d.ts +2 -2
  33. package/client/package.json +10 -10
  34. package/index.js.map +1 -1
  35. package/lib/angular.helper.js +3 -3
  36. package/lib/angular.helper.js.map +1 -1
  37. package/lib/base-component.js +3 -3
  38. package/lib/base-component.js.map +1 -1
  39. package/lib/base-formly-component.js +3 -3
  40. package/lib/base-formly-component.js.map +1 -1
  41. package/lib/condition-wait.d.ts +1 -1
  42. package/lib/condition-wait.js.map +1 -1
  43. package/lib/constants.js.map +1 -1
  44. package/lib/dual-component-ctrl.js +3 -3
  45. package/lib/dual-component-ctrl.js.map +1 -1
  46. package/lib/firedev-models.js.map +1 -1
  47. package/lib/git-project.js.map +1 -1
  48. package/lib/helpers-array-obj.js.map +1 -1
  49. package/lib/helpers-browser.js +1 -2
  50. package/lib/helpers-browser.js.map +1 -1
  51. package/lib/helpers-cli-tool.backend.js.map +1 -1
  52. package/lib/helpers-console-gui.js.map +1 -1
  53. package/lib/helpers-dependencies.backend.js.map +1 -1
  54. package/lib/helpers-environment.js.map +1 -1
  55. package/lib/helpers-file-folders.backend.js.map +1 -1
  56. package/lib/helpers-git.backend.js.map +1 -1
  57. package/lib/helpers-json5.backend.js.map +1 -1
  58. package/lib/helpers-morphi-framework.backend.js.map +1 -1
  59. package/lib/helpers-network.backend.js.map +1 -1
  60. package/lib/helpers-npm.backend.js.map +1 -1
  61. package/lib/helpers-numbers.js.map +1 -1
  62. package/lib/helpers-path.backend.js.map +1 -1
  63. package/lib/helpers-process.backend.js.map +1 -1
  64. package/lib/helpers-strings-regexes.js.map +1 -1
  65. package/lib/helpers-strings.js.map +1 -1
  66. package/lib/helpers-system-terminal.backend.js.map +1 -1
  67. package/lib/helpers-vscode.backend.js.map +1 -1
  68. package/lib/helpers.js.map +1 -1
  69. package/lib/index.js.map +1 -1
  70. package/lib/long-press.directive.js +1 -2
  71. package/lib/long-press.directive.js.map +1 -1
  72. package/lib/merge-helpers.backend.d.ts +1 -1
  73. package/lib/merge-helpers.backend.js.map +1 -1
  74. package/lib/project.d.ts +2 -2
  75. package/lib/project.js +4 -3
  76. package/lib/project.js.map +1 -1
  77. package/lib/resize-service.js +1 -2
  78. package/lib/resize-service.js.map +1 -1
  79. package/lib/ts-code/index.js.map +1 -1
  80. package/lib/ts-code/ts-code-extractor.d.ts +1 -1
  81. package/lib/ts-code/ts-code-extractor.js.map +1 -1
  82. package/lib/ts-code/ts-code-modifier.backend.js +10 -10
  83. package/lib/ts-code/ts-code-modifier.backend.js.map +1 -1
  84. package/package.json +4 -4
  85. package/package.json_devDependencies.json +222 -222
  86. package/package.json_tnp.json5 +49 -49
  87. package/tmp-environment.json +14 -14
  88. package/websql/README.md +24 -24
  89. package/websql/esm2022/lib/base-component.mjs +51 -0
  90. package/websql/esm2022/lib/base-formly-component.mjs +114 -0
  91. package/websql/esm2022/lib/helpers-browser.mjs +48 -0
  92. package/websql/esm2022/lib/helpers.mjs +286 -0
  93. package/websql/esm2022/lib/long-press.directive.mjs +114 -0
  94. package/websql/esm2022/lib/project.mjs +431 -0
  95. package/websql/esm2022/lib/resize-service.mjs +23 -0
  96. package/websql/{fesm2020 → fesm2022}/tnp-helpers.mjs +39 -35
  97. package/websql/{fesm2020 → fesm2022}/tnp-helpers.mjs.map +1 -1
  98. package/websql/lib/base-component.d.ts +1 -1
  99. package/websql/lib/base-formly-component.d.ts +1 -1
  100. package/websql/lib/condition-wait.d.ts +1 -1
  101. package/websql/lib/long-press.directive.d.ts +1 -1
  102. package/websql/lib/project.d.ts +2 -2
  103. package/websql/package.json +6 -12
  104. package/browser/esm2020/lib/base-component.mjs +0 -50
  105. package/browser/esm2020/lib/base-formly-component.mjs +0 -113
  106. package/browser/esm2020/lib/helpers-browser.mjs +0 -47
  107. package/browser/esm2020/lib/helpers.mjs +0 -286
  108. package/browser/esm2020/lib/long-press.directive.mjs +0 -113
  109. package/browser/esm2020/lib/project.mjs +0 -430
  110. package/browser/esm2020/lib/resize-service.mjs +0 -22
  111. package/browser/fesm2015/tnp-helpers.mjs +0 -1741
  112. package/browser/fesm2015/tnp-helpers.mjs.map +0 -1
  113. package/client/esm2020/lib/base-component.mjs +0 -50
  114. package/client/esm2020/lib/base-formly-component.mjs +0 -113
  115. package/client/esm2020/lib/helpers-browser.mjs +0 -47
  116. package/client/esm2020/lib/helpers.mjs +0 -286
  117. package/client/esm2020/lib/long-press.directive.mjs +0 -113
  118. package/client/esm2020/lib/project.mjs +0 -430
  119. package/client/esm2020/lib/resize-service.mjs +0 -22
  120. package/client/fesm2015/tnp-helpers.mjs +0 -1741
  121. package/client/fesm2015/tnp-helpers.mjs.map +0 -1
  122. package/websql/esm2020/lib/base-component.mjs +0 -50
  123. package/websql/esm2020/lib/base-formly-component.mjs +0 -113
  124. package/websql/esm2020/lib/helpers-browser.mjs +0 -47
  125. package/websql/esm2020/lib/helpers.mjs +0 -286
  126. package/websql/esm2020/lib/project.mjs +0 -430
  127. package/websql/esm2020/lib/resize-service.mjs +0 -22
  128. package/websql/fesm2015/tnp-helpers.mjs +0 -1741
  129. package/websql/fesm2015/tnp-helpers.mjs.map +0 -1
  130. /package/browser/{esm2020 → esm2022}/lib/angular.helper.mjs +0 -0
  131. /package/browser/{esm2020 → esm2022}/lib/condition-wait.mjs +0 -0
  132. /package/browser/{esm2020 → esm2022}/lib/constants.mjs +0 -0
  133. /package/browser/{esm2020 → esm2022}/lib/dual-component-ctrl.mjs +0 -0
  134. /package/browser/{esm2020 → esm2022}/lib/firedev-models.mjs +0 -0
  135. /package/browser/{esm2020 → esm2022}/lib/helpers-array-obj.mjs +0 -0
  136. /package/browser/{esm2020 → esm2022}/lib/helpers-console-gui.mjs +0 -0
  137. /package/browser/{esm2020 → esm2022}/lib/helpers-environment.mjs +0 -0
  138. /package/browser/{esm2020 → esm2022}/lib/helpers-numbers.mjs +0 -0
  139. /package/browser/{esm2020 → esm2022}/lib/helpers-strings-regexes.mjs +0 -0
  140. /package/browser/{esm2020 → esm2022}/lib/helpers-strings.mjs +0 -0
  141. /package/browser/{esm2020 → esm2022}/lib/index.mjs +0 -0
  142. /package/browser/{esm2020 → esm2022}/public-api.mjs +0 -0
  143. /package/browser/{esm2020 → esm2022}/tnp-helpers.mjs +0 -0
  144. /package/browser/{tnp-helpers.d.ts → index.d.ts} +0 -0
  145. /package/client/{esm2020 → esm2022}/lib/angular.helper.mjs +0 -0
  146. /package/client/{esm2020 → esm2022}/lib/condition-wait.mjs +0 -0
  147. /package/client/{esm2020 → esm2022}/lib/constants.mjs +0 -0
  148. /package/client/{esm2020 → esm2022}/lib/dual-component-ctrl.mjs +0 -0
  149. /package/client/{esm2020 → esm2022}/lib/firedev-models.mjs +0 -0
  150. /package/client/{esm2020 → esm2022}/lib/helpers-array-obj.mjs +0 -0
  151. /package/client/{esm2020 → esm2022}/lib/helpers-console-gui.mjs +0 -0
  152. /package/client/{esm2020 → esm2022}/lib/helpers-environment.mjs +0 -0
  153. /package/client/{esm2020 → esm2022}/lib/helpers-numbers.mjs +0 -0
  154. /package/client/{esm2020 → esm2022}/lib/helpers-strings-regexes.mjs +0 -0
  155. /package/client/{esm2020 → esm2022}/lib/helpers-strings.mjs +0 -0
  156. /package/client/{esm2020 → esm2022}/lib/index.mjs +0 -0
  157. /package/client/{esm2020 → esm2022}/public-api.mjs +0 -0
  158. /package/client/{esm2020 → esm2022}/tnp-helpers.mjs +0 -0
  159. /package/client/{tnp-helpers.d.ts → index.d.ts} +0 -0
  160. /package/websql/{esm2020 → esm2022}/lib/angular.helper.mjs +0 -0
  161. /package/websql/{esm2020 → esm2022}/lib/condition-wait.mjs +0 -0
  162. /package/websql/{esm2020 → esm2022}/lib/constants.mjs +0 -0
  163. /package/websql/{esm2020 → esm2022}/lib/dual-component-ctrl.mjs +0 -0
  164. /package/websql/{esm2020 → esm2022}/lib/firedev-models.mjs +0 -0
  165. /package/websql/{esm2020 → esm2022}/lib/helpers-array-obj.mjs +0 -0
  166. /package/websql/{esm2020 → esm2022}/lib/helpers-console-gui.mjs +0 -0
  167. /package/websql/{esm2020 → esm2022}/lib/helpers-environment.mjs +0 -0
  168. /package/websql/{esm2020 → esm2022}/lib/helpers-numbers.mjs +0 -0
  169. /package/websql/{esm2020 → esm2022}/lib/helpers-strings-regexes.mjs +0 -0
  170. /package/websql/{esm2020 → esm2022}/lib/helpers-strings.mjs +0 -0
  171. /package/websql/{esm2020 → esm2022}/lib/index.mjs +0 -0
  172. /package/websql/{esm2020 → esm2022}/public-api.mjs +0 -0
  173. /package/websql/{esm2020 → esm2022}/tnp-helpers.mjs +0 -0
  174. /package/websql/{tnp-helpers.d.ts → index.d.ts} +0 -0
@@ -1,6 +1,6 @@
1
1
  THIS FILE IS GENERATED. THIS FILE IS GENERATED. THIS FILE IS GENERATED.
2
2
 
3
- Assets from this folder are being shipped with this npm package (tnp-helpers@16.0.6)
3
+ Assets from this folder are being shipped with this npm package (tnp-helpers@16.0.7)
4
4
  created from this project.
5
5
 
6
6
  THIS FILE IS GENERATED.THIS FILE IS GENERATED. THIS FILE IS GENERATED.
package/browser/README.md CHANGED
@@ -1,24 +1,24 @@
1
- # MyLib
2
-
3
- This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
4
-
5
- ## Code scaffolding
6
-
7
- Run `ng generate component component-name --project my-lib` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project my-lib`.
8
- > Note: Don't forget to add `--project my-lib` or else it will be added to the default project in your `angular.json` file.
9
-
10
- ## Build
11
-
12
- Run `ng build my-lib` to build the project. The build artifacts will be stored in the `dist/` directory.
13
-
14
- ## Publishing
15
-
16
- After building your library with `ng build my-lib`, go to the dist folder `cd dist/my-lib` and run `npm publish`.
17
-
18
- ## Running unit tests
19
-
20
- Run `ng test my-lib` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
-
22
- ## Further help
23
-
24
- To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
1
+ # MyLib
2
+
3
+ This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
4
+
5
+ ## Code scaffolding
6
+
7
+ Run `ng generate component component-name --project my-lib` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project my-lib`.
8
+ > Note: Don't forget to add `--project my-lib` or else it will be added to the default project in your `angular.json` file.
9
+
10
+ ## Build
11
+
12
+ Run `ng build my-lib` to build the project. The build artifacts will be stored in the `dist/` directory.
13
+
14
+ ## Publishing
15
+
16
+ After building your library with `ng build my-lib`, go to the dist folder `cd dist/my-lib` and run `npm publish`.
17
+
18
+ ## Running unit tests
19
+
20
+ Run `ng test my-lib` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
+
22
+ ## Further help
23
+
24
+ To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
@@ -0,0 +1,51 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { NavigationEnd } from '@angular/router';
3
+ import * as i0 from "@angular/core";
4
+ 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
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.6", ngImport: i0, type: BaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.6", type: BaseComponent, selector: "app-base-component-meta", inputs: { model: "model" }, ngImport: i0, template: '<div></div>', isInline: true }); }
16
+ }
17
+ export { BaseComponent };
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.6", ngImport: i0, type: BaseComponent, decorators: [{
19
+ type: Component,
20
+ args: [{
21
+ selector: 'app-base-component-meta',
22
+ template: '<div></div>'
23
+ }]
24
+ }], propDecorators: { model: [{
25
+ type: Input
26
+ }] } });
27
+ const isCalledNgInitAfterInternalRefresh = Symbol();
28
+ export class BaseComponentForRouter extends BaseComponent {
29
+ constructor(__router) {
30
+ super();
31
+ this.__router = __router;
32
+ this[isCalledNgInitAfterInternalRefresh] = false;
33
+ }
34
+ isCalledNgInitAfterInternalRefresh() {
35
+ return !!this[isCalledNgInitAfterInternalRefresh];
36
+ }
37
+ reloadNgOninitOnUrlChange() {
38
+ this.handlers.push(this.__router.events.subscribe(event => {
39
+ if (event instanceof NavigationEnd && this['ngOnInit']) {
40
+ this[isCalledNgInitAfterInternalRefresh] = true;
41
+ this['ngOnInit']();
42
+ if (this[isCalledNgInitAfterInternalRefresh]) {
43
+ this[isCalledNgInitAfterInternalRefresh] = false;
44
+ }
45
+ }
46
+ }));
47
+ }
48
+ }
49
+ ;
50
+ ({}); // @--end-of-file-for-module=tnp-helpers lib/base-component.ts
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItYnVuZGxlL3RucC1oZWxwZXJzL3Byb2plY3RzL3RucC1oZWxwZXJzL3NyYy9saWIvYmFzZS1jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFHeEQsTUFJc0IsYUFBYTtJQUpuQztRQU1FLGFBQWE7UUFDSixVQUFLLEdBQVEsRUFBRSxDQUFDO1FBRXpCLGFBQVEsR0FBbUIsRUFBRSxDQUFDO0tBUS9CO0lBTkMsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7OEdBVm1CLGFBQWE7a0dBQWIsYUFBYSwyRkFGdkIsYUFBYTs7U0FFSCxhQUFhOzJGQUFiLGFBQWE7a0JBSmxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsUUFBUSxFQUFFLGFBQWE7aUJBQ3hCOzhCQUlVLEtBQUs7c0JBQWIsS0FBSzs7QUFZUixNQUFNLGtDQUFrQyxHQUFHLE1BQU0sRUFBRSxDQUFBO0FBRW5ELE1BQU0sT0FBZ0Isc0JBQXVCLFNBQVEsYUFBYTtJQUVoRSxZQUNVLFFBQWdCO1FBRXhCLEtBQUssRUFBRSxDQUFDO1FBRkEsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUd4QixJQUFJLENBQUMsa0NBQWtDLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDbkQsQ0FBQztJQUdTLGtDQUFrQztRQUMxQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsa0NBQWtDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBQ1MseUJBQXlCO1FBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN4RCxJQUFJLEtBQUssWUFBWSxhQUFhLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUN0RCxJQUFJLENBQUMsa0NBQWtDLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUNuQixJQUFJLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxFQUFFO29CQUM1QyxJQUFJLENBQUMsa0NBQWtDLENBQUMsR0FBRyxLQUFLLENBQUM7aUJBQ2xEO2FBQ0Y7UUFDSCxDQUFDLENBQVEsQ0FBQyxDQUFDO0lBQ2IsQ0FBQztDQUVGO0FBR0EsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyw4REFBOEQiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgT25EZXN0cm95LCBPbkluaXQsIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWJhc2UtY29tcG9uZW50LW1ldGEnLFxuICB0ZW1wbGF0ZTogJzxkaXY+PC9kaXY+J1xufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICAvLyBAdHMtaWdub3JlXG4gIEBJbnB1dCgpIG1vZGVsOiBhbnkgPSB7fTtcblxuICBoYW5kbGVyczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmhhbmRsZXJzLmZvckVhY2goaCA9PiBoLnVuc3Vic2NyaWJlKCkpO1xuICAgIHRoaXMuaGFuZGxlcnMubGVuZ3RoID0gMDtcbiAgfVxuXG5cbn1cblxuY29uc3QgaXNDYWxsZWROZ0luaXRBZnRlckludGVybmFsUmVmcmVzaCA9IFN5bWJvbCgpXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQ29tcG9uZW50Rm9yUm91dGVyIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfX3JvdXRlcjogUm91dGVyXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpc1tpc0NhbGxlZE5nSW5pdEFmdGVySW50ZXJuYWxSZWZyZXNoXSA9IGZhbHNlO1xuICB9XG5cblxuICBwcm90ZWN0ZWQgaXNDYWxsZWROZ0luaXRBZnRlckludGVybmFsUmVmcmVzaCgpIHtcbiAgICByZXR1cm4gISF0aGlzW2lzQ2FsbGVkTmdJbml0QWZ0ZXJJbnRlcm5hbFJlZnJlc2hdO1xuICB9XG4gIHByb3RlY3RlZCByZWxvYWROZ09uaW5pdE9uVXJsQ2hhbmdlKCkge1xuICAgIHRoaXMuaGFuZGxlcnMucHVzaCh0aGlzLl9fcm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCAmJiB0aGlzWyduZ09uSW5pdCddKSB7XG4gICAgICAgIHRoaXNbaXNDYWxsZWROZ0luaXRBZnRlckludGVybmFsUmVmcmVzaF0gPSB0cnVlO1xuICAgICAgICB0aGlzWyduZ09uSW5pdCddKCk7XG4gICAgICAgIGlmICh0aGlzW2lzQ2FsbGVkTmdJbml0QWZ0ZXJJbnRlcm5hbFJlZnJlc2hdKSB7XG4gICAgICAgICAgdGhpc1tpc0NhbGxlZE5nSW5pdEFmdGVySW50ZXJuYWxSZWZyZXNoXSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkgYXMgYW55KTtcbiAgfVxuXG59XG5cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRucC1oZWxwZXJzIGxpYi9iYXNlLWNvbXBvbmVudC50cyJdfQ==
@@ -0,0 +1,114 @@
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
+ 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
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.6", ngImport: i0, type: BaseFormlyComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
80
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.6", 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 }); }
81
+ }
82
+ export { BaseFormlyComponent };
83
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.6", ngImport: i0, type: BaseFormlyComponent, decorators: [{
84
+ type: Component,
85
+ args: [{
86
+ selector: 'app-base-formly-component-meta',
87
+ template: `<div></div>`
88
+ }]
89
+ }], propDecorators: { pizda: [{
90
+ type: Input
91
+ }], mode: [{
92
+ type: Input
93
+ }], disabled: [{
94
+ type: Input
95
+ }], required: [{
96
+ type: Input
97
+ }], label: [{
98
+ type: Input
99
+ }], placeholder: [{
100
+ type: Input
101
+ }], defaultValue: [{
102
+ type: Input
103
+ }], model: [{
104
+ type: Input
105
+ }], path: [{
106
+ type: Input
107
+ }], change: [{
108
+ type: Output
109
+ }], key: [{
110
+ type: Input
111
+ }] } });
112
+ ;
113
+ ({}); // @--end-of-file-for-module=tnp-helpers lib/base-formly-component.ts
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1mb3JtbHktY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS90bnAtaGVscGVycy9wcm9qZWN0cy90bnAtaGVscGVycy9zcmMvbGliL2Jhc2UtZm9ybWx5LWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGtCQUFrQixDQUFDO0FBRWhFLE9BQU8sRUFBSSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sR0FBa0IsTUFBTSxlQUFlLENBQUMsQ0FBQSxLQUFLO0FBSXhGLEtBQUs7QUFDTCxLQUFLO0FBRUwsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUU3QyxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLHVCQUF1QixFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQTtBQUdoRSxNQUlzQixtQkFDcEIsU0FBUSxTQUFTO0lBTG5COztRQVFZLDRCQUF1QixHQUFHLHVCQUF1QixDQUFDO1FBQ3JELFNBQUksR0FBTSxFQUFTLENBQUM7UUEwQmpCLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBaUJ0QyxhQUFhO1FBRUgsYUFBUSxHQUFtQixFQUFFLENBQUM7UUFZaEMsWUFBTyxHQUFHO1lBQ2hCLGVBQWUsRUFBRSxFQUVoQjtTQUNtQixDQUFDO0tBeUN4QjtJQW5HQyxhQUFhO0lBQ2IsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN4QixDQUFDO0lBRUQsYUFBYTtJQUNiLElBQWEsSUFBSSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFPRCxhQUFhO0lBQ2IsSUFBYSxLQUFLLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUNELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUtELGFBQWE7SUFDYixJQUFhLEdBQUcsQ0FBQyxLQUFhO1FBQzVCLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN2QyxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBQ0QsSUFBSSxHQUFHO1FBQ0wsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3ZDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFVLENBQUM7U0FDOUI7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQU1ELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUUzQixDQUFDO0lBRUQsZUFBZTtJQUVmLENBQUM7SUFRRCxRQUFRO1FBR04sTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDbEMsR0FBRyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2pCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztZQUNsQixNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUU7Z0JBQ25DLEdBQUcsRUFBRTtvQkFDSCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQ3RCLENBQUM7Z0JBQ0QsR0FBRyxFQUFFLFVBQVUsQ0FBQztvQkFDZCxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztnQkFDbkIsQ0FBQzthQUNGLENBQUMsQ0FBQTtTQUNIO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUssSUFBSSxDQUFDLHVCQUErQixDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztRQUMxRSxhQUFhO1FBQ2IsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7UUFhSCxhQUFhO1FBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDOzhHQXpHbUIsbUJBQW1CO2tHQUFuQixtQkFBbUIsc1VBRjdCLGFBQWE7O1NBRUgsbUJBQW1COzJGQUFuQixtQkFBbUI7a0JBSnhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdDQUFnQztvQkFDMUMsUUFBUSxFQUFFLGFBQWE7aUJBQ3hCOzhCQU9VLEtBQUs7c0JBQWIsS0FBSztnQkFRTyxJQUFJO3NCQUFoQixLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUdPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBTUcsSUFBSTtzQkFBWixLQUFLO2dCQUNJLE1BQU07c0JBQWYsTUFBTTtnQkFJTSxHQUFHO3NCQUFmLEtBQUs7O0FBMkVQLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMscUVBQXFFIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZpZWxkVHlwZSwgRm9ybWx5RmllbGRDb25maWcgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcblxuaW1wb3J0IHsgICBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgQWZ0ZXJWaWV3SW5pdCwgfSBmcm9tICdAYW5ndWxhci9jb3JlJzsvKiAqL1xuLyogKi9cblxuaW1wb3J0IHsgICBGb3JtQ29udHJvbCwgICBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7LyogKi9cbi8qICovXG4vKiAqL1xuXG5pbXBvcnQgeyBMb2csIExldmVsIH0gZnJvbSAnbmcyLWxvZ2dlci9icm93c2VyJztcbmltcG9ydCB7IER1YWxDb21wb25lbnRDb250cm9sbGVyIH0gZnJvbSAnLi9kdWFsLWNvbXBvbmVudC1jdHJsJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5jb25zdCBsb2cgPSBMb2cuY3JlYXRlKCdiYXNlIGZvcm1seSBjb21wb25lbnQnLCBMZXZlbC5fX05PVEhJTkcpXG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWJhc2UtZm9ybWx5LWNvbXBvbmVudC1tZXRhJyxcbiAgdGVtcGxhdGU6IGA8ZGl2PjwvZGl2PmBcbn0pIC8vIEB0cy1pZ25vcmVcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlRm9ybWx5Q29tcG9uZW50PFQgZXh0ZW5kcyBEdWFsQ29tcG9uZW50Q29udHJvbGxlciA9IER1YWxDb21wb25lbnRDb250cm9sbGVyPlxuICBleHRlbmRzIEZpZWxkVHlwZVxuICBpbXBsZW1lbnRzIE9uSW5pdCwgUGFydGlhbDxEdWFsQ29tcG9uZW50Q29udHJvbGxlcjxUPj4sIEFmdGVyVmlld0luaXQge1xuXG4gIHByb3RlY3RlZCBEdWFsQ29tcG9uZW50Q29udHJvbGxlciA9IER1YWxDb21wb25lbnRDb250cm9sbGVyO1xuICBwdWJsaWMgY3RybDogVCA9IHt9IGFzIGFueTtcbiAgQElucHV0KCkgcGl6ZGE6IGFueTtcblxuICAvLyBAdHMtaWdub3JlXG4gIGdldCBtb2RlKCkge1xuICAgIHJldHVybiB0aGlzLmN0cmwubW9kZTtcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgQElucHV0KCkgc2V0IG1vZGUodikge1xuICAgIHRoaXMuY3RybC5tb2RlID0gdjtcbiAgfVxuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRlZmF1bHRWYWx1ZTogVDtcblxuICAvLyBAdHMtaWdub3JlXG4gIEBJbnB1dCgpIHNldCBtb2RlbCh2KSB7XG4gICAgdGhpcy5jdHJsLm1vZGVsID0gdjtcbiAgfVxuICBnZXQgbW9kZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuY3RybC5tb2RlbDtcbiAgfVxuICBASW5wdXQoKSBwYXRoOiBzdHJpbmc7XG4gIEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cblxuICAvLyBAdHMtaWdub3JlXG4gIEBJbnB1dCgpIHNldCBrZXkodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh0aGlzLmN0cmwgJiYgdGhpcy5jdHJsLmlzRm9ybWx5TW9kZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnBhdGggPSB2YWx1ZTtcbiAgfVxuICBnZXQga2V5KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuY3RybCAmJiB0aGlzLmN0cmwuaXNGb3JtbHlNb2RlKSB7XG4gICAgICByZXR1cm4gdGhpcy5maWVsZC5rZXkgYXMgYW55O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wYXRoO1xuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmhhbmRsZXJzLmZvckVhY2goaCA9PiBoLnVuc3Vic2NyaWJlKCkpO1xuICAgIHRoaXMuaGFuZGxlcnMubGVuZ3RoID0gMDtcblxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuXG4gIH1cblxuICBwcml2YXRlIF9fZmllbGQgPSB7XG4gICAgdGVtcGxhdGVPcHRpb25zOiB7XG5cbiAgICB9XG4gIH0gYXMgRm9ybWx5RmllbGRDb25maWc7XG5cbiAgbmdPbkluaXQoKSB7XG5cblxuICAgIGNvbnN0IGlzRm9ybWx5TW9kZSA9ICEhdGhpcy5maWVsZDtcbiAgICBsb2cuaShgaXNGb3JtbHlNb2RlOiAke2lzRm9ybWx5TW9kZX1gKTtcbiAgICBpZiAoIWlzRm9ybWx5TW9kZSkge1xuICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2ZpZWxkJywge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gdGhhdC5fX2ZpZWxkO1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgICAgdGhhdC5fX2ZpZWxkID0gdjtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBjb25zdCBleGlzdGVkID0gdGhpcy5jdHJsO1xuICAgIHRoaXMuY3RybCA9IG5ldyAodGhpcy5EdWFsQ29tcG9uZW50Q29udHJvbGxlciBhcyBhbnkpKHRoaXMsIGlzRm9ybWx5TW9kZSk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIE9iamVjdC5rZXlzKGV4aXN0ZWQpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIHRoaXMuY3RybFtrZXldID0gZXhpc3RlZFtrZXldO1xuICAgIH0pO1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB0aGlzLmNoYW5nZS5uZXh0KHRoaXMuY3RybC52YWx1ZSk7XG4gIH1cblxufVxuXG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10bnAtaGVscGVycyBsaWIvYmFzZS1mb3JtbHktY29tcG9uZW50LnRzIl19
@@ -0,0 +1,48 @@
1
+ const key = Symbol('[firedev-helpers] helper browser key');
2
+ class HelpersBrowaser {
3
+ static { this.callbacks = []; }
4
+ static onInit(callback) {
5
+ this.callbacks.push(callback);
6
+ }
7
+ get win() {
8
+ let win = window;
9
+ return win;
10
+ }
11
+ get tabIdSessionStorage() {
12
+ return Number(this.win.sessionStorage?.tabId) || 0;
13
+ }
14
+ constructor(win) {
15
+ this.init = (() => {
16
+ const win = this.win;
17
+ if (!win[key]) {
18
+ win[key] = new HelpersBrowaser(win);
19
+ }
20
+ HelpersBrowaser.inst = win[key];
21
+ })();
22
+ win.addEventListener("beforeunload", (e) => {
23
+ win.sessionStorage.tabId = this.tabId;
24
+ return null;
25
+ });
26
+ setTimeout(() => {
27
+ if (win.sessionStorage?.tabId) {
28
+ // @ts-ignore
29
+ this.tabId = Number(win.sessionStorage.tabId);
30
+ win.sessionStorage.removeItem("tabId");
31
+ }
32
+ else {
33
+ // @ts-ignore
34
+ this.tabId = Math.floor(Math.random() * 1000000) + (new Date()).getTime();
35
+ }
36
+ HelpersBrowaser.callbacks.forEach((c) => {
37
+ c(this);
38
+ });
39
+ });
40
+ }
41
+ static get instance() {
42
+ return HelpersBrowaser.inst;
43
+ }
44
+ }
45
+ export { HelpersBrowaser };
46
+ ;
47
+ ({}); // @--end-of-file-for-module=tnp-helpers lib/helpers-browser.ts
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy1icm93c2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS90bnAtaGVscGVycy9wcm9qZWN0cy90bnAtaGVscGVycy9zcmMvbGliL2hlbHBlcnMtYnJvd3Nlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsc0NBQXNDLENBQUMsQ0FBQTtBQUUxRCxNQUFhLGVBQWU7YUFFWCxjQUFTLEdBQUcsRUFBRSxBQUFMLENBQU07SUFDOUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUF1QztRQUNuRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxHQUFHO1FBQ0wsSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDO1FBQ2pCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELElBQVksbUJBQW1CO1FBQzdCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBY0QsWUFBb0IsR0FBVztRQVQvQixTQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDWCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBRXJCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2IsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3JDO1lBQ0QsZUFBZSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUlILEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN6QyxHQUFHLENBQUMsY0FBYyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ3RDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7UUFFSCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBRWQsSUFBSSxHQUFHLENBQUMsY0FBYyxFQUFFLEtBQUssRUFBRTtnQkFDN0IsYUFBYTtnQkFDYixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM5QyxHQUFHLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUN4QztpQkFDSTtnQkFDSCxhQUFhO2dCQUNiLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDM0U7WUFDRCxlQUFlLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUN0QyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDVixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFBO0lBR0osQ0FBQztJQUdELE1BQU0sS0FBSyxRQUFRO1FBQ2pCLE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQztJQUM5QixDQUFDOztTQXpEVSxlQUFlO0FBa0UzQixDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLCtEQUErRCIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5cbmNvbnN0IGtleSA9IFN5bWJvbCgnW2ZpcmVkZXYtaGVscGVyc10gaGVscGVyIGJyb3dzZXIga2V5JylcblxuZXhwb3J0IGNsYXNzIEhlbHBlcnNCcm93YXNlciB7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY2FsbGJhY2tzID0gW107XG4gIHN0YXRpYyBvbkluaXQoY2FsbGJhY2s6IChpbnM6IEhlbHBlcnNCcm93YXNlcikgPT4gYW55KSB7XG4gICAgdGhpcy5jYWxsYmFja3MucHVzaChjYWxsYmFjayk7XG4gIH1cblxuICBnZXQgd2luKCkge1xuICAgIGxldCB3aW4gPSB3aW5kb3c7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHRhYklkU2Vzc2lvblN0b3JhZ2UoKSB7XG4gICAgcmV0dXJuIE51bWJlcih0aGlzLndpbi5zZXNzaW9uU3RvcmFnZT8udGFiSWQpIHx8IDA7XG4gIH1cblxuICByZWFkb25seSB0YWJJZDogbnVtYmVyO1xuXG4gIHByaXZhdGUgc3RhdGljIGluc3Q6IEhlbHBlcnNCcm93YXNlcjtcbiAgaW5pdCA9ICgoKSA9PiB7XG4gICAgY29uc3Qgd2luID0gdGhpcy53aW47XG5cbiAgICBpZiAoIXdpbltrZXldKSB7XG4gICAgICB3aW5ba2V5XSA9IG5ldyBIZWxwZXJzQnJvd2FzZXIod2luKTtcbiAgICB9XG4gICAgSGVscGVyc0Jyb3dhc2VyLmluc3QgPSB3aW5ba2V5XTtcbiAgfSkoKTtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHdpbjogV2luZG93KSB7XG5cbiAgICB3aW4uYWRkRXZlbnRMaXN0ZW5lcihcImJlZm9yZXVubG9hZFwiLCAoZSkgPT4ge1xuICAgICAgd2luLnNlc3Npb25TdG9yYWdlLnRhYklkID0gdGhpcy50YWJJZDtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0pO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG5cbiAgICAgIGlmICh3aW4uc2Vzc2lvblN0b3JhZ2U/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
+ static get Instance() {
25
+ if (!HelpersTnp._instance) {
26
+ HelpersTnp._instance = new HelpersTnp();
27
+ }
28
+ return HelpersTnp._instance;
29
+ }
30
+ constructor(
31
+ /* */
32
+ /* */
33
+ /* */
34
+ /* */
35
+ /* */
36
+ /* */
37
+ /* */
38
+ /* */
39
+ /* */
40
+ /* */
41
+ /* */
42
+ /* */
43
+ /* */
44
+ arrays = new HelpersArrayObj(), strings = new HelpersStrings(), numbers = new HelpersNumber(), consoleGui = new HelpersConsoleGui(), browser = HelpersBrowaser.instance, ng = NgHelpers) {
45
+ super();
46
+ this.arrays = arrays;
47
+ this.strings = strings;
48
+ this.numbers = numbers;
49
+ this.consoleGui = consoleGui;
50
+ this.browser = browser;
51
+ this.ng = ng;
52
+ this.conditionWait = conditionWait;
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
+ /* */
126
+ /* */
127
+ /* */
128
+ /* */
129
+ /* */
130
+ /* */
131
+ this.applyMixins = applyMixins;
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1idW5kbGUvdG5wLWhlbHBlcnMvcHJvamVjdHMvdG5wLWhlbHBlcnMvc3JjL2xpYi9oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQXdCakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNsQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXBELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUk3QyxNQUFNLFVBQVUsV0FBVyxDQUFDLFdBQWdCLEVBQUUsU0FBZ0I7SUFDNUQsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtRQUMzQixNQUFNLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM1RCxNQUFNLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDaEgsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxhQUFhO0FBQ2IsTUFBTSxPQUFPLFVBQVcsU0FBUSxXQUFXO0lBR2xDLE1BQU0sS0FBSyxRQUFRO1FBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFO1lBQ3pCLFVBQVUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztTQUN6QztRQUNELE9BQU8sVUFBVSxDQUFDLFNBQVMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7SUFDRixLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBRU0sU0FBUyxJQUFJLGVBQWUsRUFBRSxFQUM5QixVQUFVLElBQUksY0FBYyxFQUFFLEVBQzlCLFVBQVUsSUFBSSxhQUFhLEVBQUUsRUFDN0IsYUFBYSxJQUFJLGlCQUFpQixFQUFFLEVBRXBDLFVBQVUsZUFBZSxDQUFDLFFBQVEsRUFDbEMsS0FBSyxTQUFTO1FBR3JCLEtBQUssRUFBRSxDQUFDO1FBVEQsV0FBTSxHQUFOLE1BQU0sQ0FBd0I7UUFDOUIsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7UUFDOUIsWUFBTyxHQUFQLE9BQU8sQ0FBc0I7UUFDN0IsZUFBVSxHQUFWLFVBQVUsQ0FBMEI7UUFFcEMsWUFBTyxHQUFQLE9BQU8sQ0FBMkI7UUFDbEMsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQTRIdkIsa0JBQWEsR0FBRyxhQUFhLENBQUM7UUFzRGhDLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFHTCxLQUFLO1FBQ0wsS0FBSztRQUVJLGdCQUFXLEdBQUcsV0FBVyxDQUFDO0lBL1BqQyxDQUFDO0lBRUQsT0FBTyxDQUFDLENBQVcsRUFBRSxJQUFZO1FBQy9CLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLE9BQU8s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QUM7UUFDeEMsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0NBb0ZGO0FBYUQsV0FBVyxDQUFDLFVBQVUsRUFBRTtJQUN0QixxQkFBcUI7SUFDckIsa0JBQWtCO0lBQ3BCLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztDQUVKLENBQUMsQ0FBQztBQUVGLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsdURBQXVEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgSGVscGVyc0FycmF5T2JqIH0gZnJvbSAnLi9oZWxwZXJzLWFycmF5LW9iaic7XG5pbXBvcnQgeyBIZWxwZXJzU3RyaW5nc1JlZ2V4ZXMgfSBmcm9tICcuL2hlbHBlcnMtc3RyaW5ncy1yZWdleGVzJztcbmltcG9ydCB7IEhlbHBlcnNFbnZpcm9ubWVudCB9IGZyb20gJy4vaGVscGVycy1lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBIZWxwZXJzU3RyaW5ncyB9IGZyb20gJy4vaGVscGVycy1zdHJpbmdzJztcbmltcG9ydCB7IEhlbHBlcnNDb25zb2xlR3VpIH0gZnJvbSAnLi9oZWxwZXJzLWNvbnNvbGUtZ3VpJztcbmltcG9ydCB7IGNvbmRpdGlvbldhaXQgfSBmcm9tICcuL2NvbmRpdGlvbi13YWl0JztcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuaW1wb3J0IHsgY29uZmlnLCBDb25maWdNb2RlbHMgfSBmcm9tICd0bnAtY29uZmlnL2Jyb3dzZXInO1xuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJy4vaW5kZXgnO1xuaW1wb3J0IHsgQ0xBU1MgfSBmcm9tICd0eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvYnJvd3Nlcic7XG5pbXBvcnQgeyBNb3JwaGkgfSBmcm9tICdtb3JwaGkvYnJvd3Nlcic7XG5pbXBvcnQgeyBDb3JlSGVscGVycyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgSGVscGVyc051bWJlciB9IGZyb20gJy4vaGVscGVycy1udW1iZXJzJztcblxuaW1wb3J0IHsgSGVscGVyc0Jyb3dhc2VyIH0gZnJvbSAnLi9oZWxwZXJzLWJyb3dzZXInO1xuXG5pbXBvcnQgeyBOZ0hlbHBlcnMgfSBmcm9tICcuL2FuZ3VsYXIuaGVscGVyJztcblxuXG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseU1peGlucyhkZXJpdmVkQ3RvcjogYW55LCBiYXNlQ3RvcnM6IGFueVtdKSB7XG4gIGJhc2VDdG9ycy5mb3JFYWNoKGJhc2VDdG9yID0+IHtcbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhiYXNlQ3Rvci5wcm90b3R5cGUpLmZvckVhY2gobmFtZSA9PiB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZGVyaXZlZEN0b3IucHJvdG90eXBlLCBuYW1lLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGJhc2VDdG9yLnByb3RvdHlwZSwgbmFtZSkpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuLy8gQHRzLWlnbm9yZVxuZXhwb3J0IGNsYXNzIEhlbHBlcnNUbnAgZXh0ZW5kcyBDb3JlSGVscGVycyB7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBIZWxwZXJzVG5wICYgQ29yZUhlbHBlcnM7XG4gIHB1YmxpYyBzdGF0aWMgZ2V0IEluc3RhbmNlKCkge1xuICAgIGlmICghSGVscGVyc1RucC5faW5zdGFuY2UpIHtcbiAgICAgIEhlbHBlcnNUbnAuX2luc3RhbmNlID0gbmV3IEhlbHBlcnNUbnAoKTtcbiAgICB9XG4gICAgcmV0dXJuIEhlbHBlcnNUbnAuX2luc3RhbmNlO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgIHB1YmxpYyBhcnJheXMgPSBuZXcgSGVscGVyc0FycmF5T2JqKCksXG4gICAgcHVibGljIHN0cmluZ3MgPSBuZXcgSGVscGVyc1N0cmluZ3MoKSxcbiAgICBwdWJsaWMgbnVtYmVycyA9IG5ldyBIZWxwZXJzTnVtYmVyKCksXG4gICAgcHVibGljIGNvbnNvbGVHdWkgPSBuZXcgSGVscGVyc0NvbnNvbGVHdWkoKSxcblxuICAgIHB1YmxpYyBicm93c2VyID0gSGVscGVyc0Jyb3dhc2VyLmluc3RhbmNlLFxuICAgIHB1YmxpYyBuZyA9IE5nSGVscGVyc1xuXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBDTElXUkFQKGY6IEZ1bmN0aW9uLCBuYW1lOiBzdHJpbmcpIHtcbiAgICBDTEFTUy5zZXROYW1lKGYsIG5hbWUpO1xuICAgIHJldHVybiBmO1xuICB9XG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuICBhc3luYyBpc0VsZXZhdGVkKCkge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gIH1cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbiAgYXN5bmMgbWVzdXJlRXhlY3Rpb25Jbk1zKFxuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmcsXG4gICAgZnVuY3Rpb25Ub0V4ZWN1dGU6IEZ1bmN0aW9uLFxuICAgIC4uLmZ1bmN0aW9uQXJndW1lbnRzOiBhbnlbXSk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgdmFyIHN0YXJ0ID0gbmV3IERhdGUoKVxuICAgIGF3YWl0IEhlbHBlcnMucnVuU3luY09yQXN5bmMoZnVuY3Rpb25Ub0V4ZWN1dGUsIC4uLmZ1bmN0aW9uQXJndW1lbnRzKTtcbiAgICAvL0B0cy1pZ25vcmVcbiAgICB2YXIgZW5kID0gbmV3IERhdGUoKSAtIHN0YXJ0XG4gICAgaWYgKE1vcnBoaS5Jc0Jyb3dzZXIpIHtcbiAgICAgIEhlbHBlcnMuaW5mbyhgRXhlY3V0aW9uIHRpbWU6ICR7ZW5kLnRvU3RyaW5nKCl9bXMgZm9yIFwiJHtkZXNjcmlwdGlvbn1cImApO1xuICAgIH1cbi8qICovXG4vKiAqL1xuICBcbiAgICByZXR1cm4gZW5kO1xuICB9XG5cbiAgbWVzdXJlRXhlY3Rpb25Jbk1zU3luYyhcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nLFxuICAgIGZ1bmN0aW9uVG9FeGVjdXRlOiAoKSA9PiB2b2lkKTogbnVtYmVyIHtcbiAgICB2YXIgc3RhcnQgPSBuZXcgRGF0ZSgpXG4gICAgZnVuY3Rpb25Ub0V4ZWN1dGUoKTtcbiAgICAvL0B0cy1pZ25vcmVcbiAgICB2YXIgZW5kID0gbmV3IERhdGUoKSAtIHN0YXJ0XG4gICAgaWYgKE1vcnBoaS5Jc0Jyb3dzZXIpIHtcbiAgICAgIEhlbHBlcnMubG9nKGBFeGVjdXRpb24gdGltZTogJHtlbmQudG9TdHJpbmcoKX1tcyBmb3IgXCIke2Rlc2NyaXB0aW9ufVwiYCk7XG4gICAgfVxuLyogKi9cbi8qICovXG4gIFxuICAgIHJldHVybiBlbmQ7XG4gIH1cblxuICBjb25kaXRpb25XYWl0ID0gY29uZGl0aW9uV2FpdDtcblxuICB3YWl0Rm9yQ29uZGl0aW9uKGNvbmRpdGlvbkZuOiAoYW55KSA9PiBib29sZWFuLCBob3dPZmZ0ZW5DaGVja0luTXMgPSAxMDAwKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgSGVscGVycy5ydW5TeW5jT3JBc3luYyhjb25kaXRpb25Gbik7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIHJlc29sdmUodm9pZCAwKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgSGVscGVycy53YWl0Rm9yQ29uZGl0aW9uKGNvbmRpdGlvbkZuLCBob3dPZmZ0ZW5DaGVja0luTXMpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZSh2b2lkIDApO1xuICAgICAgICAgIH0pXG4gICAgICAgIH0sIGhvd09mZnRlbkNoZWNrSW5Ncyk7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGdldEJyb3dzZXJWZXJQYXRoKG1vZHVsZU5hbWU/OiBzdHJpbmcsIHdlYnNxbDogYm9vbGVhbiA9IGZhbHNlKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gIH1cblxuICBnZXRNZXRob2ROYW1lKG9iaiwgbWV0aG9kKTogc3RyaW5nIHtcbiAgICB2YXIgbWV0aG9kTmFtZSA9IG51bGw7XG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqKS5mb3JFYWNoKHByb3AgPT4ge1xuICAgICAgaWYgKG9ialtwcm9wXSA9PT0gbWV0aG9kKSB7XG4gICAgICAgIG1ldGhvZE5hbWUgPSBwcm9wO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKG1ldGhvZE5hbWUgIT09IG51bGwpIHtcbiAgICAgIHJldHVybiBtZXRob2ROYW1lO1xuICAgIH1cblxuICAgIHZhciBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopO1xuICAgIGlmIChwcm90bykge1xuICAgICAgcmV0dXJuIEhlbHBlcnMuZ2V0TWV0aG9kTmFtZShwcm90bywgbWV0aG9kKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBmaXhXZWJwYWNrRW52KGVudjogT2JqZWN0KSB7XG4gICAgXy5mb3JJbihlbnYsICh2LCBrKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZTogc3RyaW5nID0gdiBhcyBhbnk7XG4gICAgICBpZiAodmFsdWUgPT09ICd0cnVlJykgZW52W2tdID0gdHJ1ZTtcbiAgICAgIGlmICh2YWx1ZSA9PT0gJ2ZhbHNlJykgZW52W2tdID0gZmFsc2U7XG4gICAgfSlcbiAgfVxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuLyogKi9cbi8qICovXG4gIFxuICBwdWJsaWMgYXBwbHlNaXhpbnMgPSBhcHBseU1peGlucztcbn1cblxuLy8gQHRzLWlnbm9yZVxuZXhwb3J0IGludGVyZmFjZSBIZWxwZXJzVG5wIGV4dGVuZHNcbiAgSGVscGVyc1N0cmluZ3NSZWdleGVzLFxuICBIZWxwZXJzRW52aXJvbm1lbnRcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxueyB9XG5cbmFwcGx5TWl4aW5zKEhlbHBlcnNUbnAsIFtcbiAgSGVscGVyc1N0cmluZ3NSZWdleGVzLFxuICBIZWxwZXJzRW52aXJvbm1lbnQsXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXSk7XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10bnAtaGVscGVycyBsaWIvaGVscGVycy50cyJdfQ==