verben-workflow-ui 0.5.77 → 0.5.79

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 (196) hide show
  1. package/README.md +13 -0
  2. package/esm2022/src/lib/components/actors/actors.component.mjs +5 -5
  3. package/esm2022/src/lib/components/actors/actors.facade.mjs +3 -3
  4. package/esm2022/src/lib/components/actors/actors.form.component.mjs +5 -5
  5. package/esm2022/src/lib/components/actors/actors.module.mjs +4 -4
  6. package/esm2022/src/lib/components/actors/actors.service.mjs +3 -3
  7. package/esm2022/src/lib/components/actors/actors.state.mjs +3 -3
  8. package/esm2022/src/lib/components/designer/components/label-editor.component.mjs +6 -6
  9. package/esm2022/src/lib/components/designer/components/node-selector.component.mjs +4 -4
  10. package/esm2022/src/lib/components/designer/components/swimlane-label.component.mjs +3 -3
  11. package/esm2022/src/lib/components/designer/components/swimlane-popup.component.mjs +3 -3
  12. package/esm2022/src/lib/components/designer/components/wf-canvas.component.mjs +6 -6
  13. package/esm2022/src/lib/components/designer/components/wf-designer.component.mjs +3 -3
  14. package/esm2022/src/lib/components/designer/components/wf-toolbar.component.mjs +6 -6
  15. package/esm2022/src/lib/components/designer/services/canvas-state.service.mjs +3 -3
  16. package/esm2022/src/lib/components/designer/services/connection-segment-interaction.service.mjs +3 -3
  17. package/esm2022/src/lib/components/designer/services/connection.service.mjs +3 -3
  18. package/esm2022/src/lib/components/designer/services/keyboard-handler.service.mjs +3 -3
  19. package/esm2022/src/lib/components/designer/services/label-management.service.mjs +3 -3
  20. package/esm2022/src/lib/components/designer/services/node-finder.service.mjs +3 -3
  21. package/esm2022/src/lib/components/designer/services/node-interaction.service.mjs +3 -3
  22. package/esm2022/src/lib/components/designer/services/node-precondition.service.mjs +3 -3
  23. package/esm2022/src/lib/components/designer/services/node-selection.service.mjs +3 -3
  24. package/esm2022/src/lib/components/designer/services/orthogonal-router.service.mjs +3 -3
  25. package/esm2022/src/lib/components/designer/services/position-update.service.mjs +3 -3
  26. package/esm2022/src/lib/components/designer/services/rendering.service.mjs +3 -3
  27. package/esm2022/src/lib/components/designer/services/swimlane-management.service.mjs +3 -3
  28. package/esm2022/src/lib/components/designer/services/swimlane-stats.service.mjs +3 -3
  29. package/esm2022/src/lib/components/designer/services/viewport.service.mjs +3 -3
  30. package/esm2022/src/lib/components/designer/services/wf-facade.service.mjs +3 -3
  31. package/esm2022/src/lib/components/designer/services/wf-mapper.service.mjs +3 -3
  32. package/esm2022/src/lib/components/designer/services/wf-persistence.service.mjs +3 -3
  33. package/esm2022/src/lib/components/designer/services/wf-state.service.mjs +3 -3
  34. package/esm2022/src/lib/components/expiration/expiration.component.mjs +3 -3
  35. package/esm2022/src/lib/components/expiration/expiration.module.mjs +4 -4
  36. package/esm2022/src/lib/components/file-render/file-render.component.mjs +5 -5
  37. package/esm2022/src/lib/components/file-render/file-render.module.mjs +4 -4
  38. package/esm2022/src/lib/components/file-upload/file-upload.component.mjs +5 -5
  39. package/esm2022/src/lib/components/file-upload/file-upload.module.mjs +4 -4
  40. package/esm2022/src/lib/components/flowable-status/flowable-status.component.mjs +5 -5
  41. package/esm2022/src/lib/components/flowable-status/flowable-status.facade.mjs +3 -3
  42. package/esm2022/src/lib/components/flowable-status/flowable-status.form.component.mjs +5 -5
  43. package/esm2022/src/lib/components/flowable-status/flowable-status.module.mjs +4 -4
  44. package/esm2022/src/lib/components/flowable-status/flowable-status.service.mjs +3 -3
  45. package/esm2022/src/lib/components/flowable-status/flowable-status.state.mjs +3 -3
  46. package/esm2022/src/lib/components/form-control/form-control.component.mjs +5 -5
  47. package/esm2022/src/lib/components/form-control/form-control.module.mjs +4 -4
  48. package/esm2022/src/lib/components/form-group/base-table-style.mjs +6 -6
  49. package/esm2022/src/lib/components/form-group/form-fields/form-fields.component.mjs +32 -15
  50. package/esm2022/src/lib/components/form-group/form-fields/form-fields.module.mjs +4 -4
  51. package/esm2022/src/lib/components/form-group/form-fields/form-fields.service.mjs +3 -3
  52. package/esm2022/src/lib/components/form-group/form-group.component.mjs +64 -13
  53. package/esm2022/src/lib/components/form-group/form-group.module.mjs +10 -6
  54. package/esm2022/src/lib/components/form-group/form-group.service.mjs +9 -4
  55. package/esm2022/src/lib/components/form-response/form-response.component.mjs +5 -5
  56. package/esm2022/src/lib/components/form-response/form-response.module.mjs +4 -4
  57. package/esm2022/src/lib/components/form-response/form-response.service.mjs +3 -3
  58. package/esm2022/src/lib/components/form-timer/form-timer.component.mjs +5 -5
  59. package/esm2022/src/lib/components/form-timer/form-timer.module.mjs +4 -4
  60. package/esm2022/src/lib/components/forms/base-table-style.mjs +6 -6
  61. package/esm2022/src/lib/components/forms/forms.component.mjs +8 -8
  62. package/esm2022/src/lib/components/forms/forms.module.mjs +4 -4
  63. package/esm2022/src/lib/components/forms/forms.service.mjs +3 -3
  64. package/esm2022/src/lib/components/journal/journal.component.mjs +3 -3
  65. package/esm2022/src/lib/components/journal/journal.module.mjs +4 -4
  66. package/esm2022/src/lib/components/my-queue/my-queue.component.mjs +7 -7
  67. package/esm2022/src/lib/components/my-queue/my-queue.facade.mjs +6 -41
  68. package/esm2022/src/lib/components/my-queue/my-queue.module.mjs +4 -4
  69. package/esm2022/src/lib/components/my-queue/my-queue.service.mjs +3 -3
  70. package/esm2022/src/lib/components/my-queue/my-queue.state.mjs +3 -3
  71. package/esm2022/src/lib/components/my-queue/tasks.form.component.mjs +5 -5
  72. package/esm2022/src/lib/components/operation-popup/operation-popup.component.mjs +5 -5
  73. package/esm2022/src/lib/components/operation-popup/operation-popup.facade.mjs +3 -3
  74. package/esm2022/src/lib/components/operation-popup/operation-popup.service.mjs +3 -3
  75. package/esm2022/src/lib/components/operation-popup/operation-popup.state.mjs +3 -3
  76. package/esm2022/src/lib/components/stage-details/stage-details.component.mjs +5 -5
  77. package/esm2022/src/lib/components/stage-details/stage-details.module.mjs +4 -4
  78. package/esm2022/src/lib/components/task-form/task-form.component.mjs +5 -5
  79. package/esm2022/src/lib/components/task-form/task-form.module.mjs +4 -4
  80. package/esm2022/src/lib/components/task-history/task-history.component.mjs +5 -5
  81. package/esm2022/src/lib/components/task-history/task-history.module.mjs +4 -4
  82. package/esm2022/src/lib/components/task-history/task-history.service.mjs +3 -3
  83. package/esm2022/src/lib/components/task-notification/base-table-style.mjs +6 -6
  84. package/esm2022/src/lib/components/task-notification/task-notification.component.mjs +5 -5
  85. package/esm2022/src/lib/components/task-notification/task-notification.module.mjs +4 -4
  86. package/esm2022/src/lib/components/task-notification/task-notification.service.mjs +3 -3
  87. package/esm2022/src/lib/components/tasks/tasks.component.mjs +5 -5
  88. package/esm2022/src/lib/components/tasks/tasks.facade.mjs +3 -3
  89. package/esm2022/src/lib/components/tasks/tasks.form.component.mjs +5 -5
  90. package/esm2022/src/lib/components/tasks/tasks.module.mjs +4 -4
  91. package/esm2022/src/lib/components/tasks/tasks.service.mjs +3 -3
  92. package/esm2022/src/lib/components/tasks/tasks.state.mjs +3 -3
  93. package/esm2022/src/lib/components/wf/wf.component.mjs +3 -3
  94. package/esm2022/src/lib/components/wf/wf.module.mjs +4 -4
  95. package/esm2022/src/lib/components/wf/wf.service.mjs +3 -3
  96. package/esm2022/src/lib/components/workflow/table-style.mjs +6 -6
  97. package/esm2022/src/lib/components/workflow/workflow.component.mjs +8 -8
  98. package/esm2022/src/lib/components/workflow/workflow.module.mjs +4 -4
  99. package/esm2022/src/lib/components/workflow-designer/action-dialog/action-dialog.component.mjs +5 -5
  100. package/esm2022/src/lib/components/workflow-designer/actor-tags-dialog/actor-tags-dialog.component.mjs +5 -5
  101. package/esm2022/src/lib/components/workflow-designer/conditions-popup/conditions-popup.component.mjs +3 -3
  102. package/esm2022/src/lib/components/workflow-designer/decision-popup/decision-popup.component.mjs +4 -4
  103. package/esm2022/src/lib/components/workflow-designer/designer-canvas/designer-canvas.component.mjs +3 -3
  104. package/esm2022/src/lib/components/workflow-designer/designer-toolbar/designer-toolbar.component.mjs +5 -5
  105. package/esm2022/src/lib/components/workflow-designer/escalation-dialog/escalation-dialog.component.mjs +5 -5
  106. package/esm2022/src/lib/components/workflow-designer/services/connection.service.mjs +3 -3
  107. package/esm2022/src/lib/components/workflow-designer/services/node-management.service.mjs +3 -3
  108. package/esm2022/src/lib/components/workflow-designer/services/popup.service.mjs +3 -3
  109. package/esm2022/src/lib/components/workflow-designer/services/swimlane.service.mjs +3 -3
  110. package/esm2022/src/lib/components/workflow-designer/services/transformer.service.mjs +3 -3
  111. package/esm2022/src/lib/components/workflow-designer/stage-dialog/stage-dialog.component.mjs +5 -5
  112. package/esm2022/src/lib/components/workflow-designer/stage-node/stage-node.component.mjs +5 -5
  113. package/esm2022/src/lib/components/workflow-designer/swimlane-dialog/swimlane-dialog.component.mjs +5 -5
  114. package/esm2022/src/lib/components/workflow-designer/workflow-data.service.mjs +3 -3
  115. package/esm2022/src/lib/components/workflow-designer/workflow-designer.component.mjs +4 -4
  116. package/esm2022/src/lib/components/workflow-designer/workflow-designer.module.mjs +4 -4
  117. package/esm2022/src/lib/components/workflow-designer/workflow-designer.state.mjs +3 -3
  118. package/esm2022/src/lib/components/workflows/workflow-form/workflow-form.component.mjs +5 -5
  119. package/esm2022/src/lib/components/workflows/workflows.component.mjs +5 -5
  120. package/esm2022/src/lib/components/workflows/workflows.facade.mjs +3 -3
  121. package/esm2022/src/lib/components/workflows/workflows.module.mjs +4 -4
  122. package/esm2022/src/lib/components/workflows/workflows.service.mjs +3 -3
  123. package/esm2022/src/lib/components/workflows/workflows.state.mjs +3 -3
  124. package/esm2022/src/lib/models/DataType.mjs +7 -1
  125. package/esm2022/src/lib/models/EAVEntity.mjs +2 -0
  126. package/esm2022/src/lib/models/FormEntity.mjs +1 -1
  127. package/esm2022/src/lib/models/public-api.mjs +2 -1
  128. package/esm2022/src/lib/pipes/async-label.pipe.mjs +3 -3
  129. package/esm2022/src/lib/services/environment.service.mjs +3 -3
  130. package/esm2022/src/lib/services/http-web-request.service.mjs +3 -3
  131. package/esm2022/src/lib/services/label.service.mjs +3 -3
  132. package/esm2022/src/lib/services/util.service.mjs +3 -3
  133. package/esm2022/src/lib/shared/base-table-style.mjs +6 -6
  134. package/esm2022/src/lib/shared/components/base-data-view.component.mjs +3 -3
  135. package/esm2022/src/lib/shared/shared.module.mjs +4 -4
  136. package/fesm2022/verben-workflow-ui-src-lib-components-actors.mjs +21 -21
  137. package/fesm2022/verben-workflow-ui-src-lib-components-actors.mjs.map +1 -1
  138. package/fesm2022/verben-workflow-ui-src-lib-components-designer.mjs +85 -85
  139. package/fesm2022/verben-workflow-ui-src-lib-components-designer.mjs.map +1 -1
  140. package/fesm2022/verben-workflow-ui-src-lib-components-expiration.mjs +7 -7
  141. package/fesm2022/verben-workflow-ui-src-lib-components-expiration.mjs.map +1 -1
  142. package/fesm2022/verben-workflow-ui-src-lib-components-file-render.mjs +8 -8
  143. package/fesm2022/verben-workflow-ui-src-lib-components-file-render.mjs.map +1 -1
  144. package/fesm2022/verben-workflow-ui-src-lib-components-file-upload.mjs +8 -8
  145. package/fesm2022/verben-workflow-ui-src-lib-components-file-upload.mjs.map +1 -1
  146. package/fesm2022/verben-workflow-ui-src-lib-components-flowable-status.mjs +21 -21
  147. package/fesm2022/verben-workflow-ui-src-lib-components-flowable-status.mjs.map +1 -1
  148. package/fesm2022/verben-workflow-ui-src-lib-components-form-control.mjs +8 -8
  149. package/fesm2022/verben-workflow-ui-src-lib-components-form-control.mjs.map +1 -1
  150. package/fesm2022/verben-workflow-ui-src-lib-components-form-group.mjs +120 -43
  151. package/fesm2022/verben-workflow-ui-src-lib-components-form-group.mjs.map +1 -1
  152. package/fesm2022/verben-workflow-ui-src-lib-components-form-response.mjs +11 -11
  153. package/fesm2022/verben-workflow-ui-src-lib-components-form-response.mjs.map +1 -1
  154. package/fesm2022/verben-workflow-ui-src-lib-components-form-timer.mjs +8 -8
  155. package/fesm2022/verben-workflow-ui-src-lib-components-form-timer.mjs.map +1 -1
  156. package/fesm2022/verben-workflow-ui-src-lib-components-forms.mjs +16 -16
  157. package/fesm2022/verben-workflow-ui-src-lib-components-forms.mjs.map +1 -1
  158. package/fesm2022/verben-workflow-ui-src-lib-components-journal.mjs +7 -7
  159. package/fesm2022/verben-workflow-ui-src-lib-components-my-queue.mjs +25 -60
  160. package/fesm2022/verben-workflow-ui-src-lib-components-my-queue.mjs.map +1 -1
  161. package/fesm2022/verben-workflow-ui-src-lib-components-operation-popup.mjs +13 -13
  162. package/fesm2022/verben-workflow-ui-src-lib-components-operation-popup.mjs.map +1 -1
  163. package/fesm2022/verben-workflow-ui-src-lib-components-stage-details.mjs +8 -8
  164. package/fesm2022/verben-workflow-ui-src-lib-components-stage-details.mjs.map +1 -1
  165. package/fesm2022/verben-workflow-ui-src-lib-components-task-form.mjs +8 -8
  166. package/fesm2022/verben-workflow-ui-src-lib-components-task-form.mjs.map +1 -1
  167. package/fesm2022/verben-workflow-ui-src-lib-components-task-history.mjs +11 -11
  168. package/fesm2022/verben-workflow-ui-src-lib-components-task-history.mjs.map +1 -1
  169. package/fesm2022/verben-workflow-ui-src-lib-components-task-notification.mjs +16 -16
  170. package/fesm2022/verben-workflow-ui-src-lib-components-task-notification.mjs.map +1 -1
  171. package/fesm2022/verben-workflow-ui-src-lib-components-tasks.mjs +21 -21
  172. package/fesm2022/verben-workflow-ui-src-lib-components-tasks.mjs.map +1 -1
  173. package/fesm2022/verben-workflow-ui-src-lib-components-wf.mjs +10 -10
  174. package/fesm2022/verben-workflow-ui-src-lib-components-workflow-designer.mjs +67 -67
  175. package/fesm2022/verben-workflow-ui-src-lib-components-workflow-designer.mjs.map +1 -1
  176. package/fesm2022/verben-workflow-ui-src-lib-components-workflow.mjs +16 -16
  177. package/fesm2022/verben-workflow-ui-src-lib-components-workflow.mjs.map +1 -1
  178. package/fesm2022/verben-workflow-ui-src-lib-components-workflows.mjs +21 -21
  179. package/fesm2022/verben-workflow-ui-src-lib-components-workflows.mjs.map +1 -1
  180. package/fesm2022/verben-workflow-ui-src-lib-models.mjs +6 -0
  181. package/fesm2022/verben-workflow-ui-src-lib-models.mjs.map +1 -1
  182. package/fesm2022/verben-workflow-ui-src-lib-pipes.mjs +3 -3
  183. package/fesm2022/verben-workflow-ui-src-lib-services.mjs +12 -12
  184. package/fesm2022/verben-workflow-ui-src-lib-shared.mjs +12 -12
  185. package/fesm2022/verben-workflow-ui-src-lib-shared.mjs.map +1 -1
  186. package/package.json +20 -20
  187. package/src/lib/components/form-group/form-fields/form-fields.component.d.ts +1 -0
  188. package/src/lib/components/form-group/form-group.component.d.ts +6 -1
  189. package/src/lib/components/form-group/form-group.module.d.ts +3 -2
  190. package/src/lib/components/my-queue/my-queue.facade.d.ts +0 -1
  191. package/src/lib/components/workflow/workflow.component.d.ts +1 -1
  192. package/src/lib/models/DataType.d.ts +7 -1
  193. package/src/lib/models/EAVEntity.d.ts +4 -0
  194. package/src/lib/models/FormEntity.d.ts +1 -0
  195. package/src/lib/models/public-api.d.ts +1 -0
  196. package/styles/styles.css +19 -1436
@@ -195,10 +195,10 @@ export class FlowableStatusFacade {
195
195
  this.state.setUpdating(false);
196
196
  }
197
197
  }
198
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowableStatusFacade, deps: [{ token: i1.FlowableStatusService }, { token: i2.FlowableStatusState }, { token: i3.UtilService }], target: i0.ɵɵFactoryTarget.Injectable });
199
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowableStatusFacade, providedIn: 'root' });
198
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FlowableStatusFacade, deps: [{ token: i1.FlowableStatusService }, { token: i2.FlowableStatusState }, { token: i3.UtilService }], target: i0.ɵɵFactoryTarget.Injectable });
199
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FlowableStatusFacade, providedIn: 'root' });
200
200
  }
