mmhglobal-dynamicform 2.40.0 → 3.0.0-beta

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 (234) hide show
  1. package/README.md +0 -11
  2. package/fesm2022/mmhglobal-dynamicform.mjs +15336 -0
  3. package/fesm2022/mmhglobal-dynamicform.mjs.map +1 -0
  4. package/{mmhglobal-dynamicform.d.ts → index.d.ts} +5 -5
  5. package/lib/animations/component-animations.d.ts +3 -3
  6. package/lib/components/{buttonfieldbase.component.d.ts → base/buttonfieldbase.component.d.ts} +18 -26
  7. package/lib/components/{containerfieldbase.component.d.ts → base/containerfieldbase.component.d.ts} +20 -25
  8. package/lib/components/{datalistingfieldbase.component.d.ts → base/datalistingfieldbase.component.d.ts} +45 -51
  9. package/lib/components/{fieldbase.component.d.ts → base/fieldbase.component.d.ts} +49 -49
  10. package/lib/components/{inputfieldbase.component.d.ts → base/inputfieldbase.component.d.ts} +23 -27
  11. package/lib/{dropdown_buttons → components/button/dropdown_buttons}/dropdown_buttons.component.d.ts +15 -21
  12. package/lib/components/button/zbuttons/zbuttons.component.d.ts +19 -0
  13. package/lib/{zchip → components/button/zchip}/zchip.component.d.ts +22 -26
  14. package/lib/{zmfb → components/button/zmfb}/zmfb.component.d.ts +38 -43
  15. package/lib/components/button/zworkflowbuttons/zworkflowbuttons.component.d.ts +29 -0
  16. package/lib/{zchart → components/chart/zchart}/zchart.component.d.ts +73 -71
  17. package/lib/{zganttchart → components/chart/zganttchart}/zganttchart.component.d.ts +40 -40
  18. package/lib/{zgauge → components/chart/zgauge}/zgauge.component.d.ts +67 -63
  19. package/lib/{zprogressbar → components/chart/zprogressbar}/zprogressbar.component.d.ts +29 -30
  20. package/lib/{zreport → components/chart/zreport}/zreport.component.d.ts +47 -53
  21. package/lib/{zscheduler → components/chart/zscheduler}/zscheduler.component.d.ts +53 -52
  22. package/lib/{zscheduler → components/chart/zscheduler}/zscheduler.toolbar.component.d.ts +20 -20
  23. package/lib/{ztrendcard → components/chart/ztrendcard}/ztrendcard.component.d.ts +40 -36
  24. package/lib/components/container/kcard/kcard.component.d.ts +21 -0
  25. package/lib/{kscrollview → components/container/kscrollview}/kscrollview.component.d.ts +19 -20
  26. package/lib/{ksplitter → components/container/ksplitter}/ksplitter.component.d.ts +18 -19
  27. package/lib/{zcard → components/container/zcard}/zcard.component.d.ts +12 -17
  28. package/lib/components/container/zdiv/zdiv.component.d.ts +12 -0
  29. package/lib/{zdiv → components/container/zdiv}/zdiv.pipe.d.ts +7 -7
  30. package/lib/{zloop → components/container/zloop}/zloop.component.d.ts +21 -24
  31. package/lib/{ztab → components/container/ztab}/ztab.component.d.ts +34 -38
  32. package/lib/{ztab → components/container/ztab}/ztab.pipe.d.ts +7 -7
  33. package/lib/{zudf → components/container/zudf}/zudf.component.d.ts +208 -212
  34. package/lib/{virtual-scroll → components/data-listing/virtual-scroll}/virtual-scroll.component.d.ts +40 -45
  35. package/lib/{zgrid → components/data-listing/zgrid}/container/zgrid-container.component.d.ts +27 -31
  36. package/lib/{zgrid → components/data-listing/zgrid}/date-range-cell-filter.component.d.ts +20 -19
  37. package/lib/{zgrid → components/data-listing/zgrid}/zgrid.binding.directive.d.ts +174 -168
  38. package/lib/{zgrid → components/data-listing/zgrid}/zgrid.component.d.ts +187 -186
  39. package/lib/{zgrid → components/data-listing/zgrid}/zgrid.popup.anchor-target.directive.d.ts +8 -8
  40. package/lib/{zgrid → components/data-listing/zgrid}/zgrid.service.d.ts +27 -27
  41. package/lib/{ztree → components/data-listing/ztree}/ztree.component.d.ts +77 -78
  42. package/lib/{ztreelist → components/data-listing/ztreelist}/ztreelist.component.d.ts +100 -107
  43. package/lib/{sfdatetimepicker → components/input/sfdatetimepicker}/sfdatetimepicker.component.d.ts +26 -31
  44. package/lib/{sfquerybuilder → components/input/sfquerybuilder}/sfquerybuilder.component.d.ts +71 -73
  45. package/lib/{zcheckbox → components/input/zcheckbox}/zcheckbox.component.d.ts +18 -20
  46. package/lib/components/input/zcodeeditor/zcodeeditor.component.d.ts +43 -0
  47. package/lib/components/input/zcodeeditor/zcodeeditor.service.d.ts +32 -0
  48. package/lib/{zcolorpicker → components/input/zcolorpicker}/zcolorpicker.component.d.ts +19 -25
  49. package/lib/{zdatetime → components/input/zdatetime}/dateIonicFormatParser.pipe.d.ts +10 -10
  50. package/lib/{zdatetime → components/input/zdatetime}/dateIonicMinMaxDate.pipe.d.ts +7 -7
  51. package/lib/{zdatetime → components/input/zdatetime}/dateKendoFormatParser.pipe.d.ts +10 -10
  52. package/lib/{zdatetime → components/input/zdatetime}/dateParser.pipe.d.ts +11 -11
  53. package/lib/{zdatetime → components/input/zdatetime}/zdatetime.component.d.ts +32 -32
  54. package/lib/{zimg → components/input/zimg}/zimg.component.d.ts +16 -20
  55. package/lib/{zinput-container → components/input/zinput-container}/zinput-container.component.d.ts +31 -38
  56. package/lib/{zinput-container → components/input/zinput-container}/zinput-container.pipe.d.ts +25 -25
  57. package/lib/{zlabel → components/input/zlabel}/zlabel.component.d.ts +20 -26
  58. package/lib/{znumeric → components/input/znumeric}/znumeric.component.d.ts +29 -31
  59. package/lib/{znumeric → components/input/znumeric}/znumeric.component.pipe.d.ts +10 -10
  60. package/lib/{zpostselectinput → components/input/zpostselectinput}/zpostselectinput.component.d.ts +48 -65
  61. package/lib/{zselectmultiple → components/input/zselectmultiple}/zselectmultiple.component.d.ts +105 -123
  62. package/lib/{zselectmultiple → components/input/zselectmultiple}/zselectmultiple.directive.d.ts +12 -12
  63. package/lib/{zselectmultiple → components/input/zselectmultiple}/zselectmultiple.pipe.d.ts +11 -11
  64. package/lib/{ztext → components/input/ztext}/ztext.component.d.ts +33 -33
  65. package/lib/{ztextarea → components/input/ztextarea}/ztextarea.component.d.ts +21 -25
  66. package/lib/{ztexteditor → components/input/ztexteditor}/ztexteditor.component.d.ts +44 -42
  67. package/lib/{zupload → components/input/zupload}/zupload.component.d.ts +45 -50
  68. package/lib/{embed-components → components/menu}/context-menu/context-menu.component.d.ts +24 -28
  69. package/lib/{kmenu → components/menu/kmenu}/kmenu.component.d.ts +13 -14
  70. package/lib/components/others/zform/zform.component.d.ts +30 -0
  71. package/lib/components/others/zformcontrol/zformcontrol.component.d.ts +21 -0
  72. package/lib/components/others/zformcontrol/zformcontrol.service.d.ts +12 -0
  73. package/lib/components/others/zmodal/zmodal-component-helper.service.d.ts +15 -0
  74. package/lib/components/others/zmodal/zmodal.component.d.ts +24 -0
  75. package/lib/components/others/zmodal/zmodal.service.d.ts +25 -0
  76. package/lib/components/others/zunknown/zunknown.component.d.ts +10 -0
  77. package/lib/components/utility/e1-root/e1-root.component.d.ts +20 -0
  78. package/lib/components/utility/input-error-message/input-error-message.component.d.ts +14 -0
  79. package/lib/{embed-components → components/utility}/input-field-addons/input-field-addons.component.d.ts +18 -23
  80. package/lib/{embed-components → components/utility}/page-loader/page-loader.component.d.ts +8 -8
  81. package/lib/{embed-components → components/utility}/processing-record-loader/processing-record-loader.component.d.ts +8 -8
  82. package/lib/{embed-components → components/utility}/spinner/spinner.component.d.ts +12 -14
  83. package/lib/components/utility/uiappmenucontent/uiappmenucontent.component.d.ts +17 -0
  84. package/lib/{uibulletin → components/utility/uibulletin}/uibulletin.component.d.ts +31 -36
  85. package/lib/{uicontainer → components/utility/uicontainer}/uicontainer.component.d.ts +16 -19
  86. package/lib/components/utility/uicontent/uicontent.component.d.ts +21 -0
  87. package/lib/components/utility/uiheader/uiheader.component.d.ts +40 -0
  88. package/lib/{uipage → components/utility/uipage}/uipage.component.d.ts +18 -23
  89. package/lib/constants/constant.d.ts +3 -3
  90. package/lib/directives/elementcontainer.directive.d.ts +8 -8
  91. package/lib/interfaces/modal.interface.d.ts +4 -0
  92. package/lib/pipe/htmlSanitize.pipe.d.ts +10 -10
  93. package/lib/pipe/panel-area.pipe.d.ts +7 -7
  94. package/lib/services/main.service.d.ts +136 -142
  95. package/lib/services/zcomponent.debug.service.d.ts +289 -68
  96. package/lib/services/zcomponent.service.d.ts +31 -44
  97. package/package.json +6 -13
  98. package/public-api.d.ts +93 -100
  99. package/styles/all.scss +643 -0
  100. package/styles/component.scss +0 -0
  101. package/styles/notificationkit.scss +53 -0
  102. package/esm2020/lib/animations/component-animations.mjs +0 -39
  103. package/esm2020/lib/components/buttonfieldbase.component.mjs +0 -80
  104. package/esm2020/lib/components/containerfieldbase.component.mjs +0 -50
  105. package/esm2020/lib/components/datalistingfieldbase.component.mjs +0 -277
  106. package/esm2020/lib/components/fieldbase.component.mjs +0 -178
  107. package/esm2020/lib/components/inputfieldbase.component.mjs +0 -202
  108. package/esm2020/lib/constants/constant.mjs +0 -4
  109. package/esm2020/lib/directives/elementcontainer.directive.mjs +0 -16
  110. package/esm2020/lib/directives/fieldelement.directive.mjs +0 -16
  111. package/esm2020/lib/directives/scrollbar.theme.directive.mjs +0 -45
  112. package/esm2020/lib/dropdown_buttons/dropdown_buttons.component.mjs +0 -109
  113. package/esm2020/lib/embed-components/context-menu/context-menu.component.mjs +0 -113
  114. package/esm2020/lib/embed-components/input-field-addons/input-field-addons.component.mjs +0 -93
  115. package/esm2020/lib/embed-components/page-loader/page-loader.component.mjs +0 -14
  116. package/esm2020/lib/embed-components/processing-record-loader/processing-record-loader.component.mjs +0 -14
  117. package/esm2020/lib/embed-components/spinner/spinner.component.mjs +0 -27
  118. package/esm2020/lib/ficon/ficon.component.mjs +0 -53
  119. package/esm2020/lib/input-error-message/input-error-message.component.mjs +0 -53
  120. package/esm2020/lib/kcard/kcard.component.mjs +0 -90
  121. package/esm2020/lib/kmenu/kmenu.component.mjs +0 -46
  122. package/esm2020/lib/kscrollview/kscrollview.component.mjs +0 -77
  123. package/esm2020/lib/ksplitter/ksplitter.component.mjs +0 -67
  124. package/esm2020/lib/mmhglobal-dynamicform.module.mjs +0 -657
  125. package/esm2020/lib/pipe/htmlSanitize.pipe.mjs +0 -18
  126. package/esm2020/lib/pipe/panel-area.pipe.mjs +0 -28
  127. package/esm2020/lib/services/main.service.mjs +0 -1307
  128. package/esm2020/lib/services/zcomponent.debug.service.mjs +0 -742
  129. package/esm2020/lib/services/zcomponent.service.mjs +0 -300
  130. package/esm2020/lib/sfdatetimepicker/sfdatetimepicker.component.mjs +0 -108
  131. package/esm2020/lib/sfquerybuilder/sfquerybuilder.component.mjs +0 -501
  132. package/esm2020/lib/uiactionbutton/uiactionbutton.component.mjs +0 -229
  133. package/esm2020/lib/uiappmenucontent/uiappmenucontent.component.mjs +0 -55
  134. package/esm2020/lib/uibulletin/uibulletin.component.mjs +0 -96
  135. package/esm2020/lib/uicontainer/uicontainer.component.mjs +0 -41
  136. package/esm2020/lib/uicontent/uicontent.component.mjs +0 -63
  137. package/esm2020/lib/uiheader/uiheader.component.mjs +0 -116
  138. package/esm2020/lib/uiheader/uiheader.service.mjs +0 -27
  139. package/esm2020/lib/uimenubutton/uimenubutton.component.mjs +0 -36
  140. package/esm2020/lib/uimenucontent/uimenucontent.component.mjs +0 -38
  141. package/esm2020/lib/uipage/uipage.component.mjs +0 -160
  142. package/esm2020/lib/uivalidationmessage/uivalidationmessage.component.mjs +0 -40
  143. package/esm2020/lib/virtual-scroll/virtual-scroll.component.mjs +0 -249
  144. package/esm2020/lib/zbullet/zbullet.component.mjs +0 -77
  145. package/esm2020/lib/zbuttons/zbuttons.component.mjs +0 -151
  146. package/esm2020/lib/zcard/zcard.component.mjs +0 -36
  147. package/esm2020/lib/zchart/zchart.component.mjs +0 -222
  148. package/esm2020/lib/zcheckbox/zcheckbox.component.mjs +0 -42
  149. package/esm2020/lib/zchip/zchip.component.mjs +0 -119
  150. package/esm2020/lib/zcodeeditor/zcodeeditor.component.mjs +0 -169
  151. package/esm2020/lib/zcodeeditor/zcodeeditor.pipe.mjs +0 -60
  152. package/esm2020/lib/zcolorpicker/zcolorpicker.component.mjs +0 -47
  153. package/esm2020/lib/zdaterange/zdaterange.component.mjs +0 -72
  154. package/esm2020/lib/zdatetime/dateIonicFormatParser.pipe.mjs +0 -40
  155. package/esm2020/lib/zdatetime/dateIonicMinMaxDate.pipe.mjs +0 -22
  156. package/esm2020/lib/zdatetime/dateKendoFormatParser.pipe.mjs +0 -41
  157. package/esm2020/lib/zdatetime/dateParser.pipe.mjs +0 -36
  158. package/esm2020/lib/zdatetime/zdatetime.component.mjs +0 -134
  159. package/esm2020/lib/zdiv/zdiv.component.mjs +0 -79
  160. package/esm2020/lib/zdiv/zdiv.pipe.mjs +0 -31
  161. package/esm2020/lib/zform/zform.component.mjs +0 -188
  162. package/esm2020/lib/zformcontrol/zformcontrol.component.mjs +0 -51
  163. package/esm2020/lib/zganttchart/zganttchart.component.mjs +0 -160
  164. package/esm2020/lib/zgauge/zgauge.component.mjs +0 -122
  165. package/esm2020/lib/zgrid/container/zgrid-container.component.mjs +0 -107
  166. package/esm2020/lib/zgrid/date-range-cell-filter.component.mjs +0 -146
  167. package/esm2020/lib/zgrid/zgrid.binding.directive.mjs +0 -881
  168. package/esm2020/lib/zgrid/zgrid.component.mjs +0 -1131
  169. package/esm2020/lib/zgrid/zgrid.popup.anchor-target.directive.mjs +0 -17
  170. package/esm2020/lib/zgrid/zgrid.service.mjs +0 -113
  171. package/esm2020/lib/zimg/zimg.component.mjs +0 -61
  172. package/esm2020/lib/zinput-container/zinput-container.component.mjs +0 -91
  173. package/esm2020/lib/zinput-container/zinput-container.pipe.mjs +0 -132
  174. package/esm2020/lib/zlabel/zlabel.component.mjs +0 -52
  175. package/esm2020/lib/zloop/zloop.component.mjs +0 -123
  176. package/esm2020/lib/zmfb/zmfb.component.mjs +0 -217
  177. package/esm2020/lib/zmodal/zmodal-mobile.component.mjs +0 -124
  178. package/esm2020/lib/zmodal/zmodal.component.mjs +0 -129
  179. package/esm2020/lib/znumeric/znumeric.component.mjs +0 -110
  180. package/esm2020/lib/znumeric/znumeric.component.pipe.mjs +0 -19
  181. package/esm2020/lib/zpostselectinput/zpostselectinput.component.mjs +0 -315
  182. package/esm2020/lib/zprogressbar/zprogressbar.component.mjs +0 -61
  183. package/esm2020/lib/zradiobutton/zradiobutton.component.mjs +0 -106
  184. package/esm2020/lib/zreport/zreport.component.mjs +0 -184
  185. package/esm2020/lib/zscheduler/zscheduler.component.mjs +0 -271
  186. package/esm2020/lib/zscheduler/zscheduler.toolbar.component.mjs +0 -150
  187. package/esm2020/lib/zselectmultiple/zselectmultiple.component.mjs +0 -689
  188. package/esm2020/lib/zselectmultiple/zselectmultiple.directive.mjs +0 -35
  189. package/esm2020/lib/zselectmultiple/zselectmultiple.pipe.mjs +0 -29
  190. package/esm2020/lib/ztab/ztab.component.mjs +0 -211
  191. package/esm2020/lib/ztab/ztab.pipe.mjs +0 -28
  192. package/esm2020/lib/ztext/ztext.component.mjs +0 -167
  193. package/esm2020/lib/ztextarea/ztextarea.component.mjs +0 -66
  194. package/esm2020/lib/ztexteditor/ztexteditor.component.mjs +0 -135
  195. package/esm2020/lib/ztree/ztree.component.mjs +0 -539
  196. package/esm2020/lib/ztreelist/ztreelist.component.mjs +0 -546
  197. package/esm2020/lib/ztrendcard/ztrendcard.component.mjs +0 -106
  198. package/esm2020/lib/zudf/zudf.component.mjs +0 -1016
  199. package/esm2020/lib/zunknown/zunknown.component.mjs +0 -20
  200. package/esm2020/lib/zupload/zupload.component.mjs +0 -403
  201. package/esm2020/lib/zworkflowbuttons/zworkflowbuttons.component.mjs +0 -244
  202. package/esm2020/mmhglobal-dynamicform.mjs +0 -5
  203. package/esm2020/public-api.mjs +0 -107
  204. package/fesm2015/mmhglobal-dynamicform.mjs +0 -16119
  205. package/fesm2015/mmhglobal-dynamicform.mjs.map +0 -1
  206. package/fesm2020/mmhglobal-dynamicform.mjs +0 -16079
  207. package/fesm2020/mmhglobal-dynamicform.mjs.map +0 -1
  208. package/lib/directives/fieldelement.directive.d.ts +0 -8
  209. package/lib/directives/scrollbar.theme.directive.d.ts +0 -10
  210. package/lib/ficon/ficon.component.d.ts +0 -34
  211. package/lib/input-error-message/input-error-message.component.d.ts +0 -19
  212. package/lib/kcard/kcard.component.d.ts +0 -25
  213. package/lib/mmhglobal-dynamicform.module.d.ts +0 -133
  214. package/lib/uiactionbutton/uiactionbutton.component.d.ts +0 -39
  215. package/lib/uiappmenucontent/uiappmenucontent.component.d.ts +0 -27
  216. package/lib/uicontent/uicontent.component.d.ts +0 -29
  217. package/lib/uiheader/uiheader.component.d.ts +0 -39
  218. package/lib/uiheader/uiheader.service.d.ts +0 -11
  219. package/lib/uimenubutton/uimenubutton.component.d.ts +0 -20
  220. package/lib/uimenucontent/uimenucontent.component.d.ts +0 -24
  221. package/lib/uivalidationmessage/uivalidationmessage.component.d.ts +0 -21
  222. package/lib/zbullet/zbullet.component.d.ts +0 -27
  223. package/lib/zbuttons/zbuttons.component.d.ts +0 -25
  224. package/lib/zcodeeditor/zcodeeditor.component.d.ts +0 -43
  225. package/lib/zcodeeditor/zcodeeditor.pipe.d.ts +0 -12
  226. package/lib/zdaterange/zdaterange.component.d.ts +0 -29
  227. package/lib/zdiv/zdiv.component.d.ts +0 -22
  228. package/lib/zform/zform.component.d.ts +0 -38
  229. package/lib/zformcontrol/zformcontrol.component.d.ts +0 -25
  230. package/lib/zmodal/zmodal-mobile.component.d.ts +0 -38
  231. package/lib/zmodal/zmodal.component.d.ts +0 -44
  232. package/lib/zradiobutton/zradiobutton.component.d.ts +0 -34
  233. package/lib/zunknown/zunknown.component.d.ts +0 -17
  234. package/lib/zworkflowbuttons/zworkflowbuttons.component.d.ts +0 -32
