@energycap/components 0.41.1-ECAP-27592-angular-17.20241223-1652 → 0.41.1-ECAP-26841-date-input-features.20250106-0847
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/{esm2022 → esm2020}/energycap-components.mjs +4 -4
- package/esm2020/lib/components.module.mjs +423 -0
- package/esm2020/lib/controls/banner/banner.component.mjs +109 -0
- package/esm2020/lib/controls/button/button.component.mjs +106 -0
- package/esm2020/lib/controls/button/copy-button-base.directive.mjs +67 -0
- package/{esm2022 → esm2020}/lib/controls/button/copy-button.directive.mjs +28 -28
- package/esm2020/lib/controls/button/copy-table-button.directive.mjs +43 -0
- package/esm2020/lib/controls/calendar/calendar-item.component.mjs +91 -0
- package/esm2020/lib/controls/calendar/calendar.component.mjs +248 -0
- package/esm2020/lib/controls/calendar/calendar.types.mjs +2 -0
- package/esm2020/lib/controls/checkbox/checkbox.component.mjs +140 -0
- package/{esm2022 → esm2020}/lib/controls/collapsible-toggle/collapsible-toggle.component.mjs +38 -38
- package/esm2020/lib/controls/combobox/combobox.component.mjs +879 -0
- package/esm2020/lib/controls/date-input/date-input-selection-strategies/date-input-selection-strategy-base.mjs +57 -0
- package/esm2020/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.mjs +62 -0
- package/esm2020/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.mjs +100 -0
- package/esm2020/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.mjs +101 -0
- package/esm2020/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.mjs +76 -0
- package/esm2020/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.mjs +79 -0
- package/esm2020/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.mjs +210 -0
- package/esm2020/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.mjs +81 -0
- package/esm2020/lib/controls/date-input/date-input.component.mjs +462 -0
- package/esm2020/lib/controls/date-input/date-input.types.mjs +44 -0
- package/esm2020/lib/controls/dropdown/dropdown.component.mjs +243 -0
- package/esm2020/lib/controls/file-upload/file-upload.component.mjs +261 -0
- package/esm2020/lib/controls/form-control/form-control.component.mjs +98 -0
- package/esm2020/lib/controls/form-control-base.mjs +151 -0
- package/esm2020/lib/controls/form-control-label/form-control-label.component.mjs +136 -0
- package/esm2020/lib/controls/form-group/form-group.component.mjs +261 -0
- package/{esm2022 → esm2020}/lib/controls/help-popover/help-popover.component.mjs +31 -31
- package/esm2020/lib/controls/item-picker/item-picker.component.mjs +329 -0
- package/{esm2022 → esm2020}/lib/controls/link-button/link-button.component.mjs +11 -11
- package/esm2020/lib/controls/menu/menu.component.mjs +485 -0
- package/{esm2022 → esm2020}/lib/controls/navigation/link-item.mjs +1 -1
- package/esm2020/lib/controls/navigation/nav-group.mjs +39 -0
- package/esm2020/lib/controls/navigation/nav-item-active.directive.mjs +92 -0
- package/{esm2022 → esm2020}/lib/controls/navigation/nav-item.mjs +1 -1
- package/esm2020/lib/controls/numericbox/numericbox.component.mjs +372 -0
- package/esm2020/lib/controls/popover/popover.component.mjs +117 -0
- package/{esm2022 → esm2020}/lib/controls/radio-button/radio-button-option.mjs +2 -2
- package/esm2020/lib/controls/radio-button/radio-button.component.mjs +82 -0
- package/esm2020/lib/controls/select/select.component.mjs +88 -0
- package/esm2020/lib/controls/tabs/tabs.component.mjs +47 -0
- package/esm2020/lib/controls/textbox/textbox.component.mjs +155 -0
- package/esm2020/lib/core/cache.service.mjs +105 -0
- package/esm2020/lib/core/custom-validators.mjs +29 -0
- package/esm2020/lib/core/date-time-helper.mjs +228 -0
- package/esm2020/lib/core/error.service.mjs +61 -0
- package/esm2020/lib/core/router-helper.service.mjs +111 -0
- package/esm2020/lib/core/scroll.service.mjs +89 -0
- package/{esm2022 → esm2020}/lib/core/telemetry-tracker.service.mjs +16 -16
- package/{esm2022 → esm2020}/lib/core/telemetry.service.mjs +38 -38
- package/esm2020/lib/core/validation-message.service.mjs +185 -0
- package/{esm2022 → esm2020}/lib/core/validation-patterns.mjs +30 -30
- package/esm2020/lib/core/window.service.mjs +186 -0
- package/esm2020/lib/display/app-bar/app-bar.component.mjs +46 -0
- package/esm2020/lib/display/avatar/avatar.component.mjs +67 -0
- package/esm2020/lib/display/avatar/avatar.service.mjs +64 -0
- package/esm2020/lib/display/confirm/confirm.component.mjs +168 -0
- package/{esm2022 → esm2020}/lib/display/dialog/dialog-content.mjs +1 -1
- package/esm2020/lib/display/dialog/dialog-group/dialog-group.component.mjs +63 -0
- package/{esm2022 → esm2020}/lib/display/dialog/dialog-types.mjs +76 -76
- package/esm2020/lib/display/dialog/dialog.component.mjs +281 -0
- package/{esm2022 → esm2020}/lib/display/dialog/dialog.service.mjs +71 -71
- package/{esm2022 → esm2020}/lib/display/help/help-types.mjs +1 -1
- package/esm2020/lib/display/hierarchy/hierarchy-base.mjs +111 -0
- package/{esm2022 → esm2020}/lib/display/hierarchy/hierarchy-mocks.spec.mjs +53 -53
- package/esm2020/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +61 -0
- package/esm2020/lib/display/item-display/item-display.component.mjs +81 -0
- package/esm2020/lib/display/json-display/json-display.component.mjs +47 -0
- package/esm2020/lib/display/resizable/resizable-base.mjs +120 -0
- package/{esm2022 → esm2020}/lib/display/resizable/resizable.component.mjs +52 -52
- package/{esm2022 → esm2020}/lib/display/spinner/spinner.component.mjs +12 -12
- package/esm2020/lib/display/splash/splash.component.mjs +42 -0
- package/{esm2022 → esm2020}/lib/display/splash/splash.service.mjs +35 -35
- package/{esm2022 → esm2020}/lib/display/table/resizable-column.component.mjs +20 -20
- package/esm2020/lib/display/table/resizable-table.directive.mjs +227 -0
- package/esm2020/lib/display/table/searchable-table.component.mjs +342 -0
- package/{esm2022 → esm2020}/lib/display/table/table-detail-row.component.mjs +19 -19
- package/esm2020/lib/display/table/table-locked-column.component.mjs +58 -0
- package/{esm2022 → esm2020}/lib/display/table/table-master-header-row.component.mjs +14 -14
- package/esm2020/lib/display/table/table-master-row.component.mjs +163 -0
- package/esm2020/lib/display/table/table-pagination.component.mjs +155 -0
- package/esm2020/lib/display/table/table-selectable-row.component.mjs +235 -0
- package/esm2020/lib/display/table/table.component.mjs +249 -0
- package/esm2020/lib/display/tags/tag.mjs +18 -0
- package/esm2020/lib/display/tags/tags.component.mjs +77 -0
- package/esm2020/lib/display/toast/toast/toast.component.mjs +77 -0
- package/{esm2022 → esm2020}/lib/display/toast/toast-types.mjs +7 -7
- package/{esm2022 → esm2020}/lib/display/toast/toast.service.mjs +35 -35
- package/esm2020/lib/display/toast/toaster/toaster.component.mjs +114 -0
- package/{esm2022 → esm2020}/lib/display/tooltip/tooltip.component.mjs +28 -28
- package/{esm2022 → esm2020}/lib/display/tooltip/tooltip.service.mjs +78 -78
- package/esm2020/lib/display/tooltip-directive/tooltip.directive.mjs +173 -0
- package/{esm2022 → esm2020}/lib/display/tour/tour-types.mjs +33 -33
- package/esm2020/lib/display/tour/tour.component.mjs +398 -0
- package/esm2020/lib/display/tour/tour.service.mjs +75 -0
- package/esm2020/lib/display/tree/tree.component.mjs +135 -0
- package/esm2020/lib/display/view-overlay/view-overlay.component.mjs +58 -0
- package/esm2020/lib/shared/directives/click-area-for/click-area-for.directive.mjs +32 -0
- package/esm2020/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +111 -0
- package/esm2020/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.mjs +100 -0
- package/esm2020/lib/shared/directives/popup/popup-container.directive.mjs +163 -0
- package/esm2020/lib/shared/display/pipes/date-display.pipe.mjs +50 -0
- package/esm2020/lib/shared/display/pipes/highlight-text.pipe.mjs +30 -0
- package/esm2020/lib/shared/display/pipes/relative-date.pipe.mjs +62 -0
- package/esm2020/lib/shared/display/pipes/row-count.pipe.mjs +48 -0
- package/esm2020/lib/shared/display/pipes/time-display.pipe.mjs +41 -0
- package/esm2020/lib/shared/display.mjs +6 -0
- package/esm2020/lib/shared/form-group.helper.mjs +67 -0
- package/esm2020/lib/shared/json-helper.mjs +19 -0
- package/esm2020/lib/shared/lodash-helper.mjs +51 -0
- package/esm2020/lib/shared/page/page-base/page-base.component.mjs +387 -0
- package/{esm2022 → esm2020}/lib/shared/page/page-statuses.mjs +22 -22
- package/{esm2022 → esm2020}/lib/shared/page/page-title/page-title.component.mjs +23 -23
- package/esm2020/lib/shared/page/page-view/page-view.component.mjs +147 -0
- package/{esm2022 → esm2020}/lib/shared/testing/copy-button-base-test-injector-factory.spec.mjs +16 -16
- package/{esm2022 → esm2020}/lib/shared/testing/hierarchy-base-test-injector-factory.spec.mjs +16 -16
- package/{esm2022 → esm2020}/lib/shared/testing/page-base-component-test-helper.spec.mjs +37 -37
- package/esm2020/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs +98 -0
- package/{esm2022 → esm2020}/lib/shared/testing/public-mocks.spec.mjs +148 -148
- package/{esm2022 → esm2020}/lib/shared/testing/spy-factory.spec.mjs +39 -39
- package/{esm2022 → esm2020}/lib/shared/testing/translation-mocks.spec.mjs +56 -56
- package/{esm2022 → esm2020}/lib/shared/user-preference.service.mjs +17 -17
- package/esm2020/lib/shared/wizard/wizard-base/wizard-base.component.mjs +246 -0
- package/{esm2022 → esm2020}/lib/shared/wizard/wizard-buttons/wizard-buttons.component.mjs +68 -68
- package/{esm2022 → esm2020}/lib/shared/wizard/wizard-progress/wizard-progress.component.mjs +18 -18
- package/esm2020/public-api.mjs +117 -0
- package/fesm2015/energycap-components.mjs +13370 -0
- package/fesm2015/energycap-components.mjs.map +1 -0
- package/{fesm2022 → fesm2020}/energycap-components.mjs +12971 -11819
- package/fesm2020/energycap-components.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/components.module.d.ts +92 -91
- package/lib/controls/banner/banner.component.d.ts +50 -50
- package/lib/controls/button/button.component.d.ts +78 -78
- package/lib/controls/button/copy-button-base.directive.d.ts +20 -20
- package/lib/controls/button/copy-button.directive.d.ts +14 -14
- package/lib/controls/button/copy-table-button.directive.d.ts +19 -19
- package/lib/controls/calendar/calendar-item.component.d.ts +22 -17
- package/lib/controls/calendar/calendar.component.d.ts +52 -54
- package/lib/controls/calendar/calendar.types.d.ts +11 -7
- package/lib/controls/checkbox/checkbox.component.d.ts +65 -65
- package/lib/controls/collapsible-toggle/collapsible-toggle.component.d.ts +25 -25
- package/lib/controls/combobox/combobox.component.d.ts +418 -418
- package/lib/controls/date-input/date-input-selection-strategies/date-input-selection-strategy-base.d.ts +42 -0
- package/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.d.ts +21 -0
- package/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.d.ts +21 -0
- package/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.d.ts +21 -0
- package/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.d.ts +18 -0
- package/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.d.ts +18 -0
- package/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.d.ts +21 -0
- package/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.d.ts +20 -0
- package/lib/controls/date-input/date-input.component.d.ts +115 -80
- package/lib/controls/date-input/date-input.types.d.ts +62 -0
- package/lib/controls/dropdown/dropdown.component.d.ts +161 -161
- package/lib/controls/file-upload/file-upload.component.d.ts +124 -124
- package/lib/controls/form-control/form-control.component.d.ts +28 -30
- package/lib/controls/form-control-base.d.ts +110 -110
- package/lib/controls/form-control-label/form-control-label.component.d.ts +73 -73
- package/lib/controls/form-group/form-group.component.d.ts +105 -105
- package/lib/controls/help-popover/help-popover.component.d.ts +11 -11
- package/lib/controls/item-picker/item-picker.component.d.ts +164 -164
- package/lib/controls/link-button/link-button.component.d.ts +5 -5
- package/lib/controls/menu/menu.component.d.ts +255 -255
- package/lib/controls/navigation/link-item.d.ts +32 -32
- package/lib/controls/navigation/nav-group.d.ts +18 -18
- package/lib/controls/navigation/nav-item-active.directive.d.ts +42 -42
- package/lib/controls/navigation/nav-item.d.ts +31 -31
- package/lib/controls/numericbox/numericbox.component.d.ts +148 -148
- package/lib/controls/popover/popover.component.d.ts +51 -51
- package/lib/controls/radio-button/radio-button-option.d.ts +19 -19
- package/lib/controls/radio-button/radio-button.component.d.ts +53 -53
- package/lib/controls/select/select.component.d.ts +44 -44
- package/lib/controls/tabs/tabs.component.d.ts +30 -30
- package/lib/controls/textbox/textbox.component.d.ts +107 -107
- package/lib/core/cache.service.d.ts +33 -33
- package/lib/core/custom-validators.d.ts +20 -20
- package/lib/core/date-time-helper.d.ts +101 -101
- package/lib/core/error.service.d.ts +20 -20
- package/lib/core/router-helper.service.d.ts +48 -48
- package/lib/core/scroll.service.d.ts +36 -36
- package/lib/core/telemetry-tracker.service.d.ts +13 -13
- package/lib/core/telemetry.service.d.ts +31 -31
- package/lib/core/validation-message.service.d.ts +26 -26
- package/lib/core/validation-patterns.d.ts +22 -22
- package/lib/core/window.service.d.ts +116 -116
- package/lib/display/app-bar/app-bar.component.d.ts +20 -20
- package/lib/display/avatar/avatar.component.d.ts +35 -35
- package/lib/display/avatar/avatar.service.d.ts +24 -24
- package/lib/display/confirm/confirm.component.d.ts +123 -123
- package/lib/display/dialog/dialog-content.d.ts +19 -19
- package/lib/display/dialog/dialog-group/dialog-group.component.d.ts +32 -32
- package/lib/display/dialog/dialog-types.d.ts +130 -130
- package/lib/display/dialog/dialog.component.d.ts +120 -120
- package/lib/display/dialog/dialog.service.d.ts +48 -48
- package/lib/display/help/help-types.d.ts +33 -33
- package/lib/display/hierarchy/hierarchy-base.d.ts +97 -97
- package/lib/display/hierarchy/hierarchy-mocks.spec.d.ts +53 -53
- package/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.d.ts +34 -34
- package/lib/display/item-display/item-display.component.d.ts +43 -43
- package/lib/display/json-display/json-display.component.d.ts +16 -16
- package/lib/display/resizable/resizable-base.d.ts +67 -67
- package/lib/display/resizable/resizable.component.d.ts +31 -31
- package/lib/display/spinner/spinner.component.d.ts +5 -5
- package/lib/display/splash/splash.component.d.ts +16 -16
- package/lib/display/splash/splash.service.d.ts +22 -22
- package/lib/display/table/resizable-column.component.d.ts +10 -10
- package/lib/display/table/resizable-table.directive.d.ts +93 -93
- package/lib/display/table/searchable-table.component.d.ts +206 -206
- package/lib/display/table/table-detail-row.component.d.ts +8 -8
- package/lib/display/table/table-locked-column.component.d.ts +20 -20
- package/lib/display/table/table-master-header-row.component.d.ts +9 -9
- package/lib/display/table/table-master-row.component.d.ts +113 -113
- package/lib/display/table/table-pagination.component.d.ts +91 -91
- package/lib/display/table/table-selectable-row.component.d.ts +102 -102
- package/lib/display/table/table.component.d.ts +121 -121
- package/lib/display/tags/tag.d.ts +18 -18
- package/lib/display/tags/tags.component.d.ts +48 -48
- package/lib/display/toast/toast/toast.component.d.ts +23 -23
- package/lib/display/toast/toast-types.d.ts +24 -24
- package/lib/display/toast/toast.service.d.ts +20 -20
- package/lib/display/toast/toaster/toaster.component.d.ts +35 -35
- package/lib/display/tooltip/tooltip.component.d.ts +70 -70
- package/lib/display/tooltip/tooltip.service.d.ts +16 -16
- package/lib/display/tooltip-directive/tooltip.directive.d.ts +44 -44
- package/lib/display/tour/tour-types.d.ts +70 -70
- package/lib/display/tour/tour.component.d.ts +147 -147
- package/lib/display/tour/tour.service.d.ts +38 -38
- package/lib/display/tree/tree.component.d.ts +75 -75
- package/lib/display/view-overlay/view-overlay.component.d.ts +38 -38
- package/lib/shared/directives/click-area-for/click-area-for.directive.d.ts +14 -14
- package/lib/shared/directives/if-viewport-width/if-viewport-width.directive.d.ts +60 -60
- package/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.d.ts +23 -0
- package/lib/shared/directives/popup/popup-container.directive.d.ts +101 -101
- package/lib/shared/display/pipes/date-display.pipe.d.ts +21 -21
- package/lib/shared/display/pipes/highlight-text.pipe.d.ts +9 -9
- package/lib/shared/display/pipes/relative-date.pipe.d.ts +36 -36
- package/lib/shared/display/pipes/row-count.pipe.d.ts +23 -23
- package/lib/shared/display/pipes/time-display.pipe.d.ts +18 -18
- package/lib/shared/display.d.ts +42 -42
- package/lib/shared/form-group.helper.d.ts +31 -31
- package/lib/shared/json-helper.d.ts +7 -7
- package/lib/shared/lodash-helper.d.ts +18 -18
- package/lib/shared/page/page-base/page-base.component.d.ts +259 -259
- package/lib/shared/page/page-statuses.d.ts +13 -13
- package/lib/shared/page/page-title/page-title.component.d.ts +9 -9
- package/lib/shared/page/page-view/page-view.component.d.ts +102 -102
- package/lib/shared/testing/copy-button-base-test-injector-factory.spec.d.ts +4 -4
- package/lib/shared/testing/hierarchy-base-test-injector-factory.spec.d.ts +4 -4
- package/lib/shared/testing/page-base-component-test-helper.spec.d.ts +30 -30
- package/lib/shared/testing/page-base-component-test-injector-factory.spec.d.ts +28 -28
- package/lib/shared/testing/public-mocks.spec.d.ts +90 -90
- package/lib/shared/testing/spy-factory.spec.d.ts +27 -27
- package/lib/shared/testing/translation-mocks.spec.d.ts +30 -30
- package/lib/shared/user-preference.service.d.ts +13 -13
- package/lib/shared/wizard/wizard-base/wizard-base.component.d.ts +134 -134
- package/lib/shared/wizard/wizard-buttons/wizard-buttons.component.d.ts +27 -27
- package/lib/shared/wizard/wizard-progress/wizard-progress.component.d.ts +10 -10
- package/package.json +18 -12
- package/public-api.d.ts +113 -111
- package/schematics/rxjs-7-upgrade/index.d.ts +3 -3
- package/schematics/rxjs-7-upgrade/index.js +67 -67
- package/schematics/rxjs-7-upgrade/index.js.map +1 -1
- package/schematics/rxjs-7-upgrade/schema.d.ts +4 -4
- package/schematics/rxjs-7-upgrade/schema.js +2 -2
- package/schematics/utilities/typescript.d.ts +7 -7
- package/schematics/utilities/typescript.js +41 -41
- package/schematics/utilities/workspace.d.ts +8 -8
- package/schematics/utilities/workspace.js +71 -71
- package/schematics/utilities/workspace.js.map +1 -1
- package/src/assets/locales/en_US.json +9 -1
- package/esm2022/lib/components.module.mjs +0 -418
- package/esm2022/lib/controls/banner/banner.component.mjs +0 -109
- package/esm2022/lib/controls/button/button.component.mjs +0 -106
- package/esm2022/lib/controls/button/copy-button-base.directive.mjs +0 -67
- package/esm2022/lib/controls/button/copy-table-button.directive.mjs +0 -43
- package/esm2022/lib/controls/calendar/calendar-item.component.mjs +0 -59
- package/esm2022/lib/controls/calendar/calendar.component.mjs +0 -200
- package/esm2022/lib/controls/calendar/calendar.types.mjs +0 -4
- package/esm2022/lib/controls/checkbox/checkbox.component.mjs +0 -140
- package/esm2022/lib/controls/combobox/combobox.component.mjs +0 -879
- package/esm2022/lib/controls/date-input/date-input.component.mjs +0 -256
- package/esm2022/lib/controls/dropdown/dropdown.component.mjs +0 -243
- package/esm2022/lib/controls/file-upload/file-upload.component.mjs +0 -261
- package/esm2022/lib/controls/form-control/form-control.component.mjs +0 -104
- package/esm2022/lib/controls/form-control-base.mjs +0 -151
- package/esm2022/lib/controls/form-control-label/form-control-label.component.mjs +0 -136
- package/esm2022/lib/controls/form-group/form-group.component.mjs +0 -261
- package/esm2022/lib/controls/item-picker/item-picker.component.mjs +0 -329
- package/esm2022/lib/controls/menu/menu.component.mjs +0 -485
- package/esm2022/lib/controls/navigation/nav-group.mjs +0 -39
- package/esm2022/lib/controls/navigation/nav-item-active.directive.mjs +0 -92
- package/esm2022/lib/controls/numericbox/numericbox.component.mjs +0 -372
- package/esm2022/lib/controls/popover/popover.component.mjs +0 -117
- package/esm2022/lib/controls/radio-button/radio-button.component.mjs +0 -82
- package/esm2022/lib/controls/select/select.component.mjs +0 -88
- package/esm2022/lib/controls/tabs/tabs.component.mjs +0 -47
- package/esm2022/lib/controls/textbox/textbox.component.mjs +0 -155
- package/esm2022/lib/core/cache.service.mjs +0 -105
- package/esm2022/lib/core/custom-validators.mjs +0 -29
- package/esm2022/lib/core/date-time-helper.mjs +0 -220
- package/esm2022/lib/core/error.service.mjs +0 -61
- package/esm2022/lib/core/router-helper.service.mjs +0 -111
- package/esm2022/lib/core/scroll.service.mjs +0 -89
- package/esm2022/lib/core/validation-message.service.mjs +0 -185
- package/esm2022/lib/core/window.service.mjs +0 -186
- package/esm2022/lib/display/app-bar/app-bar.component.mjs +0 -46
- package/esm2022/lib/display/avatar/avatar.component.mjs +0 -67
- package/esm2022/lib/display/avatar/avatar.service.mjs +0 -64
- package/esm2022/lib/display/confirm/confirm.component.mjs +0 -168
- package/esm2022/lib/display/dialog/dialog-group/dialog-group.component.mjs +0 -63
- package/esm2022/lib/display/dialog/dialog.component.mjs +0 -281
- package/esm2022/lib/display/hierarchy/hierarchy-base.mjs +0 -111
- package/esm2022/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +0 -61
- package/esm2022/lib/display/item-display/item-display.component.mjs +0 -81
- package/esm2022/lib/display/json-display/json-display.component.mjs +0 -47
- package/esm2022/lib/display/resizable/resizable-base.mjs +0 -120
- package/esm2022/lib/display/splash/splash.component.mjs +0 -42
- package/esm2022/lib/display/table/resizable-table.directive.mjs +0 -227
- package/esm2022/lib/display/table/searchable-table.component.mjs +0 -342
- package/esm2022/lib/display/table/table-locked-column.component.mjs +0 -58
- package/esm2022/lib/display/table/table-master-row.component.mjs +0 -163
- package/esm2022/lib/display/table/table-pagination.component.mjs +0 -155
- package/esm2022/lib/display/table/table-selectable-row.component.mjs +0 -235
- package/esm2022/lib/display/table/table.component.mjs +0 -249
- package/esm2022/lib/display/tags/tag.mjs +0 -18
- package/esm2022/lib/display/tags/tags.component.mjs +0 -77
- package/esm2022/lib/display/toast/toast/toast.component.mjs +0 -77
- package/esm2022/lib/display/toast/toaster/toaster.component.mjs +0 -114
- package/esm2022/lib/display/tooltip-directive/tooltip.directive.mjs +0 -173
- package/esm2022/lib/display/tour/tour.component.mjs +0 -398
- package/esm2022/lib/display/tour/tour.service.mjs +0 -75
- package/esm2022/lib/display/tree/tree.component.mjs +0 -135
- package/esm2022/lib/display/view-overlay/view-overlay.component.mjs +0 -58
- package/esm2022/lib/shared/directives/click-area-for/click-area-for.directive.mjs +0 -32
- package/esm2022/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +0 -111
- package/esm2022/lib/shared/directives/popup/popup-container.directive.mjs +0 -166
- package/esm2022/lib/shared/display/pipes/date-display.pipe.mjs +0 -50
- package/esm2022/lib/shared/display/pipes/highlight-text.pipe.mjs +0 -30
- package/esm2022/lib/shared/display/pipes/relative-date.pipe.mjs +0 -62
- package/esm2022/lib/shared/display/pipes/row-count.pipe.mjs +0 -48
- package/esm2022/lib/shared/display/pipes/time-display.pipe.mjs +0 -41
- package/esm2022/lib/shared/display.mjs +0 -6
- package/esm2022/lib/shared/form-group.helper.mjs +0 -67
- package/esm2022/lib/shared/json-helper.mjs +0 -19
- package/esm2022/lib/shared/lodash-helper.mjs +0 -52
- package/esm2022/lib/shared/page/page-base/page-base.component.mjs +0 -387
- package/esm2022/lib/shared/page/page-view/page-view.component.mjs +0 -147
- package/esm2022/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs +0 -98
- package/esm2022/lib/shared/wizard/wizard-base/wizard-base.component.mjs +0 -246
- package/esm2022/public-api.mjs +0 -115
- package/fesm2022/energycap-components.mjs.map +0 -1
@@ -0,0 +1,261 @@
|
|
1
|
+
import { Component, ElementRef, Input, ViewChild } from '@angular/core';
|
2
|
+
import { FormControl, FormGroup } from '@angular/forms';
|
3
|
+
import { filter, take, takeUntil } from 'rxjs/operators';
|
4
|
+
import { FormControlBase } from '../form-control-base';
|
5
|
+
import { lastValueFrom } from 'rxjs';
|
6
|
+
import * as i0 from "@angular/core";
|
7
|
+
import * as i1 from "../../core/validation-message.service";
|
8
|
+
import * as i2 from "../../shared/form-group.helper";
|
9
|
+
import * as i3 from "@angular/common";
|
10
|
+
import * as i4 from "@angular/forms";
|
11
|
+
import * as i5 from "../button/button.component";
|
12
|
+
import * as i6 from "../form-control/form-control.component";
|
13
|
+
import * as i7 from "../form-group/form-group.component";
|
14
|
+
import * as i8 from "@ngx-translate/core";
|
15
|
+
export const FileTypeExtensions = {
|
16
|
+
zip: ['.zip'],
|
17
|
+
excel: ['.xls', '.xlsx']
|
18
|
+
};
|
19
|
+
export class FileUploadComponent extends FormControlBase {
|
20
|
+
// static class to create the form group from a parent component
|
21
|
+
static getFormModel(validators, disabled = false,
|
22
|
+
/** Any validators required to make sure the selected file is valid. It is recommended that you use `FileUploadComponent.getFileValidator` to help construct the validator(s). NOTE: This currently only works when multiSelect is false. */
|
23
|
+
fileValidators) {
|
24
|
+
let formGroup = new FormGroup({
|
25
|
+
file: new FormControl({ value: null, disabled: disabled }, { validators: validators, asyncValidators: fileValidators }),
|
26
|
+
name: new FormControl({ value: null, disabled: disabled }, validators),
|
27
|
+
base64FileString: new FormControl(null),
|
28
|
+
uploadResult: new FormControl(null),
|
29
|
+
});
|
30
|
+
if (disabled) {
|
31
|
+
formGroup.disable();
|
32
|
+
}
|
33
|
+
return formGroup;
|
34
|
+
}
|
35
|
+
/**
|
36
|
+
* Helper function that returns an async validator to be used with the file upload control.
|
37
|
+
* This is useful for when the file needs to be validated before it can be uploaded.
|
38
|
+
*
|
39
|
+
* @param callback The callback function that will be called to validate the file. Parameters for the callback are the file and the base64 string for the file.
|
40
|
+
* base64 is null if the fileOutput input on the FileUploadComponent is set to raw. Using fileOutput set to base64 is recommended for images.
|
41
|
+
*/
|
42
|
+
static getFileValidator(callback) {
|
43
|
+
return async (control) => {
|
44
|
+
if (control.value && control.parent) {
|
45
|
+
let file = control.value;
|
46
|
+
// For images, we need the base64 string to validate image dimensions
|
47
|
+
let base64 = control.parent.get('base64FileString')?.value;
|
48
|
+
return await callback(file, base64);
|
49
|
+
}
|
50
|
+
return null;
|
51
|
+
};
|
52
|
+
}
|
53
|
+
constructor(validationMessageService, formGroupHelper) {
|
54
|
+
super(validationMessageService, formGroupHelper);
|
55
|
+
this.validationMessageService = validationMessageService;
|
56
|
+
this.formGroupHelper = formGroupHelper;
|
57
|
+
/**
|
58
|
+
* The value of the textbox input's placeholder
|
59
|
+
*/
|
60
|
+
this.placeholder = "Choose file...";
|
61
|
+
/**
|
62
|
+
* File output, determines which properties are supplied on the formModel
|
63
|
+
*/
|
64
|
+
this.fileOutput = 'base64';
|
65
|
+
/**
|
66
|
+
* Optional display type that controls whether the file input textbox is displayed or
|
67
|
+
* simply a button the user clicks to launch the OS file storage dialog.
|
68
|
+
* Default: file
|
69
|
+
*/
|
70
|
+
this.displayType = 'file';
|
71
|
+
/**
|
72
|
+
* When display type is set to button this property will control the button type
|
73
|
+
*/
|
74
|
+
this.buttonType = 'primary';
|
75
|
+
/**
|
76
|
+
* Optional property to control whether the user can select multiple files
|
77
|
+
*/
|
78
|
+
this.multiSelect = false;
|
79
|
+
/**
|
80
|
+
* When true, the onFileSelected callback will not be called if the form is invalid.
|
81
|
+
* This is useful when the file needs to be validated before it can be uploaded.
|
82
|
+
* For server-side validation, leave this as false and use the onFileSelected callback
|
83
|
+
* to upload the file and handle any errors thrown by the API.
|
84
|
+
*/
|
85
|
+
this.validateBeforeUpload = false;
|
86
|
+
}
|
87
|
+
ngOnChanges(changes) {
|
88
|
+
super.ngOnChanges(changes);
|
89
|
+
this.updateFileTypeAccept();
|
90
|
+
}
|
91
|
+
ngOnInit() {
|
92
|
+
super.ngOnInit();
|
93
|
+
// Watch for name to change, if the value is cleared we will clear the other
|
94
|
+
// supporting model properties. The name can be cleared by the user manually or via
|
95
|
+
// the clear button
|
96
|
+
this.formModel?.get('name')?.valueChanges.pipe(takeUntil(this.componentDestroyed)).subscribe(value => {
|
97
|
+
if (!value) {
|
98
|
+
this.formModel.patchValue({
|
99
|
+
file: null,
|
100
|
+
base64FileString: null,
|
101
|
+
uploadResult: null
|
102
|
+
});
|
103
|
+
}
|
104
|
+
});
|
105
|
+
// Sync errors from the file control to the name control whenever the file control status changes.
|
106
|
+
// The name control is the only one displayed to the user so we need to show the errors there.
|
107
|
+
this.formModel.get('file')?.statusChanges.pipe(takeUntil(this.componentDestroyed)).subscribe(() => {
|
108
|
+
const errors = this.formModel.get('file')?.errors ?? null;
|
109
|
+
this.formModel.get('name')?.setErrors(errors);
|
110
|
+
});
|
111
|
+
}
|
112
|
+
async fileChange(files) {
|
113
|
+
if (this.multiSelect) {
|
114
|
+
this.handleMultipleFiles(files);
|
115
|
+
}
|
116
|
+
else {
|
117
|
+
const file = files.item(0);
|
118
|
+
if (file) {
|
119
|
+
await this.readFile(file);
|
120
|
+
}
|
121
|
+
}
|
122
|
+
// Clear the file inputs value, this will allow the user to pick the same filenames again
|
123
|
+
// and cause fileChange to re-trigger.
|
124
|
+
if (this.fileInput) {
|
125
|
+
this.fileInput.nativeElement.value = '';
|
126
|
+
}
|
127
|
+
}
|
128
|
+
/**
|
129
|
+
* Checks the file type and updates the file type accept property. This is what determines the file
|
130
|
+
* type choices that the user will be limited to in the file browse dialog
|
131
|
+
*/
|
132
|
+
updateFileTypeAccept() {
|
133
|
+
if (this.fileType) {
|
134
|
+
if (this.fileType !== "custom") {
|
135
|
+
this.fileTypeAccept = FileTypeExtensions[this.fileType].join(",");
|
136
|
+
}
|
137
|
+
else {
|
138
|
+
if (this.customExtensions) {
|
139
|
+
this.fileTypeAccept = this.customExtensions.join(",");
|
140
|
+
}
|
141
|
+
}
|
142
|
+
}
|
143
|
+
}
|
144
|
+
/**
|
145
|
+
* Take a file that was selected by the user and process/patch our form model
|
146
|
+
* If the host component requires an action to occur with the file prior to the patch it will call
|
147
|
+
* and wait for it to return.
|
148
|
+
* @param file
|
149
|
+
* @param base64FileString Optional: Will have a value provided if the fileOutput is set to base64
|
150
|
+
*/
|
151
|
+
async processFile(file, base64FileString = null) {
|
152
|
+
// If we are validating before upload we need to patch the file to the form to trigger validation before calling onFileSelected
|
153
|
+
if (this.validateBeforeUpload) {
|
154
|
+
await this.validateFile(file, base64FileString);
|
155
|
+
}
|
156
|
+
if (this.onFileSelected) {
|
157
|
+
// Only call the onFileSelected callback to upload the file if the form group is valid or we are not validating before upload
|
158
|
+
if (!this.validateBeforeUpload || this.formModel.valid) {
|
159
|
+
try {
|
160
|
+
let result = await this.onFileSelected(file);
|
161
|
+
// If we did validation, just patch the form result because the file is already in the form
|
162
|
+
if (this.validateBeforeUpload) {
|
163
|
+
this.formModel.patchValue({ uploadResult: result ?? null });
|
164
|
+
}
|
165
|
+
else {
|
166
|
+
this.formModel.patchValue({ base64FileString, file, name: file.name, uploadResult: result ?? null });
|
167
|
+
}
|
168
|
+
}
|
169
|
+
catch (e) {
|
170
|
+
// Bummer, we're not going to do anything about it though.
|
171
|
+
// We are not patching any of the result so any existing information remains
|
172
|
+
}
|
173
|
+
}
|
174
|
+
// If we don't have an onFileSelected callback we just patch the form model.
|
175
|
+
// In the case of pre-upload validation the form already has the file so we don't want to patch again.
|
176
|
+
}
|
177
|
+
else if (!this.validateBeforeUpload) {
|
178
|
+
this.formModel.patchValue({ base64FileString, file, name: file.name, uploadResult: null });
|
179
|
+
}
|
180
|
+
}
|
181
|
+
/** Patches the form with the selected file in order to trigger control validation */
|
182
|
+
async validateFile(file, base64FileString = null) {
|
183
|
+
// Patch the file first to trigger any file validators
|
184
|
+
this.formModel.patchValue({ base64FileString, file, name: file.name, uploadResult: null });
|
185
|
+
// If we have any async validators pending we need to wait for them to complete before we know if the form is valid
|
186
|
+
if (this.formModel.pending) {
|
187
|
+
await lastValueFrom(this.formModel.statusChanges.pipe(filter(status => status !== 'PENDING'), take(1), takeUntil(this.componentDestroyed)));
|
188
|
+
}
|
189
|
+
// Mark the name control as touched so that any validation errors will show
|
190
|
+
this.formModel.controls.name.markAsTouched();
|
191
|
+
}
|
192
|
+
/**
|
193
|
+
* Based on the fileOutput return whether this component is expected to deliver a base64 output
|
194
|
+
* @returns
|
195
|
+
*/
|
196
|
+
isBase64FileOutput() {
|
197
|
+
return this.fileOutput === 'base64';
|
198
|
+
}
|
199
|
+
/** Maps the files to an array of File objects and sends them along
|
200
|
+
* to the derived onMultipleFileSelected method in the hosting component
|
201
|
+
*/
|
202
|
+
async handleMultipleFiles(files) {
|
203
|
+
const filesArray = Array.from(files);
|
204
|
+
if (this.onMultipleFilesSelected) {
|
205
|
+
try {
|
206
|
+
let result = await this.onMultipleFilesSelected(filesArray);
|
207
|
+
}
|
208
|
+
catch (e) {
|
209
|
+
console.log('error: ', e);
|
210
|
+
}
|
211
|
+
}
|
212
|
+
}
|
213
|
+
;
|
214
|
+
async readFile(file) {
|
215
|
+
const reader = new FileReader();
|
216
|
+
reader.onloadend = async (e) => {
|
217
|
+
let base64FileString = reader?.result?.toString().split(",")[1];
|
218
|
+
await this.processFile(file, base64FileString);
|
219
|
+
};
|
220
|
+
if (this.isBase64FileOutput()) {
|
221
|
+
reader.readAsDataURL(file);
|
222
|
+
}
|
223
|
+
else {
|
224
|
+
await this.processFile(file);
|
225
|
+
}
|
226
|
+
}
|
227
|
+
}
|
228
|
+
FileUploadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FileUploadComponent, deps: [{ token: i1.ValidationMessageService }, { token: i2.FormGroupHelper }], target: i0.ɵɵFactoryTarget.Component });
|
229
|
+
FileUploadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: FileUploadComponent, selector: "ec-file-upload", inputs: { formModel: "formModel", placeholder: "placeholder", fileType: "fileType", fileOutput: "fileOutput", customExtensions: "customExtensions", onFileSelected: "onFileSelected", onMultipleFilesSelected: "onMultipleFilesSelected", displayType: "displayType", buttonLabel: "buttonLabel", buttonType: "buttonType", multiSelect: "multiSelect", validateBeforeUpload: "validateBeforeUpload" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ec-form-group [label]=\"label\"\r\n [formGroup]=\"formModel\"\r\n [helpPopover]=\"helpPopover\"\r\n [helpPopoverPosition]=\"helpPopoverPosition\"\r\n class=\"mb-0\">\r\n <div class=\"d-flex control-group\">\r\n <div class=\"d-flex flex-grow position-relative\">\r\n <input #fileInput\r\n id=\"{{inputId}}_input\"\r\n type=\"file\"\r\n tabindex=\"-1\"\r\n [attr.accept]=\"fileTypeAccept\"\r\n (change)=\"fileChange($event.target.files)\"\r\n [class.has-value]=\"displayType === 'file' ? formModel?.get('name').value : undefined\"\r\n [attr.multiple]=\"multiSelect ? 'multiple' : undefined\">\r\n <ec-form-control *ngIf=\"displayType === 'file'\"\r\n id=\"{{inputId}}_formControl\"\r\n class=\"text-truncate\"\r\n [required]=\"required\"\r\n [pending]=\"pending || formModel?.pending\">\r\n <input id=\"{{inputId}}_name\"\r\n [formControl]=\"formModel?.get('name')\"\r\n type=\"text\"\r\n [placeholder]=\"placeholder\"\r\n [tabindex]=\"-1\">\r\n </ec-form-control>\r\n </div>\r\n <ec-button *ngIf=\"displayType === 'file'\"\r\n #browseBtn\r\n id=\"{{inputId}}_browseBtn\"\r\n (clicked)=\"fileInput.click()\"\r\n type=\"secondary\"\r\n [tabindex]=\"tabindex\"\r\n [disabled]=\"formModel?.get('name').disabled\"\r\n label=\"Browse\"\r\n [autofocus]=\"autofocus\">\r\n </ec-button>\r\n </div>\r\n <ec-button *ngIf=\"displayType === 'button'\"\r\n id=\"{{inputId}}_btn\"\r\n [pending]=\"pending\"\r\n [type]=\"buttonType\"\r\n [label]=\"buttonLabel ?? 'Browse_TC' | translate\"\r\n (clicked)=\"fileInput.click()\"\r\n style=\"width: 100%;\">\r\n </ec-button>\r\n</ec-form-group>", styles: [":host{display:block;margin-bottom:1rem}ec-form-control{margin-bottom:0}ec-form-control ::ng-deep>.ec-focus-ring{display:none!important}input[type=file]{opacity:0;display:block;position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;cursor:pointer}input[type=file].has-value{width:calc(100% - 1.5rem)}ec-button{--ec-button-border-color-secondary: var(--ec-form-control-border-color);--ec-button-color-icon-secondary: var(--ec-color-icon)}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.ButtonComponent, selector: "ec-button", inputs: ["id", "disabled", "icon", "label", "badge", "tabindex", "type", "pending", "pendingIcon", "customTemplate", "isSubmit", "autofocus"], outputs: ["clicked"] }, { kind: "component", type: i6.FormControlComponent, selector: "ec-form-control", inputs: ["id", "icon", "actionIcon", "showClear", "formModel", "autofocus", "pending", "required", "readonly"], outputs: ["actionClicked"] }, { kind: "component", type: i7.FormGroupComponent, selector: "ec-form-group", inputs: ["id", "label", "formGroup", "labelPosition", "overrideValidationError", "hideValidationMessage", "helpPopover", "helpPopoverPosition"] }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }] });
|
230
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FileUploadComponent, decorators: [{
|
231
|
+
type: Component,
|
232
|
+
args: [{ selector: "ec-file-upload", template: "<ec-form-group [label]=\"label\"\r\n [formGroup]=\"formModel\"\r\n [helpPopover]=\"helpPopover\"\r\n [helpPopoverPosition]=\"helpPopoverPosition\"\r\n class=\"mb-0\">\r\n <div class=\"d-flex control-group\">\r\n <div class=\"d-flex flex-grow position-relative\">\r\n <input #fileInput\r\n id=\"{{inputId}}_input\"\r\n type=\"file\"\r\n tabindex=\"-1\"\r\n [attr.accept]=\"fileTypeAccept\"\r\n (change)=\"fileChange($event.target.files)\"\r\n [class.has-value]=\"displayType === 'file' ? formModel?.get('name').value : undefined\"\r\n [attr.multiple]=\"multiSelect ? 'multiple' : undefined\">\r\n <ec-form-control *ngIf=\"displayType === 'file'\"\r\n id=\"{{inputId}}_formControl\"\r\n class=\"text-truncate\"\r\n [required]=\"required\"\r\n [pending]=\"pending || formModel?.pending\">\r\n <input id=\"{{inputId}}_name\"\r\n [formControl]=\"formModel?.get('name')\"\r\n type=\"text\"\r\n [placeholder]=\"placeholder\"\r\n [tabindex]=\"-1\">\r\n </ec-form-control>\r\n </div>\r\n <ec-button *ngIf=\"displayType === 'file'\"\r\n #browseBtn\r\n id=\"{{inputId}}_browseBtn\"\r\n (clicked)=\"fileInput.click()\"\r\n type=\"secondary\"\r\n [tabindex]=\"tabindex\"\r\n [disabled]=\"formModel?.get('name').disabled\"\r\n label=\"Browse\"\r\n [autofocus]=\"autofocus\">\r\n </ec-button>\r\n </div>\r\n <ec-button *ngIf=\"displayType === 'button'\"\r\n id=\"{{inputId}}_btn\"\r\n [pending]=\"pending\"\r\n [type]=\"buttonType\"\r\n [label]=\"buttonLabel ?? 'Browse_TC' | translate\"\r\n (clicked)=\"fileInput.click()\"\r\n style=\"width: 100%;\">\r\n </ec-button>\r\n</ec-form-group>", styles: [":host{display:block;margin-bottom:1rem}ec-form-control{margin-bottom:0}ec-form-control ::ng-deep>.ec-focus-ring{display:none!important}input[type=file]{opacity:0;display:block;position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;cursor:pointer}input[type=file].has-value{width:calc(100% - 1.5rem)}ec-button{--ec-button-border-color-secondary: var(--ec-form-control-border-color);--ec-button-color-icon-secondary: var(--ec-color-icon)}\n"] }]
|
233
|
+
}], ctorParameters: function () { return [{ type: i1.ValidationMessageService }, { type: i2.FormGroupHelper }]; }, propDecorators: { formModel: [{
|
234
|
+
type: Input
|
235
|
+
}], placeholder: [{
|
236
|
+
type: Input
|
237
|
+
}], fileType: [{
|
238
|
+
type: Input
|
239
|
+
}], fileOutput: [{
|
240
|
+
type: Input
|
241
|
+
}], customExtensions: [{
|
242
|
+
type: Input
|
243
|
+
}], onFileSelected: [{
|
244
|
+
type: Input
|
245
|
+
}], onMultipleFilesSelected: [{
|
246
|
+
type: Input
|
247
|
+
}], displayType: [{
|
248
|
+
type: Input
|
249
|
+
}], buttonLabel: [{
|
250
|
+
type: Input
|
251
|
+
}], buttonType: [{
|
252
|
+
type: Input
|
253
|
+
}], multiSelect: [{
|
254
|
+
type: Input
|
255
|
+
}], validateBeforeUpload: [{
|
256
|
+
type: Input
|
257
|
+
}], fileInput: [{
|
258
|
+
type: ViewChild,
|
259
|
+
args: ["fileInput", { read: ElementRef, static: true }]
|
260
|
+
}] } });
|
261
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQW9DLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRyxPQUFPLEVBQXFDLFdBQVcsRUFBRSxTQUFTLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7OztBQUtyQyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRztJQUNoQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFDYixLQUFLLEVBQUUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDO0NBQ3pCLENBQUM7QUFvQkYsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGVBQWU7SUFFdEQsZ0VBQWdFO0lBQ3pELE1BQU0sQ0FBQyxZQUFZLENBQ3hCLFVBQXlCLEVBQ3pCLFdBQW9CLEtBQUs7SUFDekIsNE9BQTRPO0lBQzVPLGNBQXNEO1FBRXRELElBQUksU0FBUyxHQUFHLElBQUksU0FBUyxDQUFzQjtZQUNqRCxJQUFJLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFFB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QUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQXN5bmNWYWxpZGF0b3JGbiwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGZpbHRlciwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3ZhbGlkYXRpb24tbWVzc2FnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwSGVscGVyIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Zvcm0tZ3JvdXAuaGVscGVyJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2xCYXNlIH0gZnJvbSAnLi4vZm9ybS1jb250cm9sLWJhc2UnO1xyXG5pbXBvcnQgeyBsYXN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcblxyXG5leHBvcnQgdHlwZSBGaWxlVHlwZSA9ICd6aXAnIHwgJ2V4Y2VsJyB8ICdjdXN0b20nO1xyXG5leHBvcnQgdHlwZSBGaWxlT3V0cHV0ID0gJ3JhdycgfCAnYmFzZTY0JztcclxuXHJcbmV4cG9ydCBjb25zdCBGaWxlVHlwZUV4dGVuc2lvbnMgPSB7XHJcbiAgemlwOiBbJy56aXAnXSxcclxuICBleGNlbDogWycueGxzJywgJy54bHN4J11cclxufTtcclxuXHJcbmV4cG9ydCB0eXBlIEZpbGVVcGxvYWRGb3JtR3JvdXAgPSB7XHJcbiAgZmlsZTogRm9ybUNvbnRyb2w8RmlsZSB8IG51bGw+O1xyXG4gIG5hbWU6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xyXG4gIGJhc2U2NEZpbGVTdHJpbmc6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xyXG4gIHVwbG9hZFJlc3VsdDogRm9ybUNvbnRyb2w8YW55PjtcclxufTtcclxuXHJcbmV4cG9ydCB0eXBlIEludmFsaWRGaWxlRXJyb3IgPSB7XHJcbiAgaW52YWxpZEZpbGU6IHRydWU7XHJcbn07XHJcblxyXG5leHBvcnQgdHlwZSBGaWxlVmFsaWRhdG9yQ2FsbGJhY2sgPSAoZmlsZTogRmlsZSB8IG51bGwgfCB1bmRlZmluZWQsIGJhc2U2NDogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkgPT4gUHJvbWlzZTxJbnZhbGlkRmlsZUVycm9yIHwgbnVsbD47XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJlYy1maWxlLXVwbG9hZFwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vZmlsZS11cGxvYWQuY29tcG9uZW50LnNjc3NcIl1cclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbGVVcGxvYWRDb21wb25lbnQgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2UgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcblxyXG4gIC8vIHN0YXRpYyBjbGFzcyB0byBjcmVhdGUgdGhlIGZvcm0gZ3JvdXAgZnJvbSBhIHBhcmVudCBjb21wb25lbnRcclxuICBwdWJsaWMgc3RhdGljIGdldEZvcm1Nb2RlbChcclxuICAgIHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10sXHJcbiAgICBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlLFxyXG4gICAgLyoqIEFueSB2YWxpZGF0b3JzIHJlcXVpcmVkIHRvIG1ha2Ugc3VyZSB0aGUgc2VsZWN0ZWQgZmlsZSBpcyB2YWxpZC4gSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgdXNlIGBGaWxlVXBsb2FkQ29tcG9uZW50LmdldEZpbGVWYWxpZGF0b3JgIHRvIGhlbHAgY29uc3RydWN0IHRoZSB2YWxpZGF0b3IocykuIE5PVEU6IFRoaXMgY3VycmVudGx5IG9ubHkgd29ya3Mgd2hlbiBtdWx0aVNlbGVjdCBpcyBmYWxzZS4gKi9cclxuICAgIGZpbGVWYWxpZGF0b3JzPzogQXN5bmNWYWxpZGF0b3JGbiB8IEFzeW5jVmFsaWRhdG9yRm5bXVxyXG4gICk6IEZvcm1Hcm91cDxGaWxlVXBsb2FkRm9ybUdyb3VwPiB7XHJcbiAgICBsZXQgZm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cDxGaWxlVXBsb2FkRm9ybUdyb3VwPih7XHJcbiAgICAgIGZpbGU6IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogZGlzYWJsZWQgfSwge3ZhbGlkYXRvcnM6IHZhbGlkYXRvcnMsIGFzeW5jVmFsaWRhdG9yczogZmlsZVZhbGlkYXRvcnN9KSxcclxuICAgICAgbmFtZTogbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IG51bGwsIGRpc2FibGVkOiBkaXNhYmxlZCB9LCB2YWxpZGF0b3JzKSxcclxuICAgICAgYmFzZTY0RmlsZVN0cmluZzogbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG4gICAgICB1cGxvYWRSZXN1bHQ6IG5ldyBGb3JtQ29udHJvbChudWxsKSxcclxuICAgIH0pO1xyXG4gICAgaWYgKGRpc2FibGVkKSB7XHJcbiAgICAgIGZvcm1Hcm91cC5kaXNhYmxlKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZm9ybUdyb3VwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGVscGVyIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBhc3luYyB2YWxpZGF0b3IgdG8gYmUgdXNlZCB3aXRoIHRoZSBmaWxlIHVwbG9hZCBjb250cm9sLlxyXG4gICAqIFRoaXMgaXMgdXNlZnVsIGZvciB3aGVuIHRoZSBmaWxlIG5lZWRzIHRvIGJlIHZhbGlkYXRlZCBiZWZvcmUgaXQgY2FuIGJlIHVwbG9hZGVkLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCB0byB2YWxpZGF0ZSB0aGUgZmlsZS4gUGFyYW1ldGVycyBmb3IgdGhlIGNhbGxiYWNrIGFyZSB0aGUgZmlsZSBhbmQgdGhlIGJhc2U2NCBzdHJpbmcgZm9yIHRoZSBmaWxlLlxyXG4gICAqIGJhc2U2NCBpcyBudWxsIGlmIHRoZSBmaWxlT3V0cHV0IGlucHV0IG9uIHRoZSBGaWxlVXBsb2FkQ29tcG9uZW50IGlzIHNldCB0byByYXcuIFVzaW5nIGZpbGVPdXRwdXQgc2V0IHRvIGJhc2U2NCBpcyByZWNvbW1lbmRlZCBmb3IgaW1hZ2VzLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgZ2V0RmlsZVZhbGlkYXRvcihjYWxsYmFjazogRmlsZVZhbGlkYXRvckNhbGxiYWNrKTogQXN5bmNWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gYXN5bmMgKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICBpZiAoY29udHJvbC52YWx1ZSAmJiBjb250cm9sLnBhcmVudCkge1xyXG4gICAgICAgIGxldCBmaWxlID0gY29udHJvbC52YWx1ZSBhcyBGaWxlO1xyXG4gICAgICAgIC8vIEZvciBpbWFnZXMsIHdlIG5lZWQgdGhlIGJhc2U2NCBzdHJpbmcgdG8gdmFsaWRhdGUgaW1hZ2UgZGltZW5zaW9uc1xyXG4gICAgICAgIGxldCBiYXNlNjQgPSBjb250cm9sLnBhcmVudC5nZXQoJ2Jhc2U2NEZpbGVTdHJpbmcnKT8udmFsdWUgYXMgc3RyaW5nO1xyXG4gICAgICAgIHJldHVybiBhd2FpdCBjYWxsYmFjayhmaWxlLCBiYXNlNjQpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgcHVibGljIGZvcm1Nb2RlbCE6IEZvcm1Hcm91cDxGaWxlVXBsb2FkRm9ybUdyb3VwPjtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHZhbHVlIG9mIHRoZSB0ZXh0Ym94IGlucHV0J3MgcGxhY2Vob2xkZXJcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXI/OiBzdHJpbmcgPSBcIkNob29zZSBmaWxlLi4uXCI7XHJcblxyXG4gIC8qKiBDb21tb24gZXh0ZW5zaW9ucyBmb3IgYSBmaWxlIGJyb3dzaW5nIGRpYWxvZ1xyXG4gICAqICBOb3RlOiBFZGdlIGRvZXMgbm90IHN1cHBvcnQgdGhlIGFjY2VwdCBhdHRyaWJ1dGUgb24gZmlsZSBpbnB1dHMsIHRoZXJlZm9yIGFsbCBmaWxlIHR5cGVzXHJcbiAgICogICAgICAgIHdpbGwgYmUgc2hvd24uICBGaXJlZm94IGFuZCBDaHJvbWUgYm90aCBzdXBwb3J0IHRoaXMgZmVhdHVyZS5cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgZmlsZVR5cGU/OiBGaWxlVHlwZSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgLyoqXHJcbiAgICogRmlsZSBvdXRwdXQsIGRldGVybWluZXMgd2hpY2ggcHJvcGVydGllcyBhcmUgc3VwcGxpZWQgb24gdGhlIGZvcm1Nb2RlbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBmaWxlT3V0cHV0PzogRmlsZU91dHB1dCA9ICdiYXNlNjQnO1xyXG5cclxuICAvKiogSWYgZmlsZVR5cGUgaXMgc2V0IHRvIGN1c3RvbSBzZXQgdGhlIGFjY2VwdGFibGUgZmlsZSB0eXBlcyBiYXNlZCBvbiB0aGUgY3VzdG9tIGFycmF5ICovXHJcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbUV4dGVuc2lvbnM/OiBBcnJheTxzdHJpbmc+IHwgdW5kZWZpbmVkO1xyXG5cclxuICAvKipcclxuICAgKiBPcHRpb25hbCBjYWxsYmFjayBzdXBwb3J0ZWQgaWYgdGhlIGhvc3RpbmcgcGFnZSBuZWVkcyB0byBwcm9jZXNzIHRoZSBmaWxlIGJlZm9yZVxyXG4gICAqIHNldHRpbmcgdGhlIGZvcm1Nb2RlbCB3aXRoIHRoZSBmaWxlIGluZm9ybWF0aW9uLiBJZiB0aGUgcHJvbWlzZSByZXNvbHZlcyBpdCB3aWxsIGNvbnRpbnVlXHJcbiAgICogYW5kIHNldCB0aGUgZmlsZSBuYW1lIGFuZCBjb250ZW50cyB0byB0aGUgZm9ybU1vZGVsLCBvdGhlcndpc2Ugb24gZmFpbHVyZSBpdCdsbCBkbyBub3RoaW5nLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBvbkZpbGVTZWxlY3RlZD86IChmaWxlOiBGaWxlKSA9PiBQcm9taXNlPGFueT47XHJcblxyXG4gIC8qKlxyXG4gICAqIE9wdGlvbmFsIGNhbGxiYWNrIHN1cHBvcnRlZCBmb3Igd2hlbiB0aGUgaG9zdGluZyBwYWdlIG5lZWRzIHRvIHByb2Nlc3MgbXVsdGlwbGUgZmlsZXNcclxuICAgKiBXZSBzaW1wbHkgbWFwIHRoZSBGaWxlTGlzdCB0byBhbiBhcnJheSBvZiBGaWxlIG9iamVjdHMgYW5kIHBhc3MgdGhhdCBhcnJheSB0byB0aGUgXHJcbiAgICogY2FsbGJhY2sgYW5kIGxldCB0aGUgaG9zdGluZyBwYWdlIGhhbmRsZSB0aGUgcHJvY2Vzc2luZ1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBvbk11bHRpcGxlRmlsZXNTZWxlY3RlZD86IChmaWxlczogRmlsZVtdKSA9PiBQcm9taXNlPGFueT47XHJcblxyXG4gIC8qKiBcclxuICAgKiBPcHRpb25hbCBkaXNwbGF5IHR5cGUgdGhhdCBjb250cm9scyB3aGV0aGVyIHRoZSBmaWxlIGlucHV0IHRleHRib3ggaXMgZGlzcGxheWVkIG9yXHJcbiAgICogc2ltcGx5IGEgYnV0dG9uIHRoZSB1c2VyIGNsaWNrcyB0byBsYXVuY2ggdGhlIE9TIGZpbGUgc3RvcmFnZSBkaWFsb2cuXHJcbiAgICogRGVmYXVsdDogZmlsZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNwbGF5VHlwZT86ICdmaWxlJyB8ICdidXR0b24nID0gJ2ZpbGUnO1xyXG5cclxuICAvKiogXHJcbiAgICogV2hlbiBkaXNwbGF5IHR5cGUgaXMgc2V0IHRvIGJ1dHRvbiB0aGlzIHByb3BlcnR5IHdpbGwgY29udHJvbCB0aGUgYnV0dG9uIGxhYmVsXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGJ1dHRvbkxhYmVsPzogc3RyaW5nO1xyXG5cclxuICAvKiogXHJcbiAgICogV2hlbiBkaXNwbGF5IHR5cGUgaXMgc2V0IHRvIGJ1dHRvbiB0aGlzIHByb3BlcnR5IHdpbGwgY29udHJvbCB0aGUgYnV0dG9uIHR5cGVcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgYnV0dG9uVHlwZT86IHN0cmluZyA9ICdwcmltYXJ5JztcclxuXHJcbiAgLyoqXHJcbiAgICogT3B0aW9uYWwgcHJvcGVydHkgdG8gY29udHJvbCB3aGV0aGVyIHRoZSB1c2VyIGNhbiBzZWxlY3QgbXVsdGlwbGUgZmlsZXNcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgbXVsdGlTZWxlY3Q/OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZW4gdHJ1ZSwgdGhlIG9uRmlsZVNlbGVjdGVkIGNhbGxiYWNrIHdpbGwgbm90IGJlIGNhbGxlZCBpZiB0aGUgZm9ybSBpcyBpbnZhbGlkLlxyXG4gICAqIFRoaXMgaXMgdXNlZnVsIHdoZW4gdGhlIGZpbGUgbmVlZHMgdG8gYmUgdmFsaWRhdGVkIGJlZm9yZSBpdCBjYW4gYmUgdXBsb2FkZWQuXHJcbiAgICogRm9yIHNlcnZlci1zaWRlIHZhbGlkYXRpb24sIGxlYXZlIHRoaXMgYXMgZmFsc2UgYW5kIHVzZSB0aGUgb25GaWxlU2VsZWN0ZWQgY2FsbGJhY2tcclxuICAgKiB0byB1cGxvYWQgdGhlIGZpbGUgYW5kIGhhbmRsZSBhbnkgZXJyb3JzIHRocm93biBieSB0aGUgQVBJLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB2YWxpZGF0ZUJlZm9yZVVwbG9hZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBAVmlld0NoaWxkKFwiZmlsZUlucHV0XCIsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBmaWxlSW5wdXQ/OiBFbGVtZW50UmVmO1xyXG5cclxuICAvKiogUHJvcGVydHkgYm91bmQgdG8gdGhlIGZpbGUgaW5wdXQgdG8gZmlsdGVyIHdoYXQgZmlsZSB0eXBlcyBhcmUgc2hvd24gaW4gdGhlIGRpYWxvZyAqL1xyXG4gIHB1YmxpYyBmaWxlVHlwZUFjY2VwdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCB2YWxpZGF0aW9uTWVzc2FnZVNlcnZpY2U6IFZhbGlkYXRpb25NZXNzYWdlU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBmb3JtR3JvdXBIZWxwZXI6IEZvcm1Hcm91cEhlbHBlcixcclxuICApIHtcclxuICAgIHN1cGVyKHZhbGlkYXRpb25NZXNzYWdlU2VydmljZSwgZm9ybUdyb3VwSGVscGVyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZUZpbGVUeXBlQWNjZXB0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG5cclxuICAgIC8vIFdhdGNoIGZvciBuYW1lIHRvIGNoYW5nZSwgaWYgdGhlIHZhbHVlIGlzIGNsZWFyZWQgd2Ugd2lsbCBjbGVhciB0aGUgb3RoZXJcclxuICAgIC8vIHN1cHBvcnRpbmcgbW9kZWwgcHJvcGVydGllcy4gVGhlIG5hbWUgY2FuIGJlIGNsZWFyZWQgYnkgdGhlIHVzZXIgbWFudWFsbHkgb3IgdmlhXHJcbiAgICAvLyB0aGUgY2xlYXIgYnV0dG9uXHJcbiAgICB0aGlzLmZvcm1Nb2RlbD8uZ2V0KCduYW1lJyk/LnZhbHVlQ2hhbmdlcy5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5jb21wb25lbnREZXN0cm95ZWQpXHJcbiAgICApLnN1YnNjcmliZSh2YWx1ZSA9PiB7XHJcbiAgICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgICB0aGlzLmZvcm1Nb2RlbC5wYXRjaFZhbHVlKHtcclxuICAgICAgICAgIGZpbGU6IG51bGwsXHJcbiAgICAgICAgICBiYXNlNjRGaWxlU3RyaW5nOiBudWxsLFxyXG4gICAgICAgICAgdXBsb2FkUmVzdWx0OiBudWxsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFN5bmMgZXJyb3JzIGZyb20gdGhlIGZpbGUgY29udHJvbCB0byB0aGUgbmFtZSBjb250cm9sIHdoZW5ldmVyIHRoZSBmaWxlIGNvbnRyb2wgc3RhdHVzIGNoYW5nZXMuXHJcbiAgICAvLyBUaGUgbmFtZSBjb250cm9sIGlzIHRoZSBvbmx5IG9uZSBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIgc28gd2UgbmVlZCB0byBzaG93IHRoZSBlcnJvcnMgdGhlcmUuXHJcbiAgICB0aGlzLmZvcm1Nb2RlbC5nZXQoJ2ZpbGUnKT8uc3RhdHVzQ2hhbmdlcy5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5jb21wb25lbnREZXN0cm95ZWQpXHJcbiAgICApLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGVycm9ycyA9IHRoaXMuZm9ybU1vZGVsLmdldCgnZmlsZScpPy5lcnJvcnMgPz8gbnVsbDtcclxuICAgICAgdGhpcy5mb3JtTW9kZWwuZ2V0KCduYW1lJyk/LnNldEVycm9ycyhlcnJvcnMpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZmlsZUNoYW5nZShmaWxlczogRmlsZUxpc3QpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICh0aGlzLm11bHRpU2VsZWN0KSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlTXVsdGlwbGVGaWxlcyhmaWxlcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBmaWxlOiBGaWxlIHwgbnVsbCA9IGZpbGVzLml0ZW0oMCk7XHJcbiAgICAgIGlmIChmaWxlKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5yZWFkRmlsZShmaWxlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIENsZWFyIHRoZSBmaWxlIGlucHV0cyB2YWx1ZSwgdGhpcyB3aWxsIGFsbG93IHRoZSB1c2VyIHRvIHBpY2sgdGhlIHNhbWUgZmlsZW5hbWVzIGFnYWluXHJcbiAgICAvLyBhbmQgY2F1c2UgZmlsZUNoYW5nZSB0byByZS10cmlnZ2VyLlxyXG4gICAgaWYgKHRoaXMuZmlsZUlucHV0KSB7XHJcbiAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrcyB0aGUgZmlsZSB0eXBlIGFuZCB1cGRhdGVzIHRoZSBmaWxlIHR5cGUgYWNjZXB0IHByb3BlcnR5LiBUaGlzIGlzIHdoYXQgZGV0ZXJtaW5lcyB0aGUgZmlsZVxyXG4gICAqIHR5cGUgY2hvaWNlcyB0aGF0IHRoZSB1c2VyIHdpbGwgYmUgbGltaXRlZCB0byBpbiB0aGUgZmlsZSBicm93c2UgZGlhbG9nXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB1cGRhdGVGaWxlVHlwZUFjY2VwdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmZpbGVUeXBlKSB7XHJcbiAgICAgIGlmICh0aGlzLmZpbGVUeXBlICE9PSBcImN1c3RvbVwiKSB7XHJcbiAgICAgICAgdGhpcy5maWxlVHlwZUFjY2VwdCA9IEZpbGVUeXBlRXh0ZW5zaW9uc1t0aGlzLmZpbGVUeXBlXS5qb2luKFwiLFwiKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5jdXN0b21FeHRlbnNpb25zKSB7XHJcbiAgICAgICAgICB0aGlzLmZpbGVUeXBlQWNjZXB0ID0gdGhpcy5jdXN0b21FeHRlbnNpb25zLmpvaW4oXCIsXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGFrZSBhIGZpbGUgdGhhdCB3YXMgc2VsZWN0ZWQgYnkgdGhlIHVzZXIgYW5kIHByb2Nlc3MvcGF0Y2ggb3VyIGZvcm0gbW9kZWxcclxuICAgKiBJZiB0aGUgaG9zdCBjb21wb25lbnQgcmVxdWlyZXMgYW4gYWN0aW9uIHRvIG9jY3VyIHdpdGggdGhlIGZpbGUgcHJpb3IgdG8gdGhlIHBhdGNoIGl0IHdpbGwgY2FsbFxyXG4gICAqIGFuZCB3YWl0IGZvciBpdCB0byByZXR1cm4uXHJcbiAgICogQHBhcmFtIGZpbGUgXHJcbiAgICogQHBhcmFtIGJhc2U2NEZpbGVTdHJpbmcgT3B0aW9uYWw6IFdpbGwgaGF2ZSBhIHZhbHVlIHByb3ZpZGVkIGlmIHRoZSBmaWxlT3V0cHV0IGlzIHNldCB0byBiYXNlNjRcclxuICAgKi9cclxuICBwcml2YXRlIGFzeW5jIHByb2Nlc3NGaWxlKGZpbGU6IEZpbGUsIGJhc2U2NEZpbGVTdHJpbmc6IHN0cmluZyB8IG51bGwgPSBudWxsKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAvLyBJZiB3ZSBhcmUgdmFsaWRhdGluZyBiZWZvcmUgdXBsb2FkIHdlIG5lZWQgdG8gcGF0Y2ggdGhlIGZpbGUgdG8gdGhlIGZvcm0gdG8gdHJpZ2dlciB2YWxpZGF0aW9uIGJlZm9yZSBjYWxsaW5nIG9uRmlsZVNlbGVjdGVkXHJcbiAgICBpZiAodGhpcy52YWxpZGF0ZUJlZm9yZVVwbG9hZCkge1xyXG4gICAgICBhd2FpdCB0aGlzLnZhbGlkYXRlRmlsZShmaWxlLCBiYXNlNjRGaWxlU3RyaW5nKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgaWYgKHRoaXMub25GaWxlU2VsZWN0ZWQpIHtcclxuICAgICAgLy8gT25seSBjYWxsIHRoZSBvbkZpbGVTZWxlY3RlZCBjYWxsYmFjayB0byB1cGxvYWQgdGhlIGZpbGUgaWYgdGhlIGZvcm0gZ3JvdXAgaXMgdmFsaWQgb3Igd2UgYXJlIG5vdCB2YWxpZGF0aW5nIGJlZm9yZSB1cGxvYWRcclxuICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlQmVmb3JlVXBsb2FkIHx8IHRoaXMuZm9ybU1vZGVsLnZhbGlkKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCB0aGlzLm9uRmlsZVNlbGVjdGVkKGZpbGUpO1xyXG4gIFxyXG4gICAgICAgICAgLy8gSWYgd2UgZGlkIHZhbGlkYXRpb24sIGp1c3QgcGF0Y2ggdGhlIGZvcm0gcmVzdWx0IGJlY2F1c2UgdGhlIGZpbGUgaXMgYWxyZWFkeSBpbiB0aGUgZm9ybVxyXG4gICAgICAgICAgaWYgKHRoaXMudmFsaWRhdGVCZWZvcmVVcGxvYWQpIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtTW9kZWwucGF0Y2hWYWx1ZSh7IHVwbG9hZFJlc3VsdDogcmVzdWx0ID8/IG51bGwgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1Nb2RlbC5wYXRjaFZhbHVlKHsgYmFzZTY0RmlsZVN0cmluZywgZmlsZSwgbmFtZTogZmlsZS5uYW1lLCB1cGxvYWRSZXN1bHQ6IHJlc3VsdCA/PyBudWxsIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgIC8vIEJ1bW1lciwgd2UncmUgbm90IGdvaW5nIHRvIGRvIGFueXRoaW5nIGFib3V0IGl0IHRob3VnaC5cclxuICAgICAgICAgIC8vIFdlIGFyZSBub3QgcGF0Y2hpbmcgYW55IG9mIHRoZSByZXN1bHQgc28gYW55IGV4aXN0aW5nIGluZm9ybWF0aW9uIHJlbWFpbnNcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYW4gb25GaWxlU2VsZWN0ZWQgY2FsbGJhY2sgd2UganVzdCBwYXRjaCB0aGUgZm9ybSBtb2RlbC5cclxuICAgIC8vIEluIHRoZSBjYXNlIG9mIHByZS11cGxvYWQgdmFsaWRhdGlvbiB0aGUgZm9ybSBhbHJlYWR5IGhhcyB0aGUgZmlsZSBzbyB3ZSBkb24ndCB3YW50IHRvIHBhdGNoIGFnYWluLlxyXG4gICAgfSBlbHNlIGlmICghdGhpcy52YWxpZGF0ZUJlZm9yZVVwbG9hZCkge1xyXG4gICAgICB0aGlzLmZvcm1Nb2RlbC5wYXRjaFZhbHVlKHsgYmFzZTY0RmlsZVN0cmluZywgZmlsZSwgbmFtZTogZmlsZS5uYW1lLCB1cGxvYWRSZXN1bHQ6IG51bGwgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogUGF0Y2hlcyB0aGUgZm9ybSB3aXRoIHRoZSBzZWxlY3RlZCBmaWxlIGluIG9yZGVyIHRvIHRyaWdnZXIgY29udHJvbCB2YWxpZGF0aW9uICovXHJcbiAgcHJpdmF0ZSBhc3luYyB2YWxpZGF0ZUZpbGUoZmlsZTogRmlsZSwgYmFzZTY0RmlsZVN0cmluZzogc3RyaW5nIHwgbnVsbCA9IG51bGwpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIC8vIFBhdGNoIHRoZSBmaWxlIGZpcnN0IHRvIHRyaWdnZXIgYW55IGZpbGUgdmFsaWRhdG9yc1xyXG4gICAgdGhpcy5mb3JtTW9kZWwucGF0Y2hWYWx1ZSh7IGJhc2U2NEZpbGVTdHJpbmcsIGZpbGUsIG5hbWU6IGZpbGUubmFtZSwgdXBsb2FkUmVzdWx0OiBudWxsIH0pO1xyXG5cclxuICAgIC8vIElmIHdlIGhhdmUgYW55IGFzeW5jIHZhbGlkYXRvcnMgcGVuZGluZyB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZW0gdG8gY29tcGxldGUgYmVmb3JlIHdlIGtub3cgaWYgdGhlIGZvcm0gaXMgdmFsaWRcclxuICAgIGlmICh0aGlzLmZvcm1Nb2RlbC5wZW5kaW5nKSB7XHJcbiAgICAgIGF3YWl0IGxhc3RWYWx1ZUZyb20odGhpcy5mb3JtTW9kZWwuc3RhdHVzQ2hhbmdlcy5waXBlKGZpbHRlcihzdGF0dXMgPT4gc3RhdHVzICE9PSAnUEVORElORycpLCB0YWtlKDEpLCB0YWtlVW50aWwodGhpcy5jb21wb25lbnREZXN0cm95ZWQpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTWFyayB0aGUgbmFtZSBjb250cm9sIGFzIHRvdWNoZWQgc28gdGhhdCBhbnkgdmFsaWRhdGlvbiBlcnJvcnMgd2lsbCBzaG93XHJcbiAgICB0aGlzLmZvcm1Nb2RlbC5jb250cm9scy5uYW1lLm1hcmtBc1RvdWNoZWQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJhc2VkIG9uIHRoZSBmaWxlT3V0cHV0IHJldHVybiB3aGV0aGVyIHRoaXMgY29tcG9uZW50IGlzIGV4cGVjdGVkIHRvIGRlbGl2ZXIgYSBiYXNlNjQgb3V0cHV0XHJcbiAgICogQHJldHVybnMgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpc0Jhc2U2NEZpbGVPdXRwdXQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5maWxlT3V0cHV0ID09PSAnYmFzZTY0JztcclxuICB9XHJcblxyXG4gIC8qKiBNYXBzIHRoZSBmaWxlcyB0byBhbiBhcnJheSBvZiBGaWxlIG9iamVjdHMgYW5kIHNlbmRzIHRoZW0gYWxvbmdcclxuICAgKiB0byB0aGUgZGVyaXZlZCBvbk11bHRpcGxlRmlsZVNlbGVjdGVkIG1ldGhvZCBpbiB0aGUgaG9zdGluZyBjb21wb25lbnRcclxuICAgKi9cclxuICBwcml2YXRlIGFzeW5jIGhhbmRsZU11bHRpcGxlRmlsZXMoZmlsZXM6IEZpbGVMaXN0KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBmaWxlc0FycmF5ID0gQXJyYXkuZnJvbShmaWxlcyk7XHJcblxyXG4gICAgaWYgKHRoaXMub25NdWx0aXBsZUZpbGVzU2VsZWN0ZWQpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgdGhpcy5vbk11bHRpcGxlRmlsZXNTZWxlY3RlZChmaWxlc0FycmF5KTtcclxuICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdlcnJvcjogJywgZSk7XHJcbiAgICAgIH0gIFxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgcmVhZEZpbGUoZmlsZTogRmlsZSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgcmVhZGVyOiBGaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuXHJcbiAgICByZWFkZXIub25sb2FkZW5kID0gYXN5bmMgZSA9PiB7XHJcbiAgICAgIGxldCBiYXNlNjRGaWxlU3RyaW5nOiBzdHJpbmcgfCB1bmRlZmluZWQgPSByZWFkZXI/LnJlc3VsdD8udG9TdHJpbmcoKS5zcGxpdChcIixcIilbMV07XHJcbiAgICAgIGF3YWl0IHRoaXMucHJvY2Vzc0ZpbGUoZmlsZSwgYmFzZTY0RmlsZVN0cmluZyk7XHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLmlzQmFzZTY0RmlsZU91dHB1dCgpKSB7XHJcbiAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYXdhaXQgdGhpcy5wcm9jZXNzRmlsZShmaWxlKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGVjLWZvcm0tZ3JvdXAgW2xhYmVsXT1cImxhYmVsXCJcclxuICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJmb3JtTW9kZWxcIlxyXG4gICAgICAgICAgICAgICBbaGVscFBvcG92ZXJdPVwiaGVscFBvcG92ZXJcIlxyXG4gICAgICAgICAgICAgICBbaGVscFBvcG92ZXJQb3NpdGlvbl09XCJoZWxwUG9wb3ZlclBvc2l0aW9uXCJcclxuICAgICAgICAgICAgICAgY2xhc3M9XCJtYi0wXCI+XHJcbiAgPGRpdiBjbGFzcz1cImQtZmxleCBjb250cm9sLWdyb3VwXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtZ3JvdyBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICA8aW5wdXQgI2ZpbGVJbnB1dFxyXG4gICAgICAgICAgICAgaWQ9XCJ7e2lucHV0SWR9fV9pbnB1dFwiXHJcbiAgICAgICAgICAgICB0eXBlPVwiZmlsZVwiXHJcbiAgICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcclxuICAgICAgICAgICAgIFthdHRyLmFjY2VwdF09XCJmaWxlVHlwZUFjY2VwdFwiXHJcbiAgICAgICAgICAgICAoY2hhbmdlKT1cImZpbGVDaGFuZ2UoJGV2ZW50LnRhcmdldC5maWxlcylcIlxyXG4gICAgICAgICAgICAgW2NsYXNzLmhhcy12YWx1ZV09XCJkaXNwbGF5VHlwZSA9PT0gJ2ZpbGUnID8gZm9ybU1vZGVsPy5nZXQoJ25hbWUnKS52YWx1ZSA6IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgICAgICBbYXR0ci5tdWx0aXBsZV09XCJtdWx0aVNlbGVjdCA/ICdtdWx0aXBsZScgOiB1bmRlZmluZWRcIj5cclxuICAgICAgPGVjLWZvcm0tY29udHJvbCAqbmdJZj1cImRpc3BsYXlUeXBlID09PSAnZmlsZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIGlkPVwie3tpbnB1dElkfX1fZm9ybUNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbcGVuZGluZ109XCJwZW5kaW5nIHx8IGZvcm1Nb2RlbD8ucGVuZGluZ1wiPlxyXG4gICAgICAgIDxpbnB1dCBpZD1cInt7aW5wdXRJZH19X25hbWVcIlxyXG4gICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybU1vZGVsPy5nZXQoJ25hbWUnKVwiXHJcbiAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cIi0xXCI+XHJcbiAgICAgIDwvZWMtZm9ybS1jb250cm9sPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZWMtYnV0dG9uICpuZ0lmPVwiZGlzcGxheVR5cGUgPT09ICdmaWxlJ1wiXHJcbiAgICAgICAgICAgICAgICNicm93c2VCdG5cclxuICAgICAgICAgICAgICAgaWQ9XCJ7e2lucHV0SWR9fV9icm93c2VCdG5cIlxyXG4gICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJmaWxlSW5wdXQuY2xpY2soKVwiXHJcbiAgICAgICAgICAgICAgIHR5cGU9XCJzZWNvbmRhcnlcIlxyXG4gICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxyXG4gICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybU1vZGVsPy5nZXQoJ25hbWUnKS5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgIGxhYmVsPVwiQnJvd3NlXCJcclxuICAgICAgICAgICAgICAgW2F1dG9mb2N1c109XCJhdXRvZm9jdXNcIj5cclxuICAgIDwvZWMtYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxlYy1idXR0b24gKm5nSWY9XCJkaXNwbGF5VHlwZSA9PT0gJ2J1dHRvbidcIlxyXG4gICAgICAgICAgICAgaWQ9XCJ7e2lucHV0SWR9fV9idG5cIlxyXG4gICAgICAgICAgICAgW3BlbmRpbmddPVwicGVuZGluZ1wiXHJcbiAgICAgICAgICAgICBbdHlwZV09XCJidXR0b25UeXBlXCJcclxuICAgICAgICAgICAgIFtsYWJlbF09XCJidXR0b25MYWJlbCA/PyAnQnJvd3NlX1RDJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAoY2xpY2tlZCk9XCJmaWxlSW5wdXQuY2xpY2soKVwiXHJcbiAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPlxyXG4gIDwvZWMtYnV0dG9uPlxyXG48L2VjLWZvcm0tZ3JvdXA+Il19
|
@@ -0,0 +1,98 @@
|
|
1
|
+
import { Component, ContentChild, EventEmitter, HostBinding, HostListener, Input, Output, ViewEncapsulation } from '@angular/core';
|
2
|
+
import { FormControlDirective } from '@angular/forms';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
import * as i1 from "@angular/common";
|
5
|
+
export class FormControlComponent {
|
6
|
+
get empty() { return !this._formModel?.value && this._formModel?.value !== 0; }
|
7
|
+
;
|
8
|
+
get invalid() { return this._formModel?.touched == true && this._formModel.invalid == true; }
|
9
|
+
;
|
10
|
+
get disabled() { return this._formModel?.disabled == true; }
|
11
|
+
;
|
12
|
+
get _formModel() {
|
13
|
+
return this.formModelInput || this.formControlDirective;
|
14
|
+
}
|
15
|
+
constructor(el) {
|
16
|
+
this.el = el;
|
17
|
+
this.id = '';
|
18
|
+
this.showClear = true;
|
19
|
+
this.autofocus = false;
|
20
|
+
this.pending = false;
|
21
|
+
this.required = false;
|
22
|
+
this.readonly = false;
|
23
|
+
this.actionClicked = new EventEmitter();
|
24
|
+
}
|
25
|
+
ngAfterViewInit() {
|
26
|
+
if (!this._formModel) {
|
27
|
+
console.error('Missing [formModel] input or [formControl] directive on ec-form-control content.');
|
28
|
+
}
|
29
|
+
if (this.autofocus) {
|
30
|
+
this.focus();
|
31
|
+
}
|
32
|
+
}
|
33
|
+
onClick() {
|
34
|
+
this.focus();
|
35
|
+
}
|
36
|
+
focus() {
|
37
|
+
const el = this.el.nativeElement;
|
38
|
+
const inputs = el.querySelectorAll('input, textarea, select');
|
39
|
+
if (inputs.length) {
|
40
|
+
inputs.item(0).focus();
|
41
|
+
}
|
42
|
+
}
|
43
|
+
clear() {
|
44
|
+
this._formModel?.reset();
|
45
|
+
}
|
46
|
+
}
|
47
|
+
FormControlComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FormControlComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
48
|
+
FormControlComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: FormControlComponent, selector: "ec-form-control", inputs: { id: "id", icon: "icon", actionIcon: "actionIcon", showClear: "showClear", formModelInput: ["formModel", "formModelInput"], autofocus: "autofocus", pending: "pending", required: "required", readonly: "readonly" }, outputs: { actionClicked: "actionClicked" }, host: { listeners: { "click": "onClick()" }, properties: { "class.is-pending": "this.pending", "class.is-required": "this.required", "class.is-readonly": "this.readonly", "class.is-empty": "this.empty", "class.is-invalid": "this.invalid", "class.is-disabled": "this.disabled" } }, queries: [{ propertyName: "formControlDirective", first: true, predicate: FormControlDirective, descendants: true }], ngImport: i0, template: "<ng-content></ng-content>\r\n<i id=\"{{id + '_icon'}}\" class=\"ec-form-control-icon ec-icon {{icon}}\"></i>\r\n<i id=\"{{id + '_loading'}}\" class=\"ec-form-control-icon ec-icon icon-loading\"></i>\r\n<i id=\"{{id + '_required'}}\" class=\"ec-form-control-icon ec-icon icon-required\"></i>\r\n<i id=\"{{id + '_invalid'}}\" class=\"ec-form-control-icon ec-icon icon-invalid\"></i>\r\n<button *ngIf=\"showClear\"\r\n id=\"{{id + '_clear'}}\"\r\n [attr.disabled]=\"disabled || undefined\"\r\n class=\"ec-form-control-clear\"\r\n (click)=\"clear()\">\r\n <i class=\"ec-icon icon-cancel\"></i>\r\n</button>\r\n<button *ngIf=\"actionIcon\"\r\n id=\"{{id + '_action'}}\"\r\n [attr.disabled]=\"disabled || undefined\"\r\n class=\"ec-form-control-action\"\r\n (click)=\"actionClicked.emit($event)\">\r\n <i class=\"ec-icon {{actionIcon}}\"></i>\r\n</button>\r\n<div class=\"ec-focus-ring\"></div>\r\n", styles: ["ec-form-control{background-color:var(--ec-form-control-background-color);background-clip:padding-box;border:1px solid var(--ec-form-control-border-color);border-radius:var(--ec-border-radius);padding:0 .5rem;position:relative;color:var(--ec-form-control-color);display:flex;font-size:var(--ec-form-control-font-size);min-height:2rem;width:100%}ec-form-control>input,ec-form-control>select,ec-form-control>textarea,ec-form-control>div[contenteditable=true]{color:inherit;flex:1 1;min-width:0;border:0;background-color:transparent;order:2}ec-form-control>input::selection,ec-form-control>select::selection,ec-form-control>textarea::selection,ec-form-control>div[contenteditable=true]::selection{background-color:var(--ec-form-control-background-color-selection);color:var(--ec-form-control-color-selection)}ec-form-control>input::-webkit-input-placeholder,ec-form-control>select::-webkit-input-placeholder,ec-form-control>textarea::-webkit-input-placeholder,ec-form-control>div[contenteditable=true]::-webkit-input-placeholder{color:var(--ec-form-control-color-placeholder)}ec-form-control>input::-moz-placeholder,ec-form-control>select::-moz-placeholder,ec-form-control>textarea::-moz-placeholder,ec-form-control>div[contenteditable=true]::-moz-placeholder{color:var(--ec-form-control-color-placeholder);opacity:1}ec-form-control>input:-ms-input-placeholder,ec-form-control>select:-ms-input-placeholder,ec-form-control>textarea:-ms-input-placeholder,ec-form-control>div[contenteditable=true]:-ms-input-placeholder{color:var(--ec-form-control-color-placeholder)}ec-form-control>input:-moz-placeholder,ec-form-control>select:-moz-placeholder,ec-form-control>textarea:-moz-placeholder,ec-form-control>div[contenteditable=true]:-moz-placeholder{color:var(--ec-form-control-color-placeholder);opacity:1}ec-form-control>input:focus,ec-form-control>select:focus,ec-form-control>textarea:focus,ec-form-control>div[contenteditable=true]:focus{outline:none}ec-form-control>input:focus~.ec-focus-ring,ec-form-control>select:focus~.ec-focus-ring,ec-form-control>textarea:focus~.ec-focus-ring,ec-form-control>div[contenteditable=true]:focus~.ec-focus-ring{display:block}ec-form-control>input,ec-form-control>textarea,ec-form-control>select,ec-form-control>div[contenteditable=true],ec-form-control .ec-form-control-prefix,ec-form-control .ec-form-control-suffix{padding:calc((1.875rem - (var(--ec-font-size-body) * 1.25)) / 2) 0;line-height:1.25;font-size:inherit}ec-form-control>textarea{resize:none;padding:.3125rem 0}ec-form-control .ec-form-control-icon{margin-top:.4375rem;margin-right:.25rem;order:1}ec-form-control .ec-form-control-icon:not([class*=icon-]){display:none}ec-form-control .icon-required,ec-form-control .icon-invalid{color:var(--ec-form-control-border-color-invalid)}ec-form-control .ec-form-control-clear,ec-form-control .ec-form-control-action{font-size:var(--ec-font-size-action);height:2rem;line-height:1.25rem;padding:.3125rem .5rem;border-radius:var(--ec-border-radius);display:flex;cursor:pointer;flex:none;height:1.875rem;width:2rem;order:3;background-color:transparent;border:0;border-radius:0;display:inline-flex;align-items:center;justify-content:center;outline:none}ec-form-control .ec-form-control-clear .label,ec-form-control .ec-form-control-action .label{display:flex;align-items:center;justify-content:center;white-space:nowrap;flex:auto}ec-form-control .ec-form-control-clear .ec-icon,ec-form-control .ec-form-control-action .ec-icon{flex:none}ec-form-control .ec-form-control-clear .ec-icon+.label,ec-form-control .ec-form-control-action .ec-icon+.label{flex:none;margin-left:.25rem}ec-form-control .ec-form-control-clear.has-badge,ec-form-control .ec-form-control-action.has-badge{padding-right:.0625rem}ec-form-control .ec-form-control-clear:focus,ec-form-control .ec-form-control-action:focus{outline:none;position:relative;z-index:1}ec-form-control .ec-form-control-clear:disabled,ec-form-control .ec-form-control-action:disabled{background-color:var(--ec-background-color-disabled);border:1px solid var(--ec-form-control-border-color-disabled);color:var(--ec-color-disabled-dark);opacity:var(--ec-form-control-opacity-disabled);cursor:default}ec-form-control .ec-form-control-clear:disabled,ec-form-control .ec-form-control-action:disabled{border:0;background-color:transparent;border-color:transparent}ec-form-control .ec-form-control-clear:last-of-type,ec-form-control .ec-form-control-action:last-of-type{margin-right:-.5rem}ec-form-control .ec-form-control-clear:hover:not(:disabled),ec-form-control .ec-form-control-action:hover:not(:disabled){cursor:pointer;background-color:var(--ec-background-color-hover)}ec-form-control .ec-form-control-clear:active:not(:disabled),ec-form-control .ec-form-control-action:active:not(:disabled){background-color:var(--ec-background-color-selected);font-weight:700}ec-form-control .ec-form-control-clear:focus:not(:disabled),ec-form-control .ec-form-control-action:focus:not(:disabled){box-shadow:var(--ec-button-box-shadow-active, 0 0 0 2px var(--ec-border-color-focus))}ec-form-control button:last-of-type{border-top-right-radius:calc(var(--ec-form-control-border-radius) - .0625rem);border-bottom-right-radius:calc(var(--ec-form-control-border-radius) - .0625rem)}ec-form-control .ec-form-control-clear{width:1.5rem}ec-form-control .ec-form-control-prefix,ec-form-control .ec-form-control-suffix{color:var(--ec-color-secondary-dark);flex:none;cursor:default}ec-form-control .ec-form-control-prefix{margin-right:.125rem;order:2}ec-form-control .ec-form-control-suffix{margin-left:.125rem;order:3}ec-form-control .ec-focus-ring{position:absolute;inset:-1px;border:.125rem solid var(--ec-color-interactive);pointer-events:none;display:none;border-radius:var(--ec-form-control-border-radius);z-index:1}ec-form-control.is-pending .icon-invalid,ec-form-control.is-pending .icon-required{display:none}ec-form-control.is-invalid{border-color:var(--ec-form-control-border-color-invalid);background-color:var(--ec-form-control-background-color-invalid)}ec-form-control.is-invalid .icon-required{display:none}ec-form-control.is-empty .ec-form-control-clear{display:none}ec-form-control.is-required.is-empty .ec-form-control-icon:first-of-type{display:none}ec-form-control:not(.is-pending) .icon-loading{display:none}ec-form-control:not(.is-required) .icon-required,ec-form-control:not(.is-empty) .icon-required{display:none}ec-form-control:not(.is-invalid) .icon-invalid{display:none}ec-form-control.is-readonly,ec-form-control.is-disabled{background-color:var(--ec-form-control-background-color-disabled)}ec-form-control.is-readonly .icon-loading,ec-form-control.is-readonly .icon-invalid,ec-form-control.is-readonly .icon-required,ec-form-control.is-readonly .ec-form-control-clear,ec-form-control.is-disabled .icon-loading,ec-form-control.is-disabled .icon-invalid,ec-form-control.is-disabled .icon-required,ec-form-control.is-disabled .ec-form-control-clear{display:none}ec-form-control.is-readonly{border-color:var(--ec-form-control-border-color-readonly);color:var(--ec-form-control-color-readonly)}ec-form-control.is-readonly .ec-form-control-action{display:none}ec-form-control.is-disabled:not(.is-readonly){color:var(--ec-form-control-color-disabled);opacity:.6}ec-form-control.is-disabled:not(.is-readonly) .ec-form-control-prefix,ec-form-control.is-disabled:not(.is-readonly) .ec-form-control-suffix{color:inherit}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None });
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FormControlComponent, decorators: [{
|
50
|
+
type: Component,
|
51
|
+
args: [{ selector: 'ec-form-control', encapsulation: ViewEncapsulation.None, template: "<ng-content></ng-content>\r\n<i id=\"{{id + '_icon'}}\" class=\"ec-form-control-icon ec-icon {{icon}}\"></i>\r\n<i id=\"{{id + '_loading'}}\" class=\"ec-form-control-icon ec-icon icon-loading\"></i>\r\n<i id=\"{{id + '_required'}}\" class=\"ec-form-control-icon ec-icon icon-required\"></i>\r\n<i id=\"{{id + '_invalid'}}\" class=\"ec-form-control-icon ec-icon icon-invalid\"></i>\r\n<button *ngIf=\"showClear\"\r\n id=\"{{id + '_clear'}}\"\r\n [attr.disabled]=\"disabled || undefined\"\r\n class=\"ec-form-control-clear\"\r\n (click)=\"clear()\">\r\n <i class=\"ec-icon icon-cancel\"></i>\r\n</button>\r\n<button *ngIf=\"actionIcon\"\r\n id=\"{{id + '_action'}}\"\r\n [attr.disabled]=\"disabled || undefined\"\r\n class=\"ec-form-control-action\"\r\n (click)=\"actionClicked.emit($event)\">\r\n <i class=\"ec-icon {{actionIcon}}\"></i>\r\n</button>\r\n<div class=\"ec-focus-ring\"></div>\r\n", styles: ["ec-form-control{background-color:var(--ec-form-control-background-color);background-clip:padding-box;border:1px solid var(--ec-form-control-border-color);border-radius:var(--ec-border-radius);padding:0 .5rem;position:relative;color:var(--ec-form-control-color);display:flex;font-size:var(--ec-form-control-font-size);min-height:2rem;width:100%}ec-form-control>input,ec-form-control>select,ec-form-control>textarea,ec-form-control>div[contenteditable=true]{color:inherit;flex:1 1;min-width:0;border:0;background-color:transparent;order:2}ec-form-control>input::selection,ec-form-control>select::selection,ec-form-control>textarea::selection,ec-form-control>div[contenteditable=true]::selection{background-color:var(--ec-form-control-background-color-selection);color:var(--ec-form-control-color-selection)}ec-form-control>input::-webkit-input-placeholder,ec-form-control>select::-webkit-input-placeholder,ec-form-control>textarea::-webkit-input-placeholder,ec-form-control>div[contenteditable=true]::-webkit-input-placeholder{color:var(--ec-form-control-color-placeholder)}ec-form-control>input::-moz-placeholder,ec-form-control>select::-moz-placeholder,ec-form-control>textarea::-moz-placeholder,ec-form-control>div[contenteditable=true]::-moz-placeholder{color:var(--ec-form-control-color-placeholder);opacity:1}ec-form-control>input:-ms-input-placeholder,ec-form-control>select:-ms-input-placeholder,ec-form-control>textarea:-ms-input-placeholder,ec-form-control>div[contenteditable=true]:-ms-input-placeholder{color:var(--ec-form-control-color-placeholder)}ec-form-control>input:-moz-placeholder,ec-form-control>select:-moz-placeholder,ec-form-control>textarea:-moz-placeholder,ec-form-control>div[contenteditable=true]:-moz-placeholder{color:var(--ec-form-control-color-placeholder);opacity:1}ec-form-control>input:focus,ec-form-control>select:focus,ec-form-control>textarea:focus,ec-form-control>div[contenteditable=true]:focus{outline:none}ec-form-control>input:focus~.ec-focus-ring,ec-form-control>select:focus~.ec-focus-ring,ec-form-control>textarea:focus~.ec-focus-ring,ec-form-control>div[contenteditable=true]:focus~.ec-focus-ring{display:block}ec-form-control>input,ec-form-control>textarea,ec-form-control>select,ec-form-control>div[contenteditable=true],ec-form-control .ec-form-control-prefix,ec-form-control .ec-form-control-suffix{padding:calc((1.875rem - (var(--ec-font-size-body) * 1.25)) / 2) 0;line-height:1.25;font-size:inherit}ec-form-control>textarea{resize:none;padding:.3125rem 0}ec-form-control .ec-form-control-icon{margin-top:.4375rem;margin-right:.25rem;order:1}ec-form-control .ec-form-control-icon:not([class*=icon-]){display:none}ec-form-control .icon-required,ec-form-control .icon-invalid{color:var(--ec-form-control-border-color-invalid)}ec-form-control .ec-form-control-clear,ec-form-control .ec-form-control-action{font-size:var(--ec-font-size-action);height:2rem;line-height:1.25rem;padding:.3125rem .5rem;border-radius:var(--ec-border-radius);display:flex;cursor:pointer;flex:none;height:1.875rem;width:2rem;order:3;background-color:transparent;border:0;border-radius:0;display:inline-flex;align-items:center;justify-content:center;outline:none}ec-form-control .ec-form-control-clear .label,ec-form-control .ec-form-control-action .label{display:flex;align-items:center;justify-content:center;white-space:nowrap;flex:auto}ec-form-control .ec-form-control-clear .ec-icon,ec-form-control .ec-form-control-action .ec-icon{flex:none}ec-form-control .ec-form-control-clear .ec-icon+.label,ec-form-control .ec-form-control-action .ec-icon+.label{flex:none;margin-left:.25rem}ec-form-control .ec-form-control-clear.has-badge,ec-form-control .ec-form-control-action.has-badge{padding-right:.0625rem}ec-form-control .ec-form-control-clear:focus,ec-form-control .ec-form-control-action:focus{outline:none;position:relative;z-index:1}ec-form-control .ec-form-control-clear:disabled,ec-form-control .ec-form-control-action:disabled{background-color:var(--ec-background-color-disabled);border:1px solid var(--ec-form-control-border-color-disabled);color:var(--ec-color-disabled-dark);opacity:var(--ec-form-control-opacity-disabled);cursor:default}ec-form-control .ec-form-control-clear:disabled,ec-form-control .ec-form-control-action:disabled{border:0;background-color:transparent;border-color:transparent}ec-form-control .ec-form-control-clear:last-of-type,ec-form-control .ec-form-control-action:last-of-type{margin-right:-.5rem}ec-form-control .ec-form-control-clear:hover:not(:disabled),ec-form-control .ec-form-control-action:hover:not(:disabled){cursor:pointer;background-color:var(--ec-background-color-hover)}ec-form-control .ec-form-control-clear:active:not(:disabled),ec-form-control .ec-form-control-action:active:not(:disabled){background-color:var(--ec-background-color-selected);font-weight:700}ec-form-control .ec-form-control-clear:focus:not(:disabled),ec-form-control .ec-form-control-action:focus:not(:disabled){box-shadow:var(--ec-button-box-shadow-active, 0 0 0 2px var(--ec-border-color-focus))}ec-form-control button:last-of-type{border-top-right-radius:calc(var(--ec-form-control-border-radius) - .0625rem);border-bottom-right-radius:calc(var(--ec-form-control-border-radius) - .0625rem)}ec-form-control .ec-form-control-clear{width:1.5rem}ec-form-control .ec-form-control-prefix,ec-form-control .ec-form-control-suffix{color:var(--ec-color-secondary-dark);flex:none;cursor:default}ec-form-control .ec-form-control-prefix{margin-right:.125rem;order:2}ec-form-control .ec-form-control-suffix{margin-left:.125rem;order:3}ec-form-control .ec-focus-ring{position:absolute;inset:-1px;border:.125rem solid var(--ec-color-interactive);pointer-events:none;display:none;border-radius:var(--ec-form-control-border-radius);z-index:1}ec-form-control.is-pending .icon-invalid,ec-form-control.is-pending .icon-required{display:none}ec-form-control.is-invalid{border-color:var(--ec-form-control-border-color-invalid);background-color:var(--ec-form-control-background-color-invalid)}ec-form-control.is-invalid .icon-required{display:none}ec-form-control.is-empty .ec-form-control-clear{display:none}ec-form-control.is-required.is-empty .ec-form-control-icon:first-of-type{display:none}ec-form-control:not(.is-pending) .icon-loading{display:none}ec-form-control:not(.is-required) .icon-required,ec-form-control:not(.is-empty) .icon-required{display:none}ec-form-control:not(.is-invalid) .icon-invalid{display:none}ec-form-control.is-readonly,ec-form-control.is-disabled{background-color:var(--ec-form-control-background-color-disabled)}ec-form-control.is-readonly .icon-loading,ec-form-control.is-readonly .icon-invalid,ec-form-control.is-readonly .icon-required,ec-form-control.is-readonly .ec-form-control-clear,ec-form-control.is-disabled .icon-loading,ec-form-control.is-disabled .icon-invalid,ec-form-control.is-disabled .icon-required,ec-form-control.is-disabled .ec-form-control-clear{display:none}ec-form-control.is-readonly{border-color:var(--ec-form-control-border-color-readonly);color:var(--ec-form-control-color-readonly)}ec-form-control.is-readonly .ec-form-control-action{display:none}ec-form-control.is-disabled:not(.is-readonly){color:var(--ec-form-control-color-disabled);opacity:.6}ec-form-control.is-disabled:not(.is-readonly) .ec-form-control-prefix,ec-form-control.is-disabled:not(.is-readonly) .ec-form-control-suffix{color:inherit}\n"] }]
|
52
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { formControlDirective: [{
|
53
|
+
type: ContentChild,
|
54
|
+
args: [FormControlDirective]
|
55
|
+
}], id: [{
|
56
|
+
type: Input
|
57
|
+
}], icon: [{
|
58
|
+
type: Input
|
59
|
+
}], actionIcon: [{
|
60
|
+
type: Input
|
61
|
+
}], showClear: [{
|
62
|
+
type: Input
|
63
|
+
}], formModelInput: [{
|
64
|
+
type: Input,
|
65
|
+
args: ['formModel']
|
66
|
+
}], autofocus: [{
|
67
|
+
type: Input
|
68
|
+
}], pending: [{
|
69
|
+
type: Input
|
70
|
+
}, {
|
71
|
+
type: HostBinding,
|
72
|
+
args: ['class.is-pending']
|
73
|
+
}], required: [{
|
74
|
+
type: Input
|
75
|
+
}, {
|
76
|
+
type: HostBinding,
|
77
|
+
args: ['class.is-required']
|
78
|
+
}], readonly: [{
|
79
|
+
type: Input
|
80
|
+
}, {
|
81
|
+
type: HostBinding,
|
82
|
+
args: ['class.is-readonly']
|
83
|
+
}], empty: [{
|
84
|
+
type: HostBinding,
|
85
|
+
args: ['class.is-empty']
|
86
|
+
}], invalid: [{
|
87
|
+
type: HostBinding,
|
88
|
+
args: ['class.is-invalid']
|
89
|
+
}], disabled: [{
|
90
|
+
type: HostBinding,
|
91
|
+
args: ['class.is-disabled']
|
92
|
+
}], actionClicked: [{
|
93
|
+
type: Output
|
94
|
+
}], onClick: [{
|
95
|
+
type: HostListener,
|
96
|
+
args: ['click']
|
97
|
+
}] } });
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb250cm9sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9mb3JtLWNvbnRyb2wvZm9ybS1jb250cm9sLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9mb3JtLWNvbnRyb2wvZm9ybS1jb250cm9sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFlBQVksRUFBYyxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlKLE9BQU8sRUFBbUIsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBUXZFLE1BQU0sT0FBTyxvQkFBb0I7SUFjL0IsSUFBbUMsS0FBSyxLQUFhLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssS0FBSyxDQUFDLENBQUEsQ0FBQSxDQUFDO0lBQUEsQ0FBQztJQUNySCxJQUFxQyxPQUFPLEtBQWMsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFBLENBQUEsQ0FBQztJQUFBLENBQUM7SUFDdEksSUFBc0MsUUFBUSxLQUFjLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLElBQUksSUFBSSxDQUFBLENBQUMsQ0FBQztJQUFBLENBQUM7SUFJdkcsSUFBWSxVQUFVO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUM7SUFDMUQsQ0FBQztJQUVELFlBQW9CLEVBQWM7UUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBckJsQixPQUFFLEdBQVcsRUFBRSxDQUFDO1FBR3ZCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFFakIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVlLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDZixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFNbEQsa0JBQWEsR0FBd0IsSUFBSSxZQUFZLEVBQVMsQ0FBQztJQU1uQyxDQUFDO0lBRXZDLGVBQWU7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNwQixPQUFPLENBQUMsS0FBSyxDQUFDLGtGQUFrRixDQUFDLENBQUM7U0FDbkc7UUFFRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0lBR0QsT0FBTztRQUNMLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFFRCxLQUFLO1FBQ0gsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUE0QixDQUFDO1FBQ2hELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBYyx5QkFBeUIsQ0FBQyxDQUFDO1FBQzNFLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUNqQixNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7O2lIQW5EVSxvQkFBb0I7cUdBQXBCLG9CQUFvQiw4b0JBQ2pCLG9CQUFvQixnRENWcEMsdzdCQW9CQTsyRkRYYSxvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0UsaUJBQWlCLGlCQUdaLGlCQUFpQixDQUFDLElBQUk7aUdBR0Qsb0JBQW9CO3NCQUF2RCxZQUFZO3VCQUFDLG9CQUFvQjtnQkFFbEIsRUFBRTtzQkFBakIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNjLGNBQWM7c0JBQWpDLEtBQUs7dUJBQUMsV0FBVztnQkFDVCxTQUFTO3NCQUFqQixLQUFLO2dCQUVvQyxPQUFPO3NCQUFoRCxLQUFLOztzQkFBSSxXQUFXO3VCQUFDLGtCQUFrQjtnQkFDRyxRQUFRO3NCQUFsRCxLQUFLOztzQkFBSSxXQUFXO3VCQUFDLG1CQUFtQjtnQkFDRSxRQUFRO3NCQUFsRCxLQUFLOztzQkFBSSxXQUFXO3VCQUFDLG1CQUFtQjtnQkFFTixLQUFLO3NCQUF2QyxXQUFXO3VCQUFDLGdCQUFnQjtnQkFDUSxPQUFPO3NCQUEzQyxXQUFXO3VCQUFDLGtCQUFrQjtnQkFDTyxRQUFRO3NCQUE3QyxXQUFXO3VCQUFDLG1CQUFtQjtnQkFFdEIsYUFBYTtzQkFBdEIsTUFBTTtnQkFtQlAsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlYy1mb3JtLWNvbnRyb2wnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tY29udHJvbC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1Db250cm9sQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQENvbnRlbnRDaGlsZChGb3JtQ29udHJvbERpcmVjdGl2ZSkgZm9ybUNvbnRyb2xEaXJlY3RpdmU/OiBBYnN0cmFjdENvbnRyb2w7XHJcbiAgXHJcbiAgQElucHV0KCkgcHVibGljIGlkOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBpY29uPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGFjdGlvbkljb24/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2hvd0NsZWFyID0gdHJ1ZTtcclxuICBASW5wdXQoJ2Zvcm1Nb2RlbCcpIGZvcm1Nb2RlbElucHV0PzogQWJzdHJhY3RDb250cm9sO1xyXG4gIEBJbnB1dCgpIGF1dG9mb2N1cyA9IGZhbHNlO1xyXG4gIFxyXG4gIEBJbnB1dCgpIEBIb3N0QmluZGluZygnY2xhc3MuaXMtcGVuZGluZycpIHBlbmRpbmcgPSBmYWxzZTtcclxuICBASW5wdXQoKSBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLXJlcXVpcmVkJykgcmVxdWlyZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLXJlYWRvbmx5JykgcmVhZG9ubHkgPSBmYWxzZTtcclxuICBcclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLWVtcHR5JykgZ2V0IGVtcHR5KCk6Ym9vbGVhbiB7IHJldHVybiAhdGhpcy5fZm9ybU1vZGVsPy52YWx1ZSAmJiB0aGlzLl9mb3JtTW9kZWw/LnZhbHVlICE9PSAwfTtcclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLWludmFsaWQnKSBnZXQgaW52YWxpZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2Zvcm1Nb2RlbD8udG91Y2hlZCA9PSB0cnVlICYmIHRoaXMuX2Zvcm1Nb2RlbC5pbnZhbGlkID09IHRydWV9O1xyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaXMtZGlzYWJsZWQnKSBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9mb3JtTW9kZWw/LmRpc2FibGVkID09IHRydWUgfTtcclxuICBcclxuICBAT3V0cHV0KCkgYWN0aW9uQ2xpY2tlZDogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XHJcblxyXG4gIHByaXZhdGUgZ2V0IF9mb3JtTW9kZWwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtTW9kZWxJbnB1dCB8fCB0aGlzLmZvcm1Db250cm9sRGlyZWN0aXZlO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZikgeyB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGlmICghdGhpcy5fZm9ybU1vZGVsKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ01pc3NpbmcgW2Zvcm1Nb2RlbF0gaW5wdXQgb3IgW2Zvcm1Db250cm9sXSBkaXJlY3RpdmUgb24gZWMtZm9ybS1jb250cm9sIGNvbnRlbnQuJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuYXV0b2ZvY3VzKSB7XHJcbiAgICAgIHRoaXMuZm9jdXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcclxuICBvbkNsaWNrKCkge1xyXG4gICAgdGhpcy5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgZm9jdXMoKSB7XHJcbiAgICBjb25zdCBlbCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnN0IGlucHV0cyA9IGVsLnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KCdpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCcpO1xyXG4gICAgaWYgKGlucHV0cy5sZW5ndGgpIHtcclxuICAgICAgaW5wdXRzLml0ZW0oMCkuZm9jdXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsZWFyKCkge1xyXG4gICAgdGhpcy5fZm9ybU1vZGVsPy5yZXNldCgpO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbjxpIGlkPVwie3tpZCArICdfaWNvbid9fVwiIGNsYXNzPVwiZWMtZm9ybS1jb250cm9sLWljb24gZWMtaWNvbiB7e2ljb259fVwiPjwvaT5cclxuPGkgaWQ9XCJ7e2lkICsgJ19sb2FkaW5nJ319XCIgY2xhc3M9XCJlYy1mb3JtLWNvbnRyb2wtaWNvbiBlYy1pY29uIGljb24tbG9hZGluZ1wiPjwvaT5cclxuPGkgaWQ9XCJ7e2lkICsgJ19yZXF1aXJlZCd9fVwiIGNsYXNzPVwiZWMtZm9ybS1jb250cm9sLWljb24gZWMtaWNvbiBpY29uLXJlcXVpcmVkXCI+PC9pPlxyXG48aSBpZD1cInt7aWQgKyAnX2ludmFsaWQnfX1cIiBjbGFzcz1cImVjLWZvcm0tY29udHJvbC1pY29uIGVjLWljb24gaWNvbi1pbnZhbGlkXCI+PC9pPlxyXG48YnV0dG9uICpuZ0lmPVwic2hvd0NsZWFyXCJcclxuICAgICAgICBpZD1cInt7aWQgKyAnX2NsZWFyJ319XCJcclxuICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCB1bmRlZmluZWRcIlxyXG4gICAgICAgIGNsYXNzPVwiZWMtZm9ybS1jb250cm9sLWNsZWFyXCJcclxuICAgICAgICAoY2xpY2spPVwiY2xlYXIoKVwiPlxyXG4gIDxpIGNsYXNzPVwiZWMtaWNvbiBpY29uLWNhbmNlbFwiPjwvaT5cclxuPC9idXR0b24+XHJcbjxidXR0b24gKm5nSWY9XCJhY3Rpb25JY29uXCJcclxuICAgICAgICBpZD1cInt7aWQgKyAnX2FjdGlvbid9fVwiXHJcbiAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgdW5kZWZpbmVkXCJcclxuICAgICAgICBjbGFzcz1cImVjLWZvcm0tY29udHJvbC1hY3Rpb25cIlxyXG4gICAgICAgIChjbGljayk9XCJhY3Rpb25DbGlja2VkLmVtaXQoJGV2ZW50KVwiPlxyXG4gIDxpIGNsYXNzPVwiZWMtaWNvbiB7e2FjdGlvbkljb259fVwiPjwvaT5cclxuPC9idXR0b24+XHJcbjxkaXYgY2xhc3M9XCJlYy1mb2N1cy1yaW5nXCI+PC9kaXY+XHJcbiJdfQ==
|