201
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowableStatusFacade, decorators: [{
201
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FlowableStatusFacade, decorators: [{
202
202
  type: Injectable,
203
203
  args: [{
204
204
  providedIn: 'root',
@@ -36,12 +36,12 @@ export class FlowableStatusFormComponent {
36
36
  this.onSave.emit(this.form.value);
37
37
  }
38
38
  }
39
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowableStatusFormComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
40
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FlowableStatusFormComponent, selector: "flowable-status-form", inputs: { currentData: "currentData" }, outputs: { onSave: "onSave", switchView: "switchView" }, ngImport: i0, template: "<form [formGroup]=\"form\" class=\"flex flex-col px-3 pb-3 rounded-xl h-full w-full relative space-y-4\"\n (ngSubmit)=\"handleSubmit()\">\n <verbena-input name=\"Name\" label=\"Name\" formControlName=\"Name\" placeHolder=\"Enter Name\" />\n <verbena-input name=\"Description\" label=\"Description\" formControlName=\"Description\"\n placeHolder=\"Enter Description\" />\n\n <div class=\"flex justify-between gap-4 my-2\">\n <verbena-button (click)=\"switchView.emit()\" text=\"Switch To Table\" styleType=\"ylw-outline\"\n class=\"ml-auto\"></verbena-button>\n <verbena-button type=\"submit\" text=\"Save\" bgColor=\"#FFE681\" textColor=\"#404040\" borderRadius=\"10px\"\n pd=\"10px 20px\" width=\"114px\" height=\"39px\" [disable]=\"form.invalid\"></verbena-button>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "fontSize", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "passLength", "inputWrapperClass", "passwordToggle", "customErrorMessages", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "component", type: i2.VerbenaButtonComponent, selector: "verbena-button", inputs: ["text", "icon", "useIcon", "svgPosition", "iconPosition", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "fontSize", "fontWeight", "disable", "svgSize", "weight", "variant", "styleType", "svg", "svgWidth", "svgHeight", "iconColor", "svgColor", "buttonClass", "buttonTextClass", "isLoading", "spinnerSize", "spinnerColor"] }] });
39
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FlowableStatusFormComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
40
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FlowableStatusFormComponent, selector: "flowable-status-form", inputs: { currentData: "currentData" }, outputs: { onSave: "onSave", switchView: "switchView" }, ngImport: i0, template: "<form [formGroup]=\"form\" class=\"flex flex-col px-3 pb-3 rounded-xl h-full w-full relative space-y-4\"\n (ngSubmit)=\"handleSubmit()\">\n <verbena-input name=\"Name\" label=\"Name\" formControlName=\"Name\" placeHolder=\"Enter Name\" />\n <verbena-input name=\"Description\" label=\"Description\" formControlName=\"Description\"\n placeHolder=\"Enter Description\" />\n\n <div class=\"flex justify-between gap-4 my-2\">\n <verbena-button (click)=\"switchView.emit()\" text=\"Switch To Table\" styleType=\"ylw-outline\"\n class=\"ml-auto\"></verbena-button>\n <verbena-button type=\"submit\" text=\"Save\" bgColor=\"var(--vbn-color-primary)\" textColor=\"var(--vbn-color-on-primary)\" borderRadius=\"10px\"\n pd=\"10px 20px\" width=\"114px\" height=\"39px\" [disable]=\"form.invalid\"></verbena-button>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2.VerbenaInputComponent, selector: "verbena-input", inputs: ["disabled", "label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "fontSize", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "passLength", "inputWrapperClass", "passwordToggle", "customErrorMessages", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "component", type: i2.VerbenaButtonComponent, selector: "verbena-button", inputs: ["type", "text", "icon", "useIcon", "svgPosition", "iconPosition", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "fontSize", "fontWeight", "disable", "svgSize", "weight", "variant", "styleType", "svg", "svgWidth", "svgHeight", "iconColor", "svgColor", "buttonClass", "buttonTextClass", "isLoading", "spinnerSize", "spinnerColor"] }] });
41
41
  }
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowableStatusFormComponent, decorators: [{
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FlowableStatusFormComponent, decorators: [{
43
43
  type: Component,
44
- args: [{ selector: 'flowable-status-form', template: "<form [formGroup]=\"form\" class=\"flex flex-col px-3 pb-3 rounded-xl h-full w-full relative space-y-4\"\n (ngSubmit)=\"handleSubmit()\">\n <verbena-input name=\"Name\" label=\"Name\" formControlName=\"Name\" placeHolder=\"Enter Name\" />\n <verbena-input name=\"Description\" label=\"Description\" formControlName=\"Description\"\n placeHolder=\"Enter Description\" />\n\n <div class=\"flex justify-between gap-4 my-2\">\n <verbena-button (click)=\"switchView.emit()\" text=\"Switch To Table\" styleType=\"ylw-outline\"\n class=\"ml-auto\"></verbena-button>\n <verbena-button type=\"submit\" text=\"Save\" bgColor=\"#FFE681\" textColor=\"#404040\" borderRadius=\"10px\"\n pd=\"10px 20px\" width=\"114px\" height=\"39px\" [disable]=\"form.invalid\"></verbena-button>\n </div>\n</form>\n" }]
44
+ args: [{ selector: 'flowable-status-form', template: "<form [formGroup]=\"form\" class=\"flex flex-col px-3 pb-3 rounded-xl h-full w-full relative space-y-4\"\n (ngSubmit)=\"handleSubmit()\">\n <verbena-input name=\"Name\" label=\"Name\" formControlName=\"Name\" placeHolder=\"Enter Name\" />\n <verbena-input name=\"Description\" label=\"Description\" formControlName=\"Description\"\n placeHolder=\"Enter Description\" />\n\n <div class=\"flex justify-between gap-4 my-2\">\n <verbena-button (click)=\"switchView.emit()\" text=\"Switch To Table\" styleType=\"ylw-outline\"\n class=\"ml-auto\"></verbena-button>\n <verbena-button type=\"submit\" text=\"Save\" bgColor=\"var(--vbn-color-primary)\" textColor=\"var(--vbn-color-on-primary)\" borderRadius=\"10px\"\n pd=\"10px 20px\" width=\"114px\" height=\"39px\" [disable]=\"form.invalid\"></verbena-button>\n </div>\n</form>\n" }]
45
45
  }], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { onSave: [{
46
46
  type: Output
47
47
  }], switchView: [{
@@ -49,4 +49,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
49
49
  }], currentData: [{
50
50
  type: Input
51
51
  }] } });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvd2FibGUtc3RhdHVzLmZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvY29tcG9uZW50cy9mbG93YWJsZS1zdGF0dXMvZmxvd2FibGUtc3RhdHVzLmZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvY29tcG9uZW50cy9mbG93YWJsZS1zdGF0dXMvZmxvd2FibGUtc3RhdHVzLmZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBUXBFLE1BQU0sT0FBTywyQkFBMkI7SUF3QmxCO0lBdkJWLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBMkIsQ0FBQztJQUNyRCxVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztJQUVyRCxJQUNJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUNELElBQUksV0FBVyxDQUFDLEtBQXNCO1FBQ3BDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO2dCQUNuQixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRTtnQkFDM0IsV0FBVyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLEVBQUU7YUFDMUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3BCLENBQUM7SUFDSCxDQUFDO0lBRU8sWUFBWSxHQUFvQixJQUFJLENBQUM7SUFFN0MsSUFBSSxDQUFZO0lBRWhCLFlBQW9CLEVBQWU7UUFBZixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2pDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDeEIsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDakQsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7U0FDekQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxDQUFDO0lBQ0gsQ0FBQzt3R0FuQ1UsMkJBQTJCOzRGQUEzQiwyQkFBMkIsNkpDZHhDLDgwQkFhQTs7NEZEQ2EsMkJBQTJCO2tCQUp2QyxTQUFTOytCQUNFLHNCQUFzQjtnRkFJdEIsTUFBTTtzQkFBZixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBR0gsV0FBVztzQkFEZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENhcmREYXRhIH0gZnJvbSAndmVyYmVuLW5nLXVpJztcbmltcG9ydCB7IEZsb3dhYmxlU3RhdHVzIH0gZnJvbSAndmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvbW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZmxvd2FibGUtc3RhdHVzLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vZmxvd2FibGUtc3RhdHVzLmZvcm0uY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBGbG93YWJsZVN0YXR1c0Zvcm1Db21wb25lbnQge1xuICBAT3V0cHV0KCkgb25TYXZlID0gbmV3IEV2ZW50RW1pdHRlcjxQYXJ0aWFsPEZsb3dhYmxlU3RhdHVzPj4oKTtcbiAgQE91dHB1dCgpIHN3aXRjaFZpZXcgPSBuZXcgRXZlbnRFbWl0dGVyPHVuZGVmaW5lZD4oKTtcblxuICBASW5wdXQoKVxuICBnZXQgY3VycmVudERhdGEoKTogQ2FyZERhdGEgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudERhdGE7XG4gIH1cbiAgc2V0IGN1cnJlbnREYXRhKHZhbHVlOiBDYXJkRGF0YSB8IG51bGwpIHtcbiAgICB0aGlzLl9jdXJyZW50RGF0YSA9IHZhbHVlO1xuICAgIGlmICh2YWx1ZT8uZGF0YSkge1xuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICBOYW1lOiB2YWx1ZS5kYXRhLk5hbWUgfHwgJycsXG4gICAgICAgIERlc2NyaXB0aW9uOiB2YWx1ZS5kYXRhLkRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybS5yZXNldCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2N1cnJlbnREYXRhOiBDYXJkRGF0YSB8IG51bGwgPSBudWxsO1xuXG4gIGZvcm06IEZvcm1Hcm91cDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlcikge1xuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgTmFtZTogWycnLCB7IHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSB9XSxcbiAgICAgIERlc2NyaXB0aW9uOiBbJycsIHsgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlU3VibWl0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZvcm0udmFsaWQpIHtcbiAgICAgIHRoaXMub25TYXZlLmVtaXQodGhpcy5mb3JtLnZhbHVlKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBweC0zIHBiLTMgcm91bmRlZC14bCBoLWZ1bGwgdy1mdWxsIHJlbGF0aXZlIHNwYWNlLXktNFwiXG4gICAgKG5nU3VibWl0KT1cImhhbmRsZVN1Ym1pdCgpXCI+XG4gICAgPHZlcmJlbmEtaW5wdXQgbmFtZT1cIk5hbWVcIiBsYWJlbD1cIk5hbWVcIiBmb3JtQ29udHJvbE5hbWU9XCJOYW1lXCIgcGxhY2VIb2xkZXI9XCJFbnRlciBOYW1lXCIgLz5cbiAgICA8dmVyYmVuYS1pbnB1dCBuYW1lPVwiRGVzY3JpcHRpb25cIiBsYWJlbD1cIkRlc2NyaXB0aW9uXCIgZm9ybUNvbnRyb2xOYW1lPVwiRGVzY3JpcHRpb25cIlxuICAgICAgICBwbGFjZUhvbGRlcj1cIkVudGVyIERlc2NyaXB0aW9uXCIgLz5cblxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBnYXAtNCBteS0yXCI+XG4gICAgICAgIDx2ZXJiZW5hLWJ1dHRvbiAoY2xpY2spPVwic3dpdGNoVmlldy5lbWl0KClcIiB0ZXh0PVwiU3dpdGNoIFRvIFRhYmxlXCIgc3R5bGVUeXBlPVwieWx3LW91dGxpbmVcIlxuICAgICAgICAgICAgY2xhc3M9XCJtbC1hdXRvXCI+PC92ZXJiZW5hLWJ1dHRvbj5cbiAgICAgICAgPHZlcmJlbmEtYnV0dG9uIHR5cGU9XCJzdWJtaXRcIiB0ZXh0PVwiU2F2ZVwiIGJnQ29sb3I9XCIjRkZFNjgxXCIgdGV4dENvbG9yPVwiIzQwNDA0MFwiIGJvcmRlclJhZGl1cz1cIjEwcHhcIlxuICAgICAgICAgICAgcGQ9XCIxMHB4IDIwcHhcIiB3aWR0aD1cIjExNHB4XCIgaGVpZ2h0PVwiMzlweFwiIFtkaXNhYmxlXT1cImZvcm0uaW52YWxpZFwiPjwvdmVyYmVuYS1idXR0b24+XG4gICAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvd2FibGUtc3RhdHVzLmZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvY29tcG9uZW50cy9mbG93YWJsZS1zdGF0dXMvZmxvd2FibGUtc3RhdHVzLmZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvY29tcG9uZW50cy9mbG93YWJsZS1zdGF0dXMvZmxvd2FibGUtc3RhdHVzLmZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBUXBFLE1BQU0sT0FBTywyQkFBMkI7SUF3QmxCO0lBdkJWLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBMkIsQ0FBQztJQUNyRCxVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztJQUVyRCxJQUNJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUNELElBQUksV0FBVyxDQUFDLEtBQXNCO1FBQ3BDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO2dCQUNuQixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRTtnQkFDM0IsV0FBVyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLEVBQUU7YUFDMUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3BCLENBQUM7SUFDSCxDQUFDO0lBRU8sWUFBWSxHQUFvQixJQUFJLENBQUM7SUFFN0MsSUFBSSxDQUFZO0lBRWhCLFlBQW9CLEVBQWU7UUFBZixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2pDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDeEIsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDakQsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7U0FDekQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxDQUFDO0lBQ0gsQ0FBQzt3R0FuQ1UsMkJBQTJCOzRGQUEzQiwyQkFBMkIsNkpDZHhDLG0zQkFhQTs7NEZEQ2EsMkJBQTJCO2tCQUp2QyxTQUFTOytCQUNFLHNCQUFzQjtnRkFJdEIsTUFBTTtzQkFBZixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBR0gsV0FBVztzQkFEZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENhcmREYXRhIH0gZnJvbSAndmVyYmVuLW5nLXVpJztcbmltcG9ydCB7IEZsb3dhYmxlU3RhdHVzIH0gZnJvbSAndmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvbW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZmxvd2FibGUtc3RhdHVzLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vZmxvd2FibGUtc3RhdHVzLmZvcm0uY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBGbG93YWJsZVN0YXR1c0Zvcm1Db21wb25lbnQge1xuICBAT3V0cHV0KCkgb25TYXZlID0gbmV3IEV2ZW50RW1pdHRlcjxQYXJ0aWFsPEZsb3dhYmxlU3RhdHVzPj4oKTtcbiAgQE91dHB1dCgpIHN3aXRjaFZpZXcgPSBuZXcgRXZlbnRFbWl0dGVyPHVuZGVmaW5lZD4oKTtcblxuICBASW5wdXQoKVxuICBnZXQgY3VycmVudERhdGEoKTogQ2FyZERhdGEgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudERhdGE7XG4gIH1cbiAgc2V0IGN1cnJlbnREYXRhKHZhbHVlOiBDYXJkRGF0YSB8IG51bGwpIHtcbiAgICB0aGlzLl9jdXJyZW50RGF0YSA9IHZhbHVlO1xuICAgIGlmICh2YWx1ZT8uZGF0YSkge1xuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICBOYW1lOiB2YWx1ZS5kYXRhLk5hbWUgfHwgJycsXG4gICAgICAgIERlc2NyaXB0aW9uOiB2YWx1ZS5kYXRhLkRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybS5yZXNldCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2N1cnJlbnREYXRhOiBDYXJkRGF0YSB8IG51bGwgPSBudWxsO1xuXG4gIGZvcm06IEZvcm1Hcm91cDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlcikge1xuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgTmFtZTogWycnLCB7IHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSB9XSxcbiAgICAgIERlc2NyaXB0aW9uOiBbJycsIHsgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdIH1dLFxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlU3VibWl0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZvcm0udmFsaWQpIHtcbiAgICAgIHRoaXMub25TYXZlLmVtaXQodGhpcy5mb3JtLnZhbHVlKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBweC0zIHBiLTMgcm91bmRlZC14bCBoLWZ1bGwgdy1mdWxsIHJlbGF0aXZlIHNwYWNlLXktNFwiXG4gICAgKG5nU3VibWl0KT1cImhhbmRsZVN1Ym1pdCgpXCI+XG4gICAgPHZlcmJlbmEtaW5wdXQgbmFtZT1cIk5hbWVcIiBsYWJlbD1cIk5hbWVcIiBmb3JtQ29udHJvbE5hbWU9XCJOYW1lXCIgcGxhY2VIb2xkZXI9XCJFbnRlciBOYW1lXCIgLz5cbiAgICA8dmVyYmVuYS1pbnB1dCBuYW1lPVwiRGVzY3JpcHRpb25cIiBsYWJlbD1cIkRlc2NyaXB0aW9uXCIgZm9ybUNvbnRyb2xOYW1lPVwiRGVzY3JpcHRpb25cIlxuICAgICAgICBwbGFjZUhvbGRlcj1cIkVudGVyIERlc2NyaXB0aW9uXCIgLz5cblxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBnYXAtNCBteS0yXCI+XG4gICAgICAgIDx2ZXJiZW5hLWJ1dHRvbiAoY2xpY2spPVwic3dpdGNoVmlldy5lbWl0KClcIiB0ZXh0PVwiU3dpdGNoIFRvIFRhYmxlXCIgc3R5bGVUeXBlPVwieWx3LW91dGxpbmVcIlxuICAgICAgICAgICAgY2xhc3M9XCJtbC1hdXRvXCI+PC92ZXJiZW5hLWJ1dHRvbj5cbiAgICAgICAgPHZlcmJlbmEtYnV0dG9uIHR5cGU9XCJzdWJtaXRcIiB0ZXh0PVwiU2F2ZVwiIGJnQ29sb3I9XCJ2YXIoLS12Ym4tY29sb3ItcHJpbWFyeSlcIiB0ZXh0Q29sb3I9XCJ2YXIoLS12Ym4tY29sb3Itb24tcHJpbWFyeSlcIiBib3JkZXJSYWRpdXM9XCIxMHB4XCJcbiAgICAgICAgICAgIHBkPVwiMTBweCAyMHB4XCIgd2lkdGg9XCIxMTRweFwiIGhlaWdodD1cIjM5cHhcIiBbZGlzYWJsZV09XCJmb3JtLmludmFsaWRcIj48L3ZlcmJlbmEtYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9mb3JtPlxuIl19
@@ -6,11 +6,11 @@ import { FlowableStatusComponent } from './flowable-status.component';
6
6
  import { FlowableStatusFormComponent } from './flowable-status.form.component';
7
7
  import * as i0 from "@angular/core";
