@energycap/components 0.31.5 → 0.32.0
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/energycap-components.min.css +2 -2
- package/energycap-email.min.css +1 -1
- package/esm2020/energycap-components.mjs +5 -0
- package/esm2020/lib/components.module.mjs +386 -0
- package/esm2020/lib/controls/banner/banner.component.mjs +106 -0
- package/esm2020/lib/controls/button/button.component.mjs +106 -0
- package/esm2020/lib/controls/button/copy-button.directive.mjs +65 -0
- package/esm2020/lib/controls/checkbox/checkbox.component.mjs +139 -0
- package/esm2020/lib/controls/collapsible-toggle/collapsible-toggle.component.mjs +38 -0
- package/esm2020/lib/controls/combobox/combobox.component.mjs +841 -0
- package/esm2020/lib/controls/dropdown/dropdown.component.mjs +237 -0
- package/esm2020/lib/controls/file-upload/file-upload.component.mjs +169 -0
- package/esm2020/lib/controls/form-control/form-control.component.mjs +86 -0
- package/esm2020/lib/controls/form-control-base.mjs +143 -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 +252 -0
- package/esm2020/lib/controls/help-popover/help-popover.component.mjs +28 -0
- package/esm2020/lib/controls/item-picker/item-picker.component.mjs +233 -0
- package/esm2020/lib/controls/link-button/link-button.component.mjs +11 -0
- package/esm2020/lib/controls/menu/menu.component.mjs +443 -0
- package/{esm2015/lib/controls/navigation/link-item.js → esm2020/lib/controls/navigation/link-item.mjs} +0 -0
- package/{esm2015/lib/controls/navigation/nav-group.js → esm2020/lib/controls/navigation/nav-group.mjs} +0 -0
- package/esm2020/lib/controls/navigation/nav-item-active.directive.mjs +92 -0
- package/{esm2015/lib/controls/navigation/nav-item.js → esm2020/lib/controls/navigation/nav-item.mjs} +0 -0
- package/esm2020/lib/controls/numericbox/numericbox.component.mjs +371 -0
- package/esm2020/lib/controls/popover/popover.component.mjs +84 -0
- package/{esm2015/lib/controls/radio-button/radio-button-option.js → esm2020/lib/controls/radio-button/radio-button-option.mjs} +0 -0
- package/esm2020/lib/controls/radio-button/radio-button.component.mjs +81 -0
- package/esm2020/lib/controls/select/select.component.mjs +87 -0
- package/esm2020/lib/controls/tabs/tabs.component.mjs +47 -0
- package/esm2020/lib/controls/textbox/textbox.component.mjs +154 -0
- package/{esm2015/lib/core/cache.service.js → esm2020/lib/core/cache.service.mjs} +9 -8
- package/{esm2015/lib/core/custom-validators.js → esm2020/lib/core/custom-validators.mjs} +0 -0
- package/{esm2015/lib/core/date-time-helper.js → esm2020/lib/core/date-time-helper.mjs} +0 -0
- package/esm2020/lib/core/error.service.mjs +57 -0
- package/esm2020/lib/core/scroll.service.mjs +89 -0
- package/esm2020/lib/core/telemetry-tracker.service.mjs +16 -0
- package/esm2020/lib/core/telemetry.service.mjs +38 -0
- package/esm2020/lib/core/validation-message.service.mjs +181 -0
- package/{esm2015/lib/core/validation-patterns.js → esm2020/lib/core/validation-patterns.mjs} +0 -0
- package/esm2020/lib/core/window.service.mjs +182 -0
- package/esm2020/lib/display/app-bar/app-bar.component.mjs +46 -0
- package/esm2020/lib/display/avatar/avatar.component.mjs +67 -0
- package/{esm2015/lib/display/avatar/avatar.service.js → esm2020/lib/display/avatar/avatar.service.mjs} +9 -7
- package/esm2020/lib/display/confirm/confirm.component.mjs +131 -0
- package/{esm2015/lib/display/dialog/dialog-content.js → esm2020/lib/display/dialog/dialog-content.mjs} +0 -0
- package/esm2020/lib/display/dialog/dialog-group/dialog-group.component.mjs +63 -0
- package/{esm2015/lib/display/dialog/dialog-types.js → esm2020/lib/display/dialog/dialog-types.mjs} +0 -0
- package/esm2020/lib/display/dialog/dialog.component.mjs +242 -0
- package/esm2020/lib/display/dialog/dialog.service.mjs +71 -0
- package/{esm2015/lib/display/help/help-types.js → esm2020/lib/display/help/help-types.mjs} +0 -0
- package/esm2020/lib/display/hierarchy/hierarchy-base.mjs +106 -0
- package/{esm2015/lib/display/hierarchy/hierarchy-mocks.spec.js → esm2020/lib/display/hierarchy/hierarchy-mocks.spec.mjs} +5 -9
- package/esm2020/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +59 -0
- package/esm2020/lib/display/item-display/item-display.component.mjs +67 -0
- package/esm2020/lib/display/json-display/json-display.component.mjs +47 -0
- package/esm2020/lib/display/resizable/resizable-base.mjs +120 -0
- package/esm2020/lib/display/resizable/resizable.component.mjs +57 -0
- package/esm2020/lib/display/spinner/spinner.component.mjs +12 -0
- package/esm2020/lib/display/splash/splash.component.mjs +42 -0
- package/esm2020/lib/display/splash/splash.service.mjs +35 -0
- package/esm2020/lib/display/table/resizable-column.component.mjs +20 -0
- package/esm2020/lib/display/table/resizable-table.directive.mjs +227 -0
- package/esm2020/lib/display/table/searchable-table.component.mjs +338 -0
- package/esm2020/lib/display/table/table-detail-row.component.mjs +27 -0
- package/esm2020/lib/display/table/table-locked-column.component.mjs +58 -0
- package/esm2020/lib/display/table/table-master-header-row.component.mjs +11 -0
- package/esm2020/lib/display/table/table-master-row.component.mjs +150 -0
- package/esm2020/lib/display/table/table-pagination.component.mjs +150 -0
- package/esm2020/lib/display/table/table-selectable-row.component.mjs +235 -0
- package/esm2020/lib/display/table/table.component.mjs +244 -0
- package/esm2020/lib/display/tags/tag.mjs +15 -0
- package/esm2020/lib/display/tags/tags.component.mjs +77 -0
- package/esm2020/lib/display/toast/toast/toast.component.mjs +77 -0
- package/{esm2015/lib/display/toast/toast-types.js → esm2020/lib/display/toast/toast-types.mjs} +0 -0
- package/esm2020/lib/display/toast/toast.service.mjs +35 -0
- package/esm2020/lib/display/toast/toaster/toaster.component.mjs +114 -0
- package/esm2020/lib/display/tooltip/tooltip.component.mjs +25 -0
- package/esm2020/lib/display/tooltip/tooltip.service.mjs +63 -0
- package/esm2020/lib/display/tree/tree.component.mjs +125 -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/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 +48 -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/{esm2015/lib/shared/display.js → esm2020/lib/shared/display.mjs} +0 -0
- package/esm2020/lib/shared/form-group.helper.mjs +67 -0
- package/{esm2015/lib/shared/json-helper.js → esm2020/lib/shared/json-helper.mjs} +0 -0
- package/{esm2015/lib/shared/lodash-helper.js → esm2020/lib/shared/lodash-helper.mjs} +0 -0
- package/esm2020/lib/shared/page/page-base/page-base.component.mjs +339 -0
- package/{esm2015/lib/shared/page/page-statuses.js → esm2020/lib/shared/page/page-statuses.mjs} +0 -0
- package/esm2020/lib/shared/page/page-title/page-title.component.mjs +23 -0
- package/esm2020/lib/shared/page/page-view/page-view.component.mjs +121 -0
- package/{esm2015/lib/shared/testing/hierarchy-base-test-injector-factory.spec.js → esm2020/lib/shared/testing/hierarchy-base-test-injector-factory.spec.mjs} +0 -0
- package/esm2020/lib/shared/testing/page-base-component-test-helper.spec.mjs +30 -0
- package/{esm2015/lib/shared/testing/page-base-component-test-injector-factory.spec.js → esm2020/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs} +0 -0
- package/esm2020/lib/shared/testing/public-mocks.spec.mjs +132 -0
- package/{esm2015/lib/shared/testing/spy-factory.spec.js → esm2020/lib/shared/testing/spy-factory.spec.mjs} +0 -0
- package/{esm2015/lib/shared/testing/translation-mocks.spec.js → esm2020/lib/shared/testing/translation-mocks.spec.mjs} +0 -0
- package/esm2020/lib/shared/user-preference.service.mjs +17 -0
- package/esm2020/lib/shared/wizard/wizard-base/wizard-base.component.mjs +246 -0
- package/esm2020/lib/shared/wizard/wizard-buttons/wizard-buttons.component.mjs +68 -0
- package/esm2020/lib/shared/wizard/wizard-progress/wizard-progress.component.mjs +18 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/fesm2015/energycap-components.mjs +10090 -0
- package/fesm2015/energycap-components.mjs.map +1 -0
- package/fesm2020/energycap-components.mjs +9999 -0
- package/fesm2020/energycap-components.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components.module.d.ts +72 -0
- package/lib/controls/banner/banner.component.d.ts +3 -0
- package/lib/controls/button/button.component.d.ts +3 -0
- package/lib/controls/button/copy-button.directive.d.ts +3 -0
- package/lib/controls/checkbox/checkbox.component.d.ts +3 -0
- package/lib/controls/collapsible-toggle/collapsible-toggle.component.d.ts +3 -0
- package/lib/controls/combobox/combobox.component.d.ts +5 -2
- package/lib/controls/dropdown/dropdown.component.d.ts +3 -0
- package/lib/controls/file-upload/file-upload.component.d.ts +5 -2
- package/lib/controls/form-control/form-control.component.d.ts +3 -0
- package/lib/controls/form-control-base.d.ts +3 -0
- package/lib/controls/form-control-label/form-control-label.component.d.ts +3 -0
- package/lib/controls/form-group/form-group.component.d.ts +6 -3
- package/lib/controls/help-popover/help-popover.component.d.ts +3 -0
- package/lib/controls/item-picker/item-picker.component.d.ts +5 -2
- package/lib/controls/link-button/link-button.component.d.ts +3 -0
- package/lib/controls/menu/menu.component.d.ts +3 -0
- package/lib/controls/navigation/nav-item-active.directive.d.ts +3 -0
- package/lib/controls/numericbox/numericbox.component.d.ts +5 -2
- package/lib/controls/popover/popover.component.d.ts +3 -0
- package/lib/controls/radio-button/radio-button.component.d.ts +3 -0
- package/lib/controls/select/select.component.d.ts +3 -0
- package/lib/controls/tabs/tabs.component.d.ts +3 -0
- package/lib/controls/textbox/textbox.component.d.ts +3 -0
- package/lib/core/cache.service.d.ts +3 -0
- package/lib/core/error.service.d.ts +3 -0
- package/lib/core/scroll.service.d.ts +3 -0
- package/lib/core/telemetry-tracker.service.d.ts +3 -0
- package/lib/core/telemetry.service.d.ts +3 -0
- package/lib/core/validation-message.service.d.ts +3 -0
- package/lib/core/window.service.d.ts +3 -0
- package/lib/display/app-bar/app-bar.component.d.ts +3 -0
- package/lib/display/avatar/avatar.component.d.ts +3 -0
- package/lib/display/avatar/avatar.service.d.ts +3 -0
- package/lib/display/confirm/confirm.component.d.ts +5 -2
- package/lib/display/dialog/dialog-group/dialog-group.component.d.ts +3 -0
- package/lib/display/dialog/dialog.component.d.ts +3 -0
- package/lib/display/dialog/dialog.service.d.ts +3 -0
- package/lib/display/hierarchy/hierarchy-base.d.ts +3 -0
- package/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.d.ts +3 -0
- package/lib/display/item-display/item-display.component.d.ts +3 -0
- package/lib/display/json-display/json-display.component.d.ts +5 -2
- package/lib/display/resizable/resizable-base.d.ts +3 -0
- package/lib/display/resizable/resizable.component.d.ts +3 -0
- package/lib/display/spinner/spinner.component.d.ts +3 -0
- package/lib/display/splash/splash.component.d.ts +3 -0
- package/lib/display/splash/splash.service.d.ts +3 -0
- package/lib/display/table/resizable-column.component.d.ts +3 -0
- package/lib/display/table/resizable-table.directive.d.ts +3 -0
- package/lib/display/table/searchable-table.component.d.ts +6 -3
- package/lib/display/table/table-detail-row.component.d.ts +3 -0
- package/lib/display/table/table-locked-column.component.d.ts +3 -0
- package/lib/display/table/table-master-header-row.component.d.ts +3 -0
- package/lib/display/table/table-master-row.component.d.ts +3 -0
- package/lib/display/table/table-pagination.component.d.ts +3 -0
- package/lib/display/table/table-selectable-row.component.d.ts +5 -2
- package/lib/display/table/table.component.d.ts +3 -0
- package/lib/display/tags/tags.component.d.ts +3 -0
- package/lib/display/toast/toast/toast.component.d.ts +3 -0
- package/lib/display/toast/toast.service.d.ts +3 -0
- package/lib/display/toast/toaster/toaster.component.d.ts +3 -0
- package/lib/display/tooltip/tooltip.component.d.ts +3 -0
- package/lib/display/tooltip/tooltip.service.d.ts +3 -0
- package/lib/display/tree/tree.component.d.ts +3 -0
- package/lib/display/view-overlay/view-overlay.component.d.ts +3 -0
- package/lib/shared/directives/click-area-for/click-area-for.directive.d.ts +3 -0
- package/lib/shared/directives/if-viewport-width/if-viewport-width.directive.d.ts +3 -0
- package/lib/shared/directives/popup/popup-container.directive.d.ts +3 -0
- package/lib/shared/display/pipes/date-display.pipe.d.ts +3 -0
- package/lib/shared/display/pipes/highlight-text.pipe.d.ts +3 -0
- package/lib/shared/display/pipes/relative-date.pipe.d.ts +3 -0
- package/lib/shared/display/pipes/row-count.pipe.d.ts +3 -0
- package/lib/shared/display/pipes/time-display.pipe.d.ts +3 -0
- package/lib/shared/form-group.helper.d.ts +5 -2
- package/lib/shared/page/page-base/page-base.component.d.ts +5 -2
- package/lib/shared/page/page-title/page-title.component.d.ts +3 -0
- package/lib/shared/page/page-view/page-view.component.d.ts +3 -0
- package/lib/shared/testing/public-mocks.spec.d.ts +7 -0
- package/lib/shared/user-preference.service.d.ts +3 -0
- package/lib/shared/wizard/wizard-base/wizard-base.component.d.ts +3 -0
- package/lib/shared/wizard/wizard-buttons/wizard-buttons.component.d.ts +3 -0
- package/lib/shared/wizard/wizard-progress/wizard-progress.component.d.ts +3 -0
- package/package.json +27 -15
- package/src/styles/_functions.scss +6 -4
- package/src/styles/_icons.scss +1 -1
- package/src/styles/mixins/_control-base.scss +2 -2
- package/src/styles/mixins/_form-control-base.scss +3 -1
- package/src/styles/mixins/_spinner-base.scss +3 -1
- package/bundles/energycap-components.umd.js +0 -10646
- package/bundles/energycap-components.umd.js.map +0 -1
- package/bundles/energycap-components.umd.min.js +0 -17
- package/bundles/energycap-components.umd.min.js.map +0 -1
- package/energycap-components.d.ts +0 -7
- package/energycap-components.metadata.json +0 -1
- package/esm2015/energycap-components.js +0 -8
- package/esm2015/lib/components.module.js +0 -238
- package/esm2015/lib/controls/banner/banner.component.js +0 -94
- package/esm2015/lib/controls/button/button.component.js +0 -89
- package/esm2015/lib/controls/button/copy-button.directive.js +0 -63
- package/esm2015/lib/controls/checkbox/checkbox.component.js +0 -137
- package/esm2015/lib/controls/collapsible-toggle/collapsible-toggle.component.js +0 -35
- package/esm2015/lib/controls/combobox/combobox.component.js +0 -819
- package/esm2015/lib/controls/dropdown/dropdown.component.js +0 -207
- package/esm2015/lib/controls/file-upload/file-upload.component.js +0 -172
- package/esm2015/lib/controls/form-control/form-control.component.js +0 -65
- package/esm2015/lib/controls/form-control-base.js +0 -140
- package/esm2015/lib/controls/form-control-label/form-control-label.component.js +0 -139
- package/esm2015/lib/controls/form-group/form-group.component.js +0 -254
- package/esm2015/lib/controls/help-popover/help-popover.component.js +0 -22
- package/esm2015/lib/controls/item-picker/item-picker.component.js +0 -216
- package/esm2015/lib/controls/link-button/link-button.component.js +0 -12
- package/esm2015/lib/controls/menu/menu.component.js +0 -424
- package/esm2015/lib/controls/navigation/nav-item-active.directive.js +0 -86
- package/esm2015/lib/controls/numericbox/numericbox.component.js +0 -362
- package/esm2015/lib/controls/popover/popover.component.js +0 -85
- package/esm2015/lib/controls/radio-button/radio-button.component.js +0 -78
- package/esm2015/lib/controls/select/select.component.js +0 -89
- package/esm2015/lib/controls/tabs/tabs.component.js +0 -42
- package/esm2015/lib/controls/textbox/textbox.component.js +0 -149
- package/esm2015/lib/core/error.service.js +0 -56
- package/esm2015/lib/core/scroll.service.js +0 -88
- package/esm2015/lib/core/telemetry-tracker.service.js +0 -14
- package/esm2015/lib/core/telemetry.service.js +0 -40
- package/esm2015/lib/core/validation-message.service.js +0 -185
- package/esm2015/lib/core/window.service.js +0 -191
- package/esm2015/lib/display/app-bar/app-bar.component.js +0 -42
- package/esm2015/lib/display/avatar/avatar.component.js +0 -73
- package/esm2015/lib/display/confirm/confirm.component.js +0 -127
- package/esm2015/lib/display/dialog/dialog-group/dialog-group.component.js +0 -65
- package/esm2015/lib/display/dialog/dialog.component.js +0 -229
- package/esm2015/lib/display/dialog/dialog.service.js +0 -69
- package/esm2015/lib/display/hierarchy/hierarchy-base.js +0 -106
- package/esm2015/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.js +0 -58
- package/esm2015/lib/display/item-display/item-display.component.js +0 -57
- package/esm2015/lib/display/json-display/json-display.component.js +0 -44
- package/esm2015/lib/display/resizable/resizable-base.js +0 -119
- package/esm2015/lib/display/resizable/resizable.component.js +0 -57
- package/esm2015/lib/display/spinner/spinner.component.js +0 -12
- package/esm2015/lib/display/splash/splash.component.js +0 -45
- package/esm2015/lib/display/splash/splash.service.js +0 -34
- package/esm2015/lib/display/table/resizable-column.component.js +0 -23
- package/esm2015/lib/display/table/resizable-table.directive.js +0 -223
- package/esm2015/lib/display/table/searchable-table.component.js +0 -303
- package/esm2015/lib/display/table/table-detail-row.component.js +0 -21
- package/esm2015/lib/display/table/table-locked-column.component.js +0 -53
- package/esm2015/lib/display/table/table-master-header-row.component.js +0 -11
- package/esm2015/lib/display/table/table-master-row.component.js +0 -141
- package/esm2015/lib/display/table/table-pagination.component.js +0 -146
- package/esm2015/lib/display/table/table-selectable-row.component.js +0 -216
- package/esm2015/lib/display/table/table.component.js +0 -210
- package/esm2015/lib/display/tags/tag.js +0 -15
- package/esm2015/lib/display/tags/tags.component.js +0 -73
- package/esm2015/lib/display/toast/toast/toast.component.js +0 -70
- package/esm2015/lib/display/toast/toast.service.js +0 -34
- package/esm2015/lib/display/toast/toaster/toaster.component.js +0 -117
- package/esm2015/lib/display/tooltip/tooltip.component.js +0 -24
- package/esm2015/lib/display/tooltip/tooltip.service.js +0 -64
- package/esm2015/lib/display/tree/tree.component.js +0 -100
- package/esm2015/lib/display/view-overlay/view-overlay.component.js +0 -50
- package/esm2015/lib/shared/directives/click-area-for/click-area-for.directive.js +0 -25
- package/esm2015/lib/shared/directives/if-viewport-width/if-viewport-width.directive.js +0 -112
- package/esm2015/lib/shared/directives/popup/popup-container.directive.js +0 -160
- package/esm2015/lib/shared/display/pipes/date-display.pipe.js +0 -49
- package/esm2015/lib/shared/display/pipes/highlight-text.pipe.js +0 -26
- package/esm2015/lib/shared/display/pipes/relative-date.pipe.js +0 -49
- package/esm2015/lib/shared/display/pipes/row-count.pipe.js +0 -47
- package/esm2015/lib/shared/display/pipes/time-display.pipe.js +0 -40
- package/esm2015/lib/shared/form-group.helper.js +0 -65
- package/esm2015/lib/shared/page/page-base/page-base.component.js +0 -356
- package/esm2015/lib/shared/page/page-title/page-title.component.js +0 -19
- package/esm2015/lib/shared/page/page-view/page-view.component.js +0 -94
- package/esm2015/lib/shared/testing/page-base-component-test-helper.spec.js +0 -35
- package/esm2015/lib/shared/testing/public-mocks.spec.js +0 -126
- package/esm2015/lib/shared/user-preference.service.js +0 -15
- package/esm2015/lib/shared/wizard/wizard-base/wizard-base.component.js +0 -260
- package/esm2015/lib/shared/wizard/wizard-buttons/wizard-buttons.component.js +0 -54
- package/esm2015/lib/shared/wizard/wizard-progress/wizard-progress.component.js +0 -18
- package/fesm2015/energycap-components.js +0 -9638
- package/fesm2015/energycap-components.js.map +0 -1
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';
|
|
3
|
+
import { Overlay } from '../view-overlay/view-overlay.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
import * as i2 from "@angular/forms";
|
|
7
|
+
import * as i3 from "../../controls/button/button.component";
|
|
8
|
+
import * as i4 from "../../controls/textbox/textbox.component";
|
|
9
|
+
import * as i5 from "../view-overlay/view-overlay.component";
|
|
10
|
+
import * as i6 from "../../controls/banner/banner.component";
|
|
11
|
+
import * as i7 from "@ngx-translate/core";
|
|
12
|
+
export class ConfirmDialogContext {
|
|
13
|
+
constructor() {
|
|
14
|
+
/** Id to distinguish between confirm component contexts emitted by the dialog service */
|
|
15
|
+
this.id = '';
|
|
16
|
+
/**
|
|
17
|
+
* Optional required flag for the textbox, will set
|
|
18
|
+
* a validator on the input if true
|
|
19
|
+
*/
|
|
20
|
+
this.textboxRequired = false;
|
|
21
|
+
/** Sets the textbox's uppercase parameter */
|
|
22
|
+
this.textboxUppercase = false;
|
|
23
|
+
/**
|
|
24
|
+
* Optional textbox height (in rows).
|
|
25
|
+
* Only applies to multi-line type.
|
|
26
|
+
* Default 3.
|
|
27
|
+
*/
|
|
28
|
+
this.textareaRows = 3;
|
|
29
|
+
/** Optional save button label */
|
|
30
|
+
this.saveLabel = 'Save'; // LOCO
|
|
31
|
+
/** Optional save button type */
|
|
32
|
+
this.saveButtonType = 'primary';
|
|
33
|
+
/** Optional cancel button label */
|
|
34
|
+
this.cancelLabel = 'Cancel'; // LOCO
|
|
35
|
+
/** When true, adds the submit tag to the save button so hitting enter triggers the save */
|
|
36
|
+
this.saveOnEnter = false;
|
|
37
|
+
/** Optional alternate save button label */
|
|
38
|
+
this.alternateSaveLabel = undefined;
|
|
39
|
+
/** Optional alternate save button type */
|
|
40
|
+
this.alternateSaveButtonType = undefined;
|
|
41
|
+
/**
|
|
42
|
+
* Used to know which save button was selected in case the calling component
|
|
43
|
+
* is utilizing the alternate save button
|
|
44
|
+
*/
|
|
45
|
+
this.saveSource = 'primary';
|
|
46
|
+
/** The message to be displayed while inlineConfirmAction is pending. */
|
|
47
|
+
this.inlineConfirmPendingMessage = '';
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
export class ConfirmComponent {
|
|
51
|
+
constructor() {
|
|
52
|
+
this.dialogId = 'Confirm';
|
|
53
|
+
/** Form Group to hold any form controls needed */
|
|
54
|
+
this.formGroup = new UntypedFormGroup({});
|
|
55
|
+
this.status = new Overlay('hasData');
|
|
56
|
+
this.onDialogSave = new EventEmitter();
|
|
57
|
+
this.onDialogCancel = new EventEmitter();
|
|
58
|
+
}
|
|
59
|
+
onOpen(openContext) {
|
|
60
|
+
this.context = openContext;
|
|
61
|
+
this.dialogId = openContext.id;
|
|
62
|
+
if (this.context.alternateSaveLabel) {
|
|
63
|
+
this.context.saveOnEnter = false;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
ngOnInit() {
|
|
67
|
+
this.addFormControls();
|
|
68
|
+
}
|
|
69
|
+
onSave(source) {
|
|
70
|
+
this.formGroup.markAllAsTouched();
|
|
71
|
+
if (this.formGroup.valid) {
|
|
72
|
+
let formValues = this.formGroup.getRawValue();
|
|
73
|
+
if (formValues.textbox) {
|
|
74
|
+
this.context.textboxValue = formValues.textbox;
|
|
75
|
+
}
|
|
76
|
+
this.context.saveSource = source;
|
|
77
|
+
if (this.context.inlineConfirmAction) {
|
|
78
|
+
this.doInlineConfirmAction();
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
this.onDialogSave.emit(this.context);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
else if (this.context.validationErrorMessage) {
|
|
85
|
+
this.error = this.context.validationErrorMessage;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
onCancel() {
|
|
89
|
+
this.onDialogCancel.emit();
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Adds the textbox form control to our form group if its configured to be visible
|
|
93
|
+
* Will also add the required validator if requested
|
|
94
|
+
*/
|
|
95
|
+
addFormControls() {
|
|
96
|
+
if (this.context.textboxType) {
|
|
97
|
+
let validators = [];
|
|
98
|
+
if (this.context.textboxRequired) {
|
|
99
|
+
validators.push(Validators.required);
|
|
100
|
+
}
|
|
101
|
+
if (this.context.textboxValidators) {
|
|
102
|
+
validators.push(...this.context.textboxValidators);
|
|
103
|
+
}
|
|
104
|
+
this.formGroup.addControl('textbox', new UntypedFormControl('', validators));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
async doInlineConfirmAction() {
|
|
108
|
+
this.status.setStatus('pending', this.context.inlineConfirmPendingMessage);
|
|
109
|
+
let result = await this.context.inlineConfirmAction();
|
|
110
|
+
this.status.setStatus('noData', result.message, {
|
|
111
|
+
id: 'inlineConfirmClose',
|
|
112
|
+
label: 'Close',
|
|
113
|
+
icon: result.isSuccess ? 'icon-check-circle' : 'icon-error',
|
|
114
|
+
classlist: result.isSuccess ? 'font-color-success' : 'font-color-error',
|
|
115
|
+
onClick: () => { result.isSuccess ? this.onDialogSave.emit(this.context) : this.onDialogCancel.emit(); }
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
ConfirmComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ConfirmComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
120
|
+
ConfirmComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: ConfirmComponent, selector: "ec-confirm", inputs: { context: "context" }, outputs: { onDialogSave: "onDialogSave", onDialogCancel: "onDialogCancel" }, ngImport: i0, template: "<section ecOverlay\r\n [status]=\"status?.status\"\r\n [message]=\"status?.message\"\r\n [action]=\"status?.action\"\r\n [noDataTemplate]=\"inlineConfirmResult\"\r\n overlayClassList=\"p-0\"\r\n class=\"bg-body flex-grow d-flex\">\r\n <form [formGroup]=\"formGroup\" class=\"flex-grow flex-column confirm-content text-body-1\">\r\n <section class=\"flex-grow\">\r\n <h2 class=\"font-weight-bold mb-3\" *ngIf=\"context?.title\">{{context?.title}}</h2>\r\n <ec-banner *ngIf=\"error\" [text]=\"error | translate\" bannerStyle=\"normal\" class=\"mb-3\"></ec-banner>\r\n <div *ngIf=\"context?.message\" [innerHtml]=\"context?.message | translate\" class=\"mb-3\"></div>\r\n <ec-textbox id=\"confirmTextbox\"\r\n *ngIf=\"context?.textboxType\"\r\n [autofocus]=\"true\"\r\n [formModel]=\"formGroup.get('textbox')\"\r\n [required]=\"context?.textboxRequired\"\r\n [label]=\"context?.textboxLabel\"\r\n [type]=\"context?.textboxType\"\r\n [rows]=\"context?.textareaRows\"\r\n [placeholder]=\"context?.textboxPlaceholder\"\r\n [upperCase]=\"context?.textboxUppercase\">\r\n </ec-textbox>\r\n </section>\r\n <footer class=\"mt-auto flex-shrink d-flex py-2 flex-row-reverse\">\r\n <ec-button id=\"saveConfirmButton\"\r\n class=\"ml-2\"\r\n [type]=\"context?.saveButtonType ? context?.saveButtonType : 'primary'\"\r\n [label]=\"context?.saveLabel ? context?.saveLabel : 'Save'\"\r\n [autofocus]=\"!context?.textboxType\"\r\n [isSubmit]=\"context?.saveOnEnter\"\r\n (clicked)=\"onSave('primary')\">\r\n </ec-button>\r\n <ec-button id=\"alternateSaveConfirmButton\"\r\n *ngIf=\"context?.alternateSaveLabel\"\r\n class=\"ml-2\"\r\n [type]=\"context?.alternateSaveButtonType ? context?.alternateSaveButtonType : 'primary'\"\r\n [label]=\"context?.alternateSaveLabel\"\r\n (clicked)=\"onSave('alternate')\">\r\n </ec-button>\r\n <ec-button id=\"cancelConfirmButton\"\r\n class=\"ml-auto\"\r\n type=\"secondary\"\r\n [label]=\"context?.cancelLabel ? context?.cancelLabel : 'Cancel'\"\r\n (clicked)=\"onCancel()\">\r\n </ec-button>\r\n </footer>\r\n </form>\r\n</section>\r\n\r\n<ng-template #inlineConfirmResult>\r\n <section class=\"flex-grow align-self-stretch confirm-content text-body-1\">\r\n <div class=\"d-flex\">\r\n <i class=\"ec-icon {{status?.action?.icon}} {{status?.action?.classlist}} inline-confirm-result-icon\"></i>\r\n <div [innerHTML]=\"status?.message | translate\"></div>\r\n </div>\r\n <div class=\"d-flex pt-2 mt-auto\">\r\n <ec-button id=\"inlineConfirmClose\"\r\n label=\"Close\"\r\n type=\"secondary\"\r\n class=\"ml-auto\"\r\n (clicked)=\"status?.action?.onClick!()\"\r\n [autofocus]=\"true\">\r\n </ec-button>\r\n </div>\r\n </section>\r\n</ng-template>", styles: [":host{width:100%;display:flex}.confirm-content{padding:1.5rem;display:flex;flex-direction:column}.inline-confirm-result-icon{margin:.0625rem .25rem .0625rem 0}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.ButtonComponent, selector: "ec-button", inputs: ["id", "disabled", "icon", "label", "badge", "tabindex", "type", "pending", "pendingIcon", "customTemplate", "isSubmit", "autofocus"], outputs: ["clicked"] }, { kind: "component", type: i4.TextboxComponent, selector: "ec-textbox", inputs: ["autocomplete", "type", "placeholder", "maxlength", "minlength", "rows", "selectOnAutofocus", "upperCase"] }, { kind: "component", type: i5.ViewOverlayComponent, selector: "[ecOverlay]", inputs: ["status", "message", "action", "noDataTemplate", "displayAsMask", "overlayClassList"] }, { kind: "component", type: i6.BannerComponent, selector: "ec-banner", inputs: ["hidden", "id", "type", "bannerStyle", "title", "text", "list", "showCloseBtn", "autoHideOnClose", "customIcon", "rememberClosed"], outputs: ["closed"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
|
|
121
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ConfirmComponent, decorators: [{
|
|
122
|
+
type: Component,
|
|
123
|
+
args: [{ selector: 'ec-confirm', template: "<section ecOverlay\r\n [status]=\"status?.status\"\r\n [message]=\"status?.message\"\r\n [action]=\"status?.action\"\r\n [noDataTemplate]=\"inlineConfirmResult\"\r\n overlayClassList=\"p-0\"\r\n class=\"bg-body flex-grow d-flex\">\r\n <form [formGroup]=\"formGroup\" class=\"flex-grow flex-column confirm-content text-body-1\">\r\n <section class=\"flex-grow\">\r\n <h2 class=\"font-weight-bold mb-3\" *ngIf=\"context?.title\">{{context?.title}}</h2>\r\n <ec-banner *ngIf=\"error\" [text]=\"error | translate\" bannerStyle=\"normal\" class=\"mb-3\"></ec-banner>\r\n <div *ngIf=\"context?.message\" [innerHtml]=\"context?.message | translate\" class=\"mb-3\"></div>\r\n <ec-textbox id=\"confirmTextbox\"\r\n *ngIf=\"context?.textboxType\"\r\n [autofocus]=\"true\"\r\n [formModel]=\"formGroup.get('textbox')\"\r\n [required]=\"context?.textboxRequired\"\r\n [label]=\"context?.textboxLabel\"\r\n [type]=\"context?.textboxType\"\r\n [rows]=\"context?.textareaRows\"\r\n [placeholder]=\"context?.textboxPlaceholder\"\r\n [upperCase]=\"context?.textboxUppercase\">\r\n </ec-textbox>\r\n </section>\r\n <footer class=\"mt-auto flex-shrink d-flex py-2 flex-row-reverse\">\r\n <ec-button id=\"saveConfirmButton\"\r\n class=\"ml-2\"\r\n [type]=\"context?.saveButtonType ? context?.saveButtonType : 'primary'\"\r\n [label]=\"context?.saveLabel ? context?.saveLabel : 'Save'\"\r\n [autofocus]=\"!context?.textboxType\"\r\n [isSubmit]=\"context?.saveOnEnter\"\r\n (clicked)=\"onSave('primary')\">\r\n </ec-button>\r\n <ec-button id=\"alternateSaveConfirmButton\"\r\n *ngIf=\"context?.alternateSaveLabel\"\r\n class=\"ml-2\"\r\n [type]=\"context?.alternateSaveButtonType ? context?.alternateSaveButtonType : 'primary'\"\r\n [label]=\"context?.alternateSaveLabel\"\r\n (clicked)=\"onSave('alternate')\">\r\n </ec-button>\r\n <ec-button id=\"cancelConfirmButton\"\r\n class=\"ml-auto\"\r\n type=\"secondary\"\r\n [label]=\"context?.cancelLabel ? context?.cancelLabel : 'Cancel'\"\r\n (clicked)=\"onCancel()\">\r\n </ec-button>\r\n </footer>\r\n </form>\r\n</section>\r\n\r\n<ng-template #inlineConfirmResult>\r\n <section class=\"flex-grow align-self-stretch confirm-content text-body-1\">\r\n <div class=\"d-flex\">\r\n <i class=\"ec-icon {{status?.action?.icon}} {{status?.action?.classlist}} inline-confirm-result-icon\"></i>\r\n <div [innerHTML]=\"status?.message | translate\"></div>\r\n </div>\r\n <div class=\"d-flex pt-2 mt-auto\">\r\n <ec-button id=\"inlineConfirmClose\"\r\n label=\"Close\"\r\n type=\"secondary\"\r\n class=\"ml-auto\"\r\n (clicked)=\"status?.action?.onClick!()\"\r\n [autofocus]=\"true\">\r\n </ec-button>\r\n </div>\r\n </section>\r\n</ng-template>", styles: [":host{width:100%;display:flex}.confirm-content{padding:1.5rem;display:flex;flex-direction:column}.inline-confirm-result-icon{margin:.0625rem .25rem .0625rem 0}\n"] }]
|
|
124
|
+
}], ctorParameters: function () { return []; }, propDecorators: { context: [{
|
|
125
|
+
type: Input
|
|
126
|
+
}], onDialogSave: [{
|
|
127
|
+
type: Output
|
|
128
|
+
}], onDialogCancel: [{
|
|
129
|
+
type: Output
|
|
130
|
+
}] } });
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvZGlzcGxheS9jb25maXJtL2NvbmZpcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvY29uZmlybS9jb25maXJtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSy9GLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7Ozs7O0FBU2pFLE1BQU0sT0FBTyxvQkFBb0I7SUFBakM7UUFDRSx5RkFBeUY7UUFDbEYsT0FBRSxHQUFXLEVBQUUsQ0FBQztRQWlCdkI7OztXQUdHO1FBQ0ksb0JBQWUsR0FBYSxLQUFLLENBQUM7UUFLekMsNkNBQTZDO1FBQ3RDLHFCQUFnQixHQUFhLEtBQUssQ0FBQztRQUUxQzs7OztXQUlHO1FBQ0ksaUJBQVksR0FBWSxDQUFDLENBQUM7UUFXakMsaUNBQWlDO1FBQzFCLGNBQVMsR0FBWSxNQUFNLENBQUMsQ0FBQyxPQUFPO1FBRTNDLGdDQUFnQztRQUN6QixtQkFBYyxHQUFnQixTQUFTLENBQUM7UUFFL0MsbUNBQW1DO1FBQzVCLGdCQUFXLEdBQVksUUFBUSxDQUFDLENBQUMsT0FBTztRQUUvQywyRkFBMkY7UUFDcEYsZ0JBQVcsR0FBYSxLQUFLLENBQUM7UUFFckMsMkNBQTJDO1FBQ3BDLHVCQUFrQixHQUFZLFNBQVMsQ0FBQztRQUUvQywwQ0FBMEM7UUFDbkMsNEJBQXVCLEdBQWdCLFNBQVMs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QUFJLENBQUMsT0FBTyxDQUFDLG1CQUFvQixFQUFFLENBQUM7UUFFdkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUU7WUFDOUMsRUFBRSxFQUFFLG9CQUFvQjtZQUN4QixLQUFLLEVBQUUsT0FBTztZQUNkLElBQUksRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsWUFBWTtZQUMzRCxTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLGtCQUFrQjtZQUN2RSxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFBLENBQUMsQ0FBQztTQUN4RyxDQUFDLENBQUM7SUFDTCxDQUFDOzs2R0ExRlUsZ0JBQWdCO2lHQUFoQixnQkFBZ0IsK0pDdkc3Qix1dUdBa0VjOzJGRHFDRCxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsWUFBWTswRUFpQk4sT0FBTztzQkFBdEIsS0FBSztnQkFFVyxZQUFZO3NCQUE1QixNQUFNO2dCQUNVLGNBQWM7c0JBQTlCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFVudHlwZWRGb3JtQ29udHJvbCwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBCdXR0b25UeXBlIH0gZnJvbSAnLi4vLi4vY29udHJvbHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUZXh0Ym94VHlwZSB9IGZyb20gJy4uLy4uL2NvbnRyb2xzL3RleHRib3gvdGV4dGJveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEaWFsb2dDb250ZW50IH0gZnJvbSAnLi4vZGlhbG9nL2RpYWxvZy1jb250ZW50JztcclxuaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gJy4uL3ZpZXctb3ZlcmxheS92aWV3LW92ZXJsYXkuY29tcG9uZW50JztcclxuXHJcbnR5cGUgU2F2ZVNvdXJjZSA9ICdwcmltYXJ5J3wnYWx0ZXJuYXRlJztcclxuXHJcbmV4cG9ydCB0eXBlIEN1c3RvbUFjdGlvblJlc3VsdCA9IHtcclxuICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgaXNTdWNjZXNzOiBib29sZWFuO1xyXG59O1xyXG5cclxuZXhwb3J0IGNsYXNzIENvbmZpcm1EaWFsb2dDb250ZXh0IHtcclxuICAvKiogSWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBjb25maXJtIGNvbXBvbmVudCBjb250ZXh0cyBlbWl0dGVkIGJ5IHRoZSBkaWFsb2cgc2VydmljZSAqL1xyXG4gIHB1YmxpYyBpZDogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKiBPcHRpb25hbCB0aXRsZSBvZiB0aGUgY29uZmlybSAqL1xyXG4gIHB1YmxpYyB0aXRsZT86IHN0cmluZztcclxuXHJcbiAgLyoqIE9wdGlvbmFsIG1lc3NhZ2UgKi9cclxuICBwdWJsaWMgbWVzc2FnZT86IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogT3B0aW9uYWwgdGV4dGJveCB0eXBlLCB0aGlzIHdpbGwgZGV0ZXJtaW5lIHdoZXRoZXJcclxuICAgKiBhbiBpbnB1dCBpcyB2aXNpYmxlIG9yIG5vdFxyXG4gICAqL1xyXG4gIHB1YmxpYyB0ZXh0Ym94VHlwZT86IFRleHRib3hUeXBlO1xyXG5cclxuICAvKiogT3B0aW9uYWwgdGV4dGJveCBsYWJlbCAqL1xyXG4gIHB1YmxpYyB0ZXh0Ym94TGFiZWw/OiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIE9wdGlvbmFsIHJlcXVpcmVkIGZsYWcgZm9yIHRoZSB0ZXh0Ym94LCB3aWxsIHNldFxyXG4gICAqIGEgdmFsaWRhdG9yIG9uIHRoZSBpbnB1dCBpZiB0cnVlXHJcbiAgICovXHJcbiAgcHVibGljIHRleHRib3hSZXF1aXJlZD86IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqIE9wdGlvbmFsIGFycmF5IG9mIHZhbGlkYXRvcnMgdG8gYWRkIHRvIHRoZSB0ZXh0Ym94IGZvcm0gY29udHJvbC4gKi9cclxuICBwdWJsaWMgdGV4dGJveFZhbGlkYXRvcnM/OiBWYWxpZGF0b3JGbltdO1xyXG5cclxuICAvKiogU2V0cyB0aGUgdGV4dGJveCdzIHVwcGVyY2FzZSBwYXJhbWV0ZXIgKi9cclxuICBwdWJsaWMgdGV4dGJveFVwcGVyY2FzZT86IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogT3B0aW9uYWwgdGV4dGJveCBoZWlnaHQgKGluIHJvd3MpLlxyXG4gICAqIE9ubHkgYXBwbGllcyB0byBtdWx0aS1saW5lIHR5cGUuXHJcbiAgICogRGVmYXVsdCAzLlxyXG4gICAqL1xyXG4gIHB1YmxpYyB0ZXh0YXJlYVJvd3M/OiBudW1iZXIgPSAzO1xyXG5cclxuICAvKiogT3B0aW9uYWwgdGV4dGJveCBwbGFjZWhvbGRlciB0ZXh0ICovXHJcbiAgcHVibGljIHRleHRib3hQbGFjZWhvbGRlcj86IHN0cmluZztcclxuXHJcbiAgLyoqIE9wdGlvbmFsIGVycm9yIG1lc3NhZ2UgdG8gZGlzcGxheSB3aGVuIHRleHRib3ggKi9cclxuICBwdWJsaWMgdmFsaWRhdGlvbkVycm9yTWVzc2FnZT86IHN0cmluZztcclxuXHJcbiAgLyoqIFZhbHVlIHJldHVybmVkIGZyb20gdGhlIGlucHV0IGlmIGVuYWJsZWQgKi9cclxuICBwdWJsaWMgdGV4dGJveFZhbHVlPzogc3RyaW5nO1xyXG5cclxuICAvKiogT3B0aW9uYWwgc2F2ZSBidXR0b24gbGFiZWwgKi9cclxuICBwdWJsaWMgc2F2ZUxhYmVsPzogc3RyaW5nID0gJ1NhdmUnOyAvLyBMT0NPXHJcblxyXG4gIC8qKiBPcHRpb25hbCBzYXZlIGJ1dHRvbiB0eXBlICovXHJcbiAgcHVibGljIHNhdmVCdXR0b25UeXBlPzogQnV0dG9uVHlwZSA9ICdwcmltYXJ5JztcclxuXHJcbiAgLyoqIE9wdGlvbmFsIGNhbmNlbCBidXR0b24gbGFiZWwgKi9cclxuICBwdWJsaWMgY2FuY2VsTGFiZWw/OiBzdHJpbmcgPSAnQ2FuY2VsJzsgLy8gTE9DT1xyXG5cclxuICAvKiogV2hlbiB0cnVlLCBhZGRzIHRoZSBzdWJtaXQgdGFnIHRvIHRoZSBzYXZlIGJ1dHRvbiBzbyBoaXR0aW5nIGVudGVyIHRyaWdnZXJzIHRoZSBzYXZlICovXHJcbiAgcHVibGljIHNhdmVPbkVudGVyPzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogT3B0aW9uYWwgYWx0ZXJuYXRlIHNhdmUgYnV0dG9uIGxhYmVsICovXHJcbiAgcHVibGljIGFsdGVybmF0ZVNhdmVMYWJlbD86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuXHJcbiAgLyoqIE9wdGlvbmFsIGFsdGVybmF0ZSBzYXZlIGJ1dHRvbiB0eXBlICovXHJcbiAgcHVibGljIGFsdGVybmF0ZVNhdmVCdXR0b25UeXBlPzogQnV0dG9uVHlwZSA9IHVuZGVmaW5lZDtcclxuXHJcbiAgLyoqXHJcbiAgICogVXNlZCB0byBrbm93IHdoaWNoIHNhdmUgYnV0dG9uIHdhcyBzZWxlY3RlZCBpbiBjYXNlIHRoZSBjYWxsaW5nIGNvbXBvbmVudFxyXG4gICAqIGlzIHV0aWxpemluZyB0aGUgYWx0ZXJuYXRlIHNhdmUgYnV0dG9uXHJcbiAgICovXHJcbiAgcHVibGljIHNhdmVTb3VyY2U/OiBTYXZlU291cmNlID0gJ3ByaW1hcnknO1xyXG5cclxuICAvKipcclxuICAgKiBXaGVuIHByb3ZpZGVkLCB0aGUgY29uZmlybSB3aWxsIHNob3cgYSBwZW5kaW5nIHN0YXRlIGFuZCBjYWxsIHRoaXMsIHRoZW4gdXBvblxyXG4gICAqIGNvbXBsZXRpb24gZGlzcGxheSB0aGUgcmVzdWx0IG1lc3NhZ2UgYW5kIGEgY2xvc2UgYnV0dG9uLiBJZiB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZFxyXG4gICAqIHN1Y2Nlc3NmdWxseSwgdGhlIGNsb3NlIGJ1dHRvbiB3aWxsIGVtaXQgb25EaWFsb2dTYXZlLiBJZiB0aGUgcHJvbWlzZSBpcyByZWplY3RlZCxcclxuICAgKiB0aGUgY2xvc2UgYnV0dG9uIHdpbGwgZW1pdCBvbkRpYWxvZ0NhbmNlbC5cclxuICAgKi9cclxuICBwdWJsaWMgaW5saW5lQ29uZmlybUFjdGlvbj86ICgpID0+IFByb21pc2U8Q3VzdG9tQWN0aW9uUmVzdWx0PjtcclxuXHJcbiAgLyoqIFRoZSBtZXNzYWdlIHRvIGJlIGRpc3BsYXllZCB3aGlsZSBpbmxpbmVDb25maXJtQWN0aW9uIGlzIHBlbmRpbmcuICovXHJcbiAgcHVibGljIGlubGluZUNvbmZpcm1QZW5kaW5nTWVzc2FnZT86IHN0cmluZyA9ICcnO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VjLWNvbmZpcm0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb25maXJtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb25maXJtLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENvbmZpcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIERpYWxvZ0NvbnRlbnQ8Q29uZmlybURpYWxvZ0NvbnRleHQ+e1xyXG5cclxuICBwdWJsaWMgZGlhbG9nSWQ6IHN0cmluZyA9ICdDb25maXJtJztcclxuXHJcbiAgLyoqIEZvcm0gR3JvdXAgdG8gaG9sZCBhbnkgZm9ybSBjb250cm9scyBuZWVkZWQgKi9cclxuICBwdWJsaWMgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwID0gbmV3IFVudHlwZWRGb3JtR3JvdXAoe30pO1xyXG5cclxuICBwdWJsaWMgc3RhdHVzID0gbmV3IE92ZXJsYXkoJ2hhc0RhdGEnKTtcclxuXHJcbiAgLyoqXHJcbiAgICogUHJvdmlkZWQgYnkgdGhlIGNhbGxpbmcgY29tcG9uZW50IHRvIHRlbGwgdGhlIGNvbmZpcm0gd2hhdCB0byBzaG93XHJcbiAgICogYW5kIGlzIHVzZWQgb24gc2F2ZSB0byBzZW5kIGJhY2sgYW55IGVudGVyZWQgdmFsdWVzIGZyb20gdGhlIHVzZXJcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgY29udGV4dCE6IENvbmZpcm1EaWFsb2dDb250ZXh0O1xyXG5cclxuICBAT3V0cHV0KCkgcHVibGljIG9uRGlhbG9nU2F2ZTogRXZlbnRFbWl0dGVyPENvbmZpcm1EaWFsb2dDb250ZXh0PiA9IG5ldyBFdmVudEVtaXR0ZXI8Q29uZmlybURpYWxvZ0NvbnRleHQ+KCk7XHJcbiAgQE91dHB1dCgpIHB1YmxpYyBvbkRpYWxvZ0NhbmNlbDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBwdWJsaWMgb25PcGVuKG9wZW5Db250ZXh0PzogQ29uZmlybURpYWxvZ0NvbnRleHQpOiB2b2lkIHtcclxuICAgIHRoaXMuY29udGV4dCA9IG9wZW5Db250ZXh0ITtcclxuICAgIHRoaXMuZGlhbG9nSWQgPSBvcGVuQ29udGV4dCEuaWQ7XHJcblxyXG4gICAgaWYgKHRoaXMuY29udGV4dC5hbHRlcm5hdGVTYXZlTGFiZWwpIHtcclxuICAgICAgdGhpcy5jb250ZXh0LnNhdmVPbkVudGVyID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogRXJyb3IgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBlcnJvciBiYW5uZXIgKi9cclxuICBwdWJsaWMgZXJyb3I/OiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYWRkRm9ybUNvbnRyb2xzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25TYXZlKHNvdXJjZTogU2F2ZVNvdXJjZSk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtR3JvdXAubWFya0FsbEFzVG91Y2hlZCgpO1xyXG5cclxuICAgIGlmICh0aGlzLmZvcm1Hcm91cC52YWxpZCkge1xyXG4gICAgICBsZXQgZm9ybVZhbHVlcyA9IHRoaXMuZm9ybUdyb3VwLmdldFJhd1ZhbHVlKCk7XHJcbiAgICAgIGlmIChmb3JtVmFsdWVzLnRleHRib3gpIHtcclxuICAgICAgICB0aGlzLmNvbnRleHQudGV4dGJveFZhbHVlID0gZm9ybVZhbHVlcy50ZXh0Ym94O1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmNvbnRleHQuc2F2ZVNvdXJjZSA9IHNvdXJjZTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmNvbnRleHQuaW5saW5lQ29uZmlybUFjdGlvbikge1xyXG4gICAgICAgIHRoaXMuZG9JbmxpbmVDb25maXJtQWN0aW9uKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5vbkRpYWxvZ1NhdmUuZW1pdCh0aGlzLmNvbnRleHQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29udGV4dC52YWxpZGF0aW9uRXJyb3JNZXNzYWdlKSB7XHJcbiAgICAgIHRoaXMuZXJyb3IgPSB0aGlzLmNvbnRleHQudmFsaWRhdGlvbkVycm9yTWVzc2FnZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNhbmNlbCgpOiB2b2lkIHtcclxuICAgIHRoaXMub25EaWFsb2dDYW5jZWwuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkcyB0aGUgdGV4dGJveCBmb3JtIGNvbnRyb2wgdG8gb3VyIGZvcm0gZ3JvdXAgaWYgaXRzIGNvbmZpZ3VyZWQgdG8gYmUgdmlzaWJsZVxyXG4gICAqIFdpbGwgYWxzbyBhZGQgdGhlIHJlcXVpcmVkIHZhbGlkYXRvciBpZiByZXF1ZXN0ZWRcclxuICAgKi9cclxuICBwcml2YXRlIGFkZEZvcm1Db250cm9scygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNvbnRleHQudGV4dGJveFR5cGUpIHtcclxuICAgICAgbGV0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcclxuICAgICAgaWYgKHRoaXMuY29udGV4dC50ZXh0Ym94UmVxdWlyZWQpIHtcclxuICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuY29udGV4dC50ZXh0Ym94VmFsaWRhdG9ycykge1xyXG4gICAgICAgIHZhbGlkYXRvcnMucHVzaCguLi50aGlzLmNvbnRleHQudGV4dGJveFZhbGlkYXRvcnMpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2woJ3RleHRib3gnLCBuZXcgVW50eXBlZEZvcm1Db250cm9sKCcnLCB2YWxpZGF0b3JzKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGRvSW5saW5lQ29uZmlybUFjdGlvbigpIHtcclxuICAgIHRoaXMuc3RhdHVzLnNldFN0YXR1cygncGVuZGluZycsIHRoaXMuY29udGV4dC5pbmxpbmVDb25maXJtUGVuZGluZ01lc3NhZ2UpO1xyXG5cclxuICAgIGxldCByZXN1bHQgPSBhd2FpdCB0aGlzLmNvbnRleHQuaW5saW5lQ29uZmlybUFjdGlvbiEoKTtcclxuXHJcbiAgICB0aGlzLnN0YXR1cy5zZXRTdGF0dXMoJ25vRGF0YScsIHJlc3VsdC5tZXNzYWdlLCB7XHJcbiAgICAgIGlkOiAnaW5saW5lQ29uZmlybUNsb3NlJyxcclxuICAgICAgbGFiZWw6ICdDbG9zZScsXHJcbiAgICAgIGljb246IHJlc3VsdC5pc1N1Y2Nlc3MgPyAnaWNvbi1jaGVjay1jaXJjbGUnIDogJ2ljb24tZXJyb3InLFxyXG4gICAgICBjbGFzc2xpc3Q6IHJlc3VsdC5pc1N1Y2Nlc3MgPyAnZm9udC1jb2xvci1zdWNjZXNzJyA6ICdmb250LWNvbG9yLWVycm9yJyxcclxuICAgICAgb25DbGljazogKCkgPT4geyByZXN1bHQuaXNTdWNjZXNzID8gdGhpcy5vbkRpYWxvZ1NhdmUuZW1pdCh0aGlzLmNvbnRleHQpIDogdGhpcy5vbkRpYWxvZ0NhbmNlbC5lbWl0KCkgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxzZWN0aW9uIGVjT3ZlcmxheVxyXG4gICAgICAgICBbc3RhdHVzXT1cInN0YXR1cz8uc3RhdHVzXCJcclxuICAgICAgICAgW21lc3NhZ2VdPVwic3RhdHVzPy5tZXNzYWdlXCJcclxuICAgICAgICAgW2FjdGlvbl09XCJzdGF0dXM/LmFjdGlvblwiXHJcbiAgICAgICAgIFtub0RhdGFUZW1wbGF0ZV09XCJpbmxpbmVDb25maXJtUmVzdWx0XCJcclxuICAgICAgICAgb3ZlcmxheUNsYXNzTGlzdD1cInAtMFwiXHJcbiAgICAgICAgIGNsYXNzPVwiYmctYm9keSBmbGV4LWdyb3cgZC1mbGV4XCI+XHJcbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIiBjbGFzcz1cImZsZXgtZ3JvdyBmbGV4LWNvbHVtbiBjb25maXJtLWNvbnRlbnQgdGV4dC1ib2R5LTFcIj5cclxuICAgIDxzZWN0aW9uIGNsYXNzPVwiZmxleC1ncm93XCI+XHJcbiAgICAgIDxoMiBjbGFzcz1cImZvbnQtd2VpZ2h0LWJvbGQgbWItM1wiICpuZ0lmPVwiY29udGV4dD8udGl0bGVcIj57e2NvbnRleHQ/LnRpdGxlfX08L2gyPlxyXG4gICAgICA8ZWMtYmFubmVyICpuZ0lmPVwiZXJyb3JcIiBbdGV4dF09XCJlcnJvciB8IHRyYW5zbGF0ZVwiIGJhbm5lclN0eWxlPVwibm9ybWFsXCIgY2xhc3M9XCJtYi0zXCI+PC9lYy1iYW5uZXI+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJjb250ZXh0Py5tZXNzYWdlXCIgW2lubmVySHRtbF09XCJjb250ZXh0Py5tZXNzYWdlIHwgdHJhbnNsYXRlXCIgY2xhc3M9XCJtYi0zXCI+PC9kaXY+XHJcbiAgICAgIDxlYy10ZXh0Ym94IGlkPVwiY29uZmlybVRleHRib3hcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRleHQ/LnRleHRib3hUeXBlXCJcclxuICAgICAgICAgICAgICAgICAgW2F1dG9mb2N1c109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW2Zvcm1Nb2RlbF09XCJmb3JtR3JvdXAuZ2V0KCd0ZXh0Ym94JylcIlxyXG4gICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiY29udGV4dD8udGV4dGJveFJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbnRleHQ/LnRleHRib3hMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgIFt0eXBlXT1cImNvbnRleHQ/LnRleHRib3hUeXBlXCJcclxuICAgICAgICAgICAgICAgICAgW3Jvd3NdPVwiY29udGV4dD8udGV4dGFyZWFSb3dzXCJcclxuICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbnRleHQ/LnRleHRib3hQbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgIFt1cHBlckNhc2VdPVwiY29udGV4dD8udGV4dGJveFVwcGVyY2FzZVwiPlxyXG4gICAgICA8L2VjLXRleHRib3g+XHJcbiAgICA8L3NlY3Rpb24+XHJcbiAgICA8Zm9vdGVyIGNsYXNzPVwibXQtYXV0byBmbGV4LXNocmluayBkLWZsZXggcHktMiBmbGV4LXJvdy1yZXZlcnNlXCI+XHJcbiAgICAgIDxlYy1idXR0b24gaWQ9XCJzYXZlQ29uZmlybUJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWwtMlwiXHJcbiAgICAgICAgICAgICAgICAgIFt0eXBlXT1cImNvbnRleHQ/LnNhdmVCdXR0b25UeXBlID8gY29udGV4dD8uc2F2ZUJ1dHRvblR5cGUgOiAncHJpbWFyeSdcIlxyXG4gICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29udGV4dD8uc2F2ZUxhYmVsID8gY29udGV4dD8uc2F2ZUxhYmVsIDogJ1NhdmUnXCJcclxuICAgICAgICAgICAgICAgICAgW2F1dG9mb2N1c109XCIhY29udGV4dD8udGV4dGJveFR5cGVcIlxyXG4gICAgICAgICAgICAgICAgICBbaXNTdWJtaXRdPVwiY29udGV4dD8uc2F2ZU9uRW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJvblNhdmUoJ3ByaW1hcnknKVwiPlxyXG4gICAgICA8L2VjLWJ1dHRvbj5cclxuICAgICAgPGVjLWJ1dHRvbiBpZD1cImFsdGVybmF0ZVNhdmVDb25maXJtQnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250ZXh0Py5hbHRlcm5hdGVTYXZlTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1sLTJcIlxyXG4gICAgICAgICAgICAgICAgICBbdHlwZV09XCJjb250ZXh0Py5hbHRlcm5hdGVTYXZlQnV0dG9uVHlwZSA/IGNvbnRleHQ/LmFsdGVybmF0ZVNhdmVCdXR0b25UeXBlIDogJ3ByaW1hcnknXCJcclxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbnRleHQ/LmFsdGVybmF0ZVNhdmVMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGlja2VkKT1cIm9uU2F2ZSgnYWx0ZXJuYXRlJylcIj5cclxuICAgICAgPC9lYy1idXR0b24+XHJcbiAgICAgIDxlYy1idXR0b24gaWQ9XCJjYW5jZWxDb25maXJtQnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtbC1hdXRvXCJcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cInNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb250ZXh0Py5jYW5jZWxMYWJlbCA/IGNvbnRleHQ/LmNhbmNlbExhYmVsIDogJ0NhbmNlbCdcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJvbkNhbmNlbCgpXCI+XHJcbiAgICAgIDwvZWMtYnV0dG9uPlxyXG4gICAgPC9mb290ZXI+XHJcbiAgPC9mb3JtPlxyXG48L3NlY3Rpb24+XHJcblxyXG48bmctdGVtcGxhdGUgI2lubGluZUNvbmZpcm1SZXN1bHQ+XHJcbiAgPHNlY3Rpb24gY2xhc3M9XCJmbGV4LWdyb3cgYWxpZ24tc2VsZi1zdHJldGNoIGNvbmZpcm0tY29udGVudCB0ZXh0LWJvZHktMVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICA8aSBjbGFzcz1cImVjLWljb24ge3tzdGF0dXM/LmFjdGlvbj8uaWNvbn19IHt7c3RhdHVzPy5hY3Rpb24/LmNsYXNzbGlzdH19IGlubGluZS1jb25maXJtLXJlc3VsdC1pY29uXCI+PC9pPlxyXG4gICAgICA8ZGl2IFtpbm5lckhUTUxdPVwic3RhdHVzPy5tZXNzYWdlIHwgdHJhbnNsYXRlXCI+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggcHQtMiBtdC1hdXRvXCI+XHJcbiAgICAgIDxlYy1idXR0b24gaWQ9XCJpbmxpbmVDb25maXJtQ2xvc2VcIlxyXG4gICAgICAgICAgICAgICAgIGxhYmVsPVwiQ2xvc2VcIlxyXG4gICAgICAgICAgICAgICAgIHR5cGU9XCJzZWNvbmRhcnlcIlxyXG4gICAgICAgICAgICAgICAgIGNsYXNzPVwibWwtYXV0b1wiXHJcbiAgICAgICAgICAgICAgICAgKGNsaWNrZWQpPVwic3RhdHVzPy5hY3Rpb24/Lm9uQ2xpY2shKClcIlxyXG4gICAgICAgICAgICAgICAgIFthdXRvZm9jdXNdPVwidHJ1ZVwiPlxyXG4gICAgICA8L2VjLWJ1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvc2VjdGlvbj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
File without changes
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import { filter, takeUntil } from 'rxjs/operators';
|
|
4
|
+
import { DialogCloseEvent, DialogCloseLatestEvent, DialogOpenStartEvent } from '../dialog-types';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../dialog.service";
|
|
7
|
+
import * as i2 from "@angular/common";
|
|
8
|
+
import * as i3 from "../dialog.component";
|
|
9
|
+
export class DialogGroupComponent {
|
|
10
|
+
constructor(dialogService) {
|
|
11
|
+
this.dialogService = dialogService;
|
|
12
|
+
this.activeDialogEvents = [];
|
|
13
|
+
this.destroyed = new Subject();
|
|
14
|
+
}
|
|
15
|
+
/**When the group component is created, start watching for any DialogOpenStart events
|
|
16
|
+
* so that the group can react and make the matching dialog. New dialogs get assigned unique
|
|
17
|
+
* eventIds so that when they close we know exactly which one is done and we can take it
|
|
18
|
+
* out of the list of active dialogs
|
|
19
|
+
*/
|
|
20
|
+
ngOnInit() {
|
|
21
|
+
this.dialogService.events.pipe(filter(event => event instanceof DialogOpenStartEvent || event instanceof DialogCloseLatestEvent), takeUntil(this.destroyed)).subscribe(event => {
|
|
22
|
+
if (event instanceof DialogOpenStartEvent) {
|
|
23
|
+
this.activeDialogEvents.push(event);
|
|
24
|
+
}
|
|
25
|
+
else if (event instanceof DialogCloseLatestEvent && this.activeDialogEvents.length > 0) {
|
|
26
|
+
let sourceEvent = this.activeDialogEvents[this.activeDialogEvents.length - 1];
|
|
27
|
+
this.dialogService.triggerEvent(new DialogCloseEvent(sourceEvent.eventId, sourceEvent.dialogId, event.dialogResult?.save, event.dialogResult?.context));
|
|
28
|
+
this.dialogClosed(sourceEvent);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
/** When the dialog group is destroyed we no longer want to listen for any open events. */
|
|
33
|
+
ngOnDestroy() {
|
|
34
|
+
this.destroyed.next();
|
|
35
|
+
this.destroyed.unsubscribe();
|
|
36
|
+
}
|
|
37
|
+
/**The dialog component completed opening (including animation delay) and
|
|
38
|
+
* emits an event that tells us it is ready. The group can then pump out a dialog
|
|
39
|
+
* openEnd event (kinda NavigationEnd in the router) to tell anybody who cares that
|
|
40
|
+
* the dialog is now ready.
|
|
41
|
+
*/
|
|
42
|
+
dialogOpened(dialogOpenEvent, dialogId) {
|
|
43
|
+
dialogOpenEvent.dialogId = dialogId;
|
|
44
|
+
}
|
|
45
|
+
/** The dialog has closed (after animation delay) and emitted an event to tell the hosting component.
|
|
46
|
+
* We handle the event and pump a matching DialogCloseEvent so that anybody who cares can know that the
|
|
47
|
+
* dialog instance referenced by dialogOpenEvent.eventId is gone now. We remove it from our list of
|
|
48
|
+
* active dialogs which pulls it out of the DOM too
|
|
49
|
+
*/
|
|
50
|
+
dialogClosed(dialogOpenEvent) {
|
|
51
|
+
const index = this.activeDialogEvents.findIndex(d => d === dialogOpenEvent);
|
|
52
|
+
if (index >= 0) {
|
|
53
|
+
this.activeDialogEvents.splice(index, 1);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
DialogGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: DialogGroupComponent, deps: [{ token: i1.DialogService }], target: i0.ɵɵFactoryTarget.Component });
|
|
58
|
+
DialogGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: DialogGroupComponent, selector: "ec-dialog-group", ngImport: i0, template: "<ec-dialog *ngFor=\"let dialog of activeDialogEvents\"\r\n [dialogOpenStartEventId]=\"dialog.eventId\"\r\n [size]=\"dialog.options?.size\"\r\n [content]=\"dialog.content\"\r\n [context]=\"dialog.context\"\r\n [options]=\"dialog.options\"\r\n (opened)=\"dialogOpened(dialog, $event)\"\r\n (closed)=\"dialogClosed(dialog)\">\r\n</ec-dialog>", styles: [":root{--ec-font-size-icon: 1rem;--ec-color-icon: rgba(26, 26, 35, .66)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}ec-dialog:not(:only-child){--ec-dialog-background-color: transparent}ec-dialog:not(:only-child):last-child,ec-dialog:not(:only-child):nth-last-child(2){--ec-dialog-background-color: var(--ec-background-color-dialog-stacked)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3.DialogComponent, selector: "ec-dialog", inputs: ["size", "content", "context", "options", "dialogOpenStartEventId"], outputs: ["opened", "closed"] }] });
|
|
59
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: DialogGroupComponent, decorators: [{
|
|
60
|
+
type: Component,
|
|
61
|
+
args: [{ selector: 'ec-dialog-group', template: "<ec-dialog *ngFor=\"let dialog of activeDialogEvents\"\r\n [dialogOpenStartEventId]=\"dialog.eventId\"\r\n [size]=\"dialog.options?.size\"\r\n [content]=\"dialog.content\"\r\n [context]=\"dialog.context\"\r\n [options]=\"dialog.options\"\r\n (opened)=\"dialogOpened(dialog, $event)\"\r\n (closed)=\"dialogClosed(dialog)\">\r\n</ec-dialog>", styles: [":root{--ec-font-size-icon: 1rem;--ec-color-icon: rgba(26, 26, 35, .66)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}ec-dialog:not(:only-child){--ec-dialog-background-color: transparent}ec-dialog:not(:only-child):last-child,ec-dialog:not(:only-child):nth-last-child(2){--ec-dialog-background-color: var(--ec-background-color-dialog-stacked)}\n"] }]
|
|
62
|
+
}], ctorParameters: function () { return [{ type: i1.DialogService }]; } });
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9kaXNwbGF5L2RpYWxvZy9kaWFsb2ctZ3JvdXAvZGlhbG9nLWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9kaXNwbGF5L2RpYWxvZy9kaWFsb2ctZ3JvdXAvZGlhbG9nLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFRakcsTUFBTSxPQUFPLG9CQUFvQjtJQUsvQixZQUFvQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUhoRCx1QkFBa0IsR0FBZ0MsRUFBRSxDQUFDO1FBQzdDLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRVksQ0FBQztJQUVyRDs7OztPQUlHO0lBQ0gsUUFBUTtRQUNOLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDNUIsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxZQUFZLG9CQUFvQixJQUFJLEtBQUssWUFBWSxzQkFBc0IsQ0FBQyxFQUNqRyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUMxQixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNsQixJQUFHLEtBQUssWUFBWSxvQkFBb0IsRUFBQztnQkFDdkMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFrQyxDQUFDLENBQUM7YUFDbEU7aUJBQU0sSUFBRyxLQUFLLFlBQVksc0JBQXNCLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ3ZGLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUM5RSxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsWUFBWSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ3hKLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDaEM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCwwRkFBMEY7SUFDMUYsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFlBQVksQ0FBQyxlQUEwQyxFQUFFLFFBQWdCO1FBQ3ZFLGVBQWUsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsWUFBWSxDQUFDLGVBQTBDO1FBQ3JELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssZUFBZSxDQUFDLENBQUM7UUFFNUUsSUFBRyxLQUFLLElBQUcsQ0FBQyxFQUFDO1lBQ1gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDMUM7SUFDSCxDQUFDOztpSEFyRFUsb0JBQW9CO3FHQUFwQixvQkFBb0IsdURDWGpDLDBaQVFZOzJGREdDLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IERpYWxvZ0Nsb3NlRXZlbnQsIERpYWxvZ0Nsb3NlTGF0ZXN0RXZlbnQsIERpYWxvZ09wZW5TdGFydEV2ZW50IH0gZnJvbSAnLi4vZGlhbG9nLXR5cGVzJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uL2RpYWxvZy5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZWMtZGlhbG9nLWdyb3VwJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGlhbG9nLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kaWFsb2ctZ3JvdXAuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGlhbG9nR3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIGFjdGl2ZURpYWxvZ0V2ZW50czogRGlhbG9nT3BlblN0YXJ0RXZlbnQ8YW55PltdID0gW107XHJcbiAgcHJpdmF0ZSBkZXN0cm95ZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UpIHsgfVxyXG5cclxuICAvKipXaGVuIHRoZSBncm91cCBjb21wb25lbnQgaXMgY3JlYXRlZCwgc3RhcnQgd2F0Y2hpbmcgZm9yIGFueSBEaWFsb2dPcGVuU3RhcnQgZXZlbnRzXHJcbiAgICogc28gdGhhdCB0aGUgZ3JvdXAgY2FuIHJlYWN0IGFuZCBtYWtlIHRoZSBtYXRjaGluZyBkaWFsb2cuIE5ldyBkaWFsb2dzIGdldCBhc3NpZ25lZCB1bmlxdWVcclxuICAgKiBldmVudElkcyBzbyB0aGF0IHdoZW4gdGhleSBjbG9zZSB3ZSBrbm93IGV4YWN0bHkgd2hpY2ggb25lIGlzIGRvbmUgYW5kIHdlIGNhbiB0YWtlIGl0XHJcbiAgICogb3V0IG9mIHRoZSBsaXN0IG9mIGFjdGl2ZSBkaWFsb2dzXHJcbiAgICovXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXZlbnRzLnBpcGUoXHJcbiAgICAgIGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIERpYWxvZ09wZW5TdGFydEV2ZW50IHx8IGV2ZW50IGluc3RhbmNlb2YgRGlhbG9nQ2xvc2VMYXRlc3RFdmVudCksXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZClcclxuICAgICkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgaWYoZXZlbnQgaW5zdGFuY2VvZiBEaWFsb2dPcGVuU3RhcnRFdmVudCl7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVEaWFsb2dFdmVudHMucHVzaChldmVudCBhcyBEaWFsb2dPcGVuU3RhcnRFdmVudDxhbnk+KTtcclxuICAgICAgfSBlbHNlIGlmKGV2ZW50IGluc3RhbmNlb2YgRGlhbG9nQ2xvc2VMYXRlc3RFdmVudCAmJiB0aGlzLmFjdGl2ZURpYWxvZ0V2ZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgbGV0IHNvdXJjZUV2ZW50ID0gdGhpcy5hY3RpdmVEaWFsb2dFdmVudHNbdGhpcy5hY3RpdmVEaWFsb2dFdmVudHMubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnRyaWdnZXJFdmVudChuZXcgRGlhbG9nQ2xvc2VFdmVudChzb3VyY2VFdmVudC5ldmVudElkLCBzb3VyY2VFdmVudC5kaWFsb2dJZCwgZXZlbnQuZGlhbG9nUmVzdWx0Py5zYXZlLCBldmVudC5kaWFsb2dSZXN1bHQ/LmNvbnRleHQpKTtcclxuICAgICAgICB0aGlzLmRpYWxvZ0Nsb3NlZChzb3VyY2VFdmVudCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIFdoZW4gdGhlIGRpYWxvZyBncm91cCBpcyBkZXN0cm95ZWQgd2Ugbm8gbG9uZ2VyIHdhbnQgdG8gbGlzdGVuIGZvciBhbnkgb3BlbiBldmVudHMuICovXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3llZC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3llZC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqVGhlIGRpYWxvZyBjb21wb25lbnQgY29tcGxldGVkIG9wZW5pbmcgKGluY2x1ZGluZyBhbmltYXRpb24gZGVsYXkpIGFuZFxyXG4gICAqIGVtaXRzIGFuIGV2ZW50IHRoYXQgdGVsbHMgdXMgaXQgaXMgcmVhZHkuIFRoZSBncm91cCBjYW4gdGhlbiBwdW1wIG91dCBhIGRpYWxvZ1xyXG4gICAqIG9wZW5FbmQgZXZlbnQgKGtpbmRhIE5hdmlnYXRpb25FbmQgaW4gdGhlIHJvdXRlcikgdG8gdGVsbCBhbnlib2R5IHdobyBjYXJlcyB0aGF0XHJcbiAgICogdGhlIGRpYWxvZyBpcyBub3cgcmVhZHkuXHJcbiAgICovXHJcbiAgZGlhbG9nT3BlbmVkKGRpYWxvZ09wZW5FdmVudDogRGlhbG9nT3BlblN0YXJ0RXZlbnQ8YW55PiwgZGlhbG9nSWQ6IHN0cmluZykge1xyXG4gICAgZGlhbG9nT3BlbkV2ZW50LmRpYWxvZ0lkID0gZGlhbG9nSWQ7XHJcbiAgfVxyXG5cclxuICAvKiogVGhlIGRpYWxvZyBoYXMgY2xvc2VkIChhZnRlciBhbmltYXRpb24gZGVsYXkpIGFuZCBlbWl0dGVkIGFuIGV2ZW50IHRvIHRlbGwgdGhlIGhvc3RpbmcgY29tcG9uZW50LlxyXG4gICAqIFdlIGhhbmRsZSB0aGUgZXZlbnQgYW5kIHB1bXAgYSBtYXRjaGluZyBEaWFsb2dDbG9zZUV2ZW50IHNvIHRoYXQgYW55Ym9keSB3aG8gY2FyZXMgY2FuIGtub3cgdGhhdCB0aGVcclxuICAgKiBkaWFsb2cgaW5zdGFuY2UgcmVmZXJlbmNlZCBieSBkaWFsb2dPcGVuRXZlbnQuZXZlbnRJZCBpcyBnb25lIG5vdy4gV2UgcmVtb3ZlIGl0IGZyb20gb3VyIGxpc3Qgb2ZcclxuICAgKiBhY3RpdmUgZGlhbG9ncyB3aGljaCBwdWxscyBpdCBvdXQgb2YgdGhlIERPTSB0b29cclxuICAgKi9cclxuICBkaWFsb2dDbG9zZWQoZGlhbG9nT3BlbkV2ZW50OiBEaWFsb2dPcGVuU3RhcnRFdmVudDxhbnk+KSB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuYWN0aXZlRGlhbG9nRXZlbnRzLmZpbmRJbmRleChkID0+IGQgPT09IGRpYWxvZ09wZW5FdmVudCk7XHJcbiAgICBcclxuICAgIGlmKGluZGV4ID49MCl7XHJcbiAgICAgIHRoaXMuYWN0aXZlRGlhbG9nRXZlbnRzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxlYy1kaWFsb2cgKm5nRm9yPVwibGV0IGRpYWxvZyBvZiBhY3RpdmVEaWFsb2dFdmVudHNcIlxyXG4gICAgICAgICAgIFtkaWFsb2dPcGVuU3RhcnRFdmVudElkXT1cImRpYWxvZy5ldmVudElkXCJcclxuICAgICAgICAgICBbc2l6ZV09XCJkaWFsb2cub3B0aW9ucz8uc2l6ZVwiXHJcbiAgICAgICAgICAgW2NvbnRlbnRdPVwiZGlhbG9nLmNvbnRlbnRcIlxyXG4gICAgICAgICAgIFtjb250ZXh0XT1cImRpYWxvZy5jb250ZXh0XCJcclxuICAgICAgICAgICBbb3B0aW9uc109XCJkaWFsb2cub3B0aW9uc1wiXHJcbiAgICAgICAgICAgKG9wZW5lZCk9XCJkaWFsb2dPcGVuZWQoZGlhbG9nLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAoY2xvc2VkKT1cImRpYWxvZ0Nsb3NlZChkaWFsb2cpXCI+XHJcbjwvZWMtZGlhbG9nPiJdfQ==
|
package/{esm2015/lib/display/dialog/dialog-types.js → esm2020/lib/display/dialog/dialog-types.mjs}
RENAMED
|
File without changes
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
|
2
|
+
import { Component, EventEmitter, HostBinding, HostListener, Input, Output, ViewChild, ViewContainerRef, TemplateRef, Inject } from '@angular/core';
|
|
3
|
+
import { timer } 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
|
+
constructor(componentFactoryResolver, windowService, dialogService, documentRef) {
|
|
17
|
+
this.componentFactoryResolver = componentFactoryResolver;
|
|
18
|
+
this.windowService = windowService;
|
|
19
|
+
this.dialogService = dialogService;
|
|
20
|
+
this.documentRef = documentRef;
|
|
21
|
+
/**
|
|
22
|
+
* Add/remove the is-open css class to the host element when the dialog is opened/closed.
|
|
23
|
+
* Styles use the is-open class to show/hide the dialog.
|
|
24
|
+
*/
|
|
25
|
+
this.isOpen = false;
|
|
26
|
+
/**
|
|
27
|
+
* Add the fade-in css class to the host element when the dialog is opening. Remove when transition is complete.
|
|
28
|
+
* Styles use the fade-in class to apply a fade-in transition while the dialog is opening.
|
|
29
|
+
*/
|
|
30
|
+
this.fadeIn = false;
|
|
31
|
+
/**
|
|
32
|
+
* Add the fade-out css class to the host element when the dialog is closing. Remove when transition is complete.
|
|
33
|
+
* Styles use the fade-out class to apply a fade-out transition while the dialog is closing.
|
|
34
|
+
*/
|
|
35
|
+
this.fadeOut = false;
|
|
36
|
+
this.displayAsPanel = false;
|
|
37
|
+
this.alignToTop = false;
|
|
38
|
+
this.transparentMask = false;
|
|
39
|
+
/**
|
|
40
|
+
* 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)
|
|
41
|
+
*/
|
|
42
|
+
this.size = "small";
|
|
43
|
+
/**
|
|
44
|
+
* Emits an event when the dialog is opened
|
|
45
|
+
*/
|
|
46
|
+
this.opened = new EventEmitter();
|
|
47
|
+
/**
|
|
48
|
+
* Emits an event when the dialog is closed
|
|
49
|
+
*/
|
|
50
|
+
this.closed = new EventEmitter();
|
|
51
|
+
this.previouslyFocusedElement = null;
|
|
52
|
+
}
|
|
53
|
+
onOverlayClick(event) {
|
|
54
|
+
if (event.target.tagName === 'EC-DIALOG' && this.displayAsPanel) {
|
|
55
|
+
this.close(new DialogResult(false));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
ngOnInit() {
|
|
59
|
+
if (this.content) {
|
|
60
|
+
this.open(this.content, this.context, this.options);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
ngOnDestroy() {
|
|
64
|
+
// Restore focus to the previously focused element when the dialog is destroyed.
|
|
65
|
+
// Need to do this here and not in close() because cdkTrapFocusAutoCapture's re-focus happens in ngOnDestroy.
|
|
66
|
+
// This doesn't work for dialog implementations outside of the dialog service because ngOnDestroy isn't called when
|
|
67
|
+
// the dialog is closed in those cases.
|
|
68
|
+
if (this.previouslyFocusedElement) {
|
|
69
|
+
this.previouslyFocusedElement.focus();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Clear and previously loaded content
|
|
74
|
+
* Load the component
|
|
75
|
+
* Save a reference of the loaded component
|
|
76
|
+
* Show the dialog and fade in
|
|
77
|
+
*/
|
|
78
|
+
async open(component, context, options) {
|
|
79
|
+
if (!this.isOpen) {
|
|
80
|
+
// Capture the currently focused element, also looking in the shadow dom. Focus is restored to this element once the dialog is
|
|
81
|
+
// destroyed. See ngOnDestroy(). We need to do this here in addition to the cdkTrapFocusAutoCapture because sometimes the dialog's
|
|
82
|
+
// content is drawn and grabs focus before the cdkTrapFocusAutoCapture is able to read the previously focused element.
|
|
83
|
+
const activeElement = this.documentRef?.activeElement;
|
|
84
|
+
this.previouslyFocusedElement = activeElement?.shadowRoot?.activeElement || activeElement;
|
|
85
|
+
if (options) {
|
|
86
|
+
if (options.alignToTop) {
|
|
87
|
+
this.alignToTop = true;
|
|
88
|
+
}
|
|
89
|
+
if (options.displayAsPanel) {
|
|
90
|
+
this.displayAsPanel = true;
|
|
91
|
+
this.transparentMask = true;
|
|
92
|
+
}
|
|
93
|
+
if (options.transparentMask !== undefined) {
|
|
94
|
+
this.transparentMask = options.transparentMask;
|
|
95
|
+
}
|
|
96
|
+
if (options.canOpenDialog !== undefined) {
|
|
97
|
+
const canOpen = await options.canOpenDialog();
|
|
98
|
+
if (!canOpen) {
|
|
99
|
+
this.close(new DialogResult(false));
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// set the size before opening
|
|
105
|
+
if (typeof this.size === 'number') {
|
|
106
|
+
this.width = this.size;
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
// Reset the width if the size is not a number. This is to prevent the width property conflicting with the size.
|
|
110
|
+
this.width = undefined;
|
|
111
|
+
}
|
|
112
|
+
this.minWidth = options?.minWidth;
|
|
113
|
+
this.fadeIn = true;
|
|
114
|
+
if (component instanceof TemplateRef) {
|
|
115
|
+
this.contentContainer.createEmbeddedView(component);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
let componentFactory = this.componentFactoryResolver.resolveComponentFactory(component);
|
|
119
|
+
this.componentRef = this.contentContainer.createComponent(componentFactory);
|
|
120
|
+
}
|
|
121
|
+
this.isOpen = true;
|
|
122
|
+
this.openDialogComponent(context);
|
|
123
|
+
// Once the animation is complete we can remove the animation class and
|
|
124
|
+
// emit the opened event, both to the hosting component and via DialogService
|
|
125
|
+
await timer(this.displayAsPanel ? PanelOpenDuration : DialogOpenDuration).pipe(take(1), tap(() => {
|
|
126
|
+
const dialogId = this.getDialogId();
|
|
127
|
+
this.fadeIn = false;
|
|
128
|
+
this.opened.emit(dialogId);
|
|
129
|
+
this.dialogService.triggerEvent(new DialogOpenEndEvent(this.dialogOpenStartEventId, dialogId));
|
|
130
|
+
})).toPromise();
|
|
131
|
+
this.handleCloseOnResize();
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Fade the dialog out and hide
|
|
136
|
+
*/
|
|
137
|
+
close(result) {
|
|
138
|
+
this.fadeOut = true;
|
|
139
|
+
const dialogId = this.getDialogId(); //call before wiping out the content
|
|
140
|
+
// When the fade out animation is complete we will hide the dialog
|
|
141
|
+
// and remove the animation class as well as let the world know that
|
|
142
|
+
// we're closed so they can complete any other cleanup
|
|
143
|
+
setTimeout(() => {
|
|
144
|
+
this.isOpen = false;
|
|
145
|
+
this.fadeOut = false;
|
|
146
|
+
this.contentContainer?.clear();
|
|
147
|
+
this.componentRef = undefined;
|
|
148
|
+
this.closed.emit(result);
|
|
149
|
+
this.dialogService.triggerEvent(new DialogCloseEvent(this.dialogOpenStartEventId, dialogId, result?.save, result?.context));
|
|
150
|
+
this.resetOptions();
|
|
151
|
+
}, this.displayAsPanel ? PanelCloseDuration : DialogCloseDuration);
|
|
152
|
+
}
|
|
153
|
+
/**Open the dialog and attach handlers to the cancel and save events to close it and notify the hosting page */
|
|
154
|
+
openDialogComponent(context) {
|
|
155
|
+
if (this.componentRef && this.componentRef.instance) {
|
|
156
|
+
const dialogContent = this.componentRef.instance;
|
|
157
|
+
// OnOpen is optional - create dialogs don't necessarily define it
|
|
158
|
+
if (dialogContent.onOpen) {
|
|
159
|
+
dialogContent.onOpen(context);
|
|
160
|
+
}
|
|
161
|
+
dialogContent.onDialogCancel.pipe(takeUntil(this.closed)).subscribe(() => {
|
|
162
|
+
this.close(new DialogResult(false));
|
|
163
|
+
});
|
|
164
|
+
dialogContent.onDialogSave.pipe(takeUntil(this.closed)).subscribe(val => {
|
|
165
|
+
this.close(new DialogResult(true, val));
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Reset options so they don't persist next time the
|
|
171
|
+
* root dialog is opened
|
|
172
|
+
* @deprecated
|
|
173
|
+
*/
|
|
174
|
+
resetOptions() {
|
|
175
|
+
this.alignToTop = false;
|
|
176
|
+
this.displayAsPanel = false;
|
|
177
|
+
}
|
|
178
|
+
/** If they turned on closeOnResize, automatically close the dialog any time somebody resizes the window.
|
|
179
|
+
* This is useful for responsive layouts to prevent having the dialogContent on the screen twice */
|
|
180
|
+
handleCloseOnResize() {
|
|
181
|
+
if (this.options && this.options.closeOnResize) {
|
|
182
|
+
this.windowService.resized.pipe(takeUntil(this.closed), take(1)).subscribe(() => {
|
|
183
|
+
this.close(new DialogResult(false));
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
/**Extract the dialogId from the dialog content, if it has one. Template-based dialogs generally don't.
|
|
188
|
+
* We fall back to empty string to allow anybody listening for dialogEvents to still record the open/close even if
|
|
189
|
+
* the dialog itself does not say what the name is.
|
|
190
|
+
*/
|
|
191
|
+
getDialogId() {
|
|
192
|
+
return this.componentRef?.instance.dialogId || '';
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
DialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: DialogComponent, deps: [{ token: i0.ComponentFactoryResolver }, { token: i1.WindowService }, { token: i2.DialogService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
|
|
196
|
+
DialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", 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.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", "class.is-transparent": "this.transparentMask" } }, viewQueries: [{ propertyName: "contentContainer", first: true, predicate: ["content"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: '<article [style.width.px]="width" [style.min-width]="minWidth" class="dialog-{{size}}" cdkTrapFocus cdkTrapFocusAutoCapture><ng-template #content></ng-template></article>', isInline: true, styles: [":root{--ec-font-size-icon: 1rem;--ec-color-icon: rgba(26, 26, 35, .66)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@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);top:0;left:0;right:0;bottom: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-top-aligned{align-items:flex-start}:host.is-top-aligned article{min-height:auto;margin-top:20vh}: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}.dialog-xsmall{width:20rem}.dialog-small{width:30rem}.dialog-medium{width:40rem}.dialog-large{width:50rem}.dialog-xlarge{width:60rem}.dialog-full{width:90vw}\n"], dependencies: [{ kind: "directive", type: i3.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }] });
|
|
197
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: DialogComponent, decorators: [{
|
|
198
|
+
type: Component,
|
|
199
|
+
args: [{ selector: 'ec-dialog', template: '<article [style.width.px]="width" [style.min-width]="minWidth" class="dialog-{{size}}" cdkTrapFocus cdkTrapFocusAutoCapture><ng-template #content></ng-template></article>', styles: [":root{--ec-font-size-icon: 1rem;--ec-color-icon: rgba(26, 26, 35, .66)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@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);top:0;left:0;right:0;bottom: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-top-aligned{align-items:flex-start}:host.is-top-aligned article{min-height:auto;margin-top:20vh}: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}.dialog-xsmall{width:20rem}.dialog-small{width:30rem}.dialog-medium{width:40rem}.dialog-large{width:50rem}.dialog-xlarge{width:60rem}.dialog-full{width:90vw}\n"] }]
|
|
200
|
+
}], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i1.WindowService }, { type: i2.DialogService }, { type: Document, decorators: [{
|
|
201
|
+
type: Inject,
|
|
202
|
+
args: [DOCUMENT]
|
|
203
|
+
}] }]; }, propDecorators: { isOpen: [{
|
|
204
|
+
type: HostBinding,
|
|
205
|
+
args: ['class.is-open']
|
|
206
|
+
}], fadeIn: [{
|
|
207
|
+
type: HostBinding,
|
|
208
|
+
args: ['class.fade-in']
|
|
209
|
+
}], fadeOut: [{
|
|
210
|
+
type: HostBinding,
|
|
211
|
+
args: ['class.fade-out']
|
|
212
|
+
}], displayAsPanel: [{
|
|
213
|
+
type: HostBinding,
|
|
214
|
+
args: ['class.is-panel']
|
|
215
|
+
}], alignToTop: [{
|
|
216
|
+
type: HostBinding,
|
|
217
|
+
args: ['class.is-top-aligned']
|
|
218
|
+
}], transparentMask: [{
|
|
219
|
+
type: HostBinding,
|
|
220
|
+
args: ['class.is-transparent']
|
|
221
|
+
}], onOverlayClick: [{
|
|
222
|
+
type: HostListener,
|
|
223
|
+
args: ['click', ['$event']]
|
|
224
|
+
}], size: [{
|
|
225
|
+
type: Input
|
|
226
|
+
}], content: [{
|
|
227
|
+
type: Input
|
|
228
|
+
}], context: [{
|
|
229
|
+
type: Input
|
|
230
|
+
}], options: [{
|
|
231
|
+
type: Input
|
|
232
|
+
}], dialogOpenStartEventId: [{
|
|
233
|
+
type: Input
|
|
234
|
+
}], opened: [{
|
|
235
|
+
type: Output
|
|
236
|
+
}], closed: [{
|
|
237
|
+
type: Output
|
|
238
|
+
}], contentContainer: [{
|
|
239
|
+
type: ViewChild,
|
|
240
|
+
args: ['content', { read: ViewContainerRef, static: true }]
|
|
241
|
+
}] } });
|
|
242
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9kaXNwbGF5L2RpYWxvZy9kaWFsb2cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUEwQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFRLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xNLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUE2QixZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFHL0csaUVBQWlFO0FBQ2pFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFXLEdBQUcsQ0FBQztBQUM5QyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBVyxHQUFHLENBQUM7QUFDL0MsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQVcsR0FBRyxDQUFDO0FBQzdDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFXLEdBQUcsQ0FBQztBQU85QyxNQUFNLE9BQU8sZUFBZTtJQWlGMUIsWUFDVSx3QkFBa0QsRUFDbEQsYUFBNEIsRUFDNUIsYUFBNEIsRUFDVixXQUFxQjtRQUh2Qyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQ1YsZ0JBQVcsR0FBWCxXQUFXLENBQVU7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ZUFBZSxvSEFxRmhCLFFBQVE7Z0dBckZQLGVBQWUsb25CQTRESSxnQkFBZ0IsMkNBL0RwQyw0S0FBNEs7MkZBRzNLLGVBQWU7a0JBTDNCLFNBQVM7K0JBQ0UsV0FBVyxZQUNYLDRLQUE0Szt5SkF3RjdJLFFBQVE7MEJBQTlDLE1BQU07MkJBQUMsUUFBUTs0Q0FoRm1CLE1BQU07c0JBQTFDLFdBQVc7dUJBQUMsZUFBZTtnQkFNUyxNQUFNO3NCQUExQyxXQUFXO3VCQUFDLGVBQWU7Z0JBTVUsT0FBTztzQkFBNUMsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBRVMsY0FBYztzQkFBbkQsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBRWUsVUFBVTtzQkFBckQsV0FBVzt1QkFBQyxzQkFBc0I7Z0JBRVMsZUFBZTtzQkFBMUQsV0FBVzt1QkFBQyxzQkFBc0I7Z0JBRU8sY0FBYztzQkFBdkQsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBU2pCLElBQUk7c0JBQW5CLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBT0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUtXLE1BQU07c0JBQXRCLE1BQU07Z0JBS1UsTUFBTTtzQkFBdEIsTUFBTTtnQkFLZ0UsZ0JBQWdCO3NCQUF0RixTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgQ29tcG9uZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXQsIFR5cGUsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiwgVGVtcGxhdGVSZWYsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyB0aW1lciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgV2luZG93U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvd2luZG93LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaWFsb2dDb250ZW50IH0gZnJvbSAnLi9kaWFsb2ctY29udGVudCc7XHJcbmltcG9ydCB7IERpYWxvZ09wZW5FbmRFdmVudCwgRGlhbG9nQ2xvc2VFdmVudCwgRGlhbG9nU2l6ZSwgRGlhbG9nT3B0aW9ucywgRGlhbG9nUmVzdWx0IH0gZnJvbSAnLi9kaWFsb2ctdHlwZXMnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi9kaWFsb2cuc2VydmljZSc7XHJcblxyXG4vKiogVGhlc2UgdmFsdWVzIG5lZWQgdG8gYmUga2VwdCBpbiBzeW5jIHdpdGggZGlhbG9nLWJhc2Uuc2NzcyAqL1xyXG5leHBvcnQgY29uc3QgRGlhbG9nT3BlbkR1cmF0aW9uOiBudW1iZXIgPSAxMjU7XHJcbmV4cG9ydCBjb25zdCBEaWFsb2dDbG9zZUR1cmF0aW9uOiBudW1iZXIgPSAxMDA7XHJcbmV4cG9ydCBjb25zdCBQYW5lbE9wZW5EdXJhdGlvbjogbnVtYmVyID0gMjUwO1xyXG5leHBvcnQgY29uc3QgUGFuZWxDbG9zZUR1cmF0aW9uOiBudW1iZXIgPSAyMjU7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VjLWRpYWxvZycsXHJcbiAgdGVtcGxhdGU6ICc8YXJ0aWNsZSBbc3R5bGUud2lkdGgucHhdPVwid2lkdGhcIiBbc3R5bGUubWluLXdpZHRoXT1cIm1pbldpZHRoXCIgY2xhc3M9XCJkaWFsb2cte3tzaXplfX1cIiBjZGtUcmFwRm9jdXMgY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmU+PG5nLXRlbXBsYXRlICNjb250ZW50PjwvbmctdGVtcGxhdGU+PC9hcnRpY2xlPicsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGlhbG9nLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIERpYWxvZ0NvbXBvbmVudCB7XHJcbiAgLyoqXHJcbiAgICogQWRkL3JlbW92ZSB0aGUgaXMtb3BlbiBjc3MgY2xhc3MgdG8gdGhlIGhvc3QgZWxlbWVudCB3aGVuIHRoZSBkaWFsb2cgaXMgb3BlbmVkL2Nsb3NlZC5cclxuICAgKiBTdHlsZXMgdXNlIHRoZSBpcy1vcGVuIGNsYXNzIHRvIHNob3cvaGlkZSB0aGUgZGlhbG9nLlxyXG4gICAqL1xyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaXMtb3BlbicpIHB1YmxpYyBpc09wZW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIHRoZSBmYWRlLWluIGNzcyBjbGFzcyB0byB0aGUgaG9zdCBlbGVtZW50IHdoZW4gdGhlIGRpYWxvZyBpcyBvcGVuaW5nLiBSZW1vdmUgd2hlbiB0cmFuc2l0aW9uIGlzIGNvbXBsZXRlLlxyXG4gICAqIFN0eWxlcyB1c2UgdGhlIGZhZGUtaW4gY2xhc3MgdG8gYXBwbHkgYSBmYWRlLWluIHRyYW5zaXRpb24gd2hpbGUgdGhlIGRpYWxvZyBpcyBvcGVuaW5nLlxyXG4gICAqL1xyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZmFkZS1pbicpIHB1YmxpYyBmYWRlSW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIHRoZSBmYWRlLW91dCBjc3MgY2xhc3MgdG8gdGhlIGhvc3QgZWxlbWVudCB3aGVuIHRoZSBkaWFsb2cgaXMgY2xvc2luZy4gUmVtb3ZlIHdoZW4gdHJhbnNpdGlvbiBpcyBjb21wbGV0ZS5cclxuICAgKiBTdHlsZXMgdXNlIHRoZSBmYWRlLW91dCBjbGFzcyB0byBhcHBseSBhIGZhZGUtb3V0IHRyYW5zaXRpb24gd2hpbGUgdGhlIGRpYWxvZyBpcyBjbG9zaW5nLlxyXG4gICAqL1xyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZmFkZS1vdXQnKSBwdWJsaWMgZmFkZU91dCA9IGZhbHNlO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLXBhbmVsJykgcHVibGljIGRpc3BsYXlBc1BhbmVsID0gZmFsc2U7XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaXMtdG9wLWFsaWduZWQnKSBwdWJsaWMgYWxpZ25Ub1RvcCA9IGZhbHNlO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlzLXRyYW5zcGFyZW50JykgcHVibGljIHRyYW5zcGFyZW50TWFzayA9IGZhbHNlO1xyXG5cclxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pIHB1YmxpYyBvbk92ZXJsYXlDbGljayhldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCg8SFRNTEVsZW1lbnQ+ZXZlbnQudGFyZ2V0KS50YWdOYW1lID09PSAnRUMtRElBTE9HJyAmJiB0aGlzLmRpc3BsYXlBc1BhbmVsKSB7XHJcbiAgICAgIHRoaXMuY2xvc2UobmV3IERpYWxvZ1Jlc3VsdChmYWxzZSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVmaW5lcyB0aGUgd2lkdGggb2YgdGhlIGRpYWxvZyAoaGVpZ2h0IGlzIGF1dG8pLiBDYW4gYmUgYSBudW1iZXIgdGhhdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBwaXhlbHMsIG9yIHhzbWFsbCgzMjBweCksIHNtYWxsKDQ4MHB4KSwgbWVkaXVtKDY0MHB4KSwgb3IgbGFyZ2UoMTAyNHB4KVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzaXplOiBEaWFsb2dTaXplID0gXCJzbWFsbFwiO1xyXG5cclxuICBASW5wdXQoKSBjb250ZW50PzogVHlwZTxEaWFsb2dDb250ZW50PGFueT4+IHwgVGVtcGxhdGVSZWY8YW55PjtcclxuICBASW5wdXQoKSBjb250ZXh0PzogYW55O1xyXG4gIEBJbnB1dCgpIG9wdGlvbnM/OiBEaWFsb2dPcHRpb25zO1xyXG5cclxuICAvKipPbmx5IHNldCBpZiB0aGlzIHBhcnRpY3VsYXIgaW5zdGFuY2Ugb2YgYSBkaWFsb2cgc2hvdWxkIGJlIGlkZW50aWZpZWQgc2VwYXJhdGVseSBmcm9tIG90aGVycy5cclxuICAgKiBJZiBwcm92aWRlZCwgdGhpcyBpcyBlbWl0dGVkIHRvIHRoZSBkaWFsb2cgc2VydmljZSB3aXRoIE9wZW5FbmQgYW5kIENsb3NlIGV2ZW50cy4gRGlyZWN0IHVzYWdlXHJcbiAgICogb2YgdGhlIERpYWxvZ0NvbXBvbmVudCBmcm9tIG91dHNpZGUgYSBEaWFsb2dHcm91cCBkb2VzIG5vdCB1c3VhbGx5IHJlcXVpcmUgdXNpbmcgdGhpcyBwYXJhbWV0ZXIgYXNcclxuICAgKiB0aGUgZGlhbG9nIHJlZmVyZW5jZSBpdHNlbGYgZnVuY3Rpb25zIGFzIHRoZSBpZGVudGlmaWVyXHJcbiAgICovXHJcbiAgQElucHV0KCkgZGlhbG9nT3BlblN0YXJ0RXZlbnRJZD86IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdHMgYW4gZXZlbnQgd2hlbiB0aGUgZGlhbG9nIGlzIG9wZW5lZFxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgb3BlbmVkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdHMgYW4gZXZlbnQgd2hlbiB0aGUgZGlhbG9nIGlzIGNsb3NlZFxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2xvc2VkOiBFdmVudEVtaXR0ZXI8RGlhbG9nUmVzdWx0PGFueT4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgY29udGFpbmVyIHdoZXJlIHRoZSBjb21wb25lbnQgd2lsbCBiZSBsb2FkZWRcclxuICAgKi9cclxuICBAVmlld0NoaWxkKCdjb250ZW50JywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmLCBzdGF0aWM6IHRydWUgfSkgcHVibGljIGNvbnRlbnRDb250YWluZXIhOiBWaWV3Q29udGFpbmVyUmVmO1xyXG5cclxuICAvKipcclxuICAgKiBDdXN0b20gd2lkdGggb2YgdGhlIGRpYWxvZyBpbiBwaXhlbHMuIFNldCBieSBkZWZpbmluZyB0aGUgc2l6ZSBwcm9wZXJ0eVxyXG4gICAqIGFzIGEgbnVtYmVyIHZhbHVlLlxyXG4gICAqL1xyXG4gIHB1YmxpYyB3aWR0aD86IG51bWJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogQ3VzdG9tIG1pbi13aWR0aCBvZiB0aGUgZGlhbG9nLiBPbmx5IHRha2VzIGVmZmVjdCBpZiBzaXplIGlzIHNldCB0byBkeW5hbWljLlxyXG4gICAqIE11c3QgaW5jbHVkZSB1bml0cywgaS5lLiBcIjMycmVtXCIgb3IgXCI2NDBweFwiXHJcbiAgICovXHJcbiAgcHVibGljIG1pbldpZHRoPzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBBIHJlZmVyZW5jZSBvZiB0aGUgY29tcG9uZW50IG9uY2UgaXQgaGFzIGJlZW4gbG9hZGVkXHJcbiAgICovXHJcbiAgcHVibGljIGNvbXBvbmVudFJlZj86IENvbXBvbmVudFJlZjxhbnk+O1xyXG5cclxuICBwcml2YXRlIHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gICAgcHJpdmF0ZSB3aW5kb3dTZXJ2aWNlOiBXaW5kb3dTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxyXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudFJlZjogRG9jdW1lbnRcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNvbnRlbnQpIHtcclxuICAgICAgdGhpcy5vcGVuKHRoaXMuY29udGVudCwgdGhpcy5jb250ZXh0LCB0aGlzLm9wdGlvbnMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAvLyBSZXN0b3JlIGZvY3VzIHRvIHRoZSBwcmV2aW91c2x5IGZvY3VzZWQgZWxlbWVudCB3aGVuIHRoZSBkaWFsb2cgaXMgZGVzdHJveWVkLlxyXG4gICAgLy8gTmVlZCB0byBkbyB0aGlzIGhlcmUgYW5kIG5vdCBpbiBjbG9zZSgpIGJlY2F1c2UgY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmUncyByZS1mb2N1cyBoYXBwZW5zIGluIG5nT25EZXN0cm95LlxyXG4gICAgLy8gVGhpcyBkb2Vzbid0IHdvcmsgZm9yIGRpYWxvZyBpbXBsZW1lbnRhdGlvbnMgb3V0c2lkZSBvZiB0aGUgZGlhbG9nIHNlcnZpY2UgYmVjYXVzZSBuZ09uRGVzdHJveSBpc24ndCBjYWxsZWQgd2hlblxyXG4gICAgLy8gdGhlIGRpYWxvZyBpcyBjbG9zZWQgaW4gdGhvc2UgY2FzZXMuXHJcbiAgICBpZiAodGhpcy5wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQuZm9jdXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFyIGFuZCBwcmV2aW91c2x5IGxvYWRlZCBjb250ZW50XHJcbiAgICogTG9hZCB0aGUgY29tcG9uZW50XHJcbiAgICogU2F2ZSBhIHJlZmVyZW5jZSBvZiB0aGUgbG9hZGVkIGNvbXBvbmVudFxyXG4gICAqIFNob3cgdGhlIGRpYWxvZyBhbmQgZmFkZSBpblxyXG4gICAqL1xyXG4gIHB1YmxpYyBhc3luYyBvcGVuPFQ+KGNvbXBvbmVudDogVHlwZTxEaWFsb2dDb250ZW50PFQ+PiB8IFRlbXBsYXRlUmVmPGFueT4sIGNvbnRleHQ/OiBULCBvcHRpb25zPzogRGlhbG9nT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKCF0aGlzLmlzT3Blbikge1xyXG4gICAgICBcclxuICAgICAgLy8gQ2FwdHVyZSB0aGUgY3VycmVudGx5IGZvY3VzZWQgZWxlbWVudCwgYWxzbyBsb29raW5nIGluIHRoZSBzaGFkb3cgZG9tLiBGb2N1cyBpcyByZXN0b3JlZCB0byB0aGlzIGVsZW1lbnQgb25jZSB0aGUgZGlhbG9nIGlzXHJcbiAgICAgIC8vIGRlc3Ryb3llZC4gU2VlIG5nT25EZXN0cm95KCkuIFdlIG5lZWQgdG8gZG8gdGhpcyBoZXJlIGluIGFkZGl0aW9uIHRvIHRoZSBjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZSBiZWNhdXNlIHNvbWV0aW1lcyB0aGUgZGlhbG9nJ3NcclxuICAgICAgLy8gY29udGVudCBpcyBkcmF3biBhbmQgZ3JhYnMgZm9jdXMgYmVmb3JlIHRoZSBjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZSBpcyBhYmxlIHRvIHJlYWQgdGhlIHByZXZpb3VzbHkgZm9jdXNlZCBlbGVtZW50LlxyXG4gICAgICBjb25zdCBhY3RpdmVFbGVtZW50ID0gPEhUTUxFbGVtZW50IHwgbnVsbD50aGlzLmRvY3VtZW50UmVmPy5hY3RpdmVFbGVtZW50O1xyXG4gICAgICB0aGlzLnByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCA9IDxIVE1MRWxlbWVudD5hY3RpdmVFbGVtZW50Py5zaGFkb3dSb290Py5hY3RpdmVFbGVtZW50IHx8IGFjdGl2ZUVsZW1lbnQ7XHJcblxyXG4gICAgICBpZiAob3B0aW9ucykge1xyXG4gICAgICAgIGlmIChvcHRpb25zLmFsaWduVG9Ub3ApIHtcclxuICAgICAgICAgIHRoaXMuYWxpZ25Ub1RvcCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAob3B0aW9ucy5kaXNwbGF5QXNQYW5lbCkge1xyXG4gICAgICAgICAgdGhpcy5kaXNwbGF5QXNQYW5lbCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnRyYW5zcGFyZW50TWFzayA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAob3B0aW9ucy50cmFuc3BhcmVudE1hc2sgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgdGhpcy50cmFuc3BhcmVudE1hc2sgPSBvcHRpb25zLnRyYW5zcGFyZW50TWFzaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChvcHRpb25zLmNhbk9wZW5EaWFsb2cgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgY29uc3QgY2FuT3BlbiA9IGF3YWl0IG9wdGlvbnMuY2FuT3BlbkRpYWxvZygpO1xyXG4gICAgICAgICAgaWYgKCFjYW5PcGVuKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xvc2UobmV3IERpYWxvZ1Jlc3VsdChmYWxzZSkpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBzZXQgdGhlIHNpemUgYmVmb3JlIG9wZW5pbmdcclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLnNpemUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgdGhpcy53aWR0aCA9IHRoaXMuc2l6ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBSZXNldCB0aGUgd2lkdGggaWYgdGhlIHNpemUgaXMgbm90IGEgbnVtYmVyLiBUaGlzIGlzIHRvIHByZXZlbnQgdGhlIHdpZHRoIHByb3BlcnR5IGNvbmZsaWN0aW5nIHdpdGggdGhlIHNpemUuXHJcbiAgICAgICAgdGhpcy53aWR0aCA9IHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5taW5XaWR0aCA9IG9wdGlvbnM/Lm1pbldpZHRoO1xyXG5cclxuICAgICAgdGhpcy5mYWRlSW4gPSB0cnVlO1xyXG4gICAgICBpZiAoY29tcG9uZW50IGluc3RhbmNlb2YgVGVtcGxhdGVSZWYpIHtcclxuICAgICAgICB0aGlzLmNvbnRlbnRDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KGNvbXBvbmVudCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbGV0IGNvbXBvbmVudEZhY3RvcnkgPSB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShjb21wb25lbnQpO1xyXG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy5jb250ZW50Q29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRGYWN0b3J5KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5pc09wZW4gPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5vcGVuRGlhbG9nQ29tcG9uZW50PFQ+KGNvbnRleHQpO1xyXG5cclxuICAgICAgLy8gT25jZSB0aGUgYW5pbWF0aW9uIGlzIGNvbXBsZXRlIHdlIGNhbiByZW1vdmUgdGhlIGFuaW1hdGlvbiBjbGFzcyBhbmRcclxuICAgICAgLy8gZW1pdCB0aGUgb3BlbmVkIGV2ZW50LCBib3RoIHRvIHRoZSBob3N0aW5nIGNvbXBvbmVudCBhbmQgdmlhIERpYWxvZ1NlcnZpY2VcclxuICAgICAgYXdhaXQgdGltZXIodGhpcy5kaXNwbGF5QXNQYW5lbCA/IFBhbmVsT3BlbkR1cmF0aW9uIDogRGlhbG9nT3BlbkR1cmF0aW9uKS5waXBlKFxyXG4gICAgICAgIHRha2UoMSksXHJcbiAgICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGRpYWxvZ0lkID0gdGhpcy5nZXREaWFsb2dJZCgpO1xyXG4gICAgICAgICAgdGhpcy5mYWRlSW4gPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMub3BlbmVkLmVtaXQoZGlhbG9nSWQpO1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnRyaWdnZXJFdmVudChuZXcgRGlhbG9nT3BlbkVuZEV2ZW50KHRoaXMuZGlhbG9nT3BlblN0YXJ0RXZlbnRJZCwgZGlhbG9nSWQpKTtcclxuICAgICAgICB9KVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG5cclxuICAgICAgdGhpcy5oYW5kbGVDbG9zZU9uUmVzaXplKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGYWRlIHRoZSBkaWFsb2cgb3V0IGFuZCBoaWRlXHJcbiAgICovXHJcbiAgcHVibGljIGNsb3NlPFQ+KHJlc3VsdD86IERpYWxvZ1Jlc3VsdDxUPik6IHZvaWQge1xyXG4gICAgdGhpcy5mYWRlT3V0ID0gdHJ1ZTtcclxuICAgIGNvbnN0IGRpYWxvZ0lkID0gdGhpcy5nZXREaWFsb2dJZCgpOyAgLy9jYWxsIGJlZm9yZSB3aXBpbmcgb3V0IHRoZSBjb250ZW50XHJcblxyXG4gICAgLy8gV2hlbiB0aGUgZmFkZSBvdXQgYW5pbWF0aW9uIGlzIGNvbXBsZXRlIHdlIHdpbGwgaGlkZSB0aGUgZGlhbG9nXHJcbiAgICAvLyBhbmQgcmVtb3ZlIHRoZSBhbmltYXRpb24gY2xhc3MgYXMgd2VsbCBhcyBsZXQgdGhlIHdvcmxkIGtub3cgdGhhdFxyXG4gICAgLy8gd2UncmUgY2xvc2VkIHNvIHRoZXkgY2FuIGNvbXBsZXRlIGFueSBvdGhlciBjbGVhbnVwXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcclxuICAgICAgdGhpcy5mYWRlT3V0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY29udGVudENvbnRhaW5lcj8uY2xlYXIoKTtcclxuICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSB1bmRlZmluZWQ7XHJcbiAgICAgIHRoaXMuY2xvc2VkLmVtaXQocmVzdWx0KTtcclxuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnRyaWdnZXJFdmVudChuZXcgRGlhbG9nQ2xvc2VFdmVudCh0aGlzLmRpYWxvZ09wZW5TdGFydEV2ZW50SWQsIGRpYWxvZ0lkLCByZXN1bHQ/LnNhdmUsIHJlc3VsdD8uY29udGV4dCkpO1xyXG4gICAgICB0aGlzLnJlc2V0T3B0aW9ucygpO1xyXG4gICAgfSwgdGhpcy5kaXNwbGF5QXNQYW5lbCA/IFBhbmVsQ2xvc2VEdXJhdGlvbiA6IERpYWxvZ0Nsb3NlRHVyYXRpb24pXHJcbiAgfVxyXG5cclxuICAvKipPcGVuIHRoZSBkaWFsb2cgYW5kIGF0dGFjaCBoYW5kbGVycyB0byB0aGUgY2FuY2VsIGFuZCBzYXZlIGV2ZW50cyB0byBjbG9zZSBpdCBhbmQgbm90aWZ5IHRoZSBob3N0aW5nIHBhZ2UgKi9cclxuICBwcml2YXRlIG9wZW5EaWFsb2dDb21wb25lbnQ8VD4oY29udGV4dD86IFQpIHtcclxuICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZiAmJiB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZSkge1xyXG4gICAgICBjb25zdCBkaWFsb2dDb250ZW50ID0gdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgRGlhbG9nQ29udGVudDxUPjtcclxuXHJcbiAgICAgIC8vIE9uT3BlbiBpcyBvcHRpb25hbCAtIGNyZWF0ZSBkaWFsb2dzIGRvbid0IG5lY2Vzc2FyaWx5IGRlZmluZSBpdFxyXG4gICAgICBpZiAoZGlhbG9nQ29udGVudC5vbk9wZW4pIHtcclxuICAgICAgICBkaWFsb2dDb250ZW50Lm9uT3Blbihjb250ZXh0KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZGlhbG9nQ29udGVudC5vbkRpYWxvZ0NhbmNlbC5waXBlKHRha2VVbnRpbCh0aGlzLmNsb3NlZCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jbG9zZTxUPihuZXcgRGlhbG9nUmVzdWx0PFQ+KGZhbHNlKSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgZGlhbG9nQ29udGVudC5vbkRpYWxvZ1NhdmUucGlwZSh0YWtlVW50aWwodGhpcy5jbG9zZWQpKS5zdWJzY3JpYmUodmFsID0+IHtcclxuICAgICAgICB0aGlzLmNsb3NlPFQ+KG5ldyBEaWFsb2dSZXN1bHQ8VD4odHJ1ZSwgdmFsKSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzZXQgb3B0aW9ucyBzbyB0aGV5IGRvbid0IHBlcnNpc3QgbmV4dCB0aW1lIHRoZVxyXG4gICAqIHJvb3QgZGlhbG9nIGlzIG9wZW5lZFxyXG4gICAqIEBkZXByZWNhdGVkXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZXNldE9wdGlvbnMoKSB7XHJcbiAgICB0aGlzLmFsaWduVG9Ub3AgPSBmYWxzZTtcclxuICAgIHRoaXMuZGlzcGxheUFzUGFuZWwgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKiBJZiB0aGV5IHR1cm5lZCBvbiBjbG9zZU9uUmVzaXplLCBhdXRvbWF0aWNhbGx5IGNsb3NlIHRoZSBkaWFsb2cgYW55IHRpbWUgc29tZWJvZHkgcmVzaXplcyB0aGUgd2luZG93LlxyXG4gICAgKiBUaGlzIGlzIHVzZWZ1bCBmb3IgcmVzcG9uc2l2ZSBsYXlvdXRzIHRvIHByZXZlbnQgaGF2aW5nIHRoZSBkaWFsb2dDb250ZW50IG9uIHRoZSBzY3JlZW4gdHdpY2UgKi9cclxuICBwcml2YXRlIGhhbmRsZUNsb3NlT25SZXNpemUoKSB7XHJcbiAgICBpZih0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmNsb3NlT25SZXNpemUpe1xyXG4gICAgICB0aGlzLndpbmRvd1NlcnZpY2UucmVzaXplZCEucGlwZSh0YWtlVW50aWwodGhpcy5jbG9zZWQpLCB0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2xvc2UobmV3IERpYWxvZ1Jlc3VsdChmYWxzZSkpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKkV4dHJhY3QgdGhlIGRpYWxvZ0lkIGZyb20gdGhlIGRpYWxvZyBjb250ZW50LCBpZiBpdCBoYXMgb25lLiBUZW1wbGF0ZS1iYXNlZCBkaWFsb2dzIGdlbmVyYWxseSBkb24ndC5cclxuICAgKiBXZSBmYWxsIGJhY2sgdG8gZW1wdHkgc3RyaW5nIHRvIGFsbG93IGFueWJvZHkgbGlzdGVuaW5nIGZvciBkaWFsb2dFdmVudHMgdG8gc3RpbGwgcmVjb3JkIHRoZSBvcGVuL2Nsb3NlIGV2ZW4gaWZcclxuICAgKiB0aGUgZGlhbG9nIGl0c2VsZiBkb2VzIG5vdCBzYXkgd2hhdCB0aGUgbmFtZSBpcy4gXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXREaWFsb2dJZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFJlZj8uaW5zdGFuY2UuZGlhbG9nSWQgfHwgJyc7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|