@impartner/design-components 1.2.0 → 2.0.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/README.md +5 -4
- package/constants/fontawesome-icons.d.ts +2 -2
- package/{esm2020 → esm2022}/constants/fontawesome-icons.mjs +1 -1
- package/{esm2020 → esm2022}/lib/alert/alert.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/alert/alert.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/avatar/avatar.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/avatar/avatar.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/avatar-group/avatar-group.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/avatar-group/avatar-group.module.mjs +5 -5
- package/esm2022/lib/backdrop/backdrop.component.mjs +52 -0
- package/{esm2020 → esm2022}/lib/backdrop/backdrop.module.mjs +6 -6
- package/esm2022/lib/badge/badge.component.mjs +105 -0
- package/{esm2020 → esm2022}/lib/badge/badge.module.mjs +6 -6
- package/{esm2020 → esm2022}/lib/badge/types/badge-size.mjs +1 -1
- package/{esm2020 → esm2022}/lib/branding/branded.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/branding/branding.module.mjs +6 -6
- package/{esm2020 → esm2022}/lib/breadcrumb/breadcrumb-item.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/breadcrumb/breadcrumb.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/breadcrumb/breadcrumb.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/button/button.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/button/button.module.mjs +6 -6
- package/{esm2020 → esm2022}/lib/button-group/button-group.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/button-group/button-group.module.mjs +6 -6
- package/{esm2020 → esm2022}/lib/card-heading/card-heading.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/card-heading/card-heading.module.mjs +6 -6
- package/esm2022/lib/data-card/data-card.component.mjs +123 -0
- package/esm2022/lib/data-card/data-card.module.mjs +21 -0
- package/{esm2020 → esm2022}/lib/design-components.module.mjs +61 -61
- package/{esm2020 → esm2022}/lib/dropdown/components/dropdown-item/dropdown-item.component.mjs +4 -4
- package/esm2022/lib/dropdown/dropdown.component.mjs +143 -0
- package/{esm2020 → esm2022}/lib/dropdown/dropdown.module.mjs +6 -6
- package/{esm2020 → esm2022}/lib/file-upload/directives/file-drop.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/file-upload/file-upload.component.mjs +30 -30
- package/{esm2020 → esm2022}/lib/file-upload/file-upload.module.mjs +8 -8
- package/{esm2020 → esm2022}/lib/file-upload/pipes/human-readable-byte-size.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/form-field/controls/checkbox/checkbox.component.mjs +49 -49
- package/{esm2020 → esm2022}/lib/form-field/controls/checkbox/checkbox.module.mjs +5 -5
- package/esm2022/lib/form-field/controls/input/input.directive.mjs +233 -0
- package/esm2022/lib/form-field/controls/radio/radio-button/radio-button.component.mjs +260 -0
- package/esm2022/lib/form-field/controls/radio/radio-group/radio-group.directive.mjs +289 -0
- package/{esm2020 → esm2022}/lib/form-field/controls/radio/radio.module.mjs +5 -5
- package/esm2022/lib/form-field/controls/select/option/select-option.component.mjs +139 -0
- package/esm2022/lib/form-field/controls/select/select-model.mjs +150 -0
- package/esm2022/lib/form-field/controls/select/select.component.mjs +522 -0
- package/{esm2020 → esm2022}/lib/form-field/controls/select/select.module.mjs +9 -9
- package/{esm2020 → esm2022}/lib/form-field/controls/shared/toggle/components/toggle-input/toggle-input.component.mjs +4 -4
- package/esm2022/lib/form-field/controls/shared/toggle/toggle.component.mjs +96 -0
- package/{esm2020 → esm2022}/lib/form-field/controls/shared/toggle/toggle.module.mjs +6 -6
- package/{esm2020 → esm2022}/lib/form-field/directives/corner-hint.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/form-field/directives/error.directive.mjs +4 -4
- package/esm2022/lib/form-field/directives/form-root.directive.mjs +91 -0
- package/{esm2020 → esm2022}/lib/form-field/directives/hint.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/form-field/directives/label.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/form-field/directives/prefix.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/form-field/directives/suffix.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/form-field/form-field.component.mjs +11 -11
- package/{esm2020 → esm2022}/lib/form-field/impdc-forms.module.mjs +28 -28
- package/{esm2020 → esm2022}/lib/form-field/services/error-state-matcher.service.mjs +7 -7
- package/{esm2020 → esm2022}/lib/form-field/services/unique-selection-dispatcher.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/form-field/shared/disabled.mixin.mjs +5 -5
- package/esm2022/lib/form-field/shared/error-state.mixin.mjs +24 -0
- package/{esm2020 → esm2022}/lib/form-field/shared/form-field-control.mjs +4 -4
- package/{esm2020 → esm2022}/lib/form-field/shared/tab-index.mixin.mjs +6 -6
- package/{esm2020 → esm2022}/lib/icon/icon.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/icon/icon.module.mjs +6 -6
- package/esm2022/lib/modal/modal.component.mjs +260 -0
- package/{esm2020 → esm2022}/lib/modal/modal.module.mjs +14 -14
- package/{esm2020 → esm2022}/lib/modal/types/modal-component-sizes.mjs +1 -1
- package/{esm2020 → esm2022}/lib/modal/types/modal-theme.mjs +1 -1
- package/esm2022/lib/pagination/pagination.component.mjs +176 -0
- package/{esm2020 → esm2022}/lib/pagination/pagination.module.mjs +16 -16
- package/{esm2020 → esm2022}/lib/progress-bar/progress-bar.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/progress-bar/progress-bar.module.mjs +5 -5
- package/esm2022/lib/scrollable/scrollable.component.mjs +186 -0
- package/{esm2020 → esm2022}/lib/scrollable/scrollable.module.mjs +6 -6
- package/esm2022/lib/select-icon/select-icon.component.mjs +308 -0
- package/{esm2020 → esm2022}/lib/select-icon/select-icon.module.mjs +13 -13
- package/{esm2020 → esm2022}/lib/size-detection/directive/size-detector.directive.mjs +5 -5
- package/{esm2020 → esm2022}/lib/size-detection/size-detection.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/spinner/spinner.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/spinner/spinner.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/table/components/bulk-actions/bulk-actions.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/table/components/column-heading/column-heading.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/table/components/index.mjs +2 -1
- package/esm2022/lib/table/components/row-actions/row-actions.component.mjs +61 -0
- package/esm2022/lib/table/containers/table.component.mjs +403 -0
- package/esm2022/lib/table/directives/table-inject-component.directive.mjs +46 -0
- package/{esm2020 → esm2022}/lib/table/directives/table.directive.mjs +4 -4
- package/{esm2020 → esm2022}/lib/table/enumerations/table-column-type.mjs +2 -1
- package/{esm2020 → esm2022}/lib/table/helpers/table-theme.helper.mjs +3 -3
- package/esm2022/lib/table/interfaces/index.mjs +11 -0
- package/esm2022/lib/table/interfaces/table-column-defs.type.mjs +2 -0
- package/esm2022/lib/table/interfaces/table-row-action-payload.interface.mjs +2 -0
- package/esm2022/lib/table/interfaces/table-row-action.interface.mjs +2 -0
- package/esm2022/lib/table/table.module.mjs +96 -0
- package/{esm2020 → esm2022}/lib/text-highlight/text-highlight.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/text-highlight/text-highlight.module.mjs +6 -6
- package/{esm2020 → esm2022}/services/index.mjs +1 -1
- package/esm2022/services/interaction.service.mjs +88 -0
- package/{esm2020 → esm2022}/types/component-theme.mjs +1 -1
- package/{fesm2020 → fesm2022}/impartner-design-components.mjs +1197 -1032
- package/fesm2022/impartner-design-components.mjs.map +1 -0
- package/lib/alert/alert.component.d.ts +1 -1
- package/lib/alert/theme/alert-theme.d.ts +1 -1
- package/lib/avatar/avatar.component.d.ts +1 -1
- package/lib/avatar-group/avatar-group.component.d.ts +1 -1
- package/lib/backdrop/backdrop.component.d.ts +9 -6
- package/lib/badge/badge.component.d.ts +3 -2
- package/lib/badge/types/badge-icon.d.ts +1 -1
- package/lib/badge/types/badge-size.d.ts +1 -1
- package/lib/branding/branded.directive.d.ts +1 -1
- package/lib/breadcrumb/breadcrumb-item.component.d.ts +1 -1
- package/lib/breadcrumb/breadcrumb.component.d.ts +1 -1
- package/lib/button/button.component.d.ts +1 -1
- package/lib/button/themes/button-theme.d.ts +1 -1
- package/lib/button-group/button-group.component.d.ts +1 -1
- package/lib/card-heading/card-heading.component.d.ts +1 -1
- package/lib/data-card/data-card.component.d.ts +14 -18
- package/lib/data-card/data-card.module.d.ts +2 -1
- package/lib/dropdown/components/dropdown-item/dropdown-item.component.d.ts +1 -1
- package/lib/dropdown/dropdown.component.d.ts +6 -5
- package/lib/dropdown/types/dropdown-position.d.ts +1 -1
- package/lib/file-upload/directives/file-drop.directive.d.ts +1 -1
- package/lib/file-upload/file-upload.component.d.ts +1 -1
- package/lib/form-field/controls/checkbox/checkbox.component.d.ts +1 -1
- package/lib/form-field/controls/input/input.directive.d.ts +1 -1
- package/lib/form-field/controls/radio/radio-button/radio-button.component.d.ts +1 -1
- package/lib/form-field/controls/radio/radio-group/radio-group.directive.d.ts +1 -1
- package/lib/form-field/controls/select/option/select-option.component.d.ts +4 -4
- package/lib/form-field/controls/select/select.component.d.ts +1 -1
- package/lib/form-field/controls/shared/toggle/components/toggle-input/toggle-input.component.d.ts +1 -1
- package/lib/form-field/controls/shared/toggle/toggle.component.d.ts +1 -1
- package/lib/form-field/directives/corner-hint.directive.d.ts +1 -1
- package/lib/form-field/directives/error.directive.d.ts +1 -1
- package/lib/form-field/directives/form-root.directive.d.ts +2 -2
- package/lib/form-field/directives/hint.directive.d.ts +1 -1
- package/lib/form-field/directives/label.directive.d.ts +1 -1
- package/lib/form-field/directives/prefix.directive.d.ts +1 -1
- package/lib/form-field/directives/suffix.directive.d.ts +1 -1
- package/lib/form-field/form-field.component.d.ts +1 -1
- package/lib/form-field/services/unique-selection-dispatcher.service.d.ts +1 -1
- package/lib/form-field/shared/constructors.type.d.ts +2 -2
- package/lib/form-field/shared/disabled.mixin.d.ts +1 -1
- package/lib/form-field/shared/error-state.mixin.d.ts +1 -1
- package/lib/form-field/shared/form-field-control.d.ts +1 -1
- package/lib/form-field/shared/tab-index.mixin.d.ts +1 -1
- package/lib/icon/icon.component.d.ts +1 -1
- package/lib/modal/modal.component.d.ts +17 -10
- package/lib/modal/types/modal-component-sizes.d.ts +1 -1
- package/lib/modal/types/modal-theme.d.ts +1 -1
- package/lib/pagination/pagination.component.d.ts +1 -1
- package/lib/progress-bar/progress-bar.component.d.ts +1 -1
- package/lib/scrollable/scrollable.component.d.ts +1 -1
- package/lib/select-icon/select-icon.component.d.ts +1 -1
- package/lib/size-detection/directive/size-detector.directive.d.ts +1 -1
- package/lib/spinner/spinner.component.d.ts +1 -1
- package/lib/table/components/bulk-actions/bulk-actions.component.d.ts +1 -1
- package/lib/table/components/column-heading/column-heading.component.d.ts +1 -1
- package/lib/table/components/index.d.ts +1 -0
- package/lib/table/components/row-actions/row-actions.component.d.ts +21 -0
- package/lib/table/containers/table.component.d.ts +12 -6
- package/lib/table/directives/table-inject-component.directive.d.ts +3 -3
- package/lib/table/directives/table.directive.d.ts +1 -1
- package/lib/table/enumerations/table-column-type.d.ts +2 -1
- package/lib/table/helpers/table-theme.helper.d.ts +4 -4
- package/lib/table/interfaces/custom-cell-renderer-components.type.d.ts +1 -1
- package/lib/table/interfaces/index.d.ts +3 -1
- package/lib/table/interfaces/{table-column-def.interface.d.ts → table-column-defs.type.d.ts} +8 -1
- package/lib/table/interfaces/table-row-action-payload.interface.d.ts +6 -0
- package/lib/table/interfaces/table-row-action.interface.d.ts +9 -0
- package/lib/table/interfaces/table-row-item.interface.d.ts +3 -3
- package/lib/table/table.module.d.ts +12 -10
- package/lib/text-highlight/text-highlight.component.d.ts +1 -1
- package/package.json +16 -22
- package/services/index.d.ts +1 -1
- package/services/interaction.service.d.ts +20 -10
- package/types/component-size.d.ts +2 -2
- package/types/component-theme.d.ts +1 -1
- package/utilities/boolean-props.d.ts +1 -1
- package/utilities/number-props.d.ts +1 -1
- package/esm2020/lib/backdrop/backdrop.component.mjs +0 -40
- package/esm2020/lib/badge/badge.component.mjs +0 -99
- package/esm2020/lib/data-card/data-card.component.mjs +0 -128
- package/esm2020/lib/data-card/data-card.module.mjs +0 -20
- package/esm2020/lib/dropdown/dropdown.component.mjs +0 -142
- package/esm2020/lib/form-field/controls/input/input.directive.mjs +0 -233
- package/esm2020/lib/form-field/controls/radio/radio-button/radio-button.component.mjs +0 -260
- package/esm2020/lib/form-field/controls/radio/radio-group/radio-group.directive.mjs +0 -289
- package/esm2020/lib/form-field/controls/select/option/select-option.component.mjs +0 -139
- package/esm2020/lib/form-field/controls/select/select-model.mjs +0 -150
- package/esm2020/lib/form-field/controls/select/select.component.mjs +0 -522
- package/esm2020/lib/form-field/controls/shared/toggle/toggle.component.mjs +0 -96
- package/esm2020/lib/form-field/directives/form-root.directive.mjs +0 -91
- package/esm2020/lib/form-field/shared/error-state.mixin.mjs +0 -24
- package/esm2020/lib/modal/modal.component.mjs +0 -187
- package/esm2020/lib/pagination/pagination.component.mjs +0 -176
- package/esm2020/lib/scrollable/scrollable.component.mjs +0 -186
- package/esm2020/lib/select-icon/select-icon.component.mjs +0 -308
- package/esm2020/lib/table/containers/table.component.mjs +0 -386
- package/esm2020/lib/table/directives/table-inject-component.directive.mjs +0 -46
- package/esm2020/lib/table/interfaces/index.mjs +0 -9
- package/esm2020/lib/table/interfaces/table-column-def.interface.mjs +0 -2
- package/esm2020/lib/table/table.module.mjs +0 -88
- package/esm2020/services/interaction.service.mjs +0 -81
- package/fesm2015/impartner-design-components.mjs +0 -9214
- package/fesm2015/impartner-design-components.mjs.map +0 -1
- package/fesm2020/impartner-design-components.mjs.map +0 -1
- /package/{esm2020 → esm2022}/constants/index.mjs +0 -0
- /package/{esm2020 → esm2022}/impartner-design-components.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/alert/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/alert/theme/alert-theme.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/alert/theme/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/avatar/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/avatar-group/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/backdrop/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/badge/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/badge/types/badge-icon.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/badge/types/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/branding/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/breadcrumb/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/button/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/button/themes/button-theme.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/button/themes/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/button-group/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/card-heading/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/data-card/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/dropdown/components/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/dropdown/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/dropdown/types/dropdown-position.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/dropdown/types/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/file-upload/directives/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/file-upload/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/file-upload/pipes/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/controls/checkbox/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/controls/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/controls/input/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/controls/radio/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/controls/radio/injection-tokens.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/controls/radio/interfaces/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/controls/radio/interfaces/radio-button.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/controls/radio/interfaces/radio-change-event.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/controls/radio/interfaces/radio-group.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/controls/select/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/controls/select/option/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/controls/select/option-parent.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/controls/shared/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/controls/shared/toggle/components/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/controls/shared/toggle/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/directives/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/form-field-errors.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/impdc-forms.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/services/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/shared/constructors.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/form-field/shared/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/icon/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modal/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modal/types/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pagination/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/progress-bar/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/scrollable/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/select-icon/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/size-detection/directive/element-size.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/size-detection/directive/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/size-detection/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/spinner/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/table/constants/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/table/constants/public-table.constants.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/table/constants/table.constants.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/table/containers/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/table/directives/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/table/enumerations/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/table/helpers/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/table/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/table/interfaces/cell-renderer.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/table/interfaces/custom-cell-renderer-components.type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/table/interfaces/sort-by-payload.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/table/interfaces/table-cell-option.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/table/interfaces/table-event-payload.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/table/interfaces/table-row-item.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/text-highlight/index.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/types/component-size.mjs +0 -0
- /package/{esm2020 → esm2022}/types/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utilities/boolean-props.mjs +0 -0
- /package/{esm2020 → esm2022}/utilities/dc.mjs +0 -0
- /package/{esm2020 → esm2022}/utilities/index.mjs +0 -0
- /package/{esm2020 → esm2022}/utilities/lc.mjs +0 -0
- /package/{esm2020 → esm2022}/utilities/number-props.mjs +0 -0
- /package/{esm2020 → esm2022}/utilities/sanitize.mjs +0 -0
|
@@ -0,0 +1,522 @@
|
|
|
1
|
+
/* eslint-disable @angular-eslint/no-conflicting-lifecycle */
|
|
2
|
+
import { Attribute, ChangeDetectionStrategy, Component, ContentChildren, ElementRef, EventEmitter, Inject, Input, Optional, Output, Self, ViewChild } from '@angular/core';
|
|
3
|
+
import { Validators } from '@angular/forms';
|
|
4
|
+
import { NgbDropdown, NgbDropdownMenu } from '@ng-bootstrap/ng-bootstrap';
|
|
5
|
+
import { nanoid } from 'nanoid';
|
|
6
|
+
import { coerceBooleanPropertyValue } from '../../../../utilities';
|
|
7
|
+
import { defer, merge, startWith, Subject, switchMap, take, takeUntil } from 'rxjs';
|
|
8
|
+
import { IMPDC_FORM_ROOT } from '../../directives';
|
|
9
|
+
import { ImpdcFormFieldControl, mixinDisabled, mixinErrorState, mixinTabIndex } from '../../shared';
|
|
10
|
+
import { IMPDC_SELECT_OPTION_PARENT_COMPONENT } from './option-parent';
|
|
11
|
+
import { SelectOptionComponent } from './option/select-option.component';
|
|
12
|
+
import { SelectModel } from './select-model';
|
|
13
|
+
import * as i0 from "@angular/core";
|
|
14
|
+
import * as i1 from "../../services";
|
|
15
|
+
import * as i2 from "@angular/forms";
|
|
16
|
+
import * as i3 from "@angular/common";
|
|
17
|
+
import * as i4 from "@ng-bootstrap/ng-bootstrap";
|
|
18
|
+
export class SelectChangeEvent {
|
|
19
|
+
constructor(
|
|
20
|
+
/** The specific SelectComponent that changed. */
|
|
21
|
+
source,
|
|
22
|
+
/** The selected value(s) */
|
|
23
|
+
value) {
|
|
24
|
+
this.source = source;
|
|
25
|
+
this.value = value;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Returns an exception to be thrown when attempting to assign a non-array value to a select
|
|
30
|
+
* in `multiple` mode. Note that `undefined` and `null` are still valid values to allow for
|
|
31
|
+
* resetting the value.
|
|
32
|
+
* @ignore
|
|
33
|
+
*/
|
|
34
|
+
export function getImpdcSelectNonArrayValueError() {
|
|
35
|
+
return Error('Value must be an array in multiple-selection mode.');
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Returns an exception to be thrown when assigning a non-function value to the comparator
|
|
39
|
+
* used to determine if a value corresponds to an option. Note that whether the function
|
|
40
|
+
* actually takes two values and returns a boolean is not checked.
|
|
41
|
+
*/
|
|
42
|
+
export function getImpdcSelectNonFunctionValueError() {
|
|
43
|
+
return Error('`compareWith` must be a function.');
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Returns an exception to be thrown when attempting to change a select's `multiple` option
|
|
47
|
+
* after initialization.
|
|
48
|
+
* @ignore
|
|
49
|
+
*/
|
|
50
|
+
export function getImpdcSelectDynamicMultipleError() {
|
|
51
|
+
return Error('Cannot change `multiple` mode of select after initialization.');
|
|
52
|
+
}
|
|
53
|
+
const _SelectComponentBase = mixinTabIndex(mixinDisabled(mixinErrorState(class {
|
|
54
|
+
constructor(_defaultErrorStateMatcher, _formRoot, _parentForm, _parentFormGroup, ngControl) {
|
|
55
|
+
this._defaultErrorStateMatcher = _defaultErrorStateMatcher;
|
|
56
|
+
this._formRoot = _formRoot;
|
|
57
|
+
this._parentForm = _parentForm;
|
|
58
|
+
this._parentFormGroup = _parentFormGroup;
|
|
59
|
+
this.ngControl = ngControl;
|
|
60
|
+
this.stateChanges = new Subject();
|
|
61
|
+
}
|
|
62
|
+
})));
|
|
63
|
+
/**
|
|
64
|
+
* The `SelectComponent` (`<impdc-select`) is a select-style dropdown input where an item (or multiple items) can be picked
|
|
65
|
+
* from a list of available options. This component can be used within a `FormFieldComponent` (`<impdc-form-field`).
|
|
66
|
+
* To use, import `SelectModule` or another module that imports and exports that module from `@impartner/design-components`.
|
|
67
|
+
*/
|
|
68
|
+
export class SelectComponent extends _SelectComponentBase {
|
|
69
|
+
/**
|
|
70
|
+
* The placeholder text that will be displayed when no selection has been made.
|
|
71
|
+
*
|
|
72
|
+
* @default \- Select -
|
|
73
|
+
*/
|
|
74
|
+
get placeholder() {
|
|
75
|
+
return this._placeholder;
|
|
76
|
+
}
|
|
77
|
+
set placeholder(value) {
|
|
78
|
+
this._placeholder = value;
|
|
79
|
+
this.stateChanges.next();
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Used to set requiredness of control in a template-based manner;
|
|
83
|
+
* not necessary when using the Angular reactive forms API and `required` validator.
|
|
84
|
+
*/
|
|
85
|
+
get required() {
|
|
86
|
+
return (this._required ??
|
|
87
|
+
this.ngControl?.control?.hasValidator(Validators.required) ??
|
|
88
|
+
false);
|
|
89
|
+
}
|
|
90
|
+
set required(value) {
|
|
91
|
+
this._required = coerceBooleanPropertyValue(value);
|
|
92
|
+
this.stateChanges.next();
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Sets whether the control is a single-select or multiple-select. Cannot be changed after component initialization.
|
|
96
|
+
*/
|
|
97
|
+
get multiple() {
|
|
98
|
+
return this._multiple;
|
|
99
|
+
}
|
|
100
|
+
set multiple(value) {
|
|
101
|
+
if (this._selectionModel) {
|
|
102
|
+
throw getImpdcSelectDynamicMultipleError();
|
|
103
|
+
}
|
|
104
|
+
this._multiple = coerceBooleanPropertyValue(value);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Function used to compare option values with selected values. The first arg is a
|
|
108
|
+
* value from an option, and the second arg is a value from the selection.
|
|
109
|
+
*
|
|
110
|
+
* @returns Boolean indicating if the values are equivalent.
|
|
111
|
+
*/
|
|
112
|
+
get compareWith() {
|
|
113
|
+
return this._compareWith;
|
|
114
|
+
}
|
|
115
|
+
set compareWith(fn) {
|
|
116
|
+
if (typeof fn !== 'function') {
|
|
117
|
+
throw getImpdcSelectNonFunctionValueError();
|
|
118
|
+
}
|
|
119
|
+
this._compareWith = fn;
|
|
120
|
+
if (this._selectionModel) {
|
|
121
|
+
// Changing the comparator function means the visual selection may have changed.
|
|
122
|
+
this._initializeSelection();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
get dropdownOpen() {
|
|
126
|
+
return this._ngbDropdown?.isOpen() ?? false;
|
|
127
|
+
}
|
|
128
|
+
constructor(_changeDetector, _ngZone, tabIndex, _defaultErrorStateMatcher, _formRoot, _parentForm, _parentFormGroup, ngControl) {
|
|
129
|
+
super(_defaultErrorStateMatcher, _formRoot, _parentForm, _parentFormGroup, ngControl);
|
|
130
|
+
this._changeDetector = _changeDetector;
|
|
131
|
+
this._ngZone = _ngZone;
|
|
132
|
+
/** @ignore */
|
|
133
|
+
this.optionSelectionChanges = defer(() => {
|
|
134
|
+
const options = this.options;
|
|
135
|
+
if (options) {
|
|
136
|
+
return options.changes.pipe(startWith(options), switchMap(() => merge(...options.map(option => option.onSelectionChange))));
|
|
137
|
+
}
|
|
138
|
+
return this._ngZone.onStable.pipe(take(1), switchMap(() => this.optionSelectionChanges));
|
|
139
|
+
});
|
|
140
|
+
this._uid = `impdc-select-${nanoid()}`;
|
|
141
|
+
this._ngDestroy = new Subject();
|
|
142
|
+
this._compareWith = (o1, o2) => o1 === o2;
|
|
143
|
+
this._cvaOnChange = () => { };
|
|
144
|
+
this._cvaOnTouched = () => { };
|
|
145
|
+
this._placeholder = '- Select -';
|
|
146
|
+
this._multiple = false;
|
|
147
|
+
/** Events fire when selection has been changed by the user. */
|
|
148
|
+
this.selectionChange = new EventEmitter();
|
|
149
|
+
/**
|
|
150
|
+
* Events fire when raw value of select changes. Mainly exists to handle
|
|
151
|
+
* two-way binding of `value` input property.
|
|
152
|
+
* @ignore
|
|
153
|
+
*/
|
|
154
|
+
this.valueChange = new EventEmitter();
|
|
155
|
+
/* ImpdcFormFieldControl */
|
|
156
|
+
this.controlType = 'impdc-select';
|
|
157
|
+
this.supportsAffixes = true;
|
|
158
|
+
this._focused = false;
|
|
159
|
+
if (this.ngControl) {
|
|
160
|
+
this.ngControl.valueAccessor = this;
|
|
161
|
+
}
|
|
162
|
+
this.id = this.id;
|
|
163
|
+
this.tabIndex = parseInt(tabIndex) || 0;
|
|
164
|
+
}
|
|
165
|
+
get empty() {
|
|
166
|
+
return !this._selectionModel || this._selectionModel.isEmpty();
|
|
167
|
+
}
|
|
168
|
+
get displayedValue() {
|
|
169
|
+
if (this.empty) {
|
|
170
|
+
return '';
|
|
171
|
+
}
|
|
172
|
+
if (!this._multiple) {
|
|
173
|
+
return this._selectionModel.selected[0].label;
|
|
174
|
+
}
|
|
175
|
+
return this._selectionModel.selected.map(opt => opt.label).join(', ');
|
|
176
|
+
}
|
|
177
|
+
get selected() {
|
|
178
|
+
return this.multiple
|
|
179
|
+
? this._selectionModel?.selected || []
|
|
180
|
+
: this._selectionModel?.selected[0];
|
|
181
|
+
}
|
|
182
|
+
/** @ignore */
|
|
183
|
+
focus(options) {
|
|
184
|
+
this._toggleButtonRef.nativeElement.focus(options);
|
|
185
|
+
}
|
|
186
|
+
_handleOpenChange(isOpen) {
|
|
187
|
+
if (isOpen) {
|
|
188
|
+
this._onFocus();
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
this._onBlur();
|
|
192
|
+
}
|
|
193
|
+
this.stateChanges.next();
|
|
194
|
+
}
|
|
195
|
+
/* Angular lifecycle hooks */
|
|
196
|
+
/** @ignore */
|
|
197
|
+
ngOnInit() {
|
|
198
|
+
this._selectionModel = new SelectModel(this.multiple);
|
|
199
|
+
this.stateChanges.next();
|
|
200
|
+
}
|
|
201
|
+
/** @ignore */
|
|
202
|
+
ngAfterContentInit() {
|
|
203
|
+
this._selectionModel.changed$
|
|
204
|
+
.pipe(takeUntil(this._ngDestroy))
|
|
205
|
+
.subscribe(changeEvent => {
|
|
206
|
+
changeEvent.added.forEach(option => option.select());
|
|
207
|
+
changeEvent.removed.forEach(option => option.deselect());
|
|
208
|
+
});
|
|
209
|
+
this.options.changes
|
|
210
|
+
.pipe(startWith(null), takeUntil(this._ngDestroy))
|
|
211
|
+
.subscribe(() => {
|
|
212
|
+
this._resetOptions();
|
|
213
|
+
this._initializeSelection();
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
/** @ignore */
|
|
217
|
+
ngAfterViewInit() {
|
|
218
|
+
this._ngbDropdownMenu.menuItems = this.options;
|
|
219
|
+
}
|
|
220
|
+
/** @ignore */
|
|
221
|
+
ngDoCheck() {
|
|
222
|
+
const ngControl = this.ngControl;
|
|
223
|
+
if (!ngControl) {
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
if (this._previousControl !== ngControl.control) {
|
|
227
|
+
if (this._previousControl !== undefined &&
|
|
228
|
+
ngControl.disabled !== null &&
|
|
229
|
+
ngControl.disabled !== this.disabled) {
|
|
230
|
+
this.disabled = ngControl?.disabled;
|
|
231
|
+
}
|
|
232
|
+
this._previousControl = ngControl.control;
|
|
233
|
+
}
|
|
234
|
+
this.updateErrorState();
|
|
235
|
+
}
|
|
236
|
+
/** @ignore */
|
|
237
|
+
ngOnChanges(changes) {
|
|
238
|
+
// Managing disabled state is handled via the `mixinDisabled` mixin/generator, but we still need to signal
|
|
239
|
+
// to the parent form field so it can run change detection when disabled state is changed.
|
|
240
|
+
if (changes['disabled']) {
|
|
241
|
+
this.stateChanges.next();
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
/** @ignore */
|
|
245
|
+
ngOnDestroy() {
|
|
246
|
+
this._ngDestroy.next();
|
|
247
|
+
this._ngDestroy.complete();
|
|
248
|
+
this.stateChanges.complete();
|
|
249
|
+
}
|
|
250
|
+
get value() {
|
|
251
|
+
return this._value;
|
|
252
|
+
}
|
|
253
|
+
set value(value) {
|
|
254
|
+
const hasAssigned = this._assignValue(value);
|
|
255
|
+
if (hasAssigned) {
|
|
256
|
+
this._cvaOnChange(value);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
get id() {
|
|
260
|
+
return this._id;
|
|
261
|
+
}
|
|
262
|
+
set id(value) {
|
|
263
|
+
this._id = value || this._uid;
|
|
264
|
+
this.stateChanges.next();
|
|
265
|
+
}
|
|
266
|
+
get focused() {
|
|
267
|
+
return this._focused || this.dropdownOpen;
|
|
268
|
+
}
|
|
269
|
+
/* ControlValueAccessor */
|
|
270
|
+
/** @ignore */
|
|
271
|
+
writeValue(value) {
|
|
272
|
+
this._assignValue(value);
|
|
273
|
+
}
|
|
274
|
+
/** @ignore */
|
|
275
|
+
registerOnChange(fn) {
|
|
276
|
+
this._cvaOnChange = fn;
|
|
277
|
+
}
|
|
278
|
+
/** @ignore */
|
|
279
|
+
registerOnTouched(fn) {
|
|
280
|
+
this._cvaOnTouched = fn;
|
|
281
|
+
}
|
|
282
|
+
/** @ignore */
|
|
283
|
+
setDisabledState(isDisabled) {
|
|
284
|
+
this.disabled = isDisabled;
|
|
285
|
+
this._changeDetector.markForCheck();
|
|
286
|
+
this.stateChanges.next();
|
|
287
|
+
}
|
|
288
|
+
/* Internals */
|
|
289
|
+
_onFocus() {
|
|
290
|
+
if (!this.disabled) {
|
|
291
|
+
this._focused = true;
|
|
292
|
+
this.stateChanges.next();
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Calls the CVA touched callback only if the dropdown is closed.
|
|
297
|
+
*/
|
|
298
|
+
_onBlur() {
|
|
299
|
+
this._focused = false;
|
|
300
|
+
if (!this.disabled && !this.dropdownOpen) {
|
|
301
|
+
this._cvaOnTouched();
|
|
302
|
+
this._changeDetector.markForCheck();
|
|
303
|
+
this.stateChanges.next();
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
_initializeSelection() {
|
|
307
|
+
// We defer this work into a promise in order to avoid tripping Angular's
|
|
308
|
+
// "Expression has changed after it was checked" error.
|
|
309
|
+
Promise.resolve().then(() => {
|
|
310
|
+
if (this.ngControl) {
|
|
311
|
+
this._value = this.ngControl.value;
|
|
312
|
+
}
|
|
313
|
+
this._setSelectionByValue(this._value);
|
|
314
|
+
this.stateChanges.next();
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
_setSelectionByValue(value) {
|
|
318
|
+
this._selectionModel.clear();
|
|
319
|
+
if (this.multiple && value) {
|
|
320
|
+
if (!Array.isArray(value)) {
|
|
321
|
+
throw getImpdcSelectNonArrayValueError();
|
|
322
|
+
}
|
|
323
|
+
value.forEach(currentValue => this._selectOptionByValue(currentValue));
|
|
324
|
+
this._sortValues();
|
|
325
|
+
}
|
|
326
|
+
else {
|
|
327
|
+
this._selectOptionByValue(value);
|
|
328
|
+
}
|
|
329
|
+
this._changeDetector.detectChanges();
|
|
330
|
+
}
|
|
331
|
+
_selectOptionByValue(value) {
|
|
332
|
+
const correspondingOption = this.options.find((option) => {
|
|
333
|
+
if (this._selectionModel.isSelected(option)) {
|
|
334
|
+
return false;
|
|
335
|
+
}
|
|
336
|
+
try {
|
|
337
|
+
return option.value != null && this._compareWith(option.value, value);
|
|
338
|
+
}
|
|
339
|
+
catch (error) {
|
|
340
|
+
console.warn(error);
|
|
341
|
+
return false;
|
|
342
|
+
}
|
|
343
|
+
});
|
|
344
|
+
if (correspondingOption) {
|
|
345
|
+
this._selectionModel.select(correspondingOption);
|
|
346
|
+
}
|
|
347
|
+
return correspondingOption;
|
|
348
|
+
}
|
|
349
|
+
/** Assigns a value to the select control. Returns a boolean indicating whether or not
|
|
350
|
+
* the value has changed.
|
|
351
|
+
*/
|
|
352
|
+
_assignValue(newValue) {
|
|
353
|
+
if (newValue !== this._value ||
|
|
354
|
+
(this._multiple && Array.isArray(newValue))) {
|
|
355
|
+
if (this.options) {
|
|
356
|
+
this._setSelectionByValue(newValue);
|
|
357
|
+
}
|
|
358
|
+
this._value = newValue;
|
|
359
|
+
return true;
|
|
360
|
+
}
|
|
361
|
+
return false;
|
|
362
|
+
}
|
|
363
|
+
_resetOptions() {
|
|
364
|
+
const changedOrDestroyed = merge(this.options.changes, this._ngDestroy);
|
|
365
|
+
this.optionSelectionChanges
|
|
366
|
+
.pipe(takeUntil(changedOrDestroyed))
|
|
367
|
+
.subscribe(event => {
|
|
368
|
+
this._onSelect(event.source, event.isUserInput);
|
|
369
|
+
if (event.isUserInput && !this.multiple && this.dropdownOpen) {
|
|
370
|
+
this._ngbDropdown.close();
|
|
371
|
+
this.focus();
|
|
372
|
+
}
|
|
373
|
+
});
|
|
374
|
+
merge(...this.options.map(option => option.stateChanges))
|
|
375
|
+
.pipe(takeUntil(changedOrDestroyed))
|
|
376
|
+
.subscribe(() => {
|
|
377
|
+
this._changeDetector.detectChanges();
|
|
378
|
+
this.stateChanges.next();
|
|
379
|
+
});
|
|
380
|
+
}
|
|
381
|
+
_onSelect(option, isUserInput) {
|
|
382
|
+
const wasSelected = this._selectionModel.isSelected(option);
|
|
383
|
+
if (option.value == null && !this._multiple) {
|
|
384
|
+
option.deselect();
|
|
385
|
+
this._selectionModel.clear();
|
|
386
|
+
if (this.value != null) {
|
|
387
|
+
this._propagateChanges(option.value);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
else {
|
|
391
|
+
if (wasSelected !== option.selected) {
|
|
392
|
+
option.selected
|
|
393
|
+
? this._selectionModel.select(option)
|
|
394
|
+
: this._selectionModel.deselect(option);
|
|
395
|
+
}
|
|
396
|
+
if (this.multiple) {
|
|
397
|
+
this._sortValues();
|
|
398
|
+
if (isUserInput) {
|
|
399
|
+
this.focus();
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
if (wasSelected !== this._selectionModel.isSelected(option)) {
|
|
404
|
+
this._propagateChanges();
|
|
405
|
+
}
|
|
406
|
+
this._changeDetector.markForCheck();
|
|
407
|
+
this.stateChanges.next();
|
|
408
|
+
}
|
|
409
|
+
_sortValues() {
|
|
410
|
+
if (this.multiple) {
|
|
411
|
+
const options = this.options.toArray();
|
|
412
|
+
this._selectionModel.sort((a, b) => {
|
|
413
|
+
return options.indexOf(a) - options.indexOf(b);
|
|
414
|
+
});
|
|
415
|
+
this.stateChanges.next();
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
_propagateChanges(fallbackValue) {
|
|
419
|
+
let valToEmit = null;
|
|
420
|
+
if (this.multiple) {
|
|
421
|
+
valToEmit = this.selected.map(option => option.value);
|
|
422
|
+
}
|
|
423
|
+
else {
|
|
424
|
+
valToEmit = this.selected
|
|
425
|
+
? this.selected.value
|
|
426
|
+
: fallbackValue;
|
|
427
|
+
}
|
|
428
|
+
this._value = valToEmit;
|
|
429
|
+
this.valueChange.emit(valToEmit);
|
|
430
|
+
this._cvaOnChange(valToEmit);
|
|
431
|
+
this.selectionChange.emit(this._buildChangeEvent(valToEmit));
|
|
432
|
+
}
|
|
433
|
+
_buildChangeEvent(value) {
|
|
434
|
+
return new SelectChangeEvent(this, value);
|
|
435
|
+
}
|
|
436
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: SelectComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: 'tabindex', attribute: true }, { token: i1.ErrorStateMatcher }, { token: IMPDC_FORM_ROOT, optional: true }, { token: i2.NgForm, optional: true }, { token: i2.FormGroupDirective, optional: true }, { token: i2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
437
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: SelectComponent, selector: "impdc-select", inputs: { disabled: "disabled", tabIndex: "tabIndex", placeholder: "placeholder", required: "required", multiple: "multiple", compareWith: "compareWith", errorStateMatcher: "errorStateMatcher", value: "value", id: "id" }, outputs: { selectionChange: "selectionChange", valueChange: "valueChange" }, host: { listeners: { "focus": "_onFocus(); focus()" }, properties: { "attr.id": "id", "attr.tabindex": "tabIndex", "attr.aria-required": "required.toString()", "attr.aria-disabled": "disabled.toString()", "attr.aria-invalid": "errorState", "class.form-select": "true", "class.is-invalid": "errorState", "class.impdc-form-field-control": "true", "class.impdc-select--required": "required", "class.impdc-select--disabled": "disabled", "class.impdc-select--invalid": "errorState", "class.impdc-select--empty": "empty", "class.impdc-select--multiple": "multiple" } }, providers: [
|
|
438
|
+
{
|
|
439
|
+
provide: ImpdcFormFieldControl,
|
|
440
|
+
useExisting: SelectComponent
|
|
441
|
+
},
|
|
442
|
+
{
|
|
443
|
+
provide: IMPDC_SELECT_OPTION_PARENT_COMPONENT,
|
|
444
|
+
useExisting: SelectComponent
|
|
445
|
+
}
|
|
446
|
+
], queries: [{ propertyName: "options", predicate: SelectOptionComponent, descendants: true }], viewQueries: [{ propertyName: "_ngbDropdown", first: true, predicate: NgbDropdown, descendants: true }, { propertyName: "_ngbDropdownMenu", first: true, predicate: NgbDropdownMenu, descendants: true }, { propertyName: "_toggleButtonRef", first: true, predicate: ["toggleButton"], descendants: true, read: ElementRef, static: true }], exportAs: ["impdcSelect"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\n ngbDropdown\n [autoClose]=\"multiple ? 'outside' : true\"\n container=\"body\"\n dropdownClass=\"impartner-hex\"\n (openChange)=\"_handleOpenChange($event)\"\n class=\"w-100\">\n <button\n #toggleButton\n class=\"impdc-select--toggle btn border-0 text-start\"\n type=\"button\"\n role=\"combobox\"\n [disabled]=\"disabled\"\n (focus)=\"_onFocus()\"\n (blur)=\"_onBlur()\"\n ngbDropdownToggle>\n <ng-container [ngSwitch]=\"empty\">\n <span\n class=\"impdc-select--text impdc-select--placeholder\"\n *ngSwitchCase=\"true\"\n >{{ placeholder }}</span\n >\n <span\n class=\"impdc-select--text impdc-select--value-text\"\n *ngSwitchCase=\"false\"\n >{{ displayedValue }}</span\n >\n </ng-container>\n </button>\n <div\n ngbDropdownMenu\n class=\"w-100 bg-white text-gray-600\"\n role=\"listbox\"\n tabindex=\"-1\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host{padding:0!important;position:relative}:host.impdc-select--disabled{background-color:var(--impd-color-gray-100)}.impdc-select--toggle{font-weight:inherit;padding-right:3.6rem;cursor:pointer;-webkit-user-select:none;user-select:none;width:100%}:host-context(.is-invalid) .impdc-select--toggle{padding-right:6.6rem}.impdc-select--toggle:disabled{cursor:default}.impdc-select--text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}button[ngbDropdownToggle].dropdown-toggle:after{display:none}\n"], dependencies: [{ kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i4.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i4.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i4.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
447
|
+
}
|
|
448
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: SelectComponent, decorators: [{
|
|
449
|
+
type: Component,
|
|
450
|
+
args: [{ selector: 'impdc-select', exportAs: 'impdcSelect', inputs: ['disabled', 'tabIndex'], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
451
|
+
'[attr.id]': 'id',
|
|
452
|
+
'[attr.tabindex]': 'tabIndex',
|
|
453
|
+
'[attr.aria-required]': 'required.toString()',
|
|
454
|
+
'[attr.aria-disabled]': 'disabled.toString()',
|
|
455
|
+
'[attr.aria-invalid]': 'errorState',
|
|
456
|
+
'[class.form-select]': 'true',
|
|
457
|
+
'[class.is-invalid]': 'errorState',
|
|
458
|
+
'[class.impdc-form-field-control]': 'true',
|
|
459
|
+
'[class.impdc-select--required]': 'required',
|
|
460
|
+
'[class.impdc-select--disabled]': 'disabled',
|
|
461
|
+
'[class.impdc-select--invalid]': 'errorState',
|
|
462
|
+
'[class.impdc-select--empty]': 'empty',
|
|
463
|
+
'[class.impdc-select--multiple]': 'multiple',
|
|
464
|
+
'(focus)': '_onFocus(); focus()'
|
|
465
|
+
}, providers: [
|
|
466
|
+
{
|
|
467
|
+
provide: ImpdcFormFieldControl,
|
|
468
|
+
useExisting: SelectComponent
|
|
469
|
+
},
|
|
470
|
+
{
|
|
471
|
+
provide: IMPDC_SELECT_OPTION_PARENT_COMPONENT,
|
|
472
|
+
useExisting: SelectComponent
|
|
473
|
+
}
|
|
474
|
+
], template: "<div\n ngbDropdown\n [autoClose]=\"multiple ? 'outside' : true\"\n container=\"body\"\n dropdownClass=\"impartner-hex\"\n (openChange)=\"_handleOpenChange($event)\"\n class=\"w-100\">\n <button\n #toggleButton\n class=\"impdc-select--toggle btn border-0 text-start\"\n type=\"button\"\n role=\"combobox\"\n [disabled]=\"disabled\"\n (focus)=\"_onFocus()\"\n (blur)=\"_onBlur()\"\n ngbDropdownToggle>\n <ng-container [ngSwitch]=\"empty\">\n <span\n class=\"impdc-select--text impdc-select--placeholder\"\n *ngSwitchCase=\"true\"\n >{{ placeholder }}</span\n >\n <span\n class=\"impdc-select--text impdc-select--value-text\"\n *ngSwitchCase=\"false\"\n >{{ displayedValue }}</span\n >\n </ng-container>\n </button>\n <div\n ngbDropdownMenu\n class=\"w-100 bg-white text-gray-600\"\n role=\"listbox\"\n tabindex=\"-1\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host{padding:0!important;position:relative}:host.impdc-select--disabled{background-color:var(--impd-color-gray-100)}.impdc-select--toggle{font-weight:inherit;padding-right:3.6rem;cursor:pointer;-webkit-user-select:none;user-select:none;width:100%}:host-context(.is-invalid) .impdc-select--toggle{padding-right:6.6rem}.impdc-select--toggle:disabled{cursor:default}.impdc-select--text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}button[ngbDropdownToggle].dropdown-toggle:after{display:none}\n"] }]
|
|
475
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: undefined, decorators: [{
|
|
476
|
+
type: Attribute,
|
|
477
|
+
args: ['tabindex']
|
|
478
|
+
}] }, { type: i1.ErrorStateMatcher }, { type: undefined, decorators: [{
|
|
479
|
+
type: Optional
|
|
480
|
+
}, {
|
|
481
|
+
type: Inject,
|
|
482
|
+
args: [IMPDC_FORM_ROOT]
|
|
483
|
+
}] }, { type: i2.NgForm, decorators: [{
|
|
484
|
+
type: Optional
|
|
485
|
+
}] }, { type: i2.FormGroupDirective, decorators: [{
|
|
486
|
+
type: Optional
|
|
487
|
+
}] }, { type: i2.NgControl, decorators: [{
|
|
488
|
+
type: Self
|
|
489
|
+
}, {
|
|
490
|
+
type: Optional
|
|
491
|
+
}] }], propDecorators: { options: [{
|
|
492
|
+
type: ContentChildren,
|
|
493
|
+
args: [SelectOptionComponent, { descendants: true }]
|
|
494
|
+
}], _ngbDropdown: [{
|
|
495
|
+
type: ViewChild,
|
|
496
|
+
args: [NgbDropdown]
|
|
497
|
+
}], _ngbDropdownMenu: [{
|
|
498
|
+
type: ViewChild,
|
|
499
|
+
args: [NgbDropdownMenu]
|
|
500
|
+
}], _toggleButtonRef: [{
|
|
501
|
+
type: ViewChild,
|
|
502
|
+
args: ['toggleButton', { static: true, read: ElementRef }]
|
|
503
|
+
}], placeholder: [{
|
|
504
|
+
type: Input
|
|
505
|
+
}], required: [{
|
|
506
|
+
type: Input
|
|
507
|
+
}], multiple: [{
|
|
508
|
+
type: Input
|
|
509
|
+
}], compareWith: [{
|
|
510
|
+
type: Input
|
|
511
|
+
}], errorStateMatcher: [{
|
|
512
|
+
type: Input
|
|
513
|
+
}], selectionChange: [{
|
|
514
|
+
type: Output
|
|
515
|
+
}], valueChange: [{
|
|
516
|
+
type: Output
|
|
517
|
+
}], value: [{
|
|
518
|
+
type: Input
|
|
519
|
+
}], id: [{
|
|
520
|
+
type: Input
|
|
521
|
+
}] } });
|
|
522
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvZm9ybS1maWVsZC9jb250cm9scy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvZm9ybS1maWVsZC9jb250cm9scy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZEQUE2RDtBQUM3RCxPQUFPLEVBR0wsU0FBUyxFQUNULHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFLTCxRQUFRLEVBQ1IsTUFBTSxFQUVOLElBQUksRUFFSixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQU1MLFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLEVBRUwsMEJBQTBCLEVBQzNCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUNMLEtBQUssRUFDTCxLQUFLLEVBRUwsU0FBUyxFQUNULE9BQU8sRUFDUCxTQUFTLEVBQ1QsSUFBSSxFQUNKLFNBQVMsRUFDVixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBaUIsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEUsT0FBTyxFQUtMLHFCQUFxQixFQUNyQixhQUFhLEVBQ2IsZUFBZSxFQUNmLGFBQWEsRUFDZCxNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsb0NBQW9D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VTt3QkFDNUMsU0FBUyxFQUFFLHFCQUFxQjtxQkFDakMsYUFDVTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUscUJBQXFCOzRCQUM5QixXQUFXLGlCQUFpQjt5QkFDN0I7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLG9DQUFvQzs0QkFDN0MsV0FBVyxpQkFBaUI7eUJBQzdCO3FCQUNGOzswQkEySkUsU0FBUzsyQkFBQyxVQUFVOzswQkFFcEIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxlQUFlOzswQkFDbEMsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQ1IsSUFBSTs7MEJBQUksUUFBUTt5Q0E1SVosT0FBTztzQkFEYixlQUFlO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFJbkQsWUFBWTtzQkFEckIsU0FBUzt1QkFBQyxXQUFXO2dCQUlaLGdCQUFnQjtzQkFEekIsU0FBUzt1QkFBQyxlQUFlO2dCQUloQixnQkFBZ0I7c0JBRHpCLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQXNDbEQsV0FBVztzQkFEckIsS0FBSztnQkFlSyxRQUFRO3NCQURsQixLQUFLO2dCQWtCSyxRQUFRO3NCQURsQixLQUFLO2dCQW9CSyxXQUFXO3NCQURyQixLQUFLO2dCQWtCVSxpQkFBaUI7c0JBRGhDLEtBQUs7Z0JBS1UsZUFBZTtzQkFEOUIsTUFBTTtnQkFVUyxXQUFXO3NCQUQxQixNQUFNO2dCQW1KSSxLQUFLO3NCQURmLEtBQUs7Z0JBY0ssRUFBRTtzQkFEWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L25vLWNvbmZsaWN0aW5nLWxpZmVjeWNsZSAqL1xuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQXR0cmlidXRlLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBEb0NoZWNrLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTZWxmLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gIE5nQ29udHJvbCxcbiAgTmdGb3JtLFxuICBWYWxpZGF0b3JzXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE5nYkRyb3Bkb3duLCBOZ2JEcm9wZG93bk1lbnUgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBuYW5vaWQgfSBmcm9tICduYW5vaWQnO1xuaW1wb3J0IHtcbiAgQm9vbGVhbklucHV0LFxuICBjb2VyY2VCb29sZWFuUHJvcGVydHlWYWx1ZVxufSBmcm9tICcuLi8uLi8uLi8uLi91dGlsaXRpZXMnO1xuaW1wb3J0IHtcbiAgZGVmZXIsXG4gIG1lcmdlLFxuICBPYnNlcnZhYmxlLFxuICBzdGFydFdpdGgsXG4gIFN1YmplY3QsXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFrZVVudGlsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRXJyb3JTdGF0ZU1hdGNoZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBJbXBkY0Zvcm1Sb290LCBJTVBEQ19GT1JNX1JPT1QgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7XG4gIENhbkRpc2FibGUsXG4gIEhhc1RhYkluZGV4LFxuICBJQ2FuVXBkYXRlRXJyb3JTdGF0ZSxcbiAgSUhhc0Vycm9yU3RhdGUsXG4gIEltcGRjRm9ybUZpZWxkQ29udHJvbCxcbiAgbWl4aW5EaXNhYmxlZCxcbiAgbWl4aW5FcnJvclN0YXRlLFxuICBtaXhpblRhYkluZGV4XG59IGZyb20gJy4uLy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBJTVBEQ19TRUxFQ1RfT1BUSU9OX1BBUkVOVF9DT01QT05FTlQgfSBmcm9tICcuL29wdGlvbi1wYXJlbnQnO1xuaW1wb3J0IHtcbiAgU2VsZWN0T3B0aW9uU2VsZWN0aW9uQ2hhbmdlRXZlbnQsXG4gIFNlbGVjdE9wdGlvbkNvbXBvbmVudFxufSBmcm9tICcuL29wdGlvbi9zZWxlY3Qtb3B0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWxlY3RNb2RlbCB9IGZyb20gJy4vc2VsZWN0LW1vZGVsJztcblxuZXhwb3J0IGNsYXNzIFNlbGVjdENoYW5nZUV2ZW50IHtcbiAgY29uc3RydWN0b3IoXG4gICAgLyoqIFRoZSBzcGVjaWZpYyBTZWxlY3RDb21wb25lbnQgdGhhdCBjaGFuZ2VkLiAqL1xuICAgIHB1YmxpYyByZWFkb25seSBzb3VyY2U6IFNlbGVjdENvbXBvbmVudCxcbiAgICAvKiogVGhlIHNlbGVjdGVkIHZhbHVlKHMpICovXG4gICAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBhbnlcbiAgKSB7fVxufVxuXG4vKipcbiAqIFJldHVybnMgYW4gZXhjZXB0aW9uIHRvIGJlIHRocm93biB3aGVuIGF0dGVtcHRpbmcgdG8gYXNzaWduIGEgbm9uLWFycmF5IHZhbHVlIHRvIGEgc2VsZWN0XG4gKiBpbiBgbXVsdGlwbGVgIG1vZGUuIE5vdGUgdGhhdCBgdW5kZWZpbmVkYCBhbmQgYG51bGxgIGFyZSBzdGlsbCB2YWxpZCB2YWx1ZXMgdG8gYWxsb3cgZm9yXG4gKiByZXNldHRpbmcgdGhlIHZhbHVlLlxuICogQGlnbm9yZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW1wZGNTZWxlY3ROb25BcnJheVZhbHVlRXJyb3IoKTogRXJyb3Ige1xuICByZXR1cm4gRXJyb3IoJ1ZhbHVlIG11c3QgYmUgYW4gYXJyYXkgaW4gbXVsdGlwbGUtc2VsZWN0aW9uIG1vZGUuJyk7XG59XG5cbi8qKlxuICogUmV0dXJucyBhbiBleGNlcHRpb24gdG8gYmUgdGhyb3duIHdoZW4gYXNzaWduaW5nIGEgbm9uLWZ1bmN0aW9uIHZhbHVlIHRvIHRoZSBjb21wYXJhdG9yXG4gKiB1c2VkIHRvIGRldGVybWluZSBpZiBhIHZhbHVlIGNvcnJlc3BvbmRzIHRvIGFuIG9wdGlvbi4gTm90ZSB0aGF0IHdoZXRoZXIgdGhlIGZ1bmN0aW9uXG4gKiBhY3R1YWxseSB0YWtlcyB0d28gdmFsdWVzIGFuZCByZXR1cm5zIGEgYm9vbGVhbiBpcyBub3QgY2hlY2tlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEltcGRjU2VsZWN0Tm9uRnVuY3Rpb25WYWx1ZUVycm9yKCk6IEVycm9yIHtcbiAgcmV0dXJuIEVycm9yKCdgY29tcGFyZVdpdGhgIG11c3QgYmUgYSBmdW5jdGlvbi4nKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFuIGV4Y2VwdGlvbiB0byBiZSB0aHJvd24gd2hlbiBhdHRlbXB0aW5nIHRvIGNoYW5nZSBhIHNlbGVjdCdzIGBtdWx0aXBsZWAgb3B0aW9uXG4gKiBhZnRlciBpbml0aWFsaXphdGlvbi5cbiAqIEBpZ25vcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEltcGRjU2VsZWN0RHluYW1pY011bHRpcGxlRXJyb3IoKTogRXJyb3Ige1xuICByZXR1cm4gRXJyb3IoJ0Nhbm5vdCBjaGFuZ2UgYG11bHRpcGxlYCBtb2RlIG9mIHNlbGVjdCBhZnRlciBpbml0aWFsaXphdGlvbi4nKTtcbn1cblxuY29uc3QgX1NlbGVjdENvbXBvbmVudEJhc2UgPSBtaXhpblRhYkluZGV4KFxuICBtaXhpbkRpc2FibGVkKFxuICAgIG1peGluRXJyb3JTdGF0ZShcbiAgICAgIGNsYXNzIHtcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IHN0YXRlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAgICAgY29uc3RydWN0b3IoXG4gICAgICAgICAgcHVibGljIF9kZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXI6IEVycm9yU3RhdGVNYXRjaGVyLFxuICAgICAgICAgIHB1YmxpYyBfZm9ybVJvb3Q6IEltcGRjRm9ybVJvb3QsXG4gICAgICAgICAgcHVibGljIF9wYXJlbnRGb3JtOiBOZ0Zvcm0sXG4gICAgICAgICAgcHVibGljIF9wYXJlbnRGb3JtR3JvdXA6IEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgICAgICAgICBwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsXG4gICAgICAgICkge31cbiAgICAgIH1cbiAgICApXG4gIClcbik7XG5cbi8qKlxuICogVGhlIGBTZWxlY3RDb21wb25lbnRgIChgPGltcGRjLXNlbGVjdGApIGlzIGEgc2VsZWN0LXN0eWxlIGRyb3Bkb3duIGlucHV0IHdoZXJlIGFuIGl0ZW0gKG9yIG11bHRpcGxlIGl0ZW1zKSBjYW4gYmUgcGlja2VkXG4gKiBmcm9tIGEgbGlzdCBvZiBhdmFpbGFibGUgb3B0aW9ucy4gVGhpcyBjb21wb25lbnQgY2FuIGJlIHVzZWQgd2l0aGluIGEgYEZvcm1GaWVsZENvbXBvbmVudGAgKGA8aW1wZGMtZm9ybS1maWVsZGApLlxuICogVG8gdXNlLCBpbXBvcnQgYFNlbGVjdE1vZHVsZWAgb3IgYW5vdGhlciBtb2R1bGUgdGhhdCBpbXBvcnRzIGFuZCBleHBvcnRzIHRoYXQgbW9kdWxlIGZyb20gYEBpbXBhcnRuZXIvZGVzaWduLWNvbXBvbmVudHNgLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpbXBkYy1zZWxlY3QnLFxuICBleHBvcnRBczogJ2ltcGRjU2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlbGVjdC5jb21wb25lbnQuc2NzcyddLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGlzYWJsZWQnLCAndGFiSW5kZXgnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taG9zdC1tZXRhZGF0YS1wcm9wZXJ0eVxuICBob3N0OiB7XG4gICAgJ1thdHRyLmlkXSc6ICdpZCcsXG4gICAgJ1thdHRyLnRhYmluZGV4XSc6ICd0YWJJbmRleCcsXG4gICAgJ1thdHRyLmFyaWEtcmVxdWlyZWRdJzogJ3JlcXVpcmVkLnRvU3RyaW5nKCknLFxuICAgICdbYXR0ci5hcmlhLWRpc2FibGVkXSc6ICdkaXNhYmxlZC50b1N0cmluZygpJyxcbiAgICAnW2F0dHIuYXJpYS1pbnZhbGlkXSc6ICdlcnJvclN0YXRlJyxcbiAgICAnW2NsYXNzLmZvcm0tc2VsZWN0XSc6ICd0cnVlJyxcbiAgICAnW2NsYXNzLmlzLWludmFsaWRdJzogJ2Vycm9yU3RhdGUnLFxuICAgICdbY2xhc3MuaW1wZGMtZm9ybS1maWVsZC1jb250cm9sXSc6ICd0cnVlJyxcbiAgICAnW2NsYXNzLmltcGRjLXNlbGVjdC0tcmVxdWlyZWRdJzogJ3JlcXVpcmVkJyxcbiAgICAnW2NsYXNzLmltcGRjLXNlbGVjdC0tZGlzYWJsZWRdJzogJ2Rpc2FibGVkJyxcbiAgICAnW2NsYXNzLmltcGRjLXNlbGVjdC0taW52YWxpZF0nOiAnZXJyb3JTdGF0ZScsXG4gICAgJ1tjbGFzcy5pbXBkYy1zZWxlY3QtLWVtcHR5XSc6ICdlbXB0eScsXG4gICAgJ1tjbGFzcy5pbXBkYy1zZWxlY3QtLW11bHRpcGxlXSc6ICdtdWx0aXBsZScsXG4gICAgJyhmb2N1cyknOiAnX29uRm9jdXMoKTsgZm9jdXMoKSdcbiAgfSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogSW1wZGNGb3JtRmllbGRDb250cm9sLFxuICAgICAgdXNlRXhpc3Rpbmc6IFNlbGVjdENvbXBvbmVudFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogSU1QRENfU0VMRUNUX09QVElPTl9QQVJFTlRfQ09NUE9ORU5ULFxuICAgICAgdXNlRXhpc3Rpbmc6IFNlbGVjdENvbXBvbmVudFxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RDb21wb25lbnRcbiAgZXh0ZW5kcyBfU2VsZWN0Q29tcG9uZW50QmFzZVxuICBpbXBsZW1lbnRzXG4gICAgT25Jbml0LFxuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBPbkNoYW5nZXMsXG4gICAgRG9DaGVjayxcbiAgICBPbkRlc3Ryb3ksXG4gICAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gICAgSGFzVGFiSW5kZXgsXG4gICAgSW1wZGNGb3JtRmllbGRDb250cm9sPGFueT4sXG4gICAgQ2FuRGlzYWJsZSxcbiAgICBJQ2FuVXBkYXRlRXJyb3JTdGF0ZSxcbiAgICBJSGFzRXJyb3JTdGF0ZVxue1xuICAvKiogQGlnbm9yZSAqL1xuICBAQ29udGVudENoaWxkcmVuKFNlbGVjdE9wdGlvbkNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBwdWJsaWMgb3B0aW9ucyE6IFF1ZXJ5TGlzdDxTZWxlY3RPcHRpb25Db21wb25lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoTmdiRHJvcGRvd24pXG4gIHByb3RlY3RlZCBfbmdiRHJvcGRvd24hOiBOZ2JEcm9wZG93bjtcblxuICBAVmlld0NoaWxkKE5nYkRyb3Bkb3duTWVudSlcbiAgcHJvdGVjdGVkIF9uZ2JEcm9wZG93bk1lbnUhOiBOZ2JEcm9wZG93bk1lbnU7XG5cbiAgQFZpZXdDaGlsZCgndG9nZ2xlQnV0dG9uJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJvdGVjdGVkIF90b2dnbGVCdXR0b25SZWYhOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb3B0aW9uU2VsZWN0aW9uQ2hhbmdlczogT2JzZXJ2YWJsZTxTZWxlY3RPcHRpb25TZWxlY3Rpb25DaGFuZ2VFdmVudD4gPVxuICAgIGRlZmVyKCgpID0+IHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG5cbiAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBvcHRpb25zLmNoYW5nZXMucGlwZShcbiAgICAgICAgICBzdGFydFdpdGgob3B0aW9ucyksXG4gICAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgICBtZXJnZSguLi5vcHRpb25zLm1hcChvcHRpb24gPT4gb3B0aW9uLm9uU2VsZWN0aW9uQ2hhbmdlKSlcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLl9uZ1pvbmUub25TdGFibGUucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMub3B0aW9uU2VsZWN0aW9uQ2hhbmdlcylcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF91aWQgPSBgaW1wZGMtc2VsZWN0LSR7bmFub2lkKCl9YDtcbiAgcHJvdGVjdGVkIF9zZWxlY3Rpb25Nb2RlbCE6IFNlbGVjdE1vZGVsPFNlbGVjdE9wdGlvbkNvbXBvbmVudD47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbmdEZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBfcHJldmlvdXNDb250cm9sPzogQWJzdHJhY3RDb250cm9sIHwgbnVsbDtcbiAgcHJpdmF0ZSBfY29tcGFyZVdpdGggPSAobzE6IGFueSwgbzI6IGFueSkgPT4gbzEgPT09IG8yO1xuICBwcml2YXRlIF9jdmFPbkNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgcHJpdmF0ZSBfY3ZhT25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgLyoqXG4gICAqIFRoZSBwbGFjZWhvbGRlciB0ZXh0IHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgd2hlbiBubyBzZWxlY3Rpb24gaGFzIGJlZW4gbWFkZS5cbiAgICpcbiAgICogQGRlZmF1bHQgXFwtIFNlbGVjdCAtXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IHBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyO1xuICB9XG4gIHB1YmxpYyBzZXQgcGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gdmFsdWU7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG4gIHByaXZhdGUgX3BsYWNlaG9sZGVyID0gJy0gU2VsZWN0IC0nO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIHNldCByZXF1aXJlZG5lc3Mgb2YgY29udHJvbCBpbiBhIHRlbXBsYXRlLWJhc2VkIG1hbm5lcjtcbiAgICogbm90IG5lY2Vzc2FyeSB3aGVuIHVzaW5nIHRoZSBBbmd1bGFyIHJlYWN0aXZlIGZvcm1zIEFQSSBhbmQgYHJlcXVpcmVkYCB2YWxpZGF0b3IuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLl9yZXF1aXJlZCA/P1xuICAgICAgdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/Lmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKSA/P1xuICAgICAgZmFsc2VcbiAgICApO1xuICB9XG4gIHB1YmxpYyBzZXQgcmVxdWlyZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMuX3JlcXVpcmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5VmFsdWUodmFsdWUpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuICBwcml2YXRlIF9yZXF1aXJlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogU2V0cyB3aGV0aGVyIHRoZSBjb250cm9sIGlzIGEgc2luZ2xlLXNlbGVjdCBvciBtdWx0aXBsZS1zZWxlY3QuIENhbm5vdCBiZSBjaGFuZ2VkIGFmdGVyIGNvbXBvbmVudCBpbml0aWFsaXphdGlvbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgbXVsdGlwbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX211bHRpcGxlO1xuICB9XG4gIHB1YmxpYyBzZXQgbXVsdGlwbGUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIGlmICh0aGlzLl9zZWxlY3Rpb25Nb2RlbCkge1xuICAgICAgdGhyb3cgZ2V0SW1wZGNTZWxlY3REeW5hbWljTXVsdGlwbGVFcnJvcigpO1xuICAgIH1cblxuICAgIHRoaXMuX211bHRpcGxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5VmFsdWUodmFsdWUpO1xuICB9XG4gIHByb3RlY3RlZCBfbXVsdGlwbGUgPSBmYWxzZTtcblxuICAvKipcbiAgICogRnVuY3Rpb24gdXNlZCB0byBjb21wYXJlIG9wdGlvbiB2YWx1ZXMgd2l0aCBzZWxlY3RlZCB2YWx1ZXMuIFRoZSBmaXJzdCBhcmcgaXMgYVxuICAgKiB2YWx1ZSBmcm9tIGFuIG9wdGlvbiwgYW5kIHRoZSBzZWNvbmQgYXJnIGlzIGEgdmFsdWUgZnJvbSB0aGUgc2VsZWN0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJucyBCb29sZWFuIGluZGljYXRpbmcgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgY29tcGFyZVdpdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbXBhcmVXaXRoO1xuICB9XG4gIHB1YmxpYyBzZXQgY29tcGFyZVdpdGgoZm46IChhOiBhbnksIGI6IGFueSkgPT4gYm9vbGVhbikge1xuICAgIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IGdldEltcGRjU2VsZWN0Tm9uRnVuY3Rpb25WYWx1ZUVycm9yKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fY29tcGFyZVdpdGggPSBmbjtcblxuICAgIGlmICh0aGlzLl9zZWxlY3Rpb25Nb2RlbCkge1xuICAgICAgLy8gQ2hhbmdpbmcgdGhlIGNvbXBhcmF0b3IgZnVuY3Rpb24gbWVhbnMgdGhlIHZpc3VhbCBzZWxlY3Rpb24gbWF5IGhhdmUgY2hhbmdlZC5cbiAgICAgIHRoaXMuX2luaXRpYWxpemVTZWxlY3Rpb24oKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgb3ZlcnJpZGUgZXJyb3JTdGF0ZU1hdGNoZXIhOiBFcnJvclN0YXRlTWF0Y2hlcjtcblxuICAvKiogRXZlbnRzIGZpcmUgd2hlbiBzZWxlY3Rpb24gaGFzIGJlZW4gY2hhbmdlZCBieSB0aGUgdXNlci4gKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxTZWxlY3RDaGFuZ2VFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0Q2hhbmdlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIEV2ZW50cyBmaXJlIHdoZW4gcmF3IHZhbHVlIG9mIHNlbGVjdCBjaGFuZ2VzLiBNYWlubHkgZXhpc3RzIHRvIGhhbmRsZVxuICAgKiB0d28td2F5IGJpbmRpbmcgb2YgYHZhbHVlYCBpbnB1dCBwcm9wZXJ0eS5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBwdWJsaWMgZ2V0IGRyb3Bkb3duT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbmdiRHJvcGRvd24/LmlzT3BlbigpID8/IGZhbHNlO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBfbmdab25lOiBOZ1pvbmUsXG4gICAgQEF0dHJpYnV0ZSgndGFiaW5kZXgnKSB0YWJJbmRleDogc3RyaW5nLFxuICAgIF9kZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXI6IEVycm9yU3RhdGVNYXRjaGVyLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoSU1QRENfRk9STV9ST09UKSBfZm9ybVJvb3Q6IEltcGRjRm9ybVJvb3QsXG4gICAgQE9wdGlvbmFsKCkgX3BhcmVudEZvcm06IE5nRm9ybSxcbiAgICBAT3B0aW9uYWwoKSBfcGFyZW50Rm9ybUdyb3VwOiBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gICAgQFNlbGYoKSBAT3B0aW9uYWwoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbFxuICApIHtcbiAgICBzdXBlcihcbiAgICAgIF9kZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXIsXG4gICAgICBfZm9ybVJvb3QsXG4gICAgICBfcGFyZW50Rm9ybSxcbiAgICAgIF9wYXJlbnRGb3JtR3JvdXAsXG4gICAgICBuZ0NvbnRyb2xcbiAgICApO1xuXG4gICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLmlkID0gdGhpcy5pZDtcbiAgICB0aGlzLnRhYkluZGV4ID0gcGFyc2VJbnQodGFiSW5kZXgpIHx8IDA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5fc2VsZWN0aW9uTW9kZWwgfHwgdGhpcy5fc2VsZWN0aW9uTW9kZWwuaXNFbXB0eSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNwbGF5ZWRWYWx1ZSgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmVtcHR5KSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9tdWx0aXBsZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdGVkWzBdLmxhYmVsO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZC5tYXAob3B0ID0+IG9wdC5sYWJlbCkuam9pbignLCAnKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWQoKTogU2VsZWN0T3B0aW9uQ29tcG9uZW50IHwgU2VsZWN0T3B0aW9uQ29tcG9uZW50W10ge1xuICAgIHJldHVybiB0aGlzLm11bHRpcGxlXG4gICAgICA/IHRoaXMuX3NlbGVjdGlvbk1vZGVsPy5zZWxlY3RlZCB8fCBbXVxuICAgICAgOiB0aGlzLl9zZWxlY3Rpb25Nb2RlbD8uc2VsZWN0ZWRbMF07XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgZm9jdXMob3B0aW9ucz86IEZvY3VzT3B0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMuX3RvZ2dsZUJ1dHRvblJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKG9wdGlvbnMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9oYW5kbGVPcGVuQ2hhbmdlKGlzT3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChpc09wZW4pIHtcbiAgICAgIHRoaXMuX29uRm9jdXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fb25CbHVyKCk7XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgLyogQW5ndWxhciBsaWZlY3ljbGUgaG9va3MgKi9cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwgPSBuZXcgU2VsZWN0TW9kZWw8U2VsZWN0T3B0aW9uQ29tcG9uZW50PihcbiAgICAgIHRoaXMubXVsdGlwbGVcbiAgICApO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuY2hhbmdlZCRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9uZ0Rlc3Ryb3kpKVxuICAgICAgLnN1YnNjcmliZShjaGFuZ2VFdmVudCA9PiB7XG4gICAgICAgIGNoYW5nZUV2ZW50LmFkZGVkLmZvckVhY2gob3B0aW9uID0+IG9wdGlvbi5zZWxlY3QoKSk7XG4gICAgICAgIGNoYW5nZUV2ZW50LnJlbW92ZWQuZm9yRWFjaChvcHRpb24gPT4gb3B0aW9uLmRlc2VsZWN0KCkpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLm9wdGlvbnMuY2hhbmdlc1xuICAgICAgLnBpcGUoc3RhcnRXaXRoKG51bGwpLCB0YWtlVW50aWwodGhpcy5fbmdEZXN0cm95KSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9yZXNldE9wdGlvbnMoKTtcbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZVNlbGVjdGlvbigpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX25nYkRyb3Bkb3duTWVudS5tZW51SXRlbXMgPSB0aGlzLm9wdGlvbnM7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgIGNvbnN0IG5nQ29udHJvbCA9IHRoaXMubmdDb250cm9sO1xuXG4gICAgaWYgKCFuZ0NvbnRyb2wpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcHJldmlvdXNDb250cm9sICE9PSBuZ0NvbnRyb2wuY29udHJvbCkge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLl9wcmV2aW91c0NvbnRyb2wgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICBuZ0NvbnRyb2wuZGlzYWJsZWQgIT09IG51bGwgJiZcbiAgICAgICAgbmdDb250cm9sLmRpc2FibGVkICE9PSB0aGlzLmRpc2FibGVkXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IG5nQ29udHJvbD8uZGlzYWJsZWQ7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3ByZXZpb3VzQ29udHJvbCA9IG5nQ29udHJvbC5jb250cm9sO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlRXJyb3JTdGF0ZSgpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAvLyBNYW5hZ2luZyBkaXNhYmxlZCBzdGF0ZSBpcyBoYW5kbGVkIHZpYSB0aGUgYG1peGluRGlzYWJsZWRgIG1peGluL2dlbmVyYXRvciwgYnV0IHdlIHN0aWxsIG5lZWQgdG8gc2lnbmFsXG4gICAgLy8gdG8gdGhlIHBhcmVudCBmb3JtIGZpZWxkIHNvIGl0IGNhbiBydW4gY2hhbmdlIGRldGVjdGlvbiB3aGVuIGRpc2FibGVkIHN0YXRlIGlzIGNoYW5nZWQuXG4gICAgaWYgKGNoYW5nZXNbJ2Rpc2FibGVkJ10pIHtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fbmdEZXN0cm95Lm5leHQoKTtcbiAgICB0aGlzLl9uZ0Rlc3Ryb3kuY29tcGxldGUoKTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyogSW1wZGNGb3JtRmllbGRDb250cm9sICovXG4gIHB1YmxpYyByZWFkb25seSBjb250cm9sVHlwZTogc3RyaW5nID0gJ2ltcGRjLXNlbGVjdCc7XG5cbiAgcHVibGljIHJlYWRvbmx5IHN1cHBvcnRzQWZmaXhlczogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICBjb25zdCBoYXNBc3NpZ25lZCA9IHRoaXMuX2Fzc2lnblZhbHVlKHZhbHVlKTtcblxuICAgIGlmIChoYXNBc3NpZ25lZCkge1xuICAgICAgdGhpcy5fY3ZhT25DaGFuZ2UodmFsdWUpO1xuICAgIH1cbiAgfVxuICBwcm90ZWN0ZWQgX3ZhbHVlOiBhbnk7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9pZDtcbiAgfVxuICBwdWJsaWMgc2V0IGlkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pZCA9IHZhbHVlIHx8IHRoaXMuX3VpZDtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cbiAgcHJvdGVjdGVkIF9pZCE6IHN0cmluZztcblxuICBwdWJsaWMgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZvY3VzZWQgfHwgdGhpcy5kcm9wZG93bk9wZW47XG4gIH1cbiAgcHJvdGVjdGVkIF9mb2N1c2VkID0gZmFsc2U7XG5cbiAgLyogQ29udHJvbFZhbHVlQWNjZXNzb3IgKi9cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX2Fzc2lnblZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX2N2YU9uQ2hhbmdlID0gZm47XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHt9KTogdm9pZCB7XG4gICAgdGhpcy5fY3ZhT25Ub3VjaGVkID0gZm47XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgLyogSW50ZXJuYWxzICovXG5cbiAgcHJvdGVjdGVkIF9vbkZvY3VzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5fZm9jdXNlZCA9IHRydWU7XG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENhbGxzIHRoZSBDVkEgdG91Y2hlZCBjYWxsYmFjayBvbmx5IGlmIHRoZSBkcm9wZG93biBpcyBjbG9zZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgX29uQmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLl9mb2N1c2VkID0gZmFsc2U7XG5cbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMuZHJvcGRvd25PcGVuKSB7XG4gICAgICB0aGlzLl9jdmFPblRvdWNoZWQoKTtcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2luaXRpYWxpemVTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgLy8gV2UgZGVmZXIgdGhpcyB3b3JrIGludG8gYSBwcm9taXNlIGluIG9yZGVyIHRvIGF2b2lkIHRyaXBwaW5nIEFuZ3VsYXInc1xuICAgIC8vIFwiRXhwcmVzc2lvbiBoYXMgY2hhbmdlZCBhZnRlciBpdCB3YXMgY2hlY2tlZFwiIGVycm9yLlxuICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5uZ0NvbnRyb2wudmFsdWU7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3NldFNlbGVjdGlvbkJ5VmFsdWUodGhpcy5fdmFsdWUpO1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0U2VsZWN0aW9uQnlWYWx1ZSh2YWx1ZTogYW55IHwgYW55W10pOiB2b2lkIHtcbiAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5jbGVhcigpO1xuXG4gICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgdmFsdWUpIHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgdGhyb3cgZ2V0SW1wZGNTZWxlY3ROb25BcnJheVZhbHVlRXJyb3IoKTtcbiAgICAgIH1cblxuICAgICAgdmFsdWUuZm9yRWFjaChjdXJyZW50VmFsdWUgPT4gdGhpcy5fc2VsZWN0T3B0aW9uQnlWYWx1ZShjdXJyZW50VmFsdWUpKTtcbiAgICAgIHRoaXMuX3NvcnRWYWx1ZXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fc2VsZWN0T3B0aW9uQnlWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2VsZWN0T3B0aW9uQnlWYWx1ZSh2YWx1ZTogYW55KTogU2VsZWN0T3B0aW9uQ29tcG9uZW50IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBjb3JyZXNwb25kaW5nT3B0aW9uID0gdGhpcy5vcHRpb25zLmZpbmQoXG4gICAgICAob3B0aW9uOiBTZWxlY3RPcHRpb25Db21wb25lbnQpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGlvbk1vZGVsLmlzU2VsZWN0ZWQob3B0aW9uKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbi52YWx1ZSAhPSBudWxsICYmIHRoaXMuX2NvbXBhcmVXaXRoKG9wdGlvbi52YWx1ZSwgdmFsdWUpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUud2FybihlcnJvcik7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcblxuICAgIGlmIChjb3JyZXNwb25kaW5nT3B0aW9uKSB7XG4gICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3QoY29ycmVzcG9uZGluZ09wdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvcnJlc3BvbmRpbmdPcHRpb247XG4gIH1cblxuICAvKiogQXNzaWducyBhIHZhbHVlIHRvIHRoZSBzZWxlY3QgY29udHJvbC4gUmV0dXJucyBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdFxuICAgKiB0aGUgdmFsdWUgaGFzIGNoYW5nZWQuXG4gICAqL1xuICBwcml2YXRlIF9hc3NpZ25WYWx1ZShuZXdWYWx1ZTogYW55IHwgYW55W10pOiBib29sZWFuIHtcbiAgICBpZiAoXG4gICAgICBuZXdWYWx1ZSAhPT0gdGhpcy5fdmFsdWUgfHxcbiAgICAgICh0aGlzLl9tdWx0aXBsZSAmJiBBcnJheS5pc0FycmF5KG5ld1ZhbHVlKSlcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5fc2V0U2VsZWN0aW9uQnlWYWx1ZShuZXdWYWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3ZhbHVlID0gbmV3VmFsdWU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIF9yZXNldE9wdGlvbnMoKTogdm9pZCB7XG4gICAgY29uc3QgY2hhbmdlZE9yRGVzdHJveWVkID0gbWVyZ2UodGhpcy5vcHRpb25zLmNoYW5nZXMsIHRoaXMuX25nRGVzdHJveSk7XG5cbiAgICB0aGlzLm9wdGlvblNlbGVjdGlvbkNoYW5nZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbChjaGFuZ2VkT3JEZXN0cm95ZWQpKVxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgIHRoaXMuX29uU2VsZWN0KGV2ZW50LnNvdXJjZSwgZXZlbnQuaXNVc2VySW5wdXQpO1xuXG4gICAgICAgIGlmIChldmVudC5pc1VzZXJJbnB1dCAmJiAhdGhpcy5tdWx0aXBsZSAmJiB0aGlzLmRyb3Bkb3duT3Blbikge1xuICAgICAgICAgIHRoaXMuX25nYkRyb3Bkb3duLmNsb3NlKCk7XG4gICAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIG1lcmdlKC4uLnRoaXMub3B0aW9ucy5tYXAob3B0aW9uID0+IG9wdGlvbi5zdGF0ZUNoYW5nZXMpKVxuICAgICAgLnBpcGUodGFrZVVudGlsKGNoYW5nZWRPckRlc3Ryb3llZCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX29uU2VsZWN0KG9wdGlvbjogU2VsZWN0T3B0aW9uQ29tcG9uZW50LCBpc1VzZXJJbnB1dDogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IHdhc1NlbGVjdGVkID0gdGhpcy5fc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZChvcHRpb24pO1xuXG4gICAgaWYgKG9wdGlvbi52YWx1ZSA9PSBudWxsICYmICF0aGlzLl9tdWx0aXBsZSkge1xuICAgICAgb3B0aW9uLmRlc2VsZWN0KCk7XG4gICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5jbGVhcigpO1xuXG4gICAgICBpZiAodGhpcy52YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgIHRoaXMuX3Byb3BhZ2F0ZUNoYW5nZXMob3B0aW9uLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHdhc1NlbGVjdGVkICE9PSBvcHRpb24uc2VsZWN0ZWQpIHtcbiAgICAgICAgb3B0aW9uLnNlbGVjdGVkXG4gICAgICAgICAgPyB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3Qob3B0aW9uKVxuICAgICAgICAgIDogdGhpcy5fc2VsZWN0aW9uTW9kZWwuZGVzZWxlY3Qob3B0aW9uKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgdGhpcy5fc29ydFZhbHVlcygpO1xuXG4gICAgICAgIGlmIChpc1VzZXJJbnB1dCkge1xuICAgICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh3YXNTZWxlY3RlZCAhPT0gdGhpcy5fc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZChvcHRpb24pKSB7XG4gICAgICB0aGlzLl9wcm9wYWdhdGVDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc29ydFZhbHVlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucy50b0FycmF5KCk7XG5cbiAgICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMuaW5kZXhPZihhKSAtIG9wdGlvbnMuaW5kZXhPZihiKTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcHJvcGFnYXRlQ2hhbmdlcyhmYWxsYmFja1ZhbHVlPzogYW55KTogdm9pZCB7XG4gICAgbGV0IHZhbFRvRW1pdDogYW55ID0gbnVsbDtcblxuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICB2YWxUb0VtaXQgPSAodGhpcy5zZWxlY3RlZCBhcyBTZWxlY3RPcHRpb25Db21wb25lbnRbXSkubWFwKFxuICAgICAgICBvcHRpb24gPT4gb3B0aW9uLnZhbHVlXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWxUb0VtaXQgPSB0aGlzLnNlbGVjdGVkXG4gICAgICAgID8gKHRoaXMuc2VsZWN0ZWQgYXMgU2VsZWN0T3B0aW9uQ29tcG9uZW50KS52YWx1ZVxuICAgICAgICA6IGZhbGxiYWNrVmFsdWU7XG4gICAgfVxuXG4gICAgdGhpcy5fdmFsdWUgPSB2YWxUb0VtaXQ7XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHZhbFRvRW1pdCk7XG4gICAgdGhpcy5fY3ZhT25DaGFuZ2UodmFsVG9FbWl0KTtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuX2J1aWxkQ2hhbmdlRXZlbnQodmFsVG9FbWl0KSk7XG4gIH1cblxuICBwcml2YXRlIF9idWlsZENoYW5nZUV2ZW50KHZhbHVlOiBhbnkpOiBTZWxlY3RDaGFuZ2VFdmVudCB7XG4gICAgcmV0dXJuIG5ldyBTZWxlY3RDaGFuZ2VFdmVudCh0aGlzLCB2YWx1ZSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgbmdiRHJvcGRvd25cbiAgW2F1dG9DbG9zZV09XCJtdWx0aXBsZSA/ICdvdXRzaWRlJyA6IHRydWVcIlxuICBjb250YWluZXI9XCJib2R5XCJcbiAgZHJvcGRvd25DbGFzcz1cImltcGFydG5lci1oZXhcIlxuICAob3BlbkNoYW5nZSk9XCJfaGFuZGxlT3BlbkNoYW5nZSgkZXZlbnQpXCJcbiAgY2xhc3M9XCJ3LTEwMFwiPlxuICA8YnV0dG9uXG4gICAgI3RvZ2dsZUJ1dHRvblxuICAgIGNsYXNzPVwiaW1wZGMtc2VsZWN0LS10b2dnbGUgYnRuIGJvcmRlci0wIHRleHQtc3RhcnRcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIHJvbGU9XCJjb21ib2JveFwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAoZm9jdXMpPVwiX29uRm9jdXMoKVwiXG4gICAgKGJsdXIpPVwiX29uQmx1cigpXCJcbiAgICBuZ2JEcm9wZG93blRvZ2dsZT5cbiAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJlbXB0eVwiPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJpbXBkYy1zZWxlY3QtLXRleHQgaW1wZGMtc2VsZWN0LS1wbGFjZWhvbGRlclwiXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCJ0cnVlXCJcbiAgICAgICAgPnt7IHBsYWNlaG9sZGVyIH19PC9zcGFuXG4gICAgICA+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cImltcGRjLXNlbGVjdC0tdGV4dCBpbXBkYy1zZWxlY3QtLXZhbHVlLXRleHRcIlxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiZmFsc2VcIlxuICAgICAgICA+e3sgZGlzcGxheWVkVmFsdWUgfX08L3NwYW5cbiAgICAgID5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9idXR0b24+XG4gIDxkaXZcbiAgICBuZ2JEcm9wZG93bk1lbnVcbiAgICBjbGFzcz1cInctMTAwIGJnLXdoaXRlIHRleHQtZ3JheS02MDBcIlxuICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICB0YWJpbmRleD1cIi0xXCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -6,15 +6,15 @@ import { SelectOptionComponent } from './option/select-option.component';
|
|
|
6
6
|
import { SelectComponent } from './select.component';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
export class SelectModule {
|
|
9
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: SelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
10
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.1", ngImport: i0, type: SelectModule, declarations: [SelectOptionComponent, SelectComponent], imports: [CommonModule, NgbDropdownModule, IconModule], exports: [NgbDropdownModule,
|
|
11
|
+
IconModule,
|
|
12
|
+
SelectOptionComponent,
|
|
13
|
+
SelectComponent] }); }
|
|
14
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: SelectModule, imports: [CommonModule, NgbDropdownModule, IconModule, NgbDropdownModule,
|
|
15
|
+
IconModule] }); }
|
|
9
16
|
}
|
|
10
|
-
|
|
11
|
-
SelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: SelectModule, declarations: [SelectOptionComponent, SelectComponent], imports: [CommonModule, NgbDropdownModule, IconModule], exports: [NgbDropdownModule,
|
|
12
|
-
IconModule,
|
|
13
|
-
SelectOptionComponent,
|
|
14
|
-
SelectComponent] });
|
|
15
|
-
SelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SelectModule, imports: [CommonModule, NgbDropdownModule, IconModule, NgbDropdownModule,
|
|
16
|
-
IconModule] });
|
|
17
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SelectModule, decorators: [{
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: SelectModule, decorators: [{
|
|
18
18
|
type: NgModule,
|
|
19
19
|
args: [{
|
|
20
20
|
imports: [CommonModule, NgbDropdownModule, IconModule],
|
|
@@ -27,4 +27,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
27
27
|
]
|
|
28
28
|
}]
|
|
29
29
|
}] });
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvZm9ybS1maWVsZC9jb250cm9scy9zZWxlY3Qvc2VsZWN0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFZckQsTUFBTSxPQUFPLFlBQVk7OEdBQVosWUFBWTsrR0FBWixZQUFZLGlCQVJSLHFCQUFxQixFQUFFLGVBQWUsYUFEM0MsWUFBWSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsYUFHbkQsaUJBQWlCO1lBQ2pCLFVBQVU7WUFDVixxQkFBcUI7WUFDckIsZUFBZTsrR0FHTixZQUFZLFlBVGIsWUFBWSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFHbkQsaUJBQWlCO1lBQ2pCLFVBQVU7OzJGQUtELFlBQVk7a0JBVnhCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsQ0FBQztvQkFDdEQsWUFBWSxFQUFFLENBQUMscUJBQXFCLEVBQUUsZUFBZSxDQUFDO29CQUN0RCxPQUFPLEVBQUU7d0JBQ1AsaUJBQWlCO3dCQUNqQixVQUFVO3dCQUNWLHFCQUFxQjt3QkFDckIsZUFBZTtxQkFDaEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nYkRyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgSWNvbk1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL2ljb24nO1xuaW1wb3J0IHsgU2VsZWN0T3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9vcHRpb24vc2VsZWN0LW9wdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9zZWxlY3QuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTmdiRHJvcGRvd25Nb2R1bGUsIEljb25Nb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFtTZWxlY3RPcHRpb25Db21wb25lbnQsIFNlbGVjdENvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtcbiAgICBOZ2JEcm9wZG93bk1vZHVsZSxcbiAgICBJY29uTW9kdWxlLFxuICAgIFNlbGVjdE9wdGlvbkNvbXBvbmVudCxcbiAgICBTZWxlY3RDb21wb25lbnRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RNb2R1bGUge31cbiJdfQ==
|