8
8
  export class FlowableStatusModule {
9
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowableStatusModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: FlowableStatusModule, declarations: [FlowableStatusComponent, FlowableStatusFormComponent], imports: [CommonModule, SharedModule, RouterLink], exports: [FlowableStatusComponent] });
11
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowableStatusModule, imports: [CommonModule, SharedModule] });
9
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FlowableStatusModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: FlowableStatusModule, declarations: [FlowableStatusComponent, FlowableStatusFormComponent], imports: [CommonModule, SharedModule, RouterLink], exports: [FlowableStatusComponent] });
11
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FlowableStatusModule, imports: [CommonModule, SharedModule] });
12
12
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowableStatusModule, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FlowableStatusModule, decorators: [{
14
14
  type: NgModule,
15
15
  args: [{
16
16
  declarations: [FlowableStatusComponent, FlowableStatusFormComponent],
@@ -42,10 +42,10 @@ export class FlowableStatusService {
42
42
  const url = `SaveFlowableStatus`;
43
43
  return this.httpService.post(url, requests);
44
44
  }
45
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowableStatusService, deps: [{ token: i1.HttpWebRequestService }, { token: i1.EnvironmentService }], target: i0.ɵɵFactoryTarget.Injectable });
46
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowableStatusService, providedIn: 'root' });
45
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FlowableStatusService, deps: [{ token: i1.HttpWebRequestService }, { token: i1.EnvironmentService }], target: i0.ɵɵFactoryTarget.Injectable });
46
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FlowableStatusService, providedIn: 'root' });
47
47
  }
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowableStatusService, decorators: [{
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FlowableStatusService, decorators: [{
49
49
  type: Injectable,
50
50
  args: [{
51
51
  providedIn: 'root',
@@ -73,10 +73,10 @@ export class FlowableStatusState {
73
73
  const currentRequests = this.data$.getValue();
74
74
  this.data$.next([...currentRequests, ...newRequests]);
75
75
  }
76
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowableStatusState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
77
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowableStatusState, providedIn: 'root' });
76
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FlowableStatusState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
77
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FlowableStatusState, providedIn: 'root' });
78
78
  }
79
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlowableStatusState, decorators: [{
79
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FlowableStatusState, decorators: [{
80
80
  type: Injectable,
81
81
  args: [{
82
82
  providedIn: 'root',
@@ -137,12 +137,12 @@ export class FormControlComponent {
137
137
  }
138
138
  return this.selectedFilesMap.get(property);
139
139
  }
140
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormControlComponent, deps: [{ token: i1.HttpWebRequestService }, { token: i1.UtilService }, { token: i0.ChangeDetectorRef }, { token: i1.EnvironmentService }], target: i0.ɵɵFactoryTarget.Component });
141
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormControlComponent, selector: "form-control", inputs: { dataType: "dataType", value: "value", boolInputType: "boolInputType", formProperties: "formProperties", disabled: "disabled" }, ngImport: i0, template: "<div class=\"flex flex-col gap-6 w-full\">\n <div *ngFor=\"let property of formProperties\">\n <ng-container [ngSwitch]=\"property.DataType\">\n <!-- Text, URL, and Color -->\n <verbena-input\n *ngSwitchCase=\"'Text'\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n [label]=\"formatLabel(property)\"\n [type]=\"'text'\"\n [placeHolder]=\"'Enter text'\"\n ></verbena-input>\n <verbena-input\n *ngSwitchCase=\"'MailAddress'\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n [label]=\"formatLabel(property)\"\n [type]=\"'email'\"\n [placeHolder]=\"'Enter email'\"\n ></verbena-input>\n <verbena-input\n *ngSwitchCase=\"'URL'\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n [label]=\"formatLabel(property)\"\n [type]=\"'url'\"\n [placeHolder]=\"'https://example.com'\"\n ></verbena-input>\n <div *ngSwitchCase=\"'Colour'\">\n <label [htmlFor]=\"property.id\">\n {{ formatLabel(property) }}\n <span class=\"flex items-center gap-1\">\n <input\n [id]=\"property.id\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n class=\"block mt-2 w-[100px]\"\n [type]=\"'color'\"\n />\n <span\n *ngIf=\"property.Value !== ''\"\n class=\"font-semibold\"\n [style.color]=\"property.Value\"\n >:{{ property.Value }}</span\n >\n </span>\n </label>\n </div>\n <verbena-textarea\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n *ngSwitchCase=\"'MultilineText'\"\n [label]=\"formatLabel(property)\"\n ></verbena-textarea>\n <verbena-input\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n *ngSwitchCase=\"'PhoneNumber'\"\n [label]=\"formatLabel(property)\"\n [type]=\"'text'\"\n [placeHolder]=\"'Enter text'\"\n ></verbena-input>\n\n <!-- Numeric inputs -->\n <verbena-input\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n *ngSwitchCase=\"'Number'\"\n [label]=\"formatLabel(property)\"\n [type]=\"'number'\"\n [placeHolder]=\"'Enter an integer'\"\n [max]=\"property.MaxValue\"\n [min]=\"property.MinValue\"\n ></verbena-input>\n <verbena-input\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n *ngSwitchCase=\"'Decimal'\"\n [label]=\"formatLabel(property)\"\n [type]=\"'text'\"\n [placeHolder]=\"'Enter decimal value'\"\n ></verbena-input>\n\n <!-- Boolean input -->\n <ng-container *ngSwitchCase=\"'YesNo'\">\n <label [htmlFor]=\"property.id\" class=\"block mb-2\">{{\n formatLabel(property)\n }}</label>\n <verbena-switch\n [disabled]=\"disabled || property.IsReadOnly\"\n [ngModel]=\"property.Value == 'true' || property.Value == 'True'\"\n (ngModelChange)=\"property.Value = $event.toString()\"\n [onText]=\"''\"\n [offText]=\"''\"\n [onColor]=\"'#1A237E'\"\n [label]=\"formatLabel(property)\"\n ></verbena-switch>\n </ng-container>\n\n <div *ngSwitchCase=\"'Video'\">\n <file-upload\n [selectedFiles]=\"getSelectedFilesIfAny(property)\"\n (selectedFilesChange)=\"onFileSelect($event, property)\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n [label]=\"formatLabel(property)\"\n [accept]=\"'video/*'\"\n [multiple]=\"false\"\n ></file-upload>\n <video\n *ngIf=\"property.Value !== ''\"\n [src]=\"setPreview(property.Value)\"\n controls\n class=\"w-full h-[100px] mt-3 rounded-md shadow\"\n ></video>\n </div>\n <div *ngSwitchCase=\"'Image'\">\n <file-upload\n [selectedFiles]=\"getSelectedFilesIfAny(property)\"\n (selectedFilesChange)=\"onFileSelect($event, property)\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n [label]=\"formatLabel(property)\"\n [accept]=\"'image/*'\"\n [multiple]=\"false\"\n ></file-upload>\n <img\n class=\"w-[100px] mx-auto\"\n *ngIf=\"property.Value !== ''\"\n [src]=\"setPreview(property.Value)\"\n />\n </div>\n <div *ngSwitchCase=\"'Audio'\">\n <file-upload\n [selectedFiles]=\"getSelectedFilesIfAny(property)\"\n (selectedFilesChange)=\"onFileSelect($event, property)\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n [label]=\"formatLabel(property)\"\n [accept]=\"'audio/*'\"\n [multiple]=\"false\"\n ></file-upload>\n <audio\n *ngIf=\"property.Value !== ''\"\n [src]=\"setPreview(property.Value)\"\n controls\n class=\"mt-3 w-full\"\n ></audio>\n </div>\n\n <div *ngSwitchCase=\"'SingleSelection'\">\n <div class=\"mb-2\">{{ formatLabel(property) }}</div>\n <verben-drop-down\n width=\"100%\"\n [placeholder]=\"property.Name\"\n [filter]=\"true\"\n [options]=\"optionsArray(property)\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n ></verben-drop-down>\n </div>\n <div *ngSwitchCase=\"'MultiSelection'\">\n <div class=\"mb-2\">{{ formatLabel(property) }}</div>\n <verben-drop-down\n width=\"100%\"\n [multiselect]=\"true\"\n [placeholder]=\"property.Name\"\n [options]=\"optionsArray(property)\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n ></verben-drop-down>\n </div>\n <div *ngSwitchCase=\"'SingleFileSelection'\">\n <file-upload\n [multiple]=\"false\"\n [selectedFiles]=\"getFiles(property)\"\n (selectedFilesChange)=\"onFileSelect($event, property)\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [label]=\"formatLabel(property)\"\n ></file-upload>\n <ng-container [ngSwitch]=\"getFileExtension(property.Value)\">\n <img\n *ngSwitchCase=\"'jpg'\"\n [src]=\"setPreview(property.Value)\"\n class=\"w-[100px] h-[100px] object-cover rounded-md border\"\n />\n <img\n *ngSwitchCase=\"'png'\"\n [src]=\"setPreview(property.Value)\"\n class=\"w-[100px] h-[100px] object-cover rounded-md border\"\n />\n\n <video\n *ngSwitchCase=\"'mp4'\"\n [src]=\"setPreview(property.Value)\"\n class=\"w-[150px] rounded-md shadow\"\n controls\n ></video>\n\n <audio\n *ngSwitchCase=\"'mp3'\"\n [src]=\"setPreview(property.Value)\"\n controls\n class=\"w-[150px]\"\n ></audio>\n </ng-container>\n </div>\n <div *ngSwitchCase=\"'MultiFileSelection'\">\n <file-upload\n [disabled]=\"disabled || property.IsReadOnly\"\n [selectedFiles]=\"getSelectedFilesIfAny(property)\"\n (selectedFilesChange)=\"onFileSelect($event, property)\"\n [multiple]=\"true\"\n [label]=\"formatLabel(property)\"\n >\n </file-upload>\n\n <div *ngIf=\"property.Value !== ''\" class=\"flex flex-wrap gap-3 mt-3\">\n <div *ngFor=\"let file of getFileArray(property.Value)\">\n <ng-container [ngSwitch]=\"getFileExtension(file)\">\n <img\n *ngSwitchCase=\"'jpg'\"\n [src]=\"setPreview(file)\"\n class=\"w-[100px] h-[100px] object-cover rounded-md border\"\n />\n <img\n *ngSwitchCase=\"'png'\"\n [src]=\"setPreview(file)\"\n class=\"w-[100px] h-[100px] object-cover rounded-md border\"\n />\n\n <video\n *ngSwitchCase=\"'mp4'\"\n [src]=\"setPreview(file)\"\n class=\"w-[150px] rounded-md shadow\"\n controls\n ></video>\n\n <audio\n *ngSwitchCase=\"'mp3'\"\n [src]=\"setPreview(file)\"\n controls\n class=\"w-[150px]\"\n ></audio>\n </ng-container>\n </div>\n </div>\n </div>\n\n <!-- Fallback for unsupported types -->\n <div *ngSwitchDefault>Unsupported data type: {{ property.DataType }}</div>\n </ng-container>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.DropDownComponent, selector: "verben-drop-down", inputs: ["options", "width", "showHorizontalLine", "horizontalLineColor", "optionLabel", "optionSubLabel", "optionValue", "placeholder", "invalidMessage", "errorPosition", "loadMoreCaption", "display", "showClear", "lazyLoad", "selectKey", "styleClass", "group", "multiselect", "filter", "avoidDuplication", "filterBy", "debounceTime", "minChar", "disabled", "required", "load", "asyncLabel", "search"], outputs: ["optionsChange", "onChange", "onClick", "onClear"] }, { kind: "component", type: i4.VerbenaSwitchComponent, selector: "verbena-switch", inputs: ["label", "checked", "disabled", "offColor", "onColor", "onText", "offText", "width", "height", "customStyles"], outputs: ["change"] }, { kind: "component", type: i4.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "fontSize", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "passLength", "inputWrapperClass", "passwordToggle", "customErrorMessages", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "component", type: i5.FileUploadComponent, selector: "file-upload", inputs: ["multiple", "label", "accept", "selectedFiles", "disabled"], outputs: ["selectedFilesChange"] }, { kind: "component", type: i4.VerbenaTextareaComponent, selector: "verbena-textarea", inputs: ["label", "required", "rows", "cols", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "value", "errorMessageColor"], outputs: ["valueChange"] }] });
140
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormControlComponent, deps: [{ token: i1.HttpWebRequestService }, { token: i1.UtilService }, { token: i0.ChangeDetectorRef }, { token: i1.EnvironmentService }], target: i0.ɵɵFactoryTarget.Component });
141
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FormControlComponent, selector: "form-control", inputs: { dataType: "dataType", value: "value", boolInputType: "boolInputType", formProperties: "formProperties", disabled: "disabled" }, ngImport: i0, template: "<div class=\"flex flex-col gap-6 w-full\">\n <div *ngFor=\"let property of formProperties\">\n <ng-container [ngSwitch]=\"property.DataType\">\n <!-- Text, URL, and Color -->\n <verbena-input\n *ngSwitchCase=\"'Text'\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n [label]=\"formatLabel(property)\"\n [type]=\"'text'\"\n [placeHolder]=\"'Enter text'\"\n ></verbena-input>\n <verbena-input\n *ngSwitchCase=\"'MailAddress'\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n [label]=\"formatLabel(property)\"\n [type]=\"'email'\"\n [placeHolder]=\"'Enter email'\"\n ></verbena-input>\n <verbena-input\n *ngSwitchCase=\"'URL'\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n [label]=\"formatLabel(property)\"\n [type]=\"'url'\"\n [placeHolder]=\"'https://example.com'\"\n ></verbena-input>\n <div *ngSwitchCase=\"'Colour'\">\n <label [htmlFor]=\"property.id\">\n {{ formatLabel(property) }}\n <span class=\"flex items-center gap-1\">\n <input\n [id]=\"property.id\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n class=\"block mt-2 w-[100px]\"\n [type]=\"'color'\"\n />\n <span\n *ngIf=\"property.Value !== ''\"\n class=\"font-semibold\"\n [style.color]=\"property.Value\"\n >:{{ property.Value }}</span\n >\n </span>\n </label>\n </div>\n <verbena-textarea\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n *ngSwitchCase=\"'MultilineText'\"\n [label]=\"formatLabel(property)\"\n ></verbena-textarea>\n <verbena-input\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n *ngSwitchCase=\"'PhoneNumber'\"\n [label]=\"formatLabel(property)\"\n [type]=\"'text'\"\n [placeHolder]=\"'Enter text'\"\n ></verbena-input>\n\n <!-- Numeric inputs -->\n <verbena-input\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n *ngSwitchCase=\"'Number'\"\n [label]=\"formatLabel(property)\"\n [type]=\"'number'\"\n [placeHolder]=\"'Enter an integer'\"\n [max]=\"property.MaxValue\"\n [min]=\"property.MinValue\"\n ></verbena-input>\n <verbena-input\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n *ngSwitchCase=\"'Decimal'\"\n [label]=\"formatLabel(property)\"\n [type]=\"'text'\"\n [placeHolder]=\"'Enter decimal value'\"\n ></verbena-input>\n\n <!-- Boolean input -->\n <ng-container *ngSwitchCase=\"'YesNo'\">\n <label [htmlFor]=\"property.id\" class=\"block mb-2\">{{\n formatLabel(property)\n }}</label>\n <verbena-switch\n [disabled]=\"disabled || property.IsReadOnly\"\n [ngModel]=\"property.Value == 'true' || property.Value == 'True'\"\n (ngModelChange)=\"property.Value = $event.toString()\"\n [onText]=\"''\"\n [offText]=\"''\"\n [onColor]=\"'var(--vbn-color-text)'\"\n [label]=\"formatLabel(property)\"\n ></verbena-switch>\n </ng-container>\n\n <div *ngSwitchCase=\"'Video'\">\n <file-upload\n [selectedFiles]=\"getSelectedFilesIfAny(property)\"\n (selectedFilesChange)=\"onFileSelect($event, property)\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n [label]=\"formatLabel(property)\"\n [accept]=\"'video/*'\"\n [multiple]=\"false\"\n ></file-upload>\n <video\n *ngIf=\"property.Value !== ''\"\n [src]=\"setPreview(property.Value)\"\n controls\n class=\"w-full h-[100px] mt-3 rounded-md shadow\"\n ></video>\n </div>\n <div *ngSwitchCase=\"'Image'\">\n <file-upload\n [selectedFiles]=\"getSelectedFilesIfAny(property)\"\n (selectedFilesChange)=\"onFileSelect($event, property)\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n [label]=\"formatLabel(property)\"\n [accept]=\"'image/*'\"\n [multiple]=\"false\"\n ></file-upload>\n <img\n class=\"w-[100px] mx-auto\"\n *ngIf=\"property.Value !== ''\"\n [src]=\"setPreview(property.Value)\"\n />\n </div>\n <div *ngSwitchCase=\"'Audio'\">\n <file-upload\n [selectedFiles]=\"getSelectedFilesIfAny(property)\"\n (selectedFilesChange)=\"onFileSelect($event, property)\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n [label]=\"formatLabel(property)\"\n [accept]=\"'audio/*'\"\n [multiple]=\"false\"\n ></file-upload>\n <audio\n *ngIf=\"property.Value !== ''\"\n [src]=\"setPreview(property.Value)\"\n controls\n class=\"mt-3 w-full\"\n ></audio>\n </div>\n\n <div *ngSwitchCase=\"'SingleSelection'\">\n <div class=\"mb-2\">{{ formatLabel(property) }}</div>\n <verben-drop-down\n width=\"100%\"\n [placeholder]=\"property.Name\"\n [filter]=\"true\"\n [options]=\"optionsArray(property)\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n ></verben-drop-down>\n </div>\n <div *ngSwitchCase=\"'MultiSelection'\">\n <div class=\"mb-2\">{{ formatLabel(property) }}</div>\n <verben-drop-down\n width=\"100%\"\n [multiselect]=\"true\"\n [placeholder]=\"property.Name\"\n [options]=\"optionsArray(property)\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n ></verben-drop-down>\n </div>\n <div *ngSwitchCase=\"'SingleFileSelection'\">\n <file-upload\n [multiple]=\"false\"\n [selectedFiles]=\"getFiles(property)\"\n (selectedFilesChange)=\"onFileSelect($event, property)\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [label]=\"formatLabel(property)\"\n ></file-upload>\n <ng-container [ngSwitch]=\"getFileExtension(property.Value)\">\n <img\n *ngSwitchCase=\"'jpg'\"\n [src]=\"setPreview(property.Value)\"\n class=\"w-[100px] h-[100px] object-cover rounded-md border\"\n />\n <img\n *ngSwitchCase=\"'png'\"\n [src]=\"setPreview(property.Value)\"\n class=\"w-[100px] h-[100px] object-cover rounded-md border\"\n />\n\n <video\n *ngSwitchCase=\"'mp4'\"\n [src]=\"setPreview(property.Value)\"\n class=\"w-[150px] rounded-md shadow\"\n controls\n ></video>\n\n <audio\n *ngSwitchCase=\"'mp3'\"\n [src]=\"setPreview(property.Value)\"\n controls\n class=\"w-[150px]\"\n ></audio>\n </ng-container>\n </div>\n <div *ngSwitchCase=\"'MultiFileSelection'\">\n <file-upload\n [disabled]=\"disabled || property.IsReadOnly\"\n [selectedFiles]=\"getSelectedFilesIfAny(property)\"\n (selectedFilesChange)=\"onFileSelect($event, property)\"\n [multiple]=\"true\"\n [label]=\"formatLabel(property)\"\n >\n </file-upload>\n\n <div *ngIf=\"property.Value !== ''\" class=\"flex flex-wrap gap-3 mt-3\">\n <div *ngFor=\"let file of getFileArray(property.Value)\">\n <ng-container [ngSwitch]=\"getFileExtension(file)\">\n <img\n *ngSwitchCase=\"'jpg'\"\n [src]=\"setPreview(file)\"\n class=\"w-[100px] h-[100px] object-cover rounded-md border\"\n />\n <img\n *ngSwitchCase=\"'png'\"\n [src]=\"setPreview(file)\"\n class=\"w-[100px] h-[100px] object-cover rounded-md border\"\n />\n\n <video\n *ngSwitchCase=\"'mp4'\"\n [src]=\"setPreview(file)\"\n class=\"w-[150px] rounded-md shadow\"\n controls\n ></video>\n\n <audio\n *ngSwitchCase=\"'mp3'\"\n [src]=\"setPreview(file)\"\n controls\n class=\"w-[150px]\"\n ></audio>\n </ng-container>\n </div>\n </div>\n </div>\n\n <!-- Fallback for unsupported types -->\n <div *ngSwitchDefault>Unsupported data type: {{ property.DataType }}</div>\n </ng-container>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.DropDownComponent, selector: "verben-drop-down", inputs: ["options", "width", "overlayWidth", "showHorizontalLine", "horizontalLineColor", "optionLabel", "optionSubLabel", "optionValue", "placeholder", "invalidMessage", "errorPosition", "loadMoreCaption", "display", "showClear", "lazyLoad", "selectKey", "styleClass", "group", "multiselect", "filter", "avoidDuplication", "filterBy", "debounceTime", "minChar", "refPageSize", "disabled", "required", "load", "asyncLabel", "search"], outputs: ["optionsChange", "onChange", "onClick", "onClear"] }, { kind: "component", type: i4.VerbenaSwitchComponent, selector: "verbena-switch", inputs: ["label", "checked", "disabled", "offColor", "onColor", "onText", "offText", "width", "height", "customStyles"], outputs: ["change"] }, { kind: "component", type: i4.VerbenaInputComponent, selector: "verbena-input", inputs: ["disabled", "label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "fontSize", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "passLength", "inputWrapperClass", "passwordToggle", "customErrorMessages", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "component", type: i5.FileUploadComponent, selector: "file-upload", inputs: ["multiple", "label", "accept", "selectedFiles", "disabled"], outputs: ["selectedFilesChange"] }, { kind: "component", type: i4.VerbenaTextareaComponent, selector: "verbena-textarea", inputs: ["disabled", "label", "required", "rows", "cols", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "value", "errorMessageColor"], outputs: ["valueChange"] }] });
142
142
  }
