mis-crystal-design-system 18.0.5 → 18.0.7-test
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.
- package/action-list/action-list.component.d.ts +1 -1
- package/analytics/analytics.service.d.ts +1 -1
- package/async-search-dropdown/async-dropdown.component.d.ts +3 -2
- package/button/button.component.d.ts +1 -1
- package/button/button.directive.d.ts +1 -1
- package/checkbox/checkbox.component.d.ts +1 -1
- package/chip/chip.component.d.ts +1 -1
- package/datepicker_v2/models/dp-config.model.d.ts +1 -1
- package/datepicker_v2/tz-datepicker.directive.d.ts +1 -1
- package/datepicker_v2/tz-dp-container/tz-dp-container.component.d.ts +1 -1
- package/daterangepicker_v2/models/drp-config.model.d.ts +1 -1
- package/daterangepicker_v2/tz-daterangepicker.directive.d.ts +1 -1
- package/daterangepicker_v2/tz-drp-container/tz-drp-container.component.d.ts +1 -1
- package/drawer/drawer-body/drawer-body.component.d.ts +1 -1
- package/dropdown/calculate-container-height.directive.d.ts +1 -1
- package/dropdown/dropdown.component.d.ts +1 -1
- package/dropdown/dropdown.module.d.ts +1 -1
- package/dynamic-form/dynamic-form.component.d.ts +1 -1
- package/esm2022/action-list/action-list.component.mjs +363 -0
- package/{esm2020 → esm2022}/action-list/action-list.module.mjs +5 -5
- package/{esm2020 → esm2022}/analytics/analytics.module.mjs +5 -5
- package/esm2022/analytics/analytics.service.mjs +64 -0
- package/esm2022/async-search-dropdown/async-dropdown.component.mjs +536 -0
- package/{esm2020 → esm2022}/async-search-dropdown/async-dropdown.module.mjs +5 -5
- package/esm2022/button/button.component.mjs +88 -0
- package/esm2022/button/button.directive.mjs +61 -0
- package/{esm2020 → esm2022}/button/button.module.mjs +5 -5
- package/esm2022/checkbox/checkbox.component.mjs +124 -0
- package/{esm2020 → esm2022}/checkbox/checkbox.module.mjs +5 -5
- package/esm2022/chip/chip.component.mjs +82 -0
- package/{esm2020 → esm2022}/chip/chip.module.mjs +5 -5
- package/{esm2020 → esm2022}/datepicker_v2/datepicker.module.mjs +5 -5
- package/esm2022/datepicker_v2/tz-datepicker.directive.mjs +183 -0
- package/esm2022/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +442 -0
- package/{esm2020/daterangepicker_v2 → esm2022/datepicker_v2}/utils/index.mjs +1 -1
- package/{esm2020 → esm2022}/daterangepicker_v2/daterangepicker.module.mjs +5 -5
- package/esm2022/daterangepicker_v2/tz-daterangepicker.directive.mjs +165 -0
- package/esm2022/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +503 -0
- package/esm2022/daterangepicker_v2/utils/index.mjs +45 -0
- package/esm2022/drawer/drawer-body/drawer-body.component.mjs +59 -0
- package/{esm2020 → esm2022}/drawer/drawer-ref.mjs +4 -4
- package/{esm2020 → esm2022}/drawer/drawer.module.mjs +5 -5
- package/{esm2020 → esm2022}/drawer/drawer.service.mjs +5 -5
- package/esm2022/dropdown/calculate-container-height.directive.mjs +41 -0
- package/esm2022/dropdown/dropdown.component.mjs +464 -0
- package/{esm2020 → esm2022}/dropdown/dropdown.module.mjs +6 -6
- package/esm2022/dynamic-form/dynamic-form.component.mjs +1093 -0
- package/{esm2020 → esm2022}/dynamic-form/dynamic-form.module.mjs +13 -13
- package/esm2022/fab/fab.component.mjs +145 -0
- package/{esm2020 → esm2022}/fab/fab.module.mjs +5 -5
- package/esm2022/filter/filter-panel/filter-panel.component.mjs +396 -0
- package/{esm2020 → esm2022}/filter/filters.module.mjs +17 -17
- package/esm2022/filter/has-value.pipe.mjs +31 -0
- package/{esm2020 → esm2022}/input/directives/input/input.directive.mjs +6 -6
- package/{fesm2020/mis-crystal-design-system-input.mjs → esm2022/input/mis-input.component.mjs} +49 -109
- package/{esm2020 → esm2022}/input/mis-input.module.mjs +5 -5
- package/esm2022/input-stepper/input-stepper/input-stepper.component.mjs +89 -0
- package/{esm2020 → esm2022}/input-stepper/input-stepper.module.mjs +5 -5
- package/esm2022/loader/loader.component.mjs +25 -0
- package/{esm2020 → esm2022}/loader/loader.module.mjs +5 -5
- package/esm2022/menu/menu-close.directive.mjs +25 -0
- package/{esm2020 → esm2022}/menu/menu.directive.mjs +7 -7
- package/{esm2020 → esm2022}/menu/menu.module.mjs +5 -5
- package/esm2022/mobile-filter/mobile-filter.component.mjs +180 -0
- package/{esm2020 → esm2022}/mobile-filter/mobile-filter.module.mjs +5 -5
- package/{esm2020 → esm2022}/modal/modal.module.mjs +5 -5
- package/esm2022/modal/modal.service.mjs +70 -0
- package/esm2022/modal/module-wrapper/module-wrapper.component.mjs +56 -0
- package/esm2022/multi-select-dropdown/multi-select-dropdown.component.mjs +489 -0
- package/{esm2020 → esm2022}/multi-select-dropdown/multi-select-dropdown.module.mjs +5 -5
- package/esm2022/nested-multi-select-dropdown/nested-multi-select-dropdown.component.mjs +516 -0
- package/{esm2020 → esm2022}/nested-multi-select-dropdown/nested-multi-select-dropdown.module.mjs +5 -5
- package/esm2022/phone-input/phone-input.component.mjs +72 -0
- package/{esm2020 → esm2022}/phone-input/phone-input.module.mjs +5 -5
- package/esm2022/radio-button/radio-button.component.mjs +57 -0
- package/{esm2020 → esm2022}/radio-button/radio-button.module.mjs +5 -5
- package/esm2022/ske-loader/ske-loader.component.mjs +54 -0
- package/{esm2020 → esm2022}/ske-loader/ske-loader.module.mjs +5 -5
- package/esm2022/slider/slider.component.mjs +46 -0
- package/{esm2020 → esm2022}/slider/slider.module.mjs +7 -7
- package/esm2022/snackbar/snackbar/snackbar.component.mjs +72 -0
- package/{esm2020 → esm2022}/snackbar/snackbar.module.mjs +5 -5
- package/esm2022/snackbar/snackbar.service.mjs +47 -0
- package/{esm2020 → esm2022}/specificdatepicker/specificdatepicker.module.mjs +5 -5
- package/esm2022/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +646 -0
- package/esm2022/specificdatepicker/tz-specificdatepicker.directive.mjs +196 -0
- package/esm2022/specificdatepicker/utils/index.mjs +45 -0
- package/esm2022/star-rating/star-rating.component.mjs +113 -0
- package/{esm2020 → esm2022}/star-rating/star-rating.module.mjs +5 -5
- package/esm2022/switch/switch.component.mjs +56 -0
- package/{esm2020 → esm2022}/switch/switch.module.mjs +5 -5
- package/esm2022/table/custom-table-cell.directive.mjs +42 -0
- package/esm2022/table/filter/filter.component.mjs +177 -0
- package/esm2022/table/sub-table/sub-table.component.mjs +192 -0
- package/esm2022/table/table.component.mjs +486 -0
- package/{esm2020 → esm2022}/table/table.module.mjs +5 -5
- package/esm2022/timepicker/timepicker.component.mjs +374 -0
- package/esm2022/timepicker/timepicker.directive.mjs +69 -0
- package/{esm2020 → esm2022}/timepicker/timepicker.module.mjs +5 -5
- package/esm2022/timerangepicker/timerangepicker.component.mjs +237 -0
- package/{esm2020 → esm2022}/timerangepicker/timerangepicker.module.mjs +5 -5
- package/esm2022/toast/toast.component.mjs +51 -0
- package/{esm2020 → esm2022}/toast/toast.data.service.mjs +8 -8
- package/{esm2020 → esm2022}/toast/toast.module.mjs +5 -5
- package/esm2022/toast/toast.service.mjs +91 -0
- package/esm2022/tooltip/tooltip-container/tooltip.component.mjs +79 -0
- package/esm2022/tooltip/tooltip.directive.mjs +143 -0
- package/{esm2020 → esm2022}/tooltip/tooltip.module.mjs +5 -5
- package/esm2022/virtual-scroll/virtual-scroll.component.mjs +188 -0
- package/{esm2020 → esm2022}/virtual-scroll/virtual-scroll.module.mjs +7 -7
- package/esm2022/widgets/classes/async-widget.mjs +23 -0
- package/{esm2020 → esm2022}/widgets/classes/base-widget.mjs +1 -1
- package/esm2022/widgets/classes/sync-widget.mjs +20 -0
- package/{esm2020 → esm2022}/widgets/services/widget.service.mjs +5 -5
- package/{esm2020 → esm2022}/widgets/widgets.module.mjs +5 -5
- package/fab/fab.component.d.ts +4 -4
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-action-list.mjs +106 -113
- package/fesm2022/mis-crystal-design-system-action-list.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-analytics.mjs +9 -9
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-analytics.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs +561 -0
- package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -0
- package/fesm2022/mis-crystal-design-system-button.mjs +173 -0
- package/fesm2022/mis-crystal-design-system-button.mjs.map +1 -0
- package/fesm2022/mis-crystal-design-system-checkbox.mjs +150 -0
- package/fesm2022/mis-crystal-design-system-checkbox.mjs.map +1 -0
- package/fesm2022/mis-crystal-design-system-chip.mjs +108 -0
- package/fesm2022/mis-crystal-design-system-chip.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-datepicker_v2.mjs +133 -140
- package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs.map +1 -0
- package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs +737 -0
- package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-drawer.mjs +34 -33
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-drawer.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-dropdown.mjs +177 -186
- package/fesm2022/mis-crystal-design-system-dropdown.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-dynamic-form.mjs +441 -456
- package/fesm2022/mis-crystal-design-system-dynamic-form.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-fab.mjs +48 -47
- package/fesm2022/mis-crystal-design-system-fab.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-filter.mjs +113 -120
- package/fesm2022/mis-crystal-design-system-filter.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-input-stepper.mjs +35 -34
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-input-stepper.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-input.mjs +146 -0
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-input.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-loader.mjs +51 -0
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-loader.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-menu.mjs +16 -16
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-menu.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-mobile-filter.mjs +205 -0
- package/fesm2022/mis-crystal-design-system-mobile-filter.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-modal.mjs +34 -33
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-modal.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-multi-select-dropdown.mjs +107 -109
- package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-nested-multi-select-dropdown.mjs +128 -129
- package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-phone-input.mjs +22 -21
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-phone-input.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-radio-button.mjs +83 -0
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-radio-button.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-ske-loader.mjs +77 -0
- package/fesm2022/mis-crystal-design-system-ske-loader.mjs.map +1 -0
- package/fesm2022/mis-crystal-design-system-slider.mjs +80 -0
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-slider.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-snackbar.mjs +32 -32
- package/fesm2022/mis-crystal-design-system-snackbar.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-specificdatepicker.mjs +204 -204
- package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-star-rating.mjs +29 -28
- package/fesm2022/mis-crystal-design-system-star-rating.mjs.map +1 -0
- package/fesm2022/mis-crystal-design-system-switch.mjs +82 -0
- package/fesm2022/mis-crystal-design-system-switch.mjs.map +1 -0
- package/fesm2022/mis-crystal-design-system-table.mjs +913 -0
- package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-timepicker.mjs +78 -74
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-timepicker.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-timerangepicker.mjs +26 -25
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-timerangepicker.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-toast.mjs +35 -34
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-toast.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-tooltip.mjs +47 -47
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-tooltip.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-virtual-scroll.mjs +50 -52
- package/fesm2022/mis-crystal-design-system-virtual-scroll.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-widgets.mjs +4 -4
- package/{fesm2020 → fesm2022}/mis-crystal-design-system-widgets.mjs.map +1 -1
- package/filter/filter-panel/filter-panel.component.d.ts +1 -1
- package/input/directives/input/input.directive.d.ts +1 -1
- package/input/mis-input.component.d.ts +1 -1
- package/input-stepper/input-stepper/input-stepper.component.d.ts +1 -1
- package/loader/loader.component.d.ts +1 -1
- package/menu/menu-close.directive.d.ts +1 -1
- package/menu/menu.directive.d.ts +1 -1
- package/mobile-filter/mobile-filter.component.d.ts +1 -1
- package/modal/module-wrapper/module-wrapper.component.d.ts +1 -1
- package/multi-select-dropdown/multi-select-dropdown.component.d.ts +1 -1
- package/nested-multi-select-dropdown/nested-multi-select-dropdown.component.d.ts +1 -1
- package/package.json +125 -207
- package/phone-input/phone-input.component.d.ts +1 -1
- package/radio-button/radio-button.component.d.ts +1 -1
- package/ske-loader/ske-loader.component.d.ts +1 -1
- package/slider/slider.component.d.ts +1 -1
- package/snackbar/snackbar/snackbar.component.d.ts +1 -1
- package/specificdatepicker/models/sdp-config.model.d.ts +1 -1
- package/specificdatepicker/tz-sdp-container/tz-sdp-container.component.d.ts +1 -1
- package/specificdatepicker/tz-specificdatepicker.directive.d.ts +1 -1
- package/star-rating/star-rating.component.d.ts +1 -1
- package/switch/switch.component.d.ts +1 -1
- package/table/custom-table-cell.directive.d.ts +1 -1
- package/table/filter/filter.component.d.ts +1 -1
- package/table/sub-table/sub-table.component.d.ts +1 -1
- package/table/table.component.d.ts +1 -1
- package/timepicker/timepicker.component.d.ts +1 -1
- package/timepicker/timepicker.directive.d.ts +1 -1
- package/timerangepicker/timerange.namespace.d.ts +1 -1
- package/timerangepicker/timerangepicker.component.d.ts +1 -1
- package/toast/toast.component.d.ts +1 -1
- package/toast/toast.service.d.ts +1 -1
- package/tooltip/models/tooltip.model.d.ts +1 -1
- package/tooltip/tooltip-container/tooltip.component.d.ts +1 -1
- package/tooltip/tooltip.directive.d.ts +1 -1
- package/virtual-scroll/virtual-scroll.component.d.ts +1 -1
- package/widgets/interfaces/widgets.model.d.ts +1 -1
- package/button/button.directive.scss +0 -69
- package/drawer/drawer.scss +0 -20
- package/esm2020/action-list/action-list.component.mjs +0 -370
- package/esm2020/analytics/analytics.service.mjs +0 -64
- package/esm2020/async-search-dropdown/async-dropdown.component.mjs +0 -525
- package/esm2020/button/button.component.mjs +0 -87
- package/esm2020/button/button.directive.mjs +0 -61
- package/esm2020/checkbox/checkbox.component.mjs +0 -124
- package/esm2020/chip/chip.component.mjs +0 -82
- package/esm2020/datepicker_v2/tz-datepicker.directive.mjs +0 -183
- package/esm2020/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +0 -449
- package/esm2020/datepicker_v2/utils/index.mjs +0 -45
- package/esm2020/daterangepicker_v2/tz-daterangepicker.directive.mjs +0 -165
- package/esm2020/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +0 -502
- package/esm2020/drawer/drawer-body/drawer-body.component.mjs +0 -58
- package/esm2020/dropdown/calculate-container-height.directive.mjs +0 -41
- package/esm2020/dropdown/dropdown.component.mjs +0 -472
- package/esm2020/dynamic-form/dynamic-form.component.mjs +0 -1108
- package/esm2020/fab/fab.component.mjs +0 -144
- package/esm2020/filter/filter-panel/filter-panel.component.mjs +0 -403
- package/esm2020/filter/has-value.pipe.mjs +0 -31
- package/esm2020/input/mis-input.component.mjs +0 -84
- package/esm2020/input-stepper/input-stepper/input-stepper.component.mjs +0 -88
- package/esm2020/loader/loader.component.mjs +0 -24
- package/esm2020/menu/menu-close.directive.mjs +0 -25
- package/esm2020/mobile-filter/mobile-filter.component.mjs +0 -181
- package/esm2020/modal/modal.service.mjs +0 -70
- package/esm2020/modal/module-wrapper/module-wrapper.component.mjs +0 -55
- package/esm2020/multi-select-dropdown/multi-select-dropdown.component.mjs +0 -491
- package/esm2020/nested-multi-select-dropdown/nested-multi-select-dropdown.component.mjs +0 -517
- package/esm2020/phone-input/phone-input.component.mjs +0 -71
- package/esm2020/radio-button/radio-button.component.mjs +0 -56
- package/esm2020/ske-loader/ske-loader.component.mjs +0 -53
- package/esm2020/slider/slider.component.mjs +0 -45
- package/esm2020/snackbar/snackbar/snackbar.component.mjs +0 -72
- package/esm2020/snackbar/snackbar.service.mjs +0 -47
- package/esm2020/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +0 -646
- package/esm2020/specificdatepicker/tz-specificdatepicker.directive.mjs +0 -196
- package/esm2020/specificdatepicker/utils/index.mjs +0 -45
- package/esm2020/star-rating/star-rating.component.mjs +0 -112
- package/esm2020/switch/switch.component.mjs +0 -55
- package/esm2020/table/custom-table-cell.directive.mjs +0 -42
- package/esm2020/table/filter/filter.component.mjs +0 -176
- package/esm2020/table/sub-table/sub-table.component.mjs +0 -193
- package/esm2020/table/table.component.mjs +0 -492
- package/esm2020/timepicker/timepicker.component.mjs +0 -370
- package/esm2020/timepicker/timepicker.directive.mjs +0 -69
- package/esm2020/timerangepicker/timerangepicker.component.mjs +0 -236
- package/esm2020/toast/toast.component.mjs +0 -50
- package/esm2020/toast/toast.service.mjs +0 -91
- package/esm2020/tooltip/tooltip-container/tooltip.component.mjs +0 -79
- package/esm2020/tooltip/tooltip.directive.mjs +0 -143
- package/esm2020/virtual-scroll/virtual-scroll.component.mjs +0 -190
- package/esm2020/widgets/classes/async-widget.mjs +0 -23
- package/esm2020/widgets/classes/sync-widget.mjs +0 -20
- package/fesm2015/mis-crystal-design-system-action-list.mjs +0 -446
- package/fesm2015/mis-crystal-design-system-action-list.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-analytics.mjs +0 -87
- package/fesm2015/mis-crystal-design-system-analytics.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-async-search-dropdown.mjs +0 -618
- package/fesm2015/mis-crystal-design-system-async-search-dropdown.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-button.mjs +0 -189
- package/fesm2015/mis-crystal-design-system-button.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-checkbox.mjs +0 -166
- package/fesm2015/mis-crystal-design-system-checkbox.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-chip.mjs +0 -123
- package/fesm2015/mis-crystal-design-system-chip.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-datepicker_v2.mjs +0 -751
- package/fesm2015/mis-crystal-design-system-datepicker_v2.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-daterangepicker_v2.mjs +0 -769
- package/fesm2015/mis-crystal-design-system-daterangepicker_v2.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-drawer.mjs +0 -185
- package/fesm2015/mis-crystal-design-system-drawer.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-dropdown.mjs +0 -616
- package/fesm2015/mis-crystal-design-system-dropdown.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-dynamic-form.mjs +0 -1337
- package/fesm2015/mis-crystal-design-system-dynamic-form.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-fab.mjs +0 -186
- package/fesm2015/mis-crystal-design-system-fab.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-filter.mjs +0 -559
- package/fesm2015/mis-crystal-design-system-filter.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-input-stepper.mjs +0 -124
- package/fesm2015/mis-crystal-design-system-input-stepper.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-input.mjs +0 -165
- package/fesm2015/mis-crystal-design-system-input.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-loader.mjs +0 -57
- package/fesm2015/mis-crystal-design-system-loader.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-menu.mjs +0 -135
- package/fesm2015/mis-crystal-design-system-menu.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-mobile-filter.mjs +0 -227
- package/fesm2015/mis-crystal-design-system-mobile-filter.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-modal.mjs +0 -184
- package/fesm2015/mis-crystal-design-system-modal.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-multi-select-dropdown.mjs +0 -550
- package/fesm2015/mis-crystal-design-system-multi-select-dropdown.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-nested-multi-select-dropdown.mjs +0 -559
- package/fesm2015/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-phone-input.mjs +0 -107
- package/fesm2015/mis-crystal-design-system-phone-input.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-radio-button.mjs +0 -89
- package/fesm2015/mis-crystal-design-system-radio-button.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-ske-loader.mjs +0 -86
- package/fesm2015/mis-crystal-design-system-ske-loader.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-slider.mjs +0 -88
- package/fesm2015/mis-crystal-design-system-slider.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-snackbar.mjs +0 -175
- package/fesm2015/mis-crystal-design-system-snackbar.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-specificdatepicker.mjs +0 -970
- package/fesm2015/mis-crystal-design-system-specificdatepicker.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-star-rating.mjs +0 -145
- package/fesm2015/mis-crystal-design-system-star-rating.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-switch.mjs +0 -88
- package/fesm2015/mis-crystal-design-system-switch.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-table.mjs +0 -1045
- package/fesm2015/mis-crystal-design-system-table.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-timepicker.mjs +0 -484
- package/fesm2015/mis-crystal-design-system-timepicker.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-timerangepicker.mjs +0 -273
- package/fesm2015/mis-crystal-design-system-timerangepicker.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-toast.mjs +0 -214
- package/fesm2015/mis-crystal-design-system-toast.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-tooltip.mjs +0 -272
- package/fesm2015/mis-crystal-design-system-tooltip.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-virtual-scroll.mjs +0 -259
- package/fesm2015/mis-crystal-design-system-virtual-scroll.mjs.map +0 -1
- package/fesm2015/mis-crystal-design-system-widgets.mjs +0 -131
- package/fesm2015/mis-crystal-design-system-widgets.mjs.map +0 -1
- package/fesm2020/mis-crystal-design-system-action-list.mjs.map +0 -1
- package/fesm2020/mis-crystal-design-system-async-search-dropdown.mjs +0 -550
- package/fesm2020/mis-crystal-design-system-async-search-dropdown.mjs.map +0 -1
- package/fesm2020/mis-crystal-design-system-button.mjs +0 -172
- package/fesm2020/mis-crystal-design-system-button.mjs.map +0 -1
- package/fesm2020/mis-crystal-design-system-checkbox.mjs +0 -150
- package/fesm2020/mis-crystal-design-system-checkbox.mjs.map +0 -1
- package/fesm2020/mis-crystal-design-system-chip.mjs +0 -108
- package/fesm2020/mis-crystal-design-system-chip.mjs.map +0 -1
- package/fesm2020/mis-crystal-design-system-datepicker_v2.mjs.map +0 -1
- package/fesm2020/mis-crystal-design-system-daterangepicker_v2.mjs +0 -736
- package/fesm2020/mis-crystal-design-system-daterangepicker_v2.mjs.map +0 -1
- package/fesm2020/mis-crystal-design-system-dropdown.mjs.map +0 -1
- package/fesm2020/mis-crystal-design-system-dynamic-form.mjs.map +0 -1
- package/fesm2020/mis-crystal-design-system-fab.mjs.map +0 -1
- package/fesm2020/mis-crystal-design-system-filter.mjs.map +0 -1
- package/fesm2020/mis-crystal-design-system-loader.mjs +0 -50
- package/fesm2020/mis-crystal-design-system-mobile-filter.mjs +0 -206
- package/fesm2020/mis-crystal-design-system-mobile-filter.mjs.map +0 -1
- package/fesm2020/mis-crystal-design-system-multi-select-dropdown.mjs.map +0 -1
- package/fesm2020/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +0 -1
- package/fesm2020/mis-crystal-design-system-radio-button.mjs +0 -82
- package/fesm2020/mis-crystal-design-system-ske-loader.mjs +0 -76
- package/fesm2020/mis-crystal-design-system-ske-loader.mjs.map +0 -1
- package/fesm2020/mis-crystal-design-system-slider.mjs +0 -79
- package/fesm2020/mis-crystal-design-system-snackbar.mjs.map +0 -1
- package/fesm2020/mis-crystal-design-system-specificdatepicker.mjs.map +0 -1
- package/fesm2020/mis-crystal-design-system-star-rating.mjs.map +0 -1
- package/fesm2020/mis-crystal-design-system-styles.mjs +0 -4
- package/fesm2020/mis-crystal-design-system-styles.mjs.map +0 -1
- package/fesm2020/mis-crystal-design-system-switch.mjs +0 -81
- package/fesm2020/mis-crystal-design-system-switch.mjs.map +0 -1
- package/fesm2020/mis-crystal-design-system-table.mjs +0 -919
- package/fesm2020/mis-crystal-design-system-table.mjs.map +0 -1
- package/fesm2020/mis-crystal-design-system-utils.mjs +0 -24
- package/fesm2020/mis-crystal-design-system-utils.mjs.map +0 -1
- package/fesm2020/mis-crystal-design-system-virtual-scroll.mjs.map +0 -1
- package/fesm2020/mis-crystal-design-system.mjs +0 -24
- package/fesm2020/mis-crystal-design-system.mjs.map +0 -1
- package/input/mis-input.component.scss +0 -180
- package/modal/modal.scss +0 -9
- package/styles/fonts/icomoon.eot +0 -0
- package/styles/fonts/icomoon.svg +0 -315
- package/styles/fonts/icomoon.ttf +0 -0
- package/styles/fonts/icomoon.woff +0 -0
- package/styles/mis-borders-backgrounds.scss +0 -764
- package/styles/mis-color-constants.scss +0 -149
- package/styles/mis-flex.scss +0 -321
- package/styles/mis-fonts.scss +0 -124
- package/styles/mis-icons.scss +0 -1054
- package/styles/mis-mixins.scss +0 -46
- package/styles/mis-old-icon-styles.scss +0 -498
- package/styles/mis-spacing-sizing.scss +0 -2590
- package/styles/mis-typography.scss +0 -462
- /package/{esm2020 → esm2022}/action-list/index.mjs +0 -0
- /package/{esm2020 → esm2022}/action-list/mis-crystal-design-system-action-list.mjs +0 -0
- /package/{esm2020 → esm2022}/action-list/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/analytics/index.mjs +0 -0
- /package/{esm2020 → esm2022}/analytics/mis-crystal-design-system-analytics.mjs +0 -0
- /package/{esm2020 → esm2022}/analytics/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/async-search-dropdown/index.mjs +0 -0
- /package/{esm2020 → esm2022}/async-search-dropdown/mis-crystal-design-system-async-search-dropdown.mjs +0 -0
- /package/{esm2020 → esm2022}/async-search-dropdown/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/button/index.mjs +0 -0
- /package/{esm2020 → esm2022}/button/mis-crystal-design-system-button.mjs +0 -0
- /package/{esm2020 → esm2022}/button/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/checkbox/index.mjs +0 -0
- /package/{esm2020 → esm2022}/checkbox/mis-crystal-design-system-checkbox.mjs +0 -0
- /package/{esm2020 → esm2022}/checkbox/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/chip/index.mjs +0 -0
- /package/{esm2020 → esm2022}/chip/mis-crystal-design-system-chip.mjs +0 -0
- /package/{esm2020 → esm2022}/chip/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/datepicker_v2/datepicker-constants.mjs +0 -0
- /package/{esm2020 → esm2022}/datepicker_v2/index.mjs +0 -0
- /package/{esm2020 → esm2022}/datepicker_v2/mis-crystal-design-system-datepicker_v2.mjs +0 -0
- /package/{esm2020 → esm2022}/datepicker_v2/models/dp-config.model.mjs +0 -0
- /package/{esm2020 → esm2022}/datepicker_v2/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/daterangepicker_v2/daterangepicker-constants.mjs +0 -0
- /package/{esm2020 → esm2022}/daterangepicker_v2/index.mjs +0 -0
- /package/{esm2020 → esm2022}/daterangepicker_v2/mis-crystal-design-system-daterangepicker_v2.mjs +0 -0
- /package/{esm2020 → esm2022}/daterangepicker_v2/models/drp-config.model.mjs +0 -0
- /package/{esm2020 → esm2022}/daterangepicker_v2/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/drawer/drawer-constants.mjs +0 -0
- /package/{esm2020 → esm2022}/drawer/index.mjs +0 -0
- /package/{esm2020 → esm2022}/drawer/mis-crystal-design-system-drawer.mjs +0 -0
- /package/{esm2020 → esm2022}/drawer/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/dropdown/index.mjs +0 -0
- /package/{esm2020 → esm2022}/dropdown/mis-crystal-design-system-dropdown.mjs +0 -0
- /package/{esm2020 → esm2022}/dropdown/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/dynamic-form/dynamic-form.namespace.mjs +0 -0
- /package/{esm2020 → esm2022}/dynamic-form/index.mjs +0 -0
- /package/{esm2020 → esm2022}/dynamic-form/mis-crystal-design-system-dynamic-form.mjs +0 -0
- /package/{esm2020 → esm2022}/dynamic-form/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/fab/index.mjs +0 -0
- /package/{esm2020 → esm2022}/fab/mis-crystal-design-system-fab.mjs +0 -0
- /package/{esm2020 → esm2022}/fab/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/filter/animations/slideFromRight.mjs +0 -0
- /package/{esm2020 → esm2022}/filter/index.mjs +0 -0
- /package/{esm2020 → esm2022}/filter/mis-crystal-design-system-filter.mjs +0 -0
- /package/{esm2020 → esm2022}/filter/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/input/index.mjs +0 -0
- /package/{esm2020 → esm2022}/input/mis-crystal-design-system-input.mjs +0 -0
- /package/{esm2020 → esm2022}/input/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/input-stepper/index.mjs +0 -0
- /package/{esm2020 → esm2022}/input-stepper/mis-crystal-design-system-input-stepper.mjs +0 -0
- /package/{esm2020 → esm2022}/input-stepper/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/loader/index.mjs +0 -0
- /package/{esm2020 → esm2022}/loader/mis-crystal-design-system-loader.mjs +0 -0
- /package/{esm2020 → esm2022}/loader/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/menu/index.mjs +0 -0
- /package/{esm2020 → esm2022}/menu/mis-crystal-design-system-menu.mjs +0 -0
- /package/{esm2020 → esm2022}/menu/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/mis-crystal-design-system.mjs +0 -0
- /package/{esm2020 → esm2022}/mobile-filter/index.mjs +0 -0
- /package/{esm2020 → esm2022}/mobile-filter/mis-crystal-design-system-mobile-filter.mjs +0 -0
- /package/{esm2020 → esm2022}/mobile-filter/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/modal/index.mjs +0 -0
- /package/{esm2020 → esm2022}/modal/mis-crystal-design-system-modal.mjs +0 -0
- /package/{esm2020 → esm2022}/modal/modal-constants.mjs +0 -0
- /package/{esm2020 → esm2022}/modal/modal-ref.mjs +0 -0
- /package/{esm2020 → esm2022}/modal/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/multi-select-dropdown/index.mjs +0 -0
- /package/{esm2020 → esm2022}/multi-select-dropdown/mis-crystal-design-system-multi-select-dropdown.mjs +0 -0
- /package/{esm2020 → esm2022}/multi-select-dropdown/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/nested-multi-select-dropdown/index.mjs +0 -0
- /package/{esm2020 → esm2022}/nested-multi-select-dropdown/mis-crystal-design-system-nested-multi-select-dropdown.mjs +0 -0
- /package/{esm2020 → esm2022}/nested-multi-select-dropdown/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/phone-input/index.mjs +0 -0
- /package/{esm2020 → esm2022}/phone-input/mis-crystal-design-system-phone-input.mjs +0 -0
- /package/{esm2020 → esm2022}/phone-input/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/radio-button/index.mjs +0 -0
- /package/{esm2020 → esm2022}/radio-button/mis-crystal-design-system-radio-button.mjs +0 -0
- /package/{esm2020 → esm2022}/radio-button/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/ske-loader/index.mjs +0 -0
- /package/{esm2020 → esm2022}/ske-loader/mis-crystal-design-system-ske-loader.mjs +0 -0
- /package/{esm2020 → esm2022}/ske-loader/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/slider/index.mjs +0 -0
- /package/{esm2020 → esm2022}/slider/mis-crystal-design-system-slider.mjs +0 -0
- /package/{esm2020 → esm2022}/slider/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/snackbar/index.mjs +0 -0
- /package/{esm2020 → esm2022}/snackbar/mis-crystal-design-system-snackbar.mjs +0 -0
- /package/{esm2020 → esm2022}/snackbar/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/specificdatepicker/daterangepicker-constants.mjs +0 -0
- /package/{esm2020 → esm2022}/specificdatepicker/index.mjs +0 -0
- /package/{esm2020 → esm2022}/specificdatepicker/mis-crystal-design-system-specificdatepicker.mjs +0 -0
- /package/{esm2020 → esm2022}/specificdatepicker/models/sdp-config.model.mjs +0 -0
- /package/{esm2020 → esm2022}/specificdatepicker/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/star-rating/index.mjs +0 -0
- /package/{esm2020 → esm2022}/star-rating/mis-crystal-design-system-star-rating.mjs +0 -0
- /package/{esm2020 → esm2022}/star-rating/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/styles/index.mjs +0 -0
- /package/{esm2020 → esm2022}/styles/mis-crystal-design-system-styles.mjs +0 -0
- /package/{esm2020 → esm2022}/styles/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/switch/index.mjs +0 -0
- /package/{esm2020 → esm2022}/switch/mis-crystal-design-system-switch.mjs +0 -0
- /package/{esm2020 → esm2022}/switch/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/table/index.mjs +0 -0
- /package/{esm2020 → esm2022}/table/mis-crystal-design-system-table.mjs +0 -0
- /package/{esm2020 → esm2022}/table/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/timepicker/index.mjs +0 -0
- /package/{esm2020 → esm2022}/timepicker/mis-crystal-design-system-timepicker.mjs +0 -0
- /package/{esm2020 → esm2022}/timepicker/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/timepicker/time.namespace.mjs +0 -0
- /package/{esm2020 → esm2022}/timerangepicker/index.mjs +0 -0
- /package/{esm2020 → esm2022}/timerangepicker/mis-crystal-design-system-timerangepicker.mjs +0 -0
- /package/{esm2020 → esm2022}/timerangepicker/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/timerangepicker/timerange.namespace.mjs +0 -0
- /package/{esm2020 → esm2022}/toast/index.mjs +0 -0
- /package/{esm2020 → esm2022}/toast/mis-crystal-design-system-toast.mjs +0 -0
- /package/{esm2020 → esm2022}/toast/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/tooltip/index.mjs +0 -0
- /package/{esm2020 → esm2022}/tooltip/mis-crystal-design-system-tooltip.mjs +0 -0
- /package/{esm2020 → esm2022}/tooltip/models/tooltip.model.mjs +0 -0
- /package/{esm2020 → esm2022}/tooltip/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utils/mis-crystal-design-system-utils.mjs +0 -0
- /package/{esm2020 → esm2022}/virtual-scroll/index.mjs +0 -0
- /package/{esm2020 → esm2022}/virtual-scroll/mis-crystal-design-system-virtual-scroll.mjs +0 -0
- /package/{esm2020 → esm2022}/virtual-scroll/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/virtual-scroll/virtual-scroll.constants.mjs +0 -0
- /package/{esm2020 → esm2022}/widgets/classes/widget-group.mjs +0 -0
- /package/{esm2020 → esm2022}/widgets/index.mjs +0 -0
- /package/{esm2020 → esm2022}/widgets/interfaces/widgets.model.mjs +0 -0
- /package/{esm2020 → esm2022}/widgets/mis-crystal-design-system-widgets.mjs +0 -0
- /package/{esm2020 → esm2022}/widgets/public_api.mjs +0 -0
- /package/{fesm2015 → fesm2022}/mis-crystal-design-system-styles.mjs +0 -0
- /package/{fesm2015 → fesm2022}/mis-crystal-design-system-styles.mjs.map +0 -0
- /package/{fesm2015 → fesm2022}/mis-crystal-design-system-utils.mjs +0 -0
- /package/{fesm2015 → fesm2022}/mis-crystal-design-system-utils.mjs.map +0 -0
- /package/{fesm2015 → fesm2022}/mis-crystal-design-system.mjs +0 -0
- /package/{fesm2015 → fesm2022}/mis-crystal-design-system.mjs.map +0 -0
|
@@ -0,0 +1,1093 @@
|
|
|
1
|
+
import { Component, ContentChild, EventEmitter, Input, Output } from "@angular/core";
|
|
2
|
+
import { UntypedFormArray, UntypedFormControl, UntypedFormGroup, Validators } from "@angular/forms";
|
|
3
|
+
import dayjs from 'dayjs';
|
|
4
|
+
import timezone from 'dayjs/plugin/timezone';
|
|
5
|
+
import utc from 'dayjs/plugin/utc';
|
|
6
|
+
import customParseFormat from 'dayjs/plugin/customParseFormat';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/common";
|
|
9
|
+
import * as i2 from "@angular/forms";
|
|
10
|
+
import * as i3 from "mis-crystal-design-system/dropdown";
|
|
11
|
+
import * as i4 from "mis-crystal-design-system/switch";
|
|
12
|
+
import * as i5 from "mis-crystal-design-system/multi-select-dropdown";
|
|
13
|
+
import * as i6 from "mis-crystal-design-system/datepicker_v2";
|
|
14
|
+
const _c0 = ["customInputTextNumber"];
|
|
15
|
+
const _c1 = ["customInputTextarea"];
|
|
16
|
+
const _c2 = ["customInputDate"];
|
|
17
|
+
const _c3 = ["customBooleanToggle"];
|
|
18
|
+
const _c4 = ["customSingleSelectDropdown"];
|
|
19
|
+
const _c5 = ["customSingleSelectRadio"];
|
|
20
|
+
const _c6 = ["customMultiSelectCheckbox"];
|
|
21
|
+
const _c7 = ["customMultiSelectDropdown"];
|
|
22
|
+
const _c8 = (a0, a1, a2) => ({ $implicit: a0, formGroup: a1, control: a2 });
|
|
23
|
+
const _c9 = (a0, a1) => ({ $implicit: a0, control: a1 });
|
|
24
|
+
const _c10 = (a0, a1, a2) => ({ field: a0, control: a1, formgroup: a2 });
|
|
25
|
+
const _c11 = a0 => ({ "border-bottom": a0 });
|
|
26
|
+
const _c12 = a0 => ({ "border": a0 });
|
|
27
|
+
const _c13 = a0 => ({ $implicit: a0 });
|
|
28
|
+
const _c14 = a0 => ({ "removeable-container": a0 });
|
|
29
|
+
const _c15 = a0 => ({ "checkbox-active": a0 });
|
|
30
|
+
const _c16 = () => ({ "flex-basis": "100%", "height": "0" });
|
|
31
|
+
function DynamicFormComponent_ng_container_2_div_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
32
|
+
i0.ɵɵelementContainerStart(0);
|
|
33
|
+
i0.ɵɵelementContainer(1, 15);
|
|
34
|
+
i0.ɵɵelementContainerEnd();
|
|
35
|
+
} if (rf & 2) {
|
|
36
|
+
const subFieldControl_r1 = ctx.$implicit;
|
|
37
|
+
const j_r2 = ctx.index;
|
|
38
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
39
|
+
const fieldControl_r4 = ctx_r2.$implicit;
|
|
40
|
+
const i_r5 = ctx_r2.index;
|
|
41
|
+
const ctx_r5 = i0.ɵɵnextContext();
|
|
42
|
+
const dynamicField_r7 = i0.ɵɵreference(4);
|
|
43
|
+
i0.ɵɵadvance();
|
|
44
|
+
i0.ɵɵproperty("ngTemplateOutlet", dynamicField_r7)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c9, ctx_r5.findSelectedSubFieldConfig(ctx_r5.formFields[i_r5] == null ? null : ctx_r5.formFields[i_r5].subFields, fieldControl_r4.controls.value.value.value, j_r2), subFieldControl_r1));
|
|
45
|
+
} }
|
|
46
|
+
function DynamicFormComponent_ng_container_2_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
47
|
+
i0.ɵɵelementStart(0, "div", 17);
|
|
48
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_container_2_div_2_ng_container_1_Template, 2, 5, "ng-container", 18);
|
|
49
|
+
i0.ɵɵelementEnd();
|
|
50
|
+
} if (rf & 2) {
|
|
51
|
+
const fieldControl_r4 = i0.ɵɵnextContext().$implicit;
|
|
52
|
+
i0.ɵɵadvance();
|
|
53
|
+
i0.ɵɵproperty("ngForOf", fieldControl_r4.controls.subFields.controls);
|
|
54
|
+
} }
|
|
55
|
+
function DynamicFormComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
56
|
+
i0.ɵɵelementContainerStart(0, 14);
|
|
57
|
+
i0.ɵɵelementContainer(1, 15);
|
|
58
|
+
i0.ɵɵtemplate(2, DynamicFormComponent_ng_container_2_div_2_Template, 2, 1, "div", 16);
|
|
59
|
+
i0.ɵɵelementContainerEnd();
|
|
60
|
+
} if (rf & 2) {
|
|
61
|
+
const fieldControl_r4 = ctx.$implicit;
|
|
62
|
+
const i_r5 = ctx.index;
|
|
63
|
+
const ctx_r5 = i0.ɵɵnextContext();
|
|
64
|
+
const dynamicField_r7 = i0.ɵɵreference(4);
|
|
65
|
+
i0.ɵɵproperty("formGroupName", i_r5);
|
|
66
|
+
i0.ɵɵadvance();
|
|
67
|
+
i0.ɵɵproperty("ngTemplateOutlet", dynamicField_r7)("ngTemplateOutletContext", i0.ɵɵpureFunction3(4, _c8, ctx_r5.formFields[i_r5], fieldControl_r4, fieldControl_r4.controls.value));
|
|
68
|
+
i0.ɵɵadvance();
|
|
69
|
+
i0.ɵɵproperty("ngIf", (fieldControl_r4 == null ? null : fieldControl_r4.value) && (!!(ctx_r5.formFields[i_r5] == null ? null : ctx_r5.formFields[i_r5].subFields) && (ctx_r5.formFields[i_r5] == null ? null : ctx_r5.formFields[i_r5].subFields == null ? null : ctx_r5.formFields[i_r5].subFields.length) > 0 && ctx_r5.matchParentConfig(ctx_r5.formFields[i_r5] == null ? null : ctx_r5.formFields[i_r5].subFields, fieldControl_r4 == null ? null : fieldControl_r4.controls == null ? null : fieldControl_r4.controls.value == null ? null : fieldControl_r4.controls.value.value == null ? null : fieldControl_r4.controls.value.value.value)));
|
|
70
|
+
} }
|
|
71
|
+
function DynamicFormComponent_ng_template_3_ng_container_0_ng_container_1_ng_template_1_Template(rf, ctx) { }
|
|
72
|
+
function DynamicFormComponent_ng_template_3_ng_container_0_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
73
|
+
i0.ɵɵelementContainerStart(0);
|
|
74
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_0_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 15);
|
|
75
|
+
i0.ɵɵelementContainerEnd();
|
|
76
|
+
} if (rf & 2) {
|
|
77
|
+
const ctx_r7 = i0.ɵɵnextContext(2);
|
|
78
|
+
const field_r9 = ctx_r7.$implicit;
|
|
79
|
+
const control_r10 = ctx_r7.control;
|
|
80
|
+
const formgroup_r11 = ctx_r7.formGroup;
|
|
81
|
+
const ctx_r5 = i0.ɵɵnextContext();
|
|
82
|
+
i0.ɵɵadvance();
|
|
83
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r5.customInputTextNumber)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r9, control_r10, formgroup_r11));
|
|
84
|
+
} }
|
|
85
|
+
function DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
86
|
+
i0.ɵɵelementStart(0, "span");
|
|
87
|
+
i0.ɵɵtext(1, " *");
|
|
88
|
+
i0.ɵɵelementEnd();
|
|
89
|
+
} }
|
|
90
|
+
function DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_ng_container_6_Template(rf, ctx) { if (rf & 1) {
|
|
91
|
+
i0.ɵɵelementContainer(0, 15);
|
|
92
|
+
} if (rf & 2) {
|
|
93
|
+
const control_r10 = i0.ɵɵnextContext(3).control;
|
|
94
|
+
i0.ɵɵnextContext();
|
|
95
|
+
const dynamicFieldErrors_r13 = i0.ɵɵreference(6);
|
|
96
|
+
i0.ɵɵproperty("ngTemplateOutlet", dynamicFieldErrors_r13)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c13, control_r10.errors));
|
|
97
|
+
} }
|
|
98
|
+
function DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
99
|
+
const _r12 = i0.ɵɵgetCurrentView();
|
|
100
|
+
i0.ɵɵelementStart(0, "div", 21)(1, "p", 22);
|
|
101
|
+
i0.ɵɵtext(2);
|
|
102
|
+
i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_span_3_Template, 2, 0, "span", 19);
|
|
103
|
+
i0.ɵɵelementEnd();
|
|
104
|
+
i0.ɵɵelement(4, "div", 23);
|
|
105
|
+
i0.ɵɵelementStart(5, "input", 24);
|
|
106
|
+
i0.ɵɵlistener("ngModelChange", function DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_Template_input_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r7 = i0.ɵɵnextContext(2); const field_r9 = ctx_r7.$implicit; const formgroup_r11 = ctx_r7.formGroup; const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r5.updateSubDynamicFields(field_r9, formgroup_r11, $event)); });
|
|
107
|
+
i0.ɵɵelementEnd();
|
|
108
|
+
i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_ng_container_6_Template, 1, 4, "ng-container", 25);
|
|
109
|
+
i0.ɵɵelementEnd();
|
|
110
|
+
} if (rf & 2) {
|
|
111
|
+
const ctx_r7 = i0.ɵɵnextContext(2);
|
|
112
|
+
const field_r9 = ctx_r7.$implicit;
|
|
113
|
+
const control_r10 = ctx_r7.control;
|
|
114
|
+
const formgroup_r11 = ctx_r7.formGroup;
|
|
115
|
+
const ctx_r5 = i0.ɵɵnextContext();
|
|
116
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(9, _c11, (formgroup_r11 == null ? null : formgroup_r11.controls == null ? null : formgroup_r11.controls.subFields == null ? null : formgroup_r11.controls.subFields.controls == null ? null : formgroup_r11.controls.subFields.controls.length) && ctx_r5.removeSepratorForSubFields ? "none" : ""));
|
|
117
|
+
i0.ɵɵadvance(2);
|
|
118
|
+
i0.ɵɵtextInterpolate1(" ", field_r9 == null ? null : field_r9.title, " ");
|
|
119
|
+
i0.ɵɵadvance();
|
|
120
|
+
i0.ɵɵproperty("ngIf", field_r9.validators && field_r9.validators.length > 0);
|
|
121
|
+
i0.ɵɵadvance(2);
|
|
122
|
+
i0.ɵɵproperty("type", field_r9.fieldInputType)("formControl", control_r10)("ngStyle", i0.ɵɵpureFunction1(11, _c12, control_r10.touched && control_r10.errors ? "1px solid #B00020" : ""))("placeholder", field_r9.placeholderText ? field_r9.placeholderText : "Input Text")("min", field_r9.fieldInputType === "number" ? 0 : "");
|
|
123
|
+
i0.ɵɵadvance();
|
|
124
|
+
i0.ɵɵproperty("ngIf", control_r10.touched && control_r10.errors);
|
|
125
|
+
} }
|
|
126
|
+
function DynamicFormComponent_ng_template_3_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
|
127
|
+
i0.ɵɵelementContainerStart(0);
|
|
128
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_0_ng_container_1_Template, 2, 6, "ng-container", 20)(2, DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_Template, 7, 13, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
|
|
129
|
+
i0.ɵɵelementContainerEnd();
|
|
130
|
+
} if (rf & 2) {
|
|
131
|
+
const defaultInputTextNumber_r14 = i0.ɵɵreference(3);
|
|
132
|
+
const ctx_r5 = i0.ɵɵnextContext(2);
|
|
133
|
+
i0.ɵɵadvance();
|
|
134
|
+
i0.ɵɵproperty("ngIf", ctx_r5.customInputTextNumber)("ngIfElse", defaultInputTextNumber_r14);
|
|
135
|
+
} }
|
|
136
|
+
function DynamicFormComponent_ng_template_3_ng_container_1_ng_container_1_ng_template_1_Template(rf, ctx) { }
|
|
137
|
+
function DynamicFormComponent_ng_template_3_ng_container_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
138
|
+
i0.ɵɵelementContainerStart(0);
|
|
139
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_1_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 15);
|
|
140
|
+
i0.ɵɵelementContainerEnd();
|
|
141
|
+
} if (rf & 2) {
|
|
142
|
+
const ctx_r7 = i0.ɵɵnextContext(2);
|
|
143
|
+
const field_r9 = ctx_r7.$implicit;
|
|
144
|
+
const control_r10 = ctx_r7.control;
|
|
145
|
+
const formgroup_r11 = ctx_r7.formGroup;
|
|
146
|
+
const ctx_r5 = i0.ɵɵnextContext();
|
|
147
|
+
i0.ɵɵadvance();
|
|
148
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r5.customInputTextarea)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r9, control_r10, formgroup_r11));
|
|
149
|
+
} }
|
|
150
|
+
function DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
151
|
+
i0.ɵɵelementStart(0, "span");
|
|
152
|
+
i0.ɵɵtext(1, " *");
|
|
153
|
+
i0.ɵɵelementEnd();
|
|
154
|
+
} }
|
|
155
|
+
function DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_ng_container_6_Template(rf, ctx) { if (rf & 1) {
|
|
156
|
+
i0.ɵɵelementContainer(0, 15);
|
|
157
|
+
} if (rf & 2) {
|
|
158
|
+
const control_r10 = i0.ɵɵnextContext(3).control;
|
|
159
|
+
i0.ɵɵnextContext();
|
|
160
|
+
const dynamicFieldErrors_r13 = i0.ɵɵreference(6);
|
|
161
|
+
i0.ɵɵproperty("ngTemplateOutlet", dynamicFieldErrors_r13)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c13, control_r10.errors));
|
|
162
|
+
} }
|
|
163
|
+
function DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
164
|
+
const _r15 = i0.ɵɵgetCurrentView();
|
|
165
|
+
i0.ɵɵelementStart(0, "div", 21)(1, "p", 22);
|
|
166
|
+
i0.ɵɵtext(2);
|
|
167
|
+
i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_span_3_Template, 2, 0, "span", 19);
|
|
168
|
+
i0.ɵɵelementEnd();
|
|
169
|
+
i0.ɵɵelement(4, "div", 23);
|
|
170
|
+
i0.ɵɵelementStart(5, "textarea", 26);
|
|
171
|
+
i0.ɵɵlistener("ngModelChange", function DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_Template_textarea_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r7 = i0.ɵɵnextContext(2); const field_r9 = ctx_r7.$implicit; const formgroup_r11 = ctx_r7.formGroup; const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r5.updateSubDynamicFields(field_r9, formgroup_r11, $event)); });
|
|
172
|
+
i0.ɵɵelementEnd();
|
|
173
|
+
i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_ng_container_6_Template, 1, 4, "ng-container", 25);
|
|
174
|
+
i0.ɵɵelementEnd();
|
|
175
|
+
} if (rf & 2) {
|
|
176
|
+
const ctx_r7 = i0.ɵɵnextContext(2);
|
|
177
|
+
const field_r9 = ctx_r7.$implicit;
|
|
178
|
+
const control_r10 = ctx_r7.control;
|
|
179
|
+
const formgroup_r11 = ctx_r7.formGroup;
|
|
180
|
+
const ctx_r5 = i0.ɵɵnextContext();
|
|
181
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(7, _c11, (formgroup_r11 == null ? null : formgroup_r11.controls == null ? null : formgroup_r11.controls.subFields == null ? null : formgroup_r11.controls.subFields.controls == null ? null : formgroup_r11.controls.subFields.controls.length) && ctx_r5.removeSepratorForSubFields ? "none" : ""));
|
|
182
|
+
i0.ɵɵadvance(2);
|
|
183
|
+
i0.ɵɵtextInterpolate1(" ", field_r9.title, "");
|
|
184
|
+
i0.ɵɵadvance();
|
|
185
|
+
i0.ɵɵproperty("ngIf", field_r9.validators && field_r9.validators.length > 0);
|
|
186
|
+
i0.ɵɵadvance(2);
|
|
187
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(9, _c12, control_r10.touched && control_r10.errors ? "1px solid #B00020" : ""))("placeholder", field_r9.placeholderText ? field_r9.placeholderText : "Input Text")("formControl", control_r10);
|
|
188
|
+
i0.ɵɵadvance();
|
|
189
|
+
i0.ɵɵproperty("ngIf", control_r10.touched && control_r10.errors);
|
|
190
|
+
} }
|
|
191
|
+
function DynamicFormComponent_ng_template_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
192
|
+
i0.ɵɵelementContainerStart(0);
|
|
193
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_1_ng_container_1_Template, 2, 6, "ng-container", 20)(2, DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_Template, 7, 11, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
|
|
194
|
+
i0.ɵɵelementContainerEnd();
|
|
195
|
+
} if (rf & 2) {
|
|
196
|
+
const defaultInputTextarea_r16 = i0.ɵɵreference(3);
|
|
197
|
+
const ctx_r5 = i0.ɵɵnextContext(2);
|
|
198
|
+
i0.ɵɵadvance();
|
|
199
|
+
i0.ɵɵproperty("ngIf", ctx_r5.customInputTextarea)("ngIfElse", defaultInputTextarea_r16);
|
|
200
|
+
} }
|
|
201
|
+
function DynamicFormComponent_ng_template_3_ng_container_2_ng_container_1_ng_template_1_Template(rf, ctx) { }
|
|
202
|
+
function DynamicFormComponent_ng_template_3_ng_container_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
203
|
+
i0.ɵɵelementContainerStart(0);
|
|
204
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_2_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 15);
|
|
205
|
+
i0.ɵɵelementContainerEnd();
|
|
206
|
+
} if (rf & 2) {
|
|
207
|
+
const ctx_r7 = i0.ɵɵnextContext(2);
|
|
208
|
+
const field_r9 = ctx_r7.$implicit;
|
|
209
|
+
const control_r10 = ctx_r7.control;
|
|
210
|
+
const formgroup_r11 = ctx_r7.formGroup;
|
|
211
|
+
const ctx_r5 = i0.ɵɵnextContext();
|
|
212
|
+
i0.ɵɵadvance();
|
|
213
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r5.customInputDate)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r9, control_r10, formgroup_r11));
|
|
214
|
+
} }
|
|
215
|
+
function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
216
|
+
i0.ɵɵelementStart(0, "span");
|
|
217
|
+
i0.ɵɵtext(1, " *");
|
|
218
|
+
i0.ɵɵelementEnd();
|
|
219
|
+
} }
|
|
220
|
+
function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_img_7_Template(rf, ctx) { if (rf & 1) {
|
|
221
|
+
const _r18 = i0.ɵɵgetCurrentView();
|
|
222
|
+
i0.ɵɵelementStart(0, "img", 33);
|
|
223
|
+
i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_img_7_Template_img_click_0_listener() { i0.ɵɵrestoreView(_r18); i0.ɵɵnextContext(); const dp_r19 = i0.ɵɵreference(6); return i0.ɵɵresetView(dp_r19.click()); });
|
|
224
|
+
i0.ɵɵelementEnd();
|
|
225
|
+
} if (rf & 2) {
|
|
226
|
+
const ctx_r5 = i0.ɵɵnextContext(5);
|
|
227
|
+
i0.ɵɵproperty("src", ctx_r5.calendarIconUrl, i0.ɵɵsanitizeUrl);
|
|
228
|
+
} }
|
|
229
|
+
function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_ng_container_8_Template(rf, ctx) { if (rf & 1) {
|
|
230
|
+
i0.ɵɵelementContainer(0, 15);
|
|
231
|
+
} if (rf & 2) {
|
|
232
|
+
const control_r10 = i0.ɵɵnextContext(4).control;
|
|
233
|
+
i0.ɵɵnextContext();
|
|
234
|
+
const dynamicFieldErrors_r13 = i0.ɵɵreference(6);
|
|
235
|
+
i0.ɵɵproperty("ngTemplateOutlet", dynamicFieldErrors_r13)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c13, control_r10.errors));
|
|
236
|
+
} }
|
|
237
|
+
function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_Template(rf, ctx) { if (rf & 1) {
|
|
238
|
+
const _r17 = i0.ɵɵgetCurrentView();
|
|
239
|
+
i0.ɵɵelementStart(0, "div", 28)(1, "p", 29);
|
|
240
|
+
i0.ɵɵtext(2);
|
|
241
|
+
i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_span_3_Template, 2, 0, "span", 19);
|
|
242
|
+
i0.ɵɵelementEnd();
|
|
243
|
+
i0.ɵɵelementStart(4, "div", 30)(5, "input", 31, 5);
|
|
244
|
+
i0.ɵɵlistener("dateChange", function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_Template_input_dateChange_5_listener($event) { i0.ɵɵrestoreView(_r17); const control_r10 = i0.ɵɵnextContext(3).control; return i0.ɵɵresetView(control_r10.setValue($event)); });
|
|
245
|
+
i0.ɵɵelementEnd();
|
|
246
|
+
i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_img_7_Template, 1, 1, "img", 32);
|
|
247
|
+
i0.ɵɵelementEnd();
|
|
248
|
+
i0.ɵɵtemplate(8, DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_ng_container_8_Template, 1, 4, "ng-container", 25);
|
|
249
|
+
i0.ɵɵelementEnd();
|
|
250
|
+
} if (rf & 2) {
|
|
251
|
+
const ctx_r7 = i0.ɵɵnextContext(3);
|
|
252
|
+
const field_r9 = ctx_r7.$implicit;
|
|
253
|
+
const control_r10 = ctx_r7.control;
|
|
254
|
+
const formgroup_r11 = ctx_r7.formGroup;
|
|
255
|
+
const ctx_r5 = i0.ɵɵnextContext();
|
|
256
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(9, _c11, (formgroup_r11 == null ? null : formgroup_r11.controls == null ? null : formgroup_r11.controls.subFields == null ? null : formgroup_r11.controls.subFields.controls == null ? null : formgroup_r11.controls.subFields.controls.length) && ctx_r5.removeSepratorForSubFields ? "none" : ""));
|
|
257
|
+
i0.ɵɵadvance(2);
|
|
258
|
+
i0.ɵɵtextInterpolate1(" ", field_r9.title, " ");
|
|
259
|
+
i0.ɵɵadvance();
|
|
260
|
+
i0.ɵɵproperty("ngIf", field_r9.validators && field_r9.validators.length > 0);
|
|
261
|
+
i0.ɵɵadvance(2);
|
|
262
|
+
i0.ɵɵproperty("dpConfig", field_r9.fieldConfig)("selectedDate", control_r10.value)("offsetY", 0)("value", control_r10.value);
|
|
263
|
+
i0.ɵɵadvance(2);
|
|
264
|
+
i0.ɵɵproperty("ngIf", ctx_r5.calendarIconUrl);
|
|
265
|
+
i0.ɵɵadvance();
|
|
266
|
+
i0.ɵɵproperty("ngIf", control_r10.touched && control_r10.errors);
|
|
267
|
+
} }
|
|
268
|
+
function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
269
|
+
i0.ɵɵtemplate(0, DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_Template, 9, 11, "div", 27);
|
|
270
|
+
} if (rf & 2) {
|
|
271
|
+
const field_r9 = i0.ɵɵnextContext(2).$implicit;
|
|
272
|
+
i0.ɵɵproperty("ngIf", field_r9.fieldType === "input" && field_r9.fieldInputType === "date");
|
|
273
|
+
} }
|
|
274
|
+
function DynamicFormComponent_ng_template_3_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
275
|
+
i0.ɵɵelementContainerStart(0);
|
|
276
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_2_ng_container_1_Template, 2, 6, "ng-container", 20)(2, DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_Template, 1, 1, "ng-template", null, 4, i0.ɵɵtemplateRefExtractor);
|
|
277
|
+
i0.ɵɵelementContainerEnd();
|
|
278
|
+
} if (rf & 2) {
|
|
279
|
+
const defaultInputDate_r20 = i0.ɵɵreference(3);
|
|
280
|
+
const ctx_r5 = i0.ɵɵnextContext(2);
|
|
281
|
+
i0.ɵɵadvance();
|
|
282
|
+
i0.ɵɵproperty("ngIf", ctx_r5.customInputDate)("ngIfElse", defaultInputDate_r20);
|
|
283
|
+
} }
|
|
284
|
+
function DynamicFormComponent_ng_template_3_ng_container_3_ng_container_1_ng_template_1_Template(rf, ctx) { }
|
|
285
|
+
function DynamicFormComponent_ng_template_3_ng_container_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
286
|
+
i0.ɵɵelementContainerStart(0);
|
|
287
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_3_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 15);
|
|
288
|
+
i0.ɵɵelementContainerEnd();
|
|
289
|
+
} if (rf & 2) {
|
|
290
|
+
const ctx_r7 = i0.ɵɵnextContext(2);
|
|
291
|
+
const field_r9 = ctx_r7.$implicit;
|
|
292
|
+
const control_r10 = ctx_r7.control;
|
|
293
|
+
const formgroup_r11 = ctx_r7.formGroup;
|
|
294
|
+
const ctx_r5 = i0.ɵɵnextContext();
|
|
295
|
+
i0.ɵɵadvance();
|
|
296
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r5.customBooleanToggle)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r9, control_r10, formgroup_r11));
|
|
297
|
+
} }
|
|
298
|
+
function DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
299
|
+
i0.ɵɵelementStart(0, "span");
|
|
300
|
+
i0.ɵɵtext(1, " *");
|
|
301
|
+
i0.ɵɵelementEnd();
|
|
302
|
+
} }
|
|
303
|
+
function DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_ng_container_5_Template(rf, ctx) { if (rf & 1) {
|
|
304
|
+
i0.ɵɵelementContainer(0, 15);
|
|
305
|
+
} if (rf & 2) {
|
|
306
|
+
const control_r10 = i0.ɵɵnextContext(3).control;
|
|
307
|
+
i0.ɵɵnextContext();
|
|
308
|
+
const dynamicFieldErrors_r13 = i0.ɵɵreference(6);
|
|
309
|
+
i0.ɵɵproperty("ngTemplateOutlet", dynamicFieldErrors_r13)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c13, control_r10.errors));
|
|
310
|
+
} }
|
|
311
|
+
function DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
312
|
+
const _r21 = i0.ɵɵgetCurrentView();
|
|
313
|
+
i0.ɵɵelementStart(0, "div", 28)(1, "p", 29);
|
|
314
|
+
i0.ɵɵtext(2);
|
|
315
|
+
i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_span_3_Template, 2, 0, "span", 19);
|
|
316
|
+
i0.ɵɵelementEnd();
|
|
317
|
+
i0.ɵɵelementStart(4, "mis-switch", 34);
|
|
318
|
+
i0.ɵɵlistener("valueChanged", function DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_Template_mis_switch_valueChanged_4_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r7 = i0.ɵɵnextContext(2); const field_r9 = ctx_r7.$implicit; const formgroup_r11 = ctx_r7.formGroup; const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r5.updateSubDynamicFields(field_r9, formgroup_r11, $event)); });
|
|
319
|
+
i0.ɵɵelementEnd();
|
|
320
|
+
i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_ng_container_5_Template, 1, 4, "ng-container", 25);
|
|
321
|
+
i0.ɵɵelementEnd();
|
|
322
|
+
} if (rf & 2) {
|
|
323
|
+
const ctx_r7 = i0.ɵɵnextContext(2);
|
|
324
|
+
const field_r9 = ctx_r7.$implicit;
|
|
325
|
+
const control_r10 = ctx_r7.control;
|
|
326
|
+
const formgroup_r11 = ctx_r7.formGroup;
|
|
327
|
+
const ctx_r5 = i0.ɵɵnextContext();
|
|
328
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(5, _c11, (formgroup_r11 == null ? null : formgroup_r11.controls == null ? null : formgroup_r11.controls.subFields == null ? null : formgroup_r11.controls.subFields.controls == null ? null : formgroup_r11.controls.subFields.controls.length) && ctx_r5.removeSepratorForSubFields ? "none" : ""));
|
|
329
|
+
i0.ɵɵadvance(2);
|
|
330
|
+
i0.ɵɵtextInterpolate1(" ", field_r9.title, "");
|
|
331
|
+
i0.ɵɵadvance();
|
|
332
|
+
i0.ɵɵproperty("ngIf", field_r9.validators && field_r9.validators.length > 0);
|
|
333
|
+
i0.ɵɵadvance();
|
|
334
|
+
i0.ɵɵproperty("control", control_r10);
|
|
335
|
+
i0.ɵɵadvance();
|
|
336
|
+
i0.ɵɵproperty("ngIf", control_r10.touched && control_r10.errors);
|
|
337
|
+
} }
|
|
338
|
+
function DynamicFormComponent_ng_template_3_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
339
|
+
i0.ɵɵelementContainerStart(0);
|
|
340
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_3_ng_container_1_Template, 2, 6, "ng-container", 20)(2, DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_Template, 6, 7, "ng-template", null, 6, i0.ɵɵtemplateRefExtractor);
|
|
341
|
+
i0.ɵɵelementContainerEnd();
|
|
342
|
+
} if (rf & 2) {
|
|
343
|
+
const defaultBooleanToggle_r22 = i0.ɵɵreference(3);
|
|
344
|
+
const ctx_r5 = i0.ɵɵnextContext(2);
|
|
345
|
+
i0.ɵɵadvance();
|
|
346
|
+
i0.ɵɵproperty("ngIf", ctx_r5.customBooleanToggle)("ngIfElse", defaultBooleanToggle_r22);
|
|
347
|
+
} }
|
|
348
|
+
function DynamicFormComponent_ng_template_3_ng_container_4_ng_container_1_ng_template_1_Template(rf, ctx) { }
|
|
349
|
+
function DynamicFormComponent_ng_template_3_ng_container_4_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
350
|
+
i0.ɵɵelementContainerStart(0);
|
|
351
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_4_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 15);
|
|
352
|
+
i0.ɵɵelementContainerEnd();
|
|
353
|
+
} if (rf & 2) {
|
|
354
|
+
const ctx_r7 = i0.ɵɵnextContext(2);
|
|
355
|
+
const field_r9 = ctx_r7.$implicit;
|
|
356
|
+
const control_r10 = ctx_r7.control;
|
|
357
|
+
const formgroup_r11 = ctx_r7.formGroup;
|
|
358
|
+
const ctx_r5 = i0.ɵɵnextContext();
|
|
359
|
+
i0.ɵɵadvance();
|
|
360
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r5.customSingleSelectDropdown)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r9, control_r10, formgroup_r11));
|
|
361
|
+
} }
|
|
362
|
+
function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
363
|
+
i0.ɵɵelementStart(0, "span");
|
|
364
|
+
i0.ɵɵtext(1, " *");
|
|
365
|
+
i0.ɵɵelementEnd();
|
|
366
|
+
} }
|
|
367
|
+
function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_img_6_Template(rf, ctx) { if (rf & 1) {
|
|
368
|
+
const _r24 = i0.ɵɵgetCurrentView();
|
|
369
|
+
i0.ɵɵelementStart(0, "img", 38);
|
|
370
|
+
i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_img_6_Template_img_click_0_listener() { i0.ɵɵrestoreView(_r24); const field_r9 = i0.ɵɵnextContext(3).$implicit; const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r5.fieldRemoved.emit(field_r9)); });
|
|
371
|
+
i0.ɵɵelementEnd();
|
|
372
|
+
} if (rf & 2) {
|
|
373
|
+
const ctx_r5 = i0.ɵɵnextContext(4);
|
|
374
|
+
i0.ɵɵproperty("src", ctx_r5.removeIconUrl, i0.ɵɵsanitizeUrl);
|
|
375
|
+
} }
|
|
376
|
+
function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_ng_container_7_Template(rf, ctx) { if (rf & 1) {
|
|
377
|
+
i0.ɵɵelementContainer(0, 15);
|
|
378
|
+
} if (rf & 2) {
|
|
379
|
+
const control_r10 = i0.ɵɵnextContext(3).control;
|
|
380
|
+
i0.ɵɵnextContext();
|
|
381
|
+
const dynamicFieldErrors_r13 = i0.ɵɵreference(6);
|
|
382
|
+
i0.ɵɵproperty("ngTemplateOutlet", dynamicFieldErrors_r13)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c13, control_r10.errors));
|
|
383
|
+
} }
|
|
384
|
+
function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
385
|
+
const _r23 = i0.ɵɵgetCurrentView();
|
|
386
|
+
i0.ɵɵelementStart(0, "div", 28)(1, "p", 29);
|
|
387
|
+
i0.ɵɵtext(2);
|
|
388
|
+
i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_span_3_Template, 2, 0, "span", 19);
|
|
389
|
+
i0.ɵɵelementEnd();
|
|
390
|
+
i0.ɵɵelementStart(4, "div", 35)(5, "mis-dropdown", 36);
|
|
391
|
+
i0.ɵɵlistener("onChange", function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_Template_mis_dropdown_onChange_5_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r7 = i0.ɵɵnextContext(2); const field_r9 = ctx_r7.$implicit; const control_r10 = ctx_r7.control; const formgroup_r11 = ctx_r7.formGroup; const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r5.updateSelectedValueForSingleSelect(field_r9, control_r10, formgroup_r11, $event)); });
|
|
392
|
+
i0.ɵɵelementEnd();
|
|
393
|
+
i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_img_6_Template, 1, 1, "img", 37);
|
|
394
|
+
i0.ɵɵelementEnd();
|
|
395
|
+
i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_ng_container_7_Template, 1, 4, "ng-container", 25);
|
|
396
|
+
i0.ɵɵelementEnd();
|
|
397
|
+
} if (rf & 2) {
|
|
398
|
+
const ctx_r7 = i0.ɵɵnextContext(2);
|
|
399
|
+
const field_r9 = ctx_r7.$implicit;
|
|
400
|
+
const control_r10 = ctx_r7.control;
|
|
401
|
+
const formgroup_r11 = ctx_r7.formGroup;
|
|
402
|
+
const ctx_r5 = i0.ɵɵnextContext();
|
|
403
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(10, _c11, (formgroup_r11 == null ? null : formgroup_r11.controls == null ? null : formgroup_r11.controls.subFields == null ? null : formgroup_r11.controls.subFields.controls == null ? null : formgroup_r11.controls.subFields.controls.length) && ctx_r5.removeSepratorForSubFields ? "none" : ""));
|
|
404
|
+
i0.ɵɵadvance(2);
|
|
405
|
+
i0.ɵɵtextInterpolate1(" ", field_r9.title, "");
|
|
406
|
+
i0.ɵɵadvance();
|
|
407
|
+
i0.ɵɵproperty("ngIf", field_r9.validators && field_r9.validators.length > 0);
|
|
408
|
+
i0.ɵɵadvance();
|
|
409
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(12, _c14, field_r9 == null ? null : field_r9.isRemoveable));
|
|
410
|
+
i0.ɵɵadvance();
|
|
411
|
+
i0.ɵɵproperty("searchEnabled", false)("width", "140px")("data", field_r9.itemsList)("selectedItem", control_r10.value);
|
|
412
|
+
i0.ɵɵadvance();
|
|
413
|
+
i0.ɵɵproperty("ngIf", field_r9.isRemoveable && ctx_r5.removeIconUrl);
|
|
414
|
+
i0.ɵɵadvance();
|
|
415
|
+
i0.ɵɵproperty("ngIf", control_r10.touched && control_r10.errors);
|
|
416
|
+
} }
|
|
417
|
+
function DynamicFormComponent_ng_template_3_ng_container_4_Template(rf, ctx) { if (rf & 1) {
|
|
418
|
+
i0.ɵɵelementContainerStart(0);
|
|
419
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_4_ng_container_1_Template, 2, 6, "ng-container", 20)(2, DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_Template, 8, 14, "ng-template", null, 7, i0.ɵɵtemplateRefExtractor);
|
|
420
|
+
i0.ɵɵelementContainerEnd();
|
|
421
|
+
} if (rf & 2) {
|
|
422
|
+
const defaultSingleSelectDropdown_r25 = i0.ɵɵreference(3);
|
|
423
|
+
const ctx_r5 = i0.ɵɵnextContext(2);
|
|
424
|
+
i0.ɵɵadvance();
|
|
425
|
+
i0.ɵɵproperty("ngIf", ctx_r5.customSingleSelectDropdown)("ngIfElse", defaultSingleSelectDropdown_r25);
|
|
426
|
+
} }
|
|
427
|
+
function DynamicFormComponent_ng_template_3_ng_container_5_ng_container_1_ng_template_1_Template(rf, ctx) { }
|
|
428
|
+
function DynamicFormComponent_ng_template_3_ng_container_5_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
429
|
+
i0.ɵɵelementContainerStart(0);
|
|
430
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_5_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 15);
|
|
431
|
+
i0.ɵɵelementContainerEnd();
|
|
432
|
+
} if (rf & 2) {
|
|
433
|
+
const ctx_r7 = i0.ɵɵnextContext(2);
|
|
434
|
+
const field_r9 = ctx_r7.$implicit;
|
|
435
|
+
const control_r10 = ctx_r7.control;
|
|
436
|
+
const formgroup_r11 = ctx_r7.formGroup;
|
|
437
|
+
const ctx_r5 = i0.ɵɵnextContext();
|
|
438
|
+
i0.ɵɵadvance();
|
|
439
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r5.customSingleSelectRadio)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r9, control_r10, formgroup_r11));
|
|
440
|
+
} }
|
|
441
|
+
function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
442
|
+
i0.ɵɵelementStart(0, "span");
|
|
443
|
+
i0.ɵɵtext(1, " *");
|
|
444
|
+
i0.ɵɵelementEnd();
|
|
445
|
+
} }
|
|
446
|
+
function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_div_6_img_1_Template(rf, ctx) { if (rf & 1) {
|
|
447
|
+
i0.ɵɵelement(0, "img", 43);
|
|
448
|
+
} if (rf & 2) {
|
|
449
|
+
const ctx_r5 = i0.ɵɵnextContext(5);
|
|
450
|
+
i0.ɵɵproperty("src", ctx_r5.activeBtnIconUrl, i0.ɵɵsanitizeUrl);
|
|
451
|
+
} }
|
|
452
|
+
function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_div_6_Template(rf, ctx) { if (rf & 1) {
|
|
453
|
+
const _r26 = i0.ɵɵgetCurrentView();
|
|
454
|
+
i0.ɵɵelementStart(0, "div", 41);
|
|
455
|
+
i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_div_6_Template_div_click_0_listener() { const item_r27 = i0.ɵɵrestoreView(_r26).$implicit; const ctx_r7 = i0.ɵɵnextContext(3); const field_r9 = ctx_r7.$implicit; const control_r10 = ctx_r7.control; const formgroup_r11 = ctx_r7.formGroup; const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r5.updateSelectedValueForSingleSelect(field_r9, control_r10, formgroup_r11, item_r27)); });
|
|
456
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_div_6_img_1_Template, 1, 1, "img", 42);
|
|
457
|
+
i0.ɵɵelementStart(2, "p", 29);
|
|
458
|
+
i0.ɵɵtext(3);
|
|
459
|
+
i0.ɵɵelementEnd()();
|
|
460
|
+
} if (rf & 2) {
|
|
461
|
+
const item_r27 = ctx.$implicit;
|
|
462
|
+
const control_r10 = i0.ɵɵnextContext(3).control;
|
|
463
|
+
const ctx_r5 = i0.ɵɵnextContext();
|
|
464
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c15, item_r27.label === (control_r10.value == null ? null : control_r10.value.label)));
|
|
465
|
+
i0.ɵɵadvance();
|
|
466
|
+
i0.ɵɵproperty("ngIf", item_r27.label === (control_r10.value == null ? null : control_r10.value.label) && ctx_r5.activeBtnIconUrl);
|
|
467
|
+
i0.ɵɵadvance(2);
|
|
468
|
+
i0.ɵɵtextInterpolate(item_r27.label);
|
|
469
|
+
} }
|
|
470
|
+
function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_ng_container_7_Template(rf, ctx) { if (rf & 1) {
|
|
471
|
+
i0.ɵɵelementContainer(0, 15);
|
|
472
|
+
} if (rf & 2) {
|
|
473
|
+
const control_r10 = i0.ɵɵnextContext(3).control;
|
|
474
|
+
i0.ɵɵnextContext();
|
|
475
|
+
const dynamicFieldErrors_r13 = i0.ɵɵreference(6);
|
|
476
|
+
i0.ɵɵproperty("ngTemplateOutlet", dynamicFieldErrors_r13)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c13, control_r10.errors));
|
|
477
|
+
} }
|
|
478
|
+
function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
479
|
+
i0.ɵɵelementStart(0, "div", 21)(1, "p", 22);
|
|
480
|
+
i0.ɵɵtext(2);
|
|
481
|
+
i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_span_3_Template, 2, 0, "span", 19);
|
|
482
|
+
i0.ɵɵelementEnd();
|
|
483
|
+
i0.ɵɵelement(4, "div", 23);
|
|
484
|
+
i0.ɵɵelementStart(5, "div", 39);
|
|
485
|
+
i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_div_6_Template, 4, 5, "div", 40);
|
|
486
|
+
i0.ɵɵelementEnd();
|
|
487
|
+
i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_ng_container_7_Template, 1, 4, "ng-container", 25);
|
|
488
|
+
i0.ɵɵelementEnd();
|
|
489
|
+
} if (rf & 2) {
|
|
490
|
+
const ctx_r7 = i0.ɵɵnextContext(2);
|
|
491
|
+
const field_r9 = ctx_r7.$implicit;
|
|
492
|
+
const control_r10 = ctx_r7.control;
|
|
493
|
+
const formgroup_r11 = ctx_r7.formGroup;
|
|
494
|
+
const ctx_r5 = i0.ɵɵnextContext();
|
|
495
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(5, _c11, (formgroup_r11 == null ? null : formgroup_r11.controls == null ? null : formgroup_r11.controls.subFields == null ? null : formgroup_r11.controls.subFields.controls == null ? null : formgroup_r11.controls.subFields.controls.length) && ctx_r5.removeSepratorForSubFields ? "none" : ""));
|
|
496
|
+
i0.ɵɵadvance(2);
|
|
497
|
+
i0.ɵɵtextInterpolate1(" ", field_r9.title, "");
|
|
498
|
+
i0.ɵɵadvance();
|
|
499
|
+
i0.ɵɵproperty("ngIf", field_r9.validators && field_r9.validators.length > 0);
|
|
500
|
+
i0.ɵɵadvance(3);
|
|
501
|
+
i0.ɵɵproperty("ngForOf", field_r9.itemsList);
|
|
502
|
+
i0.ɵɵadvance();
|
|
503
|
+
i0.ɵɵproperty("ngIf", control_r10.touched && control_r10.errors);
|
|
504
|
+
} }
|
|
505
|
+
function DynamicFormComponent_ng_template_3_ng_container_5_Template(rf, ctx) { if (rf & 1) {
|
|
506
|
+
i0.ɵɵelementContainerStart(0);
|
|
507
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_5_ng_container_1_Template, 2, 6, "ng-container", 20)(2, DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_Template, 8, 7, "ng-template", null, 8, i0.ɵɵtemplateRefExtractor);
|
|
508
|
+
i0.ɵɵelementContainerEnd();
|
|
509
|
+
} if (rf & 2) {
|
|
510
|
+
const defaultSingleSelectRadio_r28 = i0.ɵɵreference(3);
|
|
511
|
+
const ctx_r5 = i0.ɵɵnextContext(2);
|
|
512
|
+
i0.ɵɵadvance();
|
|
513
|
+
i0.ɵɵproperty("ngIf", ctx_r5.customSingleSelectRadio)("ngIfElse", defaultSingleSelectRadio_r28);
|
|
514
|
+
} }
|
|
515
|
+
function DynamicFormComponent_ng_template_3_ng_container_6_ng_container_1_ng_template_1_Template(rf, ctx) { }
|
|
516
|
+
function DynamicFormComponent_ng_template_3_ng_container_6_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
517
|
+
i0.ɵɵelementContainerStart(0);
|
|
518
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_6_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 15);
|
|
519
|
+
i0.ɵɵelementContainerEnd();
|
|
520
|
+
} if (rf & 2) {
|
|
521
|
+
const ctx_r7 = i0.ɵɵnextContext(2);
|
|
522
|
+
const field_r9 = ctx_r7.$implicit;
|
|
523
|
+
const control_r10 = ctx_r7.control;
|
|
524
|
+
const formgroup_r11 = ctx_r7.formGroup;
|
|
525
|
+
const ctx_r5 = i0.ɵɵnextContext();
|
|
526
|
+
i0.ɵɵadvance();
|
|
527
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r5.customMultiSelectCheckbox)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r9, control_r10, formgroup_r11));
|
|
528
|
+
} }
|
|
529
|
+
function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
530
|
+
i0.ɵɵelementStart(0, "span");
|
|
531
|
+
i0.ɵɵtext(1, " *");
|
|
532
|
+
i0.ɵɵelementEnd();
|
|
533
|
+
} }
|
|
534
|
+
function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_div_6_img_1_Template(rf, ctx) { if (rf & 1) {
|
|
535
|
+
i0.ɵɵelement(0, "img", 43);
|
|
536
|
+
} if (rf & 2) {
|
|
537
|
+
const ctx_r5 = i0.ɵɵnextContext(5);
|
|
538
|
+
i0.ɵɵproperty("src", ctx_r5.activeBtnIconUrl, i0.ɵɵsanitizeUrl);
|
|
539
|
+
} }
|
|
540
|
+
function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_div_6_Template(rf, ctx) { if (rf & 1) {
|
|
541
|
+
const _r29 = i0.ɵɵgetCurrentView();
|
|
542
|
+
i0.ɵɵelementStart(0, "div", 41);
|
|
543
|
+
i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_div_6_Template_div_click_0_listener() { const item_r30 = i0.ɵɵrestoreView(_r29).$implicit; const ctx_r7 = i0.ɵɵnextContext(3); const field_r9 = ctx_r7.$implicit; const control_r10 = ctx_r7.control; const formgroup_r11 = ctx_r7.formGroup; const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r5.updateSelectedValueForMultiSelect(field_r9, control_r10, formgroup_r11, [item_r30])); });
|
|
544
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_div_6_img_1_Template, 1, 1, "img", 42);
|
|
545
|
+
i0.ɵɵelementStart(2, "p", 29);
|
|
546
|
+
i0.ɵɵtext(3);
|
|
547
|
+
i0.ɵɵelementEnd()();
|
|
548
|
+
} if (rf & 2) {
|
|
549
|
+
const item_r30 = ctx.$implicit;
|
|
550
|
+
const control_r10 = i0.ɵɵnextContext(3).control;
|
|
551
|
+
const ctx_r5 = i0.ɵɵnextContext();
|
|
552
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c15, ctx_r5.isCheckBoxSelected(item_r30.label, control_r10.value)));
|
|
553
|
+
i0.ɵɵadvance();
|
|
554
|
+
i0.ɵɵproperty("ngIf", ctx_r5.isCheckBoxSelected(item_r30.label, control_r10.value) && ctx_r5.activeBtnIconUrl);
|
|
555
|
+
i0.ɵɵadvance(2);
|
|
556
|
+
i0.ɵɵtextInterpolate(item_r30.label);
|
|
557
|
+
} }
|
|
558
|
+
function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_ng_container_7_Template(rf, ctx) { if (rf & 1) {
|
|
559
|
+
i0.ɵɵelementContainer(0, 15);
|
|
560
|
+
} if (rf & 2) {
|
|
561
|
+
const control_r10 = i0.ɵɵnextContext(3).control;
|
|
562
|
+
i0.ɵɵnextContext();
|
|
563
|
+
const dynamicFieldErrors_r13 = i0.ɵɵreference(6);
|
|
564
|
+
i0.ɵɵproperty("ngTemplateOutlet", dynamicFieldErrors_r13)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c13, control_r10.errors));
|
|
565
|
+
} }
|
|
566
|
+
function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
567
|
+
i0.ɵɵelementStart(0, "div", 21)(1, "p", 22);
|
|
568
|
+
i0.ɵɵtext(2);
|
|
569
|
+
i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_span_3_Template, 2, 0, "span", 19);
|
|
570
|
+
i0.ɵɵelementEnd();
|
|
571
|
+
i0.ɵɵelement(4, "div", 23);
|
|
572
|
+
i0.ɵɵelementStart(5, "div", 39);
|
|
573
|
+
i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_div_6_Template, 4, 5, "div", 40);
|
|
574
|
+
i0.ɵɵelementEnd();
|
|
575
|
+
i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_ng_container_7_Template, 1, 4, "ng-container", 25);
|
|
576
|
+
i0.ɵɵelementEnd();
|
|
577
|
+
} if (rf & 2) {
|
|
578
|
+
const ctx_r7 = i0.ɵɵnextContext(2);
|
|
579
|
+
const field_r9 = ctx_r7.$implicit;
|
|
580
|
+
const control_r10 = ctx_r7.control;
|
|
581
|
+
const formgroup_r11 = ctx_r7.formGroup;
|
|
582
|
+
const ctx_r5 = i0.ɵɵnextContext();
|
|
583
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(5, _c11, (formgroup_r11 == null ? null : formgroup_r11.controls == null ? null : formgroup_r11.controls.subFields == null ? null : formgroup_r11.controls.subFields.controls == null ? null : formgroup_r11.controls.subFields.controls.length) && ctx_r5.removeSepratorForSubFields ? "none" : ""));
|
|
584
|
+
i0.ɵɵadvance(2);
|
|
585
|
+
i0.ɵɵtextInterpolate1(" ", field_r9.title, "");
|
|
586
|
+
i0.ɵɵadvance();
|
|
587
|
+
i0.ɵɵproperty("ngIf", field_r9.validators && field_r9.validators.length > 0);
|
|
588
|
+
i0.ɵɵadvance(3);
|
|
589
|
+
i0.ɵɵproperty("ngForOf", field_r9.itemsList);
|
|
590
|
+
i0.ɵɵadvance();
|
|
591
|
+
i0.ɵɵproperty("ngIf", control_r10.touched && control_r10.errors);
|
|
592
|
+
} }
|
|
593
|
+
function DynamicFormComponent_ng_template_3_ng_container_6_Template(rf, ctx) { if (rf & 1) {
|
|
594
|
+
i0.ɵɵelementContainerStart(0);
|
|
595
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_6_ng_container_1_Template, 2, 6, "ng-container", 20)(2, DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_Template, 8, 7, "ng-template", null, 9, i0.ɵɵtemplateRefExtractor);
|
|
596
|
+
i0.ɵɵelementContainerEnd();
|
|
597
|
+
} if (rf & 2) {
|
|
598
|
+
const defaultMultiSelectCheckbox_r31 = i0.ɵɵreference(3);
|
|
599
|
+
const ctx_r5 = i0.ɵɵnextContext(2);
|
|
600
|
+
i0.ɵɵadvance();
|
|
601
|
+
i0.ɵɵproperty("ngIf", ctx_r5.customMultiSelectCheckbox)("ngIfElse", defaultMultiSelectCheckbox_r31);
|
|
602
|
+
} }
|
|
603
|
+
function DynamicFormComponent_ng_template_3_ng_container_7_ng_container_1_ng_template_1_Template(rf, ctx) { }
|
|
604
|
+
function DynamicFormComponent_ng_template_3_ng_container_7_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
605
|
+
i0.ɵɵelementContainerStart(0);
|
|
606
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_7_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 15);
|
|
607
|
+
i0.ɵɵelementContainerEnd();
|
|
608
|
+
} if (rf & 2) {
|
|
609
|
+
const ctx_r7 = i0.ɵɵnextContext(2);
|
|
610
|
+
const field_r9 = ctx_r7.$implicit;
|
|
611
|
+
const control_r10 = ctx_r7.control;
|
|
612
|
+
const formgroup_r11 = ctx_r7.formGroup;
|
|
613
|
+
const ctx_r5 = i0.ɵɵnextContext();
|
|
614
|
+
i0.ɵɵadvance();
|
|
615
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r5.customMultiSelectDropdown)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r9, control_r10, formgroup_r11));
|
|
616
|
+
} }
|
|
617
|
+
function DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
618
|
+
i0.ɵɵelementStart(0, "span");
|
|
619
|
+
i0.ɵɵtext(1, " *");
|
|
620
|
+
i0.ɵɵelementEnd();
|
|
621
|
+
} }
|
|
622
|
+
function DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_ng_container_5_Template(rf, ctx) { if (rf & 1) {
|
|
623
|
+
i0.ɵɵelementContainer(0, 15);
|
|
624
|
+
} if (rf & 2) {
|
|
625
|
+
const control_r10 = i0.ɵɵnextContext(3).control;
|
|
626
|
+
i0.ɵɵnextContext();
|
|
627
|
+
const dynamicFieldErrors_r13 = i0.ɵɵreference(6);
|
|
628
|
+
i0.ɵɵproperty("ngTemplateOutlet", dynamicFieldErrors_r13)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c13, control_r10.errors));
|
|
629
|
+
} }
|
|
630
|
+
function DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
631
|
+
const _r32 = i0.ɵɵgetCurrentView();
|
|
632
|
+
i0.ɵɵelementStart(0, "div", 28)(1, "p", 29);
|
|
633
|
+
i0.ɵɵtext(2);
|
|
634
|
+
i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_span_3_Template, 2, 0, "span", 19);
|
|
635
|
+
i0.ɵɵelementEnd();
|
|
636
|
+
i0.ɵɵelementStart(4, "mis-multi-select-dropdown", 44);
|
|
637
|
+
i0.ɵɵlistener("onChange", function DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_Template_mis_multi_select_dropdown_onChange_4_listener($event) { i0.ɵɵrestoreView(_r32); const ctx_r7 = i0.ɵɵnextContext(2); const field_r9 = ctx_r7.$implicit; const control_r10 = ctx_r7.control; const formgroup_r11 = ctx_r7.formGroup; const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r5.updateSelectedValueForMultiSelect(field_r9, control_r10, formgroup_r11, $event)); });
|
|
638
|
+
i0.ɵɵelementEnd();
|
|
639
|
+
i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_ng_container_5_Template, 1, 4, "ng-container", 25);
|
|
640
|
+
i0.ɵɵelementEnd();
|
|
641
|
+
} if (rf & 2) {
|
|
642
|
+
const ctx_r7 = i0.ɵɵnextContext(2);
|
|
643
|
+
const field_r9 = ctx_r7.$implicit;
|
|
644
|
+
const control_r10 = ctx_r7.control;
|
|
645
|
+
const formgroup_r11 = ctx_r7.formGroup;
|
|
646
|
+
const ctx_r5 = i0.ɵɵnextContext();
|
|
647
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(11, _c11, (formgroup_r11 == null ? null : formgroup_r11.controls == null ? null : formgroup_r11.controls.subFields == null ? null : formgroup_r11.controls.subFields.controls == null ? null : formgroup_r11.controls.subFields.controls.length) && ctx_r5.removeSepratorForSubFields ? "none" : ""));
|
|
648
|
+
i0.ɵɵadvance(2);
|
|
649
|
+
i0.ɵɵtextInterpolate1(" ", field_r9.title, "");
|
|
650
|
+
i0.ɵɵadvance();
|
|
651
|
+
i0.ɵɵproperty("ngIf", field_r9.validators && field_r9.validators.length > 0);
|
|
652
|
+
i0.ɵɵadvance();
|
|
653
|
+
i0.ɵɵproperty("width", "140px")("showSelectedCount", true)("dropdownListWidth", "256px")("searchEnabled", false)("hideApplyButton", true)("data", field_r9.itemsList)("selectedItems", control_r10.value);
|
|
654
|
+
i0.ɵɵadvance();
|
|
655
|
+
i0.ɵɵproperty("ngIf", control_r10.touched && control_r10.errors);
|
|
656
|
+
} }
|
|
657
|
+
function DynamicFormComponent_ng_template_3_ng_container_7_Template(rf, ctx) { if (rf & 1) {
|
|
658
|
+
i0.ɵɵelementContainerStart(0);
|
|
659
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_7_ng_container_1_Template, 2, 6, "ng-container", 20)(2, DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_Template, 6, 13, "ng-template", null, 10, i0.ɵɵtemplateRefExtractor);
|
|
660
|
+
i0.ɵɵelementContainerEnd();
|
|
661
|
+
} if (rf & 2) {
|
|
662
|
+
const defaultMultiSelectDropdown_r33 = i0.ɵɵreference(3);
|
|
663
|
+
const ctx_r5 = i0.ɵɵnextContext(2);
|
|
664
|
+
i0.ɵɵadvance();
|
|
665
|
+
i0.ɵɵproperty("ngIf", ctx_r5.customMultiSelectDropdown)("ngIfElse", defaultMultiSelectDropdown_r33);
|
|
666
|
+
} }
|
|
667
|
+
function DynamicFormComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
|
|
668
|
+
i0.ɵɵtemplate(0, DynamicFormComponent_ng_template_3_ng_container_0_Template, 4, 2, "ng-container", 19)(1, DynamicFormComponent_ng_template_3_ng_container_1_Template, 4, 2, "ng-container", 19)(2, DynamicFormComponent_ng_template_3_ng_container_2_Template, 4, 2, "ng-container", 19)(3, DynamicFormComponent_ng_template_3_ng_container_3_Template, 4, 2, "ng-container", 19)(4, DynamicFormComponent_ng_template_3_ng_container_4_Template, 4, 2, "ng-container", 19)(5, DynamicFormComponent_ng_template_3_ng_container_5_Template, 4, 2, "ng-container", 19)(6, DynamicFormComponent_ng_template_3_ng_container_6_Template, 4, 2, "ng-container", 19)(7, DynamicFormComponent_ng_template_3_ng_container_7_Template, 4, 2, "ng-container", 19);
|
|
669
|
+
} if (rf & 2) {
|
|
670
|
+
const field_r9 = ctx.$implicit;
|
|
671
|
+
i0.ɵɵproperty("ngIf", field_r9.fieldType === "input" && (field_r9.fieldInputType === "text" || field_r9.fieldInputType === "number"));
|
|
672
|
+
i0.ɵɵadvance();
|
|
673
|
+
i0.ɵɵproperty("ngIf", field_r9.fieldType === "input" && field_r9.fieldInputType === "textarea");
|
|
674
|
+
i0.ɵɵadvance();
|
|
675
|
+
i0.ɵɵproperty("ngIf", field_r9.fieldType === "input" && field_r9.fieldInputType === "date");
|
|
676
|
+
i0.ɵɵadvance();
|
|
677
|
+
i0.ɵɵproperty("ngIf", field_r9.fieldType === "boolean" && field_r9.fieldInputType === "toggle");
|
|
678
|
+
i0.ɵɵadvance();
|
|
679
|
+
i0.ɵɵproperty("ngIf", field_r9.fieldType === "singleSelect" && field_r9.fieldInputType === "dropdown");
|
|
680
|
+
i0.ɵɵadvance();
|
|
681
|
+
i0.ɵɵproperty("ngIf", field_r9.fieldType === "singleSelect" && field_r9.fieldInputType === "radio");
|
|
682
|
+
i0.ɵɵadvance();
|
|
683
|
+
i0.ɵɵproperty("ngIf", field_r9.fieldType === "multiSelect" && field_r9.fieldInputType === "checkbox");
|
|
684
|
+
i0.ɵɵadvance();
|
|
685
|
+
i0.ɵɵproperty("ngIf", field_r9.fieldType === "multiSelect" && field_r9.fieldInputType === "dropdown");
|
|
686
|
+
} }
|
|
687
|
+
function DynamicFormComponent_ng_template_5_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
688
|
+
i0.ɵɵelementContainerStart(0);
|
|
689
|
+
i0.ɵɵelementStart(1, "p", 46);
|
|
690
|
+
i0.ɵɵtext(2);
|
|
691
|
+
i0.ɵɵelementEnd();
|
|
692
|
+
i0.ɵɵelement(3, "div", 47);
|
|
693
|
+
i0.ɵɵelementContainerEnd();
|
|
694
|
+
} if (rf & 2) {
|
|
695
|
+
const error_r34 = ctx.$implicit;
|
|
696
|
+
i0.ɵɵadvance(2);
|
|
697
|
+
i0.ɵɵtextInterpolate1(" ", " \u2022 \u00A0" + error_r34.value, " ");
|
|
698
|
+
i0.ɵɵadvance();
|
|
699
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction0(2, _c16));
|
|
700
|
+
} }
|
|
701
|
+
function DynamicFormComponent_ng_template_5_Template(rf, ctx) { if (rf & 1) {
|
|
702
|
+
i0.ɵɵelementStart(0, "div", 45);
|
|
703
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_5_ng_container_1_Template, 4, 3, "ng-container", 18);
|
|
704
|
+
i0.ɵɵpipe(2, "keyvalue");
|
|
705
|
+
i0.ɵɵelementEnd();
|
|
706
|
+
} if (rf & 2) {
|
|
707
|
+
const errors_r35 = ctx.$implicit;
|
|
708
|
+
i0.ɵɵadvance();
|
|
709
|
+
i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(2, 1, errors_r35));
|
|
710
|
+
} }
|
|
711
|
+
dayjs.extend(utc);
|
|
712
|
+
dayjs.extend(timezone);
|
|
713
|
+
dayjs.extend(customParseFormat);
|
|
714
|
+
export class DynamicFormComponent {
|
|
715
|
+
constructor() {
|
|
716
|
+
/**
|
|
717
|
+
* formFields: Dynamic fields recieved from the API metadata to build a dynamic form
|
|
718
|
+
* formValues: Holds the value of the dynamic form with "key" being dynamic field "title"
|
|
719
|
+
* and value being the user input.
|
|
720
|
+
*/
|
|
721
|
+
this.formFields = [];
|
|
722
|
+
this.formValues = {};
|
|
723
|
+
// Need to deprecate these inputs and use constants.
|
|
724
|
+
this.activeBtnIconUrl = "";
|
|
725
|
+
this.calendarIconUrl = "";
|
|
726
|
+
this.removeIconUrl = "";
|
|
727
|
+
this.removeSepratorForSubFields = false;
|
|
728
|
+
/**
|
|
729
|
+
* formUpdated: Emits formValues Object whenever there is a change in the dynamic form.
|
|
730
|
+
*/
|
|
731
|
+
this.formUpdated = new EventEmitter();
|
|
732
|
+
/**
|
|
733
|
+
* formValid: Emits boolean depending on validity of the form
|
|
734
|
+
*/
|
|
735
|
+
this.formValid = new EventEmitter();
|
|
736
|
+
/**
|
|
737
|
+
* formInitialized: Emits dynamic form API on form initilization
|
|
738
|
+
*/
|
|
739
|
+
this.formInitialized = new EventEmitter();
|
|
740
|
+
this.fieldRemoved = new EventEmitter();
|
|
741
|
+
}
|
|
742
|
+
ngOnInit() {
|
|
743
|
+
// Building the form
|
|
744
|
+
this.dynamicForm = this.generateDynamicForm(this.formFields, this.formValues);
|
|
745
|
+
// Subscribing to form changes and emiting values.
|
|
746
|
+
this.valueChangesSubscription$ = this.dynamicForm.valueChanges.subscribe(formValue => {
|
|
747
|
+
this.onFormValueChanges();
|
|
748
|
+
});
|
|
749
|
+
//api to expose functions
|
|
750
|
+
this.dynamicFormAPI = {
|
|
751
|
+
defaultFormValues: () => {
|
|
752
|
+
return this.generateDynamicFieldsValueObject(this.dynamicForm.value.dynamicFields);
|
|
753
|
+
}
|
|
754
|
+
};
|
|
755
|
+
this.formInitialized.emit(this.dynamicFormAPI);
|
|
756
|
+
this.formValid.emit(this.dynamicForm.valid);
|
|
757
|
+
}
|
|
758
|
+
ngOnDestroy() {
|
|
759
|
+
this.valueChangesSubscription$?.unsubscribe();
|
|
760
|
+
}
|
|
761
|
+
onFormValueChanges() {
|
|
762
|
+
let formValues = this.generateDynamicFieldsValueObject(this.dynamicForm.value.dynamicFields);
|
|
763
|
+
this.formValid.emit(this.dynamicForm.valid);
|
|
764
|
+
this.formUpdated.emit(formValues);
|
|
765
|
+
console.log(formValues);
|
|
766
|
+
}
|
|
767
|
+
generateDynamicFieldsValueObject(formValues) {
|
|
768
|
+
let dynamicFieldsValue = {};
|
|
769
|
+
formValues.forEach((fieldValue, index) => {
|
|
770
|
+
if (typeof fieldValue?.value === 'string')
|
|
771
|
+
fieldValue.value = fieldValue?.value?.trim();
|
|
772
|
+
let formattedValue = this.mapFormFieldToFormValue(this.formFields[index], fieldValue.value);
|
|
773
|
+
if (fieldValue.subFields?.length > 0) {
|
|
774
|
+
let formattedSubFieldsValues = {};
|
|
775
|
+
let subField = this.formFields[index].subFields;
|
|
776
|
+
if (this.formFields[index].fieldType === 'singleSelect' || this.formFields[index].fieldType === 'multiSelect') {
|
|
777
|
+
subField = subField.filter((subField) => subField.parentConfigValue === fieldValue.value.value);
|
|
778
|
+
}
|
|
779
|
+
fieldValue.subFields.forEach((subFieldValue, subIndex) => {
|
|
780
|
+
let subFormField = subField[subIndex];
|
|
781
|
+
if (typeof subFieldValue?.value === 'string')
|
|
782
|
+
subFieldValue.value = subFieldValue?.value?.trim();
|
|
783
|
+
formattedSubFieldsValues[subFormField.configName] = this.mapFormFieldToFormValue(subFormField, subFieldValue);
|
|
784
|
+
});
|
|
785
|
+
dynamicFieldsValue[this.formFields[index].configName] = {
|
|
786
|
+
value: formattedValue,
|
|
787
|
+
subFields: formattedSubFieldsValues
|
|
788
|
+
};
|
|
789
|
+
}
|
|
790
|
+
else {
|
|
791
|
+
dynamicFieldsValue[this.formFields[index].configName] = formattedValue;
|
|
792
|
+
}
|
|
793
|
+
});
|
|
794
|
+
return dynamicFieldsValue;
|
|
795
|
+
}
|
|
796
|
+
generateDynamicForm(formFields, formValues) {
|
|
797
|
+
let formArray = new UntypedFormArray([]);
|
|
798
|
+
for (let field of formFields) {
|
|
799
|
+
let fieldValue = formValues[field.configName]?.value ? formValues[field.configName].value : formValues[field.configName];
|
|
800
|
+
let fieldControl = this.mapFormValueToFormField(field, fieldValue);
|
|
801
|
+
let subFieldsControls = this.generateSubDynamicFields(formValues, field, fieldControl.value);
|
|
802
|
+
formArray.push(new UntypedFormGroup({
|
|
803
|
+
value: fieldControl,
|
|
804
|
+
subFields: subFieldsControls
|
|
805
|
+
}));
|
|
806
|
+
}
|
|
807
|
+
return new UntypedFormGroup({
|
|
808
|
+
dynamicFields: formArray
|
|
809
|
+
});
|
|
810
|
+
}
|
|
811
|
+
getDynamicFieldsControls() {
|
|
812
|
+
return this.dynamicForm.get("dynamicFields");
|
|
813
|
+
}
|
|
814
|
+
updateSubDynamicFields(field, formGroup, value) {
|
|
815
|
+
if (field.subFields?.length > 0) {
|
|
816
|
+
let subFieldsControls = this.generateSubDynamicFields(this.formValues, field, value);
|
|
817
|
+
formGroup.removeControl('subFields');
|
|
818
|
+
formGroup.addControl('subFields', subFieldsControls);
|
|
819
|
+
}
|
|
820
|
+
}
|
|
821
|
+
updateSelectedValueForSingleSelect(field, control, formGroup, value) {
|
|
822
|
+
if (control.value?.value !== value.value) {
|
|
823
|
+
control.setValue(value);
|
|
824
|
+
}
|
|
825
|
+
else
|
|
826
|
+
control.setValue('');
|
|
827
|
+
this.updateSubDynamicFields(field, formGroup, value);
|
|
828
|
+
control.markAsTouched();
|
|
829
|
+
}
|
|
830
|
+
updateSelectedValueForMultiSelect(field, control, formGroup, values) {
|
|
831
|
+
let selectedValues = control.value;
|
|
832
|
+
for (let value of values) {
|
|
833
|
+
let itemIndex = selectedValues.findIndex(item => item.label === value.label);
|
|
834
|
+
if (itemIndex > -1) {
|
|
835
|
+
selectedValues.splice(itemIndex, 1);
|
|
836
|
+
}
|
|
837
|
+
else {
|
|
838
|
+
selectedValues.push({ ...value });
|
|
839
|
+
}
|
|
840
|
+
}
|
|
841
|
+
control.setValue(selectedValues);
|
|
842
|
+
this.updateSubDynamicFields(field, formGroup, values);
|
|
843
|
+
control.markAsTouched();
|
|
844
|
+
}
|
|
845
|
+
isCheckBoxSelected(value, selectedValues) {
|
|
846
|
+
return selectedValues.findIndex(item => item.label === value) > -1;
|
|
847
|
+
}
|
|
848
|
+
findSelectedSubFieldConfig(subfields, value, subFieldIndex) {
|
|
849
|
+
try {
|
|
850
|
+
const selectedSubFieldConfig = subfields.filter(item => item.parentConfigValue === value)[subFieldIndex];
|
|
851
|
+
return selectedSubFieldConfig;
|
|
852
|
+
}
|
|
853
|
+
catch (e) {
|
|
854
|
+
throw new Error('Subfield index not found');
|
|
855
|
+
}
|
|
856
|
+
}
|
|
857
|
+
matchParentConfig(subfields, value) {
|
|
858
|
+
if (!subfields || subfields.length === 0) {
|
|
859
|
+
return false;
|
|
860
|
+
}
|
|
861
|
+
return subfields.some(item => item.parentConfigValue === value);
|
|
862
|
+
}
|
|
863
|
+
generateSubDynamicFields(formValues, parentField, parentValue) {
|
|
864
|
+
let controls = new UntypedFormArray([]);
|
|
865
|
+
let subFields = parentField.subFields;
|
|
866
|
+
let subFieldsValues = formValues[parentField.configName]?.subFields ? formValues[parentField.configName].subFields : {};
|
|
867
|
+
if (!subFields)
|
|
868
|
+
return controls;
|
|
869
|
+
if (parentField.fieldType === 'singleSelect') {
|
|
870
|
+
subFields = subFields.filter((subField) => subField.parentConfigValue === parentValue?.value);
|
|
871
|
+
}
|
|
872
|
+
else if (parentField.fieldType === 'multiSelect') {
|
|
873
|
+
let parentValues = new Set(parentValue.map((value) => value.value));
|
|
874
|
+
subFields = subFields.filter((subField) => parentValues.has(subField.parentConfigValue));
|
|
875
|
+
}
|
|
876
|
+
if (subFields?.length > 0) {
|
|
877
|
+
for (let subField of subFields) {
|
|
878
|
+
controls.push(this.mapFormValueToFormField(subField, subFieldsValues[subField.configName]));
|
|
879
|
+
}
|
|
880
|
+
}
|
|
881
|
+
return controls;
|
|
882
|
+
}
|
|
883
|
+
mapFormValueToFormField(formField, formValue) {
|
|
884
|
+
let validators = formField.validators ? [dynamicFieldValidator(formField.validators)] : [];
|
|
885
|
+
let control = new UntypedFormControl(null, validators);
|
|
886
|
+
if (formField.fieldType === "input") {
|
|
887
|
+
if (formField.fieldInputType === "text" || formField.fieldInputType === "textarea")
|
|
888
|
+
control.setValue(formValue ? formValue : "");
|
|
889
|
+
else if (formField.fieldInputType === "number")
|
|
890
|
+
control.setValue(formValue ? formValue : 0);
|
|
891
|
+
else if (formField.fieldInputType === "date") {
|
|
892
|
+
if (formValue && typeof formValue === "number") {
|
|
893
|
+
control.setValue(dayjs(formValue).tz(formField.fieldConfig.timezone).format(formField.fieldConfig.format));
|
|
894
|
+
}
|
|
895
|
+
else {
|
|
896
|
+
control.setValue(dayjs().tz(formField.fieldConfig.timezone).format(formField.fieldConfig.format));
|
|
897
|
+
}
|
|
898
|
+
}
|
|
899
|
+
}
|
|
900
|
+
else if (formField.fieldType === "singleSelect") {
|
|
901
|
+
const findSelectedValue = () => {
|
|
902
|
+
let index = formField.itemsList.findIndex(item => item.value === formValue);
|
|
903
|
+
return index >= 0 ? formField.itemsList[index] : "";
|
|
904
|
+
};
|
|
905
|
+
if (formField.fieldInputType === "dropdown") {
|
|
906
|
+
if (!formValue)
|
|
907
|
+
control.setValue(formField.itemsList[0]);
|
|
908
|
+
else
|
|
909
|
+
control.setValue(findSelectedValue());
|
|
910
|
+
}
|
|
911
|
+
else if (formField.fieldInputType === "radio") {
|
|
912
|
+
control.setValue(findSelectedValue());
|
|
913
|
+
}
|
|
914
|
+
}
|
|
915
|
+
else if (formField.fieldType === "multiSelect") {
|
|
916
|
+
if (formValue && Array.isArray(formValue)) {
|
|
917
|
+
let selectedValues = [];
|
|
918
|
+
for (let value of formValue) {
|
|
919
|
+
let index = formField.itemsList.findIndex(item => item.value === value);
|
|
920
|
+
if (index > -1)
|
|
921
|
+
selectedValues.push({ ...formField.itemsList[index] });
|
|
922
|
+
}
|
|
923
|
+
control.setValue(selectedValues);
|
|
924
|
+
}
|
|
925
|
+
else {
|
|
926
|
+
control.setValue([]);
|
|
927
|
+
}
|
|
928
|
+
}
|
|
929
|
+
else if (formField.fieldType === "boolean") {
|
|
930
|
+
control.setValue(!!formValue);
|
|
931
|
+
}
|
|
932
|
+
else
|
|
933
|
+
control.setValue(null);
|
|
934
|
+
return control;
|
|
935
|
+
}
|
|
936
|
+
mapFormFieldToFormValue(formField, formValue) {
|
|
937
|
+
if (formField.fieldType === "input") {
|
|
938
|
+
if (formField.fieldInputType === "text" || formField.fieldInputType === "textarea")
|
|
939
|
+
return formValue;
|
|
940
|
+
else if (formField.fieldInputType === "number")
|
|
941
|
+
return +formValue;
|
|
942
|
+
else if (formField.fieldInputType === "date") {
|
|
943
|
+
return dayjs.tz(formValue, formField.fieldConfig.format, formField.fieldConfig.timezone).valueOf();
|
|
944
|
+
}
|
|
945
|
+
}
|
|
946
|
+
else if (formField.fieldType === "singleSelect") {
|
|
947
|
+
return formValue?.value ?? '';
|
|
948
|
+
}
|
|
949
|
+
else if (formField.fieldType === "multiSelect") {
|
|
950
|
+
return formValue?.map(item => item.value);
|
|
951
|
+
}
|
|
952
|
+
else if (formField.fieldType === "boolean") {
|
|
953
|
+
return formValue;
|
|
954
|
+
}
|
|
955
|
+
else
|
|
956
|
+
return formValue;
|
|
957
|
+
}
|
|
958
|
+
static { this.ɵfac = function DynamicFormComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DynamicFormComponent)(); }; }
|
|
959
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DynamicFormComponent, selectors: [["mis-dynamic-form"]], contentQueries: function DynamicFormComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
|
|
960
|
+
i0.ɵɵcontentQuery(dirIndex, _c0, 5);
|
|
961
|
+
i0.ɵɵcontentQuery(dirIndex, _c1, 5);
|
|
962
|
+
i0.ɵɵcontentQuery(dirIndex, _c2, 5);
|
|
963
|
+
i0.ɵɵcontentQuery(dirIndex, _c3, 5);
|
|
964
|
+
i0.ɵɵcontentQuery(dirIndex, _c4, 5);
|
|
965
|
+
i0.ɵɵcontentQuery(dirIndex, _c5, 5);
|
|
966
|
+
i0.ɵɵcontentQuery(dirIndex, _c6, 5);
|
|
967
|
+
i0.ɵɵcontentQuery(dirIndex, _c7, 5);
|
|
968
|
+
} if (rf & 2) {
|
|
969
|
+
let _t;
|
|
970
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customInputTextNumber = _t.first);
|
|
971
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customInputTextarea = _t.first);
|
|
972
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customInputDate = _t.first);
|
|
973
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customBooleanToggle = _t.first);
|
|
974
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customSingleSelectDropdown = _t.first);
|
|
975
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customSingleSelectRadio = _t.first);
|
|
976
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customMultiSelectCheckbox = _t.first);
|
|
977
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customMultiSelectDropdown = _t.first);
|
|
978
|
+
} }, inputs: { formFields: "formFields", formValues: "formValues", activeBtnIconUrl: "activeBtnIconUrl", calendarIconUrl: "calendarIconUrl", removeIconUrl: "removeIconUrl", removeSepratorForSubFields: "removeSepratorForSubFields" }, outputs: { formUpdated: "formUpdated", formValid: "formValid", formInitialized: "formInitialized", fieldRemoved: "fieldRemoved" }, decls: 7, vars: 2, consts: [["dynamicField", ""], ["dynamicFieldErrors", ""], ["defaultInputTextNumber", ""], ["defaultInputTextarea", ""], ["defaultInputDate", ""], ["dp", ""], ["defaultBooleanToggle", ""], ["defaultSingleSelectDropdown", ""], ["defaultSingleSelectRadio", ""], ["defaultMultiSelectCheckbox", ""], ["defaultMultiSelectDropdown", ""], [3, "formGroup"], ["formArrayName", "dynamicFields"], [3, "formGroupName", 4, "ngFor", "ngForOf"], [3, "formGroupName"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], ["class", "sub-dynamic-form", 4, "ngIf"], [1, "sub-dynamic-form"], [4, "ngFor", "ngForOf"], [4, "ngIf"], [4, "ngIf", "ngIfElse"], [1, "dynamic-field", "multi-line-field-container", 3, "ngStyle"], [1, "h7", "field-title-sm"], [2, "flex-basis", "100%"], [1, "input-field", "ip-text", 3, "ngModelChange", "type", "formControl", "ngStyle", "placeholder", "min"], [3, "ngTemplateOutlet", "ngTemplateOutletContext", 4, "ngIf"], ["type", "text", 1, "input-field", "ip-textarea", 3, "ngModelChange", "ngStyle", "placeholder", "formControl"], ["class", "dynamic-field single-line-field-container", 3, "ngStyle", 4, "ngIf"], [1, "dynamic-field", "single-line-field-container", 3, "ngStyle"], [1, "h6"], [1, "date-picker-container"], ["readonly", "", "misTzDp", "", 1, "date-picker", 3, "dateChange", "dpConfig", "selectedDate", "offsetY", "value"], ["alt", "data-picker", "class", "date-picker-icon", 3, "src", "click", 4, "ngIf"], ["alt", "data-picker", 1, "date-picker-icon", 3, "click", "src"], [3, "valueChanged", "control"], [3, "ngClass"], [3, "onChange", "searchEnabled", "width", "data", "selectedItem"], ["class", "remove-icon", 3, "src", "click", 4, "ngIf"], [1, "remove-icon", 3, "click", "src"], ["id", "checkboxes-container"], ["class", "radio-checkbox-common", 3, "ngClass", "click", 4, "ngFor", "ngForOf"], [1, "radio-checkbox-common", 3, "click", "ngClass"], ["alt", "", 3, "src", 4, "ngIf"], ["alt", "", 3, "src"], [3, "onChange", "width", "showSelectedCount", "dropdownListWidth", "searchEnabled", "hideApplyButton", "data", "selectedItems"], ["id", "error-messages-container"], [1, "h8"], [3, "ngStyle"]], template: function DynamicFormComponent_Template(rf, ctx) { if (rf & 1) {
|
|
979
|
+
i0.ɵɵelementStart(0, "form", 11);
|
|
980
|
+
i0.ɵɵelementContainerStart(1, 12);
|
|
981
|
+
i0.ɵɵtemplate(2, DynamicFormComponent_ng_container_2_Template, 3, 8, "ng-container", 13);
|
|
982
|
+
i0.ɵɵelementContainerEnd();
|
|
983
|
+
i0.ɵɵelementEnd();
|
|
984
|
+
i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_Template, 8, 8, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor)(5, DynamicFormComponent_ng_template_5_Template, 3, 3, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
|
|
985
|
+
} if (rf & 2) {
|
|
986
|
+
i0.ɵɵproperty("formGroup", ctx.dynamicForm);
|
|
987
|
+
i0.ɵɵadvance(2);
|
|
988
|
+
i0.ɵɵproperty("ngForOf", ctx.getDynamicFieldsControls().controls);
|
|
989
|
+
} }, dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, i1.NgStyle, i2.ɵNgNoValidate, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, i2.FormControlDirective, i2.FormGroupDirective, i2.FormGroupName, i2.FormArrayName, i3.DropdownComponent, i4.SwitchComponent, i5.MultiSelectDropdownComponent, i6.TzDatepickerDirective, i1.KeyValuePipe], styles: ["p[_ngcontent-%COMP%]{margin:0;cursor:default} .main-container{margin:0;max-width:100%}.sub-dynamic-form[_ngcontent-%COMP%]{padding-left:24px;border-bottom:1px solid var(--grey-seperators)}.dynamic-field[_ngcontent-%COMP%] .container{height:32px!important}.single-line-field-container[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;padding:28px 16px;border-bottom:1px solid var(--grey-seperators)}.multi-line-field-container[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;align-items:flex-start;padding:28px 16px;flex-wrap:wrap;border-bottom:1px solid var(--grey-seperators)}.field-title-sm[_ngcontent-%COMP%]{margin-bottom:8px;cursor:default}.input-field[_ngcontent-%COMP%]{width:100%;background-color:var(--grey-bg-1);border:1px solid var(--grey-seperators);border-radius:6px}.ip-text[_ngcontent-%COMP%]{height:44px;padding:8px 12px}.ip-textarea[_ngcontent-%COMP%]{max-height:94px;padding:8px}input[_ngcontent-%COMP%]:focus{outline:none}input[_ngcontent-%COMP%]::placeholder{color:var(--grey-seperators)}textarea[_ngcontent-%COMP%]:focus{outline:none}.date-picker-container[_ngcontent-%COMP%]{position:relative;width:140px}.date-picker-container[_ngcontent-%COMP%] .date-picker[_ngcontent-%COMP%]{cursor:pointer;height:32px;width:100%;font-size:14px;border-radius:6px;padding:0 12px;border:1px solid var(--grey-seperators);inset:10px auto auto 80px;background-color:var(--text-white)}.date-picker-container[_ngcontent-%COMP%] .date-picker[_ngcontent-%COMP%]:hover{background-color:var(--grey-hover)}.date-picker-container[_ngcontent-%COMP%] .date-picker-icon[_ngcontent-%COMP%]{position:absolute;top:50%;right:12px;transform:translateY(-50%);cursor:pointer}form[_ngcontent-%COMP%] .dynamic-field[_ngcontent-%COMP%]:last-child{border-bottom:none!important}#checkboxes-container[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}.radio-checkbox-common[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;cursor:pointer;margin-right:8px;margin-bottom:8px;background-color:var(--text-white);padding:12px 16px;border:1px solid var(--text-muted);border-radius:8px}.radio-checkbox-common[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--text-muted);cursor:pointer}.radio-checkbox-common[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{margin-right:8px}.checkbox-active[_ngcontent-%COMP%]{background-color:var(--pmry-500)}.checkbox-active[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--text-white)}#error-messages-container[_ngcontent-%COMP%]{margin-top:4px;width:100%;display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}#error-messages-container[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--sem-error)}.removeable-container[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center}.removeable-container[_ngcontent-%COMP%] .remove-icon[_ngcontent-%COMP%]{cursor:pointer;margin-left:8px;max-width:24px}span[_ngcontent-%COMP%]{color:var(--sem-error)}"] }); }
|
|
990
|
+
}
|
|
991
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DynamicFormComponent, [{
|
|
992
|
+
type: Component,
|
|
993
|
+
args: [{ selector: "mis-dynamic-form", template: "<form [formGroup]=\"dynamicForm\">\n <ng-container formArrayName=\"dynamicFields\">\n <ng-container [formGroupName]=\"i\" *ngFor=\"let fieldControl of getDynamicFieldsControls().controls; let i = index\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: formFields[i],\n formGroup: fieldControl,\n control: fieldControl.controls.value\n }\"\n >\n </ng-container>\n <div class=\"sub-dynamic-form\" *ngIf=\"fieldControl?.value && (!!formFields[i]?.subFields && formFields[i]?.subFields?.length > 0 && matchParentConfig(formFields[i]?.subFields, fieldControl?.controls?.value?.value?.value))\">\n <ng-container *ngFor=\"let subFieldControl of fieldControl.controls.subFields.controls; let j = index\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: findSelectedSubFieldConfig(formFields[i]?.subFields, fieldControl.controls.value.value.value,j),\n control: subFieldControl\n }\">\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</form>\n\n\n<ng-template #dynamicField let-field let-control=\"control\" let-formgroup=\"formGroup\">\n\n <!-- fieldType: 'input' fieldInputType: 'text' | 'number' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && (field.fieldInputType === 'text' || field.fieldInputType === 'number')\">\n <ng-container *ngIf=\"customInputTextNumber; else defaultInputTextNumber\">\n <ng-template\n [ngTemplateOutlet]=\"customInputTextNumber\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputTextNumber>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field?.title }} <span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <input class=\"input-field ip-text\" [type]=\"field.fieldInputType\" [formControl]=\"control\"\n (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\" \n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" \n [min]=\"field.fieldInputType === 'number' ? 0 : '' \"/>\n <ng-container *ngIf=\"control.touched && control.errors\"\n [ngTemplateOutlet]=\"dynamicFieldErrors\" \n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\"\n >\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n \n <!-- fieldType: 'input' fieldInputType: 'textarea' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'textarea'\">\n <ng-container *ngIf=\"customInputTextarea; else defaultInputTextarea\">\n <ng-template\n [ngTemplateOutlet]=\"customInputTextarea\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputTextarea>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <textarea class=\"input-field ip-textarea\" type=\"text\"\n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" [formControl]=\"control\" (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\"></textarea>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n \n <!-- fieldType: 'input' fieldInputType: 'date' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'date'\">\n <ng-container *ngIf=\"customInputDate; else defaultInputDate\">\n <ng-template\n [ngTemplateOutlet]=\"customInputDate\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputDate>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'date'\">\n <p class=\"h6\">\n {{ field.title }} <span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div class=\"date-picker-container\">\n <input class=\"date-picker\" readonly misTzDp [dpConfig]=\"field.fieldConfig\"\n (dateChange)=\"control.setValue($event)\" [selectedDate]=\"control.value\" [offsetY]=\"0\"\n [value]=\"control.value\" #dp />\n <img alt=\"data-picker\" *ngIf=\"calendarIconUrl\" class=\"date-picker-icon\" [src]=\"calendarIconUrl\"\n (click)=\"dp.click()\" />\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- fieldType: 'boolean' fieldInputType: 'toggle' -->\n <ng-container *ngIf=\"field.fieldType === 'boolean' && field.fieldInputType === 'toggle'\">\n <ng-container *ngIf=\"customBooleanToggle; else defaultBooleanToggle\">\n <ng-template\n [ngTemplateOutlet]=\"customBooleanToggle\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultBooleanToggle>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <mis-switch [control]=\"control\" (valueChanged)=\"updateSubDynamicFields(field, formgroup, $event)\"></mis-switch>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div> \n </ng-template>\n </ng-container>\n\n <!-- fieldType: 'singleSelect' fieldInputType: 'dropdown' -->\n <ng-container *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'dropdown'\">\n <ng-container *ngIf=\"customSingleSelectDropdown; else defaultSingleSelectDropdown\">\n <ng-template\n [ngTemplateOutlet]=\"customSingleSelectDropdown\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultSingleSelectDropdown>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div [ngClass]=\"{'removeable-container' : field?.isRemoveable}\">\n <mis-dropdown [searchEnabled]=\"false\" [width]=\"'140px'\" [data]=\"field.itemsList\" [selectedItem]=\"control.value\"\n (onChange)=\"updateSelectedValueForSingleSelect(field, control, formgroup, $event);\">\n </mis-dropdown>\n <img *ngIf=\"field.isRemoveable && removeIconUrl\" class=\"remove-icon\" [src]=\"removeIconUrl\" (click)=\"fieldRemoved.emit(field)\">\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container >\n \n\n <!-- fieldType: 'singleSelect' fieldInputType: 'radio' -->\n <ng-container *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'radio'\">\n <ng-container *ngIf=\"customSingleSelectRadio; else defaultSingleSelectRadio\">\n <ng-template\n [ngTemplateOutlet]=\"customSingleSelectRadio\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultSingleSelectRadio>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': item.label === control.value?.label }\"\n (click)=\"updateSelectedValueForSingleSelect(field, control, formgroup, item);\">\n <img *ngIf=\"(item.label === control.value?.label) && activeBtnIconUrl\" [src]=\"activeBtnIconUrl\" alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n \n\n <!-- fieldType: 'multiSelect' fieldInputType: 'checkbox' -->\n <ng-container *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'checkbox'\">\n <ng-container *ngIf=\"customMultiSelectCheckbox; else defaultMultiSelectCheckbox\">\n <ng-template\n [ngTemplateOutlet]=\"customMultiSelectCheckbox\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultMultiSelectCheckbox>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': isCheckBoxSelected(item.label, control.value) }\"\n (click)=\"updateSelectedValueForMultiSelect(field, control, formgroup, [item])\">\n <img *ngIf=\"isCheckBoxSelected(item.label, control.value) && activeBtnIconUrl\" [src]=\"activeBtnIconUrl\"\n alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n\n <!-- fieldType: 'multiSelect' fieldInputType: 'dropdown' -->\n <ng-container *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'dropdown'\">\n <ng-container *ngIf=\"customMultiSelectDropdown; else defaultMultiSelectDropdown\">\n <ng-template\n [ngTemplateOutlet]=\"customMultiSelectDropdown\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultMultiSelectDropdown>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <mis-multi-select-dropdown [width]=\"'140px'\" [showSelectedCount]=\"true\" [dropdownListWidth]=\"'256px'\"\n [searchEnabled]=\"false\" [hideApplyButton]=\"true\" [data]=\"field.itemsList\"\n [selectedItems]=\"control.value\" (onChange)=\"updateSelectedValueForMultiSelect(field, control, formgroup, $event);\"></mis-multi-select-dropdown>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n</ng-template>\n\n<ng-template #dynamicFieldErrors let-errors>\n <div id=\"error-messages-container\">\n <ng-container *ngFor=\"let error of errors | keyvalue\">\n <p class=\"h8\">\n {{\" \u2022 \" + error.value}}\n </p>\n <div [ngStyle]=\"{ 'flex-basis': '100%', 'height': '0' }\"></div>\n </ng-container>\n </div>\n</ng-template>", styles: ["p{margin:0;cursor:default}::ng-deep .main-container{margin:0;max-width:100%}.sub-dynamic-form{padding-left:24px;border-bottom:1px solid var(--grey-seperators)}.dynamic-field ::ng-deep .container{height:32px!important}.single-line-field-container{display:flex;justify-content:space-between;align-items:center;padding:28px 16px;border-bottom:1px solid var(--grey-seperators)}.multi-line-field-container{display:flex;justify-content:flex-start;align-items:flex-start;padding:28px 16px;flex-wrap:wrap;border-bottom:1px solid var(--grey-seperators)}.field-title-sm{margin-bottom:8px;cursor:default}.input-field{width:100%;background-color:var(--grey-bg-1);border:1px solid var(--grey-seperators);border-radius:6px}.ip-text{height:44px;padding:8px 12px}.ip-textarea{max-height:94px;padding:8px}input:focus{outline:none}input::placeholder{color:var(--grey-seperators)}textarea:focus{outline:none}.date-picker-container{position:relative;width:140px}.date-picker-container .date-picker{cursor:pointer;height:32px;width:100%;font-size:14px;border-radius:6px;padding:0 12px;border:1px solid var(--grey-seperators);inset:10px auto auto 80px;background-color:var(--text-white)}.date-picker-container .date-picker:hover{background-color:var(--grey-hover)}.date-picker-container .date-picker-icon{position:absolute;top:50%;right:12px;transform:translateY(-50%);cursor:pointer}form .dynamic-field:last-child{border-bottom:none!important}#checkboxes-container{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}.radio-checkbox-common{display:flex;justify-content:center;align-items:center;cursor:pointer;margin-right:8px;margin-bottom:8px;background-color:var(--text-white);padding:12px 16px;border:1px solid var(--text-muted);border-radius:8px}.radio-checkbox-common p{color:var(--text-muted);cursor:pointer}.radio-checkbox-common img{margin-right:8px}.checkbox-active{background-color:var(--pmry-500)}.checkbox-active p{color:var(--text-white)}#error-messages-container{margin-top:4px;width:100%;display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}#error-messages-container p{color:var(--sem-error)}.removeable-container{display:flex;justify-content:center;align-items:center}.removeable-container .remove-icon{cursor:pointer;margin-left:8px;max-width:24px}span{color:var(--sem-error)}\n"] }]
|
|
994
|
+
}], () => [], { formFields: [{
|
|
995
|
+
type: Input
|
|
996
|
+
}], formValues: [{
|
|
997
|
+
type: Input
|
|
998
|
+
}], activeBtnIconUrl: [{
|
|
999
|
+
type: Input
|
|
1000
|
+
}], calendarIconUrl: [{
|
|
1001
|
+
type: Input
|
|
1002
|
+
}], removeIconUrl: [{
|
|
1003
|
+
type: Input
|
|
1004
|
+
}], removeSepratorForSubFields: [{
|
|
1005
|
+
type: Input
|
|
1006
|
+
}], formUpdated: [{
|
|
1007
|
+
type: Output
|
|
1008
|
+
}], formValid: [{
|
|
1009
|
+
type: Output
|
|
1010
|
+
}], formInitialized: [{
|
|
1011
|
+
type: Output
|
|
1012
|
+
}], fieldRemoved: [{
|
|
1013
|
+
type: Output
|
|
1014
|
+
}], customInputTextNumber: [{
|
|
1015
|
+
type: ContentChild,
|
|
1016
|
+
args: ["customInputTextNumber", { static: false }]
|
|
1017
|
+
}], customInputTextarea: [{
|
|
1018
|
+
type: ContentChild,
|
|
1019
|
+
args: ["customInputTextarea", { static: false }]
|
|
1020
|
+
}], customInputDate: [{
|
|
1021
|
+
type: ContentChild,
|
|
1022
|
+
args: ["customInputDate", { static: false }]
|
|
1023
|
+
}], customBooleanToggle: [{
|
|
1024
|
+
type: ContentChild,
|
|
1025
|
+
args: ["customBooleanToggle", { static: false }]
|
|
1026
|
+
}], customSingleSelectDropdown: [{
|
|
1027
|
+
type: ContentChild,
|
|
1028
|
+
args: ["customSingleSelectDropdown", { static: false }]
|
|
1029
|
+
}], customSingleSelectRadio: [{
|
|
1030
|
+
type: ContentChild,
|
|
1031
|
+
args: ["customSingleSelectRadio", { static: false }]
|
|
1032
|
+
}], customMultiSelectCheckbox: [{
|
|
1033
|
+
type: ContentChild,
|
|
1034
|
+
args: ["customMultiSelectCheckbox", { static: false }]
|
|
1035
|
+
}], customMultiSelectDropdown: [{
|
|
1036
|
+
type: ContentChild,
|
|
1037
|
+
args: ["customMultiSelectDropdown", { static: false }]
|
|
1038
|
+
}] }); })();
|
|
1039
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DynamicFormComponent, { className: "DynamicFormComponent" }); })();
|
|
1040
|
+
export const dynamicFieldValidator = (validators) => {
|
|
1041
|
+
return (control) => {
|
|
1042
|
+
let value = control.value;
|
|
1043
|
+
if (Array.isArray(value)) {
|
|
1044
|
+
return null;
|
|
1045
|
+
}
|
|
1046
|
+
else if (typeof value === 'object') {
|
|
1047
|
+
value = value?.value ? value.value : '';
|
|
1048
|
+
}
|
|
1049
|
+
let errors = null;
|
|
1050
|
+
validators.forEach((validator) => {
|
|
1051
|
+
let error = null;
|
|
1052
|
+
let message = validator.message;
|
|
1053
|
+
switch (validator.type) {
|
|
1054
|
+
case "Required":
|
|
1055
|
+
error = Validators.required(control);
|
|
1056
|
+
if (!error && typeof value === 'string' && value.trim() === '') {
|
|
1057
|
+
error = { Required: message };
|
|
1058
|
+
}
|
|
1059
|
+
if (error)
|
|
1060
|
+
error = { Required: message };
|
|
1061
|
+
break;
|
|
1062
|
+
case "MinLength":
|
|
1063
|
+
error = Validators.minLength(+validator.value)(control);
|
|
1064
|
+
message = message.replace('${0}', error?.minlength.requiredLength);
|
|
1065
|
+
if (error)
|
|
1066
|
+
error = { MinLength: message };
|
|
1067
|
+
break;
|
|
1068
|
+
case "MaxLength":
|
|
1069
|
+
error = Validators.maxLength(+validator.value)(control);
|
|
1070
|
+
message = message.replace('${0}', error?.actualLength);
|
|
1071
|
+
if (error)
|
|
1072
|
+
error = { MaxLength: message };
|
|
1073
|
+
break;
|
|
1074
|
+
case "Email":
|
|
1075
|
+
error = Validators.email(control);
|
|
1076
|
+
if (error)
|
|
1077
|
+
error = { Email: message };
|
|
1078
|
+
break;
|
|
1079
|
+
case "Custom":
|
|
1080
|
+
error = Validators.pattern(`${validator.value}`)(control);
|
|
1081
|
+
if (error)
|
|
1082
|
+
error = { Custom: message };
|
|
1083
|
+
break;
|
|
1084
|
+
default:
|
|
1085
|
+
break;
|
|
1086
|
+
}
|
|
1087
|
+
if (error)
|
|
1088
|
+
errors = { ...errors, ...error };
|
|
1089
|
+
});
|
|
1090
|
+
return errors;
|
|
1091
|
+
};
|
|
1092
|
+
};
|
|
1093
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQWdCLEtBQUssRUFBcUIsTUFBTSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBRW5JLE9BQU8sRUFBbUIsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQWlDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBKLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLFFBQVEsTUFBTSx1QkFBdUIsQ0FBQztBQUM3QyxPQUFPLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQztBQUNuQyxPQUFPLGlCQUFpQixNQUFNLGdDQUFnQyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ010RCw2QkFBc0c7SUFDcEcsNEJBTWU7Ozs7Ozs7Ozs7SUFMYixjQUFpQztJQUNqQyxBQURBLGtEQUFpQyw0T0FJL0I7OztJQVBSLCtCQUE4TjtJQUM1Tiw2R0FBc0c7SUFTeEcsaUJBQU07OztJQVRzQyxjQUE2QztJQUE3QyxxRUFBNkM7OztJQVgzRixpQ0FBa0g7SUFDOUcsNEJBUWE7SUFDZixxRkFBOE47Ozs7Ozs7SUFWbE4sb0NBQW1CO0lBRTdCLGNBQWlDO0lBQ2pDLEFBREEsa0RBQWlDLGlJQUsvQjtJQUcyQixjQUE2TDtJQUE3TCxzbkJBQTZMOzs7O0lBb0I5Tiw2QkFBeUU7SUFDdkUsa0lBR0M7Ozs7Ozs7O0lBRkMsY0FBMEM7SUFDMUMsQUFEQSwrREFBMEMsOEZB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QyxJQUFHLEtBQUs7d0JBQUUsS0FBSyxHQUFHLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBQyxDQUFBO29CQUNsQyxNQUFNO2dCQUNSLEtBQUssUUFBUTtvQkFDWCxLQUFLLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBO29CQUN6RCxJQUFHLEtBQUs7d0JBQUUsS0FBSyxHQUFHLEVBQUMsTUFBTSxFQUFFLE9BQU8sRUFBQyxDQUFBO29CQUNuQyxNQUFNO2dCQUNSO29CQUNFLE1BQU07WUFDVixDQUFDO1lBQ0QsSUFBSSxLQUFLO2dCQUFFLE1BQU0sR0FBRyxFQUFFLEdBQUcsTUFBTSxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUE7UUFDN0MsQ0FBQyxDQUFDLENBQUE7UUFDRixPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUMsQ0FBQTtBQUNILENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE5zRHluYW1pY0Zvcm0gfSBmcm9tIFwiLi9keW5hbWljLWZvcm0ubmFtZXNwYWNlXCI7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFVudHlwZWRGb3JtQXJyYXksIFVudHlwZWRGb3JtQ29udHJvbCwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcblxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcbmltcG9ydCB0aW1lem9uZSBmcm9tICdkYXlqcy9wbHVnaW4vdGltZXpvbmUnO1xuaW1wb3J0IHV0YyBmcm9tICdkYXlqcy9wbHVnaW4vdXRjJztcbmltcG9ydCBjdXN0b21QYXJzZUZvcm1hdCBmcm9tICdkYXlqcy9wbHVnaW4vY3VzdG9tUGFyc2VGb3JtYXQnXG5cbmRheWpzLmV4dGVuZCh1dGMpO1xuZGF5anMuZXh0ZW5kKHRpbWV6b25lKTtcbmRheWpzLmV4dGVuZChjdXN0b21QYXJzZUZvcm1hdCk7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWlzLWR5bmFtaWMtZm9ybVwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vZHluYW1pYy1mb3JtLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogZm9ybUZpZWxkczogIER5bmFtaWMgZmllbGRzIHJlY2lldmVkIGZyb20gdGhlIEFQSSBtZXRhZGF0YSB0byBidWlsZCBhIGR5bmFtaWMgZm9ybVxuICAgKiBmb3JtVmFsdWVzOiAgSG9sZHMgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZvcm0gd2l0aCBcImtleVwiIGJlaW5nIGR5bmFtaWMgZmllbGQgXCJ0aXRsZVwiXG4gICAqICAgICAgICAgICAgICBhbmQgdmFsdWUgYmVpbmcgdGhlIHVzZXIgaW5wdXQuXG4gICAqL1xuICBASW5wdXQoKSBmb3JtRmllbGRzOiBBcnJheTxOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQ+ID0gW107XG4gIEBJbnB1dCgpIGZvcm1WYWx1ZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgLy8gTmVlZCB0byBkZXByZWNhdGUgdGhlc2UgaW5wdXRzIGFuZCB1c2UgY29uc3RhbnRzLlxuICBASW5wdXQoKSBhY3RpdmVCdG5JY29uVXJsID0gXCJcIjtcbiAgQElucHV0KCkgY2FsZW5kYXJJY29uVXJsID0gXCJcIjtcbiAgQElucHV0KCkgcmVtb3ZlSWNvblVybCA9IFwiXCI7XG4gIEBJbnB1dCgpIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzID0gZmFsc2U7XG4gIC8qKlxuICAgKiBkeW5hbWljRm9ybTogQ29uc3RydWN0ZWQgdXNpbmcgZm9ybUZpZWxkcyBhbmQgZm9ybVZhbHVlcyhpbiBjYXNlIG9mIGVkaXQpXG4gICAqL1xuICBkeW5hbWljRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcblxuICAvKipcbiAgICogZm9ybVVwZGF0ZWQ6IEVtaXRzIGZvcm1WYWx1ZXMgT2JqZWN0IHdoZW5ldmVyIHRoZXJlIGlzIGEgY2hhbmdlIGluIHRoZSBkeW5hbWljIGZvcm0uXG4gICAqL1xuICBAT3V0cHV0KCkgZm9ybVVwZGF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgW2tleTogc3RyaW5nXTogYW55IH0+KCk7XG4gIC8qKlxuICAgKiBmb3JtVmFsaWQ6IEVtaXRzIGJvb2xlYW4gZGVwZW5kaW5nIG9uIHZhbGlkaXR5IG9mIHRoZSBmb3JtXG4gICAqL1xuICBAT3V0cHV0KCkgZm9ybVZhbGlkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAvKipcbiAgICogZm9ybUluaXRpYWxpemVkOiBFbWl0cyBkeW5hbWljIGZvcm0gQVBJIG9uIGZvcm0gaW5pdGlsaXphdGlvblxuICAgKi9cbiAgQE91dHB1dCgpIGZvcm1Jbml0aWFsaXplZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZmllbGRSZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQ+KCk7XG5cbiAgQENvbnRlbnRDaGlsZChcImN1c3RvbUlucHV0VGV4dE51bWJlclwiLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgY3VzdG9tSW5wdXRUZXh0TnVtYmVyOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcbiAgXG4gIEBDb250ZW50Q2hpbGQoXCJjdXN0b21JbnB1dFRleHRhcmVhXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBjdXN0b21JbnB1dFRleHRhcmVhOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcblxuICBAQ29udGVudENoaWxkKFwiY3VzdG9tSW5wdXREYXRlXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBjdXN0b21JbnB1dERhdGU6IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuXG4gIEBDb250ZW50Q2hpbGQoXCJjdXN0b21Cb29sZWFuVG9nZ2xlXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBjdXN0b21Cb29sZWFuVG9nZ2xlOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcblxuICBAQ29udGVudENoaWxkKFwiY3VzdG9tU2luZ2xlU2VsZWN0RHJvcGRvd25cIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGN1c3RvbVNpbmdsZVNlbGVjdERyb3Bkb3duOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcblxuICBAQ29udGVudENoaWxkKFwiY3VzdG9tU2luZ2xlU2VsZWN0UmFkaW9cIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGN1c3RvbVNpbmdsZVNlbGVjdFJhZGlvOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcblxuICBAQ29udGVudENoaWxkKFwiY3VzdG9tTXVsdGlTZWxlY3RDaGVja2JveFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgY3VzdG9tTXVsdGlTZWxlY3RDaGVja2JveDogVGVtcGxhdGVSZWY8RWxlbWVudD47XG5cbiAgQENvbnRlbnRDaGlsZChcImN1c3RvbU11bHRpU2VsZWN0RHJvcGRvd25cIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGN1c3RvbU11bHRpU2VsZWN0RHJvcGRvd246IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuXG4gIGR5bmFtaWNGb3JtQVBJOiBOc0R5bmFtaWNGb3JtLklEeW5hbWljRm9ybUFQSTtcbiAgdmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uJDogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBCdWlsZGluZyB0aGUgZm9ybVxuICAgIHRoaXMuZHluYW1pY0Zvcm0gPSB0aGlzLmdlbmVyYXRlRHluYW1pY0Zvcm0odGhpcy5mb3JtRmllbGRzLCB0aGlzLmZvcm1WYWx1ZXMpO1xuXG4gICAgLy8gU3Vic2NyaWJpbmcgdG8gZm9ybSBjaGFuZ2VzIGFuZCBlbWl0aW5nIHZhbHVlcy5cbiAgICB0aGlzLnZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbiQgPSB0aGlzLmR5bmFtaWNGb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoZm9ybVZhbHVlID0+IHtcbiAgICAgIHRoaXMub25Gb3JtVmFsdWVDaGFuZ2VzKCk7XG4gICAgfSk7XG5cbiAgICAvL2FwaSB0byBleHBvc2UgZnVuY3Rpb25zXG4gICAgdGhpcy5keW5hbWljRm9ybUFQSSA9IHtcbiAgICAgIGRlZmF1bHRGb3JtVmFsdWVzOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdlbmVyYXRlRHluYW1pY0ZpZWxkc1ZhbHVlT2JqZWN0KHRoaXMuZHluYW1pY0Zvcm0udmFsdWUuZHluYW1pY0ZpZWxkcyk7XG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLmZvcm1Jbml0aWFsaXplZC5lbWl0KHRoaXMuZHluYW1pY0Zvcm1BUEkpO1xuICAgIHRoaXMuZm9ybVZhbGlkLmVtaXQodGhpcy5keW5hbWljRm9ybS52YWxpZCk7XG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24kPy51bnN1YnNjcmliZSgpO1xuICB9XG4gIG9uRm9ybVZhbHVlQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBsZXQgZm9ybVZhbHVlcyA9IHRoaXMuZ2VuZXJhdGVEeW5hbWljRmllbGRzVmFsdWVPYmplY3QodGhpcy5keW5hbWljRm9ybS52YWx1ZS5keW5hbWljRmllbGRzKTtcbiAgICB0aGlzLmZvcm1WYWxpZC5lbWl0KHRoaXMuZHluYW1pY0Zvcm0udmFsaWQpO1xuICAgIHRoaXMuZm9ybVVwZGF0ZWQuZW1pdChmb3JtVmFsdWVzKTtcbiAgICBjb25zb2xlLmxvZyhmb3JtVmFsdWVzKVxuICB9XG4gIGdlbmVyYXRlRHluYW1pY0ZpZWxkc1ZhbHVlT2JqZWN0KGZvcm1WYWx1ZXM6IEFycmF5PGFueT4pOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICBsZXQgZHluYW1pY0ZpZWxkc1ZhbHVlID0ge307XG4gICAgZm9ybVZhbHVlcy5mb3JFYWNoKChmaWVsZFZhbHVlLCBpbmRleCkgPT4ge1xuICAgICAgaWYodHlwZW9mIGZpZWxkVmFsdWU/LnZhbHVlID09PSAnc3RyaW5nJykgZmllbGRWYWx1ZS52YWx1ZSA9IGZpZWxkVmFsdWU/LnZhbHVlPy50cmltKClcbiAgICAgIGxldCBmb3JtYXR0ZWRWYWx1ZSA9IHRoaXMubWFwRm9ybUZpZWxkVG9Gb3JtVmFsdWUodGhpcy5mb3JtRmllbGRzW2luZGV4XSwgZmllbGRWYWx1ZS52YWx1ZSk7XG4gICAgICBpZiAoZmllbGRWYWx1ZS5zdWJGaWVsZHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgbGV0IGZvcm1hdHRlZFN1YkZpZWxkc1ZhbHVlcyA9IHt9XG4gICAgICAgIGxldCBzdWJGaWVsZCA9IHRoaXMuZm9ybUZpZWxkc1tpbmRleF0uc3ViRmllbGRzXG4gICAgICAgIGlmKHRoaXMuZm9ybUZpZWxkc1tpbmRleF0uZmllbGRUeXBlID09PSAnc2luZ2xlU2VsZWN0JyB8fCB0aGlzLmZvcm1GaWVsZHNbaW5kZXhdLmZpZWxkVHlwZSA9PT0gJ211bHRpU2VsZWN0Jykge1xuICAgICAgICAgIHN1YkZpZWxkID0gc3ViRmllbGQuZmlsdGVyKChzdWJGaWVsZCkgPT4gc3ViRmllbGQucGFyZW50Q29uZmlnVmFsdWUgPT09IGZpZWxkVmFsdWUudmFsdWUudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGZpZWxkVmFsdWUuc3ViRmllbGRzLmZvckVhY2goKHN1YkZpZWxkVmFsdWUsIHN1YkluZGV4KSA9PiB7XG4gICAgICAgICAgbGV0IHN1YkZvcm1GaWVsZCA9IHN1YkZpZWxkW3N1YkluZGV4XVxuICAgICAgICAgIGlmKHR5cGVvZiBzdWJGaWVsZFZhbHVlPy52YWx1ZSA9PT0gJ3N0cmluZycpIHN1YkZpZWxkVmFsdWUudmFsdWUgPSBzdWJGaWVsZFZhbHVlPy52YWx1ZT8udHJpbSgpXG4gICAgICAgICAgZm9ybWF0dGVkU3ViRmllbGRzVmFsdWVzW3N1YkZvcm1GaWVsZC5jb25maWdOYW1lXSA9IHRoaXMubWFwRm9ybUZpZWxkVG9Gb3JtVmFsdWUoc3ViRm9ybUZpZWxkLCBzdWJGaWVsZFZhbHVlKVxuICAgICAgICB9KVxuICAgICAgICBkeW5hbWljRmllbGRzVmFsdWVbdGhpcy5mb3JtRmllbGRzW2luZGV4XS5jb25maWdOYW1lXSA9IHtcbiAgICAgICAgICB2YWx1ZTogZm9ybWF0dGVkVmFsdWUsXG4gICAgICAgICAgc3ViRmllbGRzOiBmb3JtYXR0ZWRTdWJGaWVsZHNWYWx1ZXNcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGR5bmFtaWNGaWVsZHNWYWx1ZVt0aGlzLmZvcm1GaWVsZHNbaW5kZXhdLmNvbmZpZ05hbWVdID0gZm9ybWF0dGVkVmFsdWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGR5bmFtaWNGaWVsZHNWYWx1ZTtcbiAgfVxuICBnZW5lcmF0ZUR5bmFtaWNGb3JtKFxuICAgIGZvcm1GaWVsZHM6IEFycmF5PE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZD4sXG4gICAgZm9ybVZhbHVlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfVxuICApOiBVbnR5cGVkRm9ybUdyb3VwIHtcbiAgICBsZXQgZm9ybUFycmF5ID0gbmV3IFVudHlwZWRGb3JtQXJyYXkoW10pXG5cbiAgICBmb3IgKGxldCBmaWVsZCBvZiBmb3JtRmllbGRzKSB7XG4gICAgICBsZXQgZmllbGRWYWx1ZSA9IGZvcm1WYWx1ZXNbZmllbGQuY29uZmlnTmFtZV0/LnZhbHVlID8gZm9ybVZhbHVlc1tmaWVsZC5jb25maWdOYW1lXS52YWx1ZSA6IGZvcm1WYWx1ZXNbZmllbGQuY29uZmlnTmFtZV1cbiAgICAgIGxldCBmaWVsZENvbnRyb2wgPSB0aGlzLm1hcEZvcm1WYWx1ZVRvRm9ybUZpZWxkKGZpZWxkLCBmaWVsZFZhbHVlKTtcbiAgICAgIGxldCBzdWJGaWVsZHNDb250cm9scyA9IHRoaXMuZ2VuZXJhdGVTdWJEeW5hbWljRmllbGRzKGZvcm1WYWx1ZXMsIGZpZWxkLCBmaWVsZENvbnRyb2wudmFsdWUpO1xuICAgICAgZm9ybUFycmF5LnB1c2gobmV3IFVudHlwZWRGb3JtR3JvdXAoe1xuICAgICAgICB2YWx1ZTogZmllbGRDb250cm9sLFxuICAgICAgICBzdWJGaWVsZHM6IHN1YkZpZWxkc0NvbnRyb2xzXG4gICAgICB9KSlcbiAgICB9ICBcbiAgICByZXR1cm4gbmV3IFVudHlwZWRGb3JtR3JvdXAoe1xuICAgICAgZHluYW1pY0ZpZWxkczogZm9ybUFycmF5XG4gICAgfSlcbiAgfVxuICBcbiAgZ2V0RHluYW1pY0ZpZWxkc0NvbnRyb2xzKCk6IFVudHlwZWRGb3JtQXJyYXkge1xuICAgIHJldHVybiB0aGlzLmR5bmFtaWNGb3JtLmdldChcImR5bmFtaWNGaWVsZHNcIikgYXMgVW50eXBlZEZvcm1BcnJheTtcbiAgfVxuICB1cGRhdGVTdWJEeW5hbWljRmllbGRzKFxuICAgIGZpZWxkOiBOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQsXG4gICAgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwLFxuICAgIHZhbHVlOiBhbnlcbiAgKTogdm9pZCB7XG4gICAgaWYgKGZpZWxkLnN1YkZpZWxkcz8ubGVuZ3RoID4gMCkge1xuICAgICAgbGV0IHN1YkZpZWxkc0NvbnRyb2xzID0gdGhpcy5nZW5lcmF0ZVN1YkR5bmFtaWNGaWVsZHModGhpcy5mb3JtVmFsdWVzLCBmaWVsZCwgdmFsdWUpO1xuICAgICAgZm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ3N1YkZpZWxkcycpXG4gICAgICBmb3JtR3JvdXAuYWRkQ29udHJvbCgnc3ViRmllbGRzJywgc3ViRmllbGRzQ29udHJvbHMpXG4gICAgfVxuICB9XG4gIHVwZGF0ZVNlbGVjdGVkVmFsdWVGb3JTaW5nbGVTZWxlY3QoXG4gICAgZmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCxcbiAgICBjb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gICAgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwLFxuICAgIHZhbHVlOiBhbnlcbiAgKTogdm9pZCB7XG4gICAgaWYgKGNvbnRyb2wudmFsdWU/LnZhbHVlICE9PSB2YWx1ZS52YWx1ZSkge1xuICAgICAgY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICAgIGVsc2UgY29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgdGhpcy51cGRhdGVTdWJEeW5hbWljRmllbGRzKGZpZWxkLCBmb3JtR3JvdXAsIHZhbHVlKTtcbiAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgfVxuICB1cGRhdGVTZWxlY3RlZFZhbHVlRm9yTXVsdGlTZWxlY3QoXG4gICAgZmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCxcbiAgICBjb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gICAgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwLFxuICAgIHZhbHVlczogQXJyYXk8YW55PlxuICApOiB2b2lkIHtcbiAgICBsZXQgc2VsZWN0ZWRWYWx1ZXM6IEFycmF5PHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IGFueSB9PiA9IGNvbnRyb2wudmFsdWU7XG4gICAgZm9yIChsZXQgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICBsZXQgaXRlbUluZGV4ID0gc2VsZWN0ZWRWYWx1ZXMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5sYWJlbCA9PT0gdmFsdWUubGFiZWwpO1xuICAgICAgaWYgKGl0ZW1JbmRleCA+IC0xKSB7XG4gICAgICAgIHNlbGVjdGVkVmFsdWVzLnNwbGljZShpdGVtSW5kZXgsIDEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZWN0ZWRWYWx1ZXMucHVzaCh7IC4uLnZhbHVlIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBjb250cm9sLnNldFZhbHVlKHNlbGVjdGVkVmFsdWVzKTtcbiAgICB0aGlzLnVwZGF0ZVN1YkR5bmFtaWNGaWVsZHMoZmllbGQsIGZvcm1Hcm91cCwgdmFsdWVzKTtcbiAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgfVxuICBpc0NoZWNrQm94U2VsZWN0ZWQodmFsdWU6IHN0cmluZywgc2VsZWN0ZWRWYWx1ZXM6IEFycmF5PHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9Pik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzZWxlY3RlZFZhbHVlcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmxhYmVsID09PSB2YWx1ZSkgPiAtMTtcbiAgfVxuXG4gIGZpbmRTZWxlY3RlZFN1YkZpZWxkQ29uZmlnKHN1YmZpZWxkcywgdmFsdWUsIHN1YkZpZWxkSW5kZXgpIHtcbiAgICB0cnl7XG4gICAgICBjb25zdCBzZWxlY3RlZFN1YkZpZWxkQ29uZmlnID0gc3ViZmllbGRzLmZpbHRlcihpdGVtID0+IGl0ZW0ucGFyZW50Q29uZmlnVmFsdWUgPT09IHZhbHVlKVtzdWJGaWVsZEluZGV4XTtcbiAgICAgIHJldHVybiBzZWxlY3RlZFN1YkZpZWxkQ29uZmlnO1xuICAgIH1cbiAgICBjYXRjaChlKXtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU3ViZmllbGQgaW5kZXggbm90IGZvdW5kJyk7XG4gICAgfVxuICB9XG5cbiAgbWF0Y2hQYXJlbnRDb25maWcoc3ViZmllbGRzLCB2YWx1ZSkge1xuICAgIGlmICghc3ViZmllbGRzIHx8IHN1YmZpZWxkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHN1YmZpZWxkcy5zb21lKGl0ZW0gPT4gaXRlbS5wYXJlbnRDb25maWdWYWx1ZSA9PT0gdmFsdWUpO1xuICB9XG5cbiAgZ2VuZXJhdGVTdWJEeW5hbWljRmllbGRzKFxuICAgIGZvcm1WYWx1ZXM6IGFueSxcbiAgICBwYXJlbnRGaWVsZDogTnNEeW5hbWljRm9ybS5JRHluYW1pY0ZpZWxkLFxuICAgIHBhcmVudFZhbHVlOiBBcnJheTx7IGxhYmVsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfT4gfCB7bGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9IHwgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhblxuICApOiBVbnR5cGVkRm9ybUFycmF5IHtcbiAgICBsZXQgY29udHJvbHMgPSBuZXcgVW50eXBlZEZvcm1BcnJheShbXSlcbiAgICBsZXQgc3ViRmllbGRzID0gcGFyZW50RmllbGQuc3ViRmllbGRzXG4gICAgbGV0IHN1YkZpZWxkc1ZhbHVlcyA9IGZvcm1WYWx1ZXNbcGFyZW50RmllbGQuY29uZmlnTmFtZV0/LnN1YkZpZWxkcyA/IGZvcm1WYWx1ZXNbcGFyZW50RmllbGQuY29uZmlnTmFtZV0uc3ViRmllbGRzIDoge31cbiAgICBpZighc3ViRmllbGRzKSByZXR1cm4gY29udHJvbHM7XG4gICAgaWYgKHBhcmVudEZpZWxkLmZpZWxkVHlwZSA9PT0gJ3NpbmdsZVNlbGVjdCcpIHtcbiAgICAgIHN1YkZpZWxkcyA9IHN1YkZpZWxkcy5maWx0ZXIoKHN1YkZpZWxkKSA9PiBzdWJGaWVsZC5wYXJlbnRDb25maWdWYWx1ZSA9PT0gKDx7bGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9PnBhcmVudFZhbHVlKT8udmFsdWUpO1xuICAgIH1cbiAgICBlbHNlIGlmIChwYXJlbnRGaWVsZC5maWVsZFR5cGUgPT09ICdtdWx0aVNlbGVjdCcpIHtcbiAgICAgIGxldCBwYXJlbnRWYWx1ZXMgPSBuZXcgU2V0KCg8QXJyYXk8eyBsYWJlbDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIH0+PnBhcmVudFZhbHVlKS5tYXAoKHZhbHVlKSA9PiB2YWx1ZS52YWx1ZSkpO1xuICAgICAgc3ViRmllbGRzID0gc3ViRmllbGRzLmZpbHRlcigoc3ViRmllbGQpID0+IHBhcmVudFZhbHVlcy5oYXMoc3ViRmllbGQucGFyZW50Q29uZmlnVmFsdWUpKTtcbiAgICB9XG5cbiAgICBpZiAoc3ViRmllbGRzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGZvciAobGV0IHN1YkZpZWxkIG9mIHN1YkZpZWxkcykge1xuICAgICAgICAgIGNvbnRyb2xzLnB1c2godGhpcy5tYXBGb3JtVmFsdWVUb0Zvcm1GaWVsZChzdWJGaWVsZCwgc3ViRmllbGRzVmFsdWVzW3N1YkZpZWxkLmNvbmZpZ05hbWVdKSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIHJldHVybiBjb250cm9scztcbiAgfVxuICBtYXBGb3JtVmFsdWVUb0Zvcm1GaWVsZChmb3JtRmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCwgZm9ybVZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGxldCB2YWxpZGF0b3JzID0gZm9ybUZpZWxkLnZhbGlkYXRvcnMgPyBbZHluYW1pY0ZpZWxkVmFsaWRhdG9yKGZvcm1GaWVsZC52YWxpZGF0b3JzKV06IFtdXG4gICAgbGV0IGNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKG51bGwsIHZhbGlkYXRvcnMpO1xuXG4gICAgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwiaW5wdXRcIikge1xuICAgICAgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJ0ZXh0XCIgfHwgZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcInRleHRhcmVhXCIpIGNvbnRyb2wuc2V0VmFsdWUoZm9ybVZhbHVlID8gZm9ybVZhbHVlIDogXCJcIik7XG4gICAgICBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwibnVtYmVyXCIpIGNvbnRyb2wuc2V0VmFsdWUoZm9ybVZhbHVlID8gZm9ybVZhbHVlIDogMCk7XG4gICAgICBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwiZGF0ZVwiKSB7XG4gICAgICAgIGlmIChmb3JtVmFsdWUgJiYgdHlwZW9mIGZvcm1WYWx1ZSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUoZGF5anMoZm9ybVZhbHVlKS50eihmb3JtRmllbGQuZmllbGRDb25maWcudGltZXpvbmUpLmZvcm1hdChmb3JtRmllbGQuZmllbGRDb25maWcuZm9ybWF0KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29udHJvbC5zZXRWYWx1ZShkYXlqcygpLnR6KGZvcm1GaWVsZC5maWVsZENvbmZpZy50aW1lem9uZSkuZm9ybWF0KGZvcm1GaWVsZC5maWVsZENvbmZpZy5mb3JtYXQpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkVHlwZSA9PT0gXCJzaW5nbGVTZWxlY3RcIikge1xuICAgICAgY29uc3QgZmluZFNlbGVjdGVkVmFsdWUgPSAoKSA9PiB7XG4gICAgICAgIGxldCBpbmRleCA9IGZvcm1GaWVsZC5pdGVtc0xpc3QuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS52YWx1ZSA9PT0gZm9ybVZhbHVlKVxuICAgICAgICByZXR1cm4gaW5kZXggPj0gMCA/IGZvcm1GaWVsZC5pdGVtc0xpc3RbaW5kZXhdOiBcIlwiO1xuICAgICAgfVxuICAgICAgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJkcm9wZG93blwiKSB7XG4gICAgICAgIGlmICghZm9ybVZhbHVlKSBjb250cm9sLnNldFZhbHVlKGZvcm1GaWVsZC5pdGVtc0xpc3RbMF0pO1xuICAgICAgICBlbHNlIGNvbnRyb2wuc2V0VmFsdWUoZmluZFNlbGVjdGVkVmFsdWUoKSlcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJyYWRpb1wiKSB7XG4gICAgICAgIGNvbnRyb2wuc2V0VmFsdWUoZmluZFNlbGVjdGVkVmFsdWUoKSlcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwibXVsdGlTZWxlY3RcIikge1xuICAgICAgaWYgKGZvcm1WYWx1ZSAmJiBBcnJheS5pc0FycmF5KGZvcm1WYWx1ZSkpIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkVmFsdWVzID0gW107XG4gICAgICAgIGZvciAobGV0IHZhbHVlIG9mIGZvcm1WYWx1ZSkge1xuICAgICAgICAgIGxldCBpbmRleCA9IGZvcm1GaWVsZC5pdGVtc0xpc3QuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS52YWx1ZSA9PT0gdmFsdWUpO1xuICAgICAgICAgIGlmIChpbmRleCA+IC0xKSBzZWxlY3RlZFZhbHVlcy5wdXNoKHsgLi4uZm9ybUZpZWxkLml0ZW1zTGlzdFtpbmRleF0gfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29udHJvbC5zZXRWYWx1ZShzZWxlY3RlZFZhbHVlcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250cm9sLnNldFZhbHVlKFtdKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICBjb250cm9sLnNldFZhbHVlKCEhZm9ybVZhbHVlKTtcbiAgICB9IGVsc2UgY29udHJvbC5zZXRWYWx1ZShudWxsKTtcbiAgICByZXR1cm4gY29udHJvbDtcbiAgfVxuICBtYXBGb3JtRmllbGRUb0Zvcm1WYWx1ZShmb3JtRmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCwgZm9ybVZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcImlucHV0XCIpIHtcbiAgICAgIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwidGV4dFwiIHx8IGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJ0ZXh0YXJlYVwiKSByZXR1cm4gZm9ybVZhbHVlO1xuICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcIm51bWJlclwiKSByZXR1cm4gK2Zvcm1WYWx1ZTtcbiAgICAgIGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJkYXRlXCIpIHtcbiAgICAgICAgcmV0dXJuIGRheWpzLnR6KGZvcm1WYWx1ZSwgZm9ybUZpZWxkLmZpZWxkQ29uZmlnLmZvcm1hdCwgZm9ybUZpZWxkLmZpZWxkQ29uZmlnLnRpbWV6b25lKS52YWx1ZU9mKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcInNpbmdsZVNlbGVjdFwiKSB7XG4gICAgICByZXR1cm4gZm9ybVZhbHVlPy52YWx1ZSA/PyAnJztcbiAgICB9IGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwibXVsdGlTZWxlY3RcIikge1xuICAgICAgcmV0dXJuIGZvcm1WYWx1ZT8ubWFwKGl0ZW0gPT4gaXRlbS52YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgcmV0dXJuIGZvcm1WYWx1ZTtcbiAgICB9IGVsc2UgcmV0dXJuIGZvcm1WYWx1ZTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZHluYW1pY0ZpZWxkVmFsaWRhdG9yID0gKHZhbGlkYXRvcnM6IEFycmF5PE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZFZhbGlkYXRvcj4pOiBWYWxpZGF0b3JGbiA9PiB7XG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIGxldCB2YWx1ZSA9IGNvbnRyb2wudmFsdWVcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlPy52YWx1ZSA/IHZhbHVlLnZhbHVlIDogJydcbiAgICB9XG4gICAgbGV0IGVycm9ycyA9IG51bGxcblxuICAgIHZhbGlkYXRvcnMuZm9yRWFjaCgodmFsaWRhdG9yKSA9PiB7XG4gICAgICBsZXQgZXJyb3IgPSBudWxsXG4gICAgICBsZXQgbWVzc2FnZSA9IHZhbGlkYXRvci5tZXNzYWdlXG4gICAgICBzd2l0Y2ggKHZhbGlkYXRvci50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJSZXF1aXJlZFwiOlxuICAgICAgICAgIGVycm9yID0gVmFsaWRhdG9ycy5yZXF1aXJlZChjb250cm9sKTtcbiAgICAgICAgICBpZiAoIWVycm9yICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUudHJpbSgpID09PSAnJykge1xuICAgICAgICAgICAgZXJyb3IgPSB7IFJlcXVpcmVkOiBtZXNzYWdlIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmKGVycm9yKSBlcnJvciA9IHtSZXF1aXJlZDogbWVzc2FnZX1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIk1pbkxlbmd0aFwiOlxuICAgICAgICAgIGVycm9yID0gVmFsaWRhdG9ycy5taW5MZW5ndGgoK3ZhbGlkYXRvci52YWx1ZSkoY29udHJvbClcbiAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKCckezB9JywgZXJyb3I/Lm1pbmxlbmd0aC5yZXF1aXJlZExlbmd0aClcbiAgICAgICAgICBpZihlcnJvcikgZXJyb3IgPSB7IE1pbkxlbmd0aDogbWVzc2FnZSB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJNYXhMZW5ndGhcIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMubWF4TGVuZ3RoKCt2YWxpZGF0b3IudmFsdWUpKGNvbnRyb2wpXG4gICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgnJHswfScsIGVycm9yPy5hY3R1YWxMZW5ndGgpXG4gICAgICAgICAgaWYoZXJyb3IpIGVycm9yID0geyBNYXhMZW5ndGg6IG1lc3NhZ2UgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiRW1haWxcIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMuZW1haWwoY29udHJvbClcbiAgICAgICAgICBpZihlcnJvcikgZXJyb3IgPSB7RW1haWw6IG1lc3NhZ2V9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJDdXN0b21cIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMucGF0dGVybihgJHt2YWxpZGF0b3IudmFsdWV9YCkoY29udHJvbClcbiAgICAgICAgICBpZihlcnJvcikgZXJyb3IgPSB7Q3VzdG9tOiBtZXNzYWdlfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKGVycm9yKSBlcnJvcnMgPSB7IC4uLmVycm9ycywgLi4uZXJyb3IgfVxuICAgIH0pXG4gICAgcmV0dXJuIGVycm9yc1xuICB9XG59IiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJkeW5hbWljRm9ybVwiPlxuICA8bmctY29udGFpbmVyIGZvcm1BcnJheU5hbWU9XCJkeW5hbWljRmllbGRzXCI+XG4gICAgPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwTmFtZV09XCJpXCIgKm5nRm9yPVwibGV0IGZpZWxkQ29udHJvbCBvZiBnZXREeW5hbWljRmllbGRzQ29udHJvbHMoKS5jb250cm9sczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZFwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgJGltcGxpY2l0OiBmb3JtRmllbGRzW2ldLFxuICAgICAgICAgIGZvcm1Hcm91cDogZmllbGRDb250cm9sLFxuICAgICAgICAgIGNvbnRyb2w6IGZpZWxkQ29udHJvbC5jb250cm9scy52YWx1ZVxuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPGRpdiBjbGFzcz1cInN1Yi1keW5hbWljLWZvcm1cIiAqbmdJZj1cImZpZWxkQ29udHJvbD8udmFsdWUgJiYgKCEhZm9ybUZpZWxkc1tpXT8uc3ViRmllbGRzICYmIGZvcm1GaWVsZHNbaV0/LnN1YkZpZWxkcz8ubGVuZ3RoID4gMCAmJiBtYXRjaFBhcmVudENvbmZpZyhmb3JtRmllbGRzW2ldPy5zdWJGaWVsZHMsIGZpZWxkQ29udHJvbD8uY29udHJvbHM/LnZhbHVlPy52YWx1ZT8udmFsdWUpKVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWJGaWVsZENvbnRyb2wgb2YgZmllbGRDb250cm9sLmNvbnRyb2xzLnN1YkZpZWxkcy5jb250cm9sczsgbGV0IGogPSBpbmRleFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZFwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAkaW1wbGljaXQ6IGZpbmRTZWxlY3RlZFN1YkZpZWxkQ29uZmlnKGZvcm1GaWVsZHNbaV0/LnN1YkZpZWxkcywgZmllbGRDb250cm9sLmNvbnRyb2xzLnZhbHVlLnZhbHVlLnZhbHVlLGopLFxuICAgICAgICAgICAgICBjb250cm9sOiBzdWJGaWVsZENvbnRyb2xcbiAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Zvcm0+XG5cblxuPG5nLXRlbXBsYXRlICNkeW5hbWljRmllbGQgbGV0LWZpZWxkIGxldC1jb250cm9sPVwiY29udHJvbFwiIGxldC1mb3JtZ3JvdXA9XCJmb3JtR3JvdXBcIj5cblxuICA8IS0tIGZpZWxkVHlwZTogJ2lucHV0JyBmaWVsZElucHV0VHlwZTogJ3RleHQnIHwgJ251bWJlcicgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdpbnB1dCcgJiYgKGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAndGV4dCcgfHwgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICdudW1iZXInKVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21JbnB1dFRleHROdW1iZXI7IGVsc2UgZGVmYXVsdElucHV0VGV4dE51bWJlclwiPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbUlucHV0VGV4dE51bWJlclwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgY29udHJvbDogY29udHJvbCwgZm9ybWdyb3VwOiBmb3JtZ3JvdXAgfVwiXG4gICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRJbnB1dFRleHROdW1iZXI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1maWVsZCBtdWx0aS1saW5lLWZpZWxkLWNvbnRhaW5lclwiXG4gICAgICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyLWJvdHRvbSc6IChmb3JtZ3JvdXA/LmNvbnRyb2xzPy5zdWJGaWVsZHM/LmNvbnRyb2xzPy5sZW5ndGggJiYgcmVtb3ZlU2VwcmF0b3JGb3JTdWJGaWVsZHMpID8gICdub25lJzonJ31cIj5cbiAgICAgICAgPHAgY2xhc3M9XCJoNyBmaWVsZC10aXRsZS1zbVwiPlxuICAgICAgICAgIHt7IGZpZWxkPy50aXRsZSB9fSA8c3BhbiAqbmdJZj1cImZpZWxkLnZhbGlkYXRvcnMgJiYgZmllbGQudmFsaWRhdG9ycy5sZW5ndGggPiAwXCI+ICo8L3NwYW4+XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGRpdiBzdHlsZT1cImZsZXgtYmFzaXM6IDEwMCVcIj48L2Rpdj5cbiAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXQtZmllbGQgaXAtdGV4dFwiIFt0eXBlXT1cImZpZWxkLmZpZWxkSW5wdXRUeXBlXCIgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZVN1YkR5bmFtaWNGaWVsZHMoZmllbGQsIGZvcm1ncm91cCwgJGV2ZW50KVwiIFxuICAgICAgICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyJzogY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzID8gJzFweCBzb2xpZCAjQjAwMDIwJzogJyd9XCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXJUZXh0ID8gZmllbGQucGxhY2Vob2xkZXJUZXh0IDogJ0lucHV0IFRleHQnXCIgXG4gICAgICAgICAgW21pbl09XCJmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ251bWJlcicgPyAwIDogJycgXCIvPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIiBcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIlxuICAgICAgICA+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG4gIFxuICA8IS0tIGZpZWxkVHlwZTogJ2lucHV0JyBmaWVsZElucHV0VHlwZTogJ3RleHRhcmVhJyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ2lucHV0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ3RleHRhcmVhJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21JbnB1dFRleHRhcmVhOyBlbHNlIGRlZmF1bHRJbnB1dFRleHRhcmVhXCI+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbUlucHV0VGV4dGFyZWFcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCBjb250cm9sOiBjb250cm9sLCBmb3JtZ3JvdXA6IGZvcm1ncm91cCB9XCJcbiAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRJbnB1dFRleHRhcmVhPlxuICAgICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgbXVsdGktbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgICAgW25nU3R5bGVdPVwieydib3JkZXItYm90dG9tJzogKGZvcm1ncm91cD8uY29udHJvbHM/LnN1YkZpZWxkcz8uY29udHJvbHM/Lmxlbmd0aCAmJiByZW1vdmVTZXByYXRvckZvclN1YkZpZWxkcykgPyAgJ25vbmUnOicnfVwiPlxuICAgICAgICA8cCBjbGFzcz1cImg3IGZpZWxkLXRpdGxlLXNtXCI+XG4gICAgICAgICAge3sgZmllbGQudGl0bGUgfX08c3BhbiAqbmdJZj1cImZpZWxkLnZhbGlkYXRvcnMgJiYgZmllbGQudmFsaWRhdG9ycy5sZW5ndGggPiAwXCI+ICo8L3NwYW4+XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGRpdiBzdHlsZT1cImZsZXgtYmFzaXM6IDEwMCVcIj48L2Rpdj5cbiAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwiaW5wdXQtZmllbGQgaXAtdGV4dGFyZWFcIiB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgW25nU3R5bGVdPVwieydib3JkZXInOiBjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnMgPyAnMXB4IHNvbGlkICNCMDAwMjAnOiAnJ31cIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlclRleHQgPyBmaWVsZC5wbGFjZWhvbGRlclRleHQgOiAnSW5wdXQgVGV4dCdcIiBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZVN1YkR5bmFtaWNGaWVsZHMoZmllbGQsIGZvcm1ncm91cCwgJGV2ZW50KVwiPjwvdGV4dGFyZWE+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuICBcbiAgPCEtLSBmaWVsZFR5cGU6ICdpbnB1dCcgZmllbGRJbnB1dFR5cGU6ICdkYXRlJyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ2lucHV0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ2RhdGUnXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUlucHV0RGF0ZTsgZWxzZSBkZWZhdWx0SW5wdXREYXRlXCI+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tSW5wdXREYXRlXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCBjb250cm9sOiBjb250cm9sLCBmb3JtZ3JvdXA6IGZvcm1ncm91cCB9XCJcbiAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdElucHV0RGF0ZT5cbiAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZpZWxkIHNpbmdsZS1saW5lLWZpZWxkLWNvbnRhaW5lclwiXG4gICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlci1ib3R0b20nOiAoZm9ybWdyb3VwPy5jb250cm9scz8uc3ViRmllbGRzPy5jb250cm9scz8ubGVuZ3RoICYmIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzKSA/ICAnbm9uZSc6Jyd9XCJcbiAgICAgICAgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdpbnB1dCcgJiYgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICdkYXRlJ1wiPlxuICAgICAgICA8cCBjbGFzcz1cImg2XCI+XG4gICAgICAgICAge3sgZmllbGQudGl0bGUgfX0gPHNwYW4gKm5nSWY9XCJmaWVsZC52YWxpZGF0b3JzICYmIGZpZWxkLnZhbGlkYXRvcnMubGVuZ3RoID4gMFwiPiAqPC9zcGFuPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLXBpY2tlci1jb250YWluZXJcIj5cbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJkYXRlLXBpY2tlclwiIHJlYWRvbmx5IG1pc1R6RHAgW2RwQ29uZmlnXT1cImZpZWxkLmZpZWxkQ29uZmlnXCJcbiAgICAgICAgICAgIChkYXRlQ2hhbmdlKT1cImNvbnRyb2wuc2V0VmFsdWUoJGV2ZW50KVwiIFtzZWxlY3RlZERhdGVdPVwiY29udHJvbC52YWx1ZVwiIFtvZmZzZXRZXT1cIjBcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cImNvbnRyb2wudmFsdWVcIiAjZHAgLz5cbiAgICAgICAgICA8aW1nIGFsdD1cImRhdGEtcGlja2VyXCIgKm5nSWY9XCJjYWxlbmRhckljb25VcmxcIiBjbGFzcz1cImRhdGUtcGlja2VyLWljb25cIiBbc3JjXT1cImNhbGVuZGFySWNvblVybFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZHAuY2xpY2soKVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIGZpZWxkVHlwZTogJ2Jvb2xlYW4nIGZpZWxkSW5wdXRUeXBlOiAndG9nZ2xlJyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ2Jvb2xlYW4nICYmIGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAndG9nZ2xlJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21Cb29sZWFuVG9nZ2xlOyBlbHNlIGRlZmF1bHRCb29sZWFuVG9nZ2xlXCI+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tQm9vbGVhblRvZ2dsZVwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgY29udHJvbDogY29udHJvbCwgZm9ybWdyb3VwOiBmb3JtZ3JvdXAgfVwiXG4gICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRCb29sZWFuVG9nZ2xlPlxuICAgICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgc2luZ2xlLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyLWJvdHRvbSc6IChmb3JtZ3JvdXA/LmNvbnRyb2xzPy5zdWJGaWVsZHM/LmNvbnRyb2xzPy5sZW5ndGggJiYgcmVtb3ZlU2VwcmF0b3JGb3JTdWJGaWVsZHMpID8gICdub25lJzonJ31cIj5cbiAgICAgICAgPHAgY2xhc3M9XCJoNlwiPlxuICAgICAgICAgIHt7IGZpZWxkLnRpdGxlIH19PHNwYW4gKm5nSWY9XCJmaWVsZC52YWxpZGF0b3JzICYmIGZpZWxkLnZhbGlkYXRvcnMubGVuZ3RoID4gMFwiPiAqPC9zcGFuPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxtaXMtc3dpdGNoIFtjb250cm9sXT1cImNvbnRyb2xcIiAodmFsdWVDaGFuZ2VkKT1cInVwZGF0ZVN1YkR5bmFtaWNGaWVsZHMoZmllbGQsIGZvcm1ncm91cCwgJGV2ZW50KVwiPjwvbWlzLXN3aXRjaD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb250cm9sLmVycm9ycyB9XCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+ICAgIFxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gZmllbGRUeXBlOiAnc2luZ2xlU2VsZWN0JyBmaWVsZElucHV0VHlwZTogJ2Ryb3Bkb3duJyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ3NpbmdsZVNlbGVjdCcgJiYgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICdkcm9wZG93bidcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tU2luZ2xlU2VsZWN0RHJvcGRvd247IGVsc2UgZGVmYXVsdFNpbmdsZVNlbGVjdERyb3Bkb3duXCI+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tU2luZ2xlU2VsZWN0RHJvcGRvd25cIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQsIGNvbnRyb2w6IGNvbnRyb2wsIGZvcm1ncm91cDogZm9ybWdyb3VwIH1cIlxuICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0U2luZ2xlU2VsZWN0RHJvcGRvd24+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1maWVsZCBzaW5nbGUtbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlci1ib3R0b20nOiAoZm9ybWdyb3VwPy5jb250cm9scz8uc3ViRmllbGRzPy5jb250cm9scz8ubGVuZ3RoICYmIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzKSA/ICAnbm9uZSc6Jyd9XCI+XG4gICAgICAgIDxwIGNsYXNzPVwiaDZcIj5cbiAgICAgICAgICB7eyBmaWVsZC50aXRsZSB9fTxzcGFuICpuZ0lmPVwiZmllbGQudmFsaWRhdG9ycyAmJiBmaWVsZC52YWxpZGF0b3JzLmxlbmd0aCA+IDBcIj4gKjwvc3Bhbj5cbiAgICAgICAgPC9wPlxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsncmVtb3ZlYWJsZS1jb250YWluZXInIDogZmllbGQ/LmlzUmVtb3ZlYWJsZX1cIj5cbiAgICAgICAgICA8bWlzLWRyb3Bkb3duIFtzZWFyY2hFbmFibGVkXT1cImZhbHNlXCIgW3dpZHRoXT1cIicxNDBweCdcIiBbZGF0YV09XCJmaWVsZC5pdGVtc0xpc3RcIiBbc2VsZWN0ZWRJdGVtXT1cImNvbnRyb2wudmFsdWVcIlxuICAgICAgICAgIChvbkNoYW5nZSk9XCJ1cGRhdGVTZWxlY3RlZFZhbHVlRm9yU2luZ2xlU2VsZWN0KGZpZWxkLCBjb250cm9sLCBmb3JtZ3JvdXAsICRldmVudCk7XCI+XG4gICAgICAgICAgPC9taXMtZHJvcGRvd24+XG4gICAgICAgICAgPGltZyAqbmdJZj1cImZpZWxkLmlzUmVtb3ZlYWJsZSAmJiByZW1vdmVJY29uVXJsXCIgY2xhc3M9XCJyZW1vdmUtaWNvblwiIFtzcmNdPVwicmVtb3ZlSWNvblVybFwiIChjbGljayk9XCJmaWVsZFJlbW92ZWQuZW1pdChmaWVsZClcIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyID5cbiAgXG5cbiAgPCEtLSBmaWVsZFR5cGU6ICdzaW5nbGVTZWxlY3QnIGZpZWxkSW5wdXRUeXBlOiAncmFkaW8nIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnc2luZ2xlU2VsZWN0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ3JhZGlvJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21TaW5nbGVTZWxlY3RSYWRpbzsgZWxzZSBkZWZhdWx0U2luZ2xlU2VsZWN0UmFkaW9cIj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21TaW5nbGVTZWxlY3RSYWRpb1wiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgY29udHJvbDogY29udHJvbCwgZm9ybWdyb3VwOiBmb3JtZ3JvdXAgfVwiXG4gICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRTaW5nbGVTZWxlY3RSYWRpbz5cbiAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZpZWxkIG11bHRpLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyLWJvdHRvbSc6IChmb3JtZ3JvdXA/LmNvbnRyb2xzPy5zdWJGaWVsZHM/LmNvbnRyb2xzPy5sZW5ndGggJiYgcmVtb3ZlU2VwcmF0b3JGb3JTdWJGaWVsZHMpID8gICdub25lJzonJ31cIj5cbiAgICAgICAgPHAgY2xhc3M9XCJoNyBmaWVsZC10aXRsZS1zbVwiPlxuICAgICAgICAgIHt7IGZpZWxkLnRpdGxlIH19PHNwYW4gKm5nSWY9XCJmaWVsZC52YWxpZGF0b3JzICYmIGZpZWxkLnZhbGlkYXRvcnMubGVuZ3RoID4gMFwiPiAqPC9zcGFuPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxkaXYgc3R5bGU9XCJmbGV4LWJhc2lzOiAxMDAlXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJjaGVja2JveGVzLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYWRpby1jaGVja2JveC1jb21tb25cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWVsZC5pdGVtc0xpc3RcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnY2hlY2tib3gtYWN0aXZlJzogaXRlbS5sYWJlbCA9PT0gY29udHJvbC52YWx1ZT8ubGFiZWwgfVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlU2VsZWN0ZWRWYWx1ZUZvclNpbmdsZVNlbGVjdChmaWVsZCwgY29udHJvbCwgZm9ybWdyb3VwLCBpdGVtKTtcIj5cbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCIoaXRlbS5sYWJlbCA9PT0gY29udHJvbC52YWx1ZT8ubGFiZWwpICYmIGFjdGl2ZUJ0bkljb25VcmxcIiBbc3JjXT1cImFjdGl2ZUJ0bkljb25VcmxcIiBhbHQ9XCJcIiAvPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJoNlwiPnt7IGl0ZW0ubGFiZWwgfX08L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgXG5cbiAgPCEtLSBmaWVsZFR5cGU6ICdtdWx0aVNlbGVjdCcgZmllbGRJbnB1dFR5cGU6ICdjaGVja2JveCcgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdtdWx0aVNlbGVjdCcgJiYgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICdjaGVja2JveCdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tTXVsdGlTZWxlY3RDaGVja2JveDsgZWxzZSBkZWZhdWx0TXVsdGlTZWxlY3RDaGVja2JveFwiPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbU11bHRpU2VsZWN0Q2hlY2tib3hcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQsIGNvbnRyb2w6IGNvbnRyb2wsIGZvcm1ncm91cDogZm9ybWdyb3VwIH1cIlxuICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0TXVsdGlTZWxlY3RDaGVja2JveD5cbiAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZpZWxkIG11bHRpLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyLWJvdHRvbSc6IChmb3JtZ3JvdXA/LmNvbnRyb2xzPy5zdWJGaWVsZHM/LmNvbnRyb2xzPy5sZW5ndGggJiYgcmVtb3ZlU2VwcmF0b3JGb3JTdWJGaWVsZHMpID8gICdub25lJzonJ31cIj5cbiAgICAgICAgPHAgY2xhc3M9XCJoNyBmaWVsZC10aXRsZS1zbVwiPlxuICAgICAgICAgIHt7IGZpZWxkLnRpdGxlIH19PHNwYW4gKm5nSWY9XCJmaWVsZC52YWxpZGF0b3JzICYmIGZpZWxkLnZhbGlkYXRvcnMubGVuZ3RoID4gMFwiPiAqPC9zcGFuPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxkaXYgc3R5bGU9XCJmbGV4LWJhc2lzOiAxMDAlXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJjaGVja2JveGVzLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYWRpby1jaGVja2JveC1jb21tb25cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWVsZC5pdGVtc0xpc3RcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnY2hlY2tib3gtYWN0aXZlJzogaXNDaGVja0JveFNlbGVjdGVkKGl0ZW0ubGFiZWwsIGNvbnRyb2wudmFsdWUpIH1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZVNlbGVjdGVkVmFsdWVGb3JNdWx0aVNlbGVjdChmaWVsZCwgY29udHJvbCwgZm9ybWdyb3VwLCBbaXRlbV0pXCI+XG4gICAgICAgICAgICA8aW1nICpuZ0lmPVwiaXNDaGVja0JveFNlbGVjdGVkKGl0ZW0ubGFiZWwsIGNvbnRyb2wudmFsdWUpICYmIGFjdGl2ZUJ0bkljb25VcmxcIiBbc3JjXT1cImFjdGl2ZUJ0bkljb25VcmxcIlxuICAgICAgICAgICAgICBhbHQ9XCJcIiAvPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJoNlwiPnt7IGl0ZW0ubGFiZWwgfX08L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cblxuXG4gIDwhLS0gZmllbGRUeXBlOiAnbXVsdGlTZWxlY3QnIGZpZWxkSW5wdXRUeXBlOiAnZHJvcGRvd24nIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnbXVsdGlTZWxlY3QnICYmIGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAnZHJvcGRvd24nXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbU11bHRpU2VsZWN0RHJvcGRvd247IGVsc2UgZGVmYXVsdE11bHRpU2VsZWN0RHJvcGRvd25cIj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21NdWx0aVNlbGVjdERyb3Bkb3duXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCBjb250cm9sOiBjb250cm9sLCBmb3JtZ3JvdXA6IGZvcm1ncm91cCB9XCJcbiAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdE11bHRpU2VsZWN0RHJvcGRvd24+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1maWVsZCBzaW5nbGUtbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgICAgW25nU3R5bGVdPVwieydib3JkZXItYm90dG9tJzogKGZvcm1ncm91cD8uY29udHJvbHM/LnN1YkZpZWxkcz8uY29udHJvbHM/Lmxlbmd0aCAmJiByZW1vdmVTZXByYXRvckZvclN1YkZpZWxkcykgPyAgJ25vbmUnOicnfVwiPlxuICAgICAgICA8cCBjbGFzcz1cImg2XCI+XG4gICAgICAgICAge3sgZmllbGQudGl0bGUgfX08c3BhbiAqbmdJZj1cImZpZWxkLnZhbGlkYXRvcnMgJiYgZmllbGQudmFsaWRhdG9ycy5sZW5ndGggPiAwXCI+ICo8L3NwYW4+XG4gICAgICAgIDwvcD5cbiAgICAgICAgPG1pcy1tdWx0aS1zZWxlY3QtZHJvcGRvd24gW3dpZHRoXT1cIicxNDBweCdcIiBbc2hvd1NlbGVjdGVkQ291bnRdPVwidHJ1ZVwiIFtkcm9wZG93bkxpc3RXaWR0aF09XCInMjU2cHgnXCJcbiAgICAgICAgICBbc2VhcmNoRW5hYmxlZF09XCJmYWxzZVwiIFtoaWRlQXBwbHlCdXR0b25dPVwidHJ1ZVwiIFtkYXRhXT1cImZpZWxkLml0ZW1zTGlzdFwiXG4gICAgICAgICAgW3NlbGVjdGVkSXRlbXNdPVwiY29udHJvbC52YWx1ZVwiIChvbkNoYW5nZSk9XCJ1cGRhdGVTZWxlY3RlZFZhbHVlRm9yTXVsdGlTZWxlY3QoZmllbGQsIGNvbnRyb2wsIGZvcm1ncm91cCwgJGV2ZW50KTtcIj48L21pcy1tdWx0aS1zZWxlY3QtZHJvcGRvd24+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuXG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2R5bmFtaWNGaWVsZEVycm9ycyBsZXQtZXJyb3JzPlxuICA8ZGl2IGlkPVwiZXJyb3ItbWVzc2FnZXMtY29udGFpbmVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgZXJyb3JzIHwga2V5dmFsdWVcIj5cbiAgICAgIDxwIGNsYXNzPVwiaDhcIj5cbiAgICAgICAge3tcIiDigKIgJm5ic3A7XCIgKyBlcnJvci52YWx1ZX19XG4gICAgICA8L3A+XG4gICAgICA8ZGl2IFtuZ1N0eWxlXT1cInsgJ2ZsZXgtYmFzaXMnOiAnMTAwJScsICdoZWlnaHQnOiAnMCcgfVwiPjwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+Il19
|