@pepperi-addons/ngx-lib 0.3.15-beta.14 → 0.3.15-beta.15

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 (687) hide show
  1. package/address/address.component.d.ts +27 -27
  2. package/address/address.module.d.ts +2 -2
  3. package/address/pepperi-addons-ngx-lib-address.d.ts +4 -4
  4. package/address/public-api.d.ts +2 -2
  5. package/attachment/attachment.component.d.ts +82 -82
  6. package/attachment/attachment.module.d.ts +2 -2
  7. package/attachment/pepperi-addons-ngx-lib-attachment.d.ts +4 -4
  8. package/attachment/public-api.d.ts +2 -2
  9. package/bread-crumbs/bread-crumbs.component.d.ts +23 -23
  10. package/bread-crumbs/bread-crumbs.model.d.ts +11 -11
  11. package/bread-crumbs/bread-crumbs.module.d.ts +5 -5
  12. package/bread-crumbs/pepperi-addons-ngx-lib-bread-crumbs.d.ts +4 -4
  13. package/bread-crumbs/public-api.d.ts +3 -3
  14. package/bundles/pepperi-addons-ngx-lib-address.umd.js +124 -124
  15. package/bundles/pepperi-addons-ngx-lib-attachment.umd.js +247 -247
  16. package/bundles/pepperi-addons-ngx-lib-bread-crumbs.umd.js +121 -121
  17. package/bundles/pepperi-addons-ngx-lib-button.umd.js +158 -158
  18. package/bundles/pepperi-addons-ngx-lib-carousel.umd.js +788 -788
  19. package/bundles/pepperi-addons-ngx-lib-checkbox.umd.js +192 -192
  20. package/bundles/pepperi-addons-ngx-lib-color.umd.js +299 -299
  21. package/bundles/pepperi-addons-ngx-lib-date.umd.js +667 -667
  22. package/bundles/pepperi-addons-ngx-lib-dialog.umd.js +183 -183
  23. package/bundles/pepperi-addons-ngx-lib-draggable-items.umd.js +151 -151
  24. package/bundles/pepperi-addons-ngx-lib-field-title.umd.js +57 -57
  25. package/bundles/pepperi-addons-ngx-lib-files-uploader.umd.js +260 -260
  26. package/bundles/pepperi-addons-ngx-lib-form.umd.js +3249 -3249
  27. package/bundles/pepperi-addons-ngx-lib-group-buttons.umd.js +87 -87
  28. package/bundles/pepperi-addons-ngx-lib-icon.umd.js +681 -681
  29. package/bundles/pepperi-addons-ngx-lib-image.umd.js +322 -322
  30. package/bundles/pepperi-addons-ngx-lib-images-filmstrip.umd.js +422 -422
  31. package/bundles/pepperi-addons-ngx-lib-link.umd.js +387 -387
  32. package/bundles/pepperi-addons-ngx-lib-list.umd.js +3191 -3191
  33. package/bundles/pepperi-addons-ngx-lib-menu.umd.js +646 -646
  34. package/bundles/pepperi-addons-ngx-lib-page-layout.umd.js +60 -60
  35. package/bundles/pepperi-addons-ngx-lib-profile-data-views-list.umd.js +543 -543
  36. package/bundles/pepperi-addons-ngx-lib-quantity-selector.umd.js +923 -923
  37. package/bundles/pepperi-addons-ngx-lib-query-builder.umd.js +1074 -1074
  38. package/bundles/pepperi-addons-ngx-lib-remote-loader.umd.js +679 -644
  39. package/bundles/pepperi-addons-ngx-lib-remote-loader.umd.js.map +1 -1
  40. package/bundles/pepperi-addons-ngx-lib-rich-html-textarea.umd.js +275 -275
  41. package/bundles/pepperi-addons-ngx-lib-search.umd.js +326 -326
  42. package/bundles/pepperi-addons-ngx-lib-select.umd.js +575 -575
  43. package/bundles/pepperi-addons-ngx-lib-separator.umd.js +79 -79
  44. package/bundles/pepperi-addons-ngx-lib-side-bar.umd.js +163 -163
  45. package/bundles/pepperi-addons-ngx-lib-signature.umd.js +286 -286
  46. package/bundles/pepperi-addons-ngx-lib-size-detector.umd.js +113 -113
  47. package/bundles/pepperi-addons-ngx-lib-slider.umd.js +124 -124
  48. package/bundles/pepperi-addons-ngx-lib-smart-filters.umd.js +1780 -1780
  49. package/bundles/pepperi-addons-ngx-lib-snack-bar.umd.js +148 -148
  50. package/bundles/pepperi-addons-ngx-lib-textarea.umd.js +211 -211
  51. package/bundles/pepperi-addons-ngx-lib-textbox-icon.umd.js +80 -80
  52. package/bundles/pepperi-addons-ngx-lib-textbox.umd.js +530 -530
  53. package/bundles/pepperi-addons-ngx-lib-top-bar.umd.js +129 -129
  54. package/bundles/pepperi-addons-ngx-lib.umd.js +4773 -4773
  55. package/button/button.component.d.ts +99 -99
  56. package/button/button.model.d.ts +14 -14
  57. package/button/button.module.d.ts +2 -2
  58. package/button/pepperi-addons-ngx-lib-button.d.ts +4 -4
  59. package/button/public-api.d.ts +3 -3
  60. package/carousel/carousel-item.directive.d.ts +9 -9
  61. package/carousel/carousel.component.d.ts +145 -145
  62. package/carousel/carousel.module.d.ts +2 -2
  63. package/carousel/pepperi-addons-ngx-lib-carousel.d.ts +4 -4
  64. package/carousel/public-api.d.ts +3 -3
  65. package/checkbox/checkbox.component.d.ts +47 -47
  66. package/checkbox/checkbox.module.d.ts +5 -5
  67. package/checkbox/pepperi-addons-ngx-lib-checkbox.d.ts +4 -4
  68. package/checkbox/public-api.d.ts +2 -2
  69. package/color/color-picker.component.d.ts +53 -53
  70. package/color/color.component.d.ts +26 -26
  71. package/color/color.model.d.ts +1 -1
  72. package/color/color.module.d.ts +5 -5
  73. package/color/pepperi-addons-ngx-lib-color.d.ts +5 -5
  74. package/color/public-api.d.ts +3 -3
  75. package/core/clipboard/clipboard.directive.d.ts +2 -2
  76. package/core/clipboard/clipboard.service.d.ts +2 -2
  77. package/core/clipboard/index.d.ts +1 -1
  78. package/core/clipboard/public-api.d.ts +2 -2
  79. package/core/common/directives/auto-width.directive.d.ts +16 -16
  80. package/core/common/directives/button-blur.directive.d.ts +6 -6
  81. package/core/common/directives/button-loader.directive.d.ts +23 -23
  82. package/core/common/directives/data-qa.directive.d.ts +8 -8
  83. package/core/common/directives/index.d.ts +1 -1
  84. package/core/common/directives/menu-blur.directive.d.ts +7 -7
  85. package/core/common/directives/prevent-multi-click.directive.d.ts +4 -4
  86. package/core/common/directives/print.directive.d.ts +72 -72
  87. package/core/common/directives/public-api.d.ts +7 -7
  88. package/core/common/index.d.ts +1 -1
  89. package/core/common/model/index.d.ts +1 -1
  90. package/core/common/model/papi.model.d.ts +2 -2
  91. package/core/common/model/public-api.d.ts +3 -3
  92. package/core/common/model/utilities.model.d.ts +5 -5
  93. package/core/common/model/wapi.model.d.ts +200 -200
  94. package/core/common/pipes/common-pipes.d.ts +36 -36
  95. package/core/common/pipes/index.d.ts +1 -1
  96. package/core/common/pipes/public-api.d.ts +1 -1
  97. package/core/common/public-api.d.ts +4 -4
  98. package/core/common/services/addon.service.d.ts +38 -38
  99. package/core/common/services/color.service.d.ts +48 -48
  100. package/core/common/services/cookie.service.d.ts +50 -50
  101. package/core/common/services/data-convertor.service.d.ts +41 -41
  102. package/core/common/services/file.service.d.ts +24 -24
  103. package/core/common/services/index.d.ts +1 -1
  104. package/core/common/services/jwt-helper.service.d.ts +10 -10
  105. package/core/common/services/public-api.d.ts +11 -11
  106. package/core/common/services/session.service.d.ts +15 -15
  107. package/core/common/services/translate.service.d.ts +9 -9
  108. package/core/common/services/utilities.service.d.ts +17 -17
  109. package/core/common/services/validator.service.d.ts +28 -28
  110. package/core/common/services/window-scrolling.service.d.ts +7 -7
  111. package/core/customization/customization.model.d.ts +264 -264
  112. package/core/customization/customization.service.d.ts +156 -156
  113. package/core/customization/index.d.ts +1 -1
  114. package/core/customization/public-api.d.ts +2 -2
  115. package/core/http/index.d.ts +1 -1
  116. package/core/http/interceptors/error.interceptor.d.ts +5 -5
  117. package/core/http/interceptors/index.d.ts +11 -11
  118. package/core/http/interceptors/loader.interceptor.d.ts +8 -8
  119. package/core/http/interceptors/profiler.interceptor.d.ts +5 -5
  120. package/core/http/public-api.d.ts +2 -2
  121. package/core/http/services/http.service.d.ts +25 -25
  122. package/core/http/services/loader.service.d.ts +10 -10
  123. package/core/index.d.ts +1 -1
  124. package/core/layout/index.d.ts +1 -1
  125. package/core/layout/layout.service.d.ts +33 -33
  126. package/core/layout/public-api.d.ts +2 -2
  127. package/core/layout/rtl.directive.d.ts +16 -16
  128. package/core/portal/attach.directive.d.ts +10 -10
  129. package/core/portal/index.d.ts +1 -1
  130. package/core/portal/portal.service.d.ts +9 -9
  131. package/core/portal/public-api.d.ts +3 -3
  132. package/core/portal/target.directive.d.ts +9 -9
  133. package/core/public-api.d.ts +7 -7
  134. package/core/scroll-to/index.d.ts +1 -1
  135. package/core/scroll-to/public-api.d.ts +1 -1
  136. package/core/scroll-to/scroll-to.service.d.ts +8 -8
  137. package/date/date.component.d.ts +66 -66
  138. package/date/date.model.d.ts +26 -26
  139. package/date/date.module.d.ts +5 -5
  140. package/date/pepperi-addons-ngx-lib-date.d.ts +5 -5
  141. package/date/public-api.d.ts +2 -2
  142. package/dialog/default-dialog.component.d.ts +9 -9
  143. package/dialog/dialog.component.d.ts +10 -10
  144. package/dialog/dialog.model.d.ts +27 -27
  145. package/dialog/dialog.module.d.ts +5 -5
  146. package/dialog/dialog.service.d.ts +24 -24
  147. package/dialog/pepperi-addons-ngx-lib-dialog.d.ts +5 -5
  148. package/dialog/public-api.d.ts +4 -4
  149. package/draggable-items/draggable-item/draggable-item.component.d.ts +8 -8
  150. package/draggable-items/draggable-items.component.d.ts +33 -33
  151. package/draggable-items/draggable-items.model.d.ts +7 -7
  152. package/draggable-items/draggable-items.module.d.ts +5 -5
  153. package/draggable-items/pepperi-addons-ngx-lib-draggable-items.d.ts +4 -4
  154. package/draggable-items/public-api.d.ts +4 -4
  155. package/esm2015/address/address.component.js +96 -96
  156. package/esm2015/address/address.module.js +30 -30
  157. package/esm2015/address/pepperi-addons-ngx-lib-address.js +4 -4
  158. package/esm2015/address/public-api.js +5 -5
  159. package/esm2015/attachment/attachment.component.js +208 -208
  160. package/esm2015/attachment/attachment.module.js +28 -28
  161. package/esm2015/attachment/pepperi-addons-ngx-lib-attachment.js +4 -4
  162. package/esm2015/attachment/public-api.js +5 -5
  163. package/esm2015/bread-crumbs/bread-crumbs.component.js +78 -78
  164. package/esm2015/bread-crumbs/bread-crumbs.model.js +6 -6
  165. package/esm2015/bread-crumbs/bread-crumbs.module.js +34 -34
  166. package/esm2015/bread-crumbs/pepperi-addons-ngx-lib-bread-crumbs.js +4 -4
  167. package/esm2015/bread-crumbs/public-api.js +6 -6
  168. package/esm2015/button/button.component.js +127 -127
  169. package/esm2015/button/button.model.js +5 -5
  170. package/esm2015/button/button.module.js +26 -26
  171. package/esm2015/button/pepperi-addons-ngx-lib-button.js +4 -4
  172. package/esm2015/button/public-api.js +6 -6
  173. package/esm2015/carousel/carousel-item.directive.js +26 -26
  174. package/esm2015/carousel/carousel.component.js +699 -699
  175. package/esm2015/carousel/carousel.module.js +11 -11
  176. package/esm2015/carousel/pepperi-addons-ngx-lib-carousel.js +4 -4
  177. package/esm2015/carousel/public-api.js +7 -7
  178. package/esm2015/checkbox/checkbox.component.js +151 -151
  179. package/esm2015/checkbox/checkbox.module.js +39 -39
  180. package/esm2015/checkbox/pepperi-addons-ngx-lib-checkbox.js +4 -4
  181. package/esm2015/checkbox/public-api.js +5 -5
  182. package/esm2015/color/color-picker.component.js +197 -197
  183. package/esm2015/color/color.component.js +74 -74
  184. package/esm2015/color/color.model.js +1 -1
  185. package/esm2015/color/color.module.js +57 -57
  186. package/esm2015/color/pepperi-addons-ngx-lib-color.js +5 -5
  187. package/esm2015/color/public-api.js +6 -6
  188. package/esm2015/core/clipboard/clipboard.directive.js +19 -19
  189. package/esm2015/core/clipboard/clipboard.service.js +11 -11
  190. package/esm2015/core/clipboard/index.js +4 -4
  191. package/esm2015/core/clipboard/public-api.js +5 -5
  192. package/esm2015/core/common/directives/auto-width.directive.js +77 -77
  193. package/esm2015/core/common/directives/button-blur.directive.js +22 -22
  194. package/esm2015/core/common/directives/button-loader.directive.js +102 -102
  195. package/esm2015/core/common/directives/data-qa.directive.js +22 -22
  196. package/esm2015/core/common/directives/index.js +4 -4
  197. package/esm2015/core/common/directives/menu-blur.directive.js +28 -28
  198. package/esm2015/core/common/directives/prevent-multi-click.directive.js +21 -21
  199. package/esm2015/core/common/directives/print.directive.js +134 -134
  200. package/esm2015/core/common/directives/public-api.js +11 -11
  201. package/esm2015/core/common/index.js +4 -4
  202. package/esm2015/core/common/model/index.js +4 -4
  203. package/esm2015/core/common/model/papi.model.js +2 -2
  204. package/esm2015/core/common/model/public-api.js +6 -6
  205. package/esm2015/core/common/model/utilities.model.js +56 -56
  206. package/esm2015/core/common/model/wapi.model.js +155 -155
  207. package/esm2015/core/common/pipes/common-pipes.js +141 -141
  208. package/esm2015/core/common/pipes/index.js +4 -4
  209. package/esm2015/core/common/pipes/public-api.js +4 -4
  210. package/esm2015/core/common/public-api.js +7 -7
  211. package/esm2015/core/common/services/addon.service.js +160 -160
  212. package/esm2015/core/common/services/color.service.js +356 -356
  213. package/esm2015/core/common/services/cookie.service.js +147 -147
  214. package/esm2015/core/common/services/data-convertor.service.js +117 -117
  215. package/esm2015/core/common/services/file.service.js +211 -211
  216. package/esm2015/core/common/services/index.js +4 -4
  217. package/esm2015/core/common/services/jwt-helper.service.js +103 -103
  218. package/esm2015/core/common/services/public-api.js +14 -14
  219. package/esm2015/core/common/services/session.service.js +72 -72
  220. package/esm2015/core/common/services/translate.service.js +47 -47
  221. package/esm2015/core/common/services/utilities.service.js +125 -125
  222. package/esm2015/core/common/services/validator.service.js +272 -272
  223. package/esm2015/core/common/services/window-scrolling.service.js +30 -30
  224. package/esm2015/core/customization/customization.model.js +289 -289
  225. package/esm2015/core/customization/customization.service.js +777 -777
  226. package/esm2015/core/customization/index.js +4 -4
  227. package/esm2015/core/customization/public-api.js +5 -5
  228. package/esm2015/core/http/index.js +4 -4
  229. package/esm2015/core/http/interceptors/error.interceptor.js +23 -23
  230. package/esm2015/core/http/interceptors/index.js +23 -23
  231. package/esm2015/core/http/interceptors/loader.interceptor.js +32 -32
  232. package/esm2015/core/http/interceptors/profiler.interceptor.js +28 -28
  233. package/esm2015/core/http/public-api.js +5 -5
  234. package/esm2015/core/http/services/http.service.js +160 -160
  235. package/esm2015/core/http/services/loader.service.js +48 -48
  236. package/esm2015/core/index.js +4 -4
  237. package/esm2015/core/layout/index.js +4 -4
  238. package/esm2015/core/layout/layout.service.js +168 -168
  239. package/esm2015/core/layout/public-api.js +5 -5
  240. package/esm2015/core/layout/rtl.directive.js +46 -46
  241. package/esm2015/core/portal/attach.directive.js +26 -26
  242. package/esm2015/core/portal/index.js +4 -4
  243. package/esm2015/core/portal/portal.service.js +34 -34
  244. package/esm2015/core/portal/public-api.js +6 -6
  245. package/esm2015/core/portal/target.directive.js +23 -23
  246. package/esm2015/core/public-api.js +10 -10
  247. package/esm2015/core/scroll-to/index.js +4 -4
  248. package/esm2015/core/scroll-to/public-api.js +5 -5
  249. package/esm2015/core/scroll-to/scroll-to.service.js +81 -81
  250. package/esm2015/date/date.component.js +251 -251
  251. package/esm2015/date/date.model.js +44 -44
  252. package/esm2015/date/date.module.js +50 -50
  253. package/esm2015/date/pepperi-addons-ngx-lib-date.js +5 -5
  254. package/esm2015/date/public-api.js +5 -5
  255. package/esm2015/dialog/default-dialog.component.js +31 -31
  256. package/esm2015/dialog/dialog.component.js +27 -27
  257. package/esm2015/dialog/dialog.model.js +21 -21
  258. package/esm2015/dialog/dialog.module.js +39 -39
  259. package/esm2015/dialog/dialog.service.js +76 -76
  260. package/esm2015/dialog/pepperi-addons-ngx-lib-dialog.js +5 -5
  261. package/esm2015/dialog/public-api.js +7 -7
  262. package/esm2015/draggable-items/draggable-item/draggable-item.component.js +24 -24
  263. package/esm2015/draggable-items/draggable-items.component.js +91 -91
  264. package/esm2015/draggable-items/draggable-items.model.js +1 -1
  265. package/esm2015/draggable-items/draggable-items.module.js +42 -42
  266. package/esm2015/draggable-items/pepperi-addons-ngx-lib-draggable-items.js +4 -4
  267. package/esm2015/draggable-items/public-api.js +7 -7
  268. package/esm2015/field-title/field-title.component.js +31 -31
  269. package/esm2015/field-title/field-title.module.js +31 -31
  270. package/esm2015/field-title/pepperi-addons-ngx-lib-field-title.js +4 -4
  271. package/esm2015/field-title/public-api.js +5 -5
  272. package/esm2015/files-uploader/files-uploader.component.js +220 -220
  273. package/esm2015/files-uploader/files-uploader.module.js +49 -49
  274. package/esm2015/files-uploader/pepperi-addons-ngx-lib-files-uploader.js +4 -4
  275. package/esm2015/files-uploader/public-api.js +5 -5
  276. package/esm2015/form/field-generator.component.js +121 -121
  277. package/esm2015/form/form.component.js +1196 -1196
  278. package/esm2015/form/form.model.js +1 -1
  279. package/esm2015/form/form.module.js +107 -107
  280. package/esm2015/form/indicators.component.js +20 -20
  281. package/esm2015/form/internal-button.component.js +165 -165
  282. package/esm2015/form/internal-carusel.component.js +115 -115
  283. package/esm2015/form/internal-carusel.service.js +31 -31
  284. package/esm2015/form/internal-list.component.js +494 -494
  285. package/esm2015/form/internal-menu.component.js +54 -54
  286. package/esm2015/form/internal-page.component.js +350 -350
  287. package/esm2015/form/internal-page.service.js +120 -120
  288. package/esm2015/form/pepperi-addons-ngx-lib-form.js +13 -13
  289. package/esm2015/form/public-api.js +6 -6
  290. package/esm2015/group-buttons/group-buttons.component.js +57 -57
  291. package/esm2015/group-buttons/group-buttons.module.js +37 -37
  292. package/esm2015/group-buttons/pepperi-addons-ngx-lib-group-buttons.js +4 -4
  293. package/esm2015/group-buttons/public-api.js +5 -5
  294. package/esm2015/icon/icon-generated-all.model.js +100 -100
  295. package/esm2015/icon/icon-generated.model.js +389 -389
  296. package/esm2015/icon/icon-registry.service.js +22 -22
  297. package/esm2015/icon/icon.component.js +124 -124
  298. package/esm2015/icon/icon.module.js +14 -14
  299. package/esm2015/icon/icon.service.js +31 -31
  300. package/esm2015/icon/pepperi-addons-ngx-lib-icon.js +4 -4
  301. package/esm2015/icon/public-api.js +10 -10
  302. package/esm2015/image/image.component.js +228 -228
  303. package/esm2015/image/image.module.js +48 -48
  304. package/esm2015/image/image.service.js +54 -54
  305. package/esm2015/image/pepperi-addons-ngx-lib-image.js +4 -4
  306. package/esm2015/image/public-api.js +6 -6
  307. package/esm2015/images-filmstrip/images-filmstrip.component.js +372 -372
  308. package/esm2015/images-filmstrip/images-filmstrip.module.js +70 -70
  309. package/esm2015/images-filmstrip/pepperi-addons-ngx-lib-images-filmstrip.js +4 -4
  310. package/esm2015/images-filmstrip/public-api.js +5 -5
  311. package/esm2015/link/link.component.js +315 -315
  312. package/esm2015/link/link.module.js +50 -50
  313. package/esm2015/link/link.pipes.js +12 -12
  314. package/esm2015/link/pepperi-addons-ngx-lib-link.js +5 -5
  315. package/esm2015/link/public-api.js +5 -5
  316. package/esm2015/list/list-actions.component.js +35 -35
  317. package/esm2015/list/list-carousel.component.js +94 -94
  318. package/esm2015/list/list-chooser.component.js +57 -57
  319. package/esm2015/list/list-pager.component.js +112 -112
  320. package/esm2015/list/list-sorting.component.js +54 -54
  321. package/esm2015/list/list-total.component.js +23 -23
  322. package/esm2015/list/list-views.component.js +71 -71
  323. package/esm2015/list/list.component.js +1127 -1127
  324. package/esm2015/list/list.model.js +3 -3
  325. package/esm2015/list/list.module.js +87 -87
  326. package/esm2015/list/list.pipes.js +39 -39
  327. package/esm2015/list/pepperi-addons-ngx-lib-list.js +6 -6
  328. package/esm2015/list/public-api.js +14 -14
  329. package/esm2015/list/virtual-scroller.js +1018 -1018
  330. package/esm2015/menu/menu-item.component.js +102 -102
  331. package/esm2015/menu/menu.component.js +173 -173
  332. package/esm2015/menu/menu.model.js +18 -18
  333. package/esm2015/menu/menu.module.js +39 -39
  334. package/esm2015/menu/pepperi-addons-ngx-lib-menu.js +5 -5
  335. package/esm2015/menu/public-api.js +6 -6
  336. package/esm2015/ngx-lib.module.js +76 -76
  337. package/esm2015/page-layout/page-layout.component.js +41 -41
  338. package/esm2015/page-layout/page-layout.module.js +20 -20
  339. package/esm2015/page-layout/pepperi-addons-ngx-lib-page-layout.js +4 -4
  340. package/esm2015/page-layout/public-api.js +5 -5
  341. package/esm2015/pepperi-addons-ngx-lib.js +8 -8
  342. package/esm2015/profile-data-views-list/pepperi-addons-ngx-lib-profile-data-views-list.js +4 -4
  343. package/esm2015/profile-data-views-list/profile-data-view/profile-data-view.component.js +38 -38
  344. package/esm2015/profile-data-views-list/profile-data-views-card/profile-data-views-card.component.js +59 -59
  345. package/esm2015/profile-data-views-list/profile-data-views-list.component.js +86 -86
  346. package/esm2015/profile-data-views-list/profile-data-views-list.model.js +1 -1
  347. package/esm2015/profile-data-views-list/profile-data-views-list.module.js +56 -56
  348. package/esm2015/profile-data-views-list/public-api.js +8 -8
  349. package/esm2015/public-api.js +5 -5
  350. package/esm2015/quantity-selector/pepperi-addons-ngx-lib-quantity-selector.js +6 -6
  351. package/esm2015/quantity-selector/public-api.js +5 -5
  352. package/esm2015/quantity-selector/quantity-selector-validation.directive.js +43 -43
  353. package/esm2015/quantity-selector/quantity-selector.component.js +465 -465
  354. package/esm2015/quantity-selector/quantity-selector.module.js +52 -52
  355. package/esm2015/quantity-selector/quantity-selector.pipes.js +18 -18
  356. package/esm2015/query-builder/common/model/field.js +1 -1
  357. package/esm2015/query-builder/common/model/filter.js +1 -1
  358. package/esm2015/query-builder/common/model/legacy.js +1 -1
  359. package/esm2015/query-builder/common/model/operator-unit.js +41 -41
  360. package/esm2015/query-builder/common/model/operator.js +206 -206
  361. package/esm2015/query-builder/common/model/structure.js +1 -1
  362. package/esm2015/query-builder/common/model/type-map.js +26 -26
  363. package/esm2015/query-builder/common/model/type.js +5 -5
  364. package/esm2015/query-builder/common/services/output-query.service.js +110 -110
  365. package/esm2015/query-builder/common/services/query-structure.service.js +198 -198
  366. package/esm2015/query-builder/common/services/type-convertor.service.js +39 -39
  367. package/esm2015/query-builder/pepperi-addons-ngx-lib-query-builder.js +9 -9
  368. package/esm2015/query-builder/public-api.js +8 -8
  369. package/esm2015/query-builder/query-builder-item/query-builder-item.component.js +115 -115
  370. package/esm2015/query-builder/query-builder-section/query-builder-section.component.js +63 -63
  371. package/esm2015/query-builder/query-builder.component.js +103 -103
  372. package/esm2015/query-builder/query-builder.module.js +34 -34
  373. package/esm2015/query-builder/query-builder.service.js +100 -100
  374. package/esm2015/remote-loader/addon-block-loader.component.js +69 -63
  375. package/esm2015/remote-loader/pepperi-addons-ngx-lib-remote-loader.js +4 -4
  376. package/esm2015/remote-loader/public-api.js +8 -8
  377. package/esm2015/remote-loader/remote-loader.component.js +116 -118
  378. package/esm2015/remote-loader/remote-loader.model.js +1 -1
  379. package/esm2015/remote-loader/remote-loader.module.js +35 -35
  380. package/esm2015/remote-loader/remote-loader.service.js +112 -102
  381. package/esm2015/rich-html-textarea/pepperi-addons-ngx-lib-rich-html-textarea.js +4 -4
  382. package/esm2015/rich-html-textarea/public-api.js +5 -5
  383. package/esm2015/rich-html-textarea/rich-html-textarea.component.js +219 -219
  384. package/esm2015/rich-html-textarea/rich-html-textarea.module.js +56 -56
  385. package/esm2015/search/pepperi-addons-ngx-lib-search.js +4 -4
  386. package/esm2015/search/public-api.js +6 -6
  387. package/esm2015/search/search.component.js +273 -273
  388. package/esm2015/search/search.model.js +1 -1
  389. package/esm2015/search/search.module.js +44 -44
  390. package/esm2015/select/pepperi-addons-ngx-lib-select.js +4 -4
  391. package/esm2015/select/public-api.js +5 -5
  392. package/esm2015/select/select.component.js +211 -211
  393. package/esm2015/select/select.module.js +42 -42
  394. package/esm2015/separator/pepperi-addons-ngx-lib-separator.js +4 -4
  395. package/esm2015/separator/public-api.js +5 -5
  396. package/esm2015/separator/separator.component.js +62 -62
  397. package/esm2015/separator/separator.module.js +12 -12
  398. package/esm2015/side-bar/pepperi-addons-ngx-lib-side-bar.js +4 -4
  399. package/esm2015/side-bar/public-api.js +6 -6
  400. package/esm2015/side-bar/side-bar.component.js +130 -130
  401. package/esm2015/side-bar/side-bar.model.js +1 -1
  402. package/esm2015/side-bar/side-bar.module.js +33 -33
  403. package/esm2015/signature/pepperi-addons-ngx-lib-signature.js +4 -4
  404. package/esm2015/signature/public-api.js +5 -5
  405. package/esm2015/signature/signature.component.js +233 -233
  406. package/esm2015/signature/signature.module.js +54 -54
  407. package/esm2015/size-detector/pepperi-addons-ngx-lib-size-detector.js +4 -4
  408. package/esm2015/size-detector/public-api.js +5 -5
  409. package/esm2015/size-detector/size-detector.component.js +88 -88
  410. package/esm2015/size-detector/size-detector.module.js +21 -21
  411. package/esm2015/slider/pepperi-addons-ngx-lib-slider.js +4 -4
  412. package/esm2015/slider/public-api.js +5 -5
  413. package/esm2015/slider/slider.component.js +95 -95
  414. package/esm2015/slider/slider.module.js +24 -24
  415. package/esm2015/smart-filters/boolean-filter/boolean-filter.component.js +41 -41
  416. package/esm2015/smart-filters/common/filter-actions.component.js +25 -25
  417. package/esm2015/smart-filters/common/model/base-filter-component.js +259 -259
  418. package/esm2015/smart-filters/common/model/creator.js +75 -75
  419. package/esm2015/smart-filters/common/model/field.js +116 -116
  420. package/esm2015/smart-filters/common/model/filter.js +1 -1
  421. package/esm2015/smart-filters/common/model/operator.js +215 -215
  422. package/esm2015/smart-filters/common/model/type.js +1 -1
  423. package/esm2015/smart-filters/date-filter/date-filter.component.js +143 -143
  424. package/esm2015/smart-filters/multi-select-filter/multi-select-filter.component.js +152 -152
  425. package/esm2015/smart-filters/number-filter/number-filter.component.js +102 -102
  426. package/esm2015/smart-filters/pepperi-addons-ngx-lib-smart-filters.js +4 -4
  427. package/esm2015/smart-filters/public-api.js +18 -18
  428. package/esm2015/smart-filters/smart-filters.component.js +129 -129
  429. package/esm2015/smart-filters/smart-filters.module.js +90 -90
  430. package/esm2015/smart-filters/text-filter/text-filter.component.js +78 -78
  431. package/esm2015/snack-bar/default-snack-bar.component.js +27 -27
  432. package/esm2015/snack-bar/pepperi-addons-ngx-lib-snack-bar.js +5 -5
  433. package/esm2015/snack-bar/public-api.js +7 -7
  434. package/esm2015/snack-bar/snack-bar.component.js +25 -25
  435. package/esm2015/snack-bar/snack-bar.model.js +6 -6
  436. package/esm2015/snack-bar/snack-bar.module.js +41 -41
  437. package/esm2015/snack-bar/snack-bar.service.js +62 -62
  438. package/esm2015/textarea/pepperi-addons-ngx-lib-textarea.js +4 -4
  439. package/esm2015/textarea/public-api.js +5 -5
  440. package/esm2015/textarea/textarea.component.js +160 -160
  441. package/esm2015/textarea/textarea.module.js +50 -50
  442. package/esm2015/textbox/pepperi-addons-ngx-lib-textbox.js +5 -5
  443. package/esm2015/textbox/public-api.js +5 -5
  444. package/esm2015/textbox/textbox-validation.directive.js +85 -85
  445. package/esm2015/textbox/textbox.component.js +388 -388
  446. package/esm2015/textbox/textbox.module.js +44 -44
  447. package/esm2015/textbox-icon/pepperi-addons-ngx-lib-textbox-icon.js +4 -4
  448. package/esm2015/textbox-icon/public-api.js +5 -5
  449. package/esm2015/textbox-icon/textbox-icon.component.js +40 -40
  450. package/esm2015/textbox-icon/textbox-icon.module.js +46 -46
  451. package/esm2015/top-bar/pepperi-addons-ngx-lib-top-bar.js +4 -4
  452. package/esm2015/top-bar/public-api.js +6 -6
  453. package/esm2015/top-bar/top-bar.component.js +98 -98
  454. package/esm2015/top-bar/top-bar.model.js +1 -1
  455. package/esm2015/top-bar/top-bar.module.js +40 -40
  456. package/fesm2015/pepperi-addons-ngx-lib-address.js +116 -116
  457. package/fesm2015/pepperi-addons-ngx-lib-attachment.js +227 -227
  458. package/fesm2015/pepperi-addons-ngx-lib-bread-crumbs.js +109 -109
  459. package/fesm2015/pepperi-addons-ngx-lib-button.js +149 -149
  460. package/fesm2015/pepperi-addons-ngx-lib-carousel.js +731 -731
  461. package/fesm2015/pepperi-addons-ngx-lib-checkbox.js +178 -178
  462. package/fesm2015/pepperi-addons-ngx-lib-color.js +295 -295
  463. package/fesm2015/pepperi-addons-ngx-lib-date.js +320 -320
  464. package/fesm2015/pepperi-addons-ngx-lib-dialog.js +169 -169
  465. package/fesm2015/pepperi-addons-ngx-lib-draggable-items.js +143 -143
  466. package/fesm2015/pepperi-addons-ngx-lib-field-title.js +55 -55
  467. package/fesm2015/pepperi-addons-ngx-lib-files-uploader.js +252 -252
  468. package/fesm2015/pepperi-addons-ngx-lib-form.js +2693 -2693
  469. package/fesm2015/pepperi-addons-ngx-lib-group-buttons.js +84 -84
  470. package/fesm2015/pepperi-addons-ngx-lib-icon.js +662 -662
  471. package/fesm2015/pepperi-addons-ngx-lib-image.js +306 -306
  472. package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.js +409 -409
  473. package/fesm2015/pepperi-addons-ngx-lib-link.js +357 -357
  474. package/fesm2015/pepperi-addons-ngx-lib-list.js +2661 -2661
  475. package/fesm2015/pepperi-addons-ngx-lib-menu.js +314 -314
  476. package/fesm2015/pepperi-addons-ngx-lib-page-layout.js +55 -55
  477. package/fesm2015/pepperi-addons-ngx-lib-profile-data-views-list.js +219 -219
  478. package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.js +554 -554
  479. package/fesm2015/pepperi-addons-ngx-lib-query-builder.js +989 -989
  480. package/fesm2015/pepperi-addons-ngx-lib-remote-loader.js +308 -294
  481. package/fesm2015/pepperi-addons-ngx-lib-remote-loader.js.map +1 -1
  482. package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.js +256 -256
  483. package/fesm2015/pepperi-addons-ngx-lib-search.js +301 -301
  484. package/fesm2015/pepperi-addons-ngx-lib-select.js +241 -241
  485. package/fesm2015/pepperi-addons-ngx-lib-separator.js +71 -71
  486. package/fesm2015/pepperi-addons-ngx-lib-side-bar.js +154 -154
  487. package/fesm2015/pepperi-addons-ngx-lib-signature.js +270 -270
  488. package/fesm2015/pepperi-addons-ngx-lib-size-detector.js +103 -103
  489. package/fesm2015/pepperi-addons-ngx-lib-slider.js +112 -112
  490. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.js +1351 -1351
  491. package/fesm2015/pepperi-addons-ngx-lib-snack-bar.js +137 -137
  492. package/fesm2015/pepperi-addons-ngx-lib-textarea.js +194 -194
  493. package/fesm2015/pepperi-addons-ngx-lib-textbox-icon.js +78 -78
  494. package/fesm2015/pepperi-addons-ngx-lib-textbox.js +498 -498
  495. package/fesm2015/pepperi-addons-ngx-lib-top-bar.js +125 -125
  496. package/fesm2015/pepperi-addons-ngx-lib.js +4133 -4133
  497. package/field-title/field-title.component.d.ts +11 -11
  498. package/field-title/field-title.module.d.ts +5 -5
  499. package/field-title/pepperi-addons-ngx-lib-field-title.d.ts +4 -4
  500. package/field-title/public-api.d.ts +2 -2
  501. package/files-uploader/files-uploader.component.d.ts +53 -53
  502. package/files-uploader/files-uploader.module.d.ts +5 -5
  503. package/files-uploader/pepperi-addons-ngx-lib-files-uploader.d.ts +4 -4
  504. package/files-uploader/public-api.d.ts +2 -2
  505. package/form/field-generator.component.d.ts +36 -36
  506. package/form/form.component.d.ts +90 -90
  507. package/form/form.model.d.ts +20 -20
  508. package/form/form.module.d.ts +5 -5
  509. package/form/indicators.component.d.ts +7 -7
  510. package/form/internal-button.component.d.ts +39 -39
  511. package/form/internal-carusel.component.d.ts +38 -38
  512. package/form/internal-carusel.service.d.ts +7 -7
  513. package/form/internal-list.component.d.ts +92 -92
  514. package/form/internal-menu.component.d.ts +16 -16
  515. package/form/internal-page.component.d.ts +72 -72
  516. package/form/internal-page.service.d.ts +19 -19
  517. package/form/pepperi-addons-ngx-lib-form.d.ts +13 -13
  518. package/form/public-api.d.ts +3 -3
  519. package/group-buttons/group-buttons.component.d.ts +20 -20
  520. package/group-buttons/group-buttons.module.d.ts +5 -5
  521. package/group-buttons/pepperi-addons-ngx-lib-group-buttons.d.ts +4 -4
  522. package/group-buttons/public-api.d.ts +2 -2
  523. package/icon/icon-generated-all.model.d.ts +99 -99
  524. package/icon/icon-generated.model.d.ts +394 -394
  525. package/icon/icon-registry.service.d.ts +6 -6
  526. package/icon/icon.component.d.ts +46 -46
  527. package/icon/icon.module.d.ts +2 -2
  528. package/icon/icon.service.d.ts +10 -10
  529. package/icon/pepperi-addons-ngx-lib-icon.d.ts +4 -4
  530. package/icon/public-api.d.ts +6 -6
  531. package/image/image.component.d.ts +63 -63
  532. package/image/image.module.d.ts +5 -5
  533. package/image/image.service.d.ts +11 -11
  534. package/image/pepperi-addons-ngx-lib-image.d.ts +4 -4
  535. package/image/public-api.d.ts +3 -3
  536. package/images-filmstrip/images-filmstrip.component.d.ts +84 -84
  537. package/images-filmstrip/images-filmstrip.module.d.ts +5 -5
  538. package/images-filmstrip/pepperi-addons-ngx-lib-images-filmstrip.d.ts +4 -4
  539. package/images-filmstrip/public-api.d.ts +2 -2
  540. package/link/link.component.d.ts +131 -131
  541. package/link/link.module.d.ts +5 -5
  542. package/link/link.pipes.d.ts +4 -4
  543. package/link/pepperi-addons-ngx-lib-link.d.ts +5 -5
  544. package/link/public-api.d.ts +2 -2
  545. package/list/list-actions.component.d.ts +14 -14
  546. package/list/list-carousel.component.d.ts +36 -36
  547. package/list/list-chooser.component.d.ts +25 -25
  548. package/list/list-pager.component.d.ts +35 -35
  549. package/list/list-sorting.component.d.ts +26 -26
  550. package/list/list-total.component.d.ts +7 -7
  551. package/list/list-views.component.d.ts +31 -31
  552. package/list/list.component.d.ts +161 -161
  553. package/list/list.model.d.ts +31 -31
  554. package/list/list.module.d.ts +5 -5
  555. package/list/list.pipes.d.ts +11 -11
  556. package/list/pepperi-addons-ngx-lib-list.d.ts +6 -6
  557. package/list/public-api.d.ts +10 -10
  558. package/list/virtual-scroller.d.ts +176 -176
  559. package/menu/menu-item.component.d.ts +25 -25
  560. package/menu/menu.component.d.ts +43 -43
  561. package/menu/menu.model.d.ts +25 -25
  562. package/menu/menu.module.d.ts +5 -5
  563. package/menu/pepperi-addons-ngx-lib-menu.d.ts +5 -5
  564. package/menu/public-api.d.ts +3 -3
  565. package/ngx-lib.module.d.ts +2 -2
  566. package/package.json +1 -1
  567. package/page-layout/page-layout.component.d.ts +16 -16
  568. package/page-layout/page-layout.module.d.ts +2 -2
  569. package/page-layout/pepperi-addons-ngx-lib-page-layout.d.ts +4 -4
  570. package/page-layout/public-api.d.ts +2 -2
  571. package/pepperi-addons-ngx-lib.d.ts +8 -8
  572. package/profile-data-views-list/pepperi-addons-ngx-lib-profile-data-views-list.d.ts +4 -4
  573. package/profile-data-views-list/profile-data-view/profile-data-view.component.d.ts +15 -15
  574. package/profile-data-views-list/profile-data-views-card/profile-data-views-card.component.d.ts +21 -21
  575. package/profile-data-views-list/profile-data-views-list.component.d.ts +32 -32
  576. package/profile-data-views-list/profile-data-views-list.model.d.ts +18 -18
  577. package/profile-data-views-list/profile-data-views-list.module.d.ts +5 -5
  578. package/profile-data-views-list/public-api.d.ts +5 -5
  579. package/public-api.d.ts +2 -2
  580. package/quantity-selector/pepperi-addons-ngx-lib-quantity-selector.d.ts +6 -6
  581. package/quantity-selector/public-api.d.ts +2 -2
  582. package/quantity-selector/quantity-selector-validation.directive.d.ts +13 -13
  583. package/quantity-selector/quantity-selector.component.d.ts +98 -98
  584. package/quantity-selector/quantity-selector.module.d.ts +5 -5
  585. package/quantity-selector/quantity-selector.pipes.d.ts +4 -4
  586. package/query-builder/common/model/field.d.ts +8 -8
  587. package/query-builder/common/model/filter.d.ts +6 -6
  588. package/query-builder/common/model/legacy.d.ts +29 -29
  589. package/query-builder/common/model/operator-unit.d.ts +13 -13
  590. package/query-builder/common/model/operator.d.ts +21 -21
  591. package/query-builder/common/model/structure.d.ts +4 -4
  592. package/query-builder/common/model/type-map.d.ts +12 -12
  593. package/query-builder/common/model/type.d.ts +4 -4
  594. package/query-builder/common/services/output-query.service.d.ts +44 -44
  595. package/query-builder/common/services/query-structure.service.d.ts +75 -75
  596. package/query-builder/common/services/type-convertor.service.d.ts +10 -10
  597. package/query-builder/pepperi-addons-ngx-lib-query-builder.d.ts +9 -9
  598. package/query-builder/public-api.d.ts +5 -5
  599. package/query-builder/query-builder-item/query-builder-item.component.d.ts +37 -37
  600. package/query-builder/query-builder-section/query-builder-section.component.d.ts +27 -27
  601. package/query-builder/query-builder.component.d.ts +35 -35
  602. package/query-builder/query-builder.module.d.ts +2 -2
  603. package/query-builder/query-builder.service.d.ts +27 -27
  604. package/remote-loader/addon-block-loader.component.d.ts +25 -24
  605. package/remote-loader/pepperi-addons-ngx-lib-remote-loader.d.ts +4 -4
  606. package/remote-loader/pepperi-addons-ngx-lib-remote-loader.metadata.json +1 -1
  607. package/remote-loader/public-api.d.ts +5 -5
  608. package/remote-loader/remote-loader.component.d.ts +24 -24
  609. package/remote-loader/remote-loader.model.d.ts +34 -34
  610. package/remote-loader/remote-loader.module.d.ts +2 -2
  611. package/remote-loader/remote-loader.service.d.ts +23 -23
  612. package/rich-html-textarea/pepperi-addons-ngx-lib-rich-html-textarea.d.ts +4 -4
  613. package/rich-html-textarea/public-api.d.ts +2 -2
  614. package/rich-html-textarea/rich-html-textarea.component.d.ts +75 -75
  615. package/rich-html-textarea/rich-html-textarea.module.d.ts +5 -5
  616. package/search/pepperi-addons-ngx-lib-search.d.ts +4 -4
  617. package/search/public-api.d.ts +3 -3
  618. package/search/search.component.d.ts +61 -61
  619. package/search/search.model.d.ts +14 -14
  620. package/search/search.module.d.ts +5 -5
  621. package/select/pepperi-addons-ngx-lib-select.d.ts +4 -4
  622. package/select/public-api.d.ts +2 -2
  623. package/select/select.component.d.ts +50 -50
  624. package/select/select.module.d.ts +5 -5
  625. package/separator/pepperi-addons-ngx-lib-separator.d.ts +4 -4
  626. package/separator/public-api.d.ts +2 -2
  627. package/separator/separator.component.d.ts +19 -19
  628. package/separator/separator.module.d.ts +2 -2
  629. package/side-bar/pepperi-addons-ngx-lib-side-bar.d.ts +4 -4
  630. package/side-bar/public-api.d.ts +3 -3
  631. package/side-bar/side-bar.component.d.ts +38 -38
  632. package/side-bar/side-bar.model.d.ts +4 -4
  633. package/side-bar/side-bar.module.d.ts +5 -5
  634. package/signature/pepperi-addons-ngx-lib-signature.d.ts +4 -4
  635. package/signature/public-api.d.ts +2 -2
  636. package/signature/signature.component.d.ts +65 -65
  637. package/signature/signature.module.d.ts +5 -5
  638. package/size-detector/pepperi-addons-ngx-lib-size-detector.d.ts +4 -4
  639. package/size-detector/public-api.d.ts +2 -2
  640. package/size-detector/size-detector.component.d.ts +26 -26
  641. package/size-detector/size-detector.module.d.ts +2 -2
  642. package/slider/pepperi-addons-ngx-lib-slider.d.ts +4 -4
  643. package/slider/public-api.d.ts +2 -2
  644. package/slider/slider.component.d.ts +36 -36
  645. package/slider/slider.module.d.ts +2 -2
  646. package/smart-filters/boolean-filter/boolean-filter.component.d.ts +12 -12
  647. package/smart-filters/common/filter-actions.component.d.ts +9 -9
  648. package/smart-filters/common/model/base-filter-component.d.ts +67 -67
  649. package/smart-filters/common/model/creator.d.ts +6 -6
  650. package/smart-filters/common/model/field.d.ts +69 -69
  651. package/smart-filters/common/model/filter.d.ts +11 -11
  652. package/smart-filters/common/model/operator.d.ts +38 -38
  653. package/smart-filters/common/model/type.d.ts +4 -4
  654. package/smart-filters/date-filter/date-filter.component.d.ts +41 -41
  655. package/smart-filters/multi-select-filter/multi-select-filter.component.d.ts +39 -39
  656. package/smart-filters/number-filter/number-filter.component.d.ts +38 -38
  657. package/smart-filters/pepperi-addons-ngx-lib-smart-filters.d.ts +4 -4
  658. package/smart-filters/public-api.d.ts +14 -14
  659. package/smart-filters/smart-filters.component.d.ts +32 -32
  660. package/smart-filters/smart-filters.module.d.ts +5 -5
  661. package/smart-filters/text-filter/text-filter.component.d.ts +17 -17
  662. package/snack-bar/default-snack-bar.component.d.ts +10 -10
  663. package/snack-bar/pepperi-addons-ngx-lib-snack-bar.d.ts +5 -5
  664. package/snack-bar/public-api.d.ts +4 -4
  665. package/snack-bar/snack-bar.component.d.ts +9 -9
  666. package/snack-bar/snack-bar.model.d.ts +8 -8
  667. package/snack-bar/snack-bar.module.d.ts +5 -5
  668. package/snack-bar/snack-bar.service.d.ts +21 -21
  669. package/textarea/pepperi-addons-ngx-lib-textarea.d.ts +4 -4
  670. package/textarea/pepperi-addons-ngx-lib-textarea.metadata.json +1 -1
  671. package/textarea/public-api.d.ts +2 -2
  672. package/textarea/textarea.component.d.ts +51 -51
  673. package/textarea/textarea.module.d.ts +5 -5
  674. package/textbox/pepperi-addons-ngx-lib-textbox.d.ts +5 -5
  675. package/textbox/public-api.d.ts +2 -2
  676. package/textbox/textbox-validation.directive.d.ts +18 -18
  677. package/textbox/textbox.component.d.ts +134 -134
  678. package/textbox/textbox.module.d.ts +5 -5
  679. package/textbox-icon/pepperi-addons-ngx-lib-textbox-icon.d.ts +4 -4
  680. package/textbox-icon/public-api.d.ts +2 -2
  681. package/textbox-icon/textbox-icon.component.d.ts +10 -10
  682. package/textbox-icon/textbox-icon.module.d.ts +5 -5
  683. package/top-bar/pepperi-addons-ngx-lib-top-bar.d.ts +4 -4
  684. package/top-bar/public-api.d.ts +3 -3
  685. package/top-bar/top-bar.component.d.ts +36 -36
  686. package/top-bar/top-bar.model.d.ts +4 -4
  687. package/top-bar/top-bar.module.d.ts +5 -5