143
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormControlComponent, decorators: [{
143
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormControlComponent, decorators: [{
144
144
  type: Component,
145
- args: [{ selector: 'form-control', template: "<div class=\"flex flex-col gap-6 w-full\">\n <div *ngFor=\"let property of formProperties\">\n <ng-container [ngSwitch]=\"property.DataType\">\n <!-- Text, URL, and Color -->\n <verbena-input\n *ngSwitchCase=\"'Text'\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n [label]=\"formatLabel(property)\"\n [type]=\"'text'\"\n [placeHolder]=\"'Enter text'\"\n ></verbena-input>\n <verbena-input\n *ngSwitchCase=\"'MailAddress'\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n [label]=\"formatLabel(property)\"\n [type]=\"'email'\"\n [placeHolder]=\"'Enter email'\"\n ></verbena-input>\n <verbena-input\n *ngSwitchCase=\"'URL'\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n [label]=\"formatLabel(property)\"\n [type]=\"'url'\"\n [placeHolder]=\"'https://example.com'\"\n ></verbena-input>\n <div *ngSwitchCase=\"'Colour'\">\n <label [htmlFor]=\"property.id\">\n {{ formatLabel(property) }}\n <span class=\"flex items-center gap-1\">\n <input\n [id]=\"property.id\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n class=\"block mt-2 w-[100px]\"\n [type]=\"'color'\"\n />\n <span\n *ngIf=\"property.Value !== ''\"\n class=\"font-semibold\"\n [style.color]=\"property.Value\"\n >:{{ property.Value }}</span\n >\n </span>\n </label>\n </div>\n <verbena-textarea\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n *ngSwitchCase=\"'MultilineText'\"\n [label]=\"formatLabel(property)\"\n ></verbena-textarea>\n <verbena-input\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n *ngSwitchCase=\"'PhoneNumber'\"\n [label]=\"formatLabel(property)\"\n [type]=\"'text'\"\n [placeHolder]=\"'Enter text'\"\n ></verbena-input>\n\n <!-- Numeric inputs -->\n <verbena-input\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n *ngSwitchCase=\"'Number'\"\n [label]=\"formatLabel(property)\"\n [type]=\"'number'\"\n [placeHolder]=\"'Enter an integer'\"\n [max]=\"property.MaxValue\"\n [min]=\"property.MinValue\"\n ></verbena-input>\n <verbena-input\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n *ngSwitchCase=\"'Decimal'\"\n [label]=\"formatLabel(property)\"\n [type]=\"'text'\"\n [placeHolder]=\"'Enter decimal value'\"\n ></verbena-input>\n\n <!-- Boolean input -->\n <ng-container *ngSwitchCase=\"'YesNo'\">\n <label [htmlFor]=\"property.id\" class=\"block mb-2\">{{\n formatLabel(property)\n }}</label>\n <verbena-switch\n [disabled]=\"disabled || property.IsReadOnly\"\n [ngModel]=\"property.Value == 'true' || property.Value == 'True'\"\n (ngModelChange)=\"property.Value = $event.toString()\"\n [onText]=\"''\"\n [offText]=\"''\"\n [onColor]=\"'#1A237E'\"\n [label]=\"formatLabel(property)\"\n ></verbena-switch>\n </ng-container>\n\n <div *ngSwitchCase=\"'Video'\">\n <file-upload\n [selectedFiles]=\"getSelectedFilesIfAny(property)\"\n (selectedFilesChange)=\"onFileSelect($event, property)\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n [label]=\"formatLabel(property)\"\n [accept]=\"'video/*'\"\n [multiple]=\"false\"\n ></file-upload>\n <video\n *ngIf=\"property.Value !== ''\"\n [src]=\"setPreview(property.Value)\"\n controls\n class=\"w-full h-[100px] mt-3 rounded-md shadow\"\n ></video>\n </div>\n <div *ngSwitchCase=\"'Image'\">\n <file-upload\n [selectedFiles]=\"getSelectedFilesIfAny(property)\"\n (selectedFilesChange)=\"onFileSelect($event, property)\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n [label]=\"formatLabel(property)\"\n [accept]=\"'image/*'\"\n [multiple]=\"false\"\n ></file-upload>\n <img\n class=\"w-[100px] mx-auto\"\n *ngIf=\"property.Value !== ''\"\n [src]=\"setPreview(property.Value)\"\n />\n </div>\n <div *ngSwitchCase=\"'Audio'\">\n <file-upload\n [selectedFiles]=\"getSelectedFilesIfAny(property)\"\n (selectedFilesChange)=\"onFileSelect($event, property)\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n [label]=\"formatLabel(property)\"\n [accept]=\"'audio/*'\"\n [multiple]=\"false\"\n ></file-upload>\n <audio\n *ngIf=\"property.Value !== ''\"\n [src]=\"setPreview(property.Value)\"\n controls\n class=\"mt-3 w-full\"\n ></audio>\n </div>\n\n <div *ngSwitchCase=\"'SingleSelection'\">\n <div class=\"mb-2\">{{ formatLabel(property) }}</div>\n <verben-drop-down\n width=\"100%\"\n [placeholder]=\"property.Name\"\n [filter]=\"true\"\n [options]=\"optionsArray(property)\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n ></verben-drop-down>\n </div>\n <div *ngSwitchCase=\"'MultiSelection'\">\n <div class=\"mb-2\">{{ formatLabel(property) }}</div>\n <verben-drop-down\n width=\"100%\"\n [multiselect]=\"true\"\n [placeholder]=\"property.Name\"\n [options]=\"optionsArray(property)\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n ></verben-drop-down>\n </div>\n <div *ngSwitchCase=\"'SingleFileSelection'\">\n <file-upload\n [multiple]=\"false\"\n [selectedFiles]=\"getFiles(property)\"\n (selectedFilesChange)=\"onFileSelect($event, property)\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [label]=\"formatLabel(property)\"\n ></file-upload>\n <ng-container [ngSwitch]=\"getFileExtension(property.Value)\">\n <img\n *ngSwitchCase=\"'jpg'\"\n [src]=\"setPreview(property.Value)\"\n class=\"w-[100px] h-[100px] object-cover rounded-md border\"\n />\n <img\n *ngSwitchCase=\"'png'\"\n [src]=\"setPreview(property.Value)\"\n class=\"w-[100px] h-[100px] object-cover rounded-md border\"\n />\n\n <video\n *ngSwitchCase=\"'mp4'\"\n [src]=\"setPreview(property.Value)\"\n class=\"w-[150px] rounded-md shadow\"\n controls\n ></video>\n\n <audio\n *ngSwitchCase=\"'mp3'\"\n [src]=\"setPreview(property.Value)\"\n controls\n class=\"w-[150px]\"\n ></audio>\n </ng-container>\n </div>\n <div *ngSwitchCase=\"'MultiFileSelection'\">\n <file-upload\n [disabled]=\"disabled || property.IsReadOnly\"\n [selectedFiles]=\"getSelectedFilesIfAny(property)\"\n (selectedFilesChange)=\"onFileSelect($event, property)\"\n [multiple]=\"true\"\n [label]=\"formatLabel(property)\"\n >\n </file-upload>\n\n <div *ngIf=\"property.Value !== ''\" class=\"flex flex-wrap gap-3 mt-3\">\n <div *ngFor=\"let file of getFileArray(property.Value)\">\n <ng-container [ngSwitch]=\"getFileExtension(file)\">\n <img\n *ngSwitchCase=\"'jpg'\"\n [src]=\"setPreview(file)\"\n class=\"w-[100px] h-[100px] object-cover rounded-md border\"\n />\n <img\n *ngSwitchCase=\"'png'\"\n [src]=\"setPreview(file)\"\n class=\"w-[100px] h-[100px] object-cover rounded-md border\"\n />\n\n <video\n *ngSwitchCase=\"'mp4'\"\n [src]=\"setPreview(file)\"\n class=\"w-[150px] rounded-md shadow\"\n controls\n ></video>\n\n <audio\n *ngSwitchCase=\"'mp3'\"\n [src]=\"setPreview(file)\"\n controls\n class=\"w-[150px]\"\n ></audio>\n </ng-container>\n </div>\n </div>\n </div>\n\n <!-- Fallback for unsupported types -->\n <div *ngSwitchDefault>Unsupported data type: {{ property.DataType }}</div>\n </ng-container>\n </div>\n</div>\n" }]
145
+ args: [{ selector: 'form-control', template: "<div class=\"flex flex-col gap-6 w-full\">\n <div *ngFor=\"let property of formProperties\">\n <ng-container [ngSwitch]=\"property.DataType\">\n <!-- Text, URL, and Color -->\n <verbena-input\n *ngSwitchCase=\"'Text'\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n [label]=\"formatLabel(property)\"\n [type]=\"'text'\"\n [placeHolder]=\"'Enter text'\"\n ></verbena-input>\n <verbena-input\n *ngSwitchCase=\"'MailAddress'\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n [label]=\"formatLabel(property)\"\n [type]=\"'email'\"\n [placeHolder]=\"'Enter email'\"\n ></verbena-input>\n <verbena-input\n *ngSwitchCase=\"'URL'\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n [label]=\"formatLabel(property)\"\n [type]=\"'url'\"\n [placeHolder]=\"'https://example.com'\"\n ></verbena-input>\n <div *ngSwitchCase=\"'Colour'\">\n <label [htmlFor]=\"property.id\">\n {{ formatLabel(property) }}\n <span class=\"flex items-center gap-1\">\n <input\n [id]=\"property.id\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n class=\"block mt-2 w-[100px]\"\n [type]=\"'color'\"\n />\n <span\n *ngIf=\"property.Value !== ''\"\n class=\"font-semibold\"\n [style.color]=\"property.Value\"\n >:{{ property.Value }}</span\n >\n </span>\n </label>\n </div>\n <verbena-textarea\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n *ngSwitchCase=\"'MultilineText'\"\n [label]=\"formatLabel(property)\"\n ></verbena-textarea>\n <verbena-input\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n *ngSwitchCase=\"'PhoneNumber'\"\n [label]=\"formatLabel(property)\"\n [type]=\"'text'\"\n [placeHolder]=\"'Enter text'\"\n ></verbena-input>\n\n <!-- Numeric inputs -->\n <verbena-input\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n *ngSwitchCase=\"'Number'\"\n [label]=\"formatLabel(property)\"\n [type]=\"'number'\"\n [placeHolder]=\"'Enter an integer'\"\n [max]=\"property.MaxValue\"\n [min]=\"property.MinValue\"\n ></verbena-input>\n <verbena-input\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n *ngSwitchCase=\"'Decimal'\"\n [label]=\"formatLabel(property)\"\n [type]=\"'text'\"\n [placeHolder]=\"'Enter decimal value'\"\n ></verbena-input>\n\n <!-- Boolean input -->\n <ng-container *ngSwitchCase=\"'YesNo'\">\n <label [htmlFor]=\"property.id\" class=\"block mb-2\">{{\n formatLabel(property)\n }}</label>\n <verbena-switch\n [disabled]=\"disabled || property.IsReadOnly\"\n [ngModel]=\"property.Value == 'true' || property.Value == 'True'\"\n (ngModelChange)=\"property.Value = $event.toString()\"\n [onText]=\"''\"\n [offText]=\"''\"\n [onColor]=\"'var(--vbn-color-text)'\"\n [label]=\"formatLabel(property)\"\n ></verbena-switch>\n </ng-container>\n\n <div *ngSwitchCase=\"'Video'\">\n <file-upload\n [selectedFiles]=\"getSelectedFilesIfAny(property)\"\n (selectedFilesChange)=\"onFileSelect($event, property)\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n [label]=\"formatLabel(property)\"\n [accept]=\"'video/*'\"\n [multiple]=\"false\"\n ></file-upload>\n <video\n *ngIf=\"property.Value !== ''\"\n [src]=\"setPreview(property.Value)\"\n controls\n class=\"w-full h-[100px] mt-3 rounded-md shadow\"\n ></video>\n </div>\n <div *ngSwitchCase=\"'Image'\">\n <file-upload\n [selectedFiles]=\"getSelectedFilesIfAny(property)\"\n (selectedFilesChange)=\"onFileSelect($event, property)\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n [label]=\"formatLabel(property)\"\n [accept]=\"'image/*'\"\n [multiple]=\"false\"\n ></file-upload>\n <img\n class=\"w-[100px] mx-auto\"\n *ngIf=\"property.Value !== ''\"\n [src]=\"setPreview(property.Value)\"\n />\n </div>\n <div *ngSwitchCase=\"'Audio'\">\n <file-upload\n [selectedFiles]=\"getSelectedFilesIfAny(property)\"\n (selectedFilesChange)=\"onFileSelect($event, property)\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n [label]=\"formatLabel(property)\"\n [accept]=\"'audio/*'\"\n [multiple]=\"false\"\n ></file-upload>\n <audio\n *ngIf=\"property.Value !== ''\"\n [src]=\"setPreview(property.Value)\"\n controls\n class=\"mt-3 w-full\"\n ></audio>\n </div>\n\n <div *ngSwitchCase=\"'SingleSelection'\">\n <div class=\"mb-2\">{{ formatLabel(property) }}</div>\n <verben-drop-down\n width=\"100%\"\n [placeholder]=\"property.Name\"\n [filter]=\"true\"\n [options]=\"optionsArray(property)\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n ></verben-drop-down>\n </div>\n <div *ngSwitchCase=\"'MultiSelection'\">\n <div class=\"mb-2\">{{ formatLabel(property) }}</div>\n <verben-drop-down\n width=\"100%\"\n [multiselect]=\"true\"\n [placeholder]=\"property.Name\"\n [options]=\"optionsArray(property)\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [(ngModel)]=\"property.Value\"\n ></verben-drop-down>\n </div>\n <div *ngSwitchCase=\"'SingleFileSelection'\">\n <file-upload\n [multiple]=\"false\"\n [selectedFiles]=\"getFiles(property)\"\n (selectedFilesChange)=\"onFileSelect($event, property)\"\n [disabled]=\"disabled || property.IsReadOnly\"\n [label]=\"formatLabel(property)\"\n ></file-upload>\n <ng-container [ngSwitch]=\"getFileExtension(property.Value)\">\n <img\n *ngSwitchCase=\"'jpg'\"\n [src]=\"setPreview(property.Value)\"\n class=\"w-[100px] h-[100px] object-cover rounded-md border\"\n />\n <img\n *ngSwitchCase=\"'png'\"\n [src]=\"setPreview(property.Value)\"\n class=\"w-[100px] h-[100px] object-cover rounded-md border\"\n />\n\n <video\n *ngSwitchCase=\"'mp4'\"\n [src]=\"setPreview(property.Value)\"\n class=\"w-[150px] rounded-md shadow\"\n controls\n ></video>\n\n <audio\n *ngSwitchCase=\"'mp3'\"\n [src]=\"setPreview(property.Value)\"\n controls\n class=\"w-[150px]\"\n ></audio>\n </ng-container>\n </div>\n <div *ngSwitchCase=\"'MultiFileSelection'\">\n <file-upload\n [disabled]=\"disabled || property.IsReadOnly\"\n [selectedFiles]=\"getSelectedFilesIfAny(property)\"\n (selectedFilesChange)=\"onFileSelect($event, property)\"\n [multiple]=\"true\"\n [label]=\"formatLabel(property)\"\n >\n </file-upload>\n\n <div *ngIf=\"property.Value !== ''\" class=\"flex flex-wrap gap-3 mt-3\">\n <div *ngFor=\"let file of getFileArray(property.Value)\">\n <ng-container [ngSwitch]=\"getFileExtension(file)\">\n <img\n *ngSwitchCase=\"'jpg'\"\n [src]=\"setPreview(file)\"\n class=\"w-[100px] h-[100px] object-cover rounded-md border\"\n />\n <img\n *ngSwitchCase=\"'png'\"\n [src]=\"setPreview(file)\"\n class=\"w-[100px] h-[100px] object-cover rounded-md border\"\n />\n\n <video\n *ngSwitchCase=\"'mp4'\"\n [src]=\"setPreview(file)\"\n class=\"w-[150px] rounded-md shadow\"\n controls\n ></video>\n\n <audio\n *ngSwitchCase=\"'mp3'\"\n [src]=\"setPreview(file)\"\n controls\n class=\"w-[150px]\"\n ></audio>\n </ng-container>\n </div>\n </div>\n </div>\n\n <!-- Fallback for unsupported types -->\n <div *ngSwitchDefault>Unsupported data type: {{ property.DataType }}</div>\n </ng-container>\n </div>\n</div>\n" }]
146
146
  }], ctorParameters: () => [{ type: i1.HttpWebRequestService }, { type: i1.UtilService }, { type: i0.ChangeDetectorRef }, { type: i1.EnvironmentService }], propDecorators: { dataType: [{
147
147
  type: Input
148
148
  }], value: [{
@@ -154,4 +154,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
154
154
  }], disabled: [{
155
155
  type: Input
156
156
  }] } });
