@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,403 @@
|
|
|
1
|
+
import { Component, ContentChild, EventEmitter, Host, Input, Optional, Output } from '@angular/core';
|
|
2
|
+
import { get as getNestedValue, set as setNestedValue } from 'lodash';
|
|
3
|
+
import { debounceTime } from 'rxjs/operators';
|
|
4
|
+
import { DEBOUNCE_TIME, SORT_COLUMN_INDEX } from '../constants/index';
|
|
5
|
+
import { TableColumnType } from '../enumerations/index';
|
|
6
|
+
import { TableThemeHelper } from '../helpers';
|
|
7
|
+
import { ComponentTheme } from '../../../types';
|
|
8
|
+
import { PaginationComponent } from '../../pagination';
|
|
9
|
+
import { TableBulkActionsComponent } from '../components';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "@angular/common";
|
|
12
|
+
import * as i2 from "../../branding";
|
|
13
|
+
import * as i3 from "../../branding/branded.directive";
|
|
14
|
+
import * as i4 from "../../icon/icon.component";
|
|
15
|
+
import * as i5 from "../../form-field/controls/checkbox/checkbox.component";
|
|
16
|
+
import * as i6 from "../../form-field/controls/select/option/select-option.component";
|
|
17
|
+
import * as i7 from "../../form-field/controls/select/select.component";
|
|
18
|
+
import * as i8 from "../../form-field/controls/input/input.directive";
|
|
19
|
+
import * as i9 from "@angular/forms";
|
|
20
|
+
import * as i10 from "../../spinner/spinner.component";
|
|
21
|
+
import * as i11 from "../../badge/badge.component";
|
|
22
|
+
import * as i12 from "../directives/table.directive";
|
|
23
|
+
import * as i13 from "../components/column-heading/column-heading.component";
|
|
24
|
+
import * as i14 from "../directives/table-inject-component.directive";
|
|
25
|
+
import * as i15 from "../components/row-actions/row-actions.component";
|
|
26
|
+
/**
|
|
27
|
+
* The `TableComponent` (`<impdc-table`) is a data table component.
|
|
28
|
+
* To use, import `TableModule` from `@impartner/design-components`.
|
|
29
|
+
*/
|
|
30
|
+
export class TableComponent {
|
|
31
|
+
/**
|
|
32
|
+
* Whether individual rows can be selected. Will be `true` if explicitly set to `true` or `canSelectAllRows` is `true`.
|
|
33
|
+
*/
|
|
34
|
+
set canSelectRows(value) {
|
|
35
|
+
this._canSelectRows = value;
|
|
36
|
+
}
|
|
37
|
+
get canSelectRows() {
|
|
38
|
+
return this.canSelectAllRows || this._canSelectRows || !!this.bulkActions;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Whether all rows can be selected at once. Will be `true` if explicitly set to `true` or if `TableBulkActionsComponent` is content projected.
|
|
42
|
+
*/
|
|
43
|
+
set canSelectAllRows(value) {
|
|
44
|
+
this._canSelectAllRows = value;
|
|
45
|
+
}
|
|
46
|
+
get canSelectAllRows() {
|
|
47
|
+
return this._canSelectAllRows || !!this.bulkActions;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* An array of currently selected IDs from the `tableData` input. Array must be of type `(string | number)[]`.
|
|
51
|
+
*/
|
|
52
|
+
set selectedRowIds(value) {
|
|
53
|
+
this._selectedRowIds = [...value];
|
|
54
|
+
}
|
|
55
|
+
get selectedRowIds() {
|
|
56
|
+
return [...this._selectedRowIds];
|
|
57
|
+
}
|
|
58
|
+
/** @ignore */
|
|
59
|
+
get someSelected() {
|
|
60
|
+
return (!!this._selectedRowIds &&
|
|
61
|
+
this._selectedRowIds.length > 0 &&
|
|
62
|
+
!!this.tableData &&
|
|
63
|
+
this.tableData.length > 0 &&
|
|
64
|
+
this._selectedRowIds.length < this.tableData.length);
|
|
65
|
+
}
|
|
66
|
+
/** @ignore */
|
|
67
|
+
get tableSpan() {
|
|
68
|
+
return this.canSelectRows
|
|
69
|
+
? this.columnDefs.length + 1
|
|
70
|
+
: this.columnDefs.length;
|
|
71
|
+
}
|
|
72
|
+
constructor(_datePipe, _percentPipe, _decmialPipe, _changeDetectorRef, _branded) {
|
|
73
|
+
this._datePipe = _datePipe;
|
|
74
|
+
this._percentPipe = _percentPipe;
|
|
75
|
+
this._decmialPipe = _decmialPipe;
|
|
76
|
+
this._changeDetectorRef = _changeDetectorRef;
|
|
77
|
+
this._branded = _branded;
|
|
78
|
+
/**
|
|
79
|
+
* Whether the table data is currently being loaded. The `<impdc-spinner>` will show if data is loading.
|
|
80
|
+
*/
|
|
81
|
+
this.loading = false;
|
|
82
|
+
/**
|
|
83
|
+
* The visible columns of the table. Each `ITableColumnDef` defines properties regarding the display, formatting and interaction of the column's cells.
|
|
84
|
+
* Column/cell color precedence is:
|
|
85
|
+
* 1) `fieldColor` - allows an `ITableColumnDef` to delegate the responsibility of cell color to an `ITableRowItem` property.
|
|
86
|
+
* 2) `colorGetter`- allows an `ITableColumnDef` to delegate the responsibility of cell color to a function of the `ITableRowItem` determined by the developer.
|
|
87
|
+
* 3) `color` - a property of an `ITableColumnDef`.
|
|
88
|
+
*/
|
|
89
|
+
this.columnDefs = [];
|
|
90
|
+
/**
|
|
91
|
+
* Whether the table is striped.
|
|
92
|
+
*/
|
|
93
|
+
this.striped = true;
|
|
94
|
+
/**
|
|
95
|
+
* The placeholder text and empty value display text for `<impdc-select>` instances in cells with a `ITableColumnDef` `columnType` = `SingleSelect` or `MultiSelect`.
|
|
96
|
+
*/
|
|
97
|
+
this.selectPlaceholder = '';
|
|
98
|
+
/**
|
|
99
|
+
* The `columnDefs` index of the currently sorted column.
|
|
100
|
+
*/
|
|
101
|
+
this.sortColumnIndex = SORT_COLUMN_INDEX;
|
|
102
|
+
/**
|
|
103
|
+
* The direction of the currently sorted column.
|
|
104
|
+
*/
|
|
105
|
+
this.sortDirection = 'asc';
|
|
106
|
+
/**
|
|
107
|
+
* The table row data as an array of `ITableRowItem`.
|
|
108
|
+
*/
|
|
109
|
+
this.tableData = [];
|
|
110
|
+
/**
|
|
111
|
+
* Event emitted when one or multiple rows are selected. Emits `(string | number)[]` payload.
|
|
112
|
+
*/
|
|
113
|
+
this.rowSelect = new EventEmitter();
|
|
114
|
+
/**
|
|
115
|
+
* Event emitted when a column is sorted. Emits `ISortByPayload` payload.
|
|
116
|
+
*/
|
|
117
|
+
this.sortBy = new EventEmitter();
|
|
118
|
+
/**
|
|
119
|
+
* Event emitted when a row link is clicked. Emits `ITableEventPayload` payload.
|
|
120
|
+
*/
|
|
121
|
+
this.linkClick = new EventEmitter();
|
|
122
|
+
/**
|
|
123
|
+
* Event emitted when a row action is clicked. Emits an `ITableRowActionPayload` payload.
|
|
124
|
+
*/
|
|
125
|
+
this.rowActionClick = new EventEmitter();
|
|
126
|
+
/** @ignore */
|
|
127
|
+
this.paginationComponent = undefined;
|
|
128
|
+
/** @ignore */
|
|
129
|
+
this.bulkActions = undefined;
|
|
130
|
+
/**
|
|
131
|
+
* Event emitted when a row input value is changed. Emitted cells of `columnType` `SinglSelect`, `MultiSelect`, `Input`, `Boolean` or `Icon`.
|
|
132
|
+
* Not emitted if column definition property `disabled` = `true`. Emits `ITableEventPayload` payload.
|
|
133
|
+
*/
|
|
134
|
+
this.inputChange = new EventEmitter();
|
|
135
|
+
/** @ignore */
|
|
136
|
+
this.cellType = TableColumnType;
|
|
137
|
+
/** @ignore */
|
|
138
|
+
this.allSelected = true;
|
|
139
|
+
/** @ignore */
|
|
140
|
+
this.branded = false;
|
|
141
|
+
this._canSelectRows = false;
|
|
142
|
+
this._canSelectAllRows = false;
|
|
143
|
+
this._selectedRowIds = [];
|
|
144
|
+
this._inputChange = new EventEmitter();
|
|
145
|
+
this.branded = _branded ? true : false;
|
|
146
|
+
this._inputChange
|
|
147
|
+
.pipe(debounceTime(DEBOUNCE_TIME))
|
|
148
|
+
.subscribe(this.inputChange);
|
|
149
|
+
}
|
|
150
|
+
ngOnChanges(changes) {
|
|
151
|
+
if (changes['selectedRowIds'] || changes['tableData']) {
|
|
152
|
+
if (!this.tableData ||
|
|
153
|
+
!this.tableData.length ||
|
|
154
|
+
!this.selectedRowIds ||
|
|
155
|
+
!this.selectedRowIds.length) {
|
|
156
|
+
this.allSelected = false;
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
this.allSelected = this.selectedRowIds.length >= this.tableData.length;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
getMailToValue(columnIndex, currentRow) {
|
|
164
|
+
const { columnType, truncated: truncated } = this._getColumnDefByIndex(columnIndex);
|
|
165
|
+
let value = this._getValue(columnIndex, currentRow);
|
|
166
|
+
if (columnType !== TableColumnType.Email) {
|
|
167
|
+
return String(value);
|
|
168
|
+
}
|
|
169
|
+
value = value ? `mailto:${value}` : value;
|
|
170
|
+
return String(value);
|
|
171
|
+
}
|
|
172
|
+
getStringValue(columnIndex, currentRow) {
|
|
173
|
+
const value = this.getValue(columnIndex, currentRow);
|
|
174
|
+
if (Array.isArray(value)) {
|
|
175
|
+
return value.join(';');
|
|
176
|
+
}
|
|
177
|
+
return String(value);
|
|
178
|
+
}
|
|
179
|
+
getValue(columnIndex, currentRow) {
|
|
180
|
+
const { columnType, truncated: truncated } = this._getColumnDefByIndex(columnIndex);
|
|
181
|
+
let value = this._getValue(columnIndex, currentRow);
|
|
182
|
+
switch (columnType) {
|
|
183
|
+
case TableColumnType.Decimal: {
|
|
184
|
+
value = this._decmialPipe.transform(Number(value) || 0) || '';
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
187
|
+
case TableColumnType.Date: {
|
|
188
|
+
const date = new Date(String(value));
|
|
189
|
+
const validDate = date instanceof Date && !isNaN(date.getTime());
|
|
190
|
+
value = validDate
|
|
191
|
+
? this._datePipe.transform(date, 'MM/dd/yyyy') || ''
|
|
192
|
+
: String(value);
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
195
|
+
case TableColumnType.DateTime: {
|
|
196
|
+
const dateTime = new Date(String(value));
|
|
197
|
+
const validDateTime = dateTime instanceof Date && !isNaN(dateTime.getTime());
|
|
198
|
+
value = validDateTime
|
|
199
|
+
? this._datePipe.transform(dateTime, 'MM/dd/yyyy h:mm:ss a') || ''
|
|
200
|
+
: String(value);
|
|
201
|
+
break;
|
|
202
|
+
}
|
|
203
|
+
case TableColumnType.Link: {
|
|
204
|
+
value = String(value).replace(/(^\w+:|^)\/\//, '');
|
|
205
|
+
break;
|
|
206
|
+
}
|
|
207
|
+
case TableColumnType.Percentage: {
|
|
208
|
+
value = this._percentPipe.transform(Number(value) || 0) || '';
|
|
209
|
+
break;
|
|
210
|
+
}
|
|
211
|
+
case TableColumnType.Url: {
|
|
212
|
+
if (!/(http(s?)):\/\//i.test(String(value))) {
|
|
213
|
+
value = `https://${value}`;
|
|
214
|
+
}
|
|
215
|
+
break;
|
|
216
|
+
}
|
|
217
|
+
case TableColumnType.Text: {
|
|
218
|
+
if (Array.isArray(value)) {
|
|
219
|
+
value = value.join('; ');
|
|
220
|
+
}
|
|
221
|
+
if (!truncated) {
|
|
222
|
+
return value;
|
|
223
|
+
}
|
|
224
|
+
const truncateString = (string = '', maxLength = truncated) => string.length > maxLength
|
|
225
|
+
? `${string.substring(0, maxLength)}…`
|
|
226
|
+
: string;
|
|
227
|
+
!!truncated
|
|
228
|
+
? (value = truncateString(String(value), truncated))
|
|
229
|
+
: value;
|
|
230
|
+
break;
|
|
231
|
+
}
|
|
232
|
+
case TableColumnType.MultiSelect:
|
|
233
|
+
if (typeof value === 'string') {
|
|
234
|
+
value = value.split(';')?.map(v => v.trim()) || [];
|
|
235
|
+
}
|
|
236
|
+
return value;
|
|
237
|
+
}
|
|
238
|
+
return String(value);
|
|
239
|
+
}
|
|
240
|
+
getRawValue(columnIndex, currentRow) {
|
|
241
|
+
const { field } = this._getColumnDefByIndex(columnIndex);
|
|
242
|
+
if (!field) {
|
|
243
|
+
return '';
|
|
244
|
+
}
|
|
245
|
+
return currentRow[field] || '';
|
|
246
|
+
}
|
|
247
|
+
getCellColor(columnDefinition, item) {
|
|
248
|
+
return TableThemeHelper.getCellColor(columnDefinition, item);
|
|
249
|
+
}
|
|
250
|
+
getTheme(columnDefinition, item) {
|
|
251
|
+
return (TableThemeHelper.getTheme(columnDefinition, item) ||
|
|
252
|
+
ComponentTheme.Primary);
|
|
253
|
+
}
|
|
254
|
+
isSortedColumn(columnIndex) {
|
|
255
|
+
return columnIndex === this.sortColumnIndex;
|
|
256
|
+
}
|
|
257
|
+
isRowSelected(id) {
|
|
258
|
+
return this.selectedRowIds.includes(id);
|
|
259
|
+
}
|
|
260
|
+
handleSelectAll(event) {
|
|
261
|
+
if (!this.canSelectAllRows || !this.tableData) {
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
if (event.checked) {
|
|
265
|
+
this._selectedRowIds = this.tableData?.map(row => row.id) || [];
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
this._selectedRowIds = [];
|
|
269
|
+
}
|
|
270
|
+
this._selectedRowIds.sort();
|
|
271
|
+
this.allSelected = this.selectedRowIds.length >= this.tableData.length;
|
|
272
|
+
this.rowSelect.emit(this.selectedRowIds);
|
|
273
|
+
}
|
|
274
|
+
handleSort(columnIndex) {
|
|
275
|
+
if (columnIndex === this.sortColumnIndex) {
|
|
276
|
+
this.sortDirection = this.sortDirection === 'asc' ? 'desc' : 'asc';
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
this.sortColumnIndex = columnIndex;
|
|
280
|
+
this.sortDirection = 'asc';
|
|
281
|
+
}
|
|
282
|
+
const field = this._getColumnDefByIndex(columnIndex).field || '';
|
|
283
|
+
this.sortBy.emit({
|
|
284
|
+
columnIndex,
|
|
285
|
+
field,
|
|
286
|
+
direction: this.sortDirection
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
handleRowSelect(event, rowId) {
|
|
290
|
+
if (!this.canSelectRows) {
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
if (event.checked && !this._selectedRowIds.includes(rowId)) {
|
|
294
|
+
this._selectedRowIds.push(rowId);
|
|
295
|
+
}
|
|
296
|
+
else if (!event.checked && this._selectedRowIds.includes(rowId)) {
|
|
297
|
+
const idx = this._selectedRowIds.indexOf(rowId);
|
|
298
|
+
if (idx > -1) {
|
|
299
|
+
this._selectedRowIds.splice(idx, 1);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
if (this._selectedRowIds.length) {
|
|
303
|
+
this._selectedRowIds.sort();
|
|
304
|
+
}
|
|
305
|
+
this.allSelected = this.selectedRowIds.length >= this.tableData.length;
|
|
306
|
+
this.rowSelect.emit(this.selectedRowIds);
|
|
307
|
+
}
|
|
308
|
+
handleCellValueChange(columnIndex, rowIndex, value) {
|
|
309
|
+
const { field, columnType } = this._getColumnDefByIndex(columnIndex);
|
|
310
|
+
let currentValue = value;
|
|
311
|
+
if (columnType !== TableColumnType.Boolean && !Array.isArray(value)) {
|
|
312
|
+
currentValue = isNaN(Number(value)) ? value : Number(value);
|
|
313
|
+
}
|
|
314
|
+
const item = this.tableData[rowIndex];
|
|
315
|
+
setNestedValue(item, String(field), currentValue);
|
|
316
|
+
this._inputChange.emit({
|
|
317
|
+
columnIndex,
|
|
318
|
+
item,
|
|
319
|
+
value: currentValue
|
|
320
|
+
});
|
|
321
|
+
this._changeDetectorRef.detectChanges();
|
|
322
|
+
}
|
|
323
|
+
handleLinkClick(columnIndex, item) {
|
|
324
|
+
this.linkClick.emit({
|
|
325
|
+
item,
|
|
326
|
+
columnIndex
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
handleActionClick(columnIndex, item, actionApiName) {
|
|
330
|
+
this.rowActionClick.emit({
|
|
331
|
+
item,
|
|
332
|
+
columnIndex,
|
|
333
|
+
actionApiName
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
columnDefIsActions(columnDef) {
|
|
337
|
+
return columnDef.columnType === TableColumnType.Actions;
|
|
338
|
+
}
|
|
339
|
+
_getColumnDefByIndex(columnIndex) {
|
|
340
|
+
return this.columnDefs[columnIndex];
|
|
341
|
+
}
|
|
342
|
+
_getValue(columnIndex, currentRow) {
|
|
343
|
+
try {
|
|
344
|
+
const { field, valueGetter } = this._getColumnDefByIndex(columnIndex);
|
|
345
|
+
const value = valueGetter
|
|
346
|
+
? valueGetter(currentRow)
|
|
347
|
+
: getNestedValue(currentRow, String(field), '');
|
|
348
|
+
return value || '';
|
|
349
|
+
}
|
|
350
|
+
catch (e) {
|
|
351
|
+
return '';
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: TableComponent, deps: [{ token: i1.DatePipe }, { token: i1.PercentPipe }, { token: i1.DecimalPipe }, { token: i0.ChangeDetectorRef }, { token: i2.BrandedDirective, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
355
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.1", type: TableComponent, selector: "impdc-table", inputs: { loading: "loading", columnDefs: "columnDefs", striped: "striped", canSelectRows: "canSelectRows", canSelectAllRows: "canSelectAllRows", selectPlaceholder: "selectPlaceholder", sortColumnIndex: "sortColumnIndex", sortDirection: "sortDirection", tableData: "tableData", selectedRowIds: "selectedRowIds", customCellComponents: "customCellComponents" }, outputs: { rowSelect: "rowSelect", sortBy: "sortBy", linkClick: "linkClick", rowActionClick: "rowActionClick", inputChange: "inputChange" }, queries: [{ propertyName: "paginationComponent", first: true, predicate: PaginationComponent, descendants: true }, { propertyName: "bulkActions", first: true, predicate: TableBulkActionsComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (tableData) {\n<table impdcTable [striped]=\"striped\">\n <thead>\n @if (!!bulkActions) {\n <tr>\n <th [attr.colspan]=\"tableSpan\" scope=\"col\" class=\"bulk-action-column\">\n <ng-content select=\"impdc-table-bulk-actions\"></ng-content>\n <ng-content select=\"[impdcTableBulkActions]\"></ng-content>\n </th>\n </tr>\n }\n <tr>\n @if (canSelectRows) {\n <th\n scope=\"col\"\n [ngClass]=\"{\n 'heading-below-bulk-actions': !!bulkActions\n }\">\n @if (canSelectAllRows) {\n <div>\n <impdc-checkbox\n ngModel\n [checked]=\"allSelected\"\n [indeterminate]=\"someSelected\"\n (change)=\"handleSelectAll($event)\"></impdc-checkbox>\n </div>\n }\n </th>\n } @for (columnDef of columnDefs; track columnDef; let columnIndex =\n $index) {\n <th\n scope=\"col\"\n [ngClass]=\"{\n 'sorted-column': isSortedColumn(columnIndex),\n 'sortable-column': columnDef.sorted,\n 'heading-below-bulk-actions': !!bulkActions\n }\"\n (click)=\"handleSort(columnIndex)\">\n <impdc-column-heading\n [isSortable]=\"columnDef.sorted || false\"\n [columnIndex]=\"columnIndex\"\n [sortColumnIndex]=\"sortColumnIndex\"\n [direction]=\"sortDirection\"\n [text]=\"columnDef.title\"\n (sort)=\"handleSort($event)\">\n </impdc-column-heading>\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @if (loading) {\n <tr>\n <td [attr.colspan]=\"tableSpan\" class=\"data-loading\">\n <impdc-spinner></impdc-spinner>\n </td>\n </tr>\n } @else { @for (row of tableData; track row; let rowIndex = $index) {\n <tr>\n @if (canSelectRows) {\n <td>\n <div class=\"select-column\">\n <impdc-checkbox\n [ngModel]=\"isRowSelected(row.id)\"\n (change)=\"handleRowSelect($event, row.id)\"></impdc-checkbox>\n </div>\n </td>\n }\n <td\n *ngFor=\"let columnDef of columnDefs; index as colIndex; last as isLast\"\n [ngClass]=\"{\n 'col-no-padding': !!columnDef.noPadding,\n 'actions-column': columnDef.columnType === cellType.Actions\n }\">\n <div>\n @switch (columnDef.columnType) { @case (cellType.Badge) {\n <span>\n <impdc-badge\n [text]=\"getStringValue(colIndex, row)\"\n [theme]=\"getTheme(columnDef, row)\">\n </impdc-badge>\n </span>\n } @case (cellType.Link) {\n <span (click)=\"handleLinkClick(colIndex, row)\">\n @if (!branded) {\n <a>\n {{ getValue(colIndex, row) }}\n </a>\n } @else {\n <a impdcBranded>\n {{ getValue(colIndex, row) }}\n </a>\n }\n </span>\n } @case (cellType.Url) {\n <span>\n @if (!branded) {\n <a target=\"_blank\" [attr.href]=\"getValue(colIndex, row)\">\n {{ getValue(colIndex, row) }}\n </a>\n } @else {\n <a\n impdcBranded\n target=\"_blank\"\n [attr.href]=\"getValue(colIndex, row)\">\n {{ getValue(colIndex, row) }}\n </a>\n }\n </span>\n } @case (cellType.Email) {\n <span>\n @if (!branded) {\n <a\n target=\"_blank\"\n [attr.href]=\"'mailto:' + getValue(colIndex, row)\">\n {{ getValue(colIndex, row) }}\n </a>\n } @else {\n <a impdcBranded [attr.href]=\"getMailToValue(colIndex, row)\">\n {{ getValue(colIndex, row) }}\n </a>\n }\n </span>\n } @case (cellType.Input) {\n <span>\n <input\n impdcInput\n type=\"text\"\n class=\"{{ getCellColor(columnDef, row) }}\"\n [ngModel]=\"getValue(colIndex, row)\"\n (ngModelChange)=\"\n handleCellValueChange(colIndex, rowIndex, $event)\n \" />\n </span>\n } @case (cellType.Boolean) {\n <span>\n @if (columnDef.disabled && getValue(colIndex, row) === 'true') {\n <span\n impdc-icon\n name=\"check\"\n class=\"{{ getCellColor(columnDef, row) }}\"></span>\n } @else if (!columnDef.disabled) {\n <impdc-checkbox\n [checked]=\"getValue(colIndex, row) === 'true'\"\n [isSwitch]=\"true\"\n (change)=\"\n handleCellValueChange(colIndex, rowIndex, $event.checked)\n \"></impdc-checkbox>\n }\n </span>\n } @case (cellType.SingleSelect) {\n <span>\n <impdc-select\n [ngModel]=\"getValue(colIndex, row)\"\n [disabled]=\"columnDef.disabled || false\"\n [placeholder]=\"selectPlaceholder\"\n (selectionChange)=\"\n handleCellValueChange(colIndex, rowIndex, $event.value)\n \">\n @if (selectPlaceholder) {\n <impdc-select-option value [label]=\"selectPlaceholder\">\n </impdc-select-option>\n } @for (value of (columnDef.values || []); track value) {\n <impdc-select-option\n [value]=\"value.value\"\n [label]=\"value.label\"></impdc-select-option>\n }\n </impdc-select>\n </span>\n } @case (cellType.MultiSelect) {\n <span>\n <impdc-select\n [ngModel]=\"getValue(colIndex, row)\"\n [disabled]=\"columnDef.disabled || false\"\n [placeholder]=\"selectPlaceholder\"\n multiple=\"true\"\n (selectionChange)=\"\n handleCellValueChange(colIndex, rowIndex, $event.value)\n \">\n @for (value of (columnDef.values || []); track value) {\n <impdc-select-option\n [value]=\"value.value\"\n [label]=\"value.label\"></impdc-select-option>\n }\n </impdc-select>\n </span>\n } @case (cellType.CellRender) {\n <span class=\"{{ getCellColor(columnDef, row) }}\">\n <ng-template\n impdcTableInjectComponent\n [columnDef]=\"columnDef\"\n [rowItem]=\"row\"\n [customCellComponents]=\"customCellComponents || {}\"\n [value]=\"getRawValue(colIndex, row)\"></ng-template>\n </span>\n } @case (cellType.Icon) {\n <span>\n <span\n impdc-icon\n [name]=\"columnDef.iconName\"\n class=\"{{ getCellColor(columnDef, row) }}\"></span>\n </span>\n } @case (cellType.Actions) {\n <span>\n <!-- will always return 'true', but needed to satisfy the type engine -->\n @if (columnDefIsActions(columnDef)) {\n <impdc-row-actions\n [columnDef]=\"columnDef\"\n [rowItem]=\"row\"\n [lastColumn]=\"isLast\"\n (actionClick)=\"\n handleActionClick(colIndex, row, $event)\n \"></impdc-row-actions>\n }\n </span>\n } @default {\n <span class=\"{{ getCellColor(columnDef, row) }}\">\n {{ getValue(colIndex, row) }}\n </span>\n } }\n </div>\n </td>\n </tr>\n } @empty {\n <tr>\n <td [attr.colspan]=\"tableSpan\" class=\"no-data\">\n <ng-content select=\"[noData]\"></ng-content>\n </td>\n </tr>\n } }\n </tbody>\n <tfoot>\n @if (paginationComponent) {\n <tr>\n <td [attr.colspan]=\"tableSpan\">\n <ng-content\n select=\"impdc-pagination, div[impdc-pagination]\"></ng-content>\n </td>\n </tr>\n }\n </tfoot>\n</table>\n}\n", styles: [".bulk-action-container{display:flex;flex-direction:row;border:1px solid var(--impd-color-gray-200);border-top-left-radius:.6rem;border-top-right-radius:.6rem;border-bottom:0px}.bulk-action-container .bulk-action-checkbox{padding:1.6rem 2rem}.bulk-action-container .bulk-actions{display:flex;flex-direction:row;gap:.4rem}.col-no-padding{padding:0!important}.data-loading{height:var(--impd-size-80);vertical-align:middle;text-align:center}.no-data{vertical-align:middle;text-align:center}.select-row{display:flex;height:var(--impd-size-4);align-items:center;justify-items:end;border-radius:var(--impd-border-radius-default)}.heading-with-checkbox{padding-left:5px;padding-right:10px}.actions-column{width:.1%;white-space:nowrap}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.BrandedDirective, selector: "[impdcBranded]" }, { kind: "component", type: i4.IconComponent, selector: "impdc-icon, [impdc-icon]", inputs: ["name", "theme", "size"] }, { kind: "component", type: i5.CheckboxComponent, selector: "impdc-checkbox", inputs: ["tabIndex", "id", "label", "description", "isSwitch", "switchIcons", "inline", "checked", "indeterminate", "disabled", "errorStateMatcher", "required"], outputs: ["change", "indeterminateChange"], exportAs: ["impdcCheckControl"] }, { kind: "component", type: i6.SelectOptionComponent, selector: "impdc-select-option", inputs: ["value", "label", "id", "disabled"], outputs: ["onSelectionChange"] }, { kind: "component", type: i7.SelectComponent, selector: "impdc-select", inputs: ["disabled", "tabIndex", "placeholder", "required", "multiple", "compareWith", "errorStateMatcher", "value", "id"], outputs: ["selectionChange", "valueChange"], exportAs: ["impdcSelect"] }, { kind: "directive", type: i8.InputDirective, selector: "input[impdcInput], textarea[impdcInput], select[impdcNativeSelect]", inputs: ["disabled", "id", "type", "required", "readonly", "errorStateMatcher", "value"], exportAs: ["impdcInput"] }, { kind: "directive", type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i10.SpinnerComponent, selector: "impdc-spinner, div[impdc-spinner]", inputs: ["accessibilityText"] }, { kind: "component", type: i11.BadgeComponent, selector: "impdc-badge, [impdc-badge]", inputs: ["text", "icon", "theme", "size", "hideBg", "rounded", "dismissable"], outputs: ["dismiss"] }, { kind: "directive", type: i12.TableDirective, selector: "table[impdcTable]", inputs: ["striped"] }, { kind: "component", type: i13.ColumnHeadingComponent, selector: "impdc-column-heading", inputs: ["isSortable", "columnIndex", "sortColumnIndex", "direction", "text"], outputs: ["sort"] }, { kind: "directive", type: i14.TableInjectComponentDirective, selector: "[impdcTableInjectComponent]", inputs: ["columnDef", "value", "rowItem", "customCellComponents"] }, { kind: "component", type: i15.RowActionsComponent, selector: "impdc-row-actions", inputs: ["columnDef", "rowItem", "lastColumn"], outputs: ["actionClick"] }] }); }
|
|
356
|
+
}
|
|
357
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: TableComponent, decorators: [{
|
|
358
|
+
type: Component,
|
|
359
|
+
args: [{ selector: 'impdc-table', template: "@if (tableData) {\n<table impdcTable [striped]=\"striped\">\n <thead>\n @if (!!bulkActions) {\n <tr>\n <th [attr.colspan]=\"tableSpan\" scope=\"col\" class=\"bulk-action-column\">\n <ng-content select=\"impdc-table-bulk-actions\"></ng-content>\n <ng-content select=\"[impdcTableBulkActions]\"></ng-content>\n </th>\n </tr>\n }\n <tr>\n @if (canSelectRows) {\n <th\n scope=\"col\"\n [ngClass]=\"{\n 'heading-below-bulk-actions': !!bulkActions\n }\">\n @if (canSelectAllRows) {\n <div>\n <impdc-checkbox\n ngModel\n [checked]=\"allSelected\"\n [indeterminate]=\"someSelected\"\n (change)=\"handleSelectAll($event)\"></impdc-checkbox>\n </div>\n }\n </th>\n } @for (columnDef of columnDefs; track columnDef; let columnIndex =\n $index) {\n <th\n scope=\"col\"\n [ngClass]=\"{\n 'sorted-column': isSortedColumn(columnIndex),\n 'sortable-column': columnDef.sorted,\n 'heading-below-bulk-actions': !!bulkActions\n }\"\n (click)=\"handleSort(columnIndex)\">\n <impdc-column-heading\n [isSortable]=\"columnDef.sorted || false\"\n [columnIndex]=\"columnIndex\"\n [sortColumnIndex]=\"sortColumnIndex\"\n [direction]=\"sortDirection\"\n [text]=\"columnDef.title\"\n (sort)=\"handleSort($event)\">\n </impdc-column-heading>\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @if (loading) {\n <tr>\n <td [attr.colspan]=\"tableSpan\" class=\"data-loading\">\n <impdc-spinner></impdc-spinner>\n </td>\n </tr>\n } @else { @for (row of tableData; track row; let rowIndex = $index) {\n <tr>\n @if (canSelectRows) {\n <td>\n <div class=\"select-column\">\n <impdc-checkbox\n [ngModel]=\"isRowSelected(row.id)\"\n (change)=\"handleRowSelect($event, row.id)\"></impdc-checkbox>\n </div>\n </td>\n }\n <td\n *ngFor=\"let columnDef of columnDefs; index as colIndex; last as isLast\"\n [ngClass]=\"{\n 'col-no-padding': !!columnDef.noPadding,\n 'actions-column': columnDef.columnType === cellType.Actions\n }\">\n <div>\n @switch (columnDef.columnType) { @case (cellType.Badge) {\n <span>\n <impdc-badge\n [text]=\"getStringValue(colIndex, row)\"\n [theme]=\"getTheme(columnDef, row)\">\n </impdc-badge>\n </span>\n } @case (cellType.Link) {\n <span (click)=\"handleLinkClick(colIndex, row)\">\n @if (!branded) {\n <a>\n {{ getValue(colIndex, row) }}\n </a>\n } @else {\n <a impdcBranded>\n {{ getValue(colIndex, row) }}\n </a>\n }\n </span>\n } @case (cellType.Url) {\n <span>\n @if (!branded) {\n <a target=\"_blank\" [attr.href]=\"getValue(colIndex, row)\">\n {{ getValue(colIndex, row) }}\n </a>\n } @else {\n <a\n impdcBranded\n target=\"_blank\"\n [attr.href]=\"getValue(colIndex, row)\">\n {{ getValue(colIndex, row) }}\n </a>\n }\n </span>\n } @case (cellType.Email) {\n <span>\n @if (!branded) {\n <a\n target=\"_blank\"\n [attr.href]=\"'mailto:' + getValue(colIndex, row)\">\n {{ getValue(colIndex, row) }}\n </a>\n } @else {\n <a impdcBranded [attr.href]=\"getMailToValue(colIndex, row)\">\n {{ getValue(colIndex, row) }}\n </a>\n }\n </span>\n } @case (cellType.Input) {\n <span>\n <input\n impdcInput\n type=\"text\"\n class=\"{{ getCellColor(columnDef, row) }}\"\n [ngModel]=\"getValue(colIndex, row)\"\n (ngModelChange)=\"\n handleCellValueChange(colIndex, rowIndex, $event)\n \" />\n </span>\n } @case (cellType.Boolean) {\n <span>\n @if (columnDef.disabled && getValue(colIndex, row) === 'true') {\n <span\n impdc-icon\n name=\"check\"\n class=\"{{ getCellColor(columnDef, row) }}\"></span>\n } @else if (!columnDef.disabled) {\n <impdc-checkbox\n [checked]=\"getValue(colIndex, row) === 'true'\"\n [isSwitch]=\"true\"\n (change)=\"\n handleCellValueChange(colIndex, rowIndex, $event.checked)\n \"></impdc-checkbox>\n }\n </span>\n } @case (cellType.SingleSelect) {\n <span>\n <impdc-select\n [ngModel]=\"getValue(colIndex, row)\"\n [disabled]=\"columnDef.disabled || false\"\n [placeholder]=\"selectPlaceholder\"\n (selectionChange)=\"\n handleCellValueChange(colIndex, rowIndex, $event.value)\n \">\n @if (selectPlaceholder) {\n <impdc-select-option value [label]=\"selectPlaceholder\">\n </impdc-select-option>\n } @for (value of (columnDef.values || []); track value) {\n <impdc-select-option\n [value]=\"value.value\"\n [label]=\"value.label\"></impdc-select-option>\n }\n </impdc-select>\n </span>\n } @case (cellType.MultiSelect) {\n <span>\n <impdc-select\n [ngModel]=\"getValue(colIndex, row)\"\n [disabled]=\"columnDef.disabled || false\"\n [placeholder]=\"selectPlaceholder\"\n multiple=\"true\"\n (selectionChange)=\"\n handleCellValueChange(colIndex, rowIndex, $event.value)\n \">\n @for (value of (columnDef.values || []); track value) {\n <impdc-select-option\n [value]=\"value.value\"\n [label]=\"value.label\"></impdc-select-option>\n }\n </impdc-select>\n </span>\n } @case (cellType.CellRender) {\n <span class=\"{{ getCellColor(columnDef, row) }}\">\n <ng-template\n impdcTableInjectComponent\n [columnDef]=\"columnDef\"\n [rowItem]=\"row\"\n [customCellComponents]=\"customCellComponents || {}\"\n [value]=\"getRawValue(colIndex, row)\"></ng-template>\n </span>\n } @case (cellType.Icon) {\n <span>\n <span\n impdc-icon\n [name]=\"columnDef.iconName\"\n class=\"{{ getCellColor(columnDef, row) }}\"></span>\n </span>\n } @case (cellType.Actions) {\n <span>\n <!-- will always return 'true', but needed to satisfy the type engine -->\n @if (columnDefIsActions(columnDef)) {\n <impdc-row-actions\n [columnDef]=\"columnDef\"\n [rowItem]=\"row\"\n [lastColumn]=\"isLast\"\n (actionClick)=\"\n handleActionClick(colIndex, row, $event)\n \"></impdc-row-actions>\n }\n </span>\n } @default {\n <span class=\"{{ getCellColor(columnDef, row) }}\">\n {{ getValue(colIndex, row) }}\n </span>\n } }\n </div>\n </td>\n </tr>\n } @empty {\n <tr>\n <td [attr.colspan]=\"tableSpan\" class=\"no-data\">\n <ng-content select=\"[noData]\"></ng-content>\n </td>\n </tr>\n } }\n </tbody>\n <tfoot>\n @if (paginationComponent) {\n <tr>\n <td [attr.colspan]=\"tableSpan\">\n <ng-content\n select=\"impdc-pagination, div[impdc-pagination]\"></ng-content>\n </td>\n </tr>\n }\n </tfoot>\n</table>\n}\n", styles: [".bulk-action-container{display:flex;flex-direction:row;border:1px solid var(--impd-color-gray-200);border-top-left-radius:.6rem;border-top-right-radius:.6rem;border-bottom:0px}.bulk-action-container .bulk-action-checkbox{padding:1.6rem 2rem}.bulk-action-container .bulk-actions{display:flex;flex-direction:row;gap:.4rem}.col-no-padding{padding:0!important}.data-loading{height:var(--impd-size-80);vertical-align:middle;text-align:center}.no-data{vertical-align:middle;text-align:center}.select-row{display:flex;height:var(--impd-size-4);align-items:center;justify-items:end;border-radius:var(--impd-border-radius-default)}.heading-with-checkbox{padding-left:5px;padding-right:10px}.actions-column{width:.1%;white-space:nowrap}\n"] }]
|
|
360
|
+
}], ctorParameters: () => [{ type: i1.DatePipe }, { type: i1.PercentPipe }, { type: i1.DecimalPipe }, { type: i0.ChangeDetectorRef }, { type: i2.BrandedDirective, decorators: [{
|
|
361
|
+
type: Optional
|
|
362
|
+
}, {
|
|
363
|
+
type: Host
|
|
364
|
+
}] }], propDecorators: { loading: [{
|
|
365
|
+
type: Input
|
|
366
|
+
}], columnDefs: [{
|
|
367
|
+
type: Input
|
|
368
|
+
}], striped: [{
|
|
369
|
+
type: Input
|
|
370
|
+
}], canSelectRows: [{
|
|
371
|
+
type: Input
|
|
372
|
+
}], canSelectAllRows: [{
|
|
373
|
+
type: Input
|
|
374
|
+
}], selectPlaceholder: [{
|
|
375
|
+
type: Input
|
|
376
|
+
}], sortColumnIndex: [{
|
|
377
|
+
type: Input
|
|
378
|
+
}], sortDirection: [{
|
|
379
|
+
type: Input
|
|
380
|
+
}], tableData: [{
|
|
381
|
+
type: Input
|
|
382
|
+
}], selectedRowIds: [{
|
|
383
|
+
type: Input
|
|
384
|
+
}], customCellComponents: [{
|
|
385
|
+
type: Input
|
|
386
|
+
}], rowSelect: [{
|
|
387
|
+
type: Output
|
|
388
|
+
}], sortBy: [{
|
|
389
|
+
type: Output
|
|
390
|
+
}], linkClick: [{
|
|
391
|
+
type: Output
|
|
392
|
+
}], rowActionClick: [{
|
|
393
|
+
type: Output
|
|
394
|
+
}], paginationComponent: [{
|
|
395
|
+
type: ContentChild,
|
|
396
|
+
args: [PaginationComponent]
|
|
397
|
+
}], bulkActions: [{
|
|
398
|
+
type: ContentChild,
|
|
399
|
+
args: [TableBulkActionsComponent]
|
|
400
|
+
}], inputChange: [{
|
|
401
|
+
type: Output
|
|
402
|
+
}] } });
|
|
403
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi90YWJsZS9jb250YWluZXJzL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvdGFibGUvY29udGFpbmVycy90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osSUFBSSxFQUNKLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxHQUFHLElBQUksY0FBYyxFQUFFLEdBQUcsSUFBSSxjQUFjLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFheEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTFEOzs7R0FHRztBQU1ILE1BQU0sT0FBTyxjQUFjO0lBb0J6Qjs7T0FFRztJQUNILElBQW9CLGFBQWEsQ0FBQyxLQUFjO1FBQzlDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQzlCLENB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SUFBSSxFQUFFLENBQUM7U0FDcEI7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE9BQU8sRUFBRSxDQUFDO1NBQ1g7SUFDSCxDQUFDOzhHQXZiVSxjQUFjO2tHQUFkLGNBQWMseWxCQXFHWCxtQkFBbUIsOEVBSW5CLHlCQUF5QixxRUN0SnpDLG9oUUFtUEE7OzJGRHRNYSxjQUFjO2tCQUwxQixTQUFTOytCQUNFLGFBQWE7OzBCQXlKcEIsUUFBUTs7MEJBQUksSUFBSTt5Q0FqSkgsT0FBTztzQkFBdEIsS0FBSztnQkFTVSxVQUFVO3NCQUF6QixLQUFLO2dCQUtVLE9BQU87c0JBQXRCLEtBQUs7Z0JBS2MsYUFBYTtzQkFBaEMsS0FBSztnQkFXSyxnQkFBZ0I7c0JBRDFCLEtBQUs7Z0JBWVUsaUJBQWlCO3NCQUFoQyxLQUFLO2dCQUtVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBS1UsYUFBYTtzQkFBNUIsS0FBSztnQkFLVSxTQUFTO3NCQUF4QixLQUFLO2dCQU1LLGNBQWM7c0JBRHhCLEtBQUs7Z0JBWVUsb0JBQW9CO3NCQUFuQyxLQUFLO2dCQUtvQixTQUFTO3NCQUFsQyxNQUFNO2dCQUttQixNQUFNO3NCQUEvQixNQUFNO2dCQUttQixTQUFTO3NCQUFsQyxNQUFNO2dCQUttQixjQUFjO3NCQUF2QyxNQUFNO2dCQUtBLG1CQUFtQjtzQkFEekIsWUFBWTt1QkFBQyxtQkFBbUI7Z0JBSzFCLFdBQVc7c0JBRGpCLFlBQVk7dUJBQUMseUJBQXlCO2dCQU9iLFdBQVc7c0JBQXBDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlUGlwZSwgRGVjaW1hbFBpcGUsIFBlcmNlbnRQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0IGFzIGdldE5lc3RlZFZhbHVlLCBzZXQgYXMgc2V0TmVzdGVkVmFsdWUgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBERUJPVU5DRV9USU1FLCBTT1JUX0NPTFVNTl9JTkRFWCB9IGZyb20gJy4uL2NvbnN0YW50cy9pbmRleCc7XG5pbXBvcnQgeyBUYWJsZUNvbHVtblR5cGUgfSBmcm9tICcuLi9lbnVtZXJhdGlvbnMvaW5kZXgnO1xuaW1wb3J0IHtcbiAgSUN1c3RvbUNlbGxSZW5kZXJlckNvbXBvbmVudHMsXG4gIElTb3J0QnlQYXlsb2FkLFxuICBJVGFibGVBY3Rpb25zQ29sdW1uRGVmLFxuICBJVGFibGVFdmVudFBheWxvYWQsXG4gIElUYWJsZVJvd0FjdGlvblBheWxvYWQsXG4gIElUYWJsZVJvd0l0ZW0sXG4gIElUYWJsZVJvd0l0ZW1WYWx1ZSxcbiAgSVRhYmxlUm93SXRlbVZhbHVlVHlwZXMsXG4gIFRhYmxlQ29sdW1uRGVmXG59IGZyb20gJy4uL2ludGVyZmFjZXMvaW5kZXgnO1xuaW1wb3J0IHsgQ2hlY2tib3hDaGFuZ2VFdmVudCB9IGZyb20gJy4uLy4uL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgVGFibGVUaGVtZUhlbHBlciB9IGZyb20gJy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgQ29tcG9uZW50VGhlbWUgfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBCcmFuZGVkRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vYnJhbmRpbmcnO1xuaW1wb3J0IHsgUGFnaW5hdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BhZ2luYXRpb24nO1xuaW1wb3J0IHsgVGFibGVCdWxrQWN0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMnO1xuXG4vKipcbiAqIFRoZSBgVGFibGVDb21wb25lbnRgIChgPGltcGRjLXRhYmxlYCkgaXMgYSBkYXRhIHRhYmxlIGNvbXBvbmVudC5cbiAqIFRvIHVzZSwgaW1wb3J0IGBUYWJsZU1vZHVsZWAgZnJvbSBgQGltcGFydG5lci9kZXNpZ24tY29tcG9uZW50c2AuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ltcGRjLXRhYmxlJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSB0YWJsZSBkYXRhIGlzIGN1cnJlbnRseSBiZWluZyBsb2FkZWQuIFRoZSBgPGltcGRjLXNwaW5uZXI+YCB3aWxsIHNob3cgaWYgZGF0YSBpcyBsb2FkaW5nLlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGxvYWRpbmcgPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIHZpc2libGUgY29sdW1ucyBvZiB0aGUgdGFibGUuICBFYWNoIGBJVGFibGVDb2x1bW5EZWZgIGRlZmluZXMgcHJvcGVydGllcyByZWdhcmRpbmcgdGhlIGRpc3BsYXksIGZvcm1hdHRpbmcgYW5kIGludGVyYWN0aW9uIG9mIHRoZSBjb2x1bW4ncyBjZWxscy5cbiAgICogQ29sdW1uL2NlbGwgY29sb3IgcHJlY2VkZW5jZSBpczpcbiAgICogMSkgYGZpZWxkQ29sb3JgIC0gYWxsb3dzIGFuIGBJVGFibGVDb2x1bW5EZWZgIHRvIGRlbGVnYXRlIHRoZSByZXNwb25zaWJpbGl0eSBvZiBjZWxsIGNvbG9yIHRvIGFuIGBJVGFibGVSb3dJdGVtYCBwcm9wZXJ0eS5cbiAgICogMikgYGNvbG9yR2V0dGVyYC0gYWxsb3dzIGFuIGBJVGFibGVDb2x1bW5EZWZgIHRvIGRlbGVnYXRlIHRoZSByZXNwb25zaWJpbGl0eSBvZiBjZWxsIGNvbG9yIHRvIGEgZnVuY3Rpb24gb2YgdGhlIGBJVGFibGVSb3dJdGVtYCBkZXRlcm1pbmVkIGJ5IHRoZSBkZXZlbG9wZXIuXG4gICAqIDMpIGBjb2xvcmAgLSBhIHByb3BlcnR5IG9mIGFuIGBJVGFibGVDb2x1bW5EZWZgLlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGNvbHVtbkRlZnM6IFRhYmxlQ29sdW1uRGVmW10gPSBbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgdGFibGUgaXMgc3RyaXBlZC5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBzdHJpcGVkID0gdHJ1ZTtcblxuICAvKipcbiAgICogV2hldGhlciBpbmRpdmlkdWFsIHJvd3MgY2FuIGJlIHNlbGVjdGVkLiBXaWxsIGJlIGB0cnVlYCBpZiBleHBsaWNpdGx5IHNldCB0byBgdHJ1ZWAgb3IgYGNhblNlbGVjdEFsbFJvd3NgIGlzIGB0cnVlYC5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgY2FuU2VsZWN0Um93cyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2NhblNlbGVjdFJvd3MgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgZ2V0IGNhblNlbGVjdFJvd3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2FuU2VsZWN0QWxsUm93cyB8fCB0aGlzLl9jYW5TZWxlY3RSb3dzIHx8ICEhdGhpcy5idWxrQWN0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGFsbCByb3dzIGNhbiBiZSBzZWxlY3RlZCBhdCBvbmNlLiBXaWxsIGJlIGB0cnVlYCBpZiBleHBsaWNpdGx5IHNldCB0byBgdHJ1ZWAgb3IgaWYgYFRhYmxlQnVsa0FjdGlvbnNDb21wb25lbnRgIGlzIGNvbnRlbnQgcHJvamVjdGVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBjYW5TZWxlY3RBbGxSb3dzKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fY2FuU2VsZWN0QWxsUm93cyA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBjYW5TZWxlY3RBbGxSb3dzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9jYW5TZWxlY3RBbGxSb3dzIHx8ICEhdGhpcy5idWxrQWN0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcGxhY2Vob2xkZXIgdGV4dCBhbmQgZW1wdHkgdmFsdWUgZGlzcGxheSB0ZXh0IGZvciBgPGltcGRjLXNlbGVjdD5gIGluc3RhbmNlcyBpbiBjZWxscyB3aXRoIGEgYElUYWJsZUNvbHVtbkRlZmAgYGNvbHVtblR5cGVgID0gYFNpbmdsZVNlbGVjdGAgb3IgYE11bHRpU2VsZWN0YC5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3RQbGFjZWhvbGRlciA9ICcnO1xuXG4gIC8qKlxuICAgKiBUaGUgYGNvbHVtbkRlZnNgIGluZGV4IG9mIHRoZSBjdXJyZW50bHkgc29ydGVkIGNvbHVtbi5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBzb3J0Q29sdW1uSW5kZXggPSBTT1JUX0NPTFVNTl9JTkRFWDtcblxuICAvKipcbiAgICogVGhlIGRpcmVjdGlvbiBvZiB0aGUgY3VycmVudGx5IHNvcnRlZCBjb2x1bW4uXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgc29ydERpcmVjdGlvbjogJ2FzYycgfCAnZGVzYycgPSAnYXNjJztcblxuICAvKipcbiAgICogVGhlIHRhYmxlIHJvdyBkYXRhIGFzIGFuIGFycmF5IG9mIGBJVGFibGVSb3dJdGVtYC5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyB0YWJsZURhdGE6IElUYWJsZVJvd0l0ZW1bXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBjdXJyZW50bHkgc2VsZWN0ZWQgSURzIGZyb20gdGhlIGB0YWJsZURhdGFgIGlucHV0LiAgQXJyYXkgbXVzdCBiZSBvZiB0eXBlIGAoc3RyaW5nIHwgbnVtYmVyKVtdYC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2VsZWN0ZWRSb3dJZHModmFsdWU6IChzdHJpbmcgfCBudW1iZXIpW10pIHtcbiAgICB0aGlzLl9zZWxlY3RlZFJvd0lkcyA9IFsuLi52YWx1ZV07XG4gIH1cbiAgcHVibGljIGdldCBzZWxlY3RlZFJvd0lkcygpOiAoc3RyaW5nIHwgbnVtYmVyKVtdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuX3NlbGVjdGVkUm93SWRzXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcmVnaXN0ZXJlZCBjdXN0b20gY2VsbCByZW5kZXJlciBjb21wb25lbnRzIGF2YWlsYWJsZSB0byBiZSB1c2VkIGluIHRoZSB0YWJsZSBpbnN0YW5jZS5cbiAgICogRm9yIGEgZ2l2ZW4gYElUYWJsZUNvbHVtbkRlZmAgaW4gdGhlIGBjb2x1bW5EZWZzYCBpbnB1dCwgdGhlIGBjZWxsUmVuZGVyZXJDb21wb25lbnRgIHByb3BlcnR5IHNob3VsZCBiZSBzZXQgdG8gdGhlIGtleSBvZiB0aGUgcmVnaXN0ZXJlZCBjb21wb25lbnQgaW4gdGhpcyBpbnB1dC5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21DZWxsQ29tcG9uZW50cz86IElDdXN0b21DZWxsUmVuZGVyZXJDb21wb25lbnRzO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gb25lIG9yIG11bHRpcGxlIHJvd3MgYXJlIHNlbGVjdGVkLiBFbWl0cyBgKHN0cmluZyB8IG51bWJlcilbXWAgcGF5bG9hZC5cbiAgICovXG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgcm93U2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjwoc3RyaW5nIHwgbnVtYmVyKVtdPigpO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gYSBjb2x1bW4gaXMgc29ydGVkLiBFbWl0cyBgSVNvcnRCeVBheWxvYWRgIHBheWxvYWQuXG4gICAqL1xuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IHNvcnRCeSA9IG5ldyBFdmVudEVtaXR0ZXI8SVNvcnRCeVBheWxvYWQ+KCk7XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhIHJvdyBsaW5rIGlzIGNsaWNrZWQuIEVtaXRzIGBJVGFibGVFdmVudFBheWxvYWRgIHBheWxvYWQuXG4gICAqL1xuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IGxpbmtDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8SVRhYmxlRXZlbnRQYXlsb2FkPigpO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gYSByb3cgYWN0aW9uIGlzIGNsaWNrZWQuIEVtaXRzIGFuIGBJVGFibGVSb3dBY3Rpb25QYXlsb2FkYCBwYXlsb2FkLlxuICAgKi9cbiAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSByb3dBY3Rpb25DbGljayA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxJVGFibGVSb3dBY3Rpb25QYXlsb2FkPigpO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIEBDb250ZW50Q2hpbGQoUGFnaW5hdGlvbkNvbXBvbmVudClcbiAgcHVibGljIHBhZ2luYXRpb25Db21wb25lbnQ/OiBQYWdpbmF0aW9uQ29tcG9uZW50ID0gdW5kZWZpbmVkO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIEBDb250ZW50Q2hpbGQoVGFibGVCdWxrQWN0aW9uc0NvbXBvbmVudClcbiAgcHVibGljIGJ1bGtBY3Rpb25zPzogVGFibGVCdWxrQWN0aW9uc0NvbXBvbmVudCA9IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGEgcm93IGlucHV0IHZhbHVlIGlzIGNoYW5nZWQuIEVtaXR0ZWQgY2VsbHMgb2YgYGNvbHVtblR5cGVgIGBTaW5nbFNlbGVjdGAsIGBNdWx0aVNlbGVjdGAsIGBJbnB1dGAsIGBCb29sZWFuYCBvciBgSWNvbmAuXG4gICAqIE5vdCBlbWl0dGVkIGlmIGNvbHVtbiBkZWZpbml0aW9uIHByb3BlcnR5IGBkaXNhYmxlZGAgPSBgdHJ1ZWAuIEVtaXRzIGBJVGFibGVFdmVudFBheWxvYWRgIHBheWxvYWQuXG4gICAqL1xuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IGlucHV0Q2hhbmdlID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPElUYWJsZUV2ZW50UGF5bG9hZD4oKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2VsbFR5cGUgPSBUYWJsZUNvbHVtblR5cGU7XG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyBhbGxTZWxlY3RlZCA9IHRydWU7XG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyBnZXQgc29tZVNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAhIXRoaXMuX3NlbGVjdGVkUm93SWRzICYmXG4gICAgICB0aGlzLl9zZWxlY3RlZFJvd0lkcy5sZW5ndGggPiAwICYmXG4gICAgICAhIXRoaXMudGFibGVEYXRhICYmXG4gICAgICB0aGlzLnRhYmxlRGF0YS5sZW5ndGggPiAwICYmXG4gICAgICB0aGlzLl9zZWxlY3RlZFJvd0lkcy5sZW5ndGggPCB0aGlzLnRhYmxlRGF0YS5sZW5ndGhcbiAgICApO1xuICB9XG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyByZWFkb25seSBicmFuZGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIGdldCB0YWJsZVNwYW4oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jYW5TZWxlY3RSb3dzXG4gICAgICA/IHRoaXMuY29sdW1uRGVmcy5sZW5ndGggKyAxXG4gICAgICA6IHRoaXMuY29sdW1uRGVmcy5sZW5ndGg7XG4gIH1cblxuICBwcml2YXRlIF9jYW5TZWxlY3RSb3dzID0gZmFsc2U7XG4gIHByaXZhdGUgX2NhblNlbGVjdEFsbFJvd3MgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc2VsZWN0ZWRSb3dJZHM6IChzdHJpbmcgfCBudW1iZXIpW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5wdXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPElUYWJsZUV2ZW50UGF5bG9hZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kYXRlUGlwZTogRGF0ZVBpcGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcGVyY2VudFBpcGU6IFBlcmNlbnRQaXBlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2RlY21pYWxQaXBlOiBEZWNpbWFsUGlwZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQE9wdGlvbmFsKCkgQEhvc3QoKSBwcml2YXRlIF9icmFuZGVkOiBCcmFuZGVkRGlyZWN0aXZlXG4gICkge1xuICAgIHRoaXMuYnJhbmRlZCA9IF9icmFuZGVkID8gdHJ1ZSA6IGZhbHNlO1xuICAgIHRoaXMuX2lucHV0Q2hhbmdlXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoREVCT1VOQ0VfVElNRSkpXG4gICAgICAuc3Vic2NyaWJlKHRoaXMuaW5wdXRDaGFuZ2UpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydzZWxlY3RlZFJvd0lkcyddIHx8IGNoYW5nZXNbJ3RhYmxlRGF0YSddKSB7XG4gICAgICBpZiAoXG4gICAgICAgICF0aGlzLnRhYmxlRGF0YSB8fFxuICAgICAgICAhdGhpcy50YWJsZURhdGEubGVuZ3RoIHx8XG4gICAgICAgICF0aGlzLnNlbGVjdGVkUm93SWRzIHx8XG4gICAgICAgICF0aGlzLnNlbGVjdGVkUm93SWRzLmxlbmd0aFxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuYWxsU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYWxsU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkUm93SWRzLmxlbmd0aCA+PSB0aGlzLnRhYmxlRGF0YS5sZW5ndGg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldE1haWxUb1ZhbHVlKFxuICAgIGNvbHVtbkluZGV4OiBudW1iZXIsXG4gICAgY3VycmVudFJvdzogSVRhYmxlUm93SXRlbVxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IHsgY29sdW1uVHlwZSwgdHJ1bmNhdGVkOiB0cnVuY2F0ZWQgfSA9XG4gICAgICB0aGlzLl9nZXRDb2x1bW5EZWZCeUluZGV4KGNvbHVtbkluZGV4KTtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLl9nZXRWYWx1ZShjb2x1bW5JbmRleCwgY3VycmVudFJvdyk7XG5cbiAgICBpZiAoY29sdW1uVHlwZSAhPT0gVGFibGVDb2x1bW5UeXBlLkVtYWlsKSB7XG4gICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICB9XG4gICAgdmFsdWUgPSB2YWx1ZSA/IGBtYWlsdG86JHt2YWx1ZX1gIDogdmFsdWU7XG5cbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTdHJpbmdWYWx1ZShcbiAgICBjb2x1bW5JbmRleDogbnVtYmVyLFxuICAgIGN1cnJlbnRSb3c6IElUYWJsZVJvd0l0ZW1cbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWUoY29sdW1uSW5kZXgsIGN1cnJlbnRSb3cpO1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWUuam9pbignOycpO1xuICAgIH1cblxuICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlKFxuICAgIGNvbHVtbkluZGV4OiBudW1iZXIsXG4gICAgY3VycmVudFJvdzogSVRhYmxlUm93SXRlbVxuICApOiBzdHJpbmcgfCBzdHJpbmdbXSB7XG4gICAgY29uc3QgeyBjb2x1bW5UeXBlLCB0cnVuY2F0ZWQ6IHRydW5jYXRlZCB9ID1cbiAgICAgIHRoaXMuX2dldENvbHVtbkRlZkJ5SW5kZXgoY29sdW1uSW5kZXgpO1xuICAgIGxldCB2YWx1ZSA9IHRoaXMuX2dldFZhbHVlKGNvbHVtbkluZGV4LCBjdXJyZW50Um93KTtcblxuICAgIHN3aXRjaCAoY29sdW1uVHlwZSkge1xuICAgICAgY2FzZSBUYWJsZUNvbHVtblR5cGUuRGVjaW1hbDoge1xuICAgICAgICB2YWx1ZSA9IHRoaXMuX2RlY21pYWxQaXBlLnRyYW5zZm9ybShOdW1iZXIodmFsdWUpIHx8IDApIHx8ICcnO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgVGFibGVDb2x1bW5UeXBlLkRhdGU6IHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKFN0cmluZyh2YWx1ZSkpO1xuICAgICAgICBjb25zdCB2YWxpZERhdGUgPSBkYXRlIGluc3RhbmNlb2YgRGF0ZSAmJiAhaXNOYU4oZGF0ZS5nZXRUaW1lKCkpO1xuICAgICAgICB2YWx1ZSA9IHZhbGlkRGF0ZVxuICAgICAgICAgID8gdGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGUsICdNTS9kZC95eXl5JykgfHwgJydcbiAgICAgICAgICA6IFN0cmluZyh2YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBUYWJsZUNvbHVtblR5cGUuRGF0ZVRpbWU6IHtcbiAgICAgICAgY29uc3QgZGF0ZVRpbWUgPSBuZXcgRGF0ZShTdHJpbmcodmFsdWUpKTtcbiAgICAgICAgY29uc3QgdmFsaWREYXRlVGltZSA9XG4gICAgICAgICAgZGF0ZVRpbWUgaW5zdGFuY2VvZiBEYXRlICYmICFpc05hTihkYXRlVGltZS5nZXRUaW1lKCkpO1xuICAgICAgICB2YWx1ZSA9IHZhbGlkRGF0ZVRpbWVcbiAgICAgICAgICA/IHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShkYXRlVGltZSwgJ01NL2RkL3l5eXkgaDptbTpzcyBhJykgfHwgJydcbiAgICAgICAgICA6IFN0cmluZyh2YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBUYWJsZUNvbHVtblR5cGUuTGluazoge1xuICAgICAgICB2YWx1ZSA9IFN0cmluZyh2YWx1ZSkucmVwbGFjZSgvKF5cXHcrOnxeKVxcL1xcLy8sICcnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIFRhYmxlQ29sdW1uVHlwZS5QZXJjZW50YWdlOiB7XG4gICAgICAgIHZhbHVlID0gdGhpcy5fcGVyY2VudFBpcGUudHJhbnNmb3JtKE51bWJlcih2YWx1ZSkgfHwgMCkgfHwgJyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBUYWJsZUNvbHVtblR5cGUuVXJsOiB7XG4gICAgICAgIGlmICghLyhodHRwKHM/KSk6XFwvXFwvL2kudGVzdChTdHJpbmcodmFsdWUpKSkge1xuICAgICAgICAgIHZhbHVlID0gYGh0dHBzOi8vJHt2YWx1ZX1gO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBUYWJsZUNvbHVtblR5cGUuVGV4dDoge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmpvaW4oJzsgJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRydW5jYXRlZCkge1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRydW5jYXRlU3RyaW5nID0gKHN0cmluZyA9ICcnLCBtYXhMZW5ndGggPSB0cnVuY2F0ZWQpID0+XG4gICAgICAgICAgc3RyaW5nLmxlbmd0aCA+IG1heExlbmd0aFxuICAgICAgICAgICAgPyBgJHtzdHJpbmcuc3Vic3RyaW5nKDAsIG1heExlbmd0aCl94oCmYFxuICAgICAgICAgICAgOiBzdHJpbmc7XG5cbiAgICAgICAgISF0cnVuY2F0ZWRcbiAgICAgICAgICA/ICh2YWx1ZSA9IHRydW5jYXRlU3RyaW5nKFN0cmluZyh2YWx1ZSksIHRydW5jYXRlZCkpXG4gICAgICAgICAgOiB2YWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIFRhYmxlQ29sdW1uVHlwZS5NdWx0aVNlbGVjdDpcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnNwbGl0KCc7Jyk/Lm1hcCh2ID0+IHYudHJpbSgpKSB8fCBbXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UmF3VmFsdWUoXG4gICAgY29sdW1uSW5kZXg6IG51bWJlcixcbiAgICBjdXJyZW50Um93OiBJVGFibGVSb3dJdGVtXG4gICk6IElUYWJsZVJvd0l0ZW1WYWx1ZVR5cGVzPElUYWJsZVJvd0l0ZW1WYWx1ZT4ge1xuICAgIGNvbnN0IHsgZmllbGQgfSA9IHRoaXMuX2dldENvbHVtbkRlZkJ5SW5kZXgoY29sdW1uSW5kZXgpO1xuXG4gICAgaWYgKCFmaWVsZCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHJldHVybiBjdXJyZW50Um93W2ZpZWxkXSB8fCAnJztcbiAgfVxuXG4gIHB1YmxpYyBnZXRDZWxsQ29sb3IoXG4gICAgY29sdW1uRGVmaW5pdGlvbjogVGFibGVDb2x1bW5EZWYsXG4gICAgaXRlbTogSVRhYmxlUm93SXRlbVxuICApOiBzdHJpbmcge1xuICAgIHJldHVybiBUYWJsZVRoZW1lSGVscGVyLmdldENlbGxDb2xvcihjb2x1bW5EZWZpbml0aW9uLCBpdGVtKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUaGVtZShcbiAgICBjb2x1bW5EZWZpbml0aW9uOiBUYWJsZUNvbHVtbkRlZixcbiAgICBpdGVtOiBJVGFibGVSb3dJdGVtXG4gICk6IENvbXBvbmVudFRoZW1lIHtcbiAgICByZXR1cm4gKFxuICAgICAgVGFibGVUaGVtZUhlbHBlci5nZXRUaGVtZShjb2x1bW5EZWZpbml0aW9uLCBpdGVtKSB8fFxuICAgICAgQ29tcG9uZW50VGhlbWUuUHJpbWFyeVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgaXNTb3J0ZWRDb2x1bW4oY29sdW1uSW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjb2x1bW5JbmRleCA9PT0gdGhpcy5zb3J0Q29sdW1uSW5kZXg7XG4gIH1cblxuICBwdWJsaWMgaXNSb3dTZWxlY3RlZChpZDogc3RyaW5nIHwgbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRSb3dJZHMuaW5jbHVkZXMoaWQpO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZVNlbGVjdEFsbChldmVudDogQ2hlY2tib3hDaGFuZ2VFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jYW5TZWxlY3RBbGxSb3dzIHx8ICF0aGlzLnRhYmxlRGF0YSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChldmVudC5jaGVja2VkKSB7XG4gICAgICB0aGlzLl9zZWxlY3RlZFJvd0lkcyA9IHRoaXMudGFibGVEYXRhPy5tYXAocm93ID0+IHJvdy5pZCkgfHwgW107XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3NlbGVjdGVkUm93SWRzID0gW107XG4gICAgfVxuXG4gICAgdGhpcy5fc2VsZWN0ZWRSb3dJZHMuc29ydCgpO1xuICAgIHRoaXMuYWxsU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkUm93SWRzLmxlbmd0aCA+PSB0aGlzLnRhYmxlRGF0YS5sZW5ndGg7XG5cbiAgICB0aGlzLnJvd1NlbGVjdC5lbWl0KHRoaXMuc2VsZWN0ZWRSb3dJZHMpO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZVNvcnQoY29sdW1uSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChjb2x1bW5JbmRleCA9PT0gdGhpcy5zb3J0Q29sdW1uSW5kZXgpIHtcbiAgICAgIHRoaXMuc29ydERpcmVjdGlvbiA9IHRoaXMuc29ydERpcmVjdGlvbiA9PT0gJ2FzYycgPyAnZGVzYycgOiAnYXNjJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zb3J0Q29sdW1uSW5kZXggPSBjb2x1bW5JbmRleDtcbiAgICAgIHRoaXMuc29ydERpcmVjdGlvbiA9ICdhc2MnO1xuICAgIH1cblxuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5fZ2V0Q29sdW1uRGVmQnlJbmRleChjb2x1bW5JbmRleCkuZmllbGQgfHwgJyc7XG5cbiAgICB0aGlzLnNvcnRCeS5lbWl0KHtcbiAgICAgIGNvbHVtbkluZGV4LFxuICAgICAgZmllbGQsXG4gICAgICBkaXJlY3Rpb246IHRoaXMuc29ydERpcmVjdGlvblxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZVJvd1NlbGVjdChcbiAgICBldmVudDogQ2hlY2tib3hDaGFuZ2VFdmVudCxcbiAgICByb3dJZDogbnVtYmVyIHwgc3RyaW5nXG4gICk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jYW5TZWxlY3RSb3dzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LmNoZWNrZWQgJiYgIXRoaXMuX3NlbGVjdGVkUm93SWRzLmluY2x1ZGVzKHJvd0lkKSkge1xuICAgICAgdGhpcy5fc2VsZWN0ZWRSb3dJZHMucHVzaChyb3dJZCk7XG4gICAgfSBlbHNlIGlmICghZXZlbnQuY2hlY2tlZCAmJiB0aGlzLl9zZWxlY3RlZFJvd0lkcy5pbmNsdWRlcyhyb3dJZCkpIHtcbiAgICAgIGNvbnN0IGlkeCA9IHRoaXMuX3NlbGVjdGVkUm93SWRzLmluZGV4T2Yocm93SWQpO1xuICAgICAgaWYgKGlkeCA+IC0xKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkUm93SWRzLnNwbGljZShpZHgsIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9zZWxlY3RlZFJvd0lkcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGVkUm93SWRzLnNvcnQoKTtcbiAgICB9XG5cbiAgICB0aGlzLmFsbFNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZFJvd0lkcy5sZW5ndGggPj0gdGhpcy50YWJsZURhdGEubGVuZ3RoO1xuICAgIHRoaXMucm93U2VsZWN0LmVtaXQodGhpcy5zZWxlY3RlZFJvd0lkcyk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlQ2VsbFZhbHVlQ2hhbmdlKFxuICAgIGNvbHVtbkluZGV4OiBudW1iZXIsXG4gICAgcm93SW5kZXg6IG51bWJlcixcbiAgICB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IHN0cmluZ1tdXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHsgZmllbGQsIGNvbHVtblR5cGUgfSA9IHRoaXMuX2dldENvbHVtbkRlZkJ5SW5kZXgoY29sdW1uSW5kZXgpO1xuICAgIGxldCBjdXJyZW50VmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBzdHJpbmdbXSA9IHZhbHVlO1xuXG4gICAgaWYgKGNvbHVtblR5cGUgIT09IFRhYmxlQ29sdW1uVHlwZS5Cb29sZWFuICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgY3VycmVudFZhbHVlID0gaXNOYU4oTnVtYmVyKHZhbHVlKSkgPyB2YWx1ZSA6IE51bWJlcih2YWx1ZSk7XG4gICAgfVxuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnRhYmxlRGF0YVtyb3dJbmRleF07XG5cbiAgICBzZXROZXN0ZWRWYWx1ZShpdGVtLCBTdHJpbmcoZmllbGQpLCBjdXJyZW50VmFsdWUpO1xuXG4gICAgdGhpcy5faW5wdXRDaGFuZ2UuZW1pdCh7XG4gICAgICBjb2x1bW5JbmRleCxcbiAgICAgIGl0ZW0sXG4gICAgICB2YWx1ZTogY3VycmVudFZhbHVlXG4gICAgfSk7XG5cbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTGlua0NsaWNrKGNvbHVtbkluZGV4OiBudW1iZXIsIGl0ZW06IElUYWJsZVJvd0l0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLmxpbmtDbGljay5lbWl0KHtcbiAgICAgIGl0ZW0sXG4gICAgICBjb2x1bW5JbmRleFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUFjdGlvbkNsaWNrKFxuICAgIGNvbHVtbkluZGV4OiBudW1iZXIsXG4gICAgaXRlbTogSVRhYmxlUm93SXRlbSxcbiAgICBhY3Rpb25BcGlOYW1lOiBzdHJpbmdcbiAgKSB7XG4gICAgdGhpcy5yb3dBY3Rpb25DbGljay5lbWl0KHtcbiAgICAgIGl0ZW0sXG4gICAgICBjb2x1bW5JbmRleCxcbiAgICAgIGFjdGlvbkFwaU5hbWVcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb2x1bW5EZWZJc0FjdGlvbnMoXG4gICAgY29sdW1uRGVmOiBUYWJsZUNvbHVtbkRlZjxhbnk+XG4gICk6IGNvbHVtbkRlZiBpcyBJVGFibGVBY3Rpb25zQ29sdW1uRGVmPGFueT4ge1xuICAgIHJldHVybiBjb2x1bW5EZWYuY29sdW1uVHlwZSA9PT0gVGFibGVDb2x1bW5UeXBlLkFjdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIF9nZXRDb2x1bW5EZWZCeUluZGV4KGNvbHVtbkluZGV4OiBudW1iZXIpOiBUYWJsZUNvbHVtbkRlZiB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uRGVmc1tjb2x1bW5JbmRleF07XG4gIH1cblxuICBwcml2YXRlIF9nZXRWYWx1ZShcbiAgICBjb2x1bW5JbmRleDogbnVtYmVyLFxuICAgIGN1cnJlbnRSb3c6IElUYWJsZVJvd0l0ZW1cbiAgKTogc3RyaW5nIHwgc3RyaW5nW10ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IGZpZWxkLCB2YWx1ZUdldHRlciB9ID0gdGhpcy5fZ2V0Q29sdW1uRGVmQnlJbmRleChjb2x1bW5JbmRleCk7XG5cbiAgICAgIGNvbnN0IHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSA9IHZhbHVlR2V0dGVyXG4gICAgICAgID8gdmFsdWVHZXR0ZXIoY3VycmVudFJvdylcbiAgICAgICAgOiAoZ2V0TmVzdGVkVmFsdWUoY3VycmVudFJvdywgU3RyaW5nKGZpZWxkKSwgJycpIGFzIHN0cmluZyB8IHN0cmluZ1tdKTtcblxuICAgICAgcmV0dXJuIHZhbHVlIHx8ICcnO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cbn1cbiIsIkBpZiAodGFibGVEYXRhKSB7XG48dGFibGUgaW1wZGNUYWJsZSBbc3RyaXBlZF09XCJzdHJpcGVkXCI+XG4gIDx0aGVhZD5cbiAgICBAaWYgKCEhYnVsa0FjdGlvbnMpIHtcbiAgICA8dHI+XG4gICAgICA8dGggW2F0dHIuY29sc3Bhbl09XCJ0YWJsZVNwYW5cIiBzY29wZT1cImNvbFwiIGNsYXNzPVwiYnVsay1hY3Rpb24tY29sdW1uXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImltcGRjLXRhYmxlLWJ1bGstYWN0aW9uc1wiPjwvbmctY29udGVudD5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2ltcGRjVGFibGVCdWxrQWN0aW9uc11cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L3RoPlxuICAgIDwvdHI+XG4gICAgfVxuICAgIDx0cj5cbiAgICAgIEBpZiAoY2FuU2VsZWN0Um93cykge1xuICAgICAgPHRoXG4gICAgICAgIHNjb3BlPVwiY29sXCJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICdoZWFkaW5nLWJlbG93LWJ1bGstYWN0aW9ucyc6ICEhYnVsa0FjdGlvbnNcbiAgICAgICAgfVwiPlxuICAgICAgICBAaWYgKGNhblNlbGVjdEFsbFJvd3MpIHtcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8aW1wZGMtY2hlY2tib3hcbiAgICAgICAgICAgIG5nTW9kZWxcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImFsbFNlbGVjdGVkXCJcbiAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInNvbWVTZWxlY3RlZFwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cImhhbmRsZVNlbGVjdEFsbCgkZXZlbnQpXCI+PC9pbXBkYy1jaGVja2JveD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvdGg+XG4gICAgICB9IEBmb3IgKGNvbHVtbkRlZiBvZiBjb2x1bW5EZWZzOyB0cmFjayBjb2x1bW5EZWY7IGxldCBjb2x1bW5JbmRleCA9XG4gICAgICAkaW5kZXgpIHtcbiAgICAgIDx0aFxuICAgICAgICBzY29wZT1cImNvbFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAnc29ydGVkLWNvbHVtbic6IGlzU29ydGVkQ29sdW1uKGNvbHVtbkluZGV4KSxcbiAgICAgICAgICAnc29ydGFibGUtY29sdW1uJzogY29sdW1uRGVmLnNvcnRlZCxcbiAgICAgICAgICAnaGVhZGluZy1iZWxvdy1idWxrLWFjdGlvbnMnOiAhIWJ1bGtBY3Rpb25zXG4gICAgICAgIH1cIlxuICAgICAgICAoY2xpY2spPVwiaGFuZGxlU29ydChjb2x1bW5JbmRleClcIj5cbiAgICAgICAgPGltcGRjLWNvbHVtbi1oZWFkaW5nXG4gICAgICAgICAgW2lzU29ydGFibGVdPVwiY29sdW1uRGVmLnNvcnRlZCB8fCBmYWxzZVwiXG4gICAgICAgICAgW2NvbHVtbkluZGV4XT1cImNvbHVtbkluZGV4XCJcbiAgICAgICAgICBbc29ydENvbHVtbkluZGV4XT1cInNvcnRDb2x1bW5JbmRleFwiXG4gICAgICAgICAgW2RpcmVjdGlvbl09XCJzb3J0RGlyZWN0aW9uXCJcbiAgICAgICAgICBbdGV4dF09XCJjb2x1bW5EZWYudGl0bGVcIlxuICAgICAgICAgIChzb3J0KT1cImhhbmRsZVNvcnQoJGV2ZW50KVwiPlxuICAgICAgICA8L2ltcGRjLWNvbHVtbi1oZWFkaW5nPlxuICAgICAgPC90aD5cbiAgICAgIH1cbiAgICA8L3RyPlxuICA8L3RoZWFkPlxuICA8dGJvZHk+XG4gICAgQGlmIChsb2FkaW5nKSB7XG4gICAgPHRyPlxuICAgICAgPHRkIFthdHRyLmNvbHNwYW5dPVwidGFibGVTcGFuXCIgY2xhc3M9XCJkYXRhLWxvYWRpbmdcIj5cbiAgICAgICAgPGltcGRjLXNwaW5uZXI+PC9pbXBkYy1zcGlubmVyPlxuICAgICAgPC90ZD5cbiAgICA8L3RyPlxuICAgIH0gQGVsc2UgeyBAZm9yIChyb3cgb2YgdGFibGVEYXRhOyB0cmFjayByb3c7IGxldCByb3dJbmRleCA9ICRpbmRleCkge1xuICAgIDx0cj5cbiAgICAgIEBpZiAoY2FuU2VsZWN0Um93cykge1xuICAgICAgPHRkPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0LWNvbHVtblwiPlxuICAgICAgICAgIDxpbXBkYy1jaGVja2JveFxuICAgICAgICAgICAgW25nTW9kZWxdPVwiaXNSb3dTZWxlY3RlZChyb3cuaWQpXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwiaGFuZGxlUm93U2VsZWN0KCRldmVudCwgcm93LmlkKVwiPjwvaW1wZGMtY2hlY2tib3g+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC90ZD5cbiAgICAgIH1cbiAgICAgIDx0ZFxuICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uRGVmIG9mIGNvbHVtbkRlZnM7IGluZGV4IGFzIGNvbEluZGV4OyBsYXN0IGFzIGlzTGFzdFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAnY29sLW5vLXBhZGRpbmcnOiAhIWNvbHVtbkRlZi5ub1BhZGRpbmcsXG4gICAgICAgICAgJ2FjdGlvbnMtY29sdW1uJzogY29sdW1uRGVmLmNvbHVtblR5cGUgPT09IGNlbGxUeXBlLkFjdGlvbnNcbiAgICAgICAgfVwiPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIEBzd2l0Y2ggKGNvbHVtbkRlZi5jb2x1bW5UeXBlKSB7IEBjYXNlIChjZWxsVHlwZS5CYWRnZSkge1xuICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgPGltcGRjLWJhZGdlXG4gICAgICAgICAgICAgIFt0ZXh0XT1cImdldFN0cmluZ1ZhbHVlKGNvbEluZGV4LCByb3cpXCJcbiAgICAgICAgICAgICAgW3RoZW1lXT1cImdldFRoZW1lKGNvbHVtbkRlZiwgcm93KVwiPlxuICAgICAgICAgICAgPC9pbXBkYy1iYWRnZT5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgfSBAY2FzZSAoY2VsbFR5cGUuTGluaykge1xuICAgICAgICAgIDxzcGFuIChjbGljayk9XCJoYW5kbGVMaW5rQ2xpY2soY29sSW5kZXgsIHJvdylcIj5cbiAgICAgICAgICAgIEBpZiAoIWJyYW5kZWQpIHtcbiAgICAgICAgICAgIDxhPlxuICAgICAgICAgICAgICB7eyBnZXRWYWx1ZShjb2xJbmRleCwgcm93KSB9fVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8YSBpbXBkY0JyYW5kZWQ+XG4gICAgICAgICAgICAgIHt7IGdldFZhbHVlKGNvbEluZGV4LCByb3cpIH19XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIH0gQGNhc2UgKGNlbGxUeXBlLlVybCkge1xuICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgQGlmICghYnJhbmRlZCkge1xuICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgW2F0dHIuaHJlZl09XCJnZXRWYWx1ZShjb2xJbmRleCwgcm93KVwiPlxuICAgICAgICAgICAgICB7eyBnZXRWYWx1ZShjb2xJbmRleCwgcm93KSB9fVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBpbXBkY0JyYW5kZWRcbiAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgW2F0dHIuaHJlZl09XCJnZXRWYWx1ZShjb2xJbmRleCwgcm93KVwiPlxuICAgICAgICAgICAgICB7eyBnZXRWYWx1ZShjb2xJbmRleCwgcm93KSB9fVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICB9IEBjYXNlIChjZWxsVHlwZS5FbWFpbCkge1xuICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgQGlmICghYnJhbmRlZCkge1xuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgW2F0dHIuaHJlZl09XCInbWFpbHRvOicgKyBnZXRWYWx1ZShjb2xJbmRleCwgcm93KVwiPlxuICAgICAgICAgICAgICB7eyBnZXRWYWx1ZShjb2xJbmRleCwgcm93KSB9fVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8YSBpbXBkY0JyYW5kZWQgW2F0dHIuaHJlZl09XCJnZXRNYWlsVG9WYWx1ZShjb2xJbmRleCwgcm93KVwiPlxuICAgICAgICAgICAgICB7eyBnZXRWYWx1ZShjb2xJbmRleCwgcm93KSB9fVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICB9IEBjYXNlIChjZWxsVHlwZS5JbnB1dCkge1xuICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGltcGRjSW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBjbGFzcz1cInt7IGdldENlbGxDb2xvcihjb2x1bW5EZWYsIHJvdykgfX1cIlxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJnZXRWYWx1ZShjb2xJbmRleCwgcm93KVwiXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIlxuICAgICAgICAgICAgICAgIGhhbmRsZUNlbGxWYWx1ZUNoYW5nZShjb2xJbmRleCwgcm93SW5kZXgsICRldmVudClcbiAgICAgICAgICAgICAgXCIgLz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgfSBAY2FzZSAoY2VsbFR5cGUuQm9vbGVhbikge1xuICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgQGlmIChjb2x1bW5EZWYuZGlzYWJsZWQgJiYgZ2V0VmFsdWUoY29sSW5kZXgsIHJvdykgPT09ICd0cnVlJykge1xuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgaW1wZGMtaWNvblxuICAgICAgICAgICAgICBuYW1lPVwiY2hlY2tcIlxuICAgICAgICAgICAgICBjbGFzcz1cInt7IGdldENlbGxDb2xvcihjb2x1bW5EZWYsIHJvdykgfX1cIj48L3NwYW4+XG4gICAgICAgICAgICB9IEBlbHNlIGlmICghY29sdW1uRGVmLmRpc2FibGVkKSB7XG4gICAgICAgICAgICA8aW1wZGMtY2hlY2tib3hcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiZ2V0VmFsdWUoY29sSW5kZXgsIHJvdykgPT09ICd0cnVlJ1wiXG4gICAgICAgICAgICAgIFtpc1N3aXRjaF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJcbiAgICAgICAgICAgICAgICBoYW5kbGVDZWxsVmFsdWVDaGFuZ2UoY29sSW5kZXgsIHJvd0luZGV4LCAkZXZlbnQuY2hlY2tlZClcbiAgICAgICAgICAgICAgXCI+PC9pbXBkYy1jaGVja2JveD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgfSBAY2FzZSAoY2VsbFR5cGUuU2luZ2xlU2VsZWN0KSB7XG4gICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICA8aW1wZGMtc2VsZWN0XG4gICAgICAgICAgICAgIFtuZ01vZGVsXT1cImdldFZhbHVlKGNvbEluZGV4LCByb3cpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbHVtbkRlZi5kaXNhYmxlZCB8fCBmYWxzZVwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWxlY3RQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiXG4gICAgICAgICAgICAgICAgaGFuZGxlQ2VsbFZhbHVlQ2hhbmdlKGNvbEluZGV4LCByb3dJbmRleCwgJGV2ZW50LnZhbHVlKVxuICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgQGlmIChzZWxlY3RQbGFjZWhvbGRlcikge1xuICAgICAgICAgICAgICA8aW1wZGMtc2VsZWN0LW9wdGlvbiB2YWx1ZSBbbGFiZWxdPVwic2VsZWN0UGxhY2Vob2xkZXJcIj5cbiAgICAgICAgICAgICAgPC9pbXBkYy1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgICB9IEBmb3IgKHZhbHVlIG9mIChjb2x1bW5EZWYudmFsdWVzIHx8IFtdKTsgdHJhY2sgdmFsdWUpIHtcbiAgICAgICAgICAgICAgPGltcGRjLXNlbGVjdC1vcHRpb25cbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwidmFsdWUudmFsdWVcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJ2YWx1ZS5sYWJlbFwiPjwvaW1wZGMtc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9pbXBkYy1zZWxlY3Q+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIH0gQGNhc2UgKGNlbGxUeXBlLk11bHRpU2VsZWN0KSB7XG4gICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICA8aW1wZGMtc2VsZWN0XG4gICAgICAgICAgICAgIFtuZ01vZGVsXT1cImdldFZhbHVlKGNvbEluZGV4LCByb3cpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbHVtbkRlZi5kaXNhYmxlZCB8fCBmYWxzZVwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWxlY3RQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgIG11bHRpcGxlPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiXG4gICAgICAgICAgICAgICAgaGFuZGxlQ2VsbFZhbHVlQ2hhbmdlKGNvbEluZGV4LCByb3dJbmRleCwgJGV2ZW50LnZhbHVlKVxuICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgQGZvciAodmFsdWUgb2YgKGNvbHVtbkRlZi52YWx1ZXMgfHwgW10pOyB0cmFjayB2YWx1ZSkge1xuICAgICAgICAgICAgICA8aW1wZGMtc2VsZWN0LW9wdGlvblxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cInZhbHVlLmxhYmVsXCI+PC9pbXBkYy1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2ltcGRjLXNlbGVjdD5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgfSBAY2FzZSAoY2VsbFR5cGUuQ2VsbFJlbmRlcikge1xuICAgICAgICAgIDxzcGFuIGNsYXNzPVwie3sgZ2V0Q2VsbENvbG9yKGNvbHVtbkRlZiwgcm93KSB9fVwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgIGltcGRjVGFibGVJbmplY3RDb21wb25lbnRcbiAgICAgICAgICAgICAgW2NvbHVtbkRlZl09XCJjb2x1bW5EZWZcIlxuICAgICAgICAgICAgICBbcm93SXRlbV09XCJyb3dcIlxuICAgICAgICAgICAgICBbY3VzdG9tQ2VsbENvbXBvbmVudHNdPVwiY3VzdG9tQ2VsbENvbXBvbmVudHMgfHwge31cIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwiZ2V0UmF3VmFsdWUoY29sSW5kZXgsIHJvdylcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICB9IEBjYXNlIChjZWxsVHlwZS5JY29uKSB7XG4gICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBpbXBkYy1pY29uXG4gICAgICAgICAgICAgIFtuYW1lXT1cImNvbHVtbkRlZi5pY29uTmFtZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwie3sgZ2V0Q2VsbENvbG9yKGNvbHVtbkRlZiwgcm93KSB9fVwiPjwvc3Bhbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgfSBAY2FzZSAoY2VsbFR5cGUuQWN0aW9ucykge1xuICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgPCEtLSB3aWxsIGFsd2F5cyByZXR1cm4gJ3RydWUnLCBidXQgbmVlZGVkIHRvIHNhdGlzZnkgdGhlIHR5cGUgZW5naW5lIC0tPlxuICAgICAgICAgICAgQGlmIChjb2x1bW5EZWZJc0FjdGlvbnMoY29sdW1uRGVmKSkge1xuICAgICAgICAgICAgPGltcGRjLXJvdy1hY3Rpb25zXG4gICAgICAgICAgICAgIFtjb2x1bW5EZWZdPVwiY29sdW1uRGVmXCJcbiAgICAgICAgICAgICAgW3Jvd0l0ZW1dPVwicm93XCJcbiAgICAgICAgICAgICAgW2xhc3RDb2x1bW5dPVwiaXNMYXN0XCJcbiAgICAgICAgICAgICAgKGFjdGlvbkNsaWNrKT1cIlxuICAgICAgICAgICAgICAgIGhhbmRsZUFjdGlvbkNsaWNrKGNvbEluZGV4LCByb3csICRldmVudClcbiAgICAgICAgICAgICAgXCI+PC9pbXBkYy1yb3ctYWN0aW9ucz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgfSBAZGVmYXVsdCB7XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ7eyBnZXRDZWxsQ29sb3IoY29sdW1uRGVmLCByb3cpIH19XCI+XG4gICAgICAgICAgICB7eyBnZXRWYWx1ZShjb2xJbmRleCwgcm93KSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICB9IH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3RkPlxuICAgIDwvdHI+XG4gICAgfSBAZW1wdHkge1xuICAgIDx0cj5cbiAgICAgIDx0ZCBbYXR0ci5jb2xzcGFuXT1cInRhYmxlU3BhblwiIGNsYXNzPVwibm8tZGF0YVwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbm9EYXRhXVwiPjwvbmctY29udGVudD5cbiAgICAgIDwvdGQ+XG4gICAgPC90cj5cbiAgICB9IH1cbiAgPC90Ym9keT5cbiAgPHRmb290PlxuICAgIEBpZiAocGFnaW5hdGlvbkNvbXBvbmVudCkge1xuICAgIDx0cj5cbiAgICAgIDx0ZCBbYXR0ci5jb2xzcGFuXT1cInRhYmxlU3BhblwiPlxuICAgICAgICA8bmctY29udGVudFxuICAgICAgICAgIHNlbGVjdD1cImltcGRjLXBhZ2luYXRpb24sIGRpdltpbXBkYy1wYWdpbmF0aW9uXVwiPjwvbmctY29udGVudD5cbiAgICAgIDwvdGQ+XG4gICAgPC90cj5cbiAgICB9XG4gIDwvdGZvb3Q+XG48L3RhYmxlPlxufVxuIl19
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Directive, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class TableInjectComponentDirective {
|
|
4
|
+
constructor(_viewContainerRef, _componentFactoryResolver) {
|
|
5
|
+
this._viewContainerRef = _viewContainerRef;
|
|
6
|
+
this._componentFactoryResolver = _componentFactoryResolver;
|
|
7
|
+
this.value = '';
|
|
8
|
+
this.rowItem = { id: 0 };
|
|
9
|
+
this.customCellComponents = {};
|
|
10
|
+
}
|
|
11
|
+
ngOnInit() {
|
|
12
|
+
this._renderCustomCell();
|
|
13
|
+
}
|
|
14
|
+
_renderCustomCell() {
|
|
15
|
+
const { cellRendererComponent, cellRendererParams } = this.columnDef;
|
|
16
|
+
if (!cellRendererComponent) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const item = this.rowItem;
|
|
20
|
+
const customCellComponent = this.customCellComponents[cellRendererComponent];
|
|
21
|
+
this._viewContainerRef.clear();
|
|
22
|
+
const componentFactory = this._componentFactoryResolver.resolveComponentFactory(customCellComponent);
|
|
23
|
+
const componentRef = this._viewContainerRef.createComponent(componentFactory);
|
|
24
|
+
componentRef.instance.value = this.value;
|
|
25
|
+
componentRef.instance.rowItem = item;
|
|
26
|
+
componentRef.instance.params = cellRendererParams;
|
|
27
|
+
}
|
|
28
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: TableInjectComponentDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
29
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.1", type: TableInjectComponentDirective, selector: "[impdcTableInjectComponent]", inputs: { columnDef: "columnDef", value: "value", rowItem: "rowItem", customCellComponents: "customCellComponents" }, ngImport: i0 }); }
|
|
30
|
+
}
|
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: TableInjectComponentDirective, decorators: [{
|
|
32
|
+
type: Directive,
|
|
33
|
+
args: [{
|
|
34
|
+
selector: '[impdcTableInjectComponent]'
|
|
35
|
+
}]
|
|
36
|
+
}], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i0.ComponentFactoryResolver }], propDecorators: { columnDef: [{
|
|
37
|
+
type: Input,
|
|
38
|
+
args: [{ required: true }]
|
|
39
|
+
}], value: [{
|
|
40
|
+
type: Input
|
|
41
|
+
}], rowItem: [{
|
|
42
|
+
type: Input
|
|
43
|
+
}], customCellComponents: [{
|
|
44
|
+
type: Input
|
|
45
|
+
}] } });
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaW5qZWN0LWNvbXBvbmVudC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL3RhYmxlL2RpcmVjdGl2ZXMvdGFibGUtaW5qZWN0LWNvbXBvbmVudC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxLQUFLLEVBR04sTUFBTSxlQUFlLENBQUM7O0FBY3ZCLE1BQU0sT0FBTyw2QkFBNkI7SUFNeEMsWUFDbUIsaUJBQW1DLEVBQ25DLHlCQUFtRDtRQURuRCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBQ25DLDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBMEI7UUFOdEQsVUFBSyxHQUFnRCxFQUFFLENBQUM7UUFDeEQsWUFBTyxHQUFrQixFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNuQyx5QkFBb0IsR0FBa0MsRUFBRSxDQUFDO0lBS3RFLENBQUM7SUFFRyxRQUFRO1FBQ2IsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVPLGlCQUFpQjtRQUN2QixNQUFNLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUMxQixPQUFPO1NBQ1I7UUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzFCLE1BQU0sbUJBQW1CLEdBQ3ZCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRW5ELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUUvQixNQUFNLGdCQUFnQixHQUNwQixJQUFJLENBQUMseUJBQXlCLENBQUMsdUJBQXVCLENBQ3BELG1CQUFtQixDQUNwQixDQUFDO1FBQ0osTUFBTSxZQUFZLEdBQ2hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQWdCLGdCQUFnQixDQUFDLENBQUM7UUFFMUUsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN6QyxZQUFZLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDckMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsa0JBQWtCLENBQUM7SUFDcEQsQ0FBQzs4R0FyQ1UsNkJBQTZCO2tHQUE3Qiw2QkFBNkI7OzJGQUE3Qiw2QkFBNkI7a0JBSHpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDZCQUE2QjtpQkFDeEM7NEhBRW1DLFNBQVM7c0JBQTFDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNULEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxvQkFBb0I7c0JBQW5DLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIERpcmVjdGl2ZSxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgSUNlbGxSZW5kZXJlcixcbiAgSUN1c3RvbUNlbGxSZW5kZXJlckNvbXBvbmVudHMsXG4gIElUYWJsZVJvd0l0ZW0sXG4gIElUYWJsZVJvd0l0ZW1WYWx1ZSxcbiAgSVRhYmxlUm93SXRlbVZhbHVlVHlwZXMsXG4gIFRhYmxlQ29sdW1uRGVmXG59IGZyb20gJy4uL2ludGVyZmFjZXMvaW5kZXgnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbaW1wZGNUYWJsZUluamVjdENvbXBvbmVudF0nXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlSW5qZWN0Q29tcG9uZW50RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgcHVibGljIGNvbHVtbkRlZiE6IFRhYmxlQ29sdW1uRGVmO1xuICBASW5wdXQoKSBwdWJsaWMgdmFsdWU6IElUYWJsZVJvd0l0ZW1WYWx1ZVR5cGVzPElUYWJsZVJvd0l0ZW1WYWx1ZT4gPSAnJztcbiAgQElucHV0KCkgcHVibGljIHJvd0l0ZW06IElUYWJsZVJvd0l0ZW0gPSB7IGlkOiAwIH07XG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21DZWxsQ29tcG9uZW50czogSUN1c3RvbUNlbGxSZW5kZXJlckNvbXBvbmVudHMgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF92aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fcmVuZGVyQ3VzdG9tQ2VsbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVuZGVyQ3VzdG9tQ2VsbCgpOiB2b2lkIHtcbiAgICBjb25zdCB7IGNlbGxSZW5kZXJlckNvbXBvbmVudCwgY2VsbFJlbmRlcmVyUGFyYW1zIH0gPSB0aGlzLmNvbHVtbkRlZjtcbiAgICBpZiAoIWNlbGxSZW5kZXJlckNvbXBvbmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnJvd0l0ZW07XG4gICAgY29uc3QgY3VzdG9tQ2VsbENvbXBvbmVudCA9XG4gICAgICB0aGlzLmN1c3RvbUNlbGxDb21wb25lbnRzW2NlbGxSZW5kZXJlckNvbXBvbmVudF07XG5cbiAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XG5cbiAgICBjb25zdCBjb21wb25lbnRGYWN0b3J5ID1cbiAgICAgIHRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeTxJQ2VsbFJlbmRlcmVyPihcbiAgICAgICAgY3VzdG9tQ2VsbENvbXBvbmVudFxuICAgICAgKTtcbiAgICBjb25zdCBjb21wb25lbnRSZWYgPVxuICAgICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQ8SUNlbGxSZW5kZXJlcj4oY29tcG9uZW50RmFjdG9yeSk7XG5cbiAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UudmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5yb3dJdGVtID0gaXRlbTtcbiAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UucGFyYW1zID0gY2VsbFJlbmRlcmVyUGFyYW1zO1xuICB9XG59XG4iXX0=
|
|
@@ -15,10 +15,10 @@ export class TableDirective {
|
|
|
15
15
|
get classTableStriped() {
|
|
16
16
|
return this.striped;
|
|
17
17
|
}
|
|
18
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: TableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
19
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.1", type: TableDirective, selector: "table[impdcTable]", inputs: { striped: "striped" }, host: { properties: { "class.table": "this.classTable", "class.table-striped": "this.classTableStriped" } }, ngImport: i0 }); }
|
|
18
20
|
}
|
|
19
|
-
|
|
20
|
-
TableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: TableDirective, selector: "table[impdcTable]", inputs: { striped: "striped" }, host: { properties: { "class.table": "this.classTable", "class.table-striped": "this.classTableStriped" } }, ngImport: i0 });
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: TableDirective, decorators: [{
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: TableDirective, decorators: [{
|
|
22
22
|
type: Directive,
|
|
23
23
|
args: [{
|
|
24
24
|
selector: 'table[impdcTable]'
|
|
@@ -32,4 +32,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
32
32
|
type: HostBinding,
|
|
33
33
|
args: ['class.table-striped']
|
|
34
34
|
}] } });
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi90YWJsZS9kaXJlY3RpdmVzL3RhYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTlEOzs7R0FHRztBQUlILE1BQU0sT0FBTyxjQUFjO0lBSDNCO1FBSUU7O1dBRUc7UUFFSCxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRW9CLGVBQVUsR0FBRyxJQUFJLENBQUM7S0FLdkQ7SUFIQyxJQUFnRCxpQkFBaUI7UUFDL0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7OEdBWFUsY0FBYztrR0FBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUgxQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7aUJBQzlCOzhCQU1DLE9BQU87c0JBRE4sS0FBSztnQkFHOEIsVUFBVTtzQkFBN0MsV0FBVzt1QkFBQyxhQUFhO2dCQUVzQixpQkFBaUI7c0JBQWhFLFdBQVc7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0QmluZGluZywgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBUaGUgYFRhYmxlRGlyZWN0aXZlYCAoYDx0YWJsZSBpbXBkY1RhYmxlYCkgdGhhdCBhZGRzIEhleCBzdHlsaW5nIHRvIGEgYHRhYmxlYCBlbGVtZW50LlxuICogVG8gdXNlLCBpbXBvcnQgYFRhYmxlTW9kdWxlYCBvciBhbm90aGVyIG1vZHVsZSB0aGF0IGltcG9ydHMgYW5kIGV4cG9ydHMgdGhhdCBtb2R1bGUgZnJvbSBgQGltcGFydG5lci9kZXNpZ24tY29tcG9uZW50c2AuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ3RhYmxlW2ltcGRjVGFibGVdJ1xufSlcbmV4cG9ydCBjbGFzcyBUYWJsZURpcmVjdGl2ZSB7XG4gIC8qKlxuICAgKiBTdHJpcGVzIGV2ZXJ5IG90aGVyIHJvdyBpbiBhIHNsaWdodGx5IGRhcmtlciBiYWNrZ3JvdW5kIGNvbG9yLlxuICAgKi9cbiAgQElucHV0KClcbiAgc3RyaXBlZCA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MudGFibGUnKSBwcml2YXRlIGNsYXNzVGFibGUgPSB0cnVlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MudGFibGUtc3RyaXBlZCcpIHByaXZhdGUgZ2V0IGNsYXNzVGFibGVTdHJpcGVkKCkge1xuICAgIHJldHVybiB0aGlzLnN0cmlwZWQ7XG4gIH1cbn1cbiJdfQ==
|