mmhglobal-dynamicform 1.2.3 → 1.3.2

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 (198) hide show
  1. package/README.md +14 -2
  2. package/esm2020/lib/directives/fieldelement.directive.mjs +16 -0
  3. package/esm2020/lib/directives/scrollbar.theme.directive.mjs +43 -0
  4. package/esm2020/lib/mmhglobal-dynamicform.module.mjs +464 -0
  5. package/esm2020/lib/services/main.service.mjs +752 -0
  6. package/esm2020/lib/services/zcomponent.debug.service.mjs +621 -0
  7. package/esm2020/lib/services/zcomponent.service.mjs +81 -0
  8. package/esm2020/lib/uiactionbutton/uiactionbutton.component.mjs +265 -0
  9. package/esm2020/lib/uiappmenucontent/uiappmenucontent.component.mjs +67 -0
  10. package/esm2020/lib/uicontent/uicontent.component.mjs +41 -0
  11. package/esm2020/lib/uiheader/uiheader.component.mjs +66 -0
  12. package/esm2020/lib/uimenubutton/uimenubutton.component.mjs +35 -0
  13. package/esm2020/lib/uimenucontent/uimenucontent.component.mjs +37 -0
  14. package/{esm2015/lib/uipage/uipage.component.js → esm2020/lib/uipage/uipage.component.mjs} +12 -13
  15. package/esm2020/lib/uivalidationmessage/uivalidationmessage.component.mjs +41 -0
  16. package/esm2020/lib/zbullet/zbullet.component.mjs +74 -0
  17. package/esm2020/lib/zbuttons/zbuttons.component.mjs +171 -0
  18. package/esm2020/lib/zcard/zcard.component.mjs +72 -0
  19. package/esm2020/lib/zchart/zchart.component.mjs +201 -0
  20. package/esm2020/lib/zcheckbox/zcheckbox.component.mjs +166 -0
  21. package/esm2020/lib/zchip/zchip.component.mjs +121 -0
  22. package/esm2020/lib/zcodeeditor/zcodeeditor.component.mjs +169 -0
  23. package/esm2020/lib/zcodeeditor/zcodeeditor.pipe.mjs +60 -0
  24. package/esm2020/lib/zdaterange/zdaterange.component.mjs +70 -0
  25. package/esm2020/lib/zdatetime/dateParser.pipe.mjs +30 -0
  26. package/esm2020/lib/zdatetime/zdatetime.component.mjs +285 -0
  27. package/esm2020/lib/zdiv/zdiv.component.mjs +50 -0
  28. package/esm2020/lib/zdiv/zdiv.pipe.mjs +31 -0
  29. package/esm2020/lib/zform/zform.component.mjs +147 -0
  30. package/esm2020/lib/zformcontrol/zformcontrol.component.mjs +49 -0
  31. package/esm2020/lib/zgauge/zgauge.component.mjs +148 -0
  32. package/esm2020/lib/zgrid/date-range-cell-filter.component.mjs +135 -0
  33. package/esm2020/lib/zgrid/zgrid.binding.directive.mjs +490 -0
  34. package/esm2020/lib/zgrid/zgrid.component.mjs +847 -0
  35. package/esm2020/lib/zgrid/zgrid.popup.anchor-target.directive.mjs +17 -0
  36. package/esm2020/lib/zimg/zimg.component.mjs +121 -0
  37. package/esm2020/lib/zkcard/zkcard.component.mjs +367 -0
  38. package/esm2020/lib/zlabel/zlabel.component.mjs +62 -0
  39. package/esm2020/lib/zmfb/zmfb.component.mjs +215 -0
  40. package/esm2020/lib/zmodal/zmodal-mobile.component.mjs +120 -0
  41. package/esm2020/lib/zmodal/zmodal.component.mjs +125 -0
  42. package/esm2020/lib/znumeric/znumeric.component.mjs +119 -0
  43. package/esm2020/lib/zpostselectinput/zpostselectinput.component.mjs +352 -0
  44. package/esm2020/lib/zquerybuilder/zquerybuilder.component.mjs +204 -0
  45. package/esm2020/lib/zreport/zreport.component.mjs +105 -0
  46. package/esm2020/lib/zreport/zreport.config.mjs +117 -0
  47. package/esm2020/lib/zscheduler/zscheduler.component.mjs +267 -0
  48. package/{esm2015/lib/zscheduler/zscheduler.toolbar.component.js → esm2020/lib/zscheduler/zscheduler.toolbar.component.mjs} +55 -19
  49. package/esm2020/lib/zselectmultiple/zselectmultiple.component.mjs +577 -0
  50. package/esm2020/lib/zselectmultiple/zselectmultiple.directive.mjs +35 -0
  51. package/esm2020/lib/ztab/ztab.component.mjs +187 -0
  52. package/esm2020/lib/ztab/ztab.pipe.mjs +26 -0
  53. package/esm2020/lib/ztext/ztext.component.mjs +297 -0
  54. package/esm2020/lib/ztextarea/ztextarea.component.mjs +109 -0
  55. package/esm2020/lib/ztexteditor/ztexteditor.component.mjs +57 -0
  56. package/esm2020/lib/ztree/ztree.component.mjs +380 -0
  57. package/esm2020/lib/ztreelist/ztreelist.component.mjs +544 -0
  58. package/esm2020/lib/ztrendcard/ztrendcard.component.mjs +92 -0
  59. package/esm2020/lib/zudf/zudf.component.mjs +205 -0
  60. package/esm2020/lib/zunknown/zunknown.component.mjs +20 -0
  61. package/esm2020/lib/zupload/zupload.component.mjs +359 -0
  62. package/esm2020/lib/zworkflowbuttons/zworkflowbuttons.component.mjs +216 -0
  63. package/esm2020/mmhglobal-dynamicform.mjs +5 -0
  64. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  65. package/fesm2015/mmhglobal-dynamicform.mjs +10790 -0
  66. package/fesm2015/mmhglobal-dynamicform.mjs.map +1 -0
  67. package/fesm2020/mmhglobal-dynamicform.mjs +10779 -0
  68. package/fesm2020/mmhglobal-dynamicform.mjs.map +1 -0
  69. package/lib/directives/fieldelement.directive.d.ts +3 -0
  70. package/lib/directives/scrollbar.theme.directive.d.ts +3 -0
  71. package/lib/mmhglobal-dynamicform.module.d.ts +92 -0
  72. package/lib/services/main.service.d.ts +3 -0
  73. package/lib/services/zcomponent.debug.service.d.ts +8 -5
  74. package/lib/services/zcomponent.service.d.ts +7 -2
  75. package/lib/uiactionbutton/uiactionbutton.component.d.ts +3 -0
  76. package/lib/uiappmenucontent/uiappmenucontent.component.d.ts +3 -0
  77. package/lib/uicontent/uicontent.component.d.ts +3 -0
  78. package/lib/uiheader/uiheader.component.d.ts +3 -0
  79. package/lib/uimenubutton/uimenubutton.component.d.ts +3 -0
  80. package/lib/uimenucontent/uimenucontent.component.d.ts +3 -0
  81. package/lib/uipage/uipage.component.d.ts +3 -0
  82. package/lib/uivalidationmessage/uivalidationmessage.component.d.ts +3 -0
  83. package/lib/zbullet/zbullet.component.d.ts +3 -0
  84. package/lib/zbuttons/zbuttons.component.d.ts +3 -0
  85. package/lib/zcard/zcard.component.d.ts +3 -0
  86. package/lib/zchart/zchart.component.d.ts +3 -0
  87. package/lib/zcheckbox/zcheckbox.component.d.ts +3 -0
  88. package/lib/zchip/zchip.component.d.ts +3 -0
  89. package/lib/zcodeeditor/zcodeeditor.component.d.ts +3 -0
  90. package/lib/zcodeeditor/zcodeeditor.pipe.d.ts +3 -0
  91. package/lib/zdaterange/zdaterange.component.d.ts +3 -0
  92. package/lib/zdatetime/dateParser.pipe.d.ts +3 -0
  93. package/lib/zdatetime/zdatetime.component.d.ts +3 -0
  94. package/lib/zdiv/zdiv.component.d.ts +3 -0
  95. package/lib/zdiv/zdiv.pipe.d.ts +3 -0
  96. package/lib/zform/zform.component.d.ts +3 -0
  97. package/lib/zformcontrol/zformcontrol.component.d.ts +3 -0
  98. package/lib/zgauge/zgauge.component.d.ts +3 -0
  99. package/lib/zgrid/date-range-cell-filter.component.d.ts +3 -0
  100. package/lib/zgrid/zgrid.binding.directive.d.ts +3 -0
  101. package/lib/zgrid/zgrid.component.d.ts +4 -1
  102. package/lib/zgrid/zgrid.popup.anchor-target.directive.d.ts +3 -0
  103. package/lib/zimg/zimg.component.d.ts +3 -0
  104. package/lib/zkcard/zkcard.component.d.ts +3 -0
  105. package/lib/zlabel/zlabel.component.d.ts +3 -0
  106. package/lib/zmfb/zmfb.component.d.ts +3 -0
  107. package/lib/zmodal/zmodal-mobile.component.d.ts +3 -0
  108. package/lib/zmodal/zmodal.component.d.ts +3 -0
  109. package/lib/znumeric/znumeric.component.d.ts +3 -0
  110. package/lib/zpostselectinput/zpostselectinput.component.d.ts +3 -0
  111. package/lib/zquerybuilder/zquerybuilder.component.d.ts +3 -0
  112. package/lib/zreport/zreport.component.d.ts +3 -0
  113. package/lib/zreport/zreport.config.d.ts +3 -0
  114. package/lib/zscheduler/zscheduler.component.d.ts +3 -0
  115. package/lib/zscheduler/zscheduler.toolbar.component.d.ts +3 -0
  116. package/lib/zselectmultiple/zselectmultiple.component.d.ts +3 -0
  117. package/lib/zselectmultiple/zselectmultiple.directive.d.ts +3 -0
  118. package/lib/ztab/ztab.component.d.ts +3 -0
  119. package/lib/ztab/ztab.pipe.d.ts +3 -0
  120. package/lib/ztext/ztext.component.d.ts +3 -0
  121. package/lib/ztextarea/ztextarea.component.d.ts +3 -0
  122. package/lib/ztexteditor/ztexteditor.component.d.ts +3 -0
  123. package/lib/ztree/ztree.component.d.ts +3 -0
  124. package/lib/ztreelist/ztreelist.component.d.ts +3 -0
  125. package/lib/ztrendcard/ztrendcard.component.d.ts +3 -0
  126. package/lib/zudf/zudf.component.d.ts +3 -0
  127. package/lib/zunknown/zunknown.component.d.ts +3 -0
  128. package/lib/zupload/zupload.component.d.ts +3 -0
  129. package/lib/zworkflowbuttons/zworkflowbuttons.component.d.ts +3 -0
  130. package/mmhglobal-dynamicform.d.ts +1 -2
  131. package/package.json +20 -11
  132. package/bundles/mmhglobal-dynamicform.umd.js +0 -11360
  133. package/bundles/mmhglobal-dynamicform.umd.js.map +0 -1
  134. package/bundles/mmhglobal-dynamicform.umd.min.js +0 -16
  135. package/bundles/mmhglobal-dynamicform.umd.min.js.map +0 -1
  136. package/esm2015/lib/directives/fieldelement.directive.js +0 -15
  137. package/esm2015/lib/directives/scrollbar.theme.directive.js +0 -42
  138. package/esm2015/lib/mmhglobal-dynamicform.module.js +0 -314
  139. package/esm2015/lib/services/main.service.js +0 -766
  140. package/esm2015/lib/services/zcomponent.debug.service.js +0 -626
  141. package/esm2015/lib/services/zcomponent.service.js +0 -167
  142. package/esm2015/lib/uiactionbutton/uiactionbutton.component.js +0 -271
  143. package/esm2015/lib/uiappmenucontent/uiappmenucontent.component.js +0 -69
  144. package/esm2015/lib/uicontent/uicontent.component.js +0 -41
  145. package/esm2015/lib/uiheader/uiheader.component.js +0 -65
  146. package/esm2015/lib/uimenubutton/uimenubutton.component.js +0 -40
  147. package/esm2015/lib/uimenucontent/uimenucontent.component.js +0 -34
  148. package/esm2015/lib/uivalidationmessage/uivalidationmessage.component.js +0 -39
  149. package/esm2015/lib/zbullet/zbullet.component.js +0 -71
  150. package/esm2015/lib/zbuttons/zbuttons.component.js +0 -168
  151. package/esm2015/lib/zcard/zcard.component.js +0 -68
  152. package/esm2015/lib/zchart/zchart.component.js +0 -199
  153. package/esm2015/lib/zcheckbox/zcheckbox.component.js +0 -158
  154. package/esm2015/lib/zchip/zchip.component.js +0 -117
  155. package/esm2015/lib/zcodeeditor/zcodeeditor.component.js +0 -163
  156. package/esm2015/lib/zcodeeditor/zcodeeditor.pipe.js +0 -56
  157. package/esm2015/lib/zdaterange/zdaterange.component.js +0 -63
  158. package/esm2015/lib/zdatetime/dateParser.pipe.js +0 -26
  159. package/esm2015/lib/zdatetime/zdatetime.component.js +0 -279
  160. package/esm2015/lib/zdiv/zdiv.component.js +0 -48
  161. package/esm2015/lib/zdiv/zdiv.pipe.js +0 -27
  162. package/esm2015/lib/zform/zform.component.js +0 -148
  163. package/esm2015/lib/zformcontrol/zformcontrol.component.js +0 -49
  164. package/esm2015/lib/zgauge/zgauge.component.js +0 -146
  165. package/esm2015/lib/zgrid/date-range-cell-filter.component.js +0 -102
  166. package/esm2015/lib/zgrid/zgrid.binding.directive.js +0 -493
  167. package/esm2015/lib/zgrid/zgrid.component.js +0 -834
  168. package/esm2015/lib/zgrid/zgrid.popup.anchor-target.directive.js +0 -16
  169. package/esm2015/lib/zimg/zimg.component.js +0 -123
  170. package/esm2015/lib/zkcard/zkcard.component.js +0 -372
  171. package/esm2015/lib/zlabel/zlabel.component.js +0 -59
  172. package/esm2015/lib/zmfb/zmfb.component.js +0 -215
  173. package/esm2015/lib/zmodal/zmodal-mobile.component.js +0 -119
  174. package/esm2015/lib/zmodal/zmodal.component.js +0 -130
  175. package/esm2015/lib/znumeric/znumeric.component.js +0 -114
  176. package/esm2015/lib/zpostselectinput/zpostselectinput.component.js +0 -345
  177. package/esm2015/lib/zquerybuilder/zquerybuilder.component.js +0 -196
  178. package/esm2015/lib/zreport/zreport.component.js +0 -104
  179. package/esm2015/lib/zreport/zreport.config.js +0 -115
  180. package/esm2015/lib/zscheduler/zscheduler.component.js +0 -268
  181. package/esm2015/lib/zselectmultiple/zselectmultiple.component.js +0 -565
  182. package/esm2015/lib/zselectmultiple/zselectmultiple.directive.js +0 -28
  183. package/esm2015/lib/ztab/ztab.component.js +0 -180
  184. package/esm2015/lib/ztab/ztab.pipe.js +0 -22
  185. package/esm2015/lib/ztext/ztext.component.js +0 -286
  186. package/esm2015/lib/ztextarea/ztextarea.component.js +0 -104
  187. package/esm2015/lib/ztexteditor/ztexteditor.component.js +0 -52
  188. package/esm2015/lib/ztree/ztree.component.js +0 -374
  189. package/esm2015/lib/ztreelist/ztreelist.component.js +0 -539
  190. package/esm2015/lib/ztrendcard/ztrendcard.component.js +0 -89
  191. package/esm2015/lib/zudf/zudf.component.js +0 -206
  192. package/esm2015/lib/zunknown/zunknown.component.js +0 -20
  193. package/esm2015/lib/zupload/zupload.component.js +0 -358
  194. package/esm2015/lib/zworkflowbuttons/zworkflowbuttons.component.js +0 -215
  195. package/esm2015/mmhglobal-dynamicform.js +0 -7
  196. package/fesm2015/mmhglobal-dynamicform.js +0 -10729
  197. package/fesm2015/mmhglobal-dynamicform.js.map +0 -1
  198. package/mmhglobal-dynamicform.metadata.json +0 -1