157
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb250cm9sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS1jb250cm9sL2Zvcm0tY29udHJvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0tY29udHJvbC9mb3JtLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUNMLGFBQWEsRUFFYixXQUFXLEdBQ1osTUFBTSxtQ0FBbUMsQ0FBQztBQUMzQyxPQUFPLEVBQUUsUUFBUSxFQUFvQixNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7O0FBZS9FLE1BQU0sT0FBTyxvQkFBb0I7SUFVckI7SUFDQTtJQUNBO0lBQ0E7SUFaRCxRQUFRLENBQVk7SUFDcEIsS0FBSyxHQUFRLEVBQUUsQ0FBQztJQUNoQixhQUFhLEdBQWtCLFVBQVUsQ0FBQztJQUMxQyxjQUFjLEdBQW1CLEVBQUUsQ0FBQztJQUNwQyxRQUFRLEdBQVksS0FBSyxDQUFDO0lBRW5DLFdBQVcsR0FBVyxFQUFFLENBQUM7SUFDekIsT0FBTyxHQUFXLEVBQUUsQ0FBQztJQUNyQixZQUNVLE1BQTZCLEVBQzdCLFdBQXdCLEVBQ3hCLEdBQXNCLEVBQ3RCLE1BQTBCO1FBSDFCLFdBQU0sR0FBTixNQUFNLENBQXVCO1FBQzdCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBRWxDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFX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QyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxRQUFzQjtRQUMxQyxJQUFJLFFBQVEsR0FBUTtZQUNsQixJQUFJLEVBQUUsUUFBUSxDQUFDLEtBQUs7U0FDckIsQ0FBQztRQUVGLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDNUQsQ0FBQztJQUVELGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUFlLENBQUM7SUFFMUMsUUFBUSxDQUFDLFFBQWE7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBRSxDQUFDO0lBQzlDLENBQUM7d0dBcEpVLG9CQUFvQjs0RkFBcEIsb0JBQW9CLDhMQ3JCakMsd2dTQThQQTs7NEZEek9hLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxjQUFjO3FMQUtmLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBFcnJvclJlc3BvbnNlLFxuICBGb3JtUHJvcGVydHksXG4gIE9iamVjdFN0YXRlLFxufSBmcm9tICd2ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9tb2RlbHMnO1xuaW1wb3J0IHsgRGF0YVR5cGUsIEZpbGUgYXMgRmlsZURhdGEgfSBmcm9tICd2ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9tb2RlbHMnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIEh0dHBXZWJSZXF1ZXN0U2VydmljZSxcbiAgVXRpbFNlcnZpY2UsXG59IGZyb20gJ3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL3NlcnZpY2VzJztcbmltcG9ydCB7IEVudmlyb25tZW50U2VydmljZSB9IGZyb20gJ3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL3NlcnZpY2VzJztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5leHBvcnQgdHlwZSBCb29sSW5wdXRUeXBlID0gJ3N3aXRjaCcgfCAnY2hlY2tib3gnIHwgJ3JhZGlvJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZm9ybS1jb250cm9sJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tY29udHJvbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tY29udHJvbC5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1Db250cm9sQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgZGF0YVR5cGUhOiBEYXRhVHlwZTtcbiAgQElucHV0KCkgdmFsdWU6IGFueSA9ICcnO1xuICBASW5wdXQoKSBib29sSW5wdXRUeXBlOiBCb29sSW5wdXRUeXBlID0gJ2NoZWNrYm94JztcbiAgQElucHV0KCkgZm9ybVByb3BlcnRpZXM6IEZvcm1Qcm9wZXJ0eVtdID0gW107XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZmlsZUJhc2VVcmw6IHN0cmluZyA9ICcnO1xuICBmaWxlVXJsOiBzdHJpbmcgPSAnJztcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZXJ2ZXI6IEh0dHBXZWJSZXF1ZXN0U2VydmljZSxcbiAgICBwcml2YXRlIHV0aWxTZXJ2aWNlOiBVdGlsU2VydmljZSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBlbnZTdmM6IEVudmlyb25tZW50U2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy5maWxlQmFzZVVybCA9IHRoaXMuZW52U3ZjLmVudmlyb25tZW50LkZJTEVfQkFTRV9VUkw7XG4gICAgdGhpcy5maWxlVXJsID0gdGhpcy5lbnZTdmMuZW52aXJvbm1lbnQuRklMRV9VUkw7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRpYWxpemVEZWZhdWx0VmFsdWUoKTtcbiAgfVxuXG4gIGluaXRpYWxpemVEZWZhdWx0VmFsdWUoKSB7XG4gICAgaWYgKHRoaXMuZGF0YVR5cGUgPT09IERhdGFUeXBlLlllc05vICYmIHRoaXMudmFsdWUgPT09ICcnKSB7XG4gICAgICB0aGlzLnZhbHVlID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy52YWx1ZSA9ICcnO1xuICAgIH1cbiAgfVxuICBvbkZpbGVTZWxlY3QoZGF0YTogYW55LCBwcm9wZXJ0eTogRm9ybVByb3BlcnR5KTogdm9pZCB7XG4gICAgY29uc3QgZmlsZXM6IGFueSA9IGRhdGE7XG5cbiAgICBpZiAoIWZpbGVzIHx8IGZpbGVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgZmlsZUFycmF5OiBGaWxlRGF0YVtdID0gW107XG4gICAgY29uc3QgcmVhZGVyczogUHJvbWlzZTx2b2lkPltdID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBmaWxlID0gZmlsZXNbaV07XG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXG4gICAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGJhc2U2NCA9IHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nO1xuICAgICAgICAgIGZpbGVBcnJheS5wdXNoKHtcbiAgICAgICAgICAgIEV4dGVuc2lvbjogZmlsZS5uYW1lLnNwbGl0KCcuJykucG9wKCksXG4gICAgICAgICAgICBOYW1lOiB0aGlzLmdlbmVyYXRlUmFuZG9tQ29kZSgpLFxuICAgICAgICAgICAgRGF0YTogYmFzZTY0LFxuICAgICAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5OZXcsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJlYWRlci5vbmVycm9yID0gKGVycm9yKSA9PiByZWplY3QoZXJyb3IpO1xuICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgICAgIH0pO1xuXG4gICAgICByZWFkZXJzLnB1c2gocHJvbWlzZSk7XG4gICAgfVxuXG4gICAgUHJvbWlzZS5hbGwocmVhZGVycykudGhlbigoKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZygnRmlsZXMgcmVhZHkgdG8gdXBsb2FkOicsIGZpbGVBcnJheSk7XG4gICAgICB0aGlzLnVwbG9hZEZpbGUoZmlsZUFycmF5LCBwcm9wZXJ0eSk7XG4gICAgfSk7XG4gIH1cbiAgcHJpdmF0ZSBnZW5lcmF0ZVJhbmRvbUNvZGUobGVuZ3RoOiBudW1iZXIgPSAxMCk6IHN0cmluZyB7XG4gICAgY29uc3QgY2hhcnMgPVxuICAgICAgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5JztcbiAgICBsZXQgcmVzdWx0ID0gJyc7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgcmVzdWx0ICs9IGNoYXJzLmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFycy5sZW5ndGgpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBzZXRQcmV2aWV3KHZhbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXZhbCkgcmV0dXJuICcnO1xuICAgIGNvbnN0IGZpcnN0ID0gdmFsLnNwbGl0KCcsJylbMF0udHJpbSgpO1xuXG4gICAgaWYgKGZpcnN0LnN0YXJ0c1dpdGgoJ2h0dHAnKSB8fCBmaXJzdC5zdGFydHNXaXRoKCdkYXRhOicpKSB7XG4gICAgICByZXR1cm4gZmlyc3Q7XG4gICAgfVxuICAgIHJldHVybiBgJHt0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5GSUxFX1VSTH0vJHtmaXJzdH1gO1xuICB9XG5cbiAgZ2V0RmlsZUFycmF5KHZhbHVlOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIFtdO1xuICAgIHJldHVybiB2YWx1ZVxuICAgICAgLnNwbGl0KCcsJylcbiAgICAgIC5tYXAoKHYpID0+IHYudHJpbSgpKVxuICAgICAgLmZpbHRlcigodikgPT4gdik7XG4gIH1cblxuICBnZXRGaWxlRXh0ZW5zaW9uKGZpbGVVcmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFydHMgPSBmaWxlVXJsLnNwbGl0KCcuJyk7XG4gICAgcmV0dXJuIHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICBhc3luYyB1cGxvYWRGaWxlKFxuICAgIGZpbGVzOiBGaWxlRGF0YVtdLFxuICAgIHByb3BlcnR5OiBGb3JtUHJvcGVydHksXG4gICk6IFByb21pc2U8YW55W10gfCB1bmRlZmluZWQ+IHtcbiAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSSh0cnVlKTtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnNlcnZlci5wb3N0KFxuICAgICAgYFNhdmVGaWxlc2AsXG4gICAgICBmaWxlcyxcbiAgICAgIHRoaXMuZW52U3ZjLmVudmlyb25tZW50LkZJTEVfQkFTRV9VUkwsXG4gICAgKTtcbiAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSShmYWxzZSk7XG4gICAgaWYgKHJlcyBpbnN0YW5jZW9mIEVycm9yUmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciByZXN1bHQgPSByZXMgYXMgYW55O1xuICAgICAgY29uc3Qgam9pbmVkUmVzdWx0ID0gcmVzdWx0LmpvaW4oJywnKTtcbiAgICAgIHByb3BlcnR5LlZhbHVlID0gam9pbmVkUmVzdWx0O1xuXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgfVxuICBmb3JtYXRMYWJlbChwcm9wZXJ0eTogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gcHJvcGVydHkuSXNSZXF1aXJlZFxuICAgICAgPyBgJHtwcm9wZXJ0eS5OYW1lfSAqYFxuICAgICAgOiBgJHtwcm9wZXJ0eS5OYW1lfSAoT3B0aW9uYWwpYDtcbiAgfVxuICBvcHRpb25zQXJyYXkocHJvcGVydHk6IGFueSkge1xuICAgIHByb3BlcnR5Lk9wdGlvbnM/LnNwbGl0KCcsJykubWFwKChvcHRpb246IGFueSkgPT4gb3B0aW9uLnRyaW0oKSk7XG4gICAgcmV0dXJuIHByb3BlcnR5Lk9wdGlvbnM/LnNwbGl0KCcsJykubWFwKChvcHRpb246IGFueSkgPT4gb3B0aW9uLnRyaW0oKSk7XG4gIH1cbiAgb25TZWxlY3RlZEZpbGVDaGFuZ2UoZmlsZXM6IEZpbGVbXSkge1xuICAgIGNvbnNvbGUubG9nKGZpbGVzKTtcbiAgfVxuXG4gIGdldFNlbGVjdGVkRmlsZXNJZkFueShwcm9wZXJ0eTogRm9ybVByb3BlcnR5KTogRmlsZVtdIHtcbiAgICB2YXIgZmlsZU1vY2s6IGFueSA9IHtcbiAgICAgIG5hbWU6IHByb3BlcnR5LlZhbHVlLFxuICAgIH07XG5cbiAgICByZXR1cm4gcHJvcGVydHkuVmFsdWUudHJpbSgpLmxlbmd0aCA+IDAgPyBbZmlsZU1vY2tdIDogW107XG4gIH1cblxuICBzZWxlY3RlZEZpbGVzTWFwID0gbmV3IE1hcDxhbnksIEZpbGVbXT4oKTtcblxuICBnZXRGaWxlcyhwcm9wZXJ0eTogYW55KTogRmlsZVtdIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRGaWxlc01hcC5oYXMocHJvcGVydHkpKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRmlsZXNNYXAuc2V0KHByb3BlcnR5LCB0aGlzLmdldFNlbGVjdGVkRmlsZXNJZkFueShwcm9wZXJ0eSkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEZpbGVzTWFwLmdldChwcm9wZXJ0eSkhO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtNiB3LWZ1bGxcIj5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgcHJvcGVydHkgb2YgZm9ybVByb3BlcnRpZXNcIj5cbiAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJwcm9wZXJ0eS5EYXRhVHlwZVwiPlxuICAgICAgPCEtLSBUZXh0LCBVUkwsIGFuZCBDb2xvciAtLT5cbiAgICAgIDx2ZXJiZW5hLWlucHV0XG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInVGV4dCdcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcHJvcGVydHkuSXNSZWFkT25seVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwicHJvcGVydHkuVmFsdWVcIlxuICAgICAgICBbbGFiZWxdPVwiZm9ybWF0TGFiZWwocHJvcGVydHkpXCJcbiAgICAgICAgW3R5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidFbnRlciB0ZXh0J1wiXG4gICAgICA+PC92ZXJiZW5hLWlucHV0PlxuICAgICAgPHZlcmJlbmEtaW5wdXRcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidNYWlsQWRkcmVzcydcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcHJvcGVydHkuSXNSZWFkT25seVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwicHJvcGVydHkuVmFsdWVcIlxuICAgICAgICBbbGFiZWxdPVwiZm9ybWF0TGFiZWwocHJvcGVydHkpXCJcbiAgICAgICAgW3R5cGVdPVwiJ2VtYWlsJ1wiXG4gICAgICAgIFtwbGFjZUhvbGRlcl09XCInRW50ZXIgZW1haWwnXCJcbiAgICAgID48L3ZlcmJlbmEtaW5wdXQ+XG4gICAgICA8dmVyYmVuYS1pbnB1dFxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ1VSTCdcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcHJvcGVydHkuSXNSZWFkT25seVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwicHJvcGVydHkuVmFsdWVcIlxuICAgICAgICBbbGFiZWxdPVwiZm9ybWF0TGFiZWwocHJvcGVydHkpXCJcbiAgICAgICAgW3R5cGVdPVwiJ3VybCdcIlxuICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ2h0dHBzOi8vZXhhbXBsZS5jb20nXCJcbiAgICAgID48L3ZlcmJlbmEtaW5wdXQ+XG4gICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInQ29sb3VyJ1wiPlxuICAgICAgICA8bGFiZWwgW2h0bWxGb3JdPVwicHJvcGVydHkuaWRcIj5cbiAgICAgICAgICB7eyBmb3JtYXRMYWJlbChwcm9wZXJ0eSkgfX1cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgW2lkXT1cInByb3BlcnR5LmlkXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHByb3BlcnR5LklzUmVhZE9ubHlcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInByb3BlcnR5LlZhbHVlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJibG9jayBtdC0yIHctWzEwMHB4XVwiXG4gICAgICAgICAgICAgIFt0eXBlXT1cIidjb2xvcidcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICpuZ0lmPVwicHJvcGVydHkuVmFsdWUgIT09ICcnXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb250LXNlbWlib2xkXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInByb3BlcnR5LlZhbHVlXCJcbiAgICAgICAgICAgICAgPjp7eyBwcm9wZXJ0eS5WYWx1ZSB9fTwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuICAgICAgPHZlcmJlbmEtdGV4dGFyZWFcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHByb3BlcnR5LklzUmVhZE9ubHlcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInByb3BlcnR5LlZhbHVlXCJcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidNdWx0aWxpbmVUZXh0J1wiXG4gICAgICAgIFtsYWJlbF09XCJmb3JtYXRMYWJlbChwcm9wZXJ0eSlcIlxuICAgICAgPjwvdmVyYmVuYS10ZXh0YXJlYT5cbiAgICAgIDx2ZXJiZW5hLWlucHV0XG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBwcm9wZXJ0eS5Jc1JlYWRPbmx5XCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJwcm9wZXJ0eS5WYWx1ZVwiXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInUGhvbmVOdW1iZXInXCJcbiAgICAgICAgW2xhYmVsXT1cImZvcm1hdExhYmVsKHByb3BlcnR5KVwiXG4gICAgICAgIFt0eXBlXT1cIid0ZXh0J1wiXG4gICAgICAgIFtwbGFjZUhvbGRlcl09XCInRW50ZXIgdGV4dCdcIlxuICAgICAgPjwvdmVyYmVuYS1pbnB1dD5cblxuICAgICAgPCEtLSBOdW1lcmljIGlucHV0cyAtLT5cbiAgICAgIDx2ZXJiZW5hLWlucHV0XG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBwcm9wZXJ0eS5Jc1JlYWRPbmx5XCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJwcm9wZXJ0eS5WYWx1ZVwiXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInTnVtYmVyJ1wiXG4gICAgICAgIFtsYWJlbF09XCJmb3JtYXRMYWJlbChwcm9wZXJ0eSlcIlxuICAgICAgICBbdHlwZV09XCInbnVtYmVyJ1wiXG4gICAgICAgIFtwbGFjZUhvbGRlcl09XCInRW50ZXIgYW4gaW50ZWdlcidcIlxuICAgICAgICBbbWF4XT1cInByb3BlcnR5Lk1heFZhbHVlXCJcbiAgICAgICAgW21pbl09XCJwcm9wZXJ0eS5NaW5WYWx1ZVwiXG4gICAgICA+PC92ZXJiZW5hLWlucHV0PlxuICAgICAgPHZlcmJlbmEtaW5wdXRcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHByb3BlcnR5LklzUmVhZE9ubHlcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInByb3BlcnR5LlZhbHVlXCJcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidEZWNpbWFsJ1wiXG4gICAgICAgIFtsYWJlbF09XCJmb3JtYXRMYWJlbChwcm9wZXJ0eSlcIlxuICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0VudGVyIGRlY2ltYWwgdmFsdWUnXCJcbiAgICAgID48L3ZlcmJlbmEtaW5wdXQ+XG5cbiAgICAgIDwhLS0gQm9vbGVhbiBpbnB1dCAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidZZXNObydcIj5cbiAgICAgICAgPGxhYmVsIFtodG1sRm9yXT1cInByb3BlcnR5LmlkXCIgY2xhc3M9XCJibG9jayBtYi0yXCI+e3tcbiAgICAgICAgICBmb3JtYXRMYWJlbChwcm9wZXJ0eSlcbiAgICAgICAgfX08L2xhYmVsPlxuICAgICAgICA8dmVyYmVuYS1zd2l0Y2hcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcHJvcGVydHkuSXNSZWFkT25seVwiXG4gICAgICAgICAgW25nTW9kZWxdPVwicHJvcGVydHkuVmFsdWUgPT0gJ3RydWUnIHx8IHByb3BlcnR5LlZhbHVlID09ICdUcnVlJ1wiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwicHJvcGVydHkuVmFsdWUgPSAkZXZlbnQudG9TdHJpbmcoKVwiXG4gICAgICAgICAgW29uVGV4dF09XCInJ1wiXG4gICAgICAgICAgW29mZlRleHRdPVwiJydcIlxuICAgICAgICAgIFtvbkNvbG9yXT1cIicjMUEyMzdFJ1wiXG4gICAgICAgICAgW2xhYmVsXT1cImZvcm1hdExhYmVsKHByb3BlcnR5KVwiXG4gICAgICAgID48L3ZlcmJlbmEtc3dpdGNoPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidWaWRlbydcIj5cbiAgICAgICAgPGZpbGUtdXBsb2FkXG4gICAgICAgICAgW3NlbGVjdGVkRmlsZXNdPVwiZ2V0U2VsZWN0ZWRGaWxlc0lmQW55KHByb3BlcnR5KVwiXG4gICAgICAgICAgKHNlbGVjdGVkRmlsZXNDaGFuZ2UpPVwib25GaWxlU2VsZWN0KCRldmVudCwgcHJvcGVydHkpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcHJvcGVydHkuSXNSZWFkT25seVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJwcm9wZXJ0eS5WYWx1ZVwiXG4gICAgICAgICAgW2xhYmVsXT1cImZvcm1hdExhYmVsKHByb3BlcnR5KVwiXG4gICAgICAgICAgW2FjY2VwdF09XCIndmlkZW8vKidcIlxuICAgICAgICAgIFttdWx0aXBsZV09XCJmYWxzZVwiXG4gICAgICAgID48L2ZpbGUtdXBsb2FkPlxuICAgICAgICA8dmlkZW9cbiAgICAgICAgICAqbmdJZj1cInByb3BlcnR5LlZhbHVlICE9PSAnJ1wiXG4gICAgICAgICAgW3NyY109XCJzZXRQcmV2aWV3KHByb3BlcnR5LlZhbHVlKVwiXG4gICAgICAgICAgY29udHJvbHNcbiAgICAgICAgICBjbGFzcz1cInctZnVsbCBoLVsxMDBweF0gbXQtMyByb3VuZGVkLW1kIHNoYWRvd1wiXG4gICAgICAgID48L3ZpZGVvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInSW1hZ2UnXCI+XG4gICAgICAgIDxmaWxlLXVwbG9hZFxuICAgICAgICAgIFtzZWxlY3RlZEZpbGVzXT1cImdldFNlbGVjdGVkRmlsZXNJZkFueShwcm9wZXJ0eSlcIlxuICAgICAgICAgIChzZWxlY3RlZEZpbGVzQ2hhbmdlKT1cIm9uRmlsZVNlbGVjdCgkZXZlbnQsIHByb3BlcnR5KVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHByb3BlcnR5LklzUmVhZE9ubHlcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwicHJvcGVydHkuVmFsdWVcIlxuICAgICAgICAgIFtsYWJlbF09XCJmb3JtYXRMYWJlbChwcm9wZXJ0eSlcIlxuICAgICAgICAgIFthY2NlcHRdPVwiJ2ltYWdlLyonXCJcbiAgICAgICAgICBbbXVsdGlwbGVdPVwiZmFsc2VcIlxuICAgICAgICA+PC9maWxlLXVwbG9hZD5cbiAgICAgICAgPGltZ1xuICAgICAgICAgIGNsYXNzPVwidy1bMTAwcHhdIG14LWF1dG9cIlxuICAgICAgICAgICpuZ0lmPVwicHJvcGVydHkuVmFsdWUgIT09ICcnXCJcbiAgICAgICAgICBbc3JjXT1cInNldFByZXZpZXcocHJvcGVydHkuVmFsdWUpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ0F1ZGlvJ1wiPlxuICAgICAgICA8ZmlsZS11cGxvYWRcbiAgICAgICAgICBbc2VsZWN0ZWRGaWxlc109XCJnZXRTZWxlY3RlZEZpbGVzSWZBbnkocHJvcGVydHkpXCJcbiAgICAgICAgICAoc2VsZWN0ZWRGaWxlc0NoYW5nZSk9XCJvbkZpbGVTZWxlY3QoJGV2ZW50LCBwcm9wZXJ0eSlcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBwcm9wZXJ0eS5Jc1JlYWRPbmx5XCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInByb3BlcnR5LlZhbHVlXCJcbiAgICAgICAgICBbbGFiZWxdPVwiZm9ybWF0TGFiZWwocHJvcGVydHkpXCJcbiAgICAgICAgICBbYWNjZXB0XT1cIidhdWRpby8qJ1wiXG4gICAgICAgICAgW211bHRpcGxlXT1cImZhbHNlXCJcbiAgICAgICAgPjwvZmlsZS11cGxvYWQ+XG4gICAgICAgIDxhdWRpb1xuICAgICAgICAgICpuZ0lmPVwicHJvcGVydHkuVmFsdWUgIT09ICcnXCJcbiAgICAgICAgICBbc3JjXT1cInNldFByZXZpZXcocHJvcGVydHkuVmFsdWUpXCJcbiAgICAgICAgICBjb250cm9sc1xuICAgICAgICAgIGNsYXNzPVwibXQtMyB3LWZ1bGxcIlxuICAgICAgICA+PC9hdWRpbz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInU2luZ2xlU2VsZWN0aW9uJ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPnt7IGZvcm1hdExhYmVsKHByb3BlcnR5KSB9fTwvZGl2PlxuICAgICAgICA8dmVyYmVuLWRyb3AtZG93blxuICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInByb3BlcnR5Lk5hbWVcIlxuICAgICAgICAgIFtmaWx0ZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgW29wdGlvbnNdPVwib3B0aW9uc0FycmF5KHByb3BlcnR5KVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHByb3BlcnR5LklzUmVhZE9ubHlcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwicHJvcGVydHkuVmFsdWVcIlxuICAgICAgICA+PC92ZXJiZW4tZHJvcC1kb3duPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInTXVsdGlTZWxlY3Rpb24nXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+e3sgZm9ybWF0TGFiZWwocHJvcGVydHkpIH19PC9kaXY+XG4gICAgICAgIDx2ZXJiZW4tZHJvcC1kb3duXG4gICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICBbbXVsdGlzZWxlY3RdPVwidHJ1ZVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInByb3BlcnR5Lk5hbWVcIlxuICAgICAgICAgIFtvcHRpb25zXT1cIm9wdGlvbnNBcnJheShwcm9wZXJ0eSlcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBwcm9wZXJ0eS5Jc1JlYWRPbmx5XCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInByb3BlcnR5LlZhbHVlXCJcbiAgICAgICAgPjwvdmVyYmVuLWRyb3AtZG93bj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ1NpbmdsZUZpbGVTZWxlY3Rpb24nXCI+XG4gICAgICAgIDxmaWxlLXVwbG9hZFxuICAgICAgICAgIFttdWx0aXBsZV09XCJmYWxzZVwiXG4gICAgICAgICAgW3NlbGVjdGVkRmlsZXNdPVwiZ2V0RmlsZXMocHJvcGVydHkpXCJcbiAgICAgICAgICAoc2VsZWN0ZWRGaWxlc0NoYW5nZSk9XCJvbkZpbGVTZWxlY3QoJGV2ZW50LCBwcm9wZXJ0eSlcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBwcm9wZXJ0eS5Jc1JlYWRPbmx5XCJcbiAgICAgICAgICBbbGFiZWxdPVwiZm9ybWF0TGFiZWwocHJvcGVydHkpXCJcbiAgICAgICAgPjwvZmlsZS11cGxvYWQ+XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImdldEZpbGVFeHRlbnNpb24ocHJvcGVydHkuVmFsdWUpXCI+XG4gICAgICAgICAgPGltZ1xuICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidqcGcnXCJcbiAgICAgICAgICAgIFtzcmNdPVwic2V0UHJldmlldyhwcm9wZXJ0eS5WYWx1ZSlcIlxuICAgICAgICAgICAgY2xhc3M9XCJ3LVsxMDBweF0gaC1bMTAwcHhdIG9iamVjdC1jb3ZlciByb3VuZGVkLW1kIGJvcmRlclwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ3BuZydcIlxuICAgICAgICAgICAgW3NyY109XCJzZXRQcmV2aWV3KHByb3BlcnR5LlZhbHVlKVwiXG4gICAgICAgICAgICBjbGFzcz1cInctWzEwMHB4XSBoLVsxMDBweF0gb2JqZWN0LWNvdmVyIHJvdW5kZWQtbWQgYm9yZGVyXCJcbiAgICAgICAgICAvPlxuXG4gICAgICAgICAgPHZpZGVvXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ21wNCdcIlxuICAgICAgICAgICAgW3NyY109XCJzZXRQcmV2aWV3KHByb3BlcnR5LlZhbHVlKVwiXG4gICAgICAgICAgICBjbGFzcz1cInctWzE1MHB4XSByb3VuZGVkLW1kIHNoYWRvd1wiXG4gICAgICAgICAgICBjb250cm9sc1xuICAgICAgICAgID48L3ZpZGVvPlxuXG4gICAgICAgICAgPGF1ZGlvXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ21wMydcIlxuICAgICAgICAgICAgW3NyY109XCJzZXRQcmV2aWV3KHByb3BlcnR5LlZhbHVlKVwiXG4gICAgICAgICAgICBjb250cm9sc1xuICAgICAgICAgICAgY2xhc3M9XCJ3LVsxNTBweF1cIlxuICAgICAgICAgID48L2F1ZGlvPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ011bHRpRmlsZVNlbGVjdGlvbidcIj5cbiAgICAgICAgPGZpbGUtdXBsb2FkXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHByb3BlcnR5LklzUmVhZE9ubHlcIlxuICAgICAgICAgIFtzZWxlY3RlZEZpbGVzXT1cImdldFNlbGVjdGVkRmlsZXNJZkFueShwcm9wZXJ0eSlcIlxuICAgICAgICAgIChzZWxlY3RlZEZpbGVzQ2hhbmdlKT1cIm9uRmlsZVNlbGVjdCgkZXZlbnQsIHByb3BlcnR5KVwiXG4gICAgICAgICAgW211bHRpcGxlXT1cInRydWVcIlxuICAgICAgICAgIFtsYWJlbF09XCJmb3JtYXRMYWJlbChwcm9wZXJ0eSlcIlxuICAgICAgICA+XG4gICAgICAgIDwvZmlsZS11cGxvYWQ+XG5cbiAgICAgICAgPGRpdiAqbmdJZj1cInByb3BlcnR5LlZhbHVlICE9PSAnJ1wiIGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgZ2FwLTMgbXQtM1wiPlxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpbGUgb2YgZ2V0RmlsZUFycmF5KHByb3BlcnR5LlZhbHVlKVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiZ2V0RmlsZUV4dGVuc2lvbihmaWxlKVwiPlxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidqcGcnXCJcbiAgICAgICAgICAgICAgICBbc3JjXT1cInNldFByZXZpZXcoZmlsZSlcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidy1bMTAwcHhdIGgtWzEwMHB4XSBvYmplY3QtY292ZXIgcm91bmRlZC1tZCBib3JkZXJcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidwbmcnXCJcbiAgICAgICAgICAgICAgICBbc3JjXT1cInNldFByZXZpZXcoZmlsZSlcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidy1bMTAwcHhdIGgtWzEwMHB4XSBvYmplY3QtY292ZXIgcm91bmRlZC1tZCBib3JkZXJcIlxuICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgIDx2aWRlb1xuICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInbXA0J1wiXG4gICAgICAgICAgICAgICAgW3NyY109XCJzZXRQcmV2aWV3KGZpbGUpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInctWzE1MHB4XSByb3VuZGVkLW1kIHNoYWRvd1wiXG4gICAgICAgICAgICAgICAgY29udHJvbHNcbiAgICAgICAgICAgICAgPjwvdmlkZW8+XG5cbiAgICAgICAgICAgICAgPGF1ZGlvXG4gICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidtcDMnXCJcbiAgICAgICAgICAgICAgICBbc3JjXT1cInNldFByZXZpZXcoZmlsZSlcIlxuICAgICAgICAgICAgICAgIGNvbnRyb2xzXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ3LVsxNTBweF1cIlxuICAgICAgICAgICAgICA+PC9hdWRpbz5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIEZhbGxiYWNrIGZvciB1bnN1cHBvcnRlZCB0eXBlcyAtLT5cbiAgICAgIDxkaXYgKm5nU3dpdGNoRGVmYXVsdD5VbnN1cHBvcnRlZCBkYXRhIHR5cGU6IHt7IHByb3BlcnR5LkRhdGFUeXBlIH19PC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb250cm9sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS1jb250cm9sL2Zvcm0tY29udHJvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0tY29udHJvbC9mb3JtLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUNMLGFBQWEsRUFFYixXQUFXLEdBQ1osTUFBTSxtQ0FBbUMsQ0FBQztBQUMzQyxPQUFPLEVBQUUsUUFBUSxFQUFvQixNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7O0FBZS9FLE1BQU0sT0FBTyxvQkFBb0I7SUFVckI7SUFDQTtJQUNBO0lBQ0E7SUFaRCxRQUFRLENBQVk7SUFDcEIsS0FBSyxHQUFRLEVBQUUsQ0FBQztJQUNoQixhQUFhLEdBQWtCLFVBQVUsQ0FBQztJQUMxQyxjQUFjLEdBQW1CLEVBQUUsQ0FBQztJQUNwQyxRQUFRLEdBQVksS0FBSyxDQUFDO0lBRW5DLFdBQVcsR0FBVyxFQUFFLENBQUM7SUFDekIsT0FBTyxHQUFXLEVBQUUsQ0FBQztJQUNyQixZQUNVLE1BQTZCLEVBQzdCLFdBQXdCLEVBQ3hCLEdBQXNCLEVBQ3RCLE1BQTBCO1FBSDFCLFdBQU0sR0FBTixNQUFNLENBQXVCO1FBQzdCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBRWxDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFX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QyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxRQUFzQjtRQUMxQyxJQUFJLFFBQVEsR0FBUTtZQUNsQixJQUFJLEVBQUUsUUFBUSxDQUFDLEtBQUs7U0FDckIsQ0FBQztRQUVGLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDNUQsQ0FBQztJQUVELGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUFlLENBQUM7SUFFMUMsUUFBUSxDQUFDLFFBQWE7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBRSxDQUFDO0lBQzlDLENBQUM7d0dBcEpVLG9CQUFvQjs0RkFBcEIsb0JBQW9CLDhMQ3JCakMsc2hTQThQQTs7NEZEek9hLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxjQUFjO3FMQUtmLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBFcnJvclJlc3BvbnNlLFxuICBGb3JtUHJvcGVydHksXG4gIE9iamVjdFN0YXRlLFxufSBmcm9tICd2ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9tb2RlbHMnO1xuaW1wb3J0IHsgRGF0YVR5cGUsIEZpbGUgYXMgRmlsZURhdGEgfSBmcm9tICd2ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9tb2RlbHMnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIEh0dHBXZWJSZXF1ZXN0U2VydmljZSxcbiAgVXRpbFNlcnZpY2UsXG59IGZyb20gJ3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL3NlcnZpY2VzJztcbmltcG9ydCB7IEVudmlyb25tZW50U2VydmljZSB9IGZyb20gJ3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL3NlcnZpY2VzJztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5leHBvcnQgdHlwZSBCb29sSW5wdXRUeXBlID0gJ3N3aXRjaCcgfCAnY2hlY2tib3gnIHwgJ3JhZGlvJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZm9ybS1jb250cm9sJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tY29udHJvbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tY29udHJvbC5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1Db250cm9sQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgZGF0YVR5cGUhOiBEYXRhVHlwZTtcbiAgQElucHV0KCkgdmFsdWU6IGFueSA9ICcnO1xuICBASW5wdXQoKSBib29sSW5wdXRUeXBlOiBCb29sSW5wdXRUeXBlID0gJ2NoZWNrYm94JztcbiAgQElucHV0KCkgZm9ybVByb3BlcnRpZXM6IEZvcm1Qcm9wZXJ0eVtdID0gW107XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZmlsZUJhc2VVcmw6IHN0cmluZyA9ICcnO1xuICBmaWxlVXJsOiBzdHJpbmcgPSAnJztcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZXJ2ZXI6IEh0dHBXZWJSZXF1ZXN0U2VydmljZSxcbiAgICBwcml2YXRlIHV0aWxTZXJ2aWNlOiBVdGlsU2VydmljZSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBlbnZTdmM6IEVudmlyb25tZW50U2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy5maWxlQmFzZVVybCA9IHRoaXMuZW52U3ZjLmVudmlyb25tZW50LkZJTEVfQkFTRV9VUkw7XG4gICAgdGhpcy5maWxlVXJsID0gdGhpcy5lbnZTdmMuZW52aXJvbm1lbnQuRklMRV9VUkw7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRpYWxpemVEZWZhdWx0VmFsdWUoKTtcbiAgfVxuXG4gIGluaXRpYWxpemVEZWZhdWx0VmFsdWUoKSB7XG4gICAgaWYgKHRoaXMuZGF0YVR5cGUgPT09IERhdGFUeXBlLlllc05vICYmIHRoaXMudmFsdWUgPT09ICcnKSB7XG4gICAgICB0aGlzLnZhbHVlID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy52YWx1ZSA9ICcnO1xuICAgIH1cbiAgfVxuICBvbkZpbGVTZWxlY3QoZGF0YTogYW55LCBwcm9wZXJ0eTogRm9ybVByb3BlcnR5KTogdm9pZCB7XG4gICAgY29uc3QgZmlsZXM6IGFueSA9IGRhdGE7XG5cbiAgICBpZiAoIWZpbGVzIHx8IGZpbGVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgZmlsZUFycmF5OiBGaWxlRGF0YVtdID0gW107XG4gICAgY29uc3QgcmVhZGVyczogUHJvbWlzZTx2b2lkPltdID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBmaWxlID0gZmlsZXNbaV07XG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXG4gICAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGJhc2U2NCA9IHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nO1xuICAgICAgICAgIGZpbGVBcnJheS5wdXNoKHtcbiAgICAgICAgICAgIEV4dGVuc2lvbjogZmlsZS5uYW1lLnNwbGl0KCcuJykucG9wKCksXG4gICAgICAgICAgICBOYW1lOiB0aGlzLmdlbmVyYXRlUmFuZG9tQ29kZSgpLFxuICAgICAgICAgICAgRGF0YTogYmFzZTY0LFxuICAgICAgICAgICAgRGF0YVN0YXRlOiBPYmplY3RTdGF0ZS5OZXcsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJlYWRlci5vbmVycm9yID0gKGVycm9yKSA9PiByZWplY3QoZXJyb3IpO1xuICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgICAgIH0pO1xuXG4gICAgICByZWFkZXJzLnB1c2gocHJvbWlzZSk7XG4gICAgfVxuXG4gICAgUHJvbWlzZS5hbGwocmVhZGVycykudGhlbigoKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZygnRmlsZXMgcmVhZHkgdG8gdXBsb2FkOicsIGZpbGVBcnJheSk7XG4gICAgICB0aGlzLnVwbG9hZEZpbGUoZmlsZUFycmF5LCBwcm9wZXJ0eSk7XG4gICAgfSk7XG4gIH1cbiAgcHJpdmF0ZSBnZW5lcmF0ZVJhbmRvbUNvZGUobGVuZ3RoOiBudW1iZXIgPSAxMCk6IHN0cmluZyB7XG4gICAgY29uc3QgY2hhcnMgPVxuICAgICAgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5JztcbiAgICBsZXQgcmVzdWx0ID0gJyc7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgcmVzdWx0ICs9IGNoYXJzLmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFycy5sZW5ndGgpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBzZXRQcmV2aWV3KHZhbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXZhbCkgcmV0dXJuICcnO1xuICAgIGNvbnN0IGZpcnN0ID0gdmFsLnNwbGl0KCcsJylbMF0udHJpbSgpO1xuXG4gICAgaWYgKGZpcnN0LnN0YXJ0c1dpdGgoJ2h0dHAnKSB8fCBmaXJzdC5zdGFydHNXaXRoKCdkYXRhOicpKSB7XG4gICAgICByZXR1cm4gZmlyc3Q7XG4gICAgfVxuICAgIHJldHVybiBgJHt0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5GSUxFX1VSTH0vJHtmaXJzdH1gO1xuICB9XG5cbiAgZ2V0RmlsZUFycmF5KHZhbHVlOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIFtdO1xuICAgIHJldHVybiB2YWx1ZVxuICAgICAgLnNwbGl0KCcsJylcbiAgICAgIC5tYXAoKHYpID0+IHYudHJpbSgpKVxuICAgICAgLmZpbHRlcigodikgPT4gdik7XG4gIH1cblxuICBnZXRGaWxlRXh0ZW5zaW9uKGZpbGVVcmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFydHMgPSBmaWxlVXJsLnNwbGl0KCcuJyk7XG4gICAgcmV0dXJuIHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICBhc3luYyB1cGxvYWRGaWxlKFxuICAgIGZpbGVzOiBGaWxlRGF0YVtdLFxuICAgIHByb3BlcnR5OiBGb3JtUHJvcGVydHksXG4gICk6IFByb21pc2U8YW55W10gfCB1bmRlZmluZWQ+IHtcbiAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSSh0cnVlKTtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnNlcnZlci5wb3N0KFxuICAgICAgYFNhdmVGaWxlc2AsXG4gICAgICBmaWxlcyxcbiAgICAgIHRoaXMuZW52U3ZjLmVudmlyb25tZW50LkZJTEVfQkFTRV9VUkwsXG4gICAgKTtcbiAgICB0aGlzLnV0aWxTZXJ2aWNlLnNlbmRCSShmYWxzZSk7XG4gICAgaWYgKHJlcyBpbnN0YW5jZW9mIEVycm9yUmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciByZXN1bHQgPSByZXMgYXMgYW55O1xuICAgICAgY29uc3Qgam9pbmVkUmVzdWx0ID0gcmVzdWx0LmpvaW4oJywnKTtcbiAgICAgIHByb3BlcnR5LlZhbHVlID0gam9pbmVkUmVzdWx0O1xuXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgfVxuICBmb3JtYXRMYWJlbChwcm9wZXJ0eTogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gcHJvcGVydHkuSXNSZXF1aXJlZFxuICAgICAgPyBgJHtwcm9wZXJ0eS5OYW1lfSAqYFxuICAgICAgOiBgJHtwcm9wZXJ0eS5OYW1lfSAoT3B0aW9uYWwpYDtcbiAgfVxuICBvcHRpb25zQXJyYXkocHJvcGVydHk6IGFueSkge1xuICAgIHByb3BlcnR5Lk9wdGlvbnM/LnNwbGl0KCcsJykubWFwKChvcHRpb246IGFueSkgPT4gb3B0aW9uLnRyaW0oKSk7XG4gICAgcmV0dXJuIHByb3BlcnR5Lk9wdGlvbnM/LnNwbGl0KCcsJykubWFwKChvcHRpb246IGFueSkgPT4gb3B0aW9uLnRyaW0oKSk7XG4gIH1cbiAgb25TZWxlY3RlZEZpbGVDaGFuZ2UoZmlsZXM6IEZpbGVbXSkge1xuICAgIGNvbnNvbGUubG9nKGZpbGVzKTtcbiAgfVxuXG4gIGdldFNlbGVjdGVkRmlsZXNJZkFueShwcm9wZXJ0eTogRm9ybVByb3BlcnR5KTogRmlsZVtdIHtcbiAgICB2YXIgZmlsZU1vY2s6IGFueSA9IHtcbiAgICAgIG5hbWU6IHByb3BlcnR5LlZhbHVlLFxuICAgIH07XG5cbiAgICByZXR1cm4gcHJvcGVydHkuVmFsdWUudHJpbSgpLmxlbmd0aCA+IDAgPyBbZmlsZU1vY2tdIDogW107XG4gIH1cblxuICBzZWxlY3RlZEZpbGVzTWFwID0gbmV3IE1hcDxhbnksIEZpbGVbXT4oKTtcblxuICBnZXRGaWxlcyhwcm9wZXJ0eTogYW55KTogRmlsZVtdIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRGaWxlc01hcC5oYXMocHJvcGVydHkpKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRmlsZXNNYXAuc2V0KHByb3BlcnR5LCB0aGlzLmdldFNlbGVjdGVkRmlsZXNJZkFueShwcm9wZXJ0eSkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEZpbGVzTWFwLmdldChwcm9wZXJ0eSkhO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtNiB3LWZ1bGxcIj5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgcHJvcGVydHkgb2YgZm9ybVByb3BlcnRpZXNcIj5cbiAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJwcm9wZXJ0eS5EYXRhVHlwZVwiPlxuICAgICAgPCEtLSBUZXh0LCBVUkwsIGFuZCBDb2xvciAtLT5cbiAgICAgIDx2ZXJiZW5hLWlucHV0XG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInVGV4dCdcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcHJvcGVydHkuSXNSZWFkT25seVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwicHJvcGVydHkuVmFsdWVcIlxuICAgICAgICBbbGFiZWxdPVwiZm9ybWF0TGFiZWwocHJvcGVydHkpXCJcbiAgICAgICAgW3R5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgW3BsYWNlSG9sZGVyXT1cIidFbnRlciB0ZXh0J1wiXG4gICAgICA+PC92ZXJiZW5hLWlucHV0PlxuICAgICAgPHZlcmJlbmEtaW5wdXRcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidNYWlsQWRkcmVzcydcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcHJvcGVydHkuSXNSZWFkT25seVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwicHJvcGVydHkuVmFsdWVcIlxuICAgICAgICBbbGFiZWxdPVwiZm9ybWF0TGFiZWwocHJvcGVydHkpXCJcbiAgICAgICAgW3R5cGVdPVwiJ2VtYWlsJ1wiXG4gICAgICAgIFtwbGFjZUhvbGRlcl09XCInRW50ZXIgZW1haWwnXCJcbiAgICAgID48L3ZlcmJlbmEtaW5wdXQ+XG4gICAgICA8dmVyYmVuYS1pbnB1dFxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ1VSTCdcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcHJvcGVydHkuSXNSZWFkT25seVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwicHJvcGVydHkuVmFsdWVcIlxuICAgICAgICBbbGFiZWxdPVwiZm9ybWF0TGFiZWwocHJvcGVydHkpXCJcbiAgICAgICAgW3R5cGVdPVwiJ3VybCdcIlxuICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ2h0dHBzOi8vZXhhbXBsZS5jb20nXCJcbiAgICAgID48L3ZlcmJlbmEtaW5wdXQ+XG4gICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInQ29sb3VyJ1wiPlxuICAgICAgICA8bGFiZWwgW2h0bWxGb3JdPVwicHJvcGVydHkuaWRcIj5cbiAgICAgICAgICB7eyBmb3JtYXRMYWJlbChwcm9wZXJ0eSkgfX1cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgW2lkXT1cInByb3BlcnR5LmlkXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHByb3BlcnR5LklzUmVhZE9ubHlcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInByb3BlcnR5LlZhbHVlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJibG9jayBtdC0yIHctWzEwMHB4XVwiXG4gICAgICAgICAgICAgIFt0eXBlXT1cIidjb2xvcidcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICpuZ0lmPVwicHJvcGVydHkuVmFsdWUgIT09ICcnXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb250LXNlbWlib2xkXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInByb3BlcnR5LlZhbHVlXCJcbiAgICAgICAgICAgICAgPjp7eyBwcm9wZXJ0eS5WYWx1ZSB9fTwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuICAgICAgPHZlcmJlbmEtdGV4dGFyZWFcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHByb3BlcnR5LklzUmVhZE9ubHlcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInByb3BlcnR5LlZhbHVlXCJcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidNdWx0aWxpbmVUZXh0J1wiXG4gICAgICAgIFtsYWJlbF09XCJmb3JtYXRMYWJlbChwcm9wZXJ0eSlcIlxuICAgICAgPjwvdmVyYmVuYS10ZXh0YXJlYT5cbiAgICAgIDx2ZXJiZW5hLWlucHV0XG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBwcm9wZXJ0eS5Jc1JlYWRPbmx5XCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJwcm9wZXJ0eS5WYWx1ZVwiXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInUGhvbmVOdW1iZXInXCJcbiAgICAgICAgW2xhYmVsXT1cImZvcm1hdExhYmVsKHByb3BlcnR5KVwiXG4gICAgICAgIFt0eXBlXT1cIid0ZXh0J1wiXG4gICAgICAgIFtwbGFjZUhvbGRlcl09XCInRW50ZXIgdGV4dCdcIlxuICAgICAgPjwvdmVyYmVuYS1pbnB1dD5cblxuICAgICAgPCEtLSBOdW1lcmljIGlucHV0cyAtLT5cbiAgICAgIDx2ZXJiZW5hLWlucHV0XG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBwcm9wZXJ0eS5Jc1JlYWRPbmx5XCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJwcm9wZXJ0eS5WYWx1ZVwiXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInTnVtYmVyJ1wiXG4gICAgICAgIFtsYWJlbF09XCJmb3JtYXRMYWJlbChwcm9wZXJ0eSlcIlxuICAgICAgICBbdHlwZV09XCInbnVtYmVyJ1wiXG4gICAgICAgIFtwbGFjZUhvbGRlcl09XCInRW50ZXIgYW4gaW50ZWdlcidcIlxuICAgICAgICBbbWF4XT1cInByb3BlcnR5Lk1heFZhbHVlXCJcbiAgICAgICAgW21pbl09XCJwcm9wZXJ0eS5NaW5WYWx1ZVwiXG4gICAgICA+PC92ZXJiZW5hLWlucHV0PlxuICAgICAgPHZlcmJlbmEtaW5wdXRcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHByb3BlcnR5LklzUmVhZE9ubHlcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInByb3BlcnR5LlZhbHVlXCJcbiAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidEZWNpbWFsJ1wiXG4gICAgICAgIFtsYWJlbF09XCJmb3JtYXRMYWJlbChwcm9wZXJ0eSlcIlxuICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0VudGVyIGRlY2ltYWwgdmFsdWUnXCJcbiAgICAgID48L3ZlcmJlbmEtaW5wdXQ+XG5cbiAgICAgIDwhLS0gQm9vbGVhbiBpbnB1dCAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidZZXNObydcIj5cbiAgICAgICAgPGxhYmVsIFtodG1sRm9yXT1cInByb3BlcnR5LmlkXCIgY2xhc3M9XCJibG9jayBtYi0yXCI+e3tcbiAgICAgICAgICBmb3JtYXRMYWJlbChwcm9wZXJ0eSlcbiAgICAgICAgfX08L2xhYmVsPlxuICAgICAgICA8dmVyYmVuYS1zd2l0Y2hcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcHJvcGVydHkuSXNSZWFkT25seVwiXG4gICAgICAgICAgW25nTW9kZWxdPVwicHJvcGVydHkuVmFsdWUgPT0gJ3RydWUnIHx8IHByb3BlcnR5LlZhbHVlID09ICdUcnVlJ1wiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwicHJvcGVydHkuVmFsdWUgPSAkZXZlbnQudG9TdHJpbmcoKVwiXG4gICAgICAgICAgW29uVGV4dF09XCInJ1wiXG4gICAgICAgICAgW29mZlRleHRdPVwiJydcIlxuICAgICAgICAgIFtvbkNvbG9yXT1cIid2YXIoLS12Ym4tY29sb3ItdGV4dCknXCJcbiAgICAgICAgICBbbGFiZWxdPVwiZm9ybWF0TGFiZWwocHJvcGVydHkpXCJcbiAgICAgICAgPjwvdmVyYmVuYS1zd2l0Y2g+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ1ZpZGVvJ1wiPlxuICAgICAgICA8ZmlsZS11cGxvYWRcbiAgICAgICAgICBbc2VsZWN0ZWRGaWxlc109XCJnZXRTZWxlY3RlZEZpbGVzSWZBbnkocHJvcGVydHkpXCJcbiAgICAgICAgICAoc2VsZWN0ZWRGaWxlc0NoYW5nZSk9XCJvbkZpbGVTZWxlY3QoJGV2ZW50LCBwcm9wZXJ0eSlcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBwcm9wZXJ0eS5Jc1JlYWRPbmx5XCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInByb3BlcnR5LlZhbHVlXCJcbiAgICAgICAgICBbbGFiZWxdPVwiZm9ybWF0TGFiZWwocHJvcGVydHkpXCJcbiAgICAgICAgICBbYWNjZXB0XT1cIid2aWRlby8qJ1wiXG4gICAgICAgICAgW211bHRpcGxlXT1cImZhbHNlXCJcbiAgICAgICAgPjwvZmlsZS11cGxvYWQ+XG4gICAgICAgIDx2aWRlb1xuICAgICAgICAgICpuZ0lmPVwicHJvcGVydHkuVmFsdWUgIT09ICcnXCJcbiAgICAgICAgICBbc3JjXT1cInNldFByZXZpZXcocHJvcGVydHkuVmFsdWUpXCJcbiAgICAgICAgICBjb250cm9sc1xuICAgICAgICAgIGNsYXNzPVwidy1mdWxsIGgtWzEwMHB4XSBtdC0zIHJvdW5kZWQtbWQgc2hhZG93XCJcbiAgICAgICAgPjwvdmlkZW8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidJbWFnZSdcIj5cbiAgICAgICAgPGZpbGUtdXBsb2FkXG4gICAgICAgICAgW3NlbGVjdGVkRmlsZXNdPVwiZ2V0U2VsZWN0ZWRGaWxlc0lmQW55KHByb3BlcnR5KVwiXG4gICAgICAgICAgKHNlbGVjdGVkRmlsZXNDaGFuZ2UpPVwib25GaWxlU2VsZWN0KCRldmVudCwgcHJvcGVydHkpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcHJvcGVydHkuSXNSZWFkT25seVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJwcm9wZXJ0eS5WYWx1ZVwiXG4gICAgICAgICAgW2xhYmVsXT1cImZvcm1hdExhYmVsKHByb3BlcnR5KVwiXG4gICAgICAgICAgW2FjY2VwdF09XCInaW1hZ2UvKidcIlxuICAgICAgICAgIFttdWx0aXBsZV09XCJmYWxzZVwiXG4gICAgICAgID48L2ZpbGUtdXBsb2FkPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgY2xhc3M9XCJ3LVsxMDBweF0gbXgtYXV0b1wiXG4gICAgICAgICAgKm5nSWY9XCJwcm9wZXJ0eS5WYWx1ZSAhPT0gJydcIlxuICAgICAgICAgIFtzcmNdPVwic2V0UHJldmlldyhwcm9wZXJ0eS5WYWx1ZSlcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInQXVkaW8nXCI+XG4gICAgICAgIDxmaWxlLXVwbG9hZFxuICAgICAgICAgIFtzZWxlY3RlZEZpbGVzXT1cImdldFNlbGVjdGVkRmlsZXNJZkFueShwcm9wZXJ0eSlcIlxuICAgICAgICAgIChzZWxlY3RlZEZpbGVzQ2hhbmdlKT1cIm9uRmlsZVNlbGVjdCgkZXZlbnQsIHByb3BlcnR5KVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHByb3BlcnR5LklzUmVhZE9ubHlcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwicHJvcGVydHkuVmFsdWVcIlxuICAgICAgICAgIFtsYWJlbF09XCJmb3JtYXRMYWJlbChwcm9wZXJ0eSlcIlxuICAgICAgICAgIFthY2NlcHRdPVwiJ2F1ZGlvLyonXCJcbiAgICAgICAgICBbbXVsdGlwbGVdPVwiZmFsc2VcIlxuICAgICAgICA+PC9maWxlLXVwbG9hZD5cbiAgICAgICAgPGF1ZGlvXG4gICAgICAgICAgKm5nSWY9XCJwcm9wZXJ0eS5WYWx1ZSAhPT0gJydcIlxuICAgICAgICAgIFtzcmNdPVwic2V0UHJldmlldyhwcm9wZXJ0eS5WYWx1ZSlcIlxuICAgICAgICAgIGNvbnRyb2xzXG4gICAgICAgICAgY2xhc3M9XCJtdC0zIHctZnVsbFwiXG4gICAgICAgID48L2F1ZGlvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidTaW5nbGVTZWxlY3Rpb24nXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+e3sgZm9ybWF0TGFiZWwocHJvcGVydHkpIH19PC9kaXY+XG4gICAgICAgIDx2ZXJiZW4tZHJvcC1kb3duXG4gICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicHJvcGVydHkuTmFtZVwiXG4gICAgICAgICAgW2ZpbHRlcl09XCJ0cnVlXCJcbiAgICAgICAgICBbb3B0aW9uc109XCJvcHRpb25zQXJyYXkocHJvcGVydHkpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcHJvcGVydHkuSXNSZWFkT25seVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJwcm9wZXJ0eS5WYWx1ZVwiXG4gICAgICAgID48L3ZlcmJlbi1kcm9wLWRvd24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidNdWx0aVNlbGVjdGlvbidcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj57eyBmb3JtYXRMYWJlbChwcm9wZXJ0eSkgfX08L2Rpdj5cbiAgICAgICAgPHZlcmJlbi1kcm9wLWRvd25cbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIFttdWx0aXNlbGVjdF09XCJ0cnVlXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicHJvcGVydHkuTmFtZVwiXG4gICAgICAgICAgW29wdGlvbnNdPVwib3B0aW9uc0FycmF5KHByb3BlcnR5KVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHByb3BlcnR5LklzUmVhZE9ubHlcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwicHJvcGVydHkuVmFsdWVcIlxuICAgICAgICA+PC92ZXJiZW4tZHJvcC1kb3duPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInU2luZ2xlRmlsZVNlbGVjdGlvbidcIj5cbiAgICAgICAgPGZpbGUtdXBsb2FkXG4gICAgICAgICAgW211bHRpcGxlXT1cImZhbHNlXCJcbiAgICAgICAgICBbc2VsZWN0ZWRGaWxlc109XCJnZXRGaWxlcyhwcm9wZXJ0eSlcIlxuICAgICAgICAgIChzZWxlY3RlZEZpbGVzQ2hhbmdlKT1cIm9uRmlsZVNlbGVjdCgkZXZlbnQsIHByb3BlcnR5KVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHByb3BlcnR5LklzUmVhZE9ubHlcIlxuICAgICAgICAgIFtsYWJlbF09XCJmb3JtYXRMYWJlbChwcm9wZXJ0eSlcIlxuICAgICAgICA+PC9maWxlLXVwbG9hZD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiZ2V0RmlsZUV4dGVuc2lvbihwcm9wZXJ0eS5WYWx1ZSlcIj5cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2pwZydcIlxuICAgICAgICAgICAgW3NyY109XCJzZXRQcmV2aWV3KHByb3BlcnR5LlZhbHVlKVwiXG4gICAgICAgICAgICBjbGFzcz1cInctWzEwMHB4XSBoLVsxMDBweF0gb2JqZWN0LWNvdmVyIHJvdW5kZWQtbWQgYm9yZGVyXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCIncG5nJ1wiXG4gICAgICAgICAgICBbc3JjXT1cInNldFByZXZpZXcocHJvcGVydHkuVmFsdWUpXCJcbiAgICAgICAgICAgIGNsYXNzPVwidy1bMTAwcHhdIGgtWzEwMHB4XSBvYmplY3QtY292ZXIgcm91bmRlZC1tZCBib3JkZXJcIlxuICAgICAgICAgIC8+XG5cbiAgICAgICAgICA8dmlkZW9cbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInbXA0J1wiXG4gICAgICAgICAgICBbc3JjXT1cInNldFByZXZpZXcocHJvcGVydHkuVmFsdWUpXCJcbiAgICAgICAgICAgIGNsYXNzPVwidy1bMTUwcHhdIHJvdW5kZWQtbWQgc2hhZG93XCJcbiAgICAgICAgICAgIGNvbnRyb2xzXG4gICAgICAgICAgPjwvdmlkZW8+XG5cbiAgICAgICAgICA8YXVkaW9cbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInbXAzJ1wiXG4gICAgICAgICAgICBbc3JjXT1cInNldFByZXZpZXcocHJvcGVydHkuVmFsdWUpXCJcbiAgICAgICAgICAgIGNvbnRyb2xzXG4gICAgICAgICAgICBjbGFzcz1cInctWzE1MHB4XVwiXG4gICAgICAgICAgPjwvYXVkaW8+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInTXVsdGlGaWxlU2VsZWN0aW9uJ1wiPlxuICAgICAgICA8ZmlsZS11cGxvYWRcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcHJvcGVydHkuSXNSZWFkT25seVwiXG4gICAgICAgICAgW3NlbGVjdGVkRmlsZXNdPVwiZ2V0U2VsZWN0ZWRGaWxlc0lmQW55KHByb3BlcnR5KVwiXG4gICAgICAgICAgKHNlbGVjdGVkRmlsZXNDaGFuZ2UpPVwib25GaWxlU2VsZWN0KCRldmVudCwgcHJvcGVydHkpXCJcbiAgICAgICAgICBbbXVsdGlwbGVdPVwidHJ1ZVwiXG4gICAgICAgICAgW2xhYmVsXT1cImZvcm1hdExhYmVsKHByb3BlcnR5KVwiXG4gICAgICAgID5cbiAgICAgICAgPC9maWxlLXVwbG9hZD5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvcGVydHkuVmFsdWUgIT09ICcnXCIgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBnYXAtMyBtdC0zXCI+XG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZmlsZSBvZiBnZXRGaWxlQXJyYXkocHJvcGVydHkuVmFsdWUpXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJnZXRGaWxlRXh0ZW5zaW9uKGZpbGUpXCI+XG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2pwZydcIlxuICAgICAgICAgICAgICAgIFtzcmNdPVwic2V0UHJldmlldyhmaWxlKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ3LVsxMDBweF0gaC1bMTAwcHhdIG9iamVjdC1jb3ZlciByb3VuZGVkLW1kIGJvcmRlclwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ3BuZydcIlxuICAgICAgICAgICAgICAgIFtzcmNdPVwic2V0UHJldmlldyhmaWxlKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ3LVsxMDBweF0gaC1bMTAwcHhdIG9iamVjdC1jb3ZlciByb3VuZGVkLW1kIGJvcmRlclwiXG4gICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgPHZpZGVvXG4gICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidtcDQnXCJcbiAgICAgICAgICAgICAgICBbc3JjXT1cInNldFByZXZpZXcoZmlsZSlcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidy1bMTUwcHhdIHJvdW5kZWQtbWQgc2hhZG93XCJcbiAgICAgICAgICAgICAgICBjb250cm9sc1xuICAgICAgICAgICAgICA+PC92aWRlbz5cblxuICAgICAgICAgICAgICA8YXVkaW9cbiAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ21wMydcIlxuICAgICAgICAgICAgICAgIFtzcmNdPVwic2V0UHJldmlldyhmaWxlKVwiXG4gICAgICAgICAgICAgICAgY29udHJvbHNcbiAgICAgICAgICAgICAgICBjbGFzcz1cInctWzE1MHB4XVwiXG4gICAgICAgICAgICAgID48L2F1ZGlvPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gRmFsbGJhY2sgZm9yIHVuc3VwcG9ydGVkIHR5cGVzIC0tPlxuICAgICAgPGRpdiAqbmdTd2l0Y2hEZWZhdWx0PlVuc3VwcG9ydGVkIGRhdGEgdHlwZToge3sgcHJvcGVydHkuRGF0YVR5cGUgfX08L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -7,8 +7,8 @@ import { FormControlComponent } from './form-control.component';
7
7
  import { FileUploadModule } from 'verben-workflow-ui/src/lib/components/file-upload';
