tnp-helpers 13.1.38 → 16.0.1

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 (217) hide show
  1. package/assets/shared/shared_folder_info.txt +1 -1
  2. package/browser/{esm2020 → esm2022}/lib/angular.helper.mjs +87 -87
  3. package/browser/esm2022/lib/base-component.mjs +51 -0
  4. package/browser/esm2022/lib/base-formly-component.mjs +114 -0
  5. package/{client/esm2020 → browser/esm2022}/lib/condition-wait.mjs +45 -45
  6. package/browser/{esm2020 → esm2022}/lib/constants.mjs +8 -8
  7. package/{client/esm2020 → browser/esm2022}/lib/dual-component-ctrl.mjs +118 -118
  8. package/{client/esm2020 → browser/esm2022}/lib/firedev-models.mjs +3 -3
  9. package/{client/esm2020 → browser/esm2022}/lib/helpers-array-obj.mjs +82 -82
  10. package/browser/esm2022/lib/helpers-browser.mjs +48 -0
  11. package/{client/esm2020 → browser/esm2022}/lib/helpers-console-gui.mjs +9 -9
  12. package/{client/esm2020 → browser/esm2022}/lib/helpers-environment.mjs +32 -32
  13. package/{client/esm2020 → browser/esm2022}/lib/helpers-numbers.mjs +7 -7
  14. package/{client/esm2020 → browser/esm2022}/lib/helpers-strings-regexes.mjs +50 -50
  15. package/browser/{esm2020 → esm2022}/lib/helpers-strings.mjs +252 -252
  16. package/browser/esm2022/lib/helpers.mjs +286 -0
  17. package/browser/{esm2020 → esm2022}/lib/index.mjs +15 -15
  18. package/{websql/esm2020 → browser/esm2022}/lib/long-press.directive.mjs +114 -113
  19. package/browser/esm2022/lib/project.mjs +431 -0
  20. package/browser/esm2022/lib/resize-service.mjs +23 -0
  21. package/browser/{esm2020 → esm2022}/public-api.mjs +1 -1
  22. package/browser/{esm2020 → esm2022}/tnp-helpers.mjs +4 -4
  23. package/{client/fesm2020 → browser/fesm2022}/tnp-helpers.mjs +1680 -1676
  24. package/{client/fesm2020 → browser/fesm2022}/tnp-helpers.mjs.map +1 -1
  25. package/browser/{tnp-helpers.d.ts → index.d.ts} +4 -4
  26. package/browser/lib/angular.helper.d.ts +35 -35
  27. package/browser/lib/base-component.d.ts +16 -16
  28. package/browser/lib/base-formly-component.d.ts +30 -30
  29. package/browser/lib/condition-wait.d.ts +7 -7
  30. package/browser/lib/constants.d.ts +6 -6
  31. package/browser/lib/dual-component-ctrl.d.ts +24 -24
  32. package/browser/lib/firedev-models.d.ts +12 -12
  33. package/browser/lib/helpers-array-obj.d.ts +14 -14
  34. package/browser/lib/helpers-browser.d.ts +10 -10
  35. package/browser/lib/helpers-console-gui.d.ts +5 -5
  36. package/browser/lib/helpers-environment.d.ts +4 -4
  37. package/browser/lib/helpers-numbers.d.ts +2 -2
  38. package/browser/lib/helpers-strings-regexes.d.ts +27 -27
  39. package/browser/lib/helpers-strings.d.ts +49 -49
  40. package/browser/lib/helpers.d.ts +33 -33
  41. package/browser/lib/index.d.ts +11 -11
  42. package/browser/lib/long-press.directive.d.ts +24 -24
  43. package/browser/lib/project.d.ts +93 -93
  44. package/browser/lib/resize-service.d.ts +8 -8
  45. package/browser/package.json +6 -12
  46. package/client/{esm2020 → esm2022}/lib/angular.helper.mjs +87 -87
  47. package/client/esm2022/lib/base-component.mjs +51 -0
  48. package/client/esm2022/lib/base-formly-component.mjs +114 -0
  49. package/{browser/esm2020 → client/esm2022}/lib/condition-wait.mjs +45 -45
  50. package/client/{esm2020 → esm2022}/lib/constants.mjs +8 -8
  51. package/{browser/esm2020 → client/esm2022}/lib/dual-component-ctrl.mjs +118 -118
  52. package/{browser/esm2020 → client/esm2022}/lib/firedev-models.mjs +3 -3
  53. package/{browser/esm2020 → client/esm2022}/lib/helpers-array-obj.mjs +82 -82
  54. package/client/esm2022/lib/helpers-browser.mjs +48 -0
  55. package/{browser/esm2020 → client/esm2022}/lib/helpers-console-gui.mjs +9 -9
  56. package/{browser/esm2020 → client/esm2022}/lib/helpers-environment.mjs +32 -32
  57. package/{browser/esm2020 → client/esm2022}/lib/helpers-numbers.mjs +7 -7
  58. package/{browser/esm2020 → client/esm2022}/lib/helpers-strings-regexes.mjs +50 -50
  59. package/client/{esm2020 → esm2022}/lib/helpers-strings.mjs +252 -252
  60. package/client/esm2022/lib/helpers.mjs +286 -0
  61. package/client/{esm2020 → esm2022}/lib/index.mjs +15 -15
  62. package/client/esm2022/lib/long-press.directive.mjs +114 -0
  63. package/client/esm2022/lib/project.mjs +431 -0
  64. package/client/esm2022/lib/resize-service.mjs +23 -0
  65. package/client/{esm2020 → esm2022}/public-api.mjs +1 -1
  66. package/client/{esm2020 → esm2022}/tnp-helpers.mjs +4 -4
  67. package/{browser/fesm2020 → client/fesm2022}/tnp-helpers.mjs +1680 -1676
  68. package/{browser/fesm2020 → client/fesm2022}/tnp-helpers.mjs.map +1 -1
  69. package/client/{tnp-helpers.d.ts → index.d.ts} +4 -4
  70. package/client/lib/angular.helper.d.ts +35 -35
  71. package/client/lib/base-component.d.ts +16 -16
  72. package/client/lib/base-formly-component.d.ts +30 -30
  73. package/client/lib/condition-wait.d.ts +7 -7
  74. package/client/lib/constants.d.ts +6 -6
  75. package/client/lib/dual-component-ctrl.d.ts +24 -24
  76. package/client/lib/firedev-models.d.ts +12 -12
  77. package/client/lib/helpers-array-obj.d.ts +14 -14
  78. package/client/lib/helpers-browser.d.ts +10 -10
  79. package/client/lib/helpers-console-gui.d.ts +5 -5
  80. package/client/lib/helpers-environment.d.ts +4 -4
  81. package/client/lib/helpers-numbers.d.ts +2 -2
  82. package/client/lib/helpers-strings-regexes.d.ts +27 -27
  83. package/client/lib/helpers-strings.d.ts +49 -49
  84. package/client/lib/helpers.d.ts +33 -33
  85. package/client/lib/index.d.ts +11 -11
  86. package/client/lib/long-press.directive.d.ts +24 -24
  87. package/client/lib/project.d.ts +93 -93
  88. package/client/lib/resize-service.d.ts +8 -8
  89. package/client/package.json +89 -85
  90. package/index.d.ts +1 -1
  91. package/lib/angular.helper.d.ts +35 -35
  92. package/lib/angular.helper.js +3 -3
  93. package/lib/base-component.d.ts +13 -13
  94. package/lib/base-component.js +3 -3
  95. package/lib/base-formly-component.d.ts +27 -27
  96. package/lib/base-formly-component.js +3 -3
  97. package/lib/condition-wait.d.ts +8 -8
  98. package/lib/constants.d.ts +7 -7
  99. package/lib/dual-component-ctrl.d.ts +24 -24
  100. package/lib/dual-component-ctrl.js +3 -3
  101. package/lib/firedev-models.d.ts +13 -13
  102. package/lib/git-project.d.ts +52 -52
  103. package/lib/git-project.js.map +1 -1
  104. package/lib/helpers-array-obj.d.ts +15 -15
  105. package/lib/helpers-browser.d.ts +11 -11
  106. package/lib/helpers-browser.js +1 -2
  107. package/lib/helpers-browser.js.map +1 -1
  108. package/lib/helpers-cli-tool.backend.d.ts +55 -55
  109. package/lib/helpers-console-gui.d.ts +17 -17
  110. package/lib/helpers-dependencies.backend.d.ts +11 -11
  111. package/lib/helpers-environment.d.ts +5 -5
  112. package/lib/helpers-file-folders.backend.d.ts +85 -85
  113. package/lib/helpers-git.backend.d.ts +50 -50
  114. package/lib/helpers-git.backend.js +20 -1
  115. package/lib/helpers-git.backend.js.map +1 -1
  116. package/lib/helpers-json5.backend.d.ts +16 -16
  117. package/lib/helpers-morphi-framework.backend.d.ts +4 -4
  118. package/lib/helpers-network.backend.d.ts +8 -8
  119. package/lib/helpers-network.backend.js.map +1 -1
  120. package/lib/helpers-npm.backend.d.ts +3 -3
  121. package/lib/helpers-numbers.d.ts +3 -3
  122. package/lib/helpers-path.backend.d.ts +7 -7
  123. package/lib/helpers-process.backend.d.ts +58 -58
  124. package/lib/helpers-process.backend.js.map +1 -1
  125. package/lib/helpers-strings-regexes.d.ts +28 -28
  126. package/lib/helpers-strings.d.ts +50 -50
  127. package/lib/helpers-strings.js.map +1 -1
  128. package/lib/helpers-system-terminal.backend.d.ts +5 -5
  129. package/lib/helpers-vscode.backend.d.ts +5 -5
  130. package/lib/helpers.d.ts +74 -74
  131. package/lib/index.d.ts +12 -12
  132. package/lib/long-press.directive.d.ts +22 -22
  133. package/lib/long-press.directive.js +1 -2
  134. package/lib/long-press.directive.js.map +1 -1
  135. package/lib/merge-helpers.backend.d.ts +23 -23
  136. package/lib/project.d.ts +96 -96
  137. package/lib/project.js +4 -3
  138. package/lib/project.js.map +1 -1
  139. package/lib/resize-service.d.ts +6 -6
  140. package/lib/resize-service.js +1 -2
  141. package/lib/resize-service.js.map +1 -1
  142. package/lib/ts-code/index.d.ts +1 -1
  143. package/lib/ts-code/ts-code-extractor.d.ts +14 -14
  144. package/lib/ts-code/ts-code-modifier.backend.d.ts +12 -12
  145. package/package.json +5 -5
  146. package/package.json_tnp.json5 +2 -2
  147. package/tmp-environment.json +94 -90
  148. package/websql/{esm2020 → esm2022}/lib/angular.helper.mjs +87 -87
  149. package/websql/esm2022/lib/base-component.mjs +51 -0
  150. package/websql/esm2022/lib/base-formly-component.mjs +114 -0
  151. package/websql/{esm2020 → esm2022}/lib/condition-wait.mjs +45 -45
  152. package/websql/{esm2020 → esm2022}/lib/constants.mjs +8 -8
  153. package/websql/{esm2020 → esm2022}/lib/dual-component-ctrl.mjs +118 -118
  154. package/websql/{esm2020 → esm2022}/lib/firedev-models.mjs +3 -3
  155. package/websql/{esm2020 → esm2022}/lib/helpers-array-obj.mjs +82 -82
  156. package/websql/esm2022/lib/helpers-browser.mjs +48 -0
  157. package/websql/{esm2020 → esm2022}/lib/helpers-console-gui.mjs +9 -9
  158. package/websql/{esm2020 → esm2022}/lib/helpers-environment.mjs +32 -32
  159. package/websql/{esm2020 → esm2022}/lib/helpers-numbers.mjs +7 -7
  160. package/websql/{esm2020 → esm2022}/lib/helpers-strings-regexes.mjs +50 -50
  161. package/websql/{esm2020 → esm2022}/lib/helpers-strings.mjs +252 -252
  162. package/websql/esm2022/lib/helpers.mjs +286 -0
  163. package/websql/{esm2020 → esm2022}/lib/index.mjs +15 -15
  164. package/websql/esm2022/lib/long-press.directive.mjs +114 -0
  165. package/websql/esm2022/lib/project.mjs +431 -0
  166. package/websql/esm2022/lib/resize-service.mjs +23 -0
  167. package/websql/{esm2020 → esm2022}/public-api.mjs +1 -1
  168. package/websql/{esm2020 → esm2022}/tnp-helpers.mjs +4 -4
  169. package/websql/{fesm2020 → fesm2022}/tnp-helpers.mjs +1680 -1676
  170. package/websql/{fesm2020 → fesm2022}/tnp-helpers.mjs.map +1 -1
  171. package/websql/{tnp-helpers.d.ts → index.d.ts} +4 -4
  172. package/websql/lib/angular.helper.d.ts +35 -35
  173. package/websql/lib/base-component.d.ts +16 -16
  174. package/websql/lib/base-formly-component.d.ts +30 -30
  175. package/websql/lib/condition-wait.d.ts +7 -7
  176. package/websql/lib/constants.d.ts +6 -6
  177. package/websql/lib/dual-component-ctrl.d.ts +24 -24
  178. package/websql/lib/firedev-models.d.ts +12 -12
  179. package/websql/lib/helpers-array-obj.d.ts +14 -14
  180. package/websql/lib/helpers-browser.d.ts +10 -10
  181. package/websql/lib/helpers-console-gui.d.ts +5 -5
  182. package/websql/lib/helpers-environment.d.ts +4 -4
  183. package/websql/lib/helpers-numbers.d.ts +2 -2
  184. package/websql/lib/helpers-strings-regexes.d.ts +27 -27
  185. package/websql/lib/helpers-strings.d.ts +49 -49
  186. package/websql/lib/helpers.d.ts +33 -33
  187. package/websql/lib/index.d.ts +11 -11
  188. package/websql/lib/long-press.directive.d.ts +24 -24
  189. package/websql/lib/project.d.ts +93 -93
  190. package/websql/lib/resize-service.d.ts +8 -8
  191. package/websql/package.json +6 -12
  192. package/browser/esm2020/lib/base-component.mjs +0 -50
  193. package/browser/esm2020/lib/base-formly-component.mjs +0 -113
  194. package/browser/esm2020/lib/helpers-browser.mjs +0 -47
  195. package/browser/esm2020/lib/helpers.mjs +0 -286
  196. package/browser/esm2020/lib/long-press.directive.mjs +0 -113
  197. package/browser/esm2020/lib/project.mjs +0 -430
  198. package/browser/esm2020/lib/resize-service.mjs +0 -22
  199. package/browser/fesm2015/tnp-helpers.mjs +0 -1741
  200. package/browser/fesm2015/tnp-helpers.mjs.map +0 -1
  201. package/client/esm2020/lib/base-component.mjs +0 -50
  202. package/client/esm2020/lib/base-formly-component.mjs +0 -113
  203. package/client/esm2020/lib/helpers-browser.mjs +0 -47
  204. package/client/esm2020/lib/helpers.mjs +0 -286
  205. package/client/esm2020/lib/long-press.directive.mjs +0 -113
  206. package/client/esm2020/lib/project.mjs +0 -430
  207. package/client/esm2020/lib/resize-service.mjs +0 -22
  208. package/client/fesm2015/tnp-helpers.mjs +0 -1741
  209. package/client/fesm2015/tnp-helpers.mjs.map +0 -1
  210. package/websql/esm2020/lib/base-component.mjs +0 -50
  211. package/websql/esm2020/lib/base-formly-component.mjs +0 -113
  212. package/websql/esm2020/lib/helpers-browser.mjs +0 -47
  213. package/websql/esm2020/lib/helpers.mjs +0 -286
  214. package/websql/esm2020/lib/project.mjs +0 -430
  215. package/websql/esm2020/lib/resize-service.mjs +0 -22
  216. package/websql/fesm2015/tnp-helpers.mjs +0 -1741
  217. package/websql/fesm2015/tnp-helpers.mjs.map +0 -1