@@ -1,160 +0,0 @@
1
- /********** Angular **********/
2
- import { Component } from "@angular/core";
3
- /********** Ionic **********/
4
- /********** Plugin **********/
5
- import { of } from "rxjs";
6
- import { switchMap, tap } from "rxjs/operators";
7
- import { ZGroup, FormType, TriggerFromType } from "mmhglobal-zcore";
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "../services/main.service";
10
- import * as i2 from "@angular/router";
11
- // import { IDeactivateComponent } from "src/app/services/candeactivate.guard";
12
- export class UipageComponent {
13
- constructor(
14
- // public fieldService: FieldService,
15
- mainService, activatedRoute) {
16
- this.mainService = mainService;
17
- this.activatedRoute = activatedRoute;
18
- // ctrlName = "e1crm_bpactivity";
19
- this.group = new ZGroup(true);
20
- mainService.setGroup(this.group);
21
- // console.log("At " + this.ctrlName + " (constructor)");
22
- }
23
- canExit() {
24
- return this.mainService.canExit(this.group.form);
25
- }
26
- pageOnInit(ctrlName, pageName, isListForm, projectName) {
27
- this.group._projectName = projectName;
28
- this.group.isListForm = isListForm;
29
- return this.mainService.getResourceServerData().pipe(tap(() => {
30
- const routeParam = isListForm ? null : this.mainService.getNavigationCurrentParam();
31
- this.mainService.initializeGroup(this.group, ctrlName, pageName, this);
32
- if (routeParam) {
33
- this.setupRouteParams(routeParam);
34
- }
35
- else {
36
- console.warn("routeParam is undefined.");
37
- }
38
- }), switchMap(() => {
39
- const formType = isListForm ? FormType.listField : FormType.formField;
40
- const fieldElementName = this.group.fieldName ? this.group.fieldName : ctrlName;
41
- this.group.fieldName = fieldElementName; // to be decprecated
42
- this.group.fieldElementName = fieldElementName;
43
- return this.mainService.getGroupFields(fieldElementName, formType, TriggerFromType.initialPageLoad, this.group, "fields");
44
- //let formFieldName = this.group.fieldName ? this.group.fieldName : ctrlName;
45
- //this.group.fieldName = formFieldName;
46
- //if(UipageComponent.signalrEventSubscription){
47
- // UipageComponent.signalrEventSubscription.unsubscribe();
48
- //}
49
- //UipageComponent.signalrEventSubscription = this.mainService.signalrGetEvent().pipe(
50
- // filter(event => event.name === 'FieldElement' || event.name === 'ListFieldMapping'),
51
- // map(async event => {
52
- // let formFieldNameClone = ZComponentHelper.deepClone(formFieldName);
53
- // if (event.payload.Name !== formFieldNameClone && formType === "ListField") {
54
- // try {
55
- // const listFieldName = await this.mainService.getListFieldName(formFieldNameClone).toPromise();
56
- // formFieldNameClone = listFieldName;
57
- // }
58
- // catch (er) {
59
- // }
60
- // }
61
- // if (event.payload.Name === formFieldNameClone) {
62
- // this.mainService.clearFormListFields();
63
- // (this as any).ngOnInit();
64
- // }
65
- // this.mainService.clearFormListFields()
66
- // })
67
- //).subscribe();
68
- }), switchMap((fields) => {
69
- return this.mainService.beforePageInitialise(this.group);
70
- }), switchMap((fields) => {
71
- if (this.group.actName === "new") {
72
- this.mainService.getCloneNewCacheZModel(this.group);
73
- return this.mainService.afterNewModel(this.group);
74
- }
75
- else {
76
- return of(fields);
77
- }
78
- }), switchMap(() => {
79
- if (this.group.referenceId && this.group.referenceId !== "0") {
80
- this.mainService.joinProjectSignalR();
81
- if (this.group.subscribeToModificationAlert) {
82
- this.mainService.handleSignalRModificationAlert(this.group.referenceId);
83
- }
84
- if (typeof this.group.getModel === "function") {
85
- return this.group.getModel(this.group, this.group.referenceId);
86
- }
87
- else {
88
- return this.mainService.getModel$(this.group, this.group.referenceId, TriggerFromType.initialPageLoad);
89
- }
90
- }
91
- else {
92
- return of({});
93
- }
94
- }), switchMap((zmodel) => {
95
- if (this.group.parentReferenceField) {
96
- this.group.parentReferenceId = this.group.zModel[this.group.parentReferenceField];
97
- }
98
- return this.mainService.afterPageInitialise(this.group);
99
- }), switchMap(() => {
100
- return this.mainService.translationPageElement(this.group);
101
- }));
102
- // .subscribe(() => {
103
- // console.log("At activity-one.page ngOnInit() completed");
104
- // this.group.isLoading = false;
105
- // });
106
- }
107
- setupRouteParams(routeParam) {
108
- //let actName = routePath.get("act");
109
- const routeParams = routeParam.split('/');
110
- const formId = routeParams[routeParams.length - 2];
111
- let actName = routeParams[routeParams.length - 1];
112
- if (actName !== 'new' && actName !== 'edit') {
113
- actName = 'new';
114
- }
115
- this.group.isNew = actName === "new" ? true : false;
116
- this.group.isEdit = actName === "edit" ? true : false;
117
- if (actName === "edit") {
118
- this.group.referenceId = formId;
119
- }
120
- else if (actName === "new") {
121
- this.group.parentReferenceId = formId;
122
- if (this.group.parentReferenceId) {
123
- if (this.group.parentReferenceField) {
124
- this.group.zModel[this.group.parentReferenceField] = this.group.parentReferenceId.toString();
125
- }
126
- }
127
- else {
128
- console.log("group.parentReferenceId is undefined.");
129
- }
130
- }
131
- if (actName) {
132
- this.group.actName = actName;
133
- }
134
- }
135
- //signalrFeOnDestroy(): void {
136
- // if (UipageComponent.signalrEventSubscription) {
137
- // UipageComponent.signalrEventSubscription.unsubscribe();
138
- // }
139
- // UipageComponent.signalrEventSubscription = this.mainService.signalrGetEvent().pipe(
140
- // filter(event => event.name === 'FieldElement' || event.name === 'ListFieldMapping'),
141
- // map(event => this.mainService.clearFormListFields()))
142
- // .subscribe()
143
- //}
144
- pageDestroy() {
145
- console.log(this.group.pageName + " ngOnDestroy.");
146
- if (this.subscription) {
147
- this.subscription.unsubscribe();
148
- }
149
- //this.signalrFeOnDestroy();
150
- }
151
- }
152
- UipageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: UipageComponent, deps: [{ token: i1.MainService }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
153
- UipageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: UipageComponent, selector: "ng-component", ngImport: i0, template: ``, isInline: true });
154
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: UipageComponent, decorators: [{
155
- type: Component,
156
- args: [{
157
- template: ``,
158
- }]
159
- }], ctorParameters: function () { return [{ type: i1.MainService }, { type: i2.ActivatedRoute }]; } });
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWlwYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3VpcGFnZS91aXBhZ2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzFDLDZCQUE2QjtBQUU3Qiw4QkFBOEI7QUFDOUIsT0FBTyxFQUFnQixFQUFFLEVBQW9CLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBZSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJN0QsT0FBTyxFQUFFLE1BQU0sRUFBaUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBRW5JLCtFQUErRTtBQUsvRSxNQUFNLE9BQU8sZUFBZTtJQU8xQjtJQUNFLHFDQUFxQztJQUM5QixXQUF3QixFQUN4QixjQUE4QjtRQUQ5QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFUdkMsaUNBQWlDO1FBQ2pDLFVBQUssR0FBVyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQVUvQixXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyx5REFBeUQ7SUFDM0QsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELFVBQVUsQ0FBQyxRQUFnQixFQUFFLFFBQWdCLEVBQUUsVUFBbUIsRUFBRSxXQUFvQjtRQUN0RixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7UUFDdEMsSUFBSSxDQUFDLEtBQUss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Q0FBQyxDQUFDO2FBQ3REO1NBQ0Y7UUFFRCxJQUFJLE9BQU8sRUFBRTtZQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztTQUM5QjtJQUNILENBQUM7SUFFRCw4QkFBOEI7SUFDOUIsbURBQW1EO0lBQ25ELDZEQUE2RDtJQUM3RCxLQUFLO0lBRUwsdUZBQXVGO0lBQ3ZGLDBGQUEwRjtJQUMxRiwyREFBMkQ7SUFDM0Qsa0JBQWtCO0lBQ2xCLEdBQUc7SUFFSCxXQUFXO1FBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxlQUFlLENBQUMsQ0FBQztRQUNuRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNqQztRQUVELDRCQUE0QjtJQUM5QixDQUFDOzs0R0FoTFUsZUFBZTtnR0FBZixlQUFlLG9EQUZoQixFQUFFOzJGQUVELGVBQWU7a0JBSDNCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLEVBQUU7aUJBQ2IiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIG9mLCBPYnNlcnZhYmxlLCBmcm9tIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcblxyXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXHJcbmltcG9ydCB7IE1haW5TZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL21haW4uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBaR3JvdXAsIElEZWFjdGl2YXRlQ29tcG9uZW50LCBTdG9yYWdlU2Vzc2lvblNlcnZpY2UsIFpDb21wb25lbnRIZWxwZXIsIEZvcm1UeXBlLCBUcmlnZ2VyRnJvbVR5cGUgfSBmcm9tIFwibW1oZ2xvYmFsLXpjb3JlXCI7XHJcbmltcG9ydCB7IERpYWxvZ0Nsb3NlUmVzdWx0LCBEaWFsb2dSZWYgfSBmcm9tIFwiQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItZGlhbG9nXCI7XHJcbi8vIGltcG9ydCB7IElEZWFjdGl2YXRlQ29tcG9uZW50IH0gZnJvbSBcInNyYy9hcHAvc2VydmljZXMvY2FuZGVhY3RpdmF0ZS5ndWFyZFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGU6IGBgLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWlwYWdlQ29tcG9uZW50IGltcGxlbWVudHMgSURlYWN0aXZhdGVDb21wb25lbnQge1xyXG4gIC8vIGN0cmxOYW1lID0gXCJlMWNybV9icGFjdGl2aXR5XCI7XHJcbiAgZ3JvdXA6IFpHcm91cCA9IG5ldyBaR3JvdXAodHJ1ZSk7XHJcbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBzdGF0aWMgc2lnbmFsckV2ZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBzdGF0aWMgZGlhbG9nOiBEaWFsb2dSZWY7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gcHVibGljIGZpZWxkU2VydmljZTogRmllbGRTZXJ2aWNlLFxyXG4gICAgcHVibGljIG1haW5TZXJ2aWNlOiBNYWluU2VydmljZSxcclxuICAgIHB1YmxpYyBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVcclxuICApIHtcclxuICAgIG1haW5TZXJ2aWNlLnNldEdyb3VwKHRoaXMuZ3JvdXApO1xyXG4gICAgLy8gY29uc29sZS5sb2coXCJBdCBcIiArIHRoaXMuY3RybE5hbWUgKyBcIiAoY29uc3RydWN0b3IpXCIpO1xyXG4gIH1cclxuXHJcbiAgY2FuRXhpdCgpOiBib29sZWFuIHwgT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5tYWluU2VydmljZS5jYW5FeGl0KHRoaXMuZ3JvdXAuZm9ybSk7XHJcbiAgfVxyXG5cclxuICBwYWdlT25Jbml0KGN0cmxOYW1lOiBzdHJpbmcsIHBhZ2VOYW1lOiBzdHJpbmcsIGlzTGlzdEZvcm06IGJvb2xlYW4sIHByb2plY3ROYW1lPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMuZ3JvdXAuX3Byb2plY3ROYW1lID0gcHJvamVjdE5hbWU7XHJcbiAgICB0aGlzLmdyb3VwLmlzTGlzdEZvcm0gPSBpc0xpc3RGb3JtO1xyXG5cclxuICAgIHJldHVybiB0aGlzLm1haW5TZXJ2aWNlLmdldFJlc291cmNlU2VydmVyRGF0YSgpLnBpcGUoXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgcm91dGVQYXJhbSA9IGlzTGlzdEZvcm0gPyBudWxsIDogdGhpcy5tYWluU2VydmljZS5nZXROYXZpZ2F0aW9uQ3VycmVudFBhcmFtKCk7XHJcbiAgICAgICAgdGhpcy5tYWluU2VydmljZS5pbml0aWFsaXplR3JvdXAodGhpcy5ncm91cCwgY3RybE5hbWUsIHBhZ2VOYW1lLCB0aGlzKTtcclxuXHJcbiAgICAgICAgaWYgKHJvdXRlUGFyYW0pIHtcclxuICAgICAgICAgIHRoaXMuc2V0dXBSb3V0ZVBhcmFtcyhyb3V0ZVBhcmFtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zb2xlLndhcm4oXCJyb3V0ZVBhcmFtIGlzIHVuZGVmaW5lZC5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcclxuICAgICAgICBjb25zdCBmb3JtVHlwZSA9IGlzTGlzdEZvcm0gPyBGb3JtVHlwZS5saXN0RmllbGQgOiBGb3JtVHlwZS5mb3JtRmllbGQ7XHJcbiAgICAgICAgY29uc3QgZmllbGRFbGVtZW50TmFtZSA9IHRoaXMuZ3JvdXAuZmllbGROYW1lID8gdGhpcy5ncm91cC5maWVsZE5hbWUgOiBjdHJsTmFtZTtcclxuXHJcbiAgICAgICAgdGhpcy5ncm91cC5maWVsZE5hbWUgPSBmaWVsZEVsZW1lbnROYW1lOyAvLyB0byBiZSBkZWNwcmVjYXRlZCBcclxuICAgICAgICB0aGlzLmdyb3VwLmZpZWxkRWxlbWVudE5hbWUgPSBmaWVsZEVsZW1lbnROYW1lO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5tYWluU2VydmljZS5nZXRHcm91cEZpZWxkcyhcclxuICAgICAgICAgIGZpZWxkRWxlbWVudE5hbWUsXHJcbiAgICAgICAgICBmb3JtVHlwZSxcclxuICAgICAgICAgIFRyaWdnZXJGcm9tVHlwZS5pbml0aWFsUGFnZUxvYWQsXHJcbiAgICAgICAgICB0aGlzLmdyb3VwLFxyXG4gICAgICAgICAgXCJmaWVsZHNcIlxyXG4gICAgICAgICk7XHJcbiAgICAgICAgLy9sZXQgZm9ybUZpZWxkTmFtZSA9IHRoaXMuZ3JvdXAuZmllbGROYW1lID8gdGhpcy5ncm91cC5maWVsZE5hbWUgOiBjdHJsTmFtZTtcclxuICAgICAgICAvL3RoaXMuZ3JvdXAuZmllbGROYW1lID0gZm9ybUZpZWxkTmFtZTtcclxuXHJcbiAgICAgICAgLy9pZihVaXBhZ2VDb21wb25lbnQuc2lnbmFsckV2ZW50U3Vic2NyaXB0aW9uKXtcclxuICAgICAgICAvLyAgVWlwYWdlQ29tcG9uZW50LnNpZ25hbHJFdmVudFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIC8vfVxyXG5cclxuICAgICAgICAvL1VpcGFnZUNvbXBvbmVudC5zaWduYWxyRXZlbnRTdWJzY3JpcHRpb24gPSB0aGlzLm1haW5TZXJ2aWNlLnNpZ25hbHJHZXRFdmVudCgpLnBpcGUoXHJcbiAgICAgICAgLy8gIGZpbHRlcihldmVudCA9PiBldmVudC5uYW1lID09PSAnRmllbGRFbGVtZW50JyB8fCBldmVudC5uYW1lID09PSAnTGlzdEZpZWxkTWFwcGluZycpLFxyXG4gICAgICAgIC8vICBtYXAoYXN5bmMgZXZlbnQgPT4ge1xyXG4gICAgICAgIC8vICAgIGxldCBmb3JtRmllbGROYW1lQ2xvbmUgPSBaQ29tcG9uZW50SGVscGVyLmRlZXBDbG9uZShmb3JtRmllbGROYW1lKTtcclxuXHJcbiAgICAgICAgLy8gICAgaWYgKGV2ZW50LnBheWxvYWQuTmFtZSAhPT0gZm9ybUZpZWxkTmFtZUNsb25lICYmIGZvcm1UeXBlID09PSBcIkxpc3RGaWVsZFwiKSB7XHJcbiAgICAgICAgLy8gICAgICB0cnkge1xyXG4gICAgICAgIC8vICAgICAgICBjb25zdCBsaXN0RmllbGROYW1lID0gYXdhaXQgdGhpcy5tYWluU2VydmljZS5nZXRMaXN0RmllbGROYW1lKGZvcm1GaWVsZE5hbWVDbG9uZSkudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgLy8gICAgICAgIGZvcm1GaWVsZE5hbWVDbG9uZSA9IGxpc3RGaWVsZE5hbWU7XHJcbiAgICAgICAgLy8gICAgICB9XHJcbiAgICAgICAgLy8gICAgICBjYXRjaCAoZXIpIHtcclxuICAgICAgICAvLyAgICAgIH1cclxuICAgICAgICAvLyAgICB9XHJcblxyXG4gICAgICAgIC8vICAgIGlmIChldmVudC5wYXlsb2FkLk5hbWUgPT09IGZvcm1GaWVsZE5hbWVDbG9uZSkge1xyXG4gICAgICAgIC8vICAgICAgdGhpcy5tYWluU2VydmljZS5jbGVhckZvcm1MaXN0RmllbGRzKCk7XHJcbiAgICAgICAgLy8gICAgICAodGhpcyBhcyBhbnkpLm5nT25Jbml0KCk7XHJcbiAgICAgICAgLy8gICAgfVxyXG5cclxuICAgICAgICAvLyAgIHRoaXMubWFpblNlcnZpY2UuY2xlYXJGb3JtTGlzdEZpZWxkcygpXHJcbiAgICAgICAgLy8gIH0pXHJcbiAgICAgICAgLy8pLnN1YnNjcmliZSgpO1xyXG5cclxuICAgICAgfSksXHJcbiAgICAgIHN3aXRjaE1hcCgoZmllbGRzKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWFpblNlcnZpY2UuYmVmb3JlUGFnZUluaXRpYWxpc2UodGhpcy5ncm91cCk7XHJcbiAgICAgIH0pLFxyXG4gICAgICBzd2l0Y2hNYXAoKGZpZWxkcykgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmdyb3VwLmFjdE5hbWUgPT09IFwibmV3XCIpIHtcclxuICAgICAgICAgIHRoaXMubWFpblNlcnZpY2UuZ2V0Q2xvbmVOZXdDYWNoZVpNb2RlbCh0aGlzLmdyb3VwKTtcclxuICAgICAgICAgIHJldHVybiB0aGlzLm1haW5TZXJ2aWNlLmFmdGVyTmV3TW9kZWwodGhpcy5ncm91cCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBvZihmaWVsZHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXAucmVmZXJlbmNlSWQgJiYgdGhpcy5ncm91cC5yZWZlcmVuY2VJZCAhPT0gXCIwXCIpIHtcclxuICAgICAgICAgIHRoaXMubWFpblNlcnZpY2Uuam9pblByb2plY3RTaWduYWxSKCk7XHJcbiAgICAgICAgICBpZiAodGhpcy5ncm91cC5zdWJzY3JpYmVUb01vZGlmaWNhdGlvbkFsZXJ0KSB7XHJcbiAgICAgICAgICAgIHRoaXMubWFpblNlcnZpY2UuaGFuZGxlU2lnbmFsUk1vZGlmaWNhdGlvbkFsZXJ0KHRoaXMuZ3JvdXAucmVmZXJlbmNlSWQpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5ncm91cC5nZXRNb2RlbCA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdyb3VwLmdldE1vZGVsKHRoaXMuZ3JvdXAsIHRoaXMuZ3JvdXAucmVmZXJlbmNlSWQpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFpblNlcnZpY2UuZ2V0TW9kZWwkKHRoaXMuZ3JvdXAsIHRoaXMuZ3JvdXAucmVmZXJlbmNlSWQsIFRyaWdnZXJGcm9tVHlwZS5pbml0aWFsUGFnZUxvYWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gb2Yoe30pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICAgIHN3aXRjaE1hcCgoem1vZGVsKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXAucGFyZW50UmVmZXJlbmNlRmllbGQpIHtcclxuICAgICAgICAgIHRoaXMuZ3JvdXAucGFyZW50UmVmZXJlbmNlSWQgPSB0aGlzLmdyb3VwLnpNb2RlbFt0aGlzLmdyb3VwLnBhcmVudFJlZmVyZW5jZUZpZWxkXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWFpblNlcnZpY2UuYWZ0ZXJQYWdlSW5pdGlhbGlzZSh0aGlzLmdyb3VwKTtcclxuICAgICAgfSksXHJcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWFpblNlcnZpY2UudHJhbnNsYXRpb25QYWdlRWxlbWVudCh0aGlzLmdyb3VwKVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIC8vIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgLy8gICBjb25zb2xlLmxvZyhcIkF0IGFjdGl2aXR5LW9uZS5wYWdlIG5nT25Jbml0KCkgY29tcGxldGVkXCIpO1xyXG4gICAgLy8gICB0aGlzLmdyb3VwLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgLy8gfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldHVwUm91dGVQYXJhbXMocm91dGVQYXJhbTogc3RyaW5nKSB7XHJcbiAgICAvL2xldCBhY3ROYW1lID0gcm91dGVQYXRoLmdldChcImFjdFwiKTtcclxuICAgIGNvbnN0IHJvdXRlUGFyYW1zID0gcm91dGVQYXJhbS5zcGxpdCgnLycpO1xyXG4gICAgY29uc3QgZm9ybUlkID0gcm91dGVQYXJhbXNbcm91dGVQYXJhbXMubGVuZ3RoIC0gMl07XHJcbiAgICBsZXQgYWN0TmFtZSA9IHJvdXRlUGFyYW1zW3JvdXRlUGFyYW1zLmxlbmd0aCAtIDFdO1xyXG5cclxuICAgIGlmIChhY3ROYW1lICE9PSAnbmV3JyAmJiBhY3ROYW1lICE9PSAnZWRpdCcpIHtcclxuICAgICAgYWN0TmFtZSA9ICduZXcnO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZ3JvdXAuaXNOZXcgPSBhY3ROYW1lID09PSBcIm5ld1wiID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgdGhpcy5ncm91cC5pc0VkaXQgPSBhY3ROYW1lID09PSBcImVkaXRcIiA/IHRydWUgOiBmYWxzZTtcclxuXHJcbiAgICBpZiAoYWN0TmFtZSA9PT0gXCJlZGl0XCIpIHtcclxuICAgICAgdGhpcy5ncm91cC5yZWZlcmVuY2VJZCA9IGZvcm1JZDtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGFjdE5hbWUgPT09IFwibmV3XCIpIHtcclxuICAgICAgdGhpcy5ncm91cC5wYXJlbnRSZWZlcmVuY2VJZCA9IGZvcm1JZDtcclxuXHJcbiAgICAgIGlmICh0aGlzLmdyb3VwLnBhcmVudFJlZmVyZW5jZUlkKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXAucGFyZW50UmVmZXJlbmNlRmllbGQpIHtcclxuICAgICAgICAgIHRoaXMuZ3JvdXAuek1vZGVsW3RoaXMuZ3JvdXAucGFyZW50UmVmZXJlbmNlRmllbGRdID0gdGhpcy5ncm91cC5wYXJlbnRSZWZlcmVuY2VJZC50b1N0cmluZygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcImdyb3VwLnBhcmVudFJlZmVyZW5jZUlkIGlzIHVuZGVmaW5lZC5cIik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoYWN0TmFtZSkge1xyXG4gICAgICB0aGlzLmdyb3VwLmFjdE5hbWUgPSBhY3ROYW1lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9zaWduYWxyRmVPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgLy8gIGlmIChVaXBhZ2VDb21wb25lbnQuc2lnbmFsckV2ZW50U3Vic2NyaXB0aW9uKSB7XHJcbiAgLy8gICAgVWlwYWdlQ29tcG9uZW50LnNpZ25hbHJFdmVudFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIC8vICB9XHJcblxyXG4gIC8vICBVaXBhZ2VDb21wb25lbnQuc2lnbmFsckV2ZW50U3Vic2NyaXB0aW9uID0gdGhpcy5tYWluU2VydmljZS5zaWduYWxyR2V0RXZlbnQoKS5waXBlKFxyXG4gIC8vICAgIGZpbHRlcihldmVudCA9PiBldmVudC5uYW1lID09PSAnRmllbGRFbGVtZW50JyB8fCBldmVudC5uYW1lID09PSAnTGlzdEZpZWxkTWFwcGluZycpLFxyXG4gIC8vICAgIG1hcChldmVudCA9PiB0aGlzLm1haW5TZXJ2aWNlLmNsZWFyRm9ybUxpc3RGaWVsZHMoKSkpXHJcbiAgLy8gICAgLnN1YnNjcmliZSgpXHJcbiAgLy99XHJcblxyXG4gIHBhZ2VEZXN0cm95KCk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2codGhpcy5ncm91cC5wYWdlTmFtZSArIFwiIG5nT25EZXN0cm95LlwiKTtcclxuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vdGhpcy5zaWduYWxyRmVPbkRlc3Ryb3koKTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,40 +0,0 @@
1
- /********** Angular **********/
2
- import { Component, Input } from '@angular/core';
3
- /********** Ionic **********/
4
- /********** Plugin **********/
5
- /********** Component & Service **********/
6
- import { ZComponentHelper } from 'mmhglobal-zcore';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "../services/zcomponent.service";
9
- import * as i2 from "@angular/common";
10
- import * as i3 from "@progress/kendo-angular-tooltip";
11
- export class UivalidationmessageComponent {
12
- constructor(componentService) {
13
- this.componentService = componentService;
14
- }
15
- ngOnInit() { }
16
- getValidationError(form, data) {
17
- return ZComponentHelper.getValidationError(form, data);
18
- }
19
- getIconClass() {
20
- if (!this.componentService.isMobileScreen()) {
21
- return "k-icon k-i-warning validation_icon";
22
- }
23
- else {
24
- return "k-icon k-i-warning";
25
- }
26
- }
27
- }
28
- UivalidationmessageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: UivalidationmessageComponent, deps: [{ token: i1.ZComponentService }], target: i0.ɵɵFactoryTarget.Component });
29
- UivalidationmessageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: UivalidationmessageComponent, selector: "app-uivalidationmessage", inputs: { group: "group", data: "data", form: "form" }, ngImport: i0, template: "<div *ngIf=\"form.get(data.Value).invalid && (form.get(data.Value).dirty || form.get(data.Value).touched)\"\r\n class=\"divvalidation\">\r\n <div kendoTooltip\r\n position=\"left\"\r\n showOn=\"hover\">\r\n <span #warning\r\n [class]=\"getIconClass()\"\r\n [title]=\"getValidationError(form, data)\"></span>\r\n </div>\r\n</div>\r\n", styles: [".divvalidation{flex-basis:2rem;align-self:stretch;color:red}.validation_icon{padding-top:10px;padding-left:2px}.validation-icon{margin-top:0;margin-right:5px}.validation-icon-mobile{margin-top:5px;margin-right:5px}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.TooltipDirective, selector: "[kendoTooltip]", inputs: ["filter", "position", "titleTemplate", "showOn", "showAfter", "callout", "closable", "offset", "tooltipWidth", "tooltipHeight", "tooltipClass", "collision", "closeTitle", "tooltipTemplate"], exportAs: ["kendoTooltip"] }] });
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: UivalidationmessageComponent, decorators: [{
31
- type: Component,
32
- args: [{ selector: 'app-uivalidationmessage', template: "<div *ngIf=\"form.get(data.Value).invalid && (form.get(data.Value).dirty || form.get(data.Value).touched)\"\r\n class=\"divvalidation\">\r\n <div kendoTooltip\r\n position=\"left\"\r\n showOn=\"hover\">\r\n <span #warning\r\n [class]=\"getIconClass()\"\r\n [title]=\"getValidationError(form, data)\"></span>\r\n </div>\r\n</div>\r\n", styles: [".divvalidation{flex-basis:2rem;align-self:stretch;color:red}.validation_icon{padding-top:10px;padding-left:2px}.validation-icon{margin-top:0;margin-right:5px}.validation-icon-mobile{margin-top:5px;margin-right:5px}\n"] }]
33
- }], ctorParameters: function () { return [{ type: i1.ZComponentService }]; }, propDecorators: { group: [{
34
- type: Input
35
- }], data: [{
36
- type: Input
37
- }], form: [{
38
- type: Input
39
- }] } });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWl2YWxpZGF0aW9ubWVzc2FnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi91aXZhbGlkYXRpb25tZXNzYWdlL3VpdmFsaWRhdGlvbm1lc3NhZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvdWl2YWxpZGF0aW9ubWVzc2FnZS91aXZhbGlkYXRpb25tZXNzYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd6RCw2QkFBNkI7QUFFN0IsOEJBQThCO0FBRTlCLDJDQUEyQztBQUMzQyxPQUFPLEVBQWtCLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBVW5FLE1BQU0sT0FBTyw0QkFBNEI7SUFLdkMsWUFBb0IsZ0JBQW1DO1FBQW5DLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBbUI7SUFDdkQsQ0FBQztJQUVELFFBQVEsS0FBSyxDQUFDO0lBRWQsa0JBQWtCLENBQUMsSUFBZSxFQUFFLElBQVk7UUFDOUMsT0FBTyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxFQUFFO1lBQzNDLE9BQU8sb0NBQW9DLENBQUE7U0FDNUM7YUFDSTtZQUNILE9BQU8sb0JBQW9CLENBQUE7U0FDNUI7SUFDSCxDQUFDOzt5SEFyQlUsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsdUhDbkJ6QyxxWEFVQTsyRkRTYSw0QkFBNEI7a0JBTnhDLFNBQVM7K0JBQ0UseUJBQXlCO3dHQU0xQixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbi8qKioqKioqKioqIElvbmljICoqKioqKioqKiovXHJcblxyXG4vKioqKioqKioqKiBQbHVnaW4gKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuaW1wb3J0IHsgWkdyb3VwLCBaRmllbGQsIFpDb21wb25lbnRIZWxwZXIgfSBmcm9tICdtbWhnbG9iYWwtemNvcmUnO1xyXG5pbXBvcnQgeyBaQ29tcG9uZW50U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3pjb21wb25lbnQuc2VydmljZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtdWl2YWxpZGF0aW9ubWVzc2FnZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VpdmFsaWRhdGlvbm1lc3NhZ2UuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3VpdmFsaWRhdGlvbm1lc3NhZ2UuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBVaXZhbGlkYXRpb25tZXNzYWdlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBncm91cDogWkdyb3VwO1xyXG4gIEBJbnB1dCgpIGRhdGE6IFpGaWVsZDtcclxuICBASW5wdXQoKSBmb3JtOiBGb3JtR3JvdXA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29tcG9uZW50U2VydmljZTogWkNvbXBvbmVudFNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkgeyB9XHJcblxyXG4gIGdldFZhbGlkYXRpb25FcnJvcihmb3JtOiBGb3JtR3JvdXAsIGRhdGE6IFpGaWVsZCkge1xyXG4gICAgcmV0dXJuIFpDb21wb25lbnRIZWxwZXIuZ2V0VmFsaWRhdGlvbkVycm9yKGZvcm0sIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SWNvbkNsYXNzKCkge1xyXG4gICAgaWYgKCF0aGlzLmNvbXBvbmVudFNlcnZpY2UuaXNNb2JpbGVTY3JlZW4oKSkge1xyXG4gICAgICByZXR1cm4gXCJrLWljb24gay1pLXdhcm5pbmcgdmFsaWRhdGlvbl9pY29uXCJcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gXCJrLWljb24gay1pLXdhcm5pbmdcIlxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2ICpuZ0lmPVwiZm9ybS5nZXQoZGF0YS5WYWx1ZSkuaW52YWxpZCAmJiAoZm9ybS5nZXQoZGF0YS5WYWx1ZSkuZGlydHkgfHwgZm9ybS5nZXQoZGF0YS5WYWx1ZSkudG91Y2hlZClcIlxyXG4gICAgIGNsYXNzPVwiZGl2dmFsaWRhdGlvblwiPlxyXG4gIDxkaXYga2VuZG9Ub29sdGlwXHJcbiAgICAgICBwb3NpdGlvbj1cImxlZnRcIlxyXG4gICAgICAgc2hvd09uPVwiaG92ZXJcIj5cclxuICAgIDxzcGFuICN3YXJuaW5nXHJcbiAgICAgICAgICBbY2xhc3NdPVwiZ2V0SWNvbkNsYXNzKClcIlxyXG4gICAgICAgICAgW3RpdGxlXT1cImdldFZhbGlkYXRpb25FcnJvcihmb3JtLCBkYXRhKVwiPjwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -1,249 +0,0 @@
1
- /********** Angular **********/
2
- import { Component, ViewChild } from "@angular/core";
3
- /********** Ionic **********/
4
- /********** Plugin **********/
5
- /********** Component & Service **********/
6
- import { ContainerFieldBase } from "../components/containerfieldbase.component";
7
- import { ZComponentHelper } from "mmhglobal-zcore";
8
- import { CdkVirtualScrollViewport } from "@angular/cdk/scrolling";
9
- import { auditTime, delay, forkJoin, of, tap } from "rxjs";
10
- import { collapseAnimation, rotateAnimation } from "../animations/component-animations";
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "../services/zcomponent.service";
13
- import * as i2 from "mmhglobal-zcore";
14
- import * as i3 from "@angular/cdk/scrolling";
15
- import * as i4 from "@fortawesome/angular-fontawesome";
16
- import * as i5 from "../embed-components/context-menu/context-menu.component";
17
- import * as i6 from "../zformcontrol/zformcontrol.component";
18
- import * as i7 from "@angular/common";
19
- import * as i8 from "@angular/flex-layout/extended";
20
- import * as i9 from "../pipe/htmlSanitize.pipe";
21
- // Approach 1: Total Count is known, get next page upon scroll. (Will only have multiple pages / pageable)
22
- // Approach 2: Total Count is not known, append more data at runtime. (Will only have 1 page / not pageable)
23
- export class VirtualScrollComponent extends ContainerFieldBase {
24
- constructor(componentService, fontAweSomeService) {
25
- super(componentService);
26
- this.fontAweSomeService = fontAweSomeService;
27
- this.collapsedGroupBy = []; // Used to define animation status
28
- this.groupByValueToExpand = ''; // Used to define animation status
29
- this.collapsedGroupBy_FirstNodeIndexList = new Array(); // When collapse, need to retain the first node in the list so that the group by title will not be hidden
30
- this.fullDataItems = [];
31
- this.dataItems = [];
32
- this.pageSize = 50;
33
- this.pageFetched = [];
34
- this.footerFields = [];
35
- }
36
- ngOnInit() {
37
- this.setupComponent();
38
- this.setupDataItems();
39
- this.setupFooter();
40
- super.initComponent().subscribe();
41
- }
42
- ngAfterViewInit() {
43
- this.componentService.decrementComponentCounterForField(this.data);
44
- this.viewPort.scrolledIndexChange.pipe(auditTime(this.data.ScrollIndexChangeTimeDelay || 300), tap((currIndex) => {
45
- this.populateListData(currIndex);
46
- })).subscribe();
47
- }
48
- scrollToTop() {
49
- if (this.viewPort) {
50
- this.viewPort.scrollToIndex(0);
51
- }
52
- }
53
- setupComponent() {
54
- this.collapsedGroupBy = [];
55
- if (this.data.Options) {
56
- if (typeof this.data.Options === 'string' && this.data.Options.startsWith('group.')) {
57
- this.options = ZComponentHelper.getGroupValue(this.data.Options, this.group);
58
- }
59
- else {
60
- this.options = this.data.Options;
61
- }
62
- this.pageSize = this.options.pageSize ?? 50;
63
- this.options.loadingLabel = this.options.loadingLabel ?? '<div>Loading</div>';
64
- this.options.itemSize = this.options.itemSize ?? 50;
65
- this.options.minBufferPx = this.options.minBufferPx ?? (this.options.pageSize * this.options.itemSize);
66
- this.options.maxBufferPx = this.options.maxBufferPx ?? (this.options.pageSize * this.options.itemSize);
67
- this.options.isGroupByEnabled = this.options.isGroupByEnabled ?? !!this.options.groupBy;
68
- }
69
- }
70
- appendData(dataItems) {
71
- this.fullDataItems = this.fullDataItems.concat(dataItems);
72
- this.pageSize = this.fullDataItems.length;
73
- this.computeDataItems();
74
- }
75
- setupDataItems() {
76
- this.pageFetched = [];
77
- if (this.data.DataSetResult) {
78
- let dataSetResult = this.data.DataSetResult;
79
- if (typeof dataSetResult == 'string' && dataSetResult.startsWith('group.')) {
80
- dataSetResult = ZComponentHelper.getGroupValue(dataSetResult, this.group);
81
- }
82
- this.setData(dataSetResult);
83
- }
84
- else {
85
- this.dataItems = [];
86
- }
87
- }
88
- setData(dataSetResult) {
89
- if (!dataSetResult) {
90
- return;
91
- }
92
- this.pageFetched = [];
93
- if (dataSetResult.dataSet && Array.isArray(dataSetResult.dataSet) && dataSetResult.dataSet.length > 0) {
94
- const cnt = dataSetResult.totalCount - dataSetResult.dataSet.length;
95
- if (cnt < 0) {
96
- console.error('DataItems cannot be more than total count.');
97
- return;
98
- }
99
- this.dataItems = dataSetResult.dataSet.concat(Array(cnt).fill(false));
100
- const pageNoToMarkAsFetch = Math.ceil(dataSetResult.dataSet.length / this.pageSize) - 1;
101
- for (let i = 0; i <= pageNoToMarkAsFetch; i++) {
102
- this.pageFetched.push(i);
103
- }
104
- }
105
- else if (dataSetResult.totalCount) {
106
- this.dataItems = Array(dataSetResult.totalCount).fill(false);
107
- }
108
- else {
109
- this.dataItems = [];
110
- }
111
- this.fullDataItems = this.dataItems;
112
- this.computeDataItems();
113
- }
114
- populateListData(currIndex) {
115
- const renderRange = this.viewPort.getRenderedRange();
116
- if (renderRange.start == renderRange.end && renderRange.end == 0) {
117
- return;
118
- }
119
- const startPageNo = Math.floor(renderRange.start / this.pageSize);
120
- const endPageNo = Math.floor((renderRange.end - 1) / this.pageSize);
121
- const obs = new Array();
122
- for (let i = startPageNo; i <= endPageNo; i++) {
123
- if (!this.pageFetched.includes(i)) {
124
- this.pageFetched.push(i);
125
- obs.push(this.fetchData(i).pipe(tap(([data, pageNo]) => {
126
- this.updateDataByIndex(pageNo * this.pageSize, data);
127
- })));
128
- }
129
- }
130
- if (obs.length > 0) {
131
- forkJoin(obs).pipe(tap(res => {
132
- this.updateViewPortData();
133
- })).subscribe();
134
- }
135
- }
136
- fetchData(pageNo) {
137
- if (this.data.OnScroll && typeof this.data.OnScroll == 'string' && this.data.OnScroll.startsWith('group.')) {
138
- const onScrollEvent = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnScroll);
139
- if (typeof onScrollEvent === 'function') {
140
- const callFunc = onScrollEvent.bind(this.group.ctrlScope);
141
- return forkJoin([callFunc(this.group, { pageNo: pageNo, pageSize: this.pageSize }), of(pageNo)]);
142
- }
143
- }
144
- return of(false);
145
- }
146
- updateDataByIndex(startingIndex, data) {
147
- for (let i = 0; i < data.length; i++) {
148
- this.dataItems[startingIndex + i] = data[i];
149
- }
150
- }
151
- updateViewPortData() {
152
- this.dataItems = [...this.dataItems];
153
- }
154
- setupFooter() {
155
- if (this.data.Value && Array.isArray(this.data.Value)) {
156
- this.footerFields = this.data.Value.filter(x => x.Section === 'footer');
157
- }
158
- }
159
- getComponentOptions() {
160
- return this.options;
161
- }
162
- //#region Group By
163
- getGroupByLabelTemplate(dataItem, options) {
164
- if (options.groupByLabelTemplate && typeof options.groupByLabelTemplate == 'string') {
165
- if (options.groupByLabelTemplate.startsWith('group.')) {
166
- const getTemplateFunc = ZComponentHelper.getGroupEvalValue.call(this, options.groupByLabelTemplate);
167
- if (getTemplateFunc) {
168
- return getTemplateFunc({
169
- dataItem,
170
- options,
171
- });
172
- }
173
- }
174
- else {
175
- return dataItem[options.groupByLabelTemplate];
176
- }
177
- }
178
- }
179
- groupByOnClick(groupByValue) {
180
- if (!this.options.isGroupByCollapsible) {
181
- return;
182
- }
183
- // use collapse / expand to control animation sequence
184
- const isToCollapse = !this.collapsedGroupBy.includes(groupByValue);
185
- const firstNodeIndex = this.fullDataItems.map(x => x[this.options.groupBy]).indexOf(groupByValue);
186
- if (isToCollapse) {
187
- // to collapse (For animation: Change status, then append data)
188
- this.collapsedGroupBy.push(groupByValue);
189
- this.collapsedGroupBy_FirstNodeIndexList.push(firstNodeIndex);
190
- of({}).pipe(delay(400), tap(() => {
191
- this.computeDataItems();
192
- })).subscribe();
193
- }
194
- else {
195
- // to expand (For animation: Append data, then change status)
196
- this.collapsedGroupBy_FirstNodeIndexList = this.collapsedGroupBy_FirstNodeIndexList.filter(x => x != firstNodeIndex);
197
- const tempCollapsedGroupBy = this.collapsedGroupBy.filter(x => x !== groupByValue);
198
- this.dataItems = this.fullDataItems.filter((x, index) => !tempCollapsedGroupBy.includes(x[this.options.groupBy]) || this.collapsedGroupBy_FirstNodeIndexList.includes(index));
199
- this.groupByValueToExpand = groupByValue;
200
- of({}).pipe(delay(0), tap(() => {
201
- this.collapsedGroupBy = tempCollapsedGroupBy;
202
- this.groupByValueToExpand = groupByValue;
203
- })).subscribe();
204
- }
205
- }
206
- computeDataItems() {
207
- this.dataItems = this.fullDataItems.filter((x, index) => !this.collapsedGroupBy.includes(x[this.options.groupBy]) || this.collapsedGroupBy_FirstNodeIndexList.includes(index));
208
- }
209
- expandAll() {
210
- this.groupByValueToExpand = '';
211
- this.collapsedGroupBy = [];
212
- this.collapsedGroupBy_FirstNodeIndexList = [];
213
- this.computeDataItems();
214
- }
215
- expandByGroupByValues(groupByValue) {
216
- this.collapsedGroupBy = this.collapsedGroupBy.filter(x => !groupByValue.includes(x));
217
- this.computeDataItems();
218
- }
219
- //#endregion
220
- //#region Selection
221
- onClick(event, dataItem) {
222
- if (!!this.data.SelectOptions || true) {
223
- const targetValue = !dataItem.IsSelected;
224
- if (this.data.SelectOptions == 'single' || true) {
225
- for (const dt of this.dataItems) {
226
- dt.IsSelected = false;
227
- }
228
- }
229
- dataItem.IsSelected = targetValue;
230
- }
231
- super.onClick(event, dataItem);
232
- }
233
- }
234
- VirtualScrollComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: VirtualScrollComponent, deps: [{ token: i1.ZComponentService }, { token: i2.FontAweSomeService }], target: i0.ɵɵFactoryTarget.Component });
235
- VirtualScrollComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: VirtualScrollComponent, selector: "app-virtual-scroll", viewQueries: [{ propertyName: "viewPort", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n class=\"container e1tag-container-style\" [style]=\"componentProperties.containerStyle.style\"\r\n [ngClass]=\"(data.ComponentStyleType || '') + ' ' + (data.Class || '')\">\r\n <cdk-virtual-scroll-viewport\r\n [itemSize]=\"options.itemSize\"\r\n [style]=\"componentProperties.containerStyle.style1\"\r\n class=\"virtual-scroll-viewport e1tag-container-style1\"\r\n [minBufferPx]=\"options.minBufferPx\"\r\n [maxBufferPx]=\"options.maxBufferPx\">\r\n <ng-container *cdkVirtualFor=\"let dataItem of dataItems; let i = index\">\r\n <div #virtualscrollcontent>\r\n <div class=\"virtual-scroll-groupby e1tag-container-style4\" [style]=\"componentProperties.containerStyle.style4\"\r\n *ngIf=\"options.isGroupByEnabled && options.groupBy && (!dataItems[i-1] || dataItem[options.groupBy] !== dataItems[i-1][options.groupBy])\"\r\n (click)=\"groupByOnClick(dataItem[options.groupBy])\" [class.groupby-collapsible]=\"options.isGroupByCollapsible\">\r\n <fa-icon class=\"virtual-scroll-groupby-arrow-icon e1tag-container-style5\"\r\n [style]=\"componentProperties.containerStyle.style5\" *ngIf=\"!!options.isGroupByCollapsible\"\r\n [icon]=\"getFontAwesome('caret-down', fontAweSomeService)\"\r\n [@rotateAnimation]=\"{value: collapsedGroupBy.includes(dataItem[options.groupBy]) ? 'rotate' : 'default', params: {degree: -90}}\">\r\n </fa-icon>\r\n <span class=\"virtual-scroll-groupby-label e1tag-container-style6\"\r\n [style]=\"componentProperties.containerStyle.style6\">\r\n {{options.groupByLabelTemplate ? getGroupByLabelTemplate(dataItem, options) : dataItem[options.groupBy]}}\r\n </span>\r\n </div>\r\n <div *ngIf=\"!options.isGroupByEnabled\" [style.height.px]=\"options.itemSize\"\r\n [style.min-height.px]=\"options.itemSize\" [style.max-height.px]=\"options.itemSize\"\r\n [style]=\"componentProperties.containerStyle.style2\" class=\"e1tag-container-style2 virtual-scroll-dataitem\"\r\n (click)=\"onClick($event, dataItem)\" [id]=\"data.Name + '_' + dataItem?.Value?.Id || ''\"\r\n [class.virtual-scroll-item-selected]=\"!!dataItem.IsSelected\">\r\n <div *ngIf=\"!dataItem\" [innerHTML]=\"options.loadingLabel | htmlSanitize\"></div>\r\n <div *ngIf=\"dataItem.Label\" [innerHTML]=\"dataItem.Label | htmlSanitize\"></div>\r\n </div>\r\n <div *ngIf=\"options.isGroupByEnabled\" [style.height.px]=\"options.itemSize\"\r\n [style.min-height.px]=\"options.itemSize\" [style.max-height.px]=\"options.itemSize\"\r\n [style]=\"componentProperties.containerStyle.style2\" class=\"e1tag-container-style2 virtual-scroll-dataitem\"\r\n (click)=\"onClick($event, dataItem)\" [id]=\"data.Name + '_' + dataItem?.Value?.Id || ''\"\r\n [@collapseAnimation]=\"{value: !!options.groupBy && collapsedGroupBy.includes(dataItem[options.groupBy]) ? 'collapse' : 'default'}\"\r\n [class.groupby-value-expand]=\"groupByValueToExpand == (dataItem[options.groupBy])\"\r\n [class.virtual-scroll-item-selected]=\"!!dataItem.IsSelected\">\r\n <div *ngIf=\"!dataItem\" [innerHTML]=\"options.loadingLabel | htmlSanitize\"></div>\r\n <div *ngIf=\"dataItem.Label\" [innerHTML]=\"dataItem.Label | htmlSanitize\"></div>\r\n </div>\r\n </div>\r\n <app-context-menu *ngIf=\"data.ContextMenuSettings\" [data]=\"data\" [group]=\"group\" [form]=\"form\" [target]=\"virtualscrollcontent\" [selectedData]=\"dataItem\"></app-context-menu>\r\n </ng-container>\r\n <app-zformcontrol *ngFor=\"let field of footerFields\" [field]=\"field\" [containerField]=\"data\" [group]=\"group\"\r\n [form]=\"form\" [style]=\"componentProperties.containerStyle.style3\" class=\"e1tag-container-style3\">\r\n </app-zformcontrol>\r\n </cdk-virtual-scroll-viewport>\r\n</div>\r\n", styles: [".virtual-scroll-viewport{height:500px}.virtual-scroll-viewport .virtual-scroll-groupby{background:rgba(var(--ion-color-secondary-rgb),.1);font-weight:500;padding:12px 0 4px 12px;margin:1px}.virtual-scroll-viewport .virtual-scroll-groupby.groupby-collapsible{cursor:pointer;display:grid;grid-template-columns:20px auto}.virtual-scroll-viewport .virtual-scroll-groupby.groupby-collapsible:hover{background:rgba(var(--ion-color-secondary-rgb),.05)}.virtual-scroll-viewport .virtual-scroll-groupby>.virtual-scroll-groupby-arrow-icon{width:fit-content}.virtual-scroll-viewport .virtual-scroll-dataitem.groupby-value-expand{transform:translateY(-10%);opacity:.2}.virtual-scroll-dataitem.virtual-scroll-item-selected{background:var(--ion-color-primary-background)}\n"], components: [{ type: i3.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { type: i4.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i5.ContextMenuComponent, selector: "app-context-menu", inputs: ["target", "selectedData"] }, { type: i6.ZformcontrolComponent, selector: "app-zformcontrol", inputs: ["field", "group", "form", "containerField"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i8.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i3.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i3.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "htmlSanitize": i9.HtmlSanitizePipe }, animations: [
236
- collapseAnimation,
237
- rotateAnimation
238
- ] });
239
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: VirtualScrollComponent, decorators: [{
240
- type: Component,
241
- args: [{ selector: "app-virtual-scroll", animations: [
242
- collapseAnimation,
243
- rotateAnimation
244
- ], template: "<div\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n class=\"container e1tag-container-style\" [style]=\"componentProperties.containerStyle.style\"\r\n [ngClass]=\"(data.ComponentStyleType || '') + ' ' + (data.Class || '')\">\r\n <cdk-virtual-scroll-viewport\r\n [itemSize]=\"options.itemSize\"\r\n [style]=\"componentProperties.containerStyle.style1\"\r\n class=\"virtual-scroll-viewport e1tag-container-style1\"\r\n [minBufferPx]=\"options.minBufferPx\"\r\n [maxBufferPx]=\"options.maxBufferPx\">\r\n <ng-container *cdkVirtualFor=\"let dataItem of dataItems; let i = index\">\r\n <div #virtualscrollcontent>\r\n <div class=\"virtual-scroll-groupby e1tag-container-style4\" [style]=\"componentProperties.containerStyle.style4\"\r\n *ngIf=\"options.isGroupByEnabled && options.groupBy && (!dataItems[i-1] || dataItem[options.groupBy] !== dataItems[i-1][options.groupBy])\"\r\n (click)=\"groupByOnClick(dataItem[options.groupBy])\" [class.groupby-collapsible]=\"options.isGroupByCollapsible\">\r\n <fa-icon class=\"virtual-scroll-groupby-arrow-icon e1tag-container-style5\"\r\n [style]=\"componentProperties.containerStyle.style5\" *ngIf=\"!!options.isGroupByCollapsible\"\r\n [icon]=\"getFontAwesome('caret-down', fontAweSomeService)\"\r\n [@rotateAnimation]=\"{value: collapsedGroupBy.includes(dataItem[options.groupBy]) ? 'rotate' : 'default', params: {degree: -90}}\">\r\n </fa-icon>\r\n <span class=\"virtual-scroll-groupby-label e1tag-container-style6\"\r\n [style]=\"componentProperties.containerStyle.style6\">\r\n {{options.groupByLabelTemplate ? getGroupByLabelTemplate(dataItem, options) : dataItem[options.groupBy]}}\r\n </span>\r\n </div>\r\n <div *ngIf=\"!options.isGroupByEnabled\" [style.height.px]=\"options.itemSize\"\r\n [style.min-height.px]=\"options.itemSize\" [style.max-height.px]=\"options.itemSize\"\r\n [style]=\"componentProperties.containerStyle.style2\" class=\"e1tag-container-style2 virtual-scroll-dataitem\"\r\n (click)=\"onClick($event, dataItem)\" [id]=\"data.Name + '_' + dataItem?.Value?.Id || ''\"\r\n [class.virtual-scroll-item-selected]=\"!!dataItem.IsSelected\">\r\n <div *ngIf=\"!dataItem\" [innerHTML]=\"options.loadingLabel | htmlSanitize\"></div>\r\n <div *ngIf=\"dataItem.Label\" [innerHTML]=\"dataItem.Label | htmlSanitize\"></div>\r\n </div>\r\n <div *ngIf=\"options.isGroupByEnabled\" [style.height.px]=\"options.itemSize\"\r\n [style.min-height.px]=\"options.itemSize\" [style.max-height.px]=\"options.itemSize\"\r\n [style]=\"componentProperties.containerStyle.style2\" class=\"e1tag-container-style2 virtual-scroll-dataitem\"\r\n (click)=\"onClick($event, dataItem)\" [id]=\"data.Name + '_' + dataItem?.Value?.Id || ''\"\r\n [@collapseAnimation]=\"{value: !!options.groupBy && collapsedGroupBy.includes(dataItem[options.groupBy]) ? 'collapse' : 'default'}\"\r\n [class.groupby-value-expand]=\"groupByValueToExpand == (dataItem[options.groupBy])\"\r\n [class.virtual-scroll-item-selected]=\"!!dataItem.IsSelected\">\r\n <div *ngIf=\"!dataItem\" [innerHTML]=\"options.loadingLabel | htmlSanitize\"></div>\r\n <div *ngIf=\"dataItem.Label\" [innerHTML]=\"dataItem.Label | htmlSanitize\"></div>\r\n </div>\r\n </div>\r\n <app-context-menu *ngIf=\"data.ContextMenuSettings\" [data]=\"data\" [group]=\"group\" [form]=\"form\" [target]=\"virtualscrollcontent\" [selectedData]=\"dataItem\"></app-context-menu>\r\n </ng-container>\r\n <app-zformcontrol *ngFor=\"let field of footerFields\" [field]=\"field\" [containerField]=\"data\" [group]=\"group\"\r\n [form]=\"form\" [style]=\"componentProperties.containerStyle.style3\" class=\"e1tag-container-style3\">\r\n </app-zformcontrol>\r\n </cdk-virtual-scroll-viewport>\r\n</div>\r\n", styles: [".virtual-scroll-viewport{height:500px}.virtual-scroll-viewport .virtual-scroll-groupby{background:rgba(var(--ion-color-secondary-rgb),.1);font-weight:500;padding:12px 0 4px 12px;margin:1px}.virtual-scroll-viewport .virtual-scroll-groupby.groupby-collapsible{cursor:pointer;display:grid;grid-template-columns:20px auto}.virtual-scroll-viewport .virtual-scroll-groupby.groupby-collapsible:hover{background:rgba(var(--ion-color-secondary-rgb),.05)}.virtual-scroll-viewport .virtual-scroll-groupby>.virtual-scroll-groupby-arrow-icon{width:fit-content}.virtual-scroll-viewport .virtual-scroll-dataitem.groupby-value-expand{transform:translateY(-10%);opacity:.2}.virtual-scroll-dataitem.virtual-scroll-item-selected{background:var(--ion-color-primary-background)}\n"] }]
245
- }], ctorParameters: function () { return [{ type: i1.ZComponentService }, { type: i2.FontAweSomeService }]; }, propDecorators: { viewPort: [{
246
- type: ViewChild,
247
- args: [CdkVirtualScrollViewport]
248
- }] } });
249
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbC1zY3JvbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvdmlydHVhbC1zY3JvbGwvdmlydHVhbC1zY3JvbGwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvdmlydHVhbC1zY3JvbGwvdmlydHVhbC1zY3JvbGwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELDZCQUE2QjtBQUU3Qiw4QkFBOEI7QUFFOUIsMkNBQTJDO0FBQzNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRWhGLE9BQU8sRUFBc0UsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2SCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRSxPQUFPLEVBQWMsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7Ozs7O0FBWXhGLDBHQUEwRztBQUMxRyw0R0FBNEc7QUFFNUcsTUFBTSxPQUFPLHNCQUF1QixTQUFRLGtCQUFrQjtJQVk1RCxZQUNFLGdCQUFtQyxFQUM1QixrQkFBc0M7UUFFN0MsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFGakIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQVp4QyxxQkFBZ0IsR0FBRyxFQUFFLENBQUMsQ0FBQyxrQ0FBa0M7UUFDekQseUJBQW9CLEdBQUcs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SSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFO2dCQUMvQyxLQUFLLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7b0JBQy9CLEVBQUUsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO2lCQUN2QjthQUNGO1lBQ0QsUUFBUSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUM7U0FDbkM7UUFFRCxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNqQyxDQUFDOzttSEE1UFUsc0JBQXNCO3VHQUF0QixzQkFBc0Isb0dBQ3RCLHdCQUF3Qix1RUM3QnJDLDZnSUFtREEsMC9FRGhDYztRQUNWLGlCQUFpQjtRQUNqQixlQUFlO0tBQ2hCOzJGQU1VLHNCQUFzQjtrQkFibEMsU0FBUzsrQkFDRSxvQkFBb0IsY0FHbEI7d0JBQ1YsaUJBQWlCO3dCQUNqQixlQUFlO3FCQUNoQjt5SUFPb0MsUUFBUTtzQkFBNUMsU0FBUzt1QkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBDb250YWluZXJGaWVsZEJhc2UgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9jb250YWluZXJmaWVsZGJhc2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFpDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL3pjb21wb25lbnQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBEYXRhU2V0UmVzdWx0LCBGb250QXdlU29tZVNlcnZpY2UsIFZpcnR1YWxTY3JvbGxPcHRpb24sIFpDb21wb25lbnQsIFpDb21wb25lbnRIZWxwZXIgfSBmcm9tIFwibW1oZ2xvYmFsLXpjb3JlXCI7XHJcbmltcG9ydCB7IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCB9IGZyb20gXCJAYW5ndWxhci9jZGsvc2Nyb2xsaW5nXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIGF1ZGl0VGltZSwgZGVsYXksIGZvcmtKb2luLCBvZiwgdGFwIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgY29sbGFwc2VBbmltYXRpb24sIHJvdGF0ZUFuaW1hdGlvbiB9IGZyb20gXCIuLi9hbmltYXRpb25zL2NvbXBvbmVudC1hbmltYXRpb25zXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJhcHAtdmlydHVhbC1zY3JvbGxcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3ZpcnR1YWwtc2Nyb2xsLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL3ZpcnR1YWwtc2Nyb2xsLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIGNvbGxhcHNlQW5pbWF0aW9uLFxyXG4gICAgcm90YXRlQW5pbWF0aW9uXHJcbiAgXVxyXG59KVxyXG5cclxuLy8gQXBwcm9hY2ggMTogVG90YWwgQ291bnQgaXMga25vd24sIGdldCBuZXh0IHBhZ2UgdXBvbiBzY3JvbGwuIChXaWxsIG9ubHkgaGF2ZSBtdWx0aXBsZSBwYWdlcyAvIHBhZ2VhYmxlKVxyXG4vLyBBcHByb2FjaCAyOiBUb3RhbCBDb3VudCBpcyBub3Qga25vd24sIGFwcGVuZCBtb3JlIGRhdGEgYXQgcnVudGltZS4gKFdpbGwgb25seSBoYXZlIDEgcGFnZSAvIG5vdCBwYWdlYWJsZSlcclxuXHJcbmV4cG9ydCBjbGFzcyBWaXJ0dWFsU2Nyb2xsQ29tcG9uZW50IGV4dGVuZHMgQ29udGFpbmVyRmllbGRCYXNlIGltcGxlbWVudHMgWkNvbXBvbmVudCwgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCkgdmlld1BvcnQ6IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydDtcclxuICBwdWJsaWMgY29sbGFwc2VkR3JvdXBCeSA9IFtdOyAvLyBVc2VkIHRvIGRlZmluZSBhbmltYXRpb24gc3RhdHVzXHJcbiAgcHVibGljIGdyb3VwQnlWYWx1ZVRvRXhwYW5kID0gJyc7ICAvLyBVc2VkIHRvIGRlZmluZSBhbmltYXRpb24gc3RhdHVzXHJcbiAgcHVibGljIGNvbGxhcHNlZEdyb3VwQnlfRmlyc3ROb2RlSW5kZXhMaXN0ID0gbmV3IEFycmF5PG51bWJlcj4oKTsgLy8gV2hlbiBjb2xsYXBzZSwgbmVlZCB0byByZXRhaW4gdGhlIGZpcnN0IG5vZGUgaW4gdGhlIGxpc3Qgc28gdGhhdCB0aGUgZ3JvdXAgYnkgdGl0bGUgd2lsbCBub3QgYmUgaGlkZGVuXHJcbiAgcHJpdmF0ZSBmdWxsRGF0YUl0ZW1zID0gW107XHJcbiAgcHVibGljIGRhdGFJdGVtczogQXJyYXk8YW55PiA9IFtdO1xyXG4gIHB1YmxpYyBwYWdlU2l6ZSA9IDUwO1xyXG4gIHB1YmxpYyBwYWdlRmV0Y2hlZCA9IFtdO1xyXG4gIHB1YmxpYyBvcHRpb25zOiBWaXJ0dWFsU2Nyb2xsT3B0aW9uO1xyXG4gIHB1YmxpYyBmb290ZXJGaWVsZHMgPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBjb21wb25lbnRTZXJ2aWNlOiBaQ29tcG9uZW50U2VydmljZSxcclxuICAgIHB1YmxpYyBmb250QXdlU29tZVNlcnZpY2U6IEZvbnRBd2VTb21lU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoY29tcG9uZW50U2VydmljZSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc2V0dXBDb21wb25lbnQoKTtcclxuICAgIHRoaXMuc2V0dXBEYXRhSXRlbXMoKTtcclxuICAgIHRoaXMuc2V0dXBGb290ZXIoKTtcclxuICAgIHN1cGVyLmluaXRDb21wb25lbnQoKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuY29tcG9uZW50U2VydmljZS5kZWNyZW1lbnRDb21wb25lbnRDb3VudGVyRm9yRmllbGQodGhpcy5kYXRhKTtcclxuICAgIHRoaXMudmlld1BvcnQuc2Nyb2xsZWRJbmRleENoYW5nZS5waXBlKFxyXG4gICAgICBhdWRpdFRpbWUodGhpcy5kYXRhLlNjcm9sbEluZGV4Q2hhbmdlVGltZURlbGF5IHx8IDMwMCksXHJcbiAgICAgIHRhcCgoY3VyckluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICB0aGlzLnBvcHVsYXRlTGlzdERhdGEoY3VyckluZGV4KTtcclxuICAgICAgfSlcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2Nyb2xsVG9Ub3AoKSB7XHJcbiAgICBpZiAodGhpcy52aWV3UG9ydCkge1xyXG4gICAgICB0aGlzLnZpZXdQb3J0LnNjcm9sbFRvSW5kZXgoMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldHVwQ29tcG9uZW50KCkge1xyXG4gICAgdGhpcy5jb2xsYXBzZWRHcm91cEJ5ID0gW107XHJcbiAgICBpZiAodGhpcy5kYXRhLk9wdGlvbnMpIHtcclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmRhdGEuT3B0aW9ucyA9PT0gJ3N0cmluZycgJiYgdGhpcy5kYXRhLk9wdGlvbnMuc3RhcnRzV2l0aCgnZ3JvdXAuJykpIHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUodGhpcy5kYXRhLk9wdGlvbnMsIHRoaXMuZ3JvdXApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuZGF0YS5PcHRpb25zO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnBhZ2VTaXplID0gdGhpcy5vcHRpb25zLnBhZ2VTaXplID8/IDUwO1xyXG4gICAgICB0aGlzLm9wdGlvbnMubG9hZGluZ0xhYmVsID0gdGhpcy5vcHRpb25zLmxvYWRpbmdMYWJlbCA/PyAnPGRpdj5Mb2FkaW5nPC9kaXY+JztcclxuICAgICAgdGhpcy5vcHRpb25zLml0ZW1TaXplID0gdGhpcy5vcHRpb25zLml0ZW1TaXplID8/IDUwO1xyXG4gICAgICB0aGlzLm9wdGlvbnMubWluQnVmZmVyUHggPSB0aGlzLm9wdGlvbnMubWluQnVmZmVyUHggPz8gKHRoaXMub3B0aW9ucy5wYWdlU2l6ZSAqIHRoaXMub3B0aW9ucy5pdGVtU2l6ZSk7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5tYXhCdWZmZXJQeCA9IHRoaXMub3B0aW9ucy5tYXhCdWZmZXJQeCA/PyAodGhpcy5vcHRpb25zLnBhZ2VTaXplICogdGhpcy5vcHRpb25zLml0ZW1TaXplKTtcclxuICAgICAgdGhpcy5vcHRpb25zLmlzR3JvdXBCeUVuYWJsZWQgPSB0aGlzLm9wdGlvbnMuaXNHcm91cEJ5RW5hYmxlZCA/PyAhIXRoaXMub3B0aW9ucy5ncm91cEJ5O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFwcGVuZERhdGEoZGF0YUl0ZW1zOiBBcnJheTxhbnk+KSB7XHJcbiAgICB0aGlzLmZ1bGxEYXRhSXRlbXMgPSB0aGlzLmZ1bGxEYXRhSXRlbXMuY29uY2F0KGRhdGFJdGVtcyk7XHJcbiAgICB0aGlzLnBhZ2VTaXplID0gdGhpcy5mdWxsRGF0YUl0ZW1zLmxlbmd0aDtcclxuICAgIHRoaXMuY29tcHV0ZURhdGFJdGVtcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXR1cERhdGFJdGVtcygpIHtcclxuICAgIHRoaXMucGFnZUZldGNoZWQgPSBbXTtcclxuICAgIGlmICh0aGlzLmRhdGEuRGF0YVNldFJlc3VsdCkge1xyXG4gICAgICBsZXQgZGF0YVNldFJlc3VsdCA9IHRoaXMuZGF0YS5EYXRhU2V0UmVzdWx0O1xyXG4gICAgICBpZiAodHlwZW9mIGRhdGFTZXRSZXN1bHQgPT0gJ3N0cmluZycgJiYgZGF0YVNldFJlc3VsdC5zdGFydHNXaXRoKCdncm91cC4nKSkge1xyXG4gICAgICAgIGRhdGFTZXRSZXN1bHQgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUoZGF0YVNldFJlc3VsdCwgdGhpcy5ncm91cCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZXREYXRhKGRhdGFTZXRSZXN1bHQgYXMgRGF0YVNldFJlc3VsdCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5kYXRhSXRlbXMgPSBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXREYXRhKGRhdGFTZXRSZXN1bHQ6IERhdGFTZXRSZXN1bHQpIHtcclxuICAgIGlmICghZGF0YVNldFJlc3VsdCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5wYWdlRmV0Y2hlZCA9IFtdO1xyXG4gICAgaWYgKGRhdGFTZXRSZXN1bHQuZGF0YVNldCAmJiBBcnJheS5pc0FycmF5KGRhdGFTZXRSZXN1bHQuZGF0YVNldCkgJiYgZGF0YVNldFJlc3VsdC5kYXRhU2V0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgY250ID0gZGF0YVNldFJlc3VsdC50b3RhbENvdW50IC0gZGF0YVNldFJlc3VsdC5kYXRhU2V0Lmxlbmd0aDtcclxuICAgICAgaWYgKGNudCA8IDApIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdEYXRhSXRlbXMgY2Fubm90IGJlIG1vcmUgdGhhbiB0b3RhbCBjb3VudC4nKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZGF0YUl0ZW1zID0gZGF0YVNldFJlc3VsdC5kYXRhU2V0LmNvbmNhdChBcnJheShjbnQpLmZpbGwoZmFsc2UpKTtcclxuICAgICAgY29uc3QgcGFnZU5vVG9NYXJrQXNGZXRjaCA9IE1hdGguY2VpbChkYXRhU2V0UmVzdWx0LmRhdGFTZXQubGVuZ3RoIC8gdGhpcy5wYWdlU2l6ZSkgLSAxO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBwYWdlTm9Ub01hcmtBc0ZldGNoOyBpKyspIHtcclxuICAgICAgICB0aGlzLnBhZ2VGZXRjaGVkLnB1c2goaSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGRhdGFTZXRSZXN1bHQudG90YWxDb3VudCkge1xyXG4gICAgICB0aGlzLmRhdGFJdGVtcyA9IEFycmF5KGRhdGFTZXRSZXN1bHQudG90YWxDb3VudCkuZmlsbChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5kYXRhSXRlbXMgPSBbXTtcclxuICAgIH1cclxuICAgIHRoaXMuZnVsbERhdGFJdGVtcyA9IHRoaXMuZGF0YUl0ZW1zO1xyXG4gICAgdGhpcy5jb21wdXRlRGF0YUl0ZW1zKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBvcHVsYXRlTGlzdERhdGEoY3VyckluZGV4OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IHJlbmRlclJhbmdlID0gdGhpcy52aWV3UG9ydC5nZXRSZW5kZXJlZFJhbmdlKCk7XHJcbiAgICBpZiAocmVuZGVyUmFuZ2Uuc3RhcnQgPT0gcmVuZGVyUmFuZ2UuZW5kICYmIHJlbmRlclJhbmdlLmVuZCA9PSAwKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzdGFydFBhZ2VObyA9IE1hdGguZmxvb3IocmVuZGVyUmFuZ2Uuc3RhcnQgLyB0aGlzLnBhZ2VTaXplKTtcclxuICAgIGNvbnN0IGVuZFBhZ2VObyA9IE1hdGguZmxvb3IoKHJlbmRlclJhbmdlLmVuZCAtIDEpIC8gdGhpcy5wYWdlU2l6ZSk7XHJcblxyXG4gICAgY29uc3Qgb2JzID0gbmV3IEFycmF5PE9ic2VydmFibGU8YW55Pj4oKTtcclxuICAgIGZvciAobGV0IGkgPSBzdGFydFBhZ2VObzsgaSA8PSBlbmRQYWdlTm87IGkrKykge1xyXG4gICAgICBpZiAoIXRoaXMucGFnZUZldGNoZWQuaW5jbHVkZXMoaSkpIHtcclxuICAgICAgICB0aGlzLnBhZ2VGZXRjaGVkLnB1c2goaSk7XHJcbiAgICAgICAgb2JzLnB1c2goXHJcbiAgICAgICAgICB0aGlzLmZldGNoRGF0YShpKS5waXBlKHRhcCgoW2RhdGEsIHBhZ2VOb10pID0+IHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVEYXRhQnlJbmRleChwYWdlTm8gKiB0aGlzLnBhZ2VTaXplLCBkYXRhKTtcclxuICAgICAgICAgIH0pKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAob2JzLmxlbmd0aCA+IDApIHtcclxuICAgICAgZm9ya0pvaW4ob2JzKS5waXBlKHRhcChyZXMgPT4ge1xyXG4gICAgICAgIHRoaXMudXBkYXRlVmlld1BvcnREYXRhKCk7XHJcbiAgICAgIH0pKS5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmV0Y2hEYXRhKHBhZ2VObyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBpZiAodGhpcy5kYXRhLk9uU2Nyb2xsICYmIHR5cGVvZiB0aGlzLmRhdGEuT25TY3JvbGwgPT0gJ3N0cmluZycgJiYgdGhpcy5kYXRhLk9uU2Nyb2xsLnN0YXJ0c1dpdGgoJ2dyb3VwLicpKSB7XHJcbiAgICAgIGNvbnN0IG9uU2Nyb2xsRXZlbnQgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgdGhpcy5kYXRhLk9uU2Nyb2xsKTtcclxuICAgICAgaWYgKHR5cGVvZiBvblNjcm9sbEV2ZW50ID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgY29uc3QgY2FsbEZ1bmMgPSBvblNjcm9sbEV2ZW50LmJpbmQodGhpcy5ncm91cC5jdHJsU2NvcGUpO1xyXG4gICAgICAgIHJldHVybiBmb3JrSm9pbihbY2FsbEZ1bmModGhpcy5ncm91cCwgeyBwYWdlTm86IHBhZ2VObywgcGFnZVNpemU6IHRoaXMucGFnZVNpemUgfSksIG9mKHBhZ2VObyldIGFzIEFycmF5PE9ic2VydmFibGU8YW55Pj4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG9mKGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRGF0YUJ5SW5kZXgoc3RhcnRpbmdJbmRleDogbnVtYmVyLCBkYXRhOiBBcnJheTxhbnk+KSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy5kYXRhSXRlbXNbc3RhcnRpbmdJbmRleCArIGldID0gZGF0YVtpXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlVmlld1BvcnREYXRhKCkge1xyXG4gICAgdGhpcy5kYXRhSXRlbXMgPSBbLi4udGhpcy5kYXRhSXRlbXNdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldHVwRm9vdGVyKCkge1xyXG4gICAgaWYgKHRoaXMuZGF0YS5WYWx1ZSAmJiBBcnJheS5pc0FycmF5KHRoaXMuZGF0YS5WYWx1ZSkpIHtcclxuICAgICAgdGhpcy5mb290ZXJGaWVsZHMgPSB0aGlzLmRhdGEuVmFsdWUuZmlsdGVyKHggPT4geC5TZWN0aW9uID09PSAnZm9vdGVyJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Q29tcG9uZW50T3B0aW9ucygpOiBWaXJ0dWFsU2Nyb2xsT3B0aW9uIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnM7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gR3JvdXAgQnlcclxuICBwdWJsaWMgZ2V0R3JvdXBCeUxhYmVsVGVtcGxhdGUoZGF0YUl0ZW0sIG9wdGlvbnMpOiBzdHJpbmcge1xyXG4gICAgaWYgKG9wdGlvbnMuZ3JvdXBCeUxhYmVsVGVtcGxhdGUgJiYgdHlwZW9mIG9wdGlvbnMuZ3JvdXBCeUxhYmVsVGVtcGxhdGUgPT0gJ3N0cmluZycpIHtcclxuICAgICAgaWYgKG9wdGlvbnMuZ3JvdXBCeUxhYmVsVGVtcGxhdGUuc3RhcnRzV2l0aCgnZ3JvdXAuJykpIHtcclxuICAgICAgICBjb25zdCBnZXRUZW1wbGF0ZUZ1bmMgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgb3B0aW9ucy5ncm91cEJ5TGFiZWxUZW1wbGF0ZSk7XHJcblxyXG4gICAgICAgIGlmIChnZXRUZW1wbGF0ZUZ1bmMpIHtcclxuICAgICAgICAgIHJldHVybiBnZXRUZW1wbGF0ZUZ1bmMoe1xyXG4gICAgICAgICAgICBkYXRhSXRlbSxcclxuICAgICAgICAgICAgb3B0aW9ucyxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICByZXR1cm4gZGF0YUl0ZW1bb3B0aW9ucy5ncm91cEJ5TGFiZWxUZW1wbGF0ZV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBncm91cEJ5T25DbGljayhncm91cEJ5VmFsdWU6IHN0cmluZykge1xyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuaXNHcm91cEJ5Q29sbGFwc2libGUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHVzZSBjb2xsYXBzZSAvIGV4cGFuZCB0byBjb250cm9sIGFuaW1hdGlvbiBzZXF1ZW5jZVxyXG4gICAgY29uc3QgaXNUb0NvbGxhcHNlID0gIXRoaXMuY29sbGFwc2VkR3JvdXBCeS5pbmNsdWRlcyhncm91cEJ5VmFsdWUpO1xyXG5cclxuICAgIGNvbnN0IGZpcnN0Tm9kZUluZGV4ID0gdGhpcy5mdWxsRGF0YUl0ZW1zLm1hcCh4ID0+IHhbdGhpcy5vcHRpb25zLmdyb3VwQnldKS5pbmRleE9mKGdyb3VwQnlWYWx1ZSk7XHJcbiAgICBpZiAoaXNUb0NvbGxhcHNlKSB7XHJcbiAgICAgIC8vIHRvIGNvbGxhcHNlIChGb3IgYW5pbWF0aW9uOiBDaGFuZ2Ugc3RhdHVzLCB0aGVuIGFwcGVuZCBkYXRhKVxyXG4gICAgICB0aGlzLmNvbGxhcHNlZEdyb3VwQnkucHVzaChncm91cEJ5VmFsdWUpO1xyXG4gICAgICB0aGlzLmNvbGxhcHNlZEdyb3VwQnlfRmlyc3ROb2RlSW5kZXhMaXN0LnB1c2goZmlyc3ROb2RlSW5kZXgpO1xyXG4gICAgICBvZih7fSkucGlwZShkZWxheSg0MDApLFxyXG4gICAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNvbXB1dGVEYXRhSXRlbXMoKTtcclxuICAgICAgICB9KVxyXG4gICAgICApLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIC8vIHRvIGV4cGFuZCAoRm9yIGFuaW1hdGlvbjogQXBwZW5kIGRhdGEsIHRoZW4gY2hhbmdlIHN0YXR1cylcclxuICAgICAgdGhpcy5jb2xsYXBzZWRHcm91cEJ5X0ZpcnN0Tm9kZUluZGV4TGlzdCA9IHRoaXMuY29sbGFwc2VkR3JvdXBCeV9GaXJzdE5vZGVJbmRleExpc3QuZmlsdGVyKHggPT4geCAhPSBmaXJzdE5vZGVJbmRleCk7XHJcbiAgICAgIGNvbnN0IHRlbXBDb2xsYXBzZWRHcm91cEJ5ID0gdGhpcy5jb2xsYXBzZWRHcm91cEJ5LmZpbHRlcih4ID0+IHggIT09IGdyb3VwQnlWYWx1ZSk7XHJcbiAgICAgIHRoaXMuZGF0YUl0ZW1zID0gdGhpcy5mdWxsRGF0YUl0ZW1zLmZpbHRlcigoeCwgaW5kZXgpID0+ICF0ZW1wQ29sbGFwc2VkR3JvdXBCeS5pbmNsdWRlcyh4W3RoaXMub3B0aW9ucy5ncm91cEJ5XSkgfHwgdGhpcy5jb2xsYXBzZWRHcm91cEJ5X0ZpcnN0Tm9kZUluZGV4TGlzdC5pbmNsdWRlcyhpbmRleCkpO1xyXG4gICAgICB0aGlzLmdyb3VwQnlWYWx1ZVRvRXhwYW5kID0gZ3JvdXBCeVZhbHVlO1xyXG4gICAgICBvZih7fSkucGlwZShkZWxheSgwKSxcclxuICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb2xsYXBzZWRHcm91cEJ5ID0gdGVtcENvbGxhcHNlZEdyb3VwQnk7XHJcbiAgICAgICAgICB0aGlzLmdyb3VwQnlWYWx1ZVRvRXhwYW5kID0gZ3JvdXBCeVZhbHVlO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICkuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbXB1dGVEYXRhSXRlbXMoKSB7XHJcbiAgICB0aGlzLmRhdGFJdGVtcyA9IHRoaXMuZnVsbERhdGFJdGVtcy5maWx0ZXIoKHgsIGluZGV4KSA9PiAhdGhpcy5jb2xsYXBzZWRHcm91cEJ5LmluY2x1ZGVzKHhbdGhpcy5vcHRpb25zLmdyb3VwQnldKSB8fCB0aGlzLmNvbGxhcHNlZEdyb3VwQnlfRmlyc3ROb2RlSW5kZXhMaXN0LmluY2x1ZGVzKGluZGV4KSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZXhwYW5kQWxsKCkge1xyXG4gICAgdGhpcy5ncm91cEJ5VmFsdWVUb0V4cGFuZCA9ICcnO1xyXG4gICAgdGhpcy5jb2xsYXBzZWRHcm91cEJ5ID0gW107XHJcbiAgICB0aGlzLmNvbGxhcHNlZEdyb3VwQnlfRmlyc3ROb2RlSW5kZXhMaXN0ID0gW107XHJcbiAgICB0aGlzLmNvbXB1dGVEYXRhSXRlbXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBleHBhbmRCeUdyb3VwQnlWYWx1ZXMoZ3JvdXBCeVZhbHVlOiBBcnJheTxzdHJpbmc+KSB7XHJcbiAgICB0aGlzLmNvbGxhcHNlZEdyb3VwQnkgPSB0aGlzLmNvbGxhcHNlZEdyb3VwQnkuZmlsdGVyKHggPT4gIWdyb3VwQnlWYWx1ZS5pbmNsdWRlcyh4KSk7XHJcbiAgICB0aGlzLmNvbXB1dGVEYXRhSXRlbXMoKTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBTZWxlY3Rpb25cclxuICBwdWJsaWMgb3ZlcnJpZGUgb25DbGljayhldmVudDogYW55LCBkYXRhSXRlbTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoISF0aGlzLmRhdGEuU2VsZWN0T3B0aW9ucyB8fCB0cnVlKSB7XHJcbiAgICAgIGNvbnN0IHRhcmdldFZhbHVlID0gIWRhdGFJdGVtLklzU2VsZWN0ZWQ7XHJcbiAgICAgIGlmICh0aGlzLmRhdGEuU2VsZWN0T3B0aW9ucyA9PSAnc2luZ2xlJyB8fCB0cnVlKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBkdCBvZiB0aGlzLmRhdGFJdGVtcykge1xyXG4gICAgICAgICAgZHQuSXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBkYXRhSXRlbS5Jc1NlbGVjdGVkID0gdGFyZ2V0VmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgc3VwZXIub25DbGljayhldmVudCwgZGF0YUl0ZW0pO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxufVxyXG4iLCI8ZGl2XHJcbiAgKm5nSWY9XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGVGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZSlcIlxyXG4gIGNsYXNzPVwiY29udGFpbmVyIGUxdGFnLWNvbnRhaW5lci1zdHlsZVwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLmNvbnRhaW5lclN0eWxlLnN0eWxlXCJcclxuICBbbmdDbGFzc109XCIoZGF0YS5Db21wb25lbnRTdHlsZVR5cGUgfHwgJycpICsgJyAnICsgKGRhdGEuQ2xhc3MgfHwgJycpXCI+XHJcbiAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydFxyXG4gICAgICAgIFtpdGVtU2l6ZV09XCJvcHRpb25zLml0ZW1TaXplXCJcclxuICAgICAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5jb250YWluZXJTdHlsZS5zdHlsZTFcIlxyXG4gICAgICAgIGNsYXNzPVwidmlydHVhbC1zY3JvbGwtdmlld3BvcnQgZTF0YWctY29udGFpbmVyLXN0eWxlMVwiXHJcbiAgICAgICAgW21pbkJ1ZmZlclB4XT1cIm9wdGlvbnMubWluQnVmZmVyUHhcIlxyXG4gICAgICAgIFttYXhCdWZmZXJQeF09XCJvcHRpb25zLm1heEJ1ZmZlclB4XCI+XHJcbiAgICA8bmctY29udGFpbmVyICpjZGtWaXJ0dWFsRm9yPVwibGV0IGRhdGFJdGVtIG9mIGRhdGFJdGVtczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICA8ZGl2ICN2aXJ0dWFsc2Nyb2xsY29udGVudD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidmlydHVhbC1zY3JvbGwtZ3JvdXBieSBlMXRhZy1jb250YWluZXItc3R5bGU0XCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuY29udGFpbmVyU3R5bGUuc3R5bGU0XCJcclxuICAgICAgICAgICpuZ0lmPVwib3B0aW9ucy5pc0dyb3VwQnlFbmFibGVkICYmIG9wdGlvbnMuZ3JvdXBCeSAmJiAoIWRhdGFJdGVtc1tpLTFdIHx8IGRhdGFJdGVtW29wdGlvbnMuZ3JvdXBCeV0gIT09IGRhdGFJdGVtc1tpLTFdW29wdGlvbnMuZ3JvdXBCeV0pXCJcclxuICAgICAgICAgIChjbGljayk9XCJncm91cEJ5T25DbGljayhkYXRhSXRlbVtvcHRpb25zLmdyb3VwQnldKVwiIFtjbGFzcy5ncm91cGJ5LWNvbGxhcHNpYmxlXT1cIm9wdGlvbnMuaXNHcm91cEJ5Q29sbGFwc2libGVcIj5cclxuICAgICAgICAgIDxmYS1pY29uIGNsYXNzPVwidmlydHVhbC1zY3JvbGwtZ3JvdXBieS1hcnJvdy1pY29uIGUxdGFnLWNvbnRhaW5lci1zdHlsZTVcIlxyXG4gICAgICAgICAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5jb250YWluZXJTdHlsZS5zdHlsZTVcIiAqbmdJZj1cIiEhb3B0aW9ucy5pc0dyb3VwQnlDb2xsYXBzaWJsZVwiXHJcbiAgICAgICAgICAgIFtpY29uXT1cImdldEZvbnRBd2Vzb21lKCdjYXJldC1kb3duJywgZm9udEF3ZVNvbWVTZXJ2aWNlKVwiXHJcbiAgICAgICAgICAgIFtAcm90YXRlQW5pbWF0aW9uXT1cInt2YWx1ZTogY29sbGFwc2VkR3JvdXBCeS5pbmNsdWRlcyhkYXRhSXRlbVtvcHRpb25zLmdyb3VwQnldKSA/ICdyb3RhdGUnIDogJ2RlZmF1bHQnLCBwYXJhbXM6IHtkZWdyZWU6IC05MH19XCI+XHJcbiAgICAgICAgICA8L2ZhLWljb24+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpcnR1YWwtc2Nyb2xsLWdyb3VwYnktbGFiZWwgZTF0YWctY29udGFpbmVyLXN0eWxlNlwiXHJcbiAgICAgICAgICAgIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLmNvbnRhaW5lclN0eWxlLnN0eWxlNlwiPlxyXG4gICAgICAgICAgICB7e29wdGlvbnMuZ3JvdXBCeUxhYmVsVGVtcGxhdGUgPyBnZXRHcm91cEJ5TGFiZWxUZW1wbGF0ZShkYXRhSXRlbSwgb3B0aW9ucykgOiBkYXRhSXRlbVtvcHRpb25zLmdyb3VwQnldfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIW9wdGlvbnMuaXNHcm91cEJ5RW5hYmxlZFwiIFtzdHlsZS5oZWlnaHQucHhdPVwib3B0aW9ucy5pdGVtU2l6ZVwiXHJcbiAgICAgICAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJvcHRpb25zLml0ZW1TaXplXCIgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwib3B0aW9ucy5pdGVtU2l6ZVwiXHJcbiAgICAgICAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5jb250YWluZXJTdHlsZS5zdHlsZTJcIiBjbGFzcz1cImUxdGFnLWNvbnRhaW5lci1zdHlsZTIgdmlydHVhbC1zY3JvbGwtZGF0YWl0ZW1cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50LCBkYXRhSXRlbSlcIiBbaWRdPVwiZGF0YS5OYW1lICsgJ18nICsgZGF0YUl0ZW0/LlZhbHVlPy5JZCB8fCAnJ1wiXHJcbiAgICAgICAgICBbY2xhc3MudmlydHVhbC1zY3JvbGwtaXRlbS1zZWxlY3RlZF09XCIhIWRhdGFJdGVtLklzU2VsZWN0ZWRcIj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZGF0YUl0ZW1cIiBbaW5uZXJIVE1MXT1cIm9wdGlvbnMubG9hZGluZ0xhYmVsIHwgaHRtbFNhbml0aXplXCI+PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0YUl0ZW0uTGFiZWxcIiBbaW5uZXJIVE1MXT1cImRhdGFJdGVtLkxhYmVsIHwgaHRtbFNhbml0aXplXCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIm9wdGlvbnMuaXNHcm91cEJ5RW5hYmxlZFwiIFtzdHlsZS5oZWlnaHQucHhdPVwib3B0aW9ucy5pdGVtU2l6ZVwiXHJcbiAgICAgICAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJvcHRpb25zLml0ZW1TaXplXCIgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwib3B0aW9ucy5pdGVtU2l6ZVwiXHJcbiAgICAgICAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5jb250YWluZXJTdHlsZS5zdHlsZTJcIiBjbGFzcz1cImUxdGFnLWNvbnRhaW5lci1zdHlsZTIgdmlydHVhbC1zY3JvbGwtZGF0YWl0ZW1cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50LCBkYXRhSXRlbSlcIiBbaWRdPVwiZGF0YS5OYW1lICsgJ18nICsgZGF0YUl0ZW0/LlZhbHVlPy5JZCB8fCAnJ1wiXHJcbiAgICAgICAgICBbQGNvbGxhcHNlQW5pbWF0aW9uXT1cInt2YWx1ZTogISFvcHRpb25zLmdyb3VwQnkgJiYgY29sbGFwc2VkR3JvdXBCeS5pbmNsdWRlcyhkYXRhSXRlbVtvcHRpb25zLmdyb3VwQnldKSA/ICdjb2xsYXBzZScgOiAnZGVmYXVsdCd9XCJcclxuICAgICAgICAgIFtjbGFzcy5ncm91cGJ5LXZhbHVlLWV4cGFuZF09XCJncm91cEJ5VmFsdWVUb0V4cGFuZCA9PSAoZGF0YUl0ZW1bb3B0aW9ucy5ncm91cEJ5XSlcIlxyXG4gICAgICAgICAgW2NsYXNzLnZpcnR1YWwtc2Nyb2xsLWl0ZW0tc2VsZWN0ZWRdPVwiISFkYXRhSXRlbS5Jc1NlbGVjdGVkXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWRhdGFJdGVtXCIgW2lubmVySFRNTF09XCJvcHRpb25zLmxvYWRpbmdMYWJlbCB8IGh0bWxTYW5pdGl6ZVwiPjwvZGl2PlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImRhdGFJdGVtLkxhYmVsXCIgW2lubmVySFRNTF09XCJkYXRhSXRlbS5MYWJlbCB8IGh0bWxTYW5pdGl6ZVwiPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGFwcC1jb250ZXh0LW1lbnUgKm5nSWY9XCJkYXRhLkNvbnRleHRNZW51U2V0dGluZ3NcIiBbZGF0YV09XCJkYXRhXCIgW2dyb3VwXT1cImdyb3VwXCIgW2Zvcm1dPVwiZm9ybVwiIFt0YXJnZXRdPVwidmlydHVhbHNjcm9sbGNvbnRlbnRcIiBbc2VsZWN0ZWREYXRhXT1cImRhdGFJdGVtXCI+PC9hcHAtY29udGV4dC1tZW51PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8YXBwLXpmb3JtY29udHJvbCAqbmdGb3I9XCJsZXQgZmllbGQgb2YgZm9vdGVyRmllbGRzXCIgW2ZpZWxkXT1cImZpZWxkXCIgW2NvbnRhaW5lckZpZWxkXT1cImRhdGFcIiBbZ3JvdXBdPVwiZ3JvdXBcIlxyXG4gICAgICBbZm9ybV09XCJmb3JtXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuY29udGFpbmVyU3R5bGUuc3R5bGUzXCIgY2xhc3M9XCJlMXRhZy1jb250YWluZXItc3R5bGUzXCI+XHJcbiAgICA8L2FwcC16Zm9ybWNvbnRyb2w+XHJcbiAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XHJcbjwvZGl2PlxyXG4iXX0=