8
8
  import * as i0 from "@angular/core";
9
9
  export class FormControlerModule {
10
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormControlerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: FormControlerModule, declarations: [FormControlComponent], imports: [CommonModule,
10
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormControlerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: FormControlerModule, declarations: [FormControlComponent], imports: [CommonModule,
12
12
  FormsModule,
13
13
  ReactiveFormsModule,
14
14
  DataTableModule,
@@ -26,7 +26,7 @@ export class FormControlerModule {
26
26
  VerbenaInputModule,
27
27
  FileUploadModule,
28
28
  VerbenaTextareaModule], exports: [FormControlComponent] });
29
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormControlerModule, imports: [CommonModule,
29
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormControlerModule, imports: [CommonModule,
30
30
  FormsModule,
31
31
  ReactiveFormsModule,
32
32
  DataTableModule,
@@ -45,7 +45,7 @@ export class FormControlerModule {
45
45
  FileUploadModule,
46
46
  VerbenaTextareaModule] });
47
47
  }
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormControlerModule, decorators: [{
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormControlerModule, decorators: [{
49
49
  type: NgModule,
50
50
  args: [{
51
51
  declarations: [FormControlComponent],
@@ -4,7 +4,7 @@ export const baseStyle = {
4
4
  fontSize: '125%',
5
5
  whiteSpace: 'nowrap',
6
6
  margin: '0',
7
- border: '1px solid #D4A007',
7
+ border: '1px solid var(--vbn-color-primary)',
8
8
  borderRadius: '16px',
9
9
  borderCollapse: 'separate',
10
10
  borderSpacing: '0',
@@ -12,10 +12,10 @@ export const baseStyle = {
12
12
  overflow: 'hidden',
13
13
  rows: {
14
14
  even: {
15
- backgroundColor: '#FDFDFD',
15
+ backgroundColor: 'var(--vbn-color-surface)',
16
16
  },
17
17
  odd: {
18
- backgroundColor: '#F1F4FB',
18
+ backgroundColor: 'var(--vbn-color-surface-alt)',
19
19
  },
20
20
  height: '68px',
21
21
  },
@@ -25,7 +25,7 @@ export const baseStyle = {
25
25
  header: {
26
26
  // stickyTop: true,
27
27
  // zIndex: 2,
28
- backgroundColor: '#EFF2FB',
28
+ backgroundColor: 'var(--vbn-color-surface-alt)',
29
29
  fontWeight: 'bold',
30
30
  textAlign: 'left',
31
31
  padding: '12px 16px',
@@ -37,7 +37,7 @@ export const baseStyle = {
37
37
  padding: '3px',
38
38
  },
39
39
  // body: {
40
- // background: '#fff',
40
+ // background: 'var(--vbn-color-surface)',
41
41
  // padding: '4px 5px',
42
42
  // textAlign: 'center',
43
43
  // },
@@ -50,4 +50,4 @@ export const baseStyle = {
50
50
  // zIndex: 1,
51
51
  },
52
52
  };
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS10YWJsZS1zdHlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS1ncm91cC9iYXNlLXRhYmxlLXN0eWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBUTtJQUM1QixLQUFLLEVBQUUsTUFBTTtJQUNiLFVBQVUsRUFBRSxtQkFBbUI7SUFDL0IsUUFBUSxFQUFFLE1BQU07SUFDaEIsVUFBVSxFQUFFLFFBQVE7SUFDcEIsTUFBTSxFQUFFLEdBQUc7SUFDWCxNQUFNLEVBQUUsbUJBQW1CO0lBQzNCLFlBQVksRUFBRSxNQUFNO0lBQ3BCLGNBQWMsRUFBRSxVQUFVO0lBQzFCLGFBQWEsRUFBRSxHQUFHO0lBQ2xCLHdCQUF3QjtJQUN4QixRQUFRLEVBQUUsUUFBUTtJQUNsQixJQUFJLEVBQUU7UUFDSixJQUFJLEVBQUU7WUFDSixlQUFlLEVBQUUsU0FBUztTQUMzQjtRQUNELEdBQUcsRUFBRTtZQUNILGVBQWUsRUFBRSxTQUFTO1NBQzNCO1FBQ0QsTUFBTSxFQUFFLE1BQU07S0FDZjtJQUNELEtBQUssRUFBRTtRQUNMLE9BQU8sRUFBRSxXQUFXO0tBQ3JCO0lBQ0QsTUFBTSxFQUFFO1FBQ04sbUJBQW1CO1FBQ25CLGFBQWE7UUFDYixlQUFlLEVBQUUsU0FBUztRQUMxQixVQUFVLEVBQUUsTUFBTTtRQUNsQixTQUFTLEVBQUUsTUFBTTtRQUNqQixPQUFPLEVBQUUsV0FBVztRQUNwQixNQUFNLEVBQUUsTUFBTTtLQUNmO0lBQ0QsTUFBTSxFQUFFO1FBQ04sc0JBQXNCO1FBQ3RCLGFBQWE7UUFDYixPQUFPLEVBQUUsS0FBSztLQUNmO0lBQ0QsWUFBWTtJQUNaLDBCQUEwQjtJQUMxQiwwQkFBMEI7SUFDMUIsMkJBQTJCO0lBQzNCLE9BQU87SUFDUCxpQkFBaUI7SUFDakIsc0JBQXNCO0lBQ3RCLGVBQWU7SUFDZixLQUFLO0lBQ0wsVUFBVSxFQUFFO0lBQ1YscUJBQXFCO0lBQ3JCLGFBQWE7S0FDZDtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgYmFzZVN0eWxlOiBhbnkgPSB7XG4gIHdpZHRoOiAnMTAwJScsXG4gIGZvbnRGYW1pbHk6ICdcIkZyYXVuY2VzXCIsIHNlcmlmJyxcbiAgZm9udFNpemU6ICcxMjUlJyxcbiAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gIG1hcmdpbjogJzAnLFxuICBib3JkZXI6ICcxcHggc29saWQgI0Q0QTAwNycsXG4gIGJvcmRlclJhZGl1czogJzE2cHgnLFxuICBib3JkZXJDb2xsYXBzZTogJ3NlcGFyYXRlJyxcbiAgYm9yZGVyU3BhY2luZzogJzAnLFxuICAvLyB0YWJsZUxheW91dDogJ2ZpeGVkJyxcbiAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICByb3dzOiB7XG4gICAgZXZlbjoge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiAnI0ZERkRGRCcsXG4gICAgfSxcbiAgICBvZGQ6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJyNGMUY0RkInLFxuICAgIH0sXG4gICAgaGVpZ2h0OiAnNjhweCcsXG4gIH0sXG4gIGNlbGxzOiB7XG4gICAgcGFkZGluZzogJzJyZW0gMXJlbScsXG4gIH0sXG4gIGhlYWRlcjoge1xuICAgIC8vIHN0aWNreVRvcDogdHJ1ZSxcbiAgICAvLyB6SW5kZXg6IDIsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnI0VGRjJGQicsXG4gICAgZm9udFdlaWdodDogJ2JvbGQnLFxuICAgIHRleHRBbGlnbjogJ2xlZnQnLFxuICAgIHBhZGRpbmc6ICcxMnB4IDE2cHgnLFxuICAgIGhlaWdodDogJzMwcHgnLFxuICB9LFxuICBmb290ZXI6IHtcbiAgICAvLyBzdGlja3lCb3R0b206IHRydWUsXG4gICAgLy8gekluZGV4OiAyLFxuICAgIHBhZGRpbmc6ICczcHgnLFxuICB9LFxuICAvLyAgIGJvZHk6IHtcbiAgLy8gICAgIGJhY2tncm91bmQ6ICcjZmZmJyxcbiAgLy8gICAgIHBhZGRpbmc6ICc0cHggNXB4JyxcbiAgLy8gICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gIC8vICAgfSxcbiAgLy8gZmlyc3RDb2x1bW46IHtcbiAgLy8gICBzdGlja3lMZWZ0OiB0cnVlLFxuICAvLyAgIHpJbmRleDogMSxcbiAgLy8gfSxcbiAgbGFzdENvbHVtbjoge1xuICAgIC8vIHN0aWNreVJpZ2h0OiB0cnVlLFxuICAgIC8vIHpJbmRleDogMSxcbiAgfSxcbn07XG4iXX0=
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS10YWJsZS1zdHlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS1ncm91cC9iYXNlLXRhYmxlLXN0eWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBUTtJQUM1QixLQUFLLEVBQUUsTUFBTTtJQUNiLFVBQVUsRUFBRSxtQkFBbUI7SUFDL0IsUUFBUSxFQUFFLE1BQU07SUFDaEIsVUFBVSxFQUFFLFFBQVE7SUFDcEIsTUFBTSxFQUFFLEdBQUc7SUFDWCxNQUFNLEVBQUUsb0NBQW9DO0lBQzVDLFlBQVksRUFBRSxNQUFNO0lBQ3BCLGNBQWMsRUFBRSxVQUFVO0lBQzFCLGFBQWEsRUFBRSxHQUFHO0lBQ2xCLHdCQUF3QjtJQUN4QixRQUFRLEVBQUUsUUFBUTtJQUNsQixJQUFJLEVBQUU7UUFDSixJQUFJLEVBQUU7WUFDSixlQUFlLEVBQUUsMEJBQTBCO1NBQzVDO1FBQ0QsR0FBRyxFQUFFO1lBQ0gsZUFBZSxFQUFFLDhCQUE4QjtTQUNoRDtRQUNELE1BQU0sRUFBRSxNQUFNO0tBQ2Y7SUFDRCxLQUFLLEVBQUU7UUFDTCxPQUFPLEVBQUUsV0FBVztLQUNyQjtJQUNELE1BQU0sRUFBRTtRQUNOLG1CQUFtQjtRQUNuQixhQUFhO1FBQ2IsZUFBZSxFQUFFLDhCQUE4QjtRQUMvQyxVQUFVLEVBQUUsTUFBTTtRQUNsQixTQUFTLEVBQUUsTUFBTTtRQUNqQixPQUFPLEVBQUUsV0FBVztRQUNwQixNQUFNLEVBQUUsTUFBTTtLQUNmO0lBQ0QsTUFBTSxFQUFFO1FBQ04sc0JBQXNCO1FBQ3RCLGFBQWE7UUFDYixPQUFPLEVBQUUsS0FBSztLQUNmO0lBQ0QsWUFBWTtJQUNaLDhDQUE4QztJQUM5QywwQkFBMEI7SUFDMUIsMkJBQTJCO0lBQzNCLE9BQU87SUFDUCxpQkFBaUI7SUFDakIsc0JBQXNCO0lBQ3RCLGVBQWU7SUFDZixLQUFLO0lBQ0wsVUFBVSxFQUFFO0lBQ1YscUJBQXFCO0lBQ3JCLGFBQWE7S0FDZDtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgYmFzZVN0eWxlOiBhbnkgPSB7XG4gIHdpZHRoOiAnMTAwJScsXG4gIGZvbnRGYW1pbHk6ICdcIkZyYXVuY2VzXCIsIHNlcmlmJyxcbiAgZm9udFNpemU6ICcxMjUlJyxcbiAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gIG1hcmdpbjogJzAnLFxuICBib3JkZXI6ICcxcHggc29saWQgdmFyKC0tdmJuLWNvbG9yLXByaW1hcnkpJyxcbiAgYm9yZGVyUmFkaXVzOiAnMTZweCcsXG4gIGJvcmRlckNvbGxhcHNlOiAnc2VwYXJhdGUnLFxuICBib3JkZXJTcGFjaW5nOiAnMCcsXG4gIC8vIHRhYmxlTGF5b3V0OiAnZml4ZWQnLFxuICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gIHJvd3M6IHtcbiAgICBldmVuOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd2YXIoLS12Ym4tY29sb3Itc3VyZmFjZSknLFxuICAgIH0sXG4gICAgb2RkOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd2YXIoLS12Ym4tY29sb3Itc3VyZmFjZS1hbHQpJyxcbiAgICB9LFxuICAgIGhlaWdodDogJzY4cHgnLFxuICB9LFxuICBjZWxsczoge1xuICAgIHBhZGRpbmc6ICcycmVtIDFyZW0nLFxuICB9LFxuICBoZWFkZXI6IHtcbiAgICAvLyBzdGlja3lUb3A6IHRydWUsXG4gICAgLy8gekluZGV4OiAyLFxuICAgIGJhY2tncm91bmRDb2xvcjogJ3ZhcigtLXZibi1jb2xvci1zdXJmYWNlLWFsdCknLFxuICAgIGZvbnRXZWlnaHQ6ICdib2xkJyxcbiAgICB0ZXh0QWxpZ246ICdsZWZ0JyxcbiAgICBwYWRkaW5nOiAnMTJweCAxNnB4JyxcbiAgICBoZWlnaHQ6ICczMHB4JyxcbiAgfSxcbiAgZm9vdGVyOiB7XG4gICAgLy8gc3RpY2t5Qm90dG9tOiB0cnVlLFxuICAgIC8vIHpJbmRleDogMixcbiAgICBwYWRkaW5nOiAnM3B4JyxcbiAgfSxcbiAgLy8gICBib2R5OiB7XG4gIC8vICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tdmJuLWNvbG9yLXN1cmZhY2UpJyxcbiAgLy8gICAgIHBhZGRpbmc6ICc0cHggNXB4JyxcbiAgLy8gICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gIC8vICAgfSxcbiAgLy8gZmlyc3RDb2x1bW46IHtcbiAgLy8gICBzdGlja3lMZWZ0OiB0cnVlLFxuICAvLyAgIHpJbmRleDogMSxcbiAgLy8gfSxcbiAgbGFzdENvbHVtbjoge1xuICAgIC8vIHN0aWNreVJpZ2h0OiB0cnVlLFxuICAgIC8vIHpJbmRleDogMSxcbiAgfSxcbn07XG4iXX0=