@energycap/components 0.41.1-ECAP-26841-date-input-features.20250108-1149 → 0.42.1
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/{esm2020 → esm2022}/energycap-components.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components.module.mjs +423 -423
- package/esm2022/lib/controls/banner/banner.component.mjs +109 -0
- package/esm2022/lib/controls/button/button.component.mjs +106 -0
- package/esm2022/lib/controls/button/copy-button-base.directive.mjs +67 -0
- package/{esm2020 → esm2022}/lib/controls/button/copy-button.directive.mjs +28 -28
- package/esm2022/lib/controls/button/copy-table-button.directive.mjs +43 -0
- package/esm2022/lib/controls/calendar/calendar-item.component.mjs +91 -0
- package/esm2022/lib/controls/calendar/calendar.component.mjs +248 -0
- package/{esm2020 → esm2022}/lib/controls/calendar/calendar.types.mjs +1 -1
- package/esm2022/lib/controls/checkbox/checkbox.component.mjs +140 -0
- package/{esm2020 → esm2022}/lib/controls/collapsible-toggle/collapsible-toggle.component.mjs +38 -38
- package/esm2022/lib/controls/combobox/combobox.component.mjs +879 -0
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/date-input-selection-strategy-base.mjs +57 -0
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.mjs +62 -0
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.mjs +100 -0
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.mjs +101 -0
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.mjs +76 -0
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.mjs +79 -0
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.mjs +210 -0
- package/esm2022/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.mjs +81 -0
- package/esm2022/lib/controls/date-input/date-input.component.mjs +465 -0
- package/{esm2020 → esm2022}/lib/controls/date-input/date-input.types.mjs +44 -44
- package/esm2022/lib/controls/dropdown/dropdown.component.mjs +243 -0
- package/esm2022/lib/controls/file-upload/file-upload.component.mjs +261 -0
- package/esm2022/lib/controls/form-control/form-control.component.mjs +98 -0
- package/esm2022/lib/controls/form-control-base.mjs +151 -0
- package/esm2022/lib/controls/form-control-label/form-control-label.component.mjs +136 -0
- package/esm2022/lib/controls/form-group/form-group.component.mjs +261 -0
- package/{esm2020 → esm2022}/lib/controls/help-popover/help-popover.component.mjs +31 -31
- package/esm2022/lib/controls/item-picker/item-picker.component.mjs +329 -0
- package/{esm2020 → esm2022}/lib/controls/link-button/link-button.component.mjs +11 -11
- package/esm2022/lib/controls/menu/menu.component.mjs +485 -0
- package/{esm2020 → esm2022}/lib/controls/navigation/link-item.mjs +1 -1
- package/esm2022/lib/controls/navigation/nav-group.mjs +39 -0
- package/esm2022/lib/controls/navigation/nav-item-active.directive.mjs +92 -0
- package/{esm2020 → esm2022}/lib/controls/navigation/nav-item.mjs +1 -1
- package/esm2022/lib/controls/numericbox/numericbox.component.mjs +372 -0
- package/esm2022/lib/controls/popover/popover.component.mjs +117 -0
- package/{esm2020 → esm2022}/lib/controls/radio-button/radio-button-option.mjs +2 -2
- package/esm2022/lib/controls/radio-button/radio-button.component.mjs +82 -0
- package/esm2022/lib/controls/select/select.component.mjs +88 -0
- package/esm2022/lib/controls/tabs/tabs.component.mjs +47 -0
- package/esm2022/lib/controls/textbox/textbox.component.mjs +155 -0
- package/esm2022/lib/core/cache.service.mjs +105 -0
- package/esm2022/lib/core/custom-validators.mjs +29 -0
- package/esm2022/lib/core/date-time-helper.mjs +228 -0
- package/esm2022/lib/core/error.service.mjs +61 -0
- package/esm2022/lib/core/router-helper.service.mjs +111 -0
- package/esm2022/lib/core/scroll.service.mjs +89 -0
- package/{esm2020 → esm2022}/lib/core/telemetry-tracker.service.mjs +16 -16
- package/{esm2020 → esm2022}/lib/core/telemetry.service.mjs +38 -38
- package/esm2022/lib/core/validation-message.service.mjs +185 -0
- package/{esm2020 → esm2022}/lib/core/validation-patterns.mjs +30 -30
- package/esm2022/lib/core/window.service.mjs +186 -0
- package/esm2022/lib/display/app-bar/app-bar.component.mjs +46 -0
- package/esm2022/lib/display/avatar/avatar.component.mjs +67 -0
- package/esm2022/lib/display/avatar/avatar.service.mjs +64 -0
- package/esm2022/lib/display/confirm/confirm.component.mjs +168 -0
- package/{esm2020 → esm2022}/lib/display/dialog/dialog-content.mjs +1 -1
- package/esm2022/lib/display/dialog/dialog-group/dialog-group.component.mjs +63 -0
- package/{esm2020 → esm2022}/lib/display/dialog/dialog-types.mjs +76 -76
- package/esm2022/lib/display/dialog/dialog.component.mjs +281 -0
- package/{esm2020 → esm2022}/lib/display/dialog/dialog.service.mjs +71 -71
- package/{esm2020 → esm2022}/lib/display/help/help-types.mjs +1 -1
- package/esm2022/lib/display/hierarchy/hierarchy-base.mjs +111 -0
- package/{esm2020 → esm2022}/lib/display/hierarchy/hierarchy-mocks.spec.mjs +53 -53
- package/esm2022/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +61 -0
- package/esm2022/lib/display/item-display/item-display.component.mjs +81 -0
- package/esm2022/lib/display/json-display/json-display.component.mjs +47 -0
- package/esm2022/lib/display/resizable/resizable-base.mjs +120 -0
- package/{esm2020 → esm2022}/lib/display/resizable/resizable.component.mjs +52 -52
- package/{esm2020 → esm2022}/lib/display/spinner/spinner.component.mjs +12 -12
- package/esm2022/lib/display/splash/splash.component.mjs +42 -0
- package/{esm2020 → esm2022}/lib/display/splash/splash.service.mjs +35 -35
- package/{esm2020 → esm2022}/lib/display/table/resizable-column.component.mjs +20 -20
- package/esm2022/lib/display/table/resizable-table.directive.mjs +227 -0
- package/esm2022/lib/display/table/searchable-table.component.mjs +342 -0
- package/{esm2020 → esm2022}/lib/display/table/table-detail-row.component.mjs +19 -19
- package/esm2022/lib/display/table/table-locked-column.component.mjs +58 -0
- package/{esm2020 → esm2022}/lib/display/table/table-master-header-row.component.mjs +14 -14
- package/esm2022/lib/display/table/table-master-row.component.mjs +163 -0
- package/esm2022/lib/display/table/table-pagination.component.mjs +155 -0
- package/esm2022/lib/display/table/table-selectable-row.component.mjs +235 -0
- package/esm2022/lib/display/table/table.component.mjs +249 -0
- package/esm2022/lib/display/tags/tag.mjs +18 -0
- package/esm2022/lib/display/tags/tags.component.mjs +77 -0
- package/esm2022/lib/display/toast/toast/toast.component.mjs +77 -0
- package/{esm2020 → esm2022}/lib/display/toast/toast-types.mjs +7 -7
- package/{esm2020 → esm2022}/lib/display/toast/toast.service.mjs +35 -35
- package/esm2022/lib/display/toast/toaster/toaster.component.mjs +114 -0
- package/{esm2020 → esm2022}/lib/display/tooltip/tooltip.component.mjs +28 -28
- package/{esm2020 → esm2022}/lib/display/tooltip/tooltip.service.mjs +78 -78
- package/esm2022/lib/display/tooltip-directive/tooltip.directive.mjs +173 -0
- package/{esm2020 → esm2022}/lib/display/tour/tour-types.mjs +33 -33
- package/esm2022/lib/display/tour/tour.component.mjs +398 -0
- package/esm2022/lib/display/tour/tour.service.mjs +75 -0
- package/esm2022/lib/display/tree/tree.component.mjs +135 -0
- package/esm2022/lib/display/view-overlay/view-overlay.component.mjs +58 -0
- package/esm2022/lib/shared/directives/click-area-for/click-area-for.directive.mjs +32 -0
- package/esm2022/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +111 -0
- package/{esm2020 → esm2022}/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.mjs +100 -100
- package/esm2022/lib/shared/directives/popup/popup-container.directive.mjs +166 -0
- package/esm2022/lib/shared/display/pipes/date-display.pipe.mjs +50 -0
- package/esm2022/lib/shared/display/pipes/highlight-text.pipe.mjs +30 -0
- package/esm2022/lib/shared/display/pipes/relative-date.pipe.mjs +62 -0
- package/esm2022/lib/shared/display/pipes/row-count.pipe.mjs +48 -0
- package/esm2022/lib/shared/display/pipes/time-display.pipe.mjs +41 -0
- package/esm2022/lib/shared/display.mjs +6 -0
- package/esm2022/lib/shared/form-group.helper.mjs +67 -0
- package/esm2022/lib/shared/json-helper.mjs +19 -0
- package/esm2022/lib/shared/lodash-helper.mjs +52 -0
- package/esm2022/lib/shared/page/page-base/page-base.component.mjs +387 -0
- package/{esm2020 → esm2022}/lib/shared/page/page-statuses.mjs +22 -22
- package/{esm2020 → esm2022}/lib/shared/page/page-title/page-title.component.mjs +23 -23
- package/esm2022/lib/shared/page/page-view/page-view.component.mjs +147 -0
- package/{esm2020 → esm2022}/lib/shared/testing/copy-button-base-test-injector-factory.spec.mjs +16 -16
- package/{esm2020 → esm2022}/lib/shared/testing/hierarchy-base-test-injector-factory.spec.mjs +16 -16
- package/{esm2020 → esm2022}/lib/shared/testing/page-base-component-test-helper.spec.mjs +37 -37
- package/esm2022/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs +98 -0
- package/{esm2020 → esm2022}/lib/shared/testing/public-mocks.spec.mjs +148 -148
- package/{esm2020 → esm2022}/lib/shared/testing/spy-factory.spec.mjs +39 -39
- package/{esm2020 → esm2022}/lib/shared/testing/translation-mocks.spec.mjs +56 -56
- package/{esm2020 → esm2022}/lib/shared/user-preference.service.mjs +17 -17
- package/esm2022/lib/shared/wizard/wizard-base/wizard-base.component.mjs +246 -0
- package/{esm2020 → esm2022}/lib/shared/wizard/wizard-buttons/wizard-buttons.component.mjs +68 -68
- package/{esm2020 → esm2022}/lib/shared/wizard/wizard-progress/wizard-progress.component.mjs +18 -18
- package/{esm2020 → esm2022}/public-api.mjs +116 -116
- package/{fesm2020 → fesm2022}/energycap-components.mjs +12956 -12952
- package/fesm2022/energycap-components.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/components.module.d.ts +92 -92
- 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 -22
- package/lib/controls/calendar/calendar.component.d.ts +52 -52
- package/lib/controls/calendar/calendar.types.d.ts +11 -11
- 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 -42
- package/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.d.ts +21 -21
- package/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.d.ts +21 -21
- package/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.d.ts +21 -21
- package/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.d.ts +18 -18
- package/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.d.ts +18 -18
- package/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.d.ts +21 -21
- package/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.d.ts +20 -20
- package/lib/controls/date-input/date-input.component.d.ts +115 -115
- package/lib/controls/date-input/date-input.types.d.ts +62 -62
- 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 -28
- 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 -23
- 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 +12 -18
- package/public-api.d.ts +113 -113
- 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/esm2020/lib/controls/banner/banner.component.mjs +0 -109
- package/esm2020/lib/controls/button/button.component.mjs +0 -106
- package/esm2020/lib/controls/button/copy-button-base.directive.mjs +0 -67
- package/esm2020/lib/controls/button/copy-table-button.directive.mjs +0 -43
- package/esm2020/lib/controls/calendar/calendar-item.component.mjs +0 -91
- package/esm2020/lib/controls/calendar/calendar.component.mjs +0 -248
- package/esm2020/lib/controls/checkbox/checkbox.component.mjs +0 -140
- package/esm2020/lib/controls/combobox/combobox.component.mjs +0 -879
- package/esm2020/lib/controls/date-input/date-input-selection-strategies/date-input-selection-strategy-base.mjs +0 -57
- package/esm2020/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.mjs +0 -62
- package/esm2020/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.mjs +0 -100
- package/esm2020/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.mjs +0 -101
- package/esm2020/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.mjs +0 -76
- package/esm2020/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.mjs +0 -79
- package/esm2020/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.mjs +0 -210
- package/esm2020/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.mjs +0 -81
- package/esm2020/lib/controls/date-input/date-input.component.mjs +0 -465
- package/esm2020/lib/controls/dropdown/dropdown.component.mjs +0 -243
- package/esm2020/lib/controls/file-upload/file-upload.component.mjs +0 -261
- package/esm2020/lib/controls/form-control/form-control.component.mjs +0 -98
- package/esm2020/lib/controls/form-control-base.mjs +0 -151
- package/esm2020/lib/controls/form-control-label/form-control-label.component.mjs +0 -136
- package/esm2020/lib/controls/form-group/form-group.component.mjs +0 -261
- package/esm2020/lib/controls/item-picker/item-picker.component.mjs +0 -329
- package/esm2020/lib/controls/menu/menu.component.mjs +0 -485
- package/esm2020/lib/controls/navigation/nav-group.mjs +0 -39
- package/esm2020/lib/controls/navigation/nav-item-active.directive.mjs +0 -92
- package/esm2020/lib/controls/numericbox/numericbox.component.mjs +0 -372
- package/esm2020/lib/controls/popover/popover.component.mjs +0 -117
- package/esm2020/lib/controls/radio-button/radio-button.component.mjs +0 -82
- package/esm2020/lib/controls/select/select.component.mjs +0 -88
- package/esm2020/lib/controls/tabs/tabs.component.mjs +0 -47
- package/esm2020/lib/controls/textbox/textbox.component.mjs +0 -155
- package/esm2020/lib/core/cache.service.mjs +0 -105
- package/esm2020/lib/core/custom-validators.mjs +0 -29
- package/esm2020/lib/core/date-time-helper.mjs +0 -228
- package/esm2020/lib/core/error.service.mjs +0 -61
- package/esm2020/lib/core/router-helper.service.mjs +0 -111
- package/esm2020/lib/core/scroll.service.mjs +0 -89
- package/esm2020/lib/core/validation-message.service.mjs +0 -185
- package/esm2020/lib/core/window.service.mjs +0 -186
- package/esm2020/lib/display/app-bar/app-bar.component.mjs +0 -46
- package/esm2020/lib/display/avatar/avatar.component.mjs +0 -67
- package/esm2020/lib/display/avatar/avatar.service.mjs +0 -64
- package/esm2020/lib/display/confirm/confirm.component.mjs +0 -168
- package/esm2020/lib/display/dialog/dialog-group/dialog-group.component.mjs +0 -63
- package/esm2020/lib/display/dialog/dialog.component.mjs +0 -281
- package/esm2020/lib/display/hierarchy/hierarchy-base.mjs +0 -111
- package/esm2020/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +0 -61
- package/esm2020/lib/display/item-display/item-display.component.mjs +0 -81
- package/esm2020/lib/display/json-display/json-display.component.mjs +0 -47
- package/esm2020/lib/display/resizable/resizable-base.mjs +0 -120
- package/esm2020/lib/display/splash/splash.component.mjs +0 -42
- package/esm2020/lib/display/table/resizable-table.directive.mjs +0 -227
- package/esm2020/lib/display/table/searchable-table.component.mjs +0 -342
- package/esm2020/lib/display/table/table-locked-column.component.mjs +0 -58
- package/esm2020/lib/display/table/table-master-row.component.mjs +0 -163
- package/esm2020/lib/display/table/table-pagination.component.mjs +0 -155
- package/esm2020/lib/display/table/table-selectable-row.component.mjs +0 -235
- package/esm2020/lib/display/table/table.component.mjs +0 -249
- package/esm2020/lib/display/tags/tag.mjs +0 -18
- package/esm2020/lib/display/tags/tags.component.mjs +0 -77
- package/esm2020/lib/display/toast/toast/toast.component.mjs +0 -77
- package/esm2020/lib/display/toast/toaster/toaster.component.mjs +0 -114
- package/esm2020/lib/display/tooltip-directive/tooltip.directive.mjs +0 -173
- package/esm2020/lib/display/tour/tour.component.mjs +0 -398
- package/esm2020/lib/display/tour/tour.service.mjs +0 -75
- package/esm2020/lib/display/tree/tree.component.mjs +0 -135
- package/esm2020/lib/display/view-overlay/view-overlay.component.mjs +0 -58
- package/esm2020/lib/shared/directives/click-area-for/click-area-for.directive.mjs +0 -32
- package/esm2020/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +0 -111
- package/esm2020/lib/shared/directives/popup/popup-container.directive.mjs +0 -163
- package/esm2020/lib/shared/display/pipes/date-display.pipe.mjs +0 -50
- package/esm2020/lib/shared/display/pipes/highlight-text.pipe.mjs +0 -30
- package/esm2020/lib/shared/display/pipes/relative-date.pipe.mjs +0 -62
- package/esm2020/lib/shared/display/pipes/row-count.pipe.mjs +0 -48
- package/esm2020/lib/shared/display/pipes/time-display.pipe.mjs +0 -41
- package/esm2020/lib/shared/display.mjs +0 -6
- package/esm2020/lib/shared/form-group.helper.mjs +0 -67
- package/esm2020/lib/shared/json-helper.mjs +0 -19
- package/esm2020/lib/shared/lodash-helper.mjs +0 -51
- package/esm2020/lib/shared/page/page-base/page-base.component.mjs +0 -387
- package/esm2020/lib/shared/page/page-view/page-view.component.mjs +0 -147
- package/esm2020/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs +0 -98
- package/esm2020/lib/shared/wizard/wizard-base/wizard-base.component.mjs +0 -246
- package/fesm2015/energycap-components.mjs +0 -13373
- package/fesm2015/energycap-components.mjs.map +0 -1
- package/fesm2020/energycap-components.mjs.map +0 -1
@@ -1,77 +1,77 @@
|
|
1
|
-
import { uniqueId } from 'lodash';
|
2
|
-
/**A base class from which all dialog events extend. This class models the dialog actions very much
|
3
|
-
* like the Angular RouterEvents.
|
4
|
-
*/
|
5
|
-
export class DialogEvent {
|
6
|
-
constructor(
|
7
|
-
/**A unique value representing this particular instance of the event, used to match open and close events together */
|
8
|
-
eventId,
|
9
|
-
/**The ID of the dialog itself, typically matching the DialogContent. Something like "DeleteConfirmation" or "EditReading" etc.
|
10
|
-
* Useful for telemetry logging to track users opening and closing dialogs
|
11
|
-
*/
|
12
|
-
dialogId = '',
|
13
|
-
/** The action the dialog event represents. Can also be determined by using the class of the event with the
|
14
|
-
* instanceof operator.
|
15
|
-
*/
|
16
|
-
dialogAction = 'openStart') {
|
17
|
-
this.eventId = eventId;
|
18
|
-
this.dialogId = dialogId;
|
19
|
-
this.dialogAction = dialogAction;
|
20
|
-
}
|
21
|
-
}
|
22
|
-
/**Emitted when the dialog open has been triggered, but the dialog itself hasn't initialized yet.
|
23
|
-
* This event creates its own unique identifier so that that particular instance of the dialog can be found
|
24
|
-
* when closed later on. The context is used to fill the dialog itself, and may include state or callbacks.
|
25
|
-
* Various options are available to change the dialog appearance. These events are generally created
|
26
|
-
* by the @see DialogService.open() call
|
27
|
-
*/
|
28
|
-
export class DialogOpenStartEvent extends DialogEvent {
|
29
|
-
constructor(content, context, options) {
|
30
|
-
super(uniqueId());
|
31
|
-
this.content = content;
|
32
|
-
this.context = context;
|
33
|
-
this.options = options;
|
34
|
-
}
|
35
|
-
}
|
36
|
-
/**Emitted when the dialog has finished opening and been properly initialized. It includes
|
37
|
-
* the eventId, which uniquely identifies the particular instance of the dialog open event so that we can
|
38
|
-
* close that specific dialog later on. The dialogId can be used for telemetry, and may be set to something
|
39
|
-
* like "Confirm Delete" or "Edit Reading" etc.
|
40
|
-
*/
|
41
|
-
export class DialogOpenEndEvent extends DialogEvent {
|
42
|
-
constructor(eventId, dialogId) {
|
43
|
-
super(eventId, dialogId, 'open');
|
44
|
-
}
|
45
|
-
}
|
46
|
-
/**Emitted when the dialog close has completed and a result is available. Check result.save to know if the dialog change
|
47
|
-
* was committed (true) or cancelled (false). Cancel can be set if the dialog was automatically closed by clicking in the
|
48
|
-
* background or resizing the window when using the panel view or closeOnResize.
|
49
|
-
*/
|
50
|
-
export class DialogCloseEvent extends DialogEvent {
|
51
|
-
constructor(eventId, dialogId, save = false, context) {
|
52
|
-
super(eventId, dialogId, 'close');
|
53
|
-
this.dialogResult = new DialogResult(save, context);
|
54
|
-
}
|
55
|
-
}
|
56
|
-
/**Used to tell the dialog group to close whatever dialog was opened most recently with the given result
|
57
|
-
* This allows a TemplateRef based panel (that's not coming from DialogComponent) to close itself or
|
58
|
-
* an external process to close a dialog that is open
|
59
|
-
*/
|
60
|
-
export class DialogCloseLatestEvent extends DialogEvent {
|
61
|
-
constructor(result) {
|
62
|
-
super('latest', 'latest', 'closeLatest');
|
63
|
-
this.dialogResult = result;
|
64
|
-
}
|
65
|
-
}
|
66
|
-
/**
|
67
|
-
* Returned when a dialog is closed.
|
68
|
-
* Specifies if the dialog was saved and contains an optional context.
|
69
|
-
*/
|
70
|
-
export class DialogResult {
|
71
|
-
constructor(save, context) {
|
72
|
-
this.save = save;
|
73
|
-
this.context = context;
|
74
|
-
}
|
75
|
-
}
|
76
|
-
;
|
1
|
+
import { uniqueId } from 'lodash';
|
2
|
+
/**A base class from which all dialog events extend. This class models the dialog actions very much
|
3
|
+
* like the Angular RouterEvents.
|
4
|
+
*/
|
5
|
+
export class DialogEvent {
|
6
|
+
constructor(
|
7
|
+
/**A unique value representing this particular instance of the event, used to match open and close events together */
|
8
|
+
eventId,
|
9
|
+
/**The ID of the dialog itself, typically matching the DialogContent. Something like "DeleteConfirmation" or "EditReading" etc.
|
10
|
+
* Useful for telemetry logging to track users opening and closing dialogs
|
11
|
+
*/
|
12
|
+
dialogId = '',
|
13
|
+
/** The action the dialog event represents. Can also be determined by using the class of the event with the
|
14
|
+
* instanceof operator.
|
15
|
+
*/
|
16
|
+
dialogAction = 'openStart') {
|
17
|
+
this.eventId = eventId;
|
18
|
+
this.dialogId = dialogId;
|
19
|
+
this.dialogAction = dialogAction;
|
20
|
+
}
|
21
|
+
}
|
22
|
+
/**Emitted when the dialog open has been triggered, but the dialog itself hasn't initialized yet.
|
23
|
+
* This event creates its own unique identifier so that that particular instance of the dialog can be found
|
24
|
+
* when closed later on. The context is used to fill the dialog itself, and may include state or callbacks.
|
25
|
+
* Various options are available to change the dialog appearance. These events are generally created
|
26
|
+
* by the @see DialogService.open() call
|
27
|
+
*/
|
28
|
+
export class DialogOpenStartEvent extends DialogEvent {
|
29
|
+
constructor(content, context, options) {
|
30
|
+
super(uniqueId());
|
31
|
+
this.content = content;
|
32
|
+
this.context = context;
|
33
|
+
this.options = options;
|
34
|
+
}
|
35
|
+
}
|
36
|
+
/**Emitted when the dialog has finished opening and been properly initialized. It includes
|
37
|
+
* the eventId, which uniquely identifies the particular instance of the dialog open event so that we can
|
38
|
+
* close that specific dialog later on. The dialogId can be used for telemetry, and may be set to something
|
39
|
+
* like "Confirm Delete" or "Edit Reading" etc.
|
40
|
+
*/
|
41
|
+
export class DialogOpenEndEvent extends DialogEvent {
|
42
|
+
constructor(eventId, dialogId) {
|
43
|
+
super(eventId, dialogId, 'open');
|
44
|
+
}
|
45
|
+
}
|
46
|
+
/**Emitted when the dialog close has completed and a result is available. Check result.save to know if the dialog change
|
47
|
+
* was committed (true) or cancelled (false). Cancel can be set if the dialog was automatically closed by clicking in the
|
48
|
+
* background or resizing the window when using the panel view or closeOnResize.
|
49
|
+
*/
|
50
|
+
export class DialogCloseEvent extends DialogEvent {
|
51
|
+
constructor(eventId, dialogId, save = false, context) {
|
52
|
+
super(eventId, dialogId, 'close');
|
53
|
+
this.dialogResult = new DialogResult(save, context);
|
54
|
+
}
|
55
|
+
}
|
56
|
+
/**Used to tell the dialog group to close whatever dialog was opened most recently with the given result
|
57
|
+
* This allows a TemplateRef based panel (that's not coming from DialogComponent) to close itself or
|
58
|
+
* an external process to close a dialog that is open
|
59
|
+
*/
|
60
|
+
export class DialogCloseLatestEvent extends DialogEvent {
|
61
|
+
constructor(result) {
|
62
|
+
super('latest', 'latest', 'closeLatest');
|
63
|
+
this.dialogResult = result;
|
64
|
+
}
|
65
|
+
}
|
66
|
+
/**
|
67
|
+
* Returned when a dialog is closed.
|
68
|
+
* Specifies if the dialog was saved and contains an optional context.
|
69
|
+
*/
|
70
|
+
export class DialogResult {
|
71
|
+
constructor(save, context) {
|
72
|
+
this.save = save;
|
73
|
+
this.context = context;
|
74
|
+
}
|
75
|
+
}
|
76
|
+
;
|
77
77
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvZGlhbG9nL2RpYWxvZy10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBR2xDOztHQUVHO0FBQ0YsTUFBTSxPQUFPLFdBQVc7SUFDdkI7SUFDRSxxSEFBcUg7SUFDOUcsT0FBZ0I7SUFFdkI7O01BRUU7SUFDSyxXQUFtQixFQUFFO0lBRTVCOztPQUVHO0lBQ0ksZUFBOEQsV0FBVztRQVZ6RSxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBS2hCLGFBQVEsR0FBUixRQUFRLENBQWE7UUFLckIsaUJBQVksR0FBWixZQUFZLENBQTZEO0lBQy9FLENBQUM7Q0FDTDtBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLG9CQUF3QixTQUFRLFdBQVc7SUFDdEQsWUFBbUIsT0FBa0QsRUFBUyxPQUFXLEVBQVMsT0FBdUI7UUFDdkgsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFERCxZQUFPLEdBQVAsT0FBTyxDQUEyQztRQUFTLFlBQU8sR0FBUCxPQUFPLENBQUk7UUFBUyxZQUFPLEdBQVAsT0FBTyxDQUFnQjtJQUV6SCxDQUFDO0NBQ0Y7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFdBQVc7SUFDakQsWUFBWSxPQUFnQixFQUFFLFFBQWlCO1FBQzdDLEtBQUssQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLENBQUM7Q0FDRjtBQUVEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxnQkFBb0IsU0FBUSxXQUFXO0lBR2xELFlBQVksT0FBZ0IsRUFBRSxRQUFpQixFQUFFLElBQUksR0FBQyxLQUFLLEVBQUUsT0FBVztRQUN0RSxLQUFLLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0RCxDQUFDO0NBQ0Y7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sc0JBQTBCLFNBQVEsV0FBVztJQUl4RCxZQUFZLE1BQXVCO1FBQ2pDLEtBQUssQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDO0lBQzdCLENBQUM7Q0FDRjtBQTJERDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUN2QixZQUFtQixJQUFhLEVBQVMsT0FBVztRQUFqQyxTQUFJLEdBQUosSUFBSSxDQUFTO1FBQVMsWUFBTyxHQUFQLE9BQU8sQ0FBSTtJQUFJLENBQUM7Q0FDMUQ7QUFBQSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVtcGxhdGVSZWYsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdW5pcXVlSWQgfSBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBEaWFsb2dDb250ZW50IH0gZnJvbSAnLi9kaWFsb2ctY29udGVudCc7XHJcblxyXG4vKipBIGJhc2UgY2xhc3MgZnJvbSB3aGljaCBhbGwgZGlhbG9nIGV2ZW50cyBleHRlbmQuIFRoaXMgY2xhc3MgbW9kZWxzIHRoZSBkaWFsb2cgYWN0aW9ucyB2ZXJ5IG11Y2hcclxuICogbGlrZSB0aGUgQW5ndWxhciBSb3V0ZXJFdmVudHMuXHJcbiAqL1xyXG4gZXhwb3J0IGNsYXNzIERpYWxvZ0V2ZW50IHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIC8qKkEgdW5pcXVlIHZhbHVlIHJlcHJlc2VudGluZyB0aGlzIHBhcnRpY3VsYXIgaW5zdGFuY2Ugb2YgdGhlIGV2ZW50LCB1c2VkIHRvIG1hdGNoIG9wZW4gYW5kIGNsb3NlIGV2ZW50cyB0b2dldGhlciAqL1xyXG4gICAgcHVibGljIGV2ZW50SWQ/OiBzdHJpbmcsIFxyXG5cclxuICAgIC8qKlRoZSBJRCBvZiB0aGUgZGlhbG9nIGl0c2VsZiwgdHlwaWNhbGx5IG1hdGNoaW5nIHRoZSBEaWFsb2dDb250ZW50LiBTb21ldGhpbmcgbGlrZSBcIkRlbGV0ZUNvbmZpcm1hdGlvblwiIG9yIFwiRWRpdFJlYWRpbmdcIiBldGMuIFxyXG4gICAgICogVXNlZnVsIGZvciB0ZWxlbWV0cnkgbG9nZ2luZyB0byB0cmFjayB1c2VycyBvcGVuaW5nIGFuZCBjbG9zaW5nIGRpYWxvZ3NcclxuICAgICovXHJcbiAgICBwdWJsaWMgZGlhbG9nSWQ6IHN0cmluZyA9ICcnLFxyXG5cclxuICAgIC8qKiBUaGUgYWN0aW9uIHRoZSBkaWFsb2cgZXZlbnQgcmVwcmVzZW50cy4gQ2FuIGFsc28gYmUgZGV0ZXJtaW5lZCBieSB1c2luZyB0aGUgY2xhc3Mgb2YgdGhlIGV2ZW50IHdpdGggdGhlXHJcbiAgICAgKiBpbnN0YW5jZW9mIG9wZXJhdG9yLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZGlhbG9nQWN0aW9uOiAnb3BlblN0YXJ0JyB8J29wZW4nIHwgJ2Nsb3NlJyB8ICdjbG9zZUxhdGVzdCcgPSAnb3BlblN0YXJ0JyxcclxuICApIHt9XHJcbn1cclxuXHJcbi8qKkVtaXR0ZWQgd2hlbiB0aGUgZGlhbG9nIG9wZW4gaGFzIGJlZW4gdHJpZ2dlcmVkLCBidXQgdGhlIGRpYWxvZyBpdHNlbGYgaGFzbid0IGluaXRpYWxpemVkIHlldC5cclxuICogVGhpcyBldmVudCBjcmVhdGVzIGl0cyBvd24gdW5pcXVlIGlkZW50aWZpZXIgc28gdGhhdCB0aGF0IHBhcnRpY3VsYXIgaW5zdGFuY2Ugb2YgdGhlIGRpYWxvZyBjYW4gYmUgZm91bmRcclxuICogd2hlbiBjbG9zZWQgbGF0ZXIgb24uIFRoZSBjb250ZXh0IGlzIHVzZWQgdG8gZmlsbCB0aGUgZGlhbG9nIGl0c2VsZiwgYW5kIG1heSBpbmNsdWRlIHN0YXRlIG9yIGNhbGxiYWNrcy5cclxuICogVmFyaW91cyBvcHRpb25zIGFyZSBhdmFpbGFibGUgdG8gY2hhbmdlIHRoZSBkaWFsb2cgYXBwZWFyYW5jZS4gVGhlc2UgZXZlbnRzIGFyZSBnZW5lcmFsbHkgY3JlYXRlZFxyXG4gKiBieSB0aGUgQHNlZSBEaWFsb2dTZXJ2aWNlLm9wZW4oKSBjYWxsXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRGlhbG9nT3BlblN0YXJ0RXZlbnQ8VD4gZXh0ZW5kcyBEaWFsb2dFdmVudCB7XHJcbiAgY29uc3RydWN0b3IocHVibGljIGNvbnRlbnQ6IFR5cGU8RGlhbG9nQ29udGVudDxUPj4gfCBUZW1wbGF0ZVJlZjxhbnk+LCBwdWJsaWMgY29udGV4dD86IFQsIHB1YmxpYyBvcHRpb25zPzogRGlhbG9nT3B0aW9ucykge1xyXG4gICAgc3VwZXIodW5pcXVlSWQoKSk7XHJcbiAgfVxyXG59XHJcblxyXG4vKipFbWl0dGVkIHdoZW4gdGhlIGRpYWxvZyBoYXMgZmluaXNoZWQgb3BlbmluZyBhbmQgYmVlbiBwcm9wZXJseSBpbml0aWFsaXplZC4gSXQgaW5jbHVkZXNcclxuICogdGhlIGV2ZW50SWQsIHdoaWNoIHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIHBhcnRpY3VsYXIgaW5zdGFuY2Ugb2YgdGhlIGRpYWxvZyBvcGVuIGV2ZW50IHNvIHRoYXQgd2UgY2FuIFxyXG4gKiBjbG9zZSB0aGF0IHNwZWNpZmljIGRpYWxvZyBsYXRlciBvbi4gVGhlIGRpYWxvZ0lkIGNhbiBiZSB1c2VkIGZvciB0ZWxlbWV0cnksIGFuZCBtYXkgYmUgc2V0IHRvIHNvbWV0aGluZyBcclxuICogbGlrZSBcIkNvbmZpcm0gRGVsZXRlXCIgb3IgXCJFZGl0IFJlYWRpbmdcIiBldGMuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRGlhbG9nT3BlbkVuZEV2ZW50IGV4dGVuZHMgRGlhbG9nRXZlbnQge1xyXG4gIGNvbnN0cnVjdG9yKGV2ZW50SWQ/OiBzdHJpbmcsIGRpYWxvZ0lkPzogc3RyaW5nKSB7XHJcbiAgICBzdXBlcihldmVudElkLCBkaWFsb2dJZCwgJ29wZW4nKTtcclxuICB9XHJcbn1cclxuXHJcbi8qKkVtaXR0ZWQgd2hlbiB0aGUgZGlhbG9nIGNsb3NlIGhhcyBjb21wbGV0ZWQgYW5kIGEgcmVzdWx0IGlzIGF2YWlsYWJsZS4gQ2hlY2sgcmVzdWx0LnNhdmUgdG8ga25vdyBpZiB0aGUgZGlhbG9nIGNoYW5nZVxyXG4gKiB3YXMgY29tbWl0dGVkICh0cnVlKSBvciBjYW5jZWxsZWQgKGZhbHNlKS4gQ2FuY2VsIGNhbiBiZSBzZXQgaWYgdGhlIGRpYWxvZyB3YXMgYXV0b21hdGljYWxseSBjbG9zZWQgYnkgY2xpY2tpbmcgaW4gdGhlIFxyXG4gKiBiYWNrZ3JvdW5kIG9yIHJlc2l6aW5nIHRoZSB3aW5kb3cgd2hlbiB1c2luZyB0aGUgcGFuZWwgdmlldyBvciBjbG9zZU9uUmVzaXplLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIERpYWxvZ0Nsb3NlRXZlbnQ8VD4gZXh0ZW5kcyBEaWFsb2dFdmVudCB7XHJcbiAgLyoqVGhlIHJlc3VsdCBvZiB0aGUgZGlhbG9nIGV2ZW50LCBpbmNsdWRpbmcgd2VhdGhlciBpdCB3YXMgc2F2ZWQgb3IgY2FuY2VsbGVkIGFuZCB0aGUgY29udGV4dCdzIGZpbmFsIHN0YXRlKi9cclxuICBwdWJsaWMgZGlhbG9nUmVzdWx0OiBEaWFsb2dSZXN1bHQ8YW55PjtcclxuICBjb25zdHJ1Y3RvcihldmVudElkPzogc3RyaW5nLCBkaWFsb2dJZD86IHN0cmluZywgc2F2ZT1mYWxzZSwgY29udGV4dD86IFQpIHtcclxuICAgIHN1cGVyKGV2ZW50SWQsIGRpYWxvZ0lkLCAnY2xvc2UnKTtcclxuICAgIHRoaXMuZGlhbG9nUmVzdWx0ID0gbmV3IERpYWxvZ1Jlc3VsdChzYXZlLCBjb250ZXh0KTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlVzZWQgdG8gdGVsbCB0aGUgZGlhbG9nIGdyb3VwIHRvIGNsb3NlIHdoYXRldmVyIGRpYWxvZyB3YXMgb3BlbmVkIG1vc3QgcmVjZW50bHkgd2l0aCB0aGUgZ2l2ZW4gcmVzdWx0XHJcbiAqIFRoaXMgYWxsb3dzIGEgVGVtcGxhdGVSZWYgYmFzZWQgcGFuZWwgKHRoYXQncyBub3QgY29taW5nIGZyb20gRGlhbG9nQ29tcG9uZW50KSB0byBjbG9zZSBpdHNlbGYgb3IgXHJcbiAqIGFuIGV4dGVybmFsIHByb2Nlc3MgdG8gY2xvc2UgYSBkaWFsb2cgdGhhdCBpcyBvcGVuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRGlhbG9nQ2xvc2VMYXRlc3RFdmVudDxUPiBleHRlbmRzIERpYWxvZ0V2ZW50IHtcclxuICAvKipUaGUgcmVzdWx0IG9mIHRoZSBkaWFsb2cgZXZlbnQsIGluY2x1ZGluZyB3ZWF0aGVyIGl0IHdhcyBzYXZlZCBvciBjYW5jZWxsZWQgYW5kIHRoZSBjb250ZXh0J3MgZmluYWwgc3RhdGUqL1xyXG4gIHB1YmxpYyBkaWFsb2dSZXN1bHQ6IERpYWxvZ1Jlc3VsdDxhbnk+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihyZXN1bHQ6IERpYWxvZ1Jlc3VsdDxUPikge1xyXG4gICAgc3VwZXIoJ2xhdGVzdCcsICdsYXRlc3QnLCAnY2xvc2VMYXRlc3QnKTtcclxuICAgIHRoaXMuZGlhbG9nUmVzdWx0ID0gcmVzdWx0O1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFRoaXMgaW50ZXJmYWNlIHNwZWNpZmllcyBleHRyYSBvcHRpb25zIHRvIGNvbmZpZ3VyZSBiZWhhdmlvciBvZiB0aGUgRGlhbG9nIENvbXBvbmVudFxyXG4gKi9cclxuIGV4cG9ydCBpbnRlcmZhY2UgRGlhbG9nT3B0aW9ucyB7XHJcbiAgLyoqXHJcbiAgICogRnVuY3Rpb24gdG8gZXhlY3V0ZSBiZWZvcmUgZGlhbG9nIG9wZW5zLiAgTGVhdmUgYHVuZGVmaW5lZGAgb3IgcmV0dXJuIHRydWUgdG8gYWxsb3dcclxuICAgKiBkaWFsb2cgdG8gb3Blbi5cclxuICAgKlxyXG4gICAqIENhbiBiZSB1c2VkIHRvIGNoZWNrIGZvciB1bnNhdmVkIGNoYW5nZXMgb24gdGhlIHVuZGVybHlpbmcgcGFnZSBiZWZvcmUgb3BlbmluZy5cclxuICAgKlxyXG4gICAqIEBleGFtcGxlXHJcbiAgICAgY29uc3RydWN0b3IoIHByaXZhdGUgdW5zYXZlZENoYW5nZXNHdWFyZDogQ2FuRGVhY3RpdmF0ZVVuc2F2ZWRDaGFuZ2VzR3VhcmQgKXt9O1xyXG4gICAgIC8vLi4uXHJcbiAgICAgY29uc3Qgb3B0aW9uczogRGlhbG9nT3B0aW9ucyA9IHsgY2FuT3BlbkRpYWxvZzogdGhpcy51bnNhdmVkQ2hhbmdlc0d1YXJkLmNhbkRlYWN0aXZhdGUgfTtcclxuICAgKi9cclxuICBjYW5PcGVuRGlhbG9nPzogKCkgPT4gUHJvbWlzZTxib29sZWFuPjtcclxuXHJcbiAgLyoqIENvbmZpZ3VyZXMgd2hlbiB0aGUgZGlhbG9nIGVtaXRzIGl0cyByZXN1bHQgaW4gcmVsYXRpb24gdG8gYSBjbG9zaW5nIGFuaW1hdGlvbiBldmVudCAqL1xyXG4gIGVtaXRSZXN1bHRPbj86IERpYWxvZ0FuaW1hdGlvbkV2ZW50O1xyXG5cclxuICAvKiogRGlzcGxheSB0aGUgZGlhbG9nIGFzIGEgc2lkZSBwYW5lbCB0aGF0IHNsaWRlcyBpbiAqL1xyXG4gIGRpc3BsYXlBc1BhbmVsPzogYm9vbGVhbjtcclxuXHJcbiAgLyoqIFNldCB0aGUgZGlhbG9nIG1hc2sgY29sb3IgdG8gdHJhbnNwYXJlbnQuIERlZmF1bHRzIHRvIHRydWUgd2hlbiBkaWFsb2cgaXMgZGlzcGxheWVkIGFzIGEgcGFuZWwgKi9cclxuICB0cmFuc3BhcmVudE1hc2s/OiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBTZXQgdGhlIGRpYWxvZyBtYXNrIHRvIG5vdCBkaXNwbGF5IGF0IGFsbC4gQWxsb3dzIHRoZSB1c2VyIHRvIGNsaWNrIG9uIGVsZW1lbnRzIGJlaGluZCB0aGUgZGlhbG9nLlxyXG4gICAqIE9ubHkgYXBwbGljYWJsZSB3aGVuIGRpc3BsYXlBc1BhbmVsIGlzIHRydWUuXHJcbiAgICogRGVmYXVsdHMgdG8gZmFsc2UuXHJcbiAgICovXHJcbiAgbm9NYXNrPzogYm9vbGVhbjtcclxuXHJcbiAgLyoqIEFsaWduIHRoZSBkaWFsb2cgd2luZG93IHRvIHRoZSB0b3AgaW5zdGVhZCBvZiBjZW50ZXJlZC4gKi9cclxuICBhbGlnblRvVG9wPzogYm9vbGVhbjtcclxuXHJcbiAgLyoqIFNldCB0aGUgdG9wIG1hcmdpbiBvZiB0aGUgZGlhbG9nIHdpbmRvdy4gT25seSB0YWtlcyBlZmZlY3QgaWYgYWxpZ25Ub1RvcCBpcyB0cnVlLlxyXG4gICAqIE11c3QgaW5jbHVkZSB1bml0cywgaS5lLiBcIjMycmVtXCIgb3IgXCIxMHZoXCJcclxuICAgKi9cclxuICBhbGlnblRvVG9wTWFyZ2luPzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBTZXQgdG8gdHJ1ZSBpZiB0aGUgZGlhbG9nIHNob3VsZCBhdXRvbWF0aWNhbGx5IGNsb3NlIHdoZW4gdGhlIHdpbmRvdyBpcyByZXNpemVkLlxyXG4gICAqIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSBhcmUgY29uZGl0aW9uYWxseSBzaG93aW5nL2hpZGluZyB0aGUgZGlhbG9nIGNvbnRlbnQgYXMgYSBzdGF0aWMgcGFydCBvZiB0aGUgcGFnZVxyXG4gICAqIHdoZW4gdGhlIHNjcmVlbiBnZXRzIHdpZGUgZW5vdWdoXHJcbiAgICovXHJcbiAgY2xvc2VPblJlc2l6ZT86IGJvb2xlYW47XHJcblxyXG4gIHNpemU/OiBEaWFsb2dTaXplO1xyXG5cclxuICAvKipcclxuICAgKiBVc2VkIHRvIHNwZWNpZnkgYSBjdXN0b20gbWluLXdpZHRoIG9mIHRoZSBkaWFsb2cuIE9ubHkgdGFrZXMgZWZmZWN0IGlmIHNpemUgaXMgc2V0IHRvIGR5bmFtaWMuXHJcbiAgICogTXVzdCBpbmNsdWRlIHVuaXRzLCBpLmUuIFwiMzJyZW1cIiBvciBcIjY0MHB4XCJcclxuICAgKi9cclxuICBtaW5XaWR0aD86IHN0cmluZztcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybmVkIHdoZW4gYSBkaWFsb2cgaXMgY2xvc2VkLlxyXG4gKiBTcGVjaWZpZXMgaWYgdGhlIGRpYWxvZyB3YXMgc2F2ZWQgYW5kIGNvbnRhaW5zIGFuIG9wdGlvbmFsIGNvbnRleHQuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRGlhbG9nUmVzdWx0PFQ+IHtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgc2F2ZTogYm9vbGVhbiwgcHVibGljIGNvbnRleHQ/OiBUKSB7IH1cclxufTtcclxuXHJcblxyXG4vKiogT3B0aW9ucyBmb3Igc2l6ZSBvZiBkaWFsb2cgKi9cclxuZXhwb3J0IHR5cGUgRGlhbG9nU2l6ZSA9IG51bWJlciB8ICd4c21hbGwnIHwgJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJyB8ICd4bGFyZ2UnIHwgJ2Z1bGwnIHwgJ2R5bmFtaWMnO1xyXG5cclxuLyoqXHJcbiAqIERpYWxvZyBBbmltYXRpb24gRXZlbnRzOlxyXG4gKiAtIEJlZ2luQ2xvc2U6IFdoZW4gdGhlIGNsb3NlIGFuaW1hdGlvbiBzdGFydHMuXHJcbiAqIC0gRW5kQ2xvc2U6IFdoZW4gdGhlIGNsb3NlIGFuaW1hdGlvbiBmaW5pc2hlc1xyXG4gKi9cclxuZXhwb3J0IHR5cGUgRGlhbG9nQW5pbWF0aW9uRXZlbnQgPSAnQmVnaW5DbG9zZScgfCAnRW5kQ2xvc2UnXHJcbiJdfQ==
|
@@ -0,0 +1,281 @@
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
2
|
+
import { Component, EventEmitter, HostBinding, HostListener, Input, Output, ViewChild, ViewContainerRef, TemplateRef, Inject } from '@angular/core';
|
3
|
+
import { timer, lastValueFrom } from 'rxjs';
|
4
|
+
import { take, takeUntil, tap } from 'rxjs/operators';
|
5
|
+
import { DialogOpenEndEvent, DialogCloseEvent, DialogResult } from './dialog-types';
|
6
|
+
import * as i0 from "@angular/core";
|
7
|
+
import * as i1 from "../../core/window.service";
|
8
|
+
import * as i2 from "./dialog.service";
|
9
|
+
import * as i3 from "@angular/cdk/a11y";
|
10
|
+
/** These values need to be kept in sync with dialog-base.scss */
|
11
|
+
export const DialogOpenDuration = 125;
|
12
|
+
export const DialogCloseDuration = 100;
|
13
|
+
export const PanelOpenDuration = 250;
|
14
|
+
export const PanelCloseDuration = 225;
|
15
|
+
export class DialogComponent {
|
16
|
+
onOverlayClick(event) {
|
17
|
+
if (event.target.tagName === 'EC-DIALOG' && this.displayAsPanel) {
|
18
|
+
this.close(new DialogResult(false));
|
19
|
+
}
|
20
|
+
}
|
21
|
+
/**
|
22
|
+
* Defines the width of the dialog (height is auto). Can be a number that will be converted to pixels, or xsmall(320px), small(480px), medium(640px), or large(1024px)
|
23
|
+
*/
|
24
|
+
set size(value) {
|
25
|
+
this._size = value;
|
26
|
+
// If the size is a string, set the dialog class. Otherwise, clear it.
|
27
|
+
if (typeof value == 'string') {
|
28
|
+
this.dialogSizeClass = `dialog-${value}`;
|
29
|
+
}
|
30
|
+
else {
|
31
|
+
this.dialogSizeClass = undefined;
|
32
|
+
}
|
33
|
+
}
|
34
|
+
;
|
35
|
+
get size() {
|
36
|
+
return this._size;
|
37
|
+
}
|
38
|
+
constructor(componentFactoryResolver, windowService, dialogService, documentRef) {
|
39
|
+
this.componentFactoryResolver = componentFactoryResolver;
|
40
|
+
this.windowService = windowService;
|
41
|
+
this.dialogService = dialogService;
|
42
|
+
this.documentRef = documentRef;
|
43
|
+
/**
|
44
|
+
* Add/remove the is-open css class to the host element when the dialog is opened/closed.
|
45
|
+
* Styles use the is-open class to show/hide the dialog.
|
46
|
+
*/
|
47
|
+
this.isOpen = false;
|
48
|
+
/**
|
49
|
+
* Add the fade-in css class to the host element when the dialog is opening. Remove when transition is complete.
|
50
|
+
* Styles use the fade-in class to apply a fade-in transition while the dialog is opening.
|
51
|
+
*/
|
52
|
+
this.fadeIn = false;
|
53
|
+
/**
|
54
|
+
* Add the fade-out css class to the host element when the dialog is closing. Remove when transition is complete.
|
55
|
+
* Styles use the fade-out class to apply a fade-out transition while the dialog is closing.
|
56
|
+
*/
|
57
|
+
this.fadeOut = false;
|
58
|
+
this.displayAsPanel = false;
|
59
|
+
this.alignToTop = false;
|
60
|
+
this.transparentMask = false;
|
61
|
+
this.noMask = false;
|
62
|
+
/**
|
63
|
+
* Defines the width of the dialog (height is auto). Can be a number that will be converted to pixels, or xsmall(320px), small(480px), medium(640px), or large(1024px)
|
64
|
+
*/
|
65
|
+
this._size = 'small';
|
66
|
+
/**
|
67
|
+
* Bound to the host. The classes set the --ec-dialog-width variable to our default 'small', 'medium', etc. sizes.
|
68
|
+
* Undefined when the size is a number, which is used for custom sizes.
|
69
|
+
*/
|
70
|
+
this.dialogSizeClass = `dialog-${this._size}`;
|
71
|
+
/**
|
72
|
+
* Emits an event when the dialog is opened
|
73
|
+
*/
|
74
|
+
this.opened = new EventEmitter();
|
75
|
+
/**
|
76
|
+
* Emits an event when the dialog is closed
|
77
|
+
*/
|
78
|
+
this.closed = new EventEmitter();
|
79
|
+
this.previouslyFocusedElement = null;
|
80
|
+
}
|
81
|
+
ngOnInit() {
|
82
|
+
if (this.content) {
|
83
|
+
this.open(this.content, this.context, this.options);
|
84
|
+
}
|
85
|
+
}
|
86
|
+
ngOnDestroy() {
|
87
|
+
// Restore focus to the previously focused element when the dialog is destroyed.
|
88
|
+
// Need to do this here and not in close() because cdkTrapFocusAutoCapture's re-focus happens in ngOnDestroy.
|
89
|
+
// This doesn't work for dialog implementations outside of the dialog service because ngOnDestroy isn't called when
|
90
|
+
// the dialog is closed in those cases.
|
91
|
+
if (this.previouslyFocusedElement) {
|
92
|
+
this.previouslyFocusedElement.focus();
|
93
|
+
}
|
94
|
+
}
|
95
|
+
/**
|
96
|
+
* Clear and previously loaded content
|
97
|
+
* Load the component
|
98
|
+
* Save a reference of the loaded component
|
99
|
+
* Show the dialog and fade in
|
100
|
+
*/
|
101
|
+
async open(component, context, options) {
|
102
|
+
if (!this.isOpen) {
|
103
|
+
// Capture the currently focused element, also looking in the shadow dom. Focus is restored to this element once the dialog is
|
104
|
+
// destroyed. See ngOnDestroy(). We need to do this here in addition to the cdkTrapFocusAutoCapture because sometimes the dialog's
|
105
|
+
// content is drawn and grabs focus before the cdkTrapFocusAutoCapture is able to read the previously focused element.
|
106
|
+
const activeElement = this.documentRef?.activeElement;
|
107
|
+
this.previouslyFocusedElement = activeElement?.shadowRoot?.activeElement || activeElement;
|
108
|
+
if (options) {
|
109
|
+
if (options.alignToTop) {
|
110
|
+
this.alignToTop = true;
|
111
|
+
}
|
112
|
+
if (options.alignToTopMargin) {
|
113
|
+
this.alignToTopMargin = options.alignToTopMargin;
|
114
|
+
}
|
115
|
+
;
|
116
|
+
if (options.displayAsPanel) {
|
117
|
+
this.displayAsPanel = true;
|
118
|
+
this.transparentMask = true;
|
119
|
+
}
|
120
|
+
if (options.transparentMask !== undefined) {
|
121
|
+
this.transparentMask = options.transparentMask;
|
122
|
+
}
|
123
|
+
if (options.noMask !== undefined) {
|
124
|
+
this.noMask = options.noMask;
|
125
|
+
}
|
126
|
+
if (options.canOpenDialog !== undefined) {
|
127
|
+
const canOpen = await options.canOpenDialog();
|
128
|
+
if (!canOpen) {
|
129
|
+
this.close(new DialogResult(false));
|
130
|
+
return;
|
131
|
+
}
|
132
|
+
}
|
133
|
+
}
|
134
|
+
// set the size before opening
|
135
|
+
if (typeof this.size === 'number') {
|
136
|
+
this.width = this.size;
|
137
|
+
}
|
138
|
+
else {
|
139
|
+
// Reset the width if the size is not a number. This is to prevent the width property conflicting with the size.
|
140
|
+
this.width = undefined;
|
141
|
+
}
|
142
|
+
this.minWidth = options?.minWidth;
|
143
|
+
this.fadeIn = true;
|
144
|
+
if (component instanceof TemplateRef) {
|
145
|
+
this.contentContainer.createEmbeddedView(component);
|
146
|
+
}
|
147
|
+
else {
|
148
|
+
let componentFactory = this.componentFactoryResolver.resolveComponentFactory(component);
|
149
|
+
this.componentRef = this.contentContainer.createComponent(componentFactory);
|
150
|
+
}
|
151
|
+
this.isOpen = true;
|
152
|
+
this.openDialogComponent(context);
|
153
|
+
// Once the animation is complete we can remove the animation class and
|
154
|
+
// emit the opened event, both to the hosting component and via DialogService
|
155
|
+
await lastValueFrom(timer(this.displayAsPanel ? PanelOpenDuration : DialogOpenDuration).pipe(take(1), tap(() => {
|
156
|
+
const dialogId = this.getDialogId();
|
157
|
+
this.fadeIn = false;
|
158
|
+
this.opened.emit(dialogId);
|
159
|
+
this.dialogService.triggerEvent(new DialogOpenEndEvent(this.dialogOpenStartEventId, dialogId));
|
160
|
+
})));
|
161
|
+
this.handleCloseOnResize();
|
162
|
+
}
|
163
|
+
}
|
164
|
+
/**
|
165
|
+
* Fade the dialog out and hide
|
166
|
+
*/
|
167
|
+
close(result) {
|
168
|
+
this.fadeOut = true;
|
169
|
+
const dialogId = this.getDialogId(); //call before wiping out the content
|
170
|
+
// When the fade out animation is complete we will hide the dialog
|
171
|
+
// and remove the animation class as well as let the world know that
|
172
|
+
// we're closed so they can complete any other cleanup
|
173
|
+
setTimeout(() => {
|
174
|
+
this.isOpen = false;
|
175
|
+
this.fadeOut = false;
|
176
|
+
this.contentContainer?.clear();
|
177
|
+
this.componentRef = undefined;
|
178
|
+
this.closed.emit(result);
|
179
|
+
this.dialogService.triggerEvent(new DialogCloseEvent(this.dialogOpenStartEventId, dialogId, result?.save, result?.context));
|
180
|
+
this.resetOptions();
|
181
|
+
}, this.displayAsPanel ? PanelCloseDuration : DialogCloseDuration);
|
182
|
+
}
|
183
|
+
/**Open the dialog and attach handlers to the cancel and save events to close it and notify the hosting page */
|
184
|
+
openDialogComponent(context) {
|
185
|
+
if (this.componentRef && this.componentRef.instance) {
|
186
|
+
const dialogContent = this.componentRef.instance;
|
187
|
+
// OnOpen is optional - create dialogs don't necessarily define it
|
188
|
+
if (dialogContent.onOpen) {
|
189
|
+
dialogContent.onOpen(context);
|
190
|
+
}
|
191
|
+
dialogContent.onDialogCancel.pipe(takeUntil(this.closed)).subscribe(() => {
|
192
|
+
this.close(new DialogResult(false));
|
193
|
+
});
|
194
|
+
dialogContent.onDialogSave.pipe(takeUntil(this.closed)).subscribe(val => {
|
195
|
+
this.close(new DialogResult(true, val));
|
196
|
+
});
|
197
|
+
}
|
198
|
+
}
|
199
|
+
/**
|
200
|
+
* Reset options so they don't persist next time the
|
201
|
+
* root dialog is opened
|
202
|
+
* @deprecated
|
203
|
+
*/
|
204
|
+
resetOptions() {
|
205
|
+
this.alignToTop = false;
|
206
|
+
this.displayAsPanel = false;
|
207
|
+
}
|
208
|
+
/** If they turned on closeOnResize, automatically close the dialog any time somebody resizes the window.
|
209
|
+
* This is useful for responsive layouts to prevent having the dialogContent on the screen twice */
|
210
|
+
handleCloseOnResize() {
|
211
|
+
if (this.options && this.options.closeOnResize) {
|
212
|
+
this.windowService.resized.pipe(takeUntil(this.closed), take(1)).subscribe(() => {
|
213
|
+
this.close(new DialogResult(false));
|
214
|
+
});
|
215
|
+
}
|
216
|
+
}
|
217
|
+
/**Extract the dialogId from the dialog content, if it has one. Template-based dialogs generally don't.
|
218
|
+
* We fall back to empty string to allow anybody listening for dialogEvents to still record the open/close even if
|
219
|
+
* the dialog itself does not say what the name is.
|
220
|
+
*/
|
221
|
+
getDialogId() {
|
222
|
+
return this.componentRef?.instance.dialogId || '';
|
223
|
+
}
|
224
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DialogComponent, deps: [{ token: i0.ComponentFactoryResolver }, { token: i1.WindowService }, { token: i2.DialogService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
|
225
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DialogComponent, selector: "ec-dialog", inputs: { size: "size", content: "content", context: "context", options: "options", dialogOpenStartEventId: "dialogOpenStartEventId" }, outputs: { opened: "opened", closed: "closed" }, host: { listeners: { "click": "onOverlayClick($event)" }, properties: { "class": "dialogSizeClass", "style.--ec-dialog-width.px": "width", "class.is-open": "this.isOpen", "class.fade-in": "this.fadeIn", "class.fade-out": "this.fadeOut", "class.is-panel": "this.displayAsPanel", "class.is-top-aligned": "this.alignToTop", "style.--ec-dialog-margin-align-to-top": "this.alignToTopMargin", "class.is-transparent": "this.transparentMask", "class.no-mask": "this.noMask" } }, viewQueries: [{ propertyName: "contentContainer", first: true, predicate: ["content"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: '<article [style.min-width]="minWidth" cdkTrapFocus cdkTrapFocusAutoCapture><ng-template #content></ng-template></article>', isInline: true, styles: ["@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideIn{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes panelMaskFadeIn{0%{background-color:transparent}to{background-color:var(--ec-dialog-background-color)}}:host{--ec-dialog-background-color: var(--ec-background-color-dialog);align-items:center;background-color:var(--ec-dialog-background-color);justify-content:center;position:fixed;z-index:var(--ec-z-index-dialog);inset:0;display:none}:host.is-open{display:flex}:host.fade-in{animation-name:fadeIn;animation-duration:125ms;animation-fill-mode:forwards;animation-timing-function:ease-in-out}:host.fade-out{animation-name:fadeIn;animation-duration:.1s;animation-direction:reverse;animation-fill-mode:forwards;animation-timing-function:ease-in-out}:host.is-panel article{position:absolute;top:0;bottom:0;right:0;max-height:none;border-right:0;border-top:0;border-bottom:0;border-radius:0;box-shadow:0 0 .5rem var(--ec-color-shadow)}:host.is-panel.fade-in{animation-name:panelMaskFadeIn;animation-duration:.25s;animation-fill-mode:forwards}:host.is-panel.fade-in article{animation-name:slideIn;animation-duration:.25s;animation-fill-mode:forwards;animation-timing-function:ease-out}:host.is-panel.fade-out{animation-name:panelMaskFadeIn;animation-direction:reverse;animation-fill-mode:forwards}:host.is-panel.fade-out article{animation-name:slideIn;animation-duration:225ms;animation-direction:reverse;animation-fill-mode:forwards;animation-timing-function:ease-in}:host.is-panel.no-mask{left:auto;width:var(--ec-dialog-width)}:host.is-top-aligned{align-items:flex-start}:host.is-top-aligned article{min-height:auto;margin-top:var(--ec-dialog-margin-align-to-top, 20vh);max-height:calc(100vh - var(--ec-dialog-margin-align-to-top, 20vh) - 5vh)}:host.is-transparent{--ec-dialog-background-color: transparent}article{background-color:var(--ec-background-color-body);background-clip:padding-box;box-shadow:0 0 .625rem #1a1a2333;border-radius:var(--ec-border-radius-dialog);overflow:hidden;display:flex;flex:none;min-height:9rem;max-height:90vh;max-width:90vw;width:var(--ec-dialog-width)}:host.dialog-xsmall{--ec-dialog-width: 20rem}:host.dialog-small{--ec-dialog-width: 30rem}:host.dialog-medium{--ec-dialog-width: 40rem}:host.dialog-large{--ec-dialog-width: 50rem}:host.dialog-xlarge{--ec-dialog-width: 60rem}:host.dialog-full{--ec-dialog-width: 90vw}\n"], dependencies: [{ kind: "directive", type: i3.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }] }); }
|
226
|
+
}
|
227
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DialogComponent, decorators: [{
|
228
|
+
type: Component,
|
229
|
+
args: [{ selector: 'ec-dialog', template: '<article [style.min-width]="minWidth" cdkTrapFocus cdkTrapFocusAutoCapture><ng-template #content></ng-template></article>', host: {
|
230
|
+
'[class]': 'dialogSizeClass',
|
231
|
+
'[style.--ec-dialog-width.px]': 'width'
|
232
|
+
}, styles: ["@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideIn{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes panelMaskFadeIn{0%{background-color:transparent}to{background-color:var(--ec-dialog-background-color)}}:host{--ec-dialog-background-color: var(--ec-background-color-dialog);align-items:center;background-color:var(--ec-dialog-background-color);justify-content:center;position:fixed;z-index:var(--ec-z-index-dialog);inset:0;display:none}:host.is-open{display:flex}:host.fade-in{animation-name:fadeIn;animation-duration:125ms;animation-fill-mode:forwards;animation-timing-function:ease-in-out}:host.fade-out{animation-name:fadeIn;animation-duration:.1s;animation-direction:reverse;animation-fill-mode:forwards;animation-timing-function:ease-in-out}:host.is-panel article{position:absolute;top:0;bottom:0;right:0;max-height:none;border-right:0;border-top:0;border-bottom:0;border-radius:0;box-shadow:0 0 .5rem var(--ec-color-shadow)}:host.is-panel.fade-in{animation-name:panelMaskFadeIn;animation-duration:.25s;animation-fill-mode:forwards}:host.is-panel.fade-in article{animation-name:slideIn;animation-duration:.25s;animation-fill-mode:forwards;animation-timing-function:ease-out}:host.is-panel.fade-out{animation-name:panelMaskFadeIn;animation-direction:reverse;animation-fill-mode:forwards}:host.is-panel.fade-out article{animation-name:slideIn;animation-duration:225ms;animation-direction:reverse;animation-fill-mode:forwards;animation-timing-function:ease-in}:host.is-panel.no-mask{left:auto;width:var(--ec-dialog-width)}:host.is-top-aligned{align-items:flex-start}:host.is-top-aligned article{min-height:auto;margin-top:var(--ec-dialog-margin-align-to-top, 20vh);max-height:calc(100vh - var(--ec-dialog-margin-align-to-top, 20vh) - 5vh)}:host.is-transparent{--ec-dialog-background-color: transparent}article{background-color:var(--ec-background-color-body);background-clip:padding-box;box-shadow:0 0 .625rem #1a1a2333;border-radius:var(--ec-border-radius-dialog);overflow:hidden;display:flex;flex:none;min-height:9rem;max-height:90vh;max-width:90vw;width:var(--ec-dialog-width)}:host.dialog-xsmall{--ec-dialog-width: 20rem}:host.dialog-small{--ec-dialog-width: 30rem}:host.dialog-medium{--ec-dialog-width: 40rem}:host.dialog-large{--ec-dialog-width: 50rem}:host.dialog-xlarge{--ec-dialog-width: 60rem}:host.dialog-full{--ec-dialog-width: 90vw}\n"] }]
|
233
|
+
}], ctorParameters: () => [{ type: i0.ComponentFactoryResolver }, { type: i1.WindowService }, { type: i2.DialogService }, { type: Document, decorators: [{
|
234
|
+
type: Inject,
|
235
|
+
args: [DOCUMENT]
|
236
|
+
}] }], propDecorators: { isOpen: [{
|
237
|
+
type: HostBinding,
|
238
|
+
args: ['class.is-open']
|
239
|
+
}], fadeIn: [{
|
240
|
+
type: HostBinding,
|
241
|
+
args: ['class.fade-in']
|
242
|
+
}], fadeOut: [{
|
243
|
+
type: HostBinding,
|
244
|
+
args: ['class.fade-out']
|
245
|
+
}], displayAsPanel: [{
|
246
|
+
type: HostBinding,
|
247
|
+
args: ['class.is-panel']
|
248
|
+
}], alignToTop: [{
|
249
|
+
type: HostBinding,
|
250
|
+
args: ['class.is-top-aligned']
|
251
|
+
}], alignToTopMargin: [{
|
252
|
+
type: HostBinding,
|
253
|
+
args: ['style.--ec-dialog-margin-align-to-top']
|
254
|
+
}], transparentMask: [{
|
255
|
+
type: HostBinding,
|
256
|
+
args: ['class.is-transparent']
|
257
|
+
}], noMask: [{
|
258
|
+
type: HostBinding,
|
259
|
+
args: ['class.no-mask']
|
260
|
+
}], onOverlayClick: [{
|
261
|
+
type: HostListener,
|
262
|
+
args: ['click', ['$event']]
|
263
|
+
}], size: [{
|
264
|
+
type: Input
|
265
|
+
}], content: [{
|
266
|
+
type: Input
|
267
|
+
}], context: [{
|
268
|
+
type: Input
|
269
|
+
}], options: [{
|
270
|
+
type: Input
|
271
|
+
}], dialogOpenStartEventId: [{
|
272
|
+
type: Input
|
273
|
+
}], opened: [{
|
274
|
+
type: Output
|
275
|
+
}], closed: [{
|
276
|
+
type: Output
|
277
|
+
}], contentContainer: [{
|
278
|
+
type: ViewChild,
|
279
|
+
args: ['content', { read: ViewContainerRef, static: true }]
|
280
|
+
}] } });
|
281
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9kaXNwbGF5L2RpYWxvZy9kaWFsb2cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUEwQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFRLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xNLE9BQU8sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBNkIsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBRy9HLGlFQUFpRTtBQUNqRSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBVyxHQUFHLENBQUM7QUFDOUMsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQVcsR0FBRyxDQUFDO0FBQy9DLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFXLEdBQUcsQ0FBQztBQUM3QyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBVyxHQUFHLENBQUM7QUFXOUMsTUFBTSxPQUFPLGVBQWU7SUE2QmdCLGNBQWMsQ0FBQyxLQUFpQjtRQUN4RSxJQUFrQixLQUFLLENBQUMsTUFBTyxDQUFDLE9BQU8sS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQy9FLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMs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QUEySCxRQUUvSDt3QkFDSixTQUFTLEVBQUUsaUJBQWlCO3dCQUM1Qiw4QkFBOEIsRUFBRSxPQUFPO3FCQUN4Qzs7MEJBZ0hFLE1BQU07MkJBQUMsUUFBUTt5Q0F6R21CLE1BQU07c0JBQTFDLFdBQVc7dUJBQUMsZUFBZTtnQkFNUyxNQUFNO3NCQUExQyxXQUFXO3VCQUFDLGVBQWU7Z0JBTVUsT0FBTztzQkFBNUMsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBRVMsY0FBYztzQkFBbkQsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBRWUsVUFBVTtzQkFBckQsV0FBVzt1QkFBQyxzQkFBc0I7Z0JBRTBCLGdCQUFnQjtzQkFBNUUsV0FBVzt1QkFBQyx1Q0FBdUM7Z0JBRVIsZUFBZTtzQkFBMUQsV0FBVzt1QkFBQyxzQkFBc0I7Z0JBRUUsTUFBTTtzQkFBMUMsV0FBVzt1QkFBQyxlQUFlO2dCQUVjLGNBQWM7c0JBQXZELFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVNiLElBQUk7c0JBQXZCLEtBQUs7Z0JBdUJHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQU9HLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFLVyxNQUFNO3NCQUF0QixNQUFNO2dCQUtVLE1BQU07c0JBQXRCLE1BQU07Z0JBS2dFLGdCQUFnQjtzQkFBdEYsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIENvbXBvbmVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0LCBUeXBlLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYsIFRlbXBsYXRlUmVmLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdGltZXIsIGxhc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZSwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFdpbmRvd1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3dpbmRvdy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlhbG9nQ29udGVudCB9IGZyb20gJy4vZGlhbG9nLWNvbnRlbnQnO1xyXG5pbXBvcnQgeyBEaWFsb2dPcGVuRW5kRXZlbnQsIERpYWxvZ0Nsb3NlRXZlbnQsIERpYWxvZ1NpemUsIERpYWxvZ09wdGlvbnMsIERpYWxvZ1Jlc3VsdCB9IGZyb20gJy4vZGlhbG9nLXR5cGVzJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4vZGlhbG9nLnNlcnZpY2UnO1xyXG5cclxuLyoqIFRoZXNlIHZhbHVlcyBuZWVkIHRvIGJlIGtlcHQgaW4gc3luYyB3aXRoIGRpYWxvZy1iYXNlLnNjc3MgKi9cclxuZXhwb3J0IGNvbnN0IERpYWxvZ09wZW5EdXJhdGlvbjogbnVtYmVyID0gMTI1O1xyXG5leHBvcnQgY29uc3QgRGlhbG9nQ2xvc2VEdXJhdGlvbjogbnVtYmVyID0gMTAwO1xyXG5leHBvcnQgY29uc3QgUGFuZWxPcGVuRHVyYXRpb246IG51bWJlciA9IDI1MDtcclxuZXhwb3J0IGNvbnN0IFBhbmVsQ2xvc2VEdXJhdGlvbjogbnVtYmVyID0gMjI1O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlYy1kaWFsb2cnLFxyXG4gIHRlbXBsYXRlOiAnPGFydGljbGUgW3N0eWxlLm1pbi13aWR0aF09XCJtaW5XaWR0aFwiIGNka1RyYXBGb2N1cyBjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZT48bmctdGVtcGxhdGUgI2NvbnRlbnQ+PC9uZy10ZW1wbGF0ZT48L2FydGljbGU+JyxcclxuICBzdHlsZVVybHM6IFsnLi9kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcclxuICBob3N0OiB7XHJcbiAgICAnW2NsYXNzXSc6ICdkaWFsb2dTaXplQ2xhc3MnLFxyXG4gICAgJ1tzdHlsZS4tLWVjLWRpYWxvZy13aWR0aC5weF0nOiAnd2lkdGgnXHJcbiAgfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGlhbG9nQ29tcG9uZW50IHtcclxuICAvKipcclxuICAgKiBBZGQvcmVtb3ZlIHRoZSBpcy1vcGVuIGNzcyBjbGFzcyB0byB0aGUgaG9zdCBlbGVtZW50IHdoZW4gdGhlIGRpYWxvZyBpcyBvcGVuZWQvY2xvc2VkLlxyXG4gICAqIFN0eWxlcyB1c2UgdGhlIGlzLW9wZW4gY2xhc3MgdG8gc2hvdy9oaWRlIHRoZSBkaWFsb2cuXHJcbiAgICovXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy1vcGVuJykgcHVibGljIGlzT3BlbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBBZGQgdGhlIGZhZGUtaW4gY3NzIGNsYXNzIHRvIHRoZSBob3N0IGVsZW1lbnQgd2hlbiB0aGUgZGlhbG9nIGlzIG9wZW5pbmcuIFJlbW92ZSB3aGVuIHRyYW5zaXRpb24gaXMgY29tcGxldGUuXHJcbiAgICogU3R5bGVzIHVzZSB0aGUgZmFkZS1pbiBjbGFzcyB0byBhcHBseSBhIGZhZGUtaW4gdHJhbnNpdGlvbiB3aGlsZSB0aGUgZGlhbG9nIGlzIG9wZW5pbmcuXHJcbiAgICovXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mYWRlLWluJykgcHVibGljIGZhZGVJbiA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBBZGQgdGhlIGZhZGUtb3V0IGNzcyBjbGFzcyB0byB0aGUgaG9zdCBlbGVtZW50IHdoZW4gdGhlIGRpYWxvZyBpcyBjbG9zaW5nLiBSZW1vdmUgd2hlbiB0cmFuc2l0aW9uIGlzIGNvbXBsZXRlLlxyXG4gICAqIFN0eWxlcyB1c2UgdGhlIGZhZGUtb3V0IGNsYXNzIHRvIGFwcGx5IGEgZmFkZS1vdXQgdHJhbnNpdGlvbiB3aGlsZSB0aGUgZGlhbG9nIGlzIGNsb3NpbmcuXHJcbiAgICovXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mYWRlLW91dCcpIHB1YmxpYyBmYWRlT3V0ID0gZmFsc2U7XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaXMtcGFuZWwnKSBwdWJsaWMgZGlzcGxheUFzUGFuZWwgPSBmYWxzZTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pcy10b3AtYWxpZ25lZCcpIHB1YmxpYyBhbGlnblRvVG9wID0gZmFsc2U7XHJcblxyXG4gIEBIb3N0QmluZGluZygnc3R5bGUuLS1lYy1kaWFsb2ctbWFyZ2luLWFsaWduLXRvLXRvcCcpIHB1YmxpYyBhbGlnblRvVG9wTWFyZ2luPzogc3RyaW5nO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLXRyYW5zcGFyZW50JykgcHVibGljIHRyYW5zcGFyZW50TWFzayA9IGZhbHNlO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm5vLW1hc2snKSBwdWJsaWMgbm9NYXNrID0gZmFsc2U7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSkgcHVibGljIG9uT3ZlcmxheUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAoKDxIVE1MRWxlbWVudD5ldmVudC50YXJnZXQpLnRhZ05hbWUgPT09ICdFQy1ESUFMT0cnICYmIHRoaXMuZGlzcGxheUFzUGFuZWwpIHtcclxuICAgICAgdGhpcy5jbG9zZShuZXcgRGlhbG9nUmVzdWx0KGZhbHNlKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWZpbmVzIHRoZSB3aWR0aCBvZiB0aGUgZGlhbG9nIChoZWlnaHQgaXMgYXV0bykuIENhbiBiZSBhIG51bWJlciB0aGF0IHdpbGwgYmUgY29udmVydGVkIHRvIHBpeGVscywgb3IgeHNtYWxsKDMyMHB4KSwgc21hbGwoNDgwcHgpLCBtZWRpdW0oNjQwcHgpLCBvciBsYXJnZSgxMDI0cHgpXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIHNldCBzaXplKHZhbHVlOiBEaWFsb2dTaXplKSB7XHJcbiAgICB0aGlzLl9zaXplID0gdmFsdWU7XHJcbiAgICAvLyBJZiB0aGUgc2l6ZSBpcyBhIHN0cmluZywgc2V0IHRoZSBkaWFsb2cgY2xhc3MuIE90aGVyd2lzZSwgY2xlYXIgaXQuXHJcbiAgICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nU2l6ZUNsYXNzID0gYGRpYWxvZy0ke3ZhbHVlfWA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRpYWxvZ1NpemVDbGFzcyA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9O1xyXG4gIHB1YmxpYyBnZXQgc2l6ZSgpOiBEaWFsb2dTaXplIHtcclxuICAgIHJldHVybiB0aGlzLl9zaXplO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBEZWZpbmVzIHRoZSB3aWR0aCBvZiB0aGUgZGlhbG9nIChoZWlnaHQgaXMgYXV0bykuIENhbiBiZSBhIG51bWJlciB0aGF0IHdpbGwgYmUgY29udmVydGVkIHRvIHBpeGVscywgb3IgeHNtYWxsKDMyMHB4KSwgc21hbGwoNDgwcHgpLCBtZWRpdW0oNjQwcHgpLCBvciBsYXJnZSgxMDI0cHgpXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfc2l6ZTogRGlhbG9nU2l6ZSA9ICdzbWFsbCc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEJvdW5kIHRvIHRoZSBob3N0LiBUaGUgY2xhc3NlcyBzZXQgdGhlIC0tZWMtZGlhbG9nLXdpZHRoIHZhcmlhYmxlIHRvIG91ciBkZWZhdWx0ICdzbWFsbCcsICdtZWRpdW0nLCBldGMuIHNpemVzLlxyXG4gICAqIFVuZGVmaW5lZCB3aGVuIHRoZSBzaXplIGlzIGEgbnVtYmVyLCB3aGljaCBpcyB1c2VkIGZvciBjdXN0b20gc2l6ZXMuXHJcbiAgICovXHJcbiAgZGlhbG9nU2l6ZUNsYXNzPzogc3RyaW5nID0gYGRpYWxvZy0ke3RoaXMuX3NpemV9YDtcclxuXHJcbiAgQElucHV0KCkgY29udGVudD86IFR5cGU8RGlhbG9nQ29udGVudDxhbnk+PiB8IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KCkgY29udGV4dD86IGFueTtcclxuICBASW5wdXQoKSBvcHRpb25zPzogRGlhbG9nT3B0aW9ucztcclxuXHJcbiAgLyoqT25seSBzZXQgaWYgdGhpcyBwYXJ0aWN1bGFyIGluc3RhbmNlIG9mIGEgZGlhbG9nIHNob3VsZCBiZSBpZGVudGlmaWVkIHNlcGFyYXRlbHkgZnJvbSBvdGhlcnMuXHJcbiAgICogSWYgcHJvdmlkZWQsIHRoaXMgaXMgZW1pdHRlZCB0byB0aGUgZGlhbG9nIHNlcnZpY2Ugd2l0aCBPcGVuRW5kIGFuZCBDbG9zZSBldmVudHMuIERpcmVjdCB1c2FnZVxyXG4gICAqIG9mIHRoZSBEaWFsb2dDb21wb25lbnQgZnJvbSBvdXRzaWRlIGEgRGlhbG9nR3JvdXAgZG9lcyBub3QgdXN1YWxseSByZXF1aXJlIHVzaW5nIHRoaXMgcGFyYW1ldGVyIGFzXHJcbiAgICogdGhlIGRpYWxvZyByZWZlcmVuY2UgaXRzZWxmIGZ1bmN0aW9ucyBhcyB0aGUgaWRlbnRpZmllclxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGRpYWxvZ09wZW5TdGFydEV2ZW50SWQ/OiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIGFuIGV2ZW50IHdoZW4gdGhlIGRpYWxvZyBpcyBvcGVuZWRcclxuICAgKi9cclxuICBAT3V0cHV0KCkgcHVibGljIG9wZW5lZDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIGFuIGV2ZW50IHdoZW4gdGhlIGRpYWxvZyBpcyBjbG9zZWRcclxuICAgKi9cclxuICBAT3V0cHV0KCkgcHVibGljIGNsb3NlZDogRXZlbnRFbWl0dGVyPERpYWxvZ1Jlc3VsdDxhbnk+PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGNvbnRhaW5lciB3aGVyZSB0aGUgY29tcG9uZW50IHdpbGwgYmUgbG9hZGVkXHJcbiAgICovXHJcbiAgQFZpZXdDaGlsZCgnY29udGVudCcsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBjb250ZW50Q29udGFpbmVyITogVmlld0NvbnRhaW5lclJlZjtcclxuXHJcbiAgLyoqXHJcbiAgICogQ3VzdG9tIHdpZHRoIG9mIHRoZSBkaWFsb2cgaW4gcGl4ZWxzLiBTZXQgYnkgZGVmaW5pbmcgdGhlIHNpemUgcHJvcGVydHlcclxuICAgKiBhcyBhIG51bWJlciB2YWx1ZS5cclxuICAgKi9cclxuICBwdWJsaWMgd2lkdGg/OiBudW1iZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIEN1c3RvbSBtaW4td2lkdGggb2YgdGhlIGRpYWxvZy4gT25seSB0YWtlcyBlZmZlY3QgaWYgc2l6ZSBpcyBzZXQgdG8gZHluYW1pYy5cclxuICAgKiBNdXN0IGluY2x1ZGUgdW5pdHMsIGkuZS4gXCIzMnJlbVwiIG9yIFwiNjQwcHhcIlxyXG4gICAqL1xyXG4gIHB1YmxpYyBtaW5XaWR0aD86IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogQSByZWZlcmVuY2Ugb2YgdGhlIGNvbXBvbmVudCBvbmNlIGl0IGhhcyBiZWVuIGxvYWRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBjb21wb25lbnRSZWY/OiBDb21wb25lbnRSZWY8YW55PjtcclxuXHJcbiAgcHJpdmF0ZSBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgIHByaXZhdGUgd2luZG93U2VydmljZTogV2luZG93U2VydmljZSxcclxuICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcclxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnRSZWY6IERvY3VtZW50XHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jb250ZW50KSB7XHJcbiAgICAgIHRoaXMub3Blbih0aGlzLmNvbnRlbnQsIHRoaXMuY29udGV4dCwgdGhpcy5vcHRpb25zKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgLy8gUmVzdG9yZSBmb2N1cyB0byB0aGUgcHJldmlvdXNseSBmb2N1c2VkIGVsZW1lbnQgd2hlbiB0aGUgZGlhbG9nIGlzIGRlc3Ryb3llZC5cclxuICAgIC8vIE5lZWQgdG8gZG8gdGhpcyBoZXJlIGFuZCBub3QgaW4gY2xvc2UoKSBiZWNhdXNlIGNka1RyYXBGb2N1c0F1dG9DYXB0dXJlJ3MgcmUtZm9jdXMgaGFwcGVucyBpbiBuZ09uRGVzdHJveS5cclxuICAgIC8vIFRoaXMgZG9lc24ndCB3b3JrIGZvciBkaWFsb2cgaW1wbGVtZW50YXRpb25zIG91dHNpZGUgb2YgdGhlIGRpYWxvZyBzZXJ2aWNlIGJlY2F1c2UgbmdPbkRlc3Ryb3kgaXNuJ3QgY2FsbGVkIHdoZW5cclxuICAgIC8vIHRoZSBkaWFsb2cgaXMgY2xvc2VkIGluIHRob3NlIGNhc2VzLlxyXG4gICAgaWYgKHRoaXMucHJldmlvdXNseUZvY3VzZWRFbGVtZW50KSB7XHJcbiAgICAgIHRoaXMucHJldmlvdXNseUZvY3VzZWRFbGVtZW50LmZvY3VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciBhbmQgcHJldmlvdXNseSBsb2FkZWQgY29udGVudFxyXG4gICAqIExvYWQgdGhlIGNvbXBvbmVudFxyXG4gICAqIFNhdmUgYSByZWZlcmVuY2Ugb2YgdGhlIGxvYWRlZCBjb21wb25lbnRcclxuICAgKiBTaG93IHRoZSBkaWFsb2cgYW5kIGZhZGUgaW5cclxuICAgKi9cclxuICBwdWJsaWMgYXN5bmMgb3BlbjxUPihjb21wb25lbnQ6IFR5cGU8RGlhbG9nQ29udGVudDxUPj4gfCBUZW1wbGF0ZVJlZjxhbnk+LCBjb250ZXh0PzogVCwgb3B0aW9ucz86IERpYWxvZ09wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICghdGhpcy5pc09wZW4pIHtcclxuICAgICAgXHJcbiAgICAgIC8vIENhcHR1cmUgdGhlIGN1cnJlbnRseSBmb2N1c2VkIGVsZW1lbnQsIGFsc28gbG9va2luZyBpbiB0aGUgc2hhZG93IGRvbS4gRm9jdXMgaXMgcmVzdG9yZWQgdG8gdGhpcyBlbGVtZW50IG9uY2UgdGhlIGRpYWxvZyBpc1xyXG4gICAgICAvLyBkZXN0cm95ZWQuIFNlZSBuZ09uRGVzdHJveSgpLiBXZSBuZWVkIHRvIGRvIHRoaXMgaGVyZSBpbiBhZGRpdGlvbiB0byB0aGUgY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmUgYmVjYXVzZSBzb21ldGltZXMgdGhlIGRpYWxvZydzXHJcbiAgICAgIC8vIGNvbnRlbnQgaXMgZHJhd24gYW5kIGdyYWJzIGZvY3VzIGJlZm9yZSB0aGUgY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmUgaXMgYWJsZSB0byByZWFkIHRoZSBwcmV2aW91c2x5IGZvY3VzZWQgZWxlbWVudC5cclxuICAgICAgY29uc3QgYWN0aXZlRWxlbWVudCA9IDxIVE1MRWxlbWVudCB8IG51bGw+dGhpcy5kb2N1bWVudFJlZj8uYWN0aXZlRWxlbWVudDtcclxuICAgICAgdGhpcy5wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgPSA8SFRNTEVsZW1lbnQ+YWN0aXZlRWxlbWVudD8uc2hhZG93Um9vdD8uYWN0aXZlRWxlbWVudCB8fCBhY3RpdmVFbGVtZW50O1xyXG5cclxuICAgICAgaWYgKG9wdGlvbnMpIHtcclxuICAgICAgICBpZiAob3B0aW9ucy5hbGlnblRvVG9wKSB7XHJcbiAgICAgICAgICB0aGlzLmFsaWduVG9Ub3AgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG9wdGlvbnMuYWxpZ25Ub1RvcE1hcmdpbikge1xyXG4gICAgICAgICAgdGhpcy5hbGlnblRvVG9wTWFyZ2luID0gb3B0aW9ucy5hbGlnblRvVG9wTWFyZ2luO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGlmIChvcHRpb25zLmRpc3BsYXlBc1BhbmVsKSB7XHJcbiAgICAgICAgICB0aGlzLmRpc3BsYXlBc1BhbmVsID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMudHJhbnNwYXJlbnRNYXNrID0gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChvcHRpb25zLnRyYW5zcGFyZW50TWFzayAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLnRyYW5zcGFyZW50TWFzayA9IG9wdGlvbnMudHJhbnNwYXJlbnRNYXNrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG9wdGlvbnMubm9NYXNrICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHRoaXMubm9NYXNrID0gb3B0aW9ucy5ub01hc2s7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAob3B0aW9ucy5jYW5PcGVuRGlhbG9nICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIGNvbnN0IGNhbk9wZW4gPSBhd2FpdCBvcHRpb25zLmNhbk9wZW5EaWFsb2coKTtcclxuICAgICAgICAgIGlmICghY2FuT3Blbikge1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKG5ldyBEaWFsb2dSZXN1bHQoZmFsc2UpKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gc2V0IHRoZSBzaXplIGJlZm9yZSBvcGVuaW5nXHJcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5zaXplID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgIHRoaXMud2lkdGggPSB0aGlzLnNpemU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gUmVzZXQgdGhlIHdpZHRoIGlmIHRoZSBzaXplIGlzIG5vdCBhIG51bWJlci4gVGhpcyBpcyB0byBwcmV2ZW50IHRoZSB3aWR0aCBwcm9wZXJ0eSBjb25mbGljdGluZyB3aXRoIHRoZSBzaXplLlxyXG4gICAgICAgIHRoaXMud2lkdGggPSB1bmRlZmluZWQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMubWluV2lkdGggPSBvcHRpb25zPy5taW5XaWR0aDtcclxuXHJcbiAgICAgIHRoaXMuZmFkZUluID0gdHJ1ZTtcclxuICAgICAgaWYgKGNvbXBvbmVudCBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmKSB7XHJcbiAgICAgICAgdGhpcy5jb250ZW50Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyhjb21wb25lbnQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxldCBjb21wb25lbnRGYWN0b3J5ID0gdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoY29tcG9uZW50KTtcclxuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMuY29udGVudENvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50RmFjdG9yeSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMub3BlbkRpYWxvZ0NvbXBvbmVudDxUPihjb250ZXh0KTtcclxuXHJcbiAgICAgIC8vIE9uY2UgdGhlIGFuaW1hdGlvbiBpcyBjb21wbGV0ZSB3ZSBjYW4gcmVtb3ZlIHRoZSBhbmltYXRpb24gY2xhc3MgYW5kXHJcbiAgICAgIC8vIGVtaXQgdGhlIG9wZW5lZCBldmVudCwgYm90aCB0byB0aGUgaG9zdGluZyBjb21wb25lbnQgYW5kIHZpYSBEaWFsb2dTZXJ2aWNlXHJcbiAgICAgIGF3YWl0IGxhc3RWYWx1ZUZyb20odGltZXIodGhpcy5kaXNwbGF5QXNQYW5lbCA/IFBhbmVsT3BlbkR1cmF0aW9uIDogRGlhbG9nT3BlbkR1cmF0aW9uKS5waXBlKHRha2UoMSksIHRhcCgoKSA9PiB7XHJcbiAgICBjb25zdCBkaWFsb2dJZCA9IHRoaXMuZ2V0RGlhbG9nSWQoKTtcclxuICAgIHRoaXMuZmFkZUluID0gZmFsc2U7XHJcbiAgICB0aGlzLm9wZW5lZC5lbWl0KGRpYWxvZ0lkKTtcclxuICAgIHRoaXMuZGlhbG9nU2VydmljZS50cmlnZ2VyRXZlbnQobmV3IERpYWxvZ09wZW5FbmRFdmVudCh0aGlzLmRpYWxvZ09wZW5TdGFydEV2ZW50SWQsIGRpYWxvZ0lkKSk7XHJcbn0pKSk7XHJcblxyXG4gICAgICB0aGlzLmhhbmRsZUNsb3NlT25SZXNpemUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZhZGUgdGhlIGRpYWxvZyBvdXQgYW5kIGhpZGVcclxuICAgKi9cclxuICBwdWJsaWMgY2xvc2U8VD4ocmVzdWx0PzogRGlhbG9nUmVzdWx0PFQ+KTogdm9pZCB7XHJcbiAgICB0aGlzLmZhZGVPdXQgPSB0cnVlO1xyXG4gICAgY29uc3QgZGlhbG9nSWQgPSB0aGlzLmdldERpYWxvZ0lkKCk7ICAvL2NhbGwgYmVmb3JlIHdpcGluZyBvdXQgdGhlIGNvbnRlbnRcclxuXHJcbiAgICAvLyBXaGVuIHRoZSBmYWRlIG91dCBhbmltYXRpb24gaXMgY29tcGxldGUgd2Ugd2lsbCBoaWRlIHRoZSBkaWFsb2dcclxuICAgIC8vIGFuZCByZW1vdmUgdGhlIGFuaW1hdGlvbiBjbGFzcyBhcyB3ZWxsIGFzIGxldCB0aGUgd29ybGQga25vdyB0aGF0XHJcbiAgICAvLyB3ZSdyZSBjbG9zZWQgc28gdGhleSBjYW4gY29tcGxldGUgYW55IG90aGVyIGNsZWFudXBcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmZhZGVPdXQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jb250ZW50Q29udGFpbmVyPy5jbGVhcigpO1xyXG4gICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHVuZGVmaW5lZDtcclxuICAgICAgdGhpcy5jbG9zZWQuZW1pdChyZXN1bHQpO1xyXG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UudHJpZ2dlckV2ZW50KG5ldyBEaWFsb2dDbG9zZUV2ZW50KHRoaXMuZGlhbG9nT3BlblN0YXJ0RXZlbnRJZCwgZGlhbG9nSWQsIHJlc3VsdD8uc2F2ZSwgcmVzdWx0Py5jb250ZXh0KSk7XHJcbiAgICAgIHRoaXMucmVzZXRPcHRpb25zKCk7XHJcbiAgICB9LCB0aGlzLmRpc3BsYXlBc1BhbmVsID8gUGFuZWxDbG9zZUR1cmF0aW9uIDogRGlhbG9nQ2xvc2VEdXJhdGlvbilcclxuICB9XHJcblxyXG4gIC8qKk9wZW4gdGhlIGRpYWxvZyBhbmQgYXR0YWNoIGhhbmRsZXJzIHRvIHRoZSBjYW5jZWwgYW5kIHNhdmUgZXZlbnRzIHRvIGNsb3NlIGl0IGFuZCBub3RpZnkgdGhlIGhvc3RpbmcgcGFnZSAqL1xyXG4gIHByaXZhdGUgb3BlbkRpYWxvZ0NvbXBvbmVudDxUPihjb250ZXh0PzogVCkge1xyXG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmICYmIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlKSB7XHJcbiAgICAgIGNvbnN0IGRpYWxvZ0NvbnRlbnQgPSB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBEaWFsb2dDb250ZW50PFQ+O1xyXG5cclxuICAgICAgLy8gT25PcGVuIGlzIG9wdGlvbmFsIC0gY3JlYXRlIGRpYWxvZ3MgZG9uJ3QgbmVjZXNzYXJpbHkgZGVmaW5lIGl0XHJcbiAgICAgIGlmIChkaWFsb2dDb250ZW50Lm9uT3Blbikge1xyXG4gICAgICAgIGRpYWxvZ0NvbnRlbnQub25PcGVuKGNvbnRleHQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBkaWFsb2dDb250ZW50Lm9uRGlhbG9nQ2FuY2VsLnBpcGUodGFrZVVudGlsKHRoaXMuY2xvc2VkKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLmNsb3NlPFQ+KG5ldyBEaWFsb2dSZXN1bHQ8VD4oZmFsc2UpKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBkaWFsb2dDb250ZW50Lm9uRGlhbG9nU2F2ZS5waXBlKHRha2VVbnRpbCh0aGlzLmNsb3NlZCkpLnN1YnNjcmliZSh2YWwgPT4ge1xyXG4gICAgICAgIHRoaXMuY2xvc2U8VD4obmV3IERpYWxvZ1Jlc3VsdDxUPih0cnVlLCB2YWwpKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNldCBvcHRpb25zIHNvIHRoZXkgZG9uJ3QgcGVyc2lzdCBuZXh0IHRpbWUgdGhlXHJcbiAgICogcm9vdCBkaWFsb2cgaXMgb3BlbmVkXHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICBwcml2YXRlIHJlc2V0T3B0aW9ucygpIHtcclxuICAgIHRoaXMuYWxpZ25Ub1RvcCA9IGZhbHNlO1xyXG4gICAgdGhpcy5kaXNwbGF5QXNQYW5lbCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqIElmIHRoZXkgdHVybmVkIG9uIGNsb3NlT25SZXNpemUsIGF1dG9tYXRpY2FsbHkgY2xvc2UgdGhlIGRpYWxvZyBhbnkgdGltZSBzb21lYm9keSByZXNpemVzIHRoZSB3aW5kb3cuXHJcbiAgICAqIFRoaXMgaXMgdXNlZnVsIGZvciByZXNwb25zaXZlIGxheW91dHMgdG8gcHJldmVudCBoYXZpbmcgdGhlIGRpYWxvZ0NvbnRlbnQgb24gdGhlIHNjcmVlbiB0d2ljZSAqL1xyXG4gIHByaXZhdGUgaGFuZGxlQ2xvc2VPblJlc2l6ZSgpIHtcclxuICAgIGlmKHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMuY2xvc2VPblJlc2l6ZSl7XHJcbiAgICAgIHRoaXMud2luZG93U2VydmljZS5yZXNpemVkIS5waXBlKHRha2VVbnRpbCh0aGlzLmNsb3NlZCksIHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jbG9zZShuZXcgRGlhbG9nUmVzdWx0KGZhbHNlKSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqRXh0cmFjdCB0aGUgZGlhbG9nSWQgZnJvbSB0aGUgZGlhbG9nIGNvbnRlbnQsIGlmIGl0IGhhcyBvbmUuIFRlbXBsYXRlLWJhc2VkIGRpYWxvZ3MgZ2VuZXJhbGx5IGRvbid0LlxyXG4gICAqIFdlIGZhbGwgYmFjayB0byBlbXB0eSBzdHJpbmcgdG8gYWxsb3cgYW55Ym9keSBsaXN0ZW5pbmcgZm9yIGRpYWxvZ0V2ZW50cyB0byBzdGlsbCByZWNvcmQgdGhlIG9wZW4vY2xvc2UgZXZlbiBpZlxyXG4gICAqIHRoZSBkaWFsb2cgaXRzZWxmIGRvZXMgbm90IHNheSB3aGF0IHRoZSBuYW1lIGlzLiBcclxuICAgKi9cclxuICBwcml2YXRlIGdldERpYWxvZ0lkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50UmVmPy5pbnN0YW5jZS5kaWFsb2dJZCB8fCAnJztcclxuICB9XHJcbn1cclxuIl19
|