@@ -1,260 +1,260 @@
1
- import { Directive, EventEmitter, Input, Output, Renderer2, ViewContainerRef, ComponentFactoryResolver, Injector, } from '@angular/core';
2
- import { FormBuilder, Validators, } from '@angular/forms';
3
- import { Subject } from 'rxjs';
4
- import { PepValidatorService } from '@pepperi-addons/ngx-lib';
5
- import { PepSmartFilterOperators, PepSmartFilterOperatorUnits, } from './operator';
6
- import { takeUntil } from 'rxjs/operators';
7
- import { TranslateService } from '@ngx-translate/core';
8
- import { PepFilterActionsComponent } from '../filter-actions.component';
9
- export class BaseFilterComponent {
10
- constructor(viewContainerRef, injector, resolver, builder, translate, validator, renderer) {
11
- this.viewContainerRef = viewContainerRef;
12
- this.injector = injector;
13
- this.resolver = resolver;
14
- this.builder = builder;
15
- this.translate = translate;
16
- this.validator = validator;
17
- this.renderer = renderer;
18
- this._fieldIdWithNoDots = '';
19
- this.emitOnChange = false;
20
- this.inline = false;
21
- this.showActionButtons = true;
22
- this.renderTitle = true;
23
- this.filterClear = new EventEmitter();
24
- this.filterChange = new EventEmitter();
25
- this.OPERATORS_TRANSLATION_PREFIX = 'SMART_FILTERS.OPERATORS';
26
- this.OPERATOR_UNITS_TRANSLATION_PREFIX = 'SMART_FILTERS.OPERATOR_UNITS';
27
- this._destroyed = new Subject();
28
- }
29
- set field(value) {
30
- this._field = value;
31
- this._fieldIdWithNoDots = value ? value.id.replace(/\./g, '_') : '';
32
- this.setupForm();
33
- }
34
- get field() {
35
- return this._field;
36
- }
37
- set filter(value) {
38
- this._filter = value;
39
- this.setupFilter();
40
- }
41
- get filter() {
42
- return this._filter;
43
- }
44
- set parentForm(form) {
45
- this._parentForm = form;
46
- this.updateParentForm();
47
- }
48
- set operator(operator) {
49
- var _a;
50
- if ((operator === null || operator === void 0 ? void 0 : operator.id) != ((_a = this._operator) === null || _a === void 0 ? void 0 : _a.id)) {
51
- // Validate operator
52
- const index = this.operators.findIndex((o) => o.id === operator.id);
53
- if (index >= 0) {
54
- this._operator = this.operators[index];
55
- }
56
- else {
57
- this._operator = this.operators[0];
58
- }
59
- this.form.reset();
60
- this.updateValidity();
61
- }
62
- }
63
- get operator() {
64
- return this._operator;
65
- }
66
- set operatorUnit(operatorUnit) {
67
- // Validate operator unit
68
- if (operatorUnit) {
69
- const index = this.operatorUnits.findIndex((ou) => ou.id === operatorUnit.id);
70
- if (index >= 0) {
71
- this._operatorUnit = this.operatorUnits[index];
72
- }
73
- else {
74
- this._operatorUnit = this.operatorUnits[0];
75
- }
76
- }
77
- else {
78
- this._operatorUnit = undefined;
79
- }
80
- }
81
- get operatorUnit() {
82
- return this._operatorUnit;
83
- }
84
- get firstControlKey() {
85
- return this.field ? `${this._fieldIdWithNoDots}_first` : 'first';
86
- }
87
- get firstControl() {
88
- return this.form.get(this.firstControlKey);
89
- }
90
- get secondControlKey() {
91
- return this.field ? `${this._fieldIdWithNoDots}_second` : 'second';
92
- }
93
- get secondControl() {
94
- return this.form.get(this.secondControlKey);
95
- }
96
- createActionsComponent() {
97
- const factory = this.resolver.resolveComponentFactory(PepFilterActionsComponent);
98
- this.actionsContainerRef = factory.create(this.injector);
99
- this.actionsContainerRef.instance.form = this.form;
100
- this.actionsContainerRef.instance.applyClick.subscribe(() => this.applyFilter());
101
- this.actionsContainerRef.instance.clearClick.subscribe(() => this.clearFilter());
102
- this.viewContainerRef.insert(this.actionsContainerRef.hostView);
103
- }
104
- setupForm() {
105
- const formValue = {};
106
- formValue[this.firstControlKey] = [];
107
- formValue[this.secondControlKey] = [];
108
- // this.form.patchValue(formValue);
109
- this.form = this.builder.group(formValue);
110
- // this.form[this.firstControlKey] = [];
111
- // this.form[this.secondControlKey] = [];
112
- this.setupOperators();
113
- if (this.showActionButtons) {
114
- this.createActionsComponent();
115
- }
116
- }
117
- setupOperators() {
118
- var _a, _b;
119
- // Get the operators by componentType.
120
- this.operators = Object.keys(PepSmartFilterOperators)
121
- .filter((key) => {
122
- return PepSmartFilterOperators[key].componentType.includes(this.field.componentType);
123
- })
124
- .map((key) => PepSmartFilterOperators[key]);
125
- // Filter by from field.operators input if exist.
126
- if (((_a = this.field.operators) === null || _a === void 0 ? void 0 : _a.length) > 0) {
127
- this.operators = this.operators.filter((o1) => this.field.operators.some((o2) => o1.id === o2));
128
- }
129
- // Get the operator units by componentType.
130
- this.operatorUnits = Object.keys(PepSmartFilterOperatorUnits)
131
- .filter((key) => {
132
- return PepSmartFilterOperatorUnits[key].componentType.includes(this.field.componentType);
133
- })
134
- .map((key) => PepSmartFilterOperatorUnits[key]);
135
- // Filter by from field.operatorsUnits input if exist.
136
- if (((_b = this.field.operatorUnits) === null || _b === void 0 ? void 0 : _b.length) > 0) {
137
- this.operatorUnits = this.operatorUnits.filter((o1) => this.field.operatorUnits.some((o2) => o1.id === o2));
138
- }
139
- // Load translation before get the options in the children.
140
- this.translate.get('SMART_FILTERS.TITLE').subscribe((res) => {
141
- this.loadOperatorsOptions();
142
- });
143
- }
144
- setupFilter() {
145
- if (this.filter) {
146
- this.operator = this.filter.operator;
147
- this.operatorUnit = this.filter.operatorUnit;
148
- const formValue = {};
149
- formValue[this.firstControlKey] = this.filter.value.first;
150
- formValue[this.secondControlKey] = this.filter.value.second;
151
- this.form.patchValue(formValue);
152
- }
153
- else {
154
- this.operator = this.getDefaultOperator();
155
- this.operatorUnit = this.getDefaultOperatorUnit();
156
- this.clearFilter(false);
157
- }
158
- }
159
- updateParentForm() {
160
- this._parentForm.setControl('fieldId', this.builder.control(this.field.id));
161
- this._parentForm.setControl('fieldType', this.builder.control(this.field.type));
162
- this._parentForm.setControl('operator', this.builder.control(this.operator));
163
- this._parentForm.setControl('operatorUnit', this.builder.control(this.operatorUnit));
164
- this._parentForm.setControl('values', this.builder.group({
165
- first: this.firstControl,
166
- second: this.secondControl
167
- }));
168
- }
169
- getDestroyer() {
170
- return takeUntil(this._destroyed);
171
- }
172
- updateValidity() {
173
- this.setFieldsStateAndValidators();
174
- this.firstControl.updateValueAndValidity();
175
- this.secondControl.updateValueAndValidity();
176
- }
177
- // Load the operators options from the translation.
178
- loadOperatorsOptions() {
179
- // Not implemented in the base
180
- }
181
- // Set default validators - some childs override this.
182
- setFieldsStateAndValidators() {
183
- this.firstControl.setValidators(Validators.required);
184
- this.secondControl.setValidators(Validators.required);
185
- this.secondControl.disable();
186
- }
187
- // Return undefined - some childs override this.
188
- getDefaultOperatorUnit() {
189
- return undefined;
190
- }
191
- initFilter() {
192
- // Not implemented in the base
193
- }
194
- clearFilter(emitEvent = true) {
195
- this._filter = null;
196
- this.form.reset();
197
- this.initFilter();
198
- if (emitEvent) {
199
- this.filterClear.emit();
200
- }
201
- }
202
- applyFilter() {
203
- const filterValue = this.getFilterValue();
204
- // If the filter is not null declare it, else - clear it.
205
- if (filterValue) {
206
- const filter = {
207
- fieldId: this.field.id,
208
- operator: this.operator,
209
- operatorUnit: this.operatorUnit,
210
- value: filterValue,
211
- };
212
- this._filter = filter;
213
- this.filterChange.emit(filter);
214
- }
215
- else {
216
- this.clearFilter();
217
- }
218
- }
219
- ngOnInit() {
220
- if (this.form) {
221
- this.updateValidity();
222
- }
223
- }
224
- ngOnChanges() {
225
- // if (this.form) {
226
- // this.updateValidity();
227
- // }
228
- }
229
- ngOnDestroy() {
230
- this._destroyed.next();
231
- this._destroyed.complete();
232
- if (this.showActionButtons) {
233
- this.actionsContainerRef.destroy();
234
- }
235
- }
236
- }
237
- BaseFilterComponent.decorators = [
238
- { type: Directive, args: [{},] }
239
- ];
240
- BaseFilterComponent.ctorParameters = () => [
241
- { type: ViewContainerRef },
242
- { type: Injector },
243
- { type: ComponentFactoryResolver },
244
- { type: FormBuilder },
245
- { type: TranslateService },
246
- { type: PepValidatorService },
247
- { type: Renderer2 }
248
- ];
249
- BaseFilterComponent.propDecorators = {
250
- field: [{ type: Input }],
251
- filter: [{ type: Input }],
252
- parentForm: [{ type: Input }],
253
- emitOnChange: [{ type: Input }],
254
- inline: [{ type: Input }],
255
- showActionButtons: [{ type: Input }],
256
- renderTitle: [{ type: Input }],
257
- filterClear: [{ type: Output }],
258
- filterChange: [{ type: Output }]
259
- };
1
+ import { Directive, EventEmitter, Input, Output, Renderer2, ViewContainerRef, ComponentFactoryResolver, Injector, } from '@angular/core';
2
+ import { FormBuilder, Validators, } from '@angular/forms';
3
+ import { Subject } from 'rxjs';
4
+ import { PepValidatorService } from '@pepperi-addons/ngx-lib';
5
+ import { PepSmartFilterOperators, PepSmartFilterOperatorUnits, } from './operator';
6
+ import { takeUntil } from 'rxjs/operators';
7
+ import { TranslateService } from '@ngx-translate/core';
8
+ import { PepFilterActionsComponent } from '../filter-actions.component';
9
+ export class BaseFilterComponent {
10
+ constructor(viewContainerRef, injector, resolver, builder, translate, validator, renderer) {
11
+ this.viewContainerRef = viewContainerRef;
12
+ this.injector = injector;
13
+ this.resolver = resolver;
14
+ this.builder = builder;
15
+ this.translate = translate;
16
+ this.validator = validator;
17
+ this.renderer = renderer;
18
+ this._fieldIdWithNoDots = '';
19
+ this.emitOnChange = false;
20
+ this.inline = false;
21
+ this.showActionButtons = true;
22
+ this.renderTitle = true;
23
+ this.filterClear = new EventEmitter();
24
+ this.filterChange = new EventEmitter();
25
+ this.OPERATORS_TRANSLATION_PREFIX = 'SMART_FILTERS.OPERATORS';
26
+ this.OPERATOR_UNITS_TRANSLATION_PREFIX = 'SMART_FILTERS.OPERATOR_UNITS';
27
+ this._destroyed = new Subject();
28
+ }
29
+ set field(value) {
30
+ this._field = value;
31
+ this._fieldIdWithNoDots = value ? value.id.replace(/\./g, '_') : '';
32
+ this.setupForm();
33
+ }
34
+ get field() {
35
+ return this._field;
36
+ }
37
+ set filter(value) {
38
+ this._filter = value;
39
+ this.setupFilter();
40
+ }
41
+ get filter() {
42
+ return this._filter;
43
+ }
44
+ set parentForm(form) {
45
+ this._parentForm = form;
46
+ this.updateParentForm();
47
+ }
48
+ set operator(operator) {
49
+ var _a;
50
+ if ((operator === null || operator === void 0 ? void 0 : operator.id) != ((_a = this._operator) === null || _a === void 0 ? void 0 : _a.id)) {
51
+ // Validate operator
52
+ const index = this.operators.findIndex((o) => o.id === operator.id);
53
+ if (index >= 0) {
54
+ this._operator = this.operators[index];
55
+ }
56
+ else {
57
+ this._operator = this.operators[0];
58
+ }
59
+ this.form.reset();
60
+ this.updateValidity();
61
+ }
62
+ }
63
+ get operator() {
64
+ return this._operator;
65
+ }
66
+ set operatorUnit(operatorUnit) {
67
+ // Validate operator unit
68
+ if (operatorUnit) {
69
+ const index = this.operatorUnits.findIndex((ou) => ou.id === operatorUnit.id);
70
+ if (index >= 0) {
71
+ this._operatorUnit = this.operatorUnits[index];
72
+ }
73
+ else {
74
+ this._operatorUnit = this.operatorUnits[0];
75
+ }
76
+ }
77
+ else {
78
+ this._operatorUnit = undefined;
79
+ }
80
+ }
81
+ get operatorUnit() {
82
+ return this._operatorUnit;
83
+ }
84
+ get firstControlKey() {
85
+ return this.field ? `${this._fieldIdWithNoDots}_first` : 'first';
86
+ }
87
+ get firstControl() {
88
+ return this.form.get(this.firstControlKey);
89
+ }
90
+ get secondControlKey() {
91
+ return this.field ? `${this._fieldIdWithNoDots}_second` : 'second';
92
+ }
93
+ get secondControl() {
94
+ return this.form.get(this.secondControlKey);
95
+ }
96
+ createActionsComponent() {
97
+ const factory = this.resolver.resolveComponentFactory(PepFilterActionsComponent);
98
+ this.actionsContainerRef = factory.create(this.injector);
99
+ this.actionsContainerRef.instance.form = this.form;
100
+ this.actionsContainerRef.instance.applyClick.subscribe(() => this.applyFilter());
101
+ this.actionsContainerRef.instance.clearClick.subscribe(() => this.clearFilter());
102
+ this.viewContainerRef.insert(this.actionsContainerRef.hostView);
103
+ }
104
+ setupForm() {
105
+ const formValue = {};
106
+ formValue[this.firstControlKey] = [];
107
+ formValue[this.secondControlKey] = [];
108
+ // this.form.patchValue(formValue);
109
+ this.form = this.builder.group(formValue);
110
+ // this.form[this.firstControlKey] = [];
111
+ // this.form[this.secondControlKey] = [];
112
+ this.setupOperators();
113
+ if (this.showActionButtons) {
114
+ this.createActionsComponent();
115
+ }
116
+ }
117
+ setupOperators() {
118
+ var _a, _b;
119
+ // Get the operators by componentType.
120
+ this.operators = Object.keys(PepSmartFilterOperators)
121
+ .filter((key) => {
122
+ return PepSmartFilterOperators[key].componentType.includes(this.field.componentType);
123
+ })
124
+ .map((key) => PepSmartFilterOperators[key]);
125
+ // Filter by from field.operators input if exist.
126
+ if (((_a = this.field.operators) === null || _a === void 0 ? void 0 : _a.length) > 0) {
127
+ this.operators = this.operators.filter((o1) => this.field.operators.some((o2) => o1.id === o2));
128
+ }
129
+ // Get the operator units by componentType.
130
+ this.operatorUnits = Object.keys(PepSmartFilterOperatorUnits)
131
+ .filter((key) => {
132
+ return PepSmartFilterOperatorUnits[key].componentType.includes(this.field.componentType);
133
+ })
134
+ .map((key) => PepSmartFilterOperatorUnits[key]);
135
+ // Filter by from field.operatorsUnits input if exist.
136
+ if (((_b = this.field.operatorUnits) === null || _b === void 0 ? void 0 : _b.length) > 0) {
137
+ this.operatorUnits = this.operatorUnits.filter((o1) => this.field.operatorUnits.some((o2) => o1.id === o2));
138
+ }
139
+ // Load translation before get the options in the children.
140
+ this.translate.get('SMART_FILTERS.TITLE').subscribe((res) => {
141
+ this.loadOperatorsOptions();
142
+ });
143
+ }
144
+ setupFilter() {
145
+ if (this.filter) {
146
+ this.operator = this.filter.operator;
147
+ this.operatorUnit = this.filter.operatorUnit;
148
+ const formValue = {};
149
+ formValue[this.firstControlKey] = this.filter.value.first;
150
+ formValue[this.secondControlKey] = this.filter.value.second;
151
+ this.form.patchValue(formValue);
152
+ }
153
+ else {
154
+ this.operator = this.getDefaultOperator();
155
+ this.operatorUnit = this.getDefaultOperatorUnit();
156
+ this.clearFilter(false);
157
+ }
158
+ }
159
+ updateParentForm() {
160
+ this._parentForm.setControl('fieldId', this.builder.control(this.field.id));
161
+ this._parentForm.setControl('fieldType', this.builder.control(this.field.type));
162
+ this._parentForm.setControl('operator', this.builder.control(this.operator));
163
+ this._parentForm.setControl('operatorUnit', this.builder.control(this.operatorUnit));
164
+ this._parentForm.setControl('values', this.builder.group({
165
+ first: this.firstControl,
166
+ second: this.secondControl
167
+ }));
168
+ }
169
+ getDestroyer() {
170
+ return takeUntil(this._destroyed);
171
+ }
172
+ updateValidity() {
173
+ this.setFieldsStateAndValidators();
174
+ this.firstControl.updateValueAndValidity();
175
+ this.secondControl.updateValueAndValidity();
176
+ }
177
+ // Load the operators options from the translation.
178
+ loadOperatorsOptions() {
179
+ // Not implemented in the base
180
+ }
181
+ // Set default validators - some childs override this.
182
+ setFieldsStateAndValidators() {
183
+ this.firstControl.setValidators(Validators.required);
184
+ this.secondControl.setValidators(Validators.required);
185
+ this.secondControl.disable();
186
+ }
187
+ // Return undefined - some childs override this.
188
+ getDefaultOperatorUnit() {
189
+ return undefined;
190
+ }
191
+ initFilter() {
192
+ // Not implemented in the base
193
+ }
194
+ clearFilter(emitEvent = true) {
195
+ this._filter = null;
196
+ this.form.reset();
197
+ this.initFilter();
198
+ if (emitEvent) {
199
+ this.filterClear.emit();
200
+ }
201
+ }
202
+ applyFilter() {
203
+ const filterValue = this.getFilterValue();
204
+ // If the filter is not null declare it, else - clear it.
205
+ if (filterValue) {
206
+ const filter = {
207
+ fieldId: this.field.id,
208
+ operator: this.operator,
209
+ operatorUnit: this.operatorUnit,
210
+ value: filterValue,
211
+ };
212
+ this._filter = filter;
213
+ this.filterChange.emit(filter);
214
+ }
215
+ else {
216
+ this.clearFilter();
217
+ }
218
+ }
219
+ ngOnInit() {
220
+ if (this.form) {
221
+ this.updateValidity();
222
+ }
223
+ }
224
+ ngOnChanges() {
225
+ // if (this.form) {
226
+ // this.updateValidity();
227
+ // }
228
+ }
229
+ ngOnDestroy() {
230
+ this._destroyed.next();
231
+ this._destroyed.complete();
232
+ if (this.showActionButtons) {
233
+ this.actionsContainerRef.destroy();
234
+ }
235
+ }
236
+ }
237
+ BaseFilterComponent.decorators = [
238
+ { type: Directive, args: [{},] }
239
+ ];
240
+ BaseFilterComponent.ctorParameters = () => [
241
+ { type: ViewContainerRef },
242
+ { type: Injector },
243
+ { type: ComponentFactoryResolver },
244
+ { type: FormBuilder },
245
+ { type: TranslateService },
246
+ { type: PepValidatorService },
247
+ { type: Renderer2 }
248
+ ];
249
+ BaseFilterComponent.propDecorators = {
250
+ field: [{ type: Input }],
251
+ filter: [{ type: Input }],
252
+ parentForm: [{ type: Input }],
253
+ emitOnChange: [{ type: Input }],
254
+ inline: [{ type: Input }],
255
+ showActionButtons: [{ type: Input }],
256
+ renderTitle: [{ type: Input }],
257
+ filterClear: [{ type: Output }],
258
+ filterChange: [{ type: Output }]
259
+ };
260
260
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1maWx0ZXItY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpYi9zbWFydC1maWx0ZXJzL2NvbW1vbi9tb2RlbC9iYXNlLWZpbHRlci1jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUtMLE1BQU0sRUFFTixTQUFTLEVBRVQsZ0JBQWdCLEVBRWhCLHdCQUF3QixFQUd4QixRQUFRLEdBRVgsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVILFdBQVcsRUFNWCxVQUFVLEdBQ2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFHSCx1QkFBdUIsRUFDdkIsMkJBQTJCLEdBQzlCLE1BQU0sWUFBWSxDQUFDO0FBSXBCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUl4RSxNQUFNLE9BQWdCLG1CQUFtQjtJQXNHckMsWUFDWSxnQkFBa0MsRUFDbEMsUUFBa0IsRUFDbEIsUUFBa0MsRUFDbEMsT0FBb0IsRUFDbEIsU0FBMkIsRUFDM0IsU0FBOEIsRUFDOUIsUUFBbUI7UUFOckIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLGFBQVEsR0FBUixRQUFRLENBQTBCO1FBQ2xDLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFDbEIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsY0FBUyxHQUFU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LG1CQUFtQixDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ3RDO0lBQ0wsQ0FBQzs7O1lBdFNKLFNBQVMsU0FBQyxFQUFFOzs7WUFsQ1QsZ0JBQWdCO1lBS2hCLFFBQVE7WUFIUix3QkFBd0I7WUFReEIsV0FBVztZQW9CTixnQkFBZ0I7WUFYaEIsbUJBQW1CO1lBckJ4QixTQUFTOzs7b0JBNENSLEtBQUs7cUJBV0wsS0FBSzt5QkFTTCxLQUFLOzJCQUtMLEtBQUs7cUJBQ0wsS0FBSztnQ0FDTCxLQUFLOzBCQUNMLEtBQUs7MEJBRUwsTUFBTTsyQkFDTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIE91dHB1dCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBSZW5kZXJlcjIsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIENvbXBvbmVudEZhY3RvcnksXG4gICAgQ29tcG9uZW50UmVmLFxuICAgIEluamVjdG9yLFxuICAgIEVsZW1lbnRSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdENvbnRyb2wsXG4gICAgRm9ybUJ1aWxkZXIsXG4gICAgRm9ybUdyb3VwLFxuICAgIE5HX1ZBTElEQVRPUlMsXG4gICAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgVmFsaWRhdGlvbkVycm9ycyxcbiAgICBWYWxpZGF0b3JGbixcbiAgICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQZXBWYWxpZGF0b3JTZXJ2aWNlIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuaW1wb3J0IHtcbiAgICBJUGVwU21hcnRGaWx0ZXJPcGVyYXRvcixcbiAgICBJUGVwU21hcnRGaWx0ZXJPcGVyYXRvclVuaXQsXG4gICAgUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMsXG4gICAgUGVwU21hcnRGaWx0ZXJPcGVyYXRvclVuaXRzLFxufSBmcm9tICcuL29wZXJhdG9yJztcbmltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElQZXBTbWFydEZpbHRlckRhdGEsIElQZXBTbWFydEZpbHRlckRhdGFWYWx1ZSB9IGZyb20gJy4vZmlsdGVyJztcbmltcG9ydCB7IFBlcFNtYXJ0RmlsdGVyQmFzZUZpZWxkIH0gZnJvbSAnLi9maWVsZCc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBQZXBGaWx0ZXJBY3Rpb25zQ29tcG9uZW50IH0gZnJvbSAnLi4vZmlsdGVyLWFjdGlvbnMuY29tcG9uZW50JztcblxuXG5ARGlyZWN0aXZlKHt9KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VGaWx0ZXJDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3llZDogU3ViamVjdDx2b2lkPjtcbiAgICBwcml2YXRlIGFjdGlvbnNDb250YWluZXJSZWY6IENvbXBvbmVudFJlZjxQZXBGaWx0ZXJBY3Rpb25zQ29tcG9uZW50PjtcblxuICAgIHByaXZhdGUgX2ZpZWxkSWRXaXRoTm9Eb3RzID0gJyc7XG4gICAgcHJpdmF0ZSBfZmllbGQ6IFBlcFNtYXJ0RmlsdGVyQmFzZUZpZWxkO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGZpZWxkKHZhbHVlOiBQZXBTbWFydEZpbHRlckJhc2VGaWVsZCkge1xuICAgICAgICB0aGlzLl9maWVsZCA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9maWVsZElkV2l0aE5vRG90cyA9IHZhbHVlID8gdmFsdWUuaWQucmVwbGFjZSgvXFwuL2csICdfJykgOiAnJztcbiAgICAgICAgdGhpcy5zZXR1cEZvcm0oKTtcbiAgICB9XG4gICAgZ2V0IGZpZWxkKCk6IFBlcFNtYXJ0RmlsdGVyQmFzZUZpZWxkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2ZpbHRlcjogSVBlcFNtYXJ0RmlsdGVyRGF0YTtcbiAgICBASW5wdXQoKVxuICAgIHNldCBmaWx0ZXIodmFsdWU6IElQZXBTbWFydEZpbHRlckRhdGEpIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc2V0dXBGaWx0ZXIoKTtcbiAgICB9XG4gICAgZ2V0IGZpbHRlcigpOiBJUGVwU21hcnRGaWx0ZXJEYXRhIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbHRlcjtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9wYXJlbnRGb3JtOiBGb3JtR3JvdXA7XG4gICAgQElucHV0KClcbiAgICBzZXQgcGFyZW50Rm9ybShmb3JtOiBGb3JtR3JvdXApIHtcbiAgICAgICAgdGhpcy5fcGFyZW50Rm9ybSA9IGZvcm07XG4gICAgICAgIHRoaXMudXBkYXRlUGFyZW50Rm9ybSgpO1xuICAgIH1cbiAgICBASW5wdXQoKSBlbWl0T25DaGFuZ2UgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBpbmxpbmUgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBzaG93QWN0aW9uQnV0dG9ucyA9IHRydWU7XG4gICAgQElucHV0KCkgcmVuZGVyVGl0bGUgPSB0cnVlO1xuXG4gICAgQE91dHB1dCgpIGZpbHRlckNsZWFyOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgpXG4gICAgZmlsdGVyQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SVBlcFNtYXJ0RmlsdGVyRGF0YT4gPSBuZXcgRXZlbnRFbWl0dGVyPElQZXBTbWFydEZpbHRlckRhdGE+KCk7XG5cbiAgICBwcml2YXRlIF9vcGVyYXRvcjogSVBlcFNtYXJ0RmlsdGVyT3BlcmF0b3I7XG4gICAgc2V0IG9wZXJhdG9yKG9wZXJhdG9yOiBJUGVwU21hcnRGaWx0ZXJPcGVyYXRvcikge1xuICAgICAgICBpZiAob3BlcmF0b3I/LmlkICE9IHRoaXMuX29wZXJhdG9yPy5pZCkge1xuICAgICAgICAgICAgLy8gVmFsaWRhdGUgb3BlcmF0b3JcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5vcGVyYXRvcnMuZmluZEluZGV4KChvKSA9PiBvLmlkID09PSBvcGVyYXRvci5pZCk7XG4gICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yID0gdGhpcy5vcGVyYXRvcnNbaW5kZXhdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvciA9IHRoaXMub3BlcmF0b3JzWzBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsaWRpdHkoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgb3BlcmF0b3IoKTogSVBlcFNtYXJ0RmlsdGVyT3BlcmF0b3Ige1xuICAgICAgICByZXR1cm4gdGhpcy5fb3BlcmF0b3I7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfb3BlcmF0b3JVbml0OiBJUGVwU21hcnRGaWx0ZXJPcGVyYXRvclVuaXQ7XG4gICAgc2V0IG9wZXJhdG9yVW5pdChvcGVyYXRvclVuaXQ6IElQZXBTbWFydEZpbHRlck9wZXJhdG9yVW5pdCkge1xuICAgICAgICAvLyBWYWxpZGF0ZSBvcGVyYXRvciB1bml0XG4gICAgICAgIGlmIChvcGVyYXRvclVuaXQpIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5vcGVyYXRvclVuaXRzLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgICAob3UpID0+IG91LmlkID09PSBvcGVyYXRvclVuaXQuaWRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yVW5pdCA9IHRoaXMub3BlcmF0b3JVbml0c1tpbmRleF07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yVW5pdCA9IHRoaXMub3BlcmF0b3JVbml0c1swXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yVW5pdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgb3BlcmF0b3JVbml0KCk6IElQZXBTbWFydEZpbHRlck9wZXJhdG9yVW5pdCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcGVyYXRvclVuaXQ7XG4gICAgfVxuXG4gICAgZ2V0IGZpcnN0Q29udHJvbEtleSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmllbGQgPyBgJHt0aGlzLl9maWVsZElkV2l0aE5vRG90c31fZmlyc3RgIDogJ2ZpcnN0JztcbiAgICB9XG4gICAgZ2V0IGZpcnN0Q29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmdldCh0aGlzLmZpcnN0Q29udHJvbEtleSk7XG4gICAgfVxuICAgIGdldCBzZWNvbmRDb250cm9sS2V5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5maWVsZCA/IGAke3RoaXMuX2ZpZWxkSWRXaXRoTm9Eb3RzfV9zZWNvbmRgIDogJ3NlY29uZCc7XG4gICAgfVxuICAgIGdldCBzZWNvbmRDb250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KHRoaXMuc2Vjb25kQ29udHJvbEtleSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9wZXJhdG9yczogSVBlcFNtYXJ0RmlsdGVyT3BlcmF0b3JbXTtcbiAgICBwcm90ZWN0ZWQgb3BlcmF0b3JVbml0czogSVBlcFNtYXJ0RmlsdGVyT3BlcmF0b3JVbml0W107XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgT1BFUkFUT1JTX1RSQU5TTEFUSU9OX1BSRUZJWCA9ICdTTUFSVF9GSUxURVJTLk9QRVJBVE9SUyc7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IE9QRVJBVE9SX1VOSVRTX1RSQU5TTEFUSU9OX1BSRUZJWCA9XG4gICAgICAgICdTTUFSVF9GSUxURVJTLk9QRVJBVE9SX1VOSVRTJztcblxuICAgIGZvcm06IEZvcm1Hcm91cDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgICAgIHByaXZhdGUgYnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgICAgIHByb3RlY3RlZCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCB2YWxpZGF0b3I6IFBlcFZhbGlkYXRvclNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCByZW5kZXJlcjogUmVuZGVyZXIyXG4gICAgKSB7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3llZCA9IG5ldyBTdWJqZWN0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVBY3Rpb25zQ29tcG9uZW50KCkge1xuICAgICAgICBjb25zdCBmYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5PFBlcEZpbHRlckFjdGlvbnNDb21wb25lbnQ+ID0gdGhpcy5yZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShcbiAgICAgICAgICAgIFBlcEZpbHRlckFjdGlvbnNDb21wb25lbnRcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmFjdGlvbnNDb250YWluZXJSZWYgPSBmYWN0b3J5LmNyZWF0ZSh0aGlzLmluamVjdG9yKTtcbiAgICAgICAgdGhpcy5hY3Rpb25zQ29udGFpbmVyUmVmLmluc3RhbmNlLmZvcm0gPSB0aGlzLmZvcm07XG4gICAgICAgIHRoaXMuYWN0aW9uc0NvbnRhaW5lclJlZi5pbnN0YW5jZS5hcHBseUNsaWNrLnN1YnNjcmliZSgoKSA9PlxuICAgICAgICAgICAgdGhpcy5hcHBseUZpbHRlcigpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuYWN0aW9uc0NvbnRhaW5lclJlZi5pbnN0YW5jZS5jbGVhckNsaWNrLnN1YnNjcmliZSgoKSA9PlxuICAgICAgICAgICAgdGhpcy5jbGVhckZpbHRlcigpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLmluc2VydCh0aGlzLmFjdGlvbnNDb250YWluZXJSZWYuaG9zdFZpZXcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0dXBGb3JtKCkge1xuICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSB7fTtcbiAgICAgICAgZm9ybVZhbHVlW3RoaXMuZmlyc3RDb250cm9sS2V5XSA9IFtdO1xuICAgICAgICBmb3JtVmFsdWVbdGhpcy5zZWNvbmRDb250cm9sS2V5XSA9IFtdO1xuICAgICAgICAvLyB0aGlzLmZvcm0ucGF0Y2hWYWx1ZShmb3JtVmFsdWUpOyAgICAgICAgXG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuYnVpbGRlci5ncm91cChmb3JtVmFsdWUpO1xuICAgICAgICAvLyB0aGlzLmZvcm1bdGhpcy5maXJzdENvbnRyb2xLZXldID0gW107XG4gICAgICAgIC8vIHRoaXMuZm9ybVt0aGlzLnNlY29uZENvbnRyb2xLZXldID0gW107XG5cbiAgICAgICAgdGhpcy5zZXR1cE9wZXJhdG9ycygpO1xuXG4gICAgICAgIGlmICh0aGlzLnNob3dBY3Rpb25CdXR0b25zKSB7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUFjdGlvbnNDb21wb25lbnQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0dXBPcGVyYXRvcnMoKSB7XG4gICAgICAgIC8vIEdldCB0aGUgb3BlcmF0b3JzIGJ5IGNvbXBvbmVudFR5cGUuXG4gICAgICAgIHRoaXMub3BlcmF0b3JzID0gT2JqZWN0LmtleXMoUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnMpXG4gICAgICAgICAgICAuZmlsdGVyKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnNba2V5XS5jb21wb25lbnRUeXBlLmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpZWxkLmNvbXBvbmVudFR5cGVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5tYXAoKGtleSkgPT4gUGVwU21hcnRGaWx0ZXJPcGVyYXRvcnNba2V5XSk7XG5cbiAgICAgICAgLy8gRmlsdGVyIGJ5IGZyb20gZmllbGQub3BlcmF0b3JzIGlucHV0IGlmIGV4aXN0LlxuICAgICAgICBpZiAodGhpcy5maWVsZC5vcGVyYXRvcnM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMub3BlcmF0b3JzID0gdGhpcy5vcGVyYXRvcnMuZmlsdGVyKChvMSkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmZpZWxkLm9wZXJhdG9ycy5zb21lKChvMikgPT4gbzEuaWQgPT09IG8yKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEdldCB0aGUgb3BlcmF0b3IgdW5pdHMgYnkgY29tcG9uZW50VHlwZS5cbiAgICAgICAgdGhpcy5vcGVyYXRvclVuaXRzID0gT2JqZWN0LmtleXMoUGVwU21hcnRGaWx0ZXJPcGVyYXRvclVuaXRzKVxuICAgICAgICAgICAgLmZpbHRlcigoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFBlcFNtYXJ0RmlsdGVyT3BlcmF0b3JVbml0c1trZXldLmNvbXBvbmVudFR5cGUuaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmllbGQuY29tcG9uZW50VHlwZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLm1hcCgoa2V5KSA9PiBQZXBTbWFydEZpbHRlck9wZXJhdG9yVW5pdHNba2V5XSk7XG5cbiAgICAgICAgLy8gRmlsdGVyIGJ5IGZyb20gZmllbGQub3BlcmF0b3JzVW5pdHMgaW5wdXQgaWYgZXhpc3QuXG4gICAgICAgIGlmICh0aGlzLmZpZWxkLm9wZXJhdG9yVW5pdHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMub3BlcmF0b3JVbml0cyA9IHRoaXMub3BlcmF0b3JVbml0cy5maWx0ZXIoKG8xKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuZmllbGQub3BlcmF0b3JVbml0cy5zb21lKChvMikgPT4gbzEuaWQgPT09IG8yKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIExvYWQgdHJhbnNsYXRpb24gYmVmb3JlIGdldCB0aGUgb3B0aW9ucyBpbiB0aGUgY2hpbGRyZW4uXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLmdldCgnU01BUlRfRklMVEVSUy5USVRMRScpLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRPcGVyYXRvcnNPcHRpb25zKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0dXBGaWx0ZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlcikge1xuICAgICAgICAgICAgdGhpcy5vcGVyYXRvciA9IHRoaXMuZmlsdGVyLm9wZXJhdG9yO1xuICAgICAgICAgICAgdGhpcy5vcGVyYXRvclVuaXQgPSB0aGlzLmZpbHRlci5vcGVyYXRvclVuaXQ7XG4gICAgICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSB7fTtcbiAgICAgICAgICAgIGZvcm1WYWx1ZVt0aGlzLmZpcnN0Q29udHJvbEtleV0gPSB0aGlzLmZpbHRlci52YWx1ZS5maXJzdDtcbiAgICAgICAgICAgIGZvcm1WYWx1ZVt0aGlzLnNlY29uZENvbnRyb2xLZXldID0gdGhpcy5maWx0ZXIudmFsdWUuc2Vjb25kO1xuICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoZm9ybVZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub3BlcmF0b3IgPSB0aGlzLmdldERlZmF1bHRPcGVyYXRvcigpO1xuICAgICAgICAgICAgdGhpcy5vcGVyYXRvclVuaXQgPSB0aGlzLmdldERlZmF1bHRPcGVyYXRvclVuaXQoKTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJGaWx0ZXIoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHVwZGF0ZVBhcmVudEZvcm0oKSB7XG4gICAgICAgIHRoaXMuX3BhcmVudEZvcm0uc2V0Q29udHJvbCgnZmllbGRJZCcsIHRoaXMuYnVpbGRlci5jb250cm9sKHRoaXMuZmllbGQuaWQpKTtcbiAgICAgICAgdGhpcy5fcGFyZW50Rm9ybS5zZXRDb250cm9sKCdmaWVsZFR5cGUnLCB0aGlzLmJ1aWxkZXIuY29udHJvbCh0aGlzLmZpZWxkLnR5cGUpKTtcbiAgICAgICAgdGhpcy5fcGFyZW50Rm9ybS5zZXRDb250cm9sKCdvcGVyYXRvcicsIHRoaXMuYnVpbGRlci5jb250cm9sKHRoaXMub3BlcmF0b3IpKTtcbiAgICAgICAgdGhpcy5fcGFyZW50Rm9ybS5zZXRDb250cm9sKCdvcGVyYXRvclVuaXQnLCB0aGlzLmJ1aWxkZXIuY29udHJvbCh0aGlzLm9wZXJhdG9yVW5pdCkpO1xuICAgICAgICB0aGlzLl9wYXJlbnRGb3JtLnNldENvbnRyb2woJ3ZhbHVlcycsIHRoaXMuYnVpbGRlci5ncm91cCh7XG4gICAgICAgICAgICBmaXJzdDogdGhpcy5maXJzdENvbnRyb2wsXG4gICAgICAgICAgICBzZWNvbmQ6IHRoaXMuc2Vjb25kQ29udHJvbFxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldERlc3Ryb3llcigpIHtcbiAgICAgICAgcmV0dXJuIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlVmFsaWRpdHkoKSB7XG4gICAgICAgIHRoaXMuc2V0RmllbGRzU3RhdGVBbmRWYWxpZGF0b3JzKCk7XG5cbiAgICAgICAgdGhpcy5maXJzdENvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICB0aGlzLnNlY29uZENvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH1cbiAgICAvLyBMb2FkIHRoZSBvcGVyYXRvcnMgb3B0aW9ucyBmcm9tIHRoZSB0cmFuc2xhdGlvbi5cbiAgICBwcm90ZWN0ZWQgbG9hZE9wZXJhdG9yc09wdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZVxuICAgIH1cblxuICAgIC8vIFNldCBkZWZhdWx0IHZhbGlkYXRvcnMgLSBzb21lIGNoaWxkcyBvdmVycmlkZSB0aGlzLlxuICAgIHByb3RlY3RlZCBzZXRGaWVsZHNTdGF0ZUFuZFZhbGlkYXRvcnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlyc3RDb250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICAgIHRoaXMuc2Vjb25kQ29udHJvbC5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgICB0aGlzLnNlY29uZENvbnRyb2wuZGlzYWJsZSgpO1xuICAgIH1cblxuICAgIC8vIFJldHVybiB1bmRlZmluZWQgLSBzb21lIGNoaWxkcyBvdmVycmlkZSB0aGlzLlxuICAgIHByb3RlY3RlZCBnZXREZWZhdWx0T3BlcmF0b3JVbml0KCk6IElQZXBTbWFydEZpbHRlck9wZXJhdG9yVW5pdCB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGluaXRGaWx0ZXIoKSB7XG4gICAgICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgYmFzZVxuICAgIH1cblxuICAgIGFic3RyYWN0IGdldERlZmF1bHRPcGVyYXRvcigpOiBJUGVwU21hcnRGaWx0ZXJPcGVyYXRvcjtcbiAgICBhYnN0cmFjdCBnZXRGaWx0ZXJWYWx1ZSgpOiBJUGVwU21hcnRGaWx0ZXJEYXRhVmFsdWU7XG5cbiAgICBjbGVhckZpbHRlcihlbWl0RXZlbnQgPSB0cnVlKSB7XG4gICAgICAgIHRoaXMuX2ZpbHRlciA9IG51bGw7XG4gICAgICAgIHRoaXMuZm9ybS5yZXNldCgpO1xuICAgICAgICB0aGlzLmluaXRGaWx0ZXIoKTtcblxuICAgICAgICBpZiAoZW1pdEV2ZW50KSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlckNsZWFyLmVtaXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFwcGx5RmlsdGVyKCkge1xuICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHRoaXMuZ2V0RmlsdGVyVmFsdWUoKTtcblxuICAgICAgICAvLyBJZiB0aGUgZmlsdGVyIGlzIG5vdCBudWxsIGRlY2xhcmUgaXQsIGVsc2UgLSBjbGVhciBpdC5cbiAgICAgICAgaWYgKGZpbHRlclZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXIgPSB7XG4gICAgICAgICAgICAgICAgZmllbGRJZDogdGhpcy5maWVsZC5pZCxcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogdGhpcy5vcGVyYXRvcixcbiAgICAgICAgICAgICAgICBvcGVyYXRvclVuaXQ6IHRoaXMub3BlcmF0b3JVbml0LFxuICAgICAgICAgICAgICAgIHZhbHVlOiBmaWx0ZXJWYWx1ZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLl9maWx0ZXIgPSBmaWx0ZXI7XG4gICAgICAgICAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KGZpbHRlcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyRmlsdGVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWxpZGl0eSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIC8vIGlmICh0aGlzLmZvcm0pIHtcbiAgICAgICAgLy8gICAgIHRoaXMudXBkYXRlVmFsaWRpdHkoKTtcbiAgICAgICAgLy8gfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kZXN0cm95ZWQubmV4dCgpO1xuICAgICAgICB0aGlzLl9kZXN0cm95ZWQuY29tcGxldGUoKTtcblxuICAgICAgICBpZiAodGhpcy5zaG93QWN0aW9uQnV0dG9ucykge1xuICAgICAgICAgICAgdGhpcy5hY3Rpb25zQ29udGFpbmVyUmVmLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHdyaXRlVmFsdWUodmFsdWU6IElQZXBTbWFydEZpbHRlckRhdGFWYWx1ZSk6IHZvaWQge1xuICAgIC8vICAgICBpZiAodmFsdWUpIHtcbiAgICAvLyAgICAgICAgIHRoaXMuZm9ybS5zZXRWYWx1ZShcbiAgICAvLyAgICAgICAgICAgICB7XG4gICAgLy8gICAgICAgICAgICAgICAgIGZpcnN0OiB2YWx1ZS5maXJzdCxcbiAgICAvLyAgICAgICAgICAgICAgICAgc2Vjb25kOiB2YWx1ZS5zZWNvbmQgfHwgbnVsbCxcbiAgICAvLyAgICAgICAgICAgICB9LFxuICAgIC8vICAgICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XG4gICAgLy8gICAgICAgICApO1xuICAgIC8vICAgICB9IGVsc2Uge1xuICAgIC8vICAgICAgICAgdGhpcy5mb3JtLnJlc2V0KCk7XG4gICAgLy8gICAgIH1cbiAgICAvLyB9XG5cbiAgICAvLyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAvLyAgICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoZm4pO1xuICAgIC8vIH1cblxuICAgIC8vIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHtcbiAgICAvLyAgICAgLyogRG8gbm90aGluZyAqL1xuICAgIC8vIH07XG5cbiAgICAvLyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgLy8gICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgLy8gfVxuXG4gICAgLy8gc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIC8vICAgICBpc0Rpc2FibGVkID8gdGhpcy5mb3JtLmRpc2FibGUoKSA6IHRoaXMuZm9ybS5lbmFibGUoKTtcbiAgICAvLyB9XG5cbiAgICAvLyB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHtcbiAgICAvLyAgICAgcmV0dXJuIHRoaXMuZm9ybS52YWxpZCA/IG51bGwgOiB7IFBlcEZpbHRlcklzTm90VmFsaWQ6IHRydWUgfTtcbiAgICAvLyB9XG59XG4iXX0=