@@ -0,0 +1,92 @@
1
+ /********** Angular **********/
2
+ import { Component, Input } from '@angular/core';
3
+ /********** Ionic **********/
4
+ /********** Plugin **********/
5
+ /********** Component & Service **********/
6
+ import { ZComponentHelper, ZComponentProperties } from 'mmhglobal-zcore';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@ionic/angular";
9
+ import * as i2 from "@fortawesome/angular-fontawesome";
10
+ import * as i3 from "@angular/common";
11
+ export class ZtrendcardComponent {
12
+ // fieldElement01 = [
13
+ // {"Name": "myTrendCard1",
14
+ // "Value": "group.myTrendCard01Value",
15
+ // "Type": "ztrendcard",
16
+ // "Visible": "true",
17
+ // "DivClass": "col-md-3 col-lg-3",
18
+ // "AppendDivClearFix": false,
19
+ // "Title": "Upcoming Call/Follow-Up Call",
20
+ // "Icon": "phone",
21
+ // "Color": "#F7BC46",
22
+ // }];
23
+ constructor() {
24
+ this.isLoading = true;
25
+ this.componentProperties = new ZComponentProperties();
26
+ this.title = "Undefined";
27
+ this.icon = "address-card";
28
+ this.color = "#000000";
29
+ this.value = 0;
30
+ this.options = {
31
+ title: this.title,
32
+ icon: this.icon,
33
+ color: this.color,
34
+ value: this.value
35
+ };
36
+ this.setEnable = (status) => {
37
+ // const fc = this.group.form.controls[this.data.Value];
38
+ // status ? fc.enable() : fc.disable();
39
+ this.componentProperties.isReadOnly = !status;
40
+ };
41
+ this.setVisible = (status) => {
42
+ this.componentProperties.isVisible = status;
43
+ this.data.Visible = status;
44
+ };
45
+ this.setRequire = (status) => {
46
+ this.componentProperties.isRequired = status;
47
+ };
48
+ this.setData = (gData) => {
49
+ if (!gData) {
50
+ this.options.value = 0;
51
+ }
52
+ this.getFieldDeclarationForSetup(this.data, this.options);
53
+ };
54
+ }
55
+ ngOnInit() {
56
+ ZComponentHelper.setComponentProperties(this);
57
+ ZComponentHelper.registerComponent(this);
58
+ if (this.data.Options) {
59
+ const optionType = typeof (this.data.Options);
60
+ if (optionType === 'object') {
61
+ Object.assign(this.options, this.data.Options);
62
+ }
63
+ else if (optionType === 'string') {
64
+ const optionValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.Options);
65
+ if (typeof (optionValue) === 'object') {
66
+ Object.assign(this.options, optionValue);
67
+ }
68
+ }
69
+ }
70
+ this.getFieldDeclarationForSetup(this.data, this.options);
71
+ this.isLoading = false;
72
+ }
73
+ getFieldDeclarationForSetup(field, options) {
74
+ options.title = ZComponentHelper.getGroupEvalValue.call(this, field.Title) || options.title;
75
+ options.icon = ZComponentHelper.getGroupEvalValue.call(this, field.Icon) || options.icon;
76
+ options.color = ZComponentHelper.getGroupEvalValue.call(this, field.Color) || options.color;
77
+ options.value = ZComponentHelper.getGroupEvalValue.call(this, field.Value) || options.value;
78
+ }
79
+ }
80
+ ZtrendcardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: ZtrendcardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
81
+ ZtrendcardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.4", type: ZtrendcardComponent, selector: "app-ztrendcard", inputs: { data: "data", group: "group", form: "form" }, ngImport: i0, template: "<div *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\" style=\"text-align: center;\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col>\r\n <!-- <div class=\"trend-btn ion-activatable ripple-parent\" [routerLink]=\"[item.URL]\"> -->\r\n <div class=\"trend-btn ion-activatable ripple-parent\">\r\n <ion-label>\r\n <ion-grid style=\"width: 100%;\">\r\n <ion-row>\r\n <ion-col class=\"trend-btn-icon\" sizeLg=\"4\" sizeXs=\"4\" sizeMd=\"4\" sizeXl=\"4\">\r\n <fa-icon [icon]=\"options.icon\" [style.color]=\"options.color\"></fa-icon>\r\n </ion-col>\r\n <ion-col class=\"trend-btn-value\" sizeLg=\"4\" sizeXs=\"4\" sizeMd=\"4\" sizeXl=\"4\">\r\n <ion-label>{{ options.value }}</ion-label><br/>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </ion-label>\r\n <ion-label class=\"trend-btn-label\">{{ options.title }}</ion-label>\r\n <ion-ripple-effect></ion-ripple-effect>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n</div>\r\n<div style=\"padding-bottom: 10px;\"></div>\r\n\r\n\r\n\r\n\r\n\r\n", styles: [".trend-btn{display:flex;flex-flow:column;justify-content:center;align-items:stretch;background-color:#fff;padding:8px 0;border:1px solid #ccc;border-radius:5px;min-height:100px;cursor:pointer}.ripple-parent{position:relative;overflow:hidden}.trend-btn-label{text-align:right;font-size:14px;padding-right:20px}.trend-btn-value{text-align:right;zoom:2;vertical-align:middle;padding-top:10px}.trend-btn-icon{text-align:center;zoom:2.5}\n"], components: [{ type: i1.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { type: i1.IonRow, selector: "ion-row" }, { type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { type: i2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i1.IonRippleEffect, selector: "ion-ripple-effect", inputs: ["type"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: ZtrendcardComponent, decorators: [{
83
+ type: Component,
84
+ args: [{ selector: 'app-ztrendcard', template: "<div *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\" style=\"text-align: center;\">\r\n <ion-grid>\r\n <ion-row>\r\n <ion-col>\r\n <!-- <div class=\"trend-btn ion-activatable ripple-parent\" [routerLink]=\"[item.URL]\"> -->\r\n <div class=\"trend-btn ion-activatable ripple-parent\">\r\n <ion-label>\r\n <ion-grid style=\"width: 100%;\">\r\n <ion-row>\r\n <ion-col class=\"trend-btn-icon\" sizeLg=\"4\" sizeXs=\"4\" sizeMd=\"4\" sizeXl=\"4\">\r\n <fa-icon [icon]=\"options.icon\" [style.color]=\"options.color\"></fa-icon>\r\n </ion-col>\r\n <ion-col class=\"trend-btn-value\" sizeLg=\"4\" sizeXs=\"4\" sizeMd=\"4\" sizeXl=\"4\">\r\n <ion-label>{{ options.value }}</ion-label><br/>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n </ion-label>\r\n <ion-label class=\"trend-btn-label\">{{ options.title }}</ion-label>\r\n <ion-ripple-effect></ion-ripple-effect>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n</div>\r\n<div style=\"padding-bottom: 10px;\"></div>\r\n\r\n\r\n\r\n\r\n\r\n", styles: [".trend-btn{display:flex;flex-flow:column;justify-content:center;align-items:stretch;background-color:#fff;padding:8px 0;border:1px solid #ccc;border-radius:5px;min-height:100px;cursor:pointer}.ripple-parent{position:relative;overflow:hidden}.trend-btn-label{text-align:right;font-size:14px;padding-right:20px}.trend-btn-value{text-align:right;zoom:2;vertical-align:middle;padding-top:10px}.trend-btn-icon{text-align:center;zoom:2.5}\n"] }]
85
+ }], ctorParameters: function () { return []; }, propDecorators: { data: [{
86
+ type: Input
87
+ }], group: [{
88
+ type: Input
89
+ }], form: [{
90
+ type: Input
91
+ }] } });
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienRyZW5kY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96dHJlbmRjYXJkL3p0cmVuZGNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenRyZW5kY2FyZC96dHJlbmRjYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd6RCw2QkFBNkI7QUFFN0IsOEJBQThCO0FBRTlCLDJDQUEyQztBQUMzQyxPQUFPLEVBQ08sZ0JBQWdCLEVBQUUsb0JBQW9CLEVBRW5ELE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBUXpCLE1BQU0sT0FBTyxtQkFBbUI7SUFtQmhDLHNCQUFzQjtJQUN0Qiw2QkFBNkI7SUFDN0IseUNBQXlDO0lBQ3pDLDBCQUEwQjtJQUMxQix1QkFBdUI7SUFDdkIscUNBQXFDO0lBQ3JDLGdDQUFnQztJQUNoQyw2Q0FBNkM7SUFDN0MscUJBQXFCO0lBQ3JCLHdCQUF3QjtJQUN4QixNQUFNO0lBRUo7UUExQkEsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQix3QkFBbUIsR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7UUFDekMsVUFBSyxHQUFHLFdBQVcsQ0FBQztRQUNwQixTQUFJLEdBQUcsY0FBYyxDQUFDO1FBQ3RCLFVBQUssR0FBRyxTQUFTLENBQUM7UUFDbEIsVUFBSyxHQUFHLENBQUMsQ0FBQztRQUVsQixZQUFPLEdBQUc7WUFDUixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLEtB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LENBQUMsS0FBSyxDQUFDO0lBQzlGLENBQUM7O2dIQTNEVSxtQkFBbUI7b0dBQW5CLG1CQUFtQiw4R0NwQmhDLDZ4Q0ErQkE7MkZEWGEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGdCQUFnQjswRUFLakIsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcblxyXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXHJcbmltcG9ydCB7XHJcbiAgWkNvbXBvbmVudCwgWkNvbXBvbmVudEhlbHBlciwgWkNvbXBvbmVudFByb3BlcnRpZXMsXHJcbiAgWkZpZWxkLCBaR3JvdXBcclxufSBmcm9tICdtbWhnbG9iYWwtemNvcmUnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXp0cmVuZGNhcmQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi96dHJlbmRjYXJkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi96dHJlbmRjYXJkLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBadHJlbmRjYXJkQ29tcG9uZW50IGltcGxlbWVudHMgWkNvbXBvbmVudCwgT25Jbml0IHtcclxuICBASW5wdXQoKSBkYXRhOiBaRmllbGQ7XHJcbiAgQElucHV0KCkgZ3JvdXA6IFpHcm91cDtcclxuICBASW5wdXQoKSBmb3JtOiBGb3JtR3JvdXA7XHJcblxyXG4gIGlzTG9hZGluZyA9IHRydWU7XHJcbiAgY29tcG9uZW50UHJvcGVydGllcyA9IG5ldyBaQ29tcG9uZW50UHJvcGVydGllcygpO1xyXG4gIHByaXZhdGUgdGl0bGUgPSBcIlVuZGVmaW5lZFwiO1xyXG4gIHByaXZhdGUgaWNvbiA9IFwiYWRkcmVzcy1jYXJkXCI7XHJcbiAgcHJpdmF0ZSBjb2xvciA9IFwiIzAwMDAwMFwiO1xyXG4gIHByaXZhdGUgdmFsdWUgPSAwO1xyXG5cclxuICBvcHRpb25zID0ge1xyXG4gICAgdGl0bGU6IHRoaXMudGl0bGUsXHJcbiAgICBpY29uOiB0aGlzLmljb24sXHJcbiAgICBjb2xvcjogdGhpcy5jb2xvcixcclxuICAgIHZhbHVlOiB0aGlzLnZhbHVlXHJcbiAgfTtcclxuXHJcbi8vICBmaWVsZEVsZW1lbnQwMSA9IFtcclxuLy8gICB7XCJOYW1lXCI6IFwibXlUcmVuZENhcmQxXCIsXHJcbi8vICAgXCJWYWx1ZVwiOiBcImdyb3VwLm15VHJlbmRDYXJkMDFWYWx1ZVwiLFxyXG4vLyAgIFwiVHlwZVwiOiBcInp0cmVuZGNhcmRcIixcclxuLy8gICBcIlZpc2libGVcIjogXCJ0cnVlXCIsXHJcbi8vICAgXCJEaXZDbGFzc1wiOiBcImNvbC1tZC0zIGNvbC1sZy0zXCIsXHJcbi8vICAgXCJBcHBlbmREaXZDbGVhckZpeFwiOiBmYWxzZSxcclxuLy8gICBcIlRpdGxlXCI6IFwiVXBjb21pbmcgQ2FsbC9Gb2xsb3ctVXAgQ2FsbFwiLFxyXG4vLyAgIFwiSWNvblwiOiBcInBob25lXCIsXHJcbi8vICAgXCJDb2xvclwiOiBcIiNGN0JDNDZcIixcclxuLy8gfV07XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5zZXRDb21wb25lbnRQcm9wZXJ0aWVzKHRoaXMpO1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5yZWdpc3RlckNvbXBvbmVudCh0aGlzKTtcclxuXHJcbiAgICBpZiAodGhpcy5kYXRhLk9wdGlvbnMpIHtcclxuICAgICAgY29uc3Qgb3B0aW9uVHlwZSA9IHR5cGVvZiAodGhpcy5kYXRhLk9wdGlvbnMpO1xyXG4gICAgICBpZiAob3B0aW9uVHlwZSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMub3B0aW9ucywgdGhpcy5kYXRhLk9wdGlvbnMpO1xyXG4gICAgICB9IGVsc2UgaWYgKG9wdGlvblR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgY29uc3Qgb3B0aW9uVmFsdWUgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgdGhpcy5kYXRhLk9wdGlvbnMpO1xyXG4gICAgICAgIGlmICh0eXBlb2YgKG9wdGlvblZhbHVlKSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5vcHRpb25zLCBvcHRpb25WYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5nZXRGaWVsZERlY2xhcmF0aW9uRm9yU2V0dXAodGhpcy5kYXRhLCB0aGlzLm9wdGlvbnMpO1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZpZWxkRGVjbGFyYXRpb25Gb3JTZXR1cChmaWVsZDogWkZpZWxkLCBvcHRpb25zOiBhbnkpIHtcclxuICAgIG9wdGlvbnMudGl0bGUgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZmllbGQuVGl0bGUpIHx8IG9wdGlvbnMudGl0bGU7XHJcbiAgICBvcHRpb25zLmljb24gPVpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCBmaWVsZC5JY29uKSB8fCBvcHRpb25zLmljb247XHJcbiAgICBvcHRpb25zLmNvbG9yID1aQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZmllbGQuQ29sb3IpIHx8IG9wdGlvbnMuY29sb3I7XHJcbiAgICBvcHRpb25zLnZhbHVlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGZpZWxkLlZhbHVlKSB8fCBvcHRpb25zLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldEVuYWJsZSA9IChzdGF0dXM6IGJvb2xlYW4pID0+IHtcclxuICAgIC8vIGNvbnN0IGZjID0gdGhpcy5ncm91cC5mb3JtLmNvbnRyb2xzW3RoaXMuZGF0YS5WYWx1ZV07XHJcbiAgICAvLyBzdGF0dXMgPyBmYy5lbmFibGUoKSA6IGZjLmRpc2FibGUoKTtcclxuICAgIHRoaXMuY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5ID0gIXN0YXR1cztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRWaXNpYmxlID0gKHN0YXR1czogYm9vbGVhbikgPT4ge1xyXG4gICAgdGhpcy5jb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZSA9IHN0YXR1cztcclxuICAgIHRoaXMuZGF0YS5WaXNpYmxlID0gc3RhdHVzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFJlcXVpcmUgPSAoc3RhdHVzOiBib29sZWFuKSA9PiB7XHJcbiAgICB0aGlzLmNvbXBvbmVudFByb3BlcnRpZXMuaXNSZXF1aXJlZCA9IHN0YXR1cztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXREYXRhID0gKGdEYXRhOiBhbnkpID0+IHtcclxuICAgIGlmKCFnRGF0YSlcclxuICAgIHtcclxuICAgICAgdGhpcy5vcHRpb25zLnZhbHVlPTA7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldEZpZWxkRGVjbGFyYXRpb25Gb3JTZXR1cCh0aGlzLmRhdGEsIHRoaXMub3B0aW9ucyk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2ICpuZ0lmPVwiIWlzTG9hZGluZyAmJiAoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGVGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZSlcIiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjtcIj5cclxuICA8aW9uLWdyaWQ+XHJcbiAgICA8aW9uLXJvdz5cclxuICAgICAgPGlvbi1jb2w+XHJcbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwidHJlbmQtYnRuIGlvbi1hY3RpdmF0YWJsZSByaXBwbGUtcGFyZW50XCIgW3JvdXRlckxpbmtdPVwiW2l0ZW0uVVJMXVwiPiAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidHJlbmQtYnRuIGlvbi1hY3RpdmF0YWJsZSByaXBwbGUtcGFyZW50XCI+XHJcbiAgICAgICAgICA8aW9uLWxhYmVsPlxyXG4gICAgICAgICAgICA8aW9uLWdyaWQgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIj5cclxuICAgICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwidHJlbmQtYnRuLWljb25cIiBzaXplTGc9XCI0XCIgc2l6ZVhzPVwiNFwiIHNpemVNZD1cIjRcIiBzaXplWGw9XCI0XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cIm9wdGlvbnMuaWNvblwiIFtzdHlsZS5jb2xvcl09XCJvcHRpb25zLmNvbG9yXCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJ0cmVuZC1idG4tdmFsdWVcIiBzaXplTGc9XCI0XCIgc2l6ZVhzPVwiNFwiIHNpemVNZD1cIjRcIiBzaXplWGw9XCI0XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpb24tbGFiZWw+e3sgb3B0aW9ucy52YWx1ZSB9fTwvaW9uLWxhYmVsPjxici8+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICA8L2lvbi1ncmlkPlxyXG4gICAgICAgICAgPC9pb24tbGFiZWw+XHJcbiAgICAgICAgICA8aW9uLWxhYmVsIGNsYXNzPVwidHJlbmQtYnRuLWxhYmVsXCI+e3sgb3B0aW9ucy50aXRsZSB9fTwvaW9uLWxhYmVsPlxyXG4gICAgICAgICAgPGlvbi1yaXBwbGUtZWZmZWN0PjwvaW9uLXJpcHBsZS1lZmZlY3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvaW9uLWNvbD5cclxuICAgIDwvaW9uLXJvdz5cclxuICA8L2lvbi1ncmlkPlxyXG48L2Rpdj5cclxuPGRpdiBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAxMHB4O1wiPjwvZGl2PlxyXG5cclxuXHJcblxyXG5cclxuXHJcbiJdfQ==
@@ -0,0 +1,205 @@
1
+ /********** Angular **********/
2
+ import { Component, Input } from "@angular/core";
3
+ import { FormControl, FormGroup, Validators } from "@angular/forms";
4
+ /********** Ionic **********/
5
+ /********** Plugin **********/
6
+ import { AsyncSubject, of } from "rxjs";
7
+ import { concatMap, map, tap } from "rxjs/operators";
8
+ /********** Component & Service **********/
9
+ import { ZGroup, ZComponentProperties, ZComponentHelper } from 'mmhglobal-zcore';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "mmhglobal-zcore";
12
+ import * as i2 from "@progress/kendo-angular-layout";
13
+ import * as i3 from "@ionic/angular";
14
+ import * as i4 from "../zformcontrol/zformcontrol.component";
15
+ import * as i5 from "@angular/common";
16
+ import * as i6 from "../zdiv/zdiv.pipe";
17
+ export class ZudfComponent {
18
+ constructor(alertService, authService, fieldService, resourceApiService, toastService, webApiService) {
19
+ this.alertService = alertService;
20
+ this.authService = authService;
21
+ this.fieldService = fieldService;
22
+ this.resourceApiService = resourceApiService;
23
+ this.toastService = toastService;
24
+ this.webApiService = webApiService;
25
+ this.componentProperties = new ZComponentProperties();
26
+ this.setEnable = (status) => {
27
+ this.componentProperties.isReadOnly = !status;
28
+ };
29
+ this.setVisible = (status) => {
30
+ this.componentProperties.isVisible = status;
31
+ this.data.Visible = status;
32
+ };
33
+ this.setRequire = (status) => {
34
+ this.componentProperties.isRequired = status;
35
+ ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);
36
+ };
37
+ }
38
+ ngOnInit() {
39
+ ZComponentHelper.setComponentProperties(this);
40
+ ZComponentHelper.registerComponent(this);
41
+ // keep data Value
42
+ this.initialDataValue = this.data.Value;
43
+ if (ZComponentHelper.isNullUndefinedEmpty(this.data.Value)) {
44
+ this.loadEmptyForm();
45
+ }
46
+ else {
47
+ this.loadZudfForm();
48
+ }
49
+ }
50
+ loadEmptyForm() {
51
+ of(true).pipe(tap(() => {
52
+ this.data.SubType = 'zudf';
53
+ // change the value to the result field form
54
+ this.data.Value = [];
55
+ // change zudf to zdiv
56
+ //this.data.Type = 'zdiv';
57
+ }), tap(() => {
58
+ if (!this.group['_zudf_' + this.data.Name]) {
59
+ this.group['_zudf_' + this.data.Name] = new ZGroup;
60
+ }
61
+ const grp = this.group['_zudf_' + this.data.Name];
62
+ grp.zModel = {};
63
+ // create as new Form Group
64
+ this.form = this.toFormGroup(this.data.Value);
65
+ // set to zGroup scope
66
+ grp.form = this.form;
67
+ }), tap(() => {
68
+ // set to formField for display
69
+ this.formField = this.data.Value;
70
+ })).subscribe(() => {
71
+ // set Field div class
72
+ ZComponentHelper.setFieldsDivClass(this.group._projectName, this.group.fieldName, this.data, this.authService);
73
+ });
74
+ }
75
+ loadZudfForm() {
76
+ of(true).pipe(concatMap(fieldElements => {
77
+ const asyncSubject = new AsyncSubject();
78
+ this.fieldService.getFormFieldCode(this.data.Value, 'FormField', this, 'fields').pipe(map(formFieldResult => {
79
+ // rename add prefix to all udf field to prevent duplicate from main form
80
+ this.appendPrefix(formFieldResult, 'zudf_' + this.data.Name);
81
+ // change the value to the result field form
82
+ this.data.Value = formFieldResult;
83
+ // change zudf to zdiv
84
+ //this.data.Type = 'zdiv';
85
+ // end subject
86
+ asyncSubject.next(true);
87
+ asyncSubject.complete();
88
+ })).subscribe();
89
+ return asyncSubject.asObservable();
90
+ }), tap(() => {
91
+ if (!this.group['_zudf_' + this.data.Name]) {
92
+ this.group['_zudf_' + this.data.Name] = new ZGroup;
93
+ }
94
+ const grp = this.group['_zudf_' + this.data.Name];
95
+ grp.zModel = {};
96
+ // create as new Form Group
97
+ this.form = this.toFormGroup(this.data.Value);
98
+ // set to zGroup scope
99
+ grp.form = this.form;
100
+ }), tap(() => {
101
+ // set to formField for display
102
+ this.formField = this.data.Value;
103
+ })).subscribe(() => {
104
+ // set Field div class
105
+ ZComponentHelper.setFieldsDivClass(this.group._projectName, this.group.fieldName, this.data, this.authService);
106
+ // TODO: get saved record
107
+ //this.getFormFieldzModel();
108
+ // change back the data.Value
109
+ if (this.data['DisableReplaceValue']) {
110
+ this.data.Value = this.initialDataValue;
111
+ }
112
+ });
113
+ }
114
+ getFormFieldzModel() {
115
+ const form = this.group['_zudf_' + this.data.Name].form;
116
+ const zModel = this.group['_zudf_' + this.data.Name].zModel;
117
+ const url = this.resourceApiService.getURL('field');
118
+ const respData = { 'parentFormId': 5722, 'zudf_Name': 'test' };
119
+ Object.assign(zModel, respData);
120
+ form.patchValue(zModel);
121
+ form.markAsPristine();
122
+ //return this.webApiService.httpGet$(url, { name: this.group.fieldName, type: 'FormField' }).pipe(
123
+ // tap((respData: any) => {
124
+ // debugger;
125
+ // Object.assign(zModel, respData);
126
+ // form.patchValue(zModel);
127
+ // form.markAsPristine();
128
+ // })
129
+ //);
130
+ }
131
+ toFormGroup(fieldElements) {
132
+ const formControls = {};
133
+ this.getFormControls(fieldElements, formControls);
134
+ const newFormGroup = new FormGroup(formControls);
135
+ return newFormGroup;
136
+ }
137
+ getFormControls(fieldArray, formControls) {
138
+ fieldArray.forEach(field => {
139
+ if (typeof field.Value === "string" && field.Value.indexOf(".") !== -1) {
140
+ if (['zgrid', 'ztree', 'zimg', 'textareajson'].indexOf(field.Type) === -1) {
141
+ console.warn("FormControl - invalid field value", field.Value);
142
+ }
143
+ }
144
+ else {
145
+ if (Array.isArray(field.Value)) {
146
+ this.getFormControls(field.Value, formControls);
147
+ }
148
+ else {
149
+ const isFormControl = ZComponentHelper.isFormControl(field);
150
+ const isVisible = ZComponentHelper.isVisibleFormControl(this, field);
151
+ const isRequired = ZComponentHelper.isRequiredFormControl(this, field);
152
+ if (isFormControl === true) {
153
+ const validators = ZComponentHelper.getValidators(field, isVisible, isRequired);
154
+ formControls[field.Value] = new FormControl(this.group['_zudf_' + this.data.Name].zModel[field.Value], validators);
155
+ if (ZComponentHelper.hasCCField(field.Type)) {
156
+ const ccValidators = ZComponentHelper.getCCValidators(field, isVisible, isRequired);
157
+ formControls[field.CCValue] = new FormControl(this.group['_zudf_' + this.data.Name].zModel[field.CCValue], ccValidators);
158
+ }
159
+ }
160
+ }
161
+ }
162
+ });
163
+ }
164
+ appendPrefix(fields, prefix) {
165
+ fields.forEach(field => {
166
+ if (Array.isArray(field.Value)) {
167
+ this.appendPrefix(field.Value, prefix);
168
+ }
169
+ else {
170
+ field.Name = prefix + '_' + field.Name;
171
+ if (field.Type != 'zbuttons') {
172
+ field.Value = prefix + '_' + field.Value;
173
+ }
174
+ field.SubType = prefix;
175
+ }
176
+ });
177
+ }
178
+ ComponentIsVisible(field) {
179
+ return ZComponentHelper.ComponentIsVisible(field, this.group);
180
+ }
181
+ appendFormControl(zudfControlName, zudfControl, fieldData) {
182
+ this.form.addControl(zudfControlName, zudfControl);
183
+ this.formField.push(fieldData);
184
+ }
185
+ clearFormControl() {
186
+ this.formField.forEach(data => {
187
+ this.form.removeControl(data.Value);
188
+ });
189
+ this.data.Value = this.initialDataValue;
190
+ this.formField = [];
191
+ }
192
+ }
193
+ ZudfComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: ZudfComponent, deps: [{ token: i1.AlertService }, { token: i1.AuthService }, { token: i1.FieldService }, { token: i1.ResourceApiService }, { token: i1.ToastService }, { token: i1.WebApiService }], target: i0.ɵɵFactoryTarget.Component });
194
+ ZudfComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.4", type: ZudfComponent, selector: "app-zudf", inputs: { data: "data", group: "group", form: "form" }, ngImport: i0, template: "<div style=\"padding: 15px\" *ngIf=\"data.Title && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\" class=\"ion-row\">\r\n <kendo-card *ngIf=\"data.Title\" width=\"100%\" >\r\n <kendo-card-header >\r\n <div>\r\n <ion-label class=\"card-header-title\">{{data.Title}}</ion-label>\r\n </div>\r\n </kendo-card-header>\r\n <kendo-card-body>\r\n <div class=\"ion-row\">\r\n <app-zformcontrol [ngClass]=\"group[field.isVisibleField] ? field.DivClass : ((field.Visible === true) ? field.DivClass : 'flex-hide')\"\r\n *ngFor=\"let field of formField | divzlayout: data.zlayout\"\r\n [field]=\"field\"\r\n [group]=\"group\"\r\n [form]=\"form\"\r\n id=\"zudf{{data.Name}}-{{field.Type}}-{{field.Name}}\">\r\n </app-zformcontrol>\r\n </div>\r\n </kendo-card-body> \r\n </kendo-card>\r\n</div>\r\n\r\n<div *ngIf=\"!data.Title && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\" class=\"ion-row\">\r\n <app-zformcontrol [ngClass]=\"group[field.isVisibleField] ? field.DivClass : ((field.Visible === true) ? field.DivClass : 'flex-hide')\"\r\n *ngFor=\"let field of formField | divzlayout: data.zlayout\"\r\n [field]=\"field\"\r\n [group]=\"group\"\r\n [form]=\"form\"\r\n id=\"zudf{{data.Name}}-{{field.Type}}-{{field.Name}}\">\r\n </app-zformcontrol>\r\n</div>\r\n", styles: [".card-header-title{color:#fff!important;font-weight:500;font-size:11pt}\n"], components: [{ type: i2.CardComponent, selector: "kendo-card", inputs: ["orientation", "width"] }, { type: i2.CardHeaderComponent, selector: "kendo-card-header" }, { type: i3.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { type: i2.CardBodyComponent, selector: "kendo-card-body" }, { type: i4.ZformcontrolComponent, selector: "app-zformcontrol", inputs: ["field", "group", "form"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "divzlayout": i6.DivzLayout } });
195
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: ZudfComponent, decorators: [{
196
+ type: Component,
197
+ args: [{ selector: 'app-zudf', template: "<div style=\"padding: 15px\" *ngIf=\"data.Title && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\" class=\"ion-row\">\r\n <kendo-card *ngIf=\"data.Title\" width=\"100%\" >\r\n <kendo-card-header >\r\n <div>\r\n <ion-label class=\"card-header-title\">{{data.Title}}</ion-label>\r\n </div>\r\n </kendo-card-header>\r\n <kendo-card-body>\r\n <div class=\"ion-row\">\r\n <app-zformcontrol [ngClass]=\"group[field.isVisibleField] ? field.DivClass : ((field.Visible === true) ? field.DivClass : 'flex-hide')\"\r\n *ngFor=\"let field of formField | divzlayout: data.zlayout\"\r\n [field]=\"field\"\r\n [group]=\"group\"\r\n [form]=\"form\"\r\n id=\"zudf{{data.Name}}-{{field.Type}}-{{field.Name}}\">\r\n </app-zformcontrol>\r\n </div>\r\n </kendo-card-body> \r\n </kendo-card>\r\n</div>\r\n\r\n<div *ngIf=\"!data.Title && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\" class=\"ion-row\">\r\n <app-zformcontrol [ngClass]=\"group[field.isVisibleField] ? field.DivClass : ((field.Visible === true) ? field.DivClass : 'flex-hide')\"\r\n *ngFor=\"let field of formField | divzlayout: data.zlayout\"\r\n [field]=\"field\"\r\n [group]=\"group\"\r\n [form]=\"form\"\r\n id=\"zudf{{data.Name}}-{{field.Type}}-{{field.Name}}\">\r\n </app-zformcontrol>\r\n</div>\r\n", styles: [".card-header-title{color:#fff!important;font-weight:500;font-size:11pt}\n"] }]
198
+ }], ctorParameters: function () { return [{ type: i1.AlertService }, { type: i1.AuthService }, { type: i1.FieldService }, { type: i1.ResourceApiService }, { type: i1.ToastService }, { type: i1.WebApiService }]; }, propDecorators: { data: [{
199
+ type: Input
200
+ }], group: [{
201
+ type: Input
202
+ }], form: [{
203
+ type: Input
204
+ }] } });
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienVkZi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96dWRmL3p1ZGYuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenVkZi96dWRmLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBZSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRiw2QkFBNkI7QUFFN0IsOEJBQThCO0FBQzlCLE9BQU8sRUFBRSxZQUFZLEVBQXdCLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRCwyQ0FBMkM7QUFDM0MsT0FBTyxFQUdMLE1BQU0sRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFDL0MsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7QUFRekIsTUFBTSxPQUFPLGFBQWE7SUFTeEIsWUFDVSxZQUEwQixFQUMxQixXQUF3QixFQUN4QixZQUEwQixFQUMxQixrQkFBc0MsRUFDdEMsWUFBMEIsRUFDMUIsYUFBNEI7UUFMNUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQVR0Qyx3QkFBbUIsR0FBRyxJQUFJLG9CQUFv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QyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUV4QyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDOzswR0ExT1UsYUFBYTs4RkFBYixhQUFhLHdHQ3ZCMUIsc29EQThCQTsyRkRQYSxhQUFhO2tCQUx6QixTQUFTOytCQUNFLFVBQVU7Z1BBS1gsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcbmltcG9ydCB7IEFzeW5jU3ViamVjdCwgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgY29uY2F0TWFwLCBtYXAsIHRhcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQge1xyXG4gIFpDb21wb25lbnQsIFpGaWVsZCxcclxuICBBbGVydFNlcnZpY2UsIEF1dGhTZXJ2aWNlLCBGaWVsZFNlcnZpY2UsIFJlc291cmNlQXBpU2VydmljZSwgVG9hc3RTZXJ2aWNlLCBXZWJBcGlTZXJ2aWNlLFxyXG4gIFpHcm91cCwgWkNvbXBvbmVudFByb3BlcnRpZXMsIFpDb21wb25lbnRIZWxwZXJcclxufSBmcm9tICdtbWhnbG9iYWwtemNvcmUnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXp1ZGYnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi96dWRmLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi96dWRmLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBadWRmQ29tcG9uZW50IGltcGxlbWVudHMgWkNvbXBvbmVudCwgT25Jbml0IHtcclxuICBASW5wdXQoKSBkYXRhOiBaRmllbGQ7XHJcbiAgQElucHV0KCkgZ3JvdXA6IFpHcm91cDtcclxuICBASW5wdXQoKSBmb3JtOiBGb3JtR3JvdXA7XHJcbiAgZm9ybUZpZWxkOiBaRmllbGRbXTtcclxuXHJcbiAgY29tcG9uZW50UHJvcGVydGllcyA9IG5ldyBaQ29tcG9uZW50UHJvcGVydGllcygpO1xyXG4gIGluaXRpYWxEYXRhVmFsdWU6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZpZWxkU2VydmljZTogRmllbGRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZXNvdXJjZUFwaVNlcnZpY2U6IFJlc291cmNlQXBpU2VydmljZSxcclxuICAgIHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHdlYkFwaVNlcnZpY2U6IFdlYkFwaVNlcnZpY2VcclxuICApIHsgfVxyXG4gIFxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5zZXRDb21wb25lbnRQcm9wZXJ0aWVzKHRoaXMpO1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5yZWdpc3RlckNvbXBvbmVudCh0aGlzKTtcclxuXHJcbiAgICAvLyBrZWVwIGRhdGEgVmFsdWVcclxuICAgIHRoaXMuaW5pdGlhbERhdGFWYWx1ZSA9IHRoaXMuZGF0YS5WYWx1ZTtcclxuXHJcbiAgICBpZiAoWkNvbXBvbmVudEhlbHBlci5pc051bGxVbmRlZmluZWRFbXB0eSh0aGlzLmRhdGEuVmFsdWUpKSB7XHJcbiAgICAgIHRoaXMubG9hZEVtcHR5Rm9ybSgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMubG9hZFp1ZGZGb3JtKCk7IFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkRW1wdHlGb3JtKCkge1xyXG4gICAgb2YodHJ1ZSkucGlwZShcclxuICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGEuU3ViVHlwZSA9ICd6dWRmJztcclxuXHJcbiAgICAgICAgLy8gY2hhbmdlIHRoZSB2YWx1ZSB0byB0aGUgcmVzdWx0IGZpZWxkIGZvcm0gXHJcbiAgICAgICAgdGhpcy5kYXRhLlZhbHVlID0gW107XHJcblxyXG4gICAgICAgIC8vIGNoYW5nZSB6dWRmIHRvIHpkaXZcclxuICAgICAgICAvL3RoaXMuZGF0YS5UeXBlID0gJ3pkaXYnO1xyXG4gICAgICB9KSxcclxuICAgICAgdGFwKCgpID0+IHsgXHJcbiAgICAgICAgaWYgKCF0aGlzLmdyb3VwWydfenVkZl8nICsgdGhpcy5kYXRhLk5hbWVdKSB7XHJcbiAgICAgICAgICB0aGlzLmdyb3VwWydfenVkZl8nICsgdGhpcy5kYXRhLk5hbWVdID0gbmV3IFpHcm91cDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGdycCA9IHRoaXMuZ3JvdXBbJ196dWRmXycgKyB0aGlzLmRhdGEuTmFtZV07XHJcbiAgICAgICAgIFxyXG4gICAgICAgIGdycC56TW9kZWwgPSB7fTtcclxuXHJcbiAgICAgICAgLy8gY3JlYXRlIGFzIG5ldyBGb3JtIEdyb3VwXHJcbiAgICAgICAgdGhpcy5mb3JtID0gdGhpcy50b0Zvcm1Hcm91cCh0aGlzLmRhdGEuVmFsdWUpO1xyXG5cclxuICAgICAgICAvLyBzZXQgdG8gekdyb3VwIHNjb3BlXHJcbiAgICAgICAgZ3JwLmZvcm0gPSB0aGlzLmZvcm07XHJcbiAgICAgIH0pLFxyXG4gICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgIC8vIHNldCB0byBmb3JtRmllbGQgZm9yIGRpc3BsYXlcclxuICAgICAgICB0aGlzLmZvcm1GaWVsZCA9IHRoaXMuZGF0YS5WYWx1ZTtcclxuICAgICAgfSlcclxuICAgICkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgLy8gc2V0IEZpZWxkIGRpdiBjbGFzc1xyXG4gICAgICBaQ29tcG9uZW50SGVscGVyLnNldEZpZWxkc0RpdkNsYXNzKHRoaXMuZ3JvdXAuX3Byb2plY3ROYW1lLCB0aGlzLmdyb3VwLmZpZWxkTmFtZSwgdGhpcy5kYXRhLCB0aGlzLmF1dGhTZXJ2aWNlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkWnVkZkZvcm0oKSB7XHJcbiAgICBvZih0cnVlKS5waXBlKFxyXG4gICAgICBjb25jYXRNYXAoZmllbGRFbGVtZW50cyA9PiB7XHJcbiAgICAgICAgY29uc3QgYXN5bmNTdWJqZWN0ID0gbmV3IEFzeW5jU3ViamVjdDxhbnk+KCk7XHJcbiAgICAgICAgdGhpcy5maWVsZFNlcnZpY2UuZ2V0Rm9ybUZpZWxkQ29kZSh0aGlzLmRhdGEuVmFsdWUsICdGb3JtRmllbGQnLCB0aGlzLCAnZmllbGRzJykucGlwZShcclxuICAgICAgICAgIG1hcChmb3JtRmllbGRSZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAvLyByZW5hbWUgYWRkIHByZWZpeCB0byBhbGwgdWRmIGZpZWxkIHRvIHByZXZlbnQgZHVwbGljYXRlIGZyb20gbWFpbiBmb3JtXHJcbiAgICAgICAgICAgIHRoaXMuYXBwZW5kUHJlZml4KGZvcm1GaWVsZFJlc3VsdCwgJ3p1ZGZfJyArIHRoaXMuZGF0YS5OYW1lKTtcclxuXHJcbiAgICAgICAgICAgIC8vIGNoYW5nZSB0aGUgdmFsdWUgdG8gdGhlIHJlc3VsdCBmaWVsZCBmb3JtIFxyXG4gICAgICAgICAgICB0aGlzLmRhdGEuVmFsdWUgPSBmb3JtRmllbGRSZXN1bHQ7XHJcblxyXG4gICAgICAgICAgICAvLyBjaGFuZ2UgenVkZiB0byB6ZGl2XHJcbiAgICAgICAgICAgIC8vdGhpcy5kYXRhLlR5cGUgPSAnemRpdic7XHJcblxyXG4gICAgICAgICAgICAvLyBlbmQgc3ViamVjdFxyXG4gICAgICAgICAgICBhc3luY1N1YmplY3QubmV4dCh0cnVlKTtcclxuICAgICAgICAgICAgYXN5bmNTdWJqZWN0LmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgICAgIHJldHVybiBhc3luY1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICAgIH0pLFxyXG4gICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5ncm91cFsnX3p1ZGZfJyArIHRoaXMuZGF0YS5OYW1lXSkge1xyXG4gICAgICAgICAgdGhpcy5ncm91cFsnX3p1ZGZfJyArIHRoaXMuZGF0YS5OYW1lXSA9IG5ldyBaR3JvdXA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBncnAgPSB0aGlzLmdyb3VwWydfenVkZl8nICsgdGhpcy5kYXRhLk5hbWVdO1xyXG5cclxuICAgICAgICBncnAuek1vZGVsID0ge307XHJcblxyXG4gICAgICAgIC8vIGNyZWF0ZSBhcyBuZXcgRm9ybSBHcm91cFxyXG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMudG9Gb3JtR3JvdXAodGhpcy5kYXRhLlZhbHVlKTtcclxuXHJcbiAgICAgICAgLy8gc2V0IHRvIHpHcm91cCBzY29wZVxyXG4gICAgICAgIGdycC5mb3JtID0gdGhpcy5mb3JtO1xyXG4gICAgICB9KSxcclxuICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICAvLyBzZXQgdG8gZm9ybUZpZWxkIGZvciBkaXNwbGF5XHJcbiAgICAgICAgdGhpcy5mb3JtRmllbGQgPSB0aGlzLmRhdGEuVmFsdWU7XHJcbiAgICAgIH0pXHJcbiAgICApLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIC8vIHNldCBGaWVsZCBkaXYgY2xhc3NcclxuICAgICAgWkNvbXBvbmVudEhlbHBlci5zZXRGaWVsZHNEaXZDbGFzcyh0aGlzLmdyb3VwLl9wcm9qZWN0TmFtZSwgdGhpcy5ncm91cC5maWVsZE5hbWUsIHRoaXMuZGF0YSwgdGhpcy5hdXRoU2VydmljZSk7XHJcblxyXG4gICAgICAvLyBUT0RPOiBnZXQgc2F2ZWQgcmVjb3JkXHJcbiAgICAgIC8vdGhpcy5nZXRGb3JtRmllbGR6TW9kZWwoKTtcclxuXHJcbiAgICAgIC8vIGNoYW5nZSBiYWNrIHRoZSBkYXRhLlZhbHVlXHJcbiAgICAgIGlmICh0aGlzLmRhdGFbJ0Rpc2FibGVSZXBsYWNlVmFsdWUnXSkge1xyXG4gICAgICAgIHRoaXMuZGF0YS5WYWx1ZSA9IHRoaXMuaW5pdGlhbERhdGFWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZvcm1GaWVsZHpNb2RlbCgpIHtcclxuICAgIGNvbnN0IGZvcm0gPSB0aGlzLmdyb3VwWydfenVkZl8nICsgdGhpcy5kYXRhLk5hbWVdLmZvcm07XHJcbiAgICBjb25zdCB6TW9kZWwgPSB0aGlzLmdyb3VwWydfenVkZl8nICsgdGhpcy5kYXRhLk5hbWVdLnpNb2RlbDtcclxuICAgIGNvbnN0IHVybCA9IHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldFVSTCgnZmllbGQnKTtcclxuXHJcbiAgICBjb25zdCByZXNwRGF0YSA9IHsgJ3BhcmVudEZvcm1JZCc6IDU3MjIsICd6dWRmX05hbWUnOiAndGVzdCcgfTtcclxuXHJcbiAgICBPYmplY3QuYXNzaWduKHpNb2RlbCwgcmVzcERhdGEpO1xyXG4gICAgZm9ybS5wYXRjaFZhbHVlKHpNb2RlbCk7XHJcbiAgICBmb3JtLm1hcmtBc1ByaXN0aW5lKCk7XHJcblxyXG4gICAgLy9yZXR1cm4gdGhpcy53ZWJBcGlTZXJ2aWNlLmh0dHBHZXQkKHVybCwgeyBuYW1lOiB0aGlzLmdyb3VwLmZpZWxkTmFtZSwgdHlwZTogJ0Zvcm1GaWVsZCcgfSkucGlwZShcclxuICAgIC8vICB0YXAoKHJlc3BEYXRhOiBhbnkpID0+IHtcclxuICAgIC8vICAgIGRlYnVnZ2VyO1xyXG4gICAgLy8gICAgT2JqZWN0LmFzc2lnbih6TW9kZWwsIHJlc3BEYXRhKTtcclxuICAgIC8vICAgIGZvcm0ucGF0Y2hWYWx1ZSh6TW9kZWwpO1xyXG4gICAgLy8gICAgZm9ybS5tYXJrQXNQcmlzdGluZSgpO1xyXG4gICAgLy8gIH0pXHJcbiAgICAvLyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRvRm9ybUdyb3VwKGZpZWxkRWxlbWVudHM6IEFycmF5PFpGaWVsZD4pIHtcclxuICAgIGNvbnN0IGZvcm1Db250cm9sczogeyBba2V5OiBzdHJpbmddOiBGb3JtQ29udHJvbCB9ID0ge307XHJcbiAgICB0aGlzLmdldEZvcm1Db250cm9scyhmaWVsZEVsZW1lbnRzLCBmb3JtQ29udHJvbHMpO1xyXG4gICAgY29uc3QgbmV3Rm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cChmb3JtQ29udHJvbHMpO1xyXG4gICAgcmV0dXJuIG5ld0Zvcm1Hcm91cDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Rm9ybUNvbnRyb2xzKGZpZWxkQXJyYXk6IEFycmF5PFpGaWVsZD4sIGZvcm1Db250cm9sczogeyBba2V5OiBzdHJpbmddOiBGb3JtQ29udHJvbCB9KSB7XHJcbiAgICBmaWVsZEFycmF5LmZvckVhY2goZmllbGQgPT4ge1xyXG4gICAgICBpZiAodHlwZW9mIGZpZWxkLlZhbHVlID09PSBcInN0cmluZ1wiICYmIGZpZWxkLlZhbHVlLmluZGV4T2YoXCIuXCIpICE9PSAtMSkge1xyXG4gICAgICAgIGlmIChbJ3pncmlkJywgJ3p0cmVlJywgJ3ppbWcnLCAndGV4dGFyZWFqc29uJ10uaW5kZXhPZihmaWVsZC5UeXBlKSA9PT0gLTEpIHtcclxuICAgICAgICAgIGNvbnNvbGUud2FybihcIkZvcm1Db250cm9sIC0gaW52YWxpZCBmaWVsZCB2YWx1ZVwiLCBmaWVsZC5WYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZpZWxkLlZhbHVlKSkge1xyXG4gICAgICAgICAgdGhpcy5nZXRGb3JtQ29udHJvbHMoZmllbGQuVmFsdWUsIGZvcm1Db250cm9scyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgaXNGb3JtQ29udHJvbCA9IFpDb21wb25lbnRIZWxwZXIuaXNGb3JtQ29udHJvbChmaWVsZCk7XHJcbiAgICAgICAgICBjb25zdCBpc1Zpc2libGUgPSBaQ29tcG9uZW50SGVscGVyLmlzVmlzaWJsZUZvcm1Db250cm9sKHRoaXMsIGZpZWxkKTtcclxuICAgICAgICAgIGNvbnN0IGlzUmVxdWlyZWQgPSBaQ29tcG9uZW50SGVscGVyLmlzUmVxdWlyZWRGb3JtQ29udHJvbCh0aGlzLCBmaWVsZCk7XHJcbiAgICAgICAgICBpZiAoaXNGb3JtQ29udHJvbCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICBjb25zdCB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gWkNvbXBvbmVudEhlbHBlci5nZXRWYWxpZGF0b3JzKGZpZWxkLCBpc1Zpc2libGUsIGlzUmVxdWlyZWQpO1xyXG4gICAgICAgICAgICBmb3JtQ29udHJvbHNbZmllbGQuVmFsdWVdID0gbmV3IEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgICAgIHRoaXMuZ3JvdXBbJ196dWRmXycgKyB0aGlzLmRhdGEuTmFtZV0uek1vZGVsW2ZpZWxkLlZhbHVlXSxcclxuICAgICAgICAgICAgICB2YWxpZGF0b3JzXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmIChaQ29tcG9uZW50SGVscGVyLmhhc0NDRmllbGQoZmllbGQuVHlwZSkpIHtcclxuICAgICAgICAgICAgICBjb25zdCBjY1ZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBaQ29tcG9uZW50SGVscGVyLmdldENDVmFsaWRhdG9ycyhmaWVsZCwgaXNWaXNpYmxlLCBpc1JlcXVpcmVkKTtcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbHNbZmllbGQuQ0NWYWx1ZV0gPSBuZXcgRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3VwWydfenVkZl8nICsgdGhpcy5kYXRhLk5hbWVdLnpNb2RlbFtmaWVsZC5DQ1ZhbHVlXSxcclxuICAgICAgICAgICAgICAgIGNjVmFsaWRhdG9yc1xyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwZW5kUHJlZml4KGZpZWxkczogWkZpZWxkW10sIHByZWZpeDogYW55KSB7XHJcbiAgICBmaWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGZpZWxkLlZhbHVlKSkge1xyXG4gICAgICAgIHRoaXMuYXBwZW5kUHJlZml4KGZpZWxkLlZhbHVlLCBwcmVmaXgpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGZpZWxkLk5hbWUgPSBwcmVmaXggKyAnXycgKyBmaWVsZC5OYW1lO1xyXG4gICAgICAgIGlmIChmaWVsZC5UeXBlICE9ICd6YnV0dG9ucycpIHtcclxuICAgICAgICAgIGZpZWxkLlZhbHVlID0gcHJlZml4ICsgJ18nICsgZmllbGQuVmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpZWxkLlN1YlR5cGUgPSBwcmVmaXg7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgQ29tcG9uZW50SXNWaXNpYmxlKGZpZWxkOiBaRmllbGQpOiBhbnkge1xyXG4gICAgcmV0dXJuIFpDb21wb25lbnRIZWxwZXIuQ29tcG9uZW50SXNWaXNpYmxlKGZpZWxkLCB0aGlzLmdyb3VwKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRFbmFibGUgPSAoc3RhdHVzOiBib29sZWFuKSA9PiB7XHJcbiAgICB0aGlzLmNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSA9ICFzdGF0dXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0VmlzaWJsZSA9IChzdGF0dXM6IGJvb2xlYW4pID0+IHtcclxuICAgIHRoaXMuY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGUgPSBzdGF0dXM7XHJcbiAgICB0aGlzLmRhdGEuVmlzaWJsZSA9IHN0YXR1cztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRSZXF1aXJlID0gKHN0YXR1czogYm9vbGVhbikgPT4ge1xyXG4gICAgdGhpcy5jb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVxdWlyZWQgPSBzdGF0dXM7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLmNoYW5nZVZhbGlkYXRvcihzdGF0dXMsIHRoaXMuZ3JvdXAsIHRoaXMuZGF0YS5WYWx1ZSwgdGhpcy5jb21wb25lbnRQcm9wZXJ0aWVzLCBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhcHBlbmRGb3JtQ29udHJvbCh6dWRmQ29udHJvbE5hbWU6IHN0cmluZywgenVkZkNvbnRyb2w6IEZvcm1Db250cm9sLCBmaWVsZERhdGE6IFpGaWVsZCkge1xyXG4gICAgdGhpcy5mb3JtLmFkZENvbnRyb2woenVkZkNvbnRyb2xOYW1lLCB6dWRmQ29udHJvbCk7XHJcbiAgICB0aGlzLmZvcm1GaWVsZC5wdXNoKGZpZWxkRGF0YSk7XHJcbiAgfVxyXG4gICBcclxuICBwdWJsaWMgY2xlYXJGb3JtQ29udHJvbCgpIHtcclxuICAgIHRoaXMuZm9ybUZpZWxkLmZvckVhY2goZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMuZm9ybS5yZW1vdmVDb250cm9sKGRhdGEuVmFsdWUpOyBcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZGF0YS5WYWx1ZSA9IHRoaXMuaW5pdGlhbERhdGFWYWx1ZTtcclxuXHJcbiAgICB0aGlzLmZvcm1GaWVsZCA9IFtdO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IHN0eWxlPVwicGFkZGluZzogMTVweFwiICpuZ0lmPVwiZGF0YS5UaXRsZSAmJiAoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGVGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZSlcIiBjbGFzcz1cImlvbi1yb3dcIj5cclxuICAgPGtlbmRvLWNhcmQgKm5nSWY9XCJkYXRhLlRpdGxlXCIgd2lkdGg9XCIxMDAlXCIgPlxyXG4gICAgPGtlbmRvLWNhcmQtaGVhZGVyICA+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cImNhcmQtaGVhZGVyLXRpdGxlXCI+e3tkYXRhLlRpdGxlfX08L2lvbi1sYWJlbD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2tlbmRvLWNhcmQtaGVhZGVyPlxyXG4gICAgPGtlbmRvLWNhcmQtYm9keT5cclxuICAgICAgPGRpdiBjbGFzcz1cImlvbi1yb3dcIj5cclxuICAgICAgICA8YXBwLXpmb3JtY29udHJvbCBbbmdDbGFzc109XCJncm91cFtmaWVsZC5pc1Zpc2libGVGaWVsZF0gPyBmaWVsZC5EaXZDbGFzcyA6ICgoZmllbGQuVmlzaWJsZSA9PT0gdHJ1ZSkgPyAgZmllbGQuRGl2Q2xhc3MgOiAnZmxleC1oaWRlJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBmb3JtRmllbGQgfCBkaXZ6bGF5b3V0OiBkYXRhLnpsYXlvdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJmaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2dyb3VwXT1cImdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybV09XCJmb3JtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInp1ZGZ7e2RhdGEuTmFtZX19LXt7ZmllbGQuVHlwZX19LXt7ZmllbGQuTmFtZX19XCI+XHJcbiAgICAgICAgPC9hcHAtemZvcm1jb250cm9sPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwva2VuZG8tY2FyZC1ib2R5PiBcclxuICA8L2tlbmRvLWNhcmQ+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiAqbmdJZj1cIiFkYXRhLlRpdGxlICYmICghIWNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlRmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlKVwiIGNsYXNzPVwiaW9uLXJvd1wiPlxyXG4gIDxhcHAtemZvcm1jb250cm9sIFtuZ0NsYXNzXT1cImdyb3VwW2ZpZWxkLmlzVmlzaWJsZUZpZWxkXSA/IGZpZWxkLkRpdkNsYXNzIDogKChmaWVsZC5WaXNpYmxlID09PSB0cnVlKSA/ICBmaWVsZC5EaXZDbGFzcyA6ICdmbGV4LWhpZGUnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGZvcm1GaWVsZCB8IGRpdnpsYXlvdXQ6IGRhdGEuemxheW91dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiZ3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtXT1cImZvcm1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGlkPVwienVkZnt7ZGF0YS5OYW1lfX0te3tmaWVsZC5UeXBlfX0te3tmaWVsZC5OYW1lfX1cIj5cclxuICA8L2FwcC16Zm9ybWNvbnRyb2w+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -0,0 +1,20 @@
1
+ /********** Angular **********/
2
+ import { Component, Input } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ export class ZunknownComponent {
5
+ constructor() { }
6
+ ngOnInit() { }
7
+ }
8
+ ZunknownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: ZunknownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9
+ ZunknownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.4", type: ZunknownComponent, selector: "app-zunknown", inputs: { data: "data", group: "group", form: "form" }, ngImport: i0, template: "<p>\r\n Unknown field Type => {{ data.Type}} >> {{data.Name}}\r\n</p>\r\n", styles: [""] });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: ZunknownComponent, decorators: [{
11
+ type: Component,
12
+ args: [{ selector: 'app-zunknown', template: "<p>\r\n Unknown field Type => {{ data.Type}} >> {{data.Name}}\r\n</p>\r\n", styles: [""] }]
13
+ }], ctorParameters: function () { return []; }, propDecorators: { data: [{
14
+ type: Input
15
+ }], group: [{
16
+ type: Input
17
+ }], form: [{
18
+ type: Input
19
+ }] } });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienVua25vd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenVua25vd24venVua25vd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenVua25vd24venVua25vd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQWdCekQsTUFBTSxPQUFPLGlCQUFpQjtJQUs1QixnQkFBZ0IsQ0FBQztJQUVqQixRQUFRLEtBQUksQ0FBQzs7OEdBUEYsaUJBQWlCO2tHQUFqQixpQkFBaUIsNEdDakI5Qiw0RUFHQTsyRkRjYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsY0FBYzswRUFLZixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbi8qKioqKioqKioqIElvbmljICoqKioqKioqKiovXHJcblxyXG4vKioqKioqKioqKiBQbHVnaW4gKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuaW1wb3J0IHsgWkNvbXBvbmVudCwgWkdyb3VwLCBaRmllbGQgfSBmcm9tICdtbWhnbG9iYWwtemNvcmUnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXp1bmtub3duJyxcclxuICB0ZW1wbGF0ZVVybDogJy4venVua25vd24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3p1bmtub3duLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBadW5rbm93bkNvbXBvbmVudCBpbXBsZW1lbnRzIFpDb21wb25lbnQsIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgZGF0YTogWkZpZWxkO1xyXG4gIEBJbnB1dCgpIGdyb3VwOiBaR3JvdXA7XHJcbiAgQElucHV0KCkgZm9ybTogRm9ybUdyb3VwO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHt9XHJcblxyXG59XHJcbiIsIjxwPlxyXG4gIFVua25vd24gZmllbGQgVHlwZSA9PiB7eyBkYXRhLlR5cGV9fSA+PiB7e2RhdGEuTmFtZX19XHJcbjwvcD5cclxuIl19