@@ -0,0 +1,286 @@
1
+ import { _ } from 'tnp-core/websql';
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/websql';
10
+ import { Morphi } from 'morphi/websql';
11
+ import { CoreHelpers } from 'tnp-core/websql';
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1idW5kbGUtd2Vic3FsL3RucC1oZWxwZXJzL3Byb2plY3RzL3RucC1oZWxwZXJzL3NyYy9saWIvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUF3QmpELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDbEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSTdDLE1BQU0sVUFBVSxXQUFXLENBQUMsV0FBZ0IsRUFBRSxTQUFnQjtJQUM1RCxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQzNCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzVELE1BQU0sQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNoSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELGFBQWE7QUFDYixNQUFNLE9BQU8sVUFBVyxTQUFRLFdBQVc7SUFHbEMsTUFBTSxLQUFLLFFBQVE7UUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUU7WUFDekIsVUFBVSxDQUFDLFNBQVMsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1NBQ3pDO1FBQ0QsT0FBTyxVQUFVLENBQUMsU0FBUyxDQUFDO0lBQzlCLENBQUM7SUFFRDtJQUNGLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFFTSxTQUFTLElBQUksZUFBZSxFQUFFLEVBQzlCLFVBQVUsSUFBSSxjQUFjLEVBQUUsRUFDOUIsVUFBVSxJQUFJLGFBQWEsRUFBRSxFQUM3QixhQUFhLElBQUksaUJBQWlCLEVBQUUsRUFFcEMsVUFBVSxlQUFlLENBQUMsUUFBUSxFQUNsQyxLQUFLLFNBQVM7UUFHckIsS0FBSyxFQUFFLENBQUM7UUFURCxXQUFNLEdBQU4sTUFBTSxDQUF3QjtRQUM5QixZQUFPLEdBQVAsT0FBTyxDQUF1QjtRQUM5QixZQUFPLEdBQVAsT0FBTyxDQUFzQjtRQUM3QixlQUFVLEdBQVYsVUFBVSxDQUEwQjtRQUVwQyxZQUFPLEdBQVAsT0FBTyxDQUEyQjtRQUNsQyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBNEh2QixrQkFBYSxHQUFHLGFBQWEsQ0FBQztRQXNEaEMsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUdMLEtBQUs7UUFDTCxLQUFLO1FBRUksZ0JBQVcsR0FBRyxXQUFXLENBQUM7SUEvUGpDLENBQUM7SUFFRCxPQUFPLENBQUMsQ0FBVyxFQUFFLElBQVk7UUFDL0IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkIs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QUssQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FvRkY7QUFhRCxXQUFXLENBQUMsVUFBVSxFQUFFO0lBQ3RCLHFCQUFxQjtJQUNyQixrQkFBa0I7SUFDcEIsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0NBRUosQ0FBQyxDQUFDO0FBRUYsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyx1REFBdUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfIH0gZnJvbSAndG5wLWNvcmUvd2Vic3FsJztcbmltcG9ydCB7IEhlbHBlcnNBcnJheU9iaiB9IGZyb20gJy4vaGVscGVycy1hcnJheS1vYmonO1xuaW1wb3J0IHsgSGVscGVyc1N0cmluZ3NSZWdleGVzIH0gZnJvbSAnLi9oZWxwZXJzLXN0cmluZ3MtcmVnZXhlcyc7XG5pbXBvcnQgeyBIZWxwZXJzRW52aXJvbm1lbnQgfSBmcm9tICcuL2hlbHBlcnMtZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgSGVscGVyc1N0cmluZ3MgfSBmcm9tICcuL2hlbHBlcnMtc3RyaW5ncyc7XG5pbXBvcnQgeyBIZWxwZXJzQ29uc29sZUd1aSB9IGZyb20gJy4vaGVscGVycy1jb25zb2xlLWd1aSc7XG5pbXBvcnQgeyBjb25kaXRpb25XYWl0IH0gZnJvbSAnLi9jb25kaXRpb24td2FpdCc7XG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbmltcG9ydCB7IGNvbmZpZywgQ29uZmlnTW9kZWxzIH0gZnJvbSAndG5wLWNvbmZpZy93ZWJzcWwnO1xuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJy4vaW5kZXgnO1xuaW1wb3J0IHsgQ0xBU1MgfSBmcm9tICd0eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvd2Vic3FsJztcbmltcG9ydCB7IE1vcnBoaSB9IGZyb20gJ21vcnBoaS93ZWJzcWwnO1xuaW1wb3J0IHsgQ29yZUhlbHBlcnMgfSBmcm9tICd0bnAtY29yZS93ZWJzcWwnO1xuaW1wb3J0IHsgSGVscGVyc051bWJlciB9IGZyb20gJy4vaGVscGVycy1udW1iZXJzJztcblxuaW1wb3J0IHsgSGVscGVyc0Jyb3dhc2VyIH0gZnJvbSAnLi9oZWxwZXJzLWJyb3dzZXInO1xuXG5pbXBvcnQgeyBOZ0hlbHBlcnMgfSBmcm9tICcuL2FuZ3VsYXIuaGVscGVyJztcblxuXG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseU1peGlucyhkZXJpdmVkQ3RvcjogYW55LCBiYXNlQ3RvcnM6IGFueVtdKSB7XG4gIGJhc2VDdG9ycy5mb3JFYWNoKGJhc2VDdG9yID0+IHtcbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhiYXNlQ3Rvci5wcm90b3R5cGUpLmZvckVhY2gobmFtZSA9PiB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZGVyaXZlZEN0b3IucHJvdG90eXBlLCBuYW1lLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGJhc2VDdG9yLnByb3RvdHlwZSwgbmFtZSkpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuLy8gQHRzLWlnbm9yZVxuZXhwb3J0IGNsYXNzIEhlbHBlcnNUbnAgZXh0ZW5kcyBDb3JlSGVscGVycyB7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBIZWxwZXJzVG5wICYgQ29yZUhlbHBlcnM7XG4gIHB1YmxpYyBzdGF0aWMgZ2V0IEluc3RhbmNlKCkge1xuICAgIGlmICghSGVscGVyc1RucC5faW5zdGFuY2UpIHtcbiAgICAgIEhlbHBlcnNUbnAuX2luc3RhbmNlID0gbmV3IEhlbHBlcnNUbnAoKTtcbiAgICB9XG4gICAgcmV0dXJuIEhlbHBlcnNUbnAuX2luc3RhbmNlO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgIHB1YmxpYyBhcnJheXMgPSBuZXcgSGVscGVyc0FycmF5T2JqKCksXG4gICAgcHVibGljIHN0cmluZ3MgPSBuZXcgSGVscGVyc1N0cmluZ3MoKSxcbiAgICBwdWJsaWMgbnVtYmVycyA9IG5ldyBIZWxwZXJzTnVtYmVyKCksXG4gICAgcHVibGljIGNvbnNvbGVHdWkgPSBuZXcgSGVscGVyc0NvbnNvbGVHdWkoKSxcblxuICAgIHB1YmxpYyBicm93c2VyID0gSGVscGVyc0Jyb3dhc2VyLmluc3RhbmNlLFxuICAgIHB1YmxpYyBuZyA9IE5nSGVscGVyc1xuXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBDTElXUkFQKGY6IEZ1bmN0aW9uLCBuYW1lOiBzdHJpbmcpIHtcbiAgICBDTEFTUy5zZXROYW1lKGYsIG5hbWUpO1xuICAgIHJldHVybiBmO1xuICB9XG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuICBhc3luYyBpc0VsZXZhdGVkKCkge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gIH1cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbiAgYXN5bmMgbWVzdXJlRXhlY3Rpb25Jbk1zKFxuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmcsXG4gICAgZnVuY3Rpb25Ub0V4ZWN1dGU6IEZ1bmN0aW9uLFxuICAgIC4uLmZ1bmN0aW9uQXJndW1lbnRzOiBhbnlbXSk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgdmFyIHN0YXJ0ID0gbmV3IERhdGUoKVxuICAgIGF3YWl0IEhlbHBlcnMucnVuU3luY09yQXN5bmMoZnVuY3Rpb25Ub0V4ZWN1dGUsIC4uLmZ1bmN0aW9uQXJndW1lbnRzKTtcbiAgICAvL0B0cy1pZ25vcmVcbiAgICB2YXIgZW5kID0gbmV3IERhdGUoKSAtIHN0YXJ0XG4gICAgaWYgKE1vcnBoaS5Jc0Jyb3dzZXIpIHtcbiAgICAgIEhlbHBlcnMuaW5mbyhgRXhlY3V0aW9uIHRpbWU6ICR7ZW5kLnRvU3RyaW5nKCl9bXMgZm9yIFwiJHtkZXNjcmlwdGlvbn1cImApO1xuICAgIH1cbi8qICovXG4vKiAqL1xuICBcbiAgICByZXR1cm4gZW5kO1xuICB9XG5cbiAgbWVzdXJlRXhlY3Rpb25Jbk1zU3luYyhcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nLFxuICAgIGZ1bmN0aW9uVG9FeGVjdXRlOiAoKSA9PiB2b2lkKTogbnVtYmVyIHtcbiAgICB2YXIgc3RhcnQgPSBuZXcgRGF0ZSgpXG4gICAgZnVuY3Rpb25Ub0V4ZWN1dGUoKTtcbiAgICAvL0B0cy1pZ25vcmVcbiAgICB2YXIgZW5kID0gbmV3IERhdGUoKSAtIHN0YXJ0XG4gICAgaWYgKE1vcnBoaS5Jc0Jyb3dzZXIpIHtcbiAgICAgIEhlbHBlcnMubG9nKGBFeGVjdXRpb24gdGltZTogJHtlbmQudG9TdHJpbmcoKX1tcyBmb3IgXCIke2Rlc2NyaXB0aW9ufVwiYCk7XG4gICAgfVxuLyogKi9cbi8qICovXG4gIFxuICAgIHJldHVybiBlbmQ7XG4gIH1cblxuICBjb25kaXRpb25XYWl0ID0gY29uZGl0aW9uV2FpdDtcblxuICB3YWl0Rm9yQ29uZGl0aW9uKGNvbmRpdGlvbkZuOiAoYW55KSA9PiBib29sZWFuLCBob3dPZmZ0ZW5DaGVja0luTXMgPSAxMDAwKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgSGVscGVycy5ydW5TeW5jT3JBc3luYyhjb25kaXRpb25Gbik7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIHJlc29sdmUodm9pZCAwKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgSGVscGVycy53YWl0Rm9yQ29uZGl0aW9uKGNvbmRpdGlvbkZuLCBob3dPZmZ0ZW5DaGVja0luTXMpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZSh2b2lkIDApO1xuICAgICAgICAgIH0pXG4gICAgICAgIH0sIGhvd09mZnRlbkNoZWNrSW5Ncyk7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGdldEJyb3dzZXJWZXJQYXRoKG1vZHVsZU5hbWU/OiBzdHJpbmcsIHdlYnNxbDogYm9vbGVhbiA9IGZhbHNlKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gIH1cblxuICBnZXRNZXRob2ROYW1lKG9iaiwgbWV0aG9kKTogc3RyaW5nIHtcbiAgICB2YXIgbWV0aG9kTmFtZSA9IG51bGw7XG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqKS5mb3JFYWNoKHByb3AgPT4ge1xuICAgICAgaWYgKG9ialtwcm9wXSA9PT0gbWV0aG9kKSB7XG4gICAgICAgIG1ldGhvZE5hbWUgPSBwcm9wO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKG1ldGhvZE5hbWUgIT09IG51bGwpIHtcbiAgICAgIHJldHVybiBtZXRob2ROYW1lO1xuICAgIH1cblxuICAgIHZhciBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopO1xuICAgIGlmIChwcm90bykge1xuICAgICAgcmV0dXJuIEhlbHBlcnMuZ2V0TWV0aG9kTmFtZShwcm90bywgbWV0aG9kKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBmaXhXZWJwYWNrRW52KGVudjogT2JqZWN0KSB7XG4gICAgXy5mb3JJbihlbnYsICh2LCBrKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZTogc3RyaW5nID0gdiBhcyBhbnk7XG4gICAgICBpZiAodmFsdWUgPT09ICd0cnVlJykgZW52W2tdID0gdHJ1ZTtcbiAgICAgIGlmICh2YWx1ZSA9PT0gJ2ZhbHNlJykgZW52W2tdID0gZmFsc2U7XG4gICAgfSlcbiAgfVxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuLyogKi9cbi8qICovXG4gIFxuICBwdWJsaWMgYXBwbHlNaXhpbnMgPSBhcHBseU1peGlucztcbn1cblxuLy8gQHRzLWlnbm9yZVxuZXhwb3J0IGludGVyZmFjZSBIZWxwZXJzVG5wIGV4dGVuZHNcbiAgSGVscGVyc1N0cmluZ3NSZWdleGVzLFxuICBIZWxwZXJzRW52aXJvbm1lbnRcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxueyB9XG5cbmFwcGx5TWl4aW5zKEhlbHBlcnNUbnAsIFtcbiAgSGVscGVyc1N0cmluZ3NSZWdleGVzLFxuICBIZWxwZXJzRW52aXJvbm1lbnQsXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXSk7XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10bnAtaGVscGVycyBsaWIvaGVscGVycy50cyJdfQ==
@@ -1,16 +1,16 @@
1
- import { HelpersTnp as Base } from './helpers';
2
- export * from './constants';
3
- /* */
4
- /* */
5
- export const Helpers = Base.Instance;
6
- export * from './project';
7
- export * from './firedev-models';
8
- export { SerializedSubject } from './angular.helper';
9
- export { BaseComponent, BaseComponentForRouter } from './base-component';
10
- export { BaseFormlyComponent } from './base-formly-component';
11
- export { DualComponentController } from './dual-component-ctrl';
12
- export { ResizeService } from './resize-service';
13
- export { LongPress } from './long-press.directive';
14
- ;
15
- ({}); // @--end-of-file-for-module=tnp-helpers lib/index.ts
1
+ import { HelpersTnp as Base } from './helpers';
2
+ export * from './constants';
3
+ /* */
4
+ /* */
5
+ export const Helpers = Base.Instance;
6
+ export * from './project';
7
+ export * from './firedev-models';
8
+ export { SerializedSubject } from './angular.helper';
9
+ export { BaseComponent, BaseComponentForRouter } from './base-component';
10
+ export { BaseFormlyComponent } from './base-formly-component';
11
+ export { DualComponentController } from './dual-component-ctrl';
12
+ export { ResizeService } from './resize-service';
13
+ export { LongPress } from './long-press.directive';
14
+ ;
15
+ ({}); // @--end-of-file-for-module=tnp-helpers lib/index.ts
16
16
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItYnVuZGxlLXdlYnNxbC90bnAtaGVscGVycy9wcm9qZWN0cy90bnAtaGVscGVycy9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLElBQUksSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQy9DLGNBQWMsYUFBYSxDQUFDO0FBRTVCLEtBQUs7QUFDTCxLQUFLO0FBR0wsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7QUFDckMsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxrQkFBa0IsQ0FBQztBQUdqQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUdsRCxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHFEQUFxRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhlbHBlcnNUbnAgYXMgQmFzZSB9IGZyb20gJy4vaGVscGVycyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0YW50cyc7XG5leHBvcnQgeyBDb25kaXRpb24gfSBmcm9tICcuL2NvbmRpdGlvbi13YWl0Jztcbi8qICovXG4vKiAqL1xuICBcblxuZXhwb3J0IGNvbnN0IEhlbHBlcnMgPSBCYXNlLkluc3RhbmNlO1xuZXhwb3J0ICogZnJvbSAnLi9wcm9qZWN0JztcbmV4cG9ydCAqIGZyb20gJy4vZmlyZWRldi1tb2RlbHMnO1xuXG5cbmV4cG9ydCB7IFNlcmlhbGl6ZWRTdWJqZWN0IH0gZnJvbSAnLi9hbmd1bGFyLmhlbHBlcic7XG5leHBvcnQgeyBCYXNlQ29tcG9uZW50LCBCYXNlQ29tcG9uZW50Rm9yUm91dGVyIH0gZnJvbSAnLi9iYXNlLWNvbXBvbmVudCc7XG5leHBvcnQgeyBCYXNlRm9ybWx5Q29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLWZvcm1seS1jb21wb25lbnQnO1xuZXhwb3J0IHsgRHVhbENvbXBvbmVudENvbnRyb2xsZXIgfSBmcm9tICcuL2R1YWwtY29tcG9uZW50LWN0cmwnO1xuZXhwb3J0IHsgUmVzaXplU2VydmljZSB9IGZyb20gJy4vcmVzaXplLXNlcnZpY2UnO1xuZXhwb3J0IHsgTG9uZ1ByZXNzIH0gZnJvbSAnLi9sb25nLXByZXNzLmRpcmVjdGl2ZSc7XG5cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRucC1oZWxwZXJzIGxpYi9pbmRleC50cyJdfQ==
@@ -0,0 +1,114 @@
1
+ import { Directive, Input, Output, EventEmitter, HostBinding, HostListener } from '@angular/core'; /* */
2
+ /* */
3
+ /* */
4
+ /* */
5
+ /* */
6
+ /* */
7
+ /* */
8
+ import { _ } from 'tnp-core/websql';
9
+ import { Log, Level } from 'ng2-logger/websql';
10
+ import * as i0 from "@angular/core";
11
+ const log = Log.create(`[firedev-helpers] long-press`, Level.__NOTHING);
12
+ class LongPress {
13
+ constructor() {
14
+ this.pressDuration = 1000;
15
+ this.onLongPress = new EventEmitter();
16
+ this.onLongPressing = new EventEmitter();
17
+ this.onLongPressEnd = new EventEmitter();
18
+ this.mouseX = 0;
19
+ this.mouseY = 0;
20
+ this.allowTrigger = false;
21
+ this.triggerEnd = _.debounce(() => {
22
+ this.endPress();
23
+ }, 500);
24
+ }
25
+ get press() { return this.pressing; }
26
+ get longPress() { return this.longPressing; }
27
+ onMouseDown(event) {
28
+ log.d(`MOUSE DOWN `);
29
+ if (event.which !== 1)
30
+ return;
31
+ this.allowTrigger = true;
32
+ this.mouseX = event.clientX;
33
+ this.mouseY = event.clientY;
34
+ this.pressing = true;
35
+ this.longPressing = false;
36
+ this.timeout = setTimeout(() => {
37
+ if (this.allowTrigger) {
38
+ this.longPressing = true;
39
+ log.d(`long pressing start pressDuration:${this.pressDuration} `);
40
+ this.onLongPress.emit(event);
41
+ this.loop(event);
42
+ }
43
+ }, this.pressDuration);
44
+ this.loop(event);
45
+ }
46
+ onMouseMove(event) {
47
+ if (this.pressing && !this.longPressing) {
48
+ const xThres = (event.clientX - this.mouseX) > 10;
49
+ const yThres = (event.clientY - this.mouseY) > 10;
50
+ if (xThres || yThres) {
51
+ this.endPress();
52
+ }
53
+ }
54
+ }
55
+ loop(event) {
56
+ if (this.longPressing) {
57
+ this.timeout = setTimeout(() => {
58
+ log.d(`emil longpressing`);
59
+ this.triggerEnd();
60
+ this.onLongPressing.emit(event);
61
+ this.loop(event);
62
+ }, 50);
63
+ }
64
+ }
65
+ endPress(emit = true) {
66
+ this.allowTrigger = false;
67
+ clearTimeout(this.timeout);
68
+ this.longPressing = false;
69
+ this.pressing = false;
70
+ if (emit) {
71
+ log.d(`EMIT END`);
72
+ this.onLongPressEnd.emit(true);
73
+ }
74
+ else {
75
+ log.d(`NOT EMIT END`);
76
+ }
77
+ }
78
+ onMouseUp() {
79
+ this.endPress(false);
80
+ }
81
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: LongPress, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
82
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.4", type: LongPress, selector: "[long-press]", inputs: { pressDuration: "pressDuration" }, outputs: { onLongPress: "onLongPress", onLongPressing: "onLongPressing", onLongPressEnd: "onLongPressEnd" }, host: { listeners: { "mousedown": "onMouseDown($event)", "mousemove": "onMouseMove($event)", "mouseup": "onMouseUp()" }, properties: { "class.press": "this.press", "class.longpress": "this.longPress" } }, ngImport: i0 }); }
83
+ }
84
+ export { LongPress };
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: LongPress, decorators: [{
86
+ type: Directive,
87
+ args: [{ selector: '[long-press]' }]
88
+ }], propDecorators: { pressDuration: [{
89
+ type: Input
90
+ }], onLongPress: [{
91
+ type: Output
92
+ }], onLongPressing: [{
93
+ type: Output
94
+ }], onLongPressEnd: [{
95
+ type: Output
96
+ }], press: [{
97
+ type: HostBinding,
98
+ args: ['class.press']
99
+ }], longPress: [{
100
+ type: HostBinding,
101
+ args: ['class.longpress']
102
+ }], onMouseDown: [{
103
+ type: HostListener,
104
+ args: ['mousedown', ['$event']]
105
+ }], onMouseMove: [{
106
+ type: HostListener,
107
+ args: ['mousemove', ['$event']]
108
+ }], onMouseUp: [{
109
+ type: HostListener,
110
+ args: ['mouseup']
111
+ }] } });
112
+ ;
113
+ ({}); // @--end-of-file-for-module=tnp-helpers lib/long-press.directive.ts
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9uZy1wcmVzcy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItYnVuZGxlLXdlYnNxbC90bnAtaGVscGVycy9wcm9qZWN0cy90bnAtaGVscGVycy9zcmMvbGliL2xvbmctcHJlc3MuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBSSxTQUFTLEVBQUksS0FBSyxFQUFJLE1BQU0sRUFBSSxZQUFZLEVBQUksV0FBVyxFQUFJLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQyxDQUFBLEtBQUs7QUFDbkgsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBR0wsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBQy9DLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsOEJBQThCLEVBQ2pELEtBQUssQ0FBQyxTQUFTLENBQ2xCLENBQUE7QUFFRCxNQUNhLFNBQVM7SUFEdEI7UUFHVyxrQkFBYSxHQUFXLElBQUksQ0FBQztRQUU1QixnQkFBVyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3BELG1CQUFjLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkQsbUJBQWMsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUt6RCxXQUFNLEdBQVcsQ0FBQyxDQUFDO1FBQ25CLFdBQU0sR0FBVyxDQUFDLENBQUM7UUFRM0IsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsZUFBVSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzNCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNsQixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUE7S0FvRVI7SUE3RUMs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QUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQzs4R0F6RlUsU0FBUztrR0FBVCxTQUFTOztTQUFULFNBQVM7MkZBQVQsU0FBUztrQkFEckIsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUU7OEJBRzVCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBU0gsS0FBSztzQkFEUixXQUFXO3VCQUFDLGFBQWE7Z0JBSXRCLFNBQVM7c0JBRFosV0FBVzt1QkFBQyxpQkFBaUI7Z0JBUzlCLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBMkJyQyxXQUFXO3NCQURWLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQW9DckMsU0FBUztzQkFEUixZQUFZO3VCQUFDLFNBQVM7O0FBT3hCLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsb0VBQW9FIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgICBEaXJlY3RpdmUsICAgSW5wdXQsICAgT3V0cHV0LCAgIEV2ZW50RW1pdHRlciwgICBIb3N0QmluZGluZywgICBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJzsvKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuXG5cbmltcG9ydCB7IF8gfSBmcm9tICd0bnAtY29yZS93ZWJzcWwnO1xuaW1wb3J0IHsgTG9nLCBMZXZlbCB9IGZyb20gJ25nMi1sb2dnZXIvd2Vic3FsJztcbmNvbnN0IGxvZyA9IExvZy5jcmVhdGUoYFtmaXJlZGV2LWhlbHBlcnNdIGxvbmctcHJlc3NgXG4gICwgTGV2ZWwuX19OT1RISU5HXG4pXG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tsb25nLXByZXNzXScgfSlcbmV4cG9ydCBjbGFzcyBMb25nUHJlc3Mge1xuXG4gIEBJbnB1dCgpIHByZXNzRHVyYXRpb246IG51bWJlciA9IDEwMDA7XG5cbiAgQE91dHB1dCgpIG9uTG9uZ1ByZXNzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uTG9uZ1ByZXNzaW5nOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uTG9uZ1ByZXNzRW5kOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwcml2YXRlIHByZXNzaW5nOiBib29sZWFuO1xuICBwcml2YXRlIGxvbmdQcmVzc2luZzogYm9vbGVhbjtcbiAgcHJpdmF0ZSB0aW1lb3V0OiBhbnk7XG4gIHByaXZhdGUgbW91c2VYOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIG1vdXNlWTogbnVtYmVyID0gMDtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnByZXNzJylcbiAgZ2V0IHByZXNzKCkgeyByZXR1cm4gdGhpcy5wcmVzc2luZzsgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MubG9uZ3ByZXNzJylcbiAgZ2V0IGxvbmdQcmVzcygpIHsgcmV0dXJuIHRoaXMubG9uZ1ByZXNzaW5nOyB9XG5cbiAgYWxsb3dUcmlnZ2VyID0gZmFsc2U7XG4gIHRyaWdnZXJFbmQgPSBfLmRlYm91bmNlKCgpID0+IHtcbiAgICB0aGlzLmVuZFByZXNzKCk7XG4gIH0sIDUwMClcblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nLCBbJyRldmVudCddKVxuICBvbk1vdXNlRG93bihldmVudCkge1xuXG4gICAgbG9nLmQoYE1PVVNFIERPV04gYCk7XG5cbiAgICBpZiAoZXZlbnQud2hpY2ggIT09IDEpIHJldHVybjtcbiAgICB0aGlzLmFsbG93VHJpZ2dlciA9IHRydWU7XG5cbiAgICB0aGlzLm1vdXNlWCA9IGV2ZW50LmNsaWVudFg7XG4gICAgdGhpcy5tb3VzZVkgPSBldmVudC5jbGllbnRZO1xuXG4gICAgdGhpcy5wcmVzc2luZyA9IHRydWU7XG4gICAgdGhpcy5sb25nUHJlc3NpbmcgPSBmYWxzZTtcblxuICAgIHRoaXMudGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuYWxsb3dUcmlnZ2VyKSB7XG4gICAgICAgIHRoaXMubG9uZ1ByZXNzaW5nID0gdHJ1ZTtcbiAgICAgICAgbG9nLmQoYGxvbmcgcHJlc3Npbmcgc3RhcnQgIHByZXNzRHVyYXRpb246JHt0aGlzLnByZXNzRHVyYXRpb259IGApO1xuICAgICAgICB0aGlzLm9uTG9uZ1ByZXNzLmVtaXQoZXZlbnQpO1xuICAgICAgICB0aGlzLmxvb3AoZXZlbnQpO1xuICAgICAgfVxuICAgIH0sIHRoaXMucHJlc3NEdXJhdGlvbik7XG5cbiAgICB0aGlzLmxvb3AoZXZlbnQpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2Vtb3ZlJywgWyckZXZlbnQnXSlcbiAgb25Nb3VzZU1vdmUoZXZlbnQpIHtcbiAgICBpZiAodGhpcy5wcmVzc2luZyAmJiAhdGhpcy5sb25nUHJlc3NpbmcpIHtcbiAgICAgIGNvbnN0IHhUaHJlcyA9IChldmVudC5jbGllbnRYIC0gdGhpcy5tb3VzZVgpID4gMTA7XG4gICAgICBjb25zdCB5VGhyZXMgPSAoZXZlbnQuY2xpZW50WSAtIHRoaXMubW91c2VZKSA+IDEwO1xuICAgICAgaWYgKHhUaHJlcyB8fCB5VGhyZXMpIHtcbiAgICAgICAgdGhpcy5lbmRQcmVzcygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGxvb3AoZXZlbnQpIHtcbiAgICBpZiAodGhpcy5sb25nUHJlc3NpbmcpIHtcbiAgICAgIHRoaXMudGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBsb2cuZChgZW1pbCBsb25ncHJlc3NpbmdgKVxuICAgICAgICB0aGlzLnRyaWdnZXJFbmQoKTtcbiAgICAgICAgdGhpcy5vbkxvbmdQcmVzc2luZy5lbWl0KGV2ZW50KTtcbiAgICAgICAgdGhpcy5sb29wKGV2ZW50KTtcbiAgICAgIH0sIDUwKTtcbiAgICB9XG4gIH1cblxuICBlbmRQcmVzcyhlbWl0ID0gdHJ1ZSkge1xuICAgIHRoaXMuYWxsb3dUcmlnZ2VyID0gZmFsc2U7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XG4gICAgdGhpcy5sb25nUHJlc3NpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnByZXNzaW5nID0gZmFsc2U7XG4gICAgaWYgKGVtaXQpIHtcbiAgICAgIGxvZy5kKGBFTUlUIEVORGApXG4gICAgICB0aGlzLm9uTG9uZ1ByZXNzRW5kLmVtaXQodHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZy5kKGBOT1QgRU1JVCBFTkRgKVxuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNldXAnKVxuICBvbk1vdXNlVXAoKSB7XG4gICAgdGhpcy5lbmRQcmVzcyhmYWxzZSk7XG4gIH1cblxufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dG5wLWhlbHBlcnMgbGliL2xvbmctcHJlc3MuZGlyZWN0aXZlLnRzIl19