@seniorsistemas/angular-components 19.0.4 → 19.0.6
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/accordion/lib/accordion/accordion.component.d.ts +25 -0
- package/accordion/lib/accordion/components/accordion-panel/accordion-panel.component.d.ts +60 -0
- package/alert/lib/alert/alert.component.d.ts +40 -0
- package/autocomplete/lib/autocomplete/autocomplete.component.d.ts +51 -0
- package/badge/lib/badge/badge.component.d.ts +20 -0
- package/bignumber-input/lib/bignumber-input/bignumber-input.directive.d.ts +46 -1
- package/breadcrumb/lib/breadcrumb/breadcrumb-models.d.ts +11 -0
- package/breadcrumb/lib/breadcrumb/breadcrumb.component.d.ts +19 -23
- package/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.component.d.ts +25 -0
- package/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.module.d.ts +10 -0
- package/breadcrumb/public-api.d.ts +4 -2
- package/button/lib/button/button.component.d.ts +103 -1
- package/calendar-mask/lib/calendar-mask/calendar-mask.directive.d.ts +24 -0
- package/card/lib/card/card.component.d.ts +18 -0
- package/chat/lib/chat/chat.component.d.ts +20 -2
- package/chat/lib/chat/components/chat-message/chat-message.component.d.ts +18 -2
- package/checkbox/lib/checkbox/checkbox.component.d.ts +23 -3
- package/checkbox-list/lib/checkbox-list/checkbox-list.component.d.ts +20 -0
- package/chips/lib/chips/chip-item/chip-item.component.d.ts +15 -0
- package/chips/lib/chips/chips/chips.component.d.ts +41 -0
- package/code-editor/lib/code-editor/code-editor.component.d.ts +40 -0
- package/collapse-link/lib/collapse-link/collapse-link.component.d.ts +18 -0
- package/common/lib/svg-factory/components/iassist-icon/iassist-icon.component.d.ts +5 -0
- package/confirm-dialog/lib/popup-confirm-dialog/popup-confirm-dialog.component.d.ts +19 -0
- package/content-generator/lib/content-generator/content-generator.component.d.ts +30 -0
- package/control-errors/lib/control-errors/control-errors.component.d.ts +36 -0
- package/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.d.ts +36 -0
- package/currency/lib/currency.service.d.ts +15 -2
- package/custom-fields/lib/custom-fields/custom-fields.component.d.ts +31 -0
- package/dialog/lib/src/dialog/dialog.component.d.ts +51 -0
- package/dialog/lib/src/dialog/services/dialog.service.d.ts +2 -2
- package/dialog/lib/src/dialog/services/internal-dialog.service.d.ts +1 -1
- package/dynamic-form/dynamic-form/components/lookup/lookup.component.d.ts +6 -5
- package/dynamic-form/dynamic-form/components/lookup/models/lookup-api.model.d.ts +5 -0
- package/dynamic-form/dynamic-form/configurations/structure/fieldset.d.ts +14 -0
- package/dynamic-form/dynamic-form/configurations/structure/row.d.ts +67 -0
- package/dynamic-form/dynamic-form/configurations/structure/section.d.ts +8 -0
- package/dynamic-form/dynamic-form/configurations/structure/structure.d.ts +19 -0
- package/dynamic-form/dynamic-form/dynamic-form.component.d.ts +21 -1
- package/dynamic-form/dynamic-form/form-field/configurations/fields/autocomplete-field.d.ts +45 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/bignumber-field.d.ts +59 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/blob-field.d.ts +55 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-field.d.ts +35 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-switch-field.d.ts +17 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/button-field.d.ts +23 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/calendar-field.d.ts +66 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/checkbox-field.d.ts +15 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/chips-field.d.ts +30 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/content-generator-field.d.ts +47 -2
- package/dynamic-form/dynamic-form/form-field/configurations/fields/country-phone-picker-field.d.ts +26 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/currency-field.d.ts +18 -1
- package/dynamic-form/dynamic-form/form-field/configurations/fields/field.d.ts +44 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/lookup-field.d.ts +112 -4
- package/dynamic-form/dynamic-form/form-field/configurations/fields/number-field.d.ts +42 -3
- package/dynamic-form/dynamic-form/form-field/configurations/fields/password-field.d.ts +48 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/profile-picture.d.ts +62 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/radio-button-field.d.ts +34 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/select-field.d.ts +63 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/slider-field.d.ts +47 -1
- package/dynamic-form/dynamic-form/form-field/configurations/fields/star-rating-field.d.ts +23 -0
- package/dynamic-form/dynamic-form/form-field/configurations/fields/text-area-field.d.ts +37 -1
- package/dynamic-form/dynamic-form/form-field/configurations/fields/text-field.d.ts +65 -2
- package/dynamic-form/public-api.d.ts +1 -0
- package/editable-overlay/lib/editable-overlay/editable-overlay.directive.d.ts +16 -0
- package/empty-state/lib/empty-state/empty-state.component.d.ts +59 -0
- package/esm2022/accordion/lib/accordion/accordion.component.mjs +26 -1
- package/esm2022/accordion/lib/accordion/components/accordion-panel/accordion-panel.component.mjs +61 -1
- package/esm2022/alert/lib/alert/alert.component.mjs +41 -1
- package/esm2022/autocomplete/lib/autocomplete/autocomplete.component.mjs +52 -1
- package/esm2022/badge/lib/badge/badge.component.mjs +21 -1
- package/esm2022/bignumber-input/lib/bignumber-input/bignumber-input.directive.mjs +47 -2
- package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-models.mjs +2 -0
- package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.component.mjs +39 -98
- package/esm2022/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.component.mjs +120 -0
- package/esm2022/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.module.mjs +19 -0
- package/esm2022/breadcrumb/public-api.mjs +4 -3
- package/esm2022/button/lib/button/button.component.mjs +107 -3
- package/esm2022/calendar-mask/lib/calendar-mask/calendar-mask.directive.mjs +72 -47
- package/esm2022/card/lib/card/card.component.mjs +21 -6
- package/esm2022/chat/lib/chat/chat.component.mjs +23 -5
- package/esm2022/chat/lib/chat/components/chat-message/chat-message.component.mjs +20 -4
- package/esm2022/checkbox/lib/checkbox/checkbox.component.mjs +24 -4
- package/esm2022/checkbox-list/lib/checkbox-list/checkbox-list.component.mjs +22 -2
- package/esm2022/chips/lib/chips/chip-item/chip-item.component.mjs +17 -2
- package/esm2022/chips/lib/chips/chips/chips.component.mjs +42 -1
- package/esm2022/code-editor/lib/code-editor/code-editor.component.mjs +41 -1
- package/esm2022/collapse-link/lib/collapse-link/collapse-link.component.mjs +19 -1
- package/esm2022/common/lib/svg-factory/components/iassist-icon/iassist-icon.component.mjs +6 -1
- package/esm2022/confirm-dialog/lib/popup-confirm-dialog/popup-confirm-dialog.component.mjs +21 -2
- package/esm2022/content-generator/lib/content-generator/content-generator.component.mjs +32 -2
- package/esm2022/control-errors/lib/control-errors/control-errors.component.mjs +37 -1
- package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.mjs +37 -1
- package/esm2022/currency/lib/currency.service.mjs +21 -8
- package/esm2022/custom-fields/lib/custom-fields/custom-fields.component.mjs +32 -1
- package/esm2022/dialog/lib/src/dialog/dialog.component.mjs +66 -11
- package/esm2022/dialog/lib/src/dialog/services/dialog.service.mjs +13 -10
- package/esm2022/dialog/lib/src/dialog/services/internal-dialog.service.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/components/grid/row/row.component.mjs +2 -2
- package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +2 -2
- package/esm2022/dynamic-form/dynamic-form/components/lookup/models/lookup-api.model.mjs +2 -0
- package/esm2022/dynamic-form/dynamic-form/configurations/structure/fieldset.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/configurations/structure/row.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/configurations/structure/section.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/configurations/structure/structure.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/dynamic-form.component.mjs +22 -2
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/autocomplete-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/bignumber-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/blob-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-switch-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/button-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/calendar-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/checkbox-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/chips-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/content-generator-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/country-phone-picker-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/currency-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/field.mjs +1 -2
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/lookup-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/number-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/password-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/profile-picture.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/radio-button-field.mjs +6 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/select-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/slider-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/star-rating-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/text-area-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/text-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +2 -2
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/boolean/boolean-radio-field/boolean-field.component.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/button-field/button-field.component.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.mjs +2 -2
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/password/password-field.component.mjs +2 -2
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/radio-button/radio-button-field.component.mjs +2 -2
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.mjs +2 -2
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/text-area/text-area-field.component.mjs +3 -3
- package/esm2022/dynamic-form/public-api.mjs +2 -2
- package/esm2022/editable-overlay/lib/editable-overlay/editable-overlay.directive.mjs +17 -1
- package/esm2022/empty-state/lib/empty-state/empty-state.component.mjs +61 -2
- package/esm2022/fieldset/lib/fieldset/fieldset.component.mjs +25 -5
- package/esm2022/file-picker/lib/file-picker/file-picker.component.mjs +49 -2
- package/esm2022/gantt/lib/gantt/gantt.component.mjs +32 -1
- package/esm2022/global-search/lib/global-search/components/dropdown/global-search-dropdown-item.component.mjs +1 -1
- package/esm2022/global-search/lib/global-search/global-search.component.mjs +31 -2
- package/esm2022/grid-menu/lib/grid-menu/grid-menu.component.mjs +40 -1
- package/esm2022/help-popover/lib/help-popover/help-popover/help-popover.component.mjs +1 -1
- package/esm2022/help-popover/lib/help-popover/help-popover.directive.mjs +83 -27
- package/esm2022/image-cropper/lib/image-cropper/image-cropper.component.mjs +41 -4
- package/esm2022/infinite-scroll/lib/infinite-scroll/infinite-scroll.directive.mjs +18 -2
- package/esm2022/info-sign/lib/info-sign/info-sign.directive.mjs +33 -4
- package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +1 -1
- package/esm2022/inline-edit/lib/inline-edit/components/inline-edit-item/inline-edit-item.component.mjs +1 -1
- package/esm2022/inline-edit/lib/inline-edit/inline-edit.component.mjs +16 -1
- package/esm2022/insights/lib/insights/insights.component.mjs +23 -1
- package/esm2022/interactive-content/lib/interactive-content/interactive-content.directive.mjs +21 -1
- package/esm2022/kanban/lib/kanban/components/kanban-column/kanban-column.component.mjs +1 -1
- package/esm2022/kanban/lib/kanban/components/kanban-item/kanban-item.component.mjs +1 -1
- package/esm2022/kanban/lib/kanban/kanban.component.mjs +34 -16
- package/esm2022/label-value/lib/label-value/label-value.component.mjs +14 -1
- package/esm2022/lib/locale/fallback.mjs +4 -2
- package/esm2022/loading-state/lib/loading-state/loading-state.component.mjs +37 -1
- package/esm2022/loading-state/lib/loading-state/loading-state.directive.mjs +24 -1
- package/esm2022/locale/lib/locale/locale.service.mjs +8 -1
- package/esm2022/localized-number-input/lib/localized-number-input/localized-number-input.directive.mjs +17 -1
- package/esm2022/mask/lib/mask/mask-formatter.pipe.mjs +13 -1
- package/esm2022/mouse-events/lib/mouse-events/double-click.directive.mjs +16 -3
- package/esm2022/mouse-events/lib/mouse-events/long-press.directive.mjs +24 -10
- package/esm2022/navigation-button/lib/navigation-button/navigation-button.component.mjs +21 -2
- package/esm2022/number-input/lib/number-input/number-input.directive.mjs +32 -12
- package/esm2022/numeric/lib/numeric.pipe.mjs +16 -1
- package/esm2022/numeric/lib/numeric.service.mjs +21 -1
- package/esm2022/numeric-mask/lib/numeric-mask/numeric-mask.directive.mjs +9 -6
- package/esm2022/object-card/lib/object-card/elements/field/object-card-field.component.mjs +1 -1
- package/esm2022/object-card/lib/object-card/elements/main/object-card-main.component.mjs +1 -1
- package/esm2022/object-card/lib/object-card/object-card.component.mjs +24 -1
- package/esm2022/optional-fields/editor/editor-field.mjs +1 -1
- package/esm2022/paginator/lib/paginator/paginator.component.mjs +20 -1
- package/esm2022/panel/lib/panel/panel.component.mjs +44 -23
- package/esm2022/password-strength/lib/password-strength/password-strength.component.mjs +25 -1
- package/esm2022/password-strength/lib/password-strength/password-strength.directive.mjs +54 -1
- package/esm2022/picklist/lib/picklist/picklist.component.mjs +34 -3
- package/esm2022/pin-code-field/lib/pin-code-field/pin-code-field.component.mjs +29 -34
- package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.mjs +87 -3
- package/esm2022/progressbar/lib/progressbar/progressbar.component.mjs +53 -3
- package/esm2022/radio-button/lib/radio-button/radio-button.component.mjs +28 -1
- package/esm2022/radio-button/lib/radio-button-group/radio-button-group.component.mjs +27 -1
- package/esm2022/rating-scale/lib/rating-scale/rating-scale.component.mjs +39 -7
- package/esm2022/select/lib/select/select.component.mjs +35 -1
- package/esm2022/select-button/lib/select-button/select-button.component.mjs +35 -1
- package/esm2022/shared/lib/shared/border-button/border-button.component.mjs +11 -3
- package/esm2022/sidebar/lib/sidebar/sidebar.component.mjs +54 -1
- package/esm2022/slide-in-bar/lib/slide-in-bar/slide-in-bar.component.mjs +76 -36
- package/esm2022/slider/lib/slider/slider.component.mjs +90 -9
- package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.mjs +25 -4
- package/esm2022/split-button/lib/split-button/split-button.component.mjs +24 -2
- package/esm2022/star-rating/star-rating/star-rating.component.mjs +17 -1
- package/esm2022/stats-card/lib/stats-card/stats-card.component.mjs +32 -10
- package/esm2022/stepper/lib/stepper/stepper.component.mjs +20 -1
- package/esm2022/structure/lib/structure/footer.component.mjs +11 -1
- package/esm2022/switch/lib/switch/switch.component.mjs +22 -2
- package/esm2022/table/lib/table/table-column/table-columns.component.mjs +16 -1
- package/esm2022/table/lib/table/table-paging/table-paging.component.mjs +1 -1
- package/esm2022/table-header/lib/table-header/table-header-checkbox.component.mjs +29 -3
- package/esm2022/tabs/lib/tab-item/tab-item.component.mjs +33 -2
- package/esm2022/tabs/lib/tabs/tabs.component.mjs +35 -3
- package/esm2022/template/lib/template/template.directive.mjs +14 -2
- package/esm2022/text-area/lib/text-area/text-area.component.mjs +28 -1
- package/esm2022/thumbnail/lib/thumbnail/thumbnail.component.mjs +25 -1
- package/esm2022/thumbnails/lib/thumbnails/thumbnails.component.mjs +28 -3
- package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu/tiered-menu.component.mjs +65 -46
- package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.mjs +3 -3
- package/esm2022/tiered-menu/lib/tiered-menu/tiered-menu.directive.mjs +35 -2
- package/esm2022/tile/lib/tile/tile.component.mjs +26 -1
- package/esm2022/timeline/lib/timeline/timeline.component.mjs +26 -3
- package/esm2022/toast/lib/toast/toast.component.mjs +24 -4
- package/esm2022/token-list/lib/token-list/token-list.component.mjs +22 -1
- package/esm2022/tooltip/lib/tooltip/tooltip.directive.mjs +66 -1
- package/esm2022/topbar/lib/topbar/topbar.component.mjs +18 -1
- package/esm2022/tree/lib/tree/tree.component.mjs +28 -1
- package/esm2022/workspace-switch/lib/workspace-switch/workspace-switch.component.mjs +47 -1
- package/fesm2022/seniorsistemas-angular-components-accordion.mjs +85 -0
- package/fesm2022/seniorsistemas-angular-components-accordion.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-alert.mjs +40 -0
- package/fesm2022/seniorsistemas-angular-components-alert.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs +51 -0
- package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-badge.mjs +20 -0
- package/fesm2022/seniorsistemas-angular-components-badge.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-bignumber-input.mjs +46 -1
- package/fesm2022/seniorsistemas-angular-components-bignumber-input.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs +93 -37
- package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-button.mjs +106 -2
- package/fesm2022/seniorsistemas-angular-components-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs +71 -46
- package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-card.mjs +19 -4
- package/fesm2022/seniorsistemas-angular-components-card.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-chat.mjs +39 -5
- package/fesm2022/seniorsistemas-angular-components-chat.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs +21 -1
- package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-checkbox.mjs +23 -3
- package/fesm2022/seniorsistemas-angular-components-checkbox.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-chips.mjs +57 -1
- package/fesm2022/seniorsistemas-angular-components-chips.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-code-editor.mjs +40 -0
- package/fesm2022/seniorsistemas-angular-components-code-editor.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-collapse-link.mjs +18 -0
- package/fesm2022/seniorsistemas-angular-components-collapse-link.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-common.mjs +5 -0
- package/fesm2022/seniorsistemas-angular-components-common.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs +20 -1
- package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-content-generator.mjs +31 -1
- package/fesm2022/seniorsistemas-angular-components-content-generator.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-control-errors.mjs +36 -0
- package/fesm2022/seniorsistemas-angular-components-control-errors.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +36 -0
- package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-currency.mjs +19 -6
- package/fesm2022/seniorsistemas-angular-components-currency.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs +31 -0
- package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-dialog.mjs +74 -16
- package/fesm2022/seniorsistemas-angular-components-dialog.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +38 -13
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-editable-overlay.mjs +16 -0
- package/fesm2022/seniorsistemas-angular-components-editable-overlay.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-empty-state.mjs +60 -1
- package/fesm2022/seniorsistemas-angular-components-empty-state.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-fieldset.mjs +21 -1
- package/fesm2022/seniorsistemas-angular-components-fieldset.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-file-picker.mjs +48 -1
- package/fesm2022/seniorsistemas-angular-components-file-picker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-gantt.mjs +31 -0
- package/fesm2022/seniorsistemas-angular-components-gantt.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-global-search.mjs +31 -2
- package/fesm2022/seniorsistemas-angular-components-global-search.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-grid-menu.mjs +39 -0
- package/fesm2022/seniorsistemas-angular-components-grid-menu.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-help-popover.mjs +81 -25
- package/fesm2022/seniorsistemas-angular-components-help-popover.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs +39 -2
- package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs +17 -1
- package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-info-sign.mjs +30 -1
- package/fesm2022/seniorsistemas-angular-components-info-sign.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +17 -2
- package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-insights.mjs +22 -0
- package/fesm2022/seniorsistemas-angular-components-insights.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs +20 -0
- package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-kanban.mjs +30 -12
- package/fesm2022/seniorsistemas-angular-components-kanban.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-label-value.mjs +13 -0
- package/fesm2022/seniorsistemas-angular-components-label-value.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-loading-state.mjs +59 -0
- package/fesm2022/seniorsistemas-angular-components-loading-state.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-locale.mjs +7 -0
- package/fesm2022/seniorsistemas-angular-components-locale.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs +16 -0
- package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-mask.mjs +12 -0
- package/fesm2022/seniorsistemas-angular-components-mask.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-mouse-events.mjs +35 -8
- package/fesm2022/seniorsistemas-angular-components-mouse-events.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs +20 -1
- package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-number-input.mjs +31 -11
- package/fesm2022/seniorsistemas-angular-components-number-input.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-numeric-mask.mjs +8 -5
- package/fesm2022/seniorsistemas-angular-components-numeric-mask.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-numeric.mjs +35 -0
- package/fesm2022/seniorsistemas-angular-components-numeric.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-object-card.mjs +25 -2
- package/fesm2022/seniorsistemas-angular-components-object-card.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-optional-fields-editor.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-paginator.mjs +19 -0
- package/fesm2022/seniorsistemas-angular-components-paginator.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-panel.mjs +39 -18
- package/fesm2022/seniorsistemas-angular-components-panel.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-password-strength.mjs +77 -0
- package/fesm2022/seniorsistemas-angular-components-password-strength.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-picklist.mjs +33 -2
- package/fesm2022/seniorsistemas-angular-components-picklist.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-pin-code-field.mjs +28 -33
- package/fesm2022/seniorsistemas-angular-components-pin-code-field.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs +86 -2
- package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-progressbar.mjs +52 -2
- package/fesm2022/seniorsistemas-angular-components-progressbar.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-radio-button.mjs +53 -0
- package/fesm2022/seniorsistemas-angular-components-radio-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs +36 -4
- package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-select-button.mjs +34 -0
- package/fesm2022/seniorsistemas-angular-components-select-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-select.mjs +34 -0
- package/fesm2022/seniorsistemas-angular-components-select.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-shared.mjs +9 -1
- package/fesm2022/seniorsistemas-angular-components-shared.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-sidebar.mjs +53 -0
- package/fesm2022/seniorsistemas-angular-components-sidebar.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs +71 -31
- package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-slider.mjs +89 -8
- package/fesm2022/seniorsistemas-angular-components-slider.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs +24 -3
- package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-split-button.mjs +22 -0
- package/fesm2022/seniorsistemas-angular-components-split-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-star-rating.mjs +16 -0
- package/fesm2022/seniorsistemas-angular-components-star-rating.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-stats-card.mjs +30 -8
- package/fesm2022/seniorsistemas-angular-components-stats-card.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-stepper.mjs +19 -0
- package/fesm2022/seniorsistemas-angular-components-stepper.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-structure.mjs +10 -0
- package/fesm2022/seniorsistemas-angular-components-structure.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-switch.mjs +20 -0
- package/fesm2022/seniorsistemas-angular-components-switch.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-table-header.mjs +28 -2
- package/fesm2022/seniorsistemas-angular-components-table-header.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-table.mjs +16 -1
- package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tabs.mjs +65 -2
- package/fesm2022/seniorsistemas-angular-components-tabs.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-template.mjs +13 -1
- package/fesm2022/seniorsistemas-angular-components-template.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-text-area.mjs +27 -0
- package/fesm2022/seniorsistemas-angular-components-text-area.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs +24 -0
- package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-thumbnails.mjs +26 -1
- package/fesm2022/seniorsistemas-angular-components-thumbnails.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs +99 -47
- package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tile.mjs +25 -0
- package/fesm2022/seniorsistemas-angular-components-tile.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-timeline.mjs +25 -2
- package/fesm2022/seniorsistemas-angular-components-timeline.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-toast.mjs +22 -2
- package/fesm2022/seniorsistemas-angular-components-toast.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-token-list.mjs +21 -0
- package/fesm2022/seniorsistemas-angular-components-token-list.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tooltip.mjs +65 -0
- package/fesm2022/seniorsistemas-angular-components-tooltip.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-topbar.mjs +17 -0
- package/fesm2022/seniorsistemas-angular-components-topbar.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tree.mjs +27 -0
- package/fesm2022/seniorsistemas-angular-components-tree.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs +46 -0
- package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components.mjs +3 -1
- package/fesm2022/seniorsistemas-angular-components.mjs.map +1 -1
- package/fieldset/lib/fieldset/fieldset.component.d.ts +23 -3
- package/file-picker/lib/file-picker/file-picker.component.d.ts +47 -0
- package/gantt/lib/gantt/gantt.component.d.ts +31 -0
- package/global-search/lib/global-search/global-search.component.d.ts +29 -0
- package/grid-menu/lib/grid-menu/grid-menu.component.d.ts +39 -0
- package/help-popover/lib/help-popover/help-popover.directive.d.ts +67 -17
- package/image-cropper/lib/image-cropper/image-cropper.component.d.ts +38 -0
- package/infinite-scroll/lib/infinite-scroll/infinite-scroll.directive.d.ts +15 -0
- package/info-sign/lib/info-sign/info-sign.directive.d.ts +30 -1
- package/inline-edit/lib/inline-edit/inline-edit.component.d.ts +15 -0
- package/insights/lib/insights/insights.component.d.ts +22 -0
- package/interactive-content/lib/interactive-content/interactive-content.directive.d.ts +20 -0
- package/kanban/lib/kanban/kanban.component.d.ts +25 -5
- package/label-value/lib/label-value/label-value.component.d.ts +13 -0
- package/loading-state/lib/loading-state/loading-state.component.d.ts +36 -0
- package/loading-state/lib/loading-state/loading-state.directive.d.ts +23 -0
- package/locale/lib/locale/locale.service.d.ts +7 -0
- package/localized-number-input/lib/localized-number-input/localized-number-input.directive.d.ts +16 -0
- package/mask/lib/mask/mask-formatter.pipe.d.ts +12 -0
- package/mouse-events/lib/mouse-events/double-click.directive.d.ts +13 -0
- package/mouse-events/lib/mouse-events/long-press.directive.d.ts +16 -2
- package/navigation-button/lib/navigation-button/navigation-button.component.d.ts +19 -0
- package/number-input/lib/number-input/number-input.directive.d.ts +19 -1
- package/numeric/lib/numeric.pipe.d.ts +15 -0
- package/numeric/lib/numeric.service.d.ts +20 -0
- package/numeric-mask/lib/numeric-mask/numeric-mask.directive.d.ts +5 -4
- package/object-card/lib/object-card/object-card.component.d.ts +23 -0
- package/optional-fields/editor/editor-field.d.ts +19 -0
- package/package.json +7 -7
- package/paginator/lib/paginator/paginator.component.d.ts +19 -0
- package/panel/lib/panel/panel.component.d.ts +24 -3
- package/password-strength/lib/password-strength/password-strength.component.d.ts +24 -0
- package/password-strength/lib/password-strength/password-strength.directive.d.ts +53 -0
- package/picklist/lib/picklist/picklist.component.d.ts +29 -0
- package/pin-code-field/lib/pin-code-field/pin-code-field.component.d.ts +28 -33
- package/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.d.ts +85 -1
- package/progressbar/lib/progressbar/progressbar.component.d.ts +50 -0
- package/radio-button/lib/radio-button/radio-button.component.d.ts +27 -0
- package/radio-button/lib/radio-button-group/radio-button-group.component.d.ts +26 -0
- package/rating-scale/lib/rating-scale/rating-scale.component.d.ts +30 -2
- package/select/lib/select/select.component.d.ts +34 -0
- package/select-button/lib/select-button/select-button.component.d.ts +34 -0
- package/shared/lib/shared/border-button/border-button.component.d.ts +10 -2
- package/sidebar/lib/sidebar/sidebar.component.d.ts +53 -0
- package/slide-in-bar/lib/slide-in-bar/slide-in-bar.component.d.ts +53 -2
- package/slider/lib/slider/slider.component.d.ts +72 -0
- package/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.d.ts +18 -0
- package/split-button/lib/split-button/split-button.component.d.ts +22 -0
- package/star-rating/star-rating/star-rating.component.d.ts +16 -0
- package/stats-card/lib/stats-card/stats-card.component.d.ts +28 -0
- package/stepper/lib/stepper/stepper.component.d.ts +19 -0
- package/structure/lib/structure/footer.component.d.ts +10 -0
- package/switch/lib/switch/switch.component.d.ts +20 -0
- package/table/lib/table/table-column/table-columns.component.d.ts +15 -0
- package/table-header/lib/table-header/table-header-checkbox.component.d.ts +18 -0
- package/tabs/lib/tab-item/tab-item.component.d.ts +31 -0
- package/tabs/lib/tabs/tabs.component.d.ts +28 -0
- package/template/lib/template/template.directive.d.ts +12 -0
- package/text-area/lib/text-area/text-area.component.d.ts +27 -0
- package/thumbnail/lib/thumbnail/thumbnail.component.d.ts +24 -0
- package/thumbnails/lib/thumbnails/thumbnails.component.d.ts +27 -2
- package/tiered-menu/lib/tiered-menu/components/tiered-menu/tiered-menu.component.d.ts +3 -1
- package/tiered-menu/lib/tiered-menu/tiered-menu.directive.d.ts +31 -1
- package/tile/lib/tile/tile.component.d.ts +25 -0
- package/timeline/lib/timeline/timeline.component.d.ts +24 -0
- package/toast/lib/toast/toast.component.d.ts +22 -2
- package/token-list/lib/token-list/token-list.component.d.ts +21 -0
- package/tooltip/lib/tooltip/tooltip.directive.d.ts +65 -0
- package/topbar/lib/topbar/topbar.component.d.ts +17 -0
- package/tree/lib/tree/tree.component.d.ts +27 -0
- package/workspace-switch/lib/workspace-switch/workspace-switch.component.d.ts +46 -0
- package/breadcrumb/lib/breadcrumb/breadcrumb.module.d.ts +0 -10
- package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.module.mjs +0 -20
|
@@ -2,9 +2,27 @@ import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "@seniorsistemas/angular-components/loading-state";
|
|
4
4
|
import * as i2 from "./components/tree-node-item/tree-node-item.component";
|
|
5
|
+
/**
|
|
6
|
+
* @description Componente de árvore hierárquica com suporte a seleção única ou múltipla,
|
|
7
|
+
* checkboxes, noós expansíveis e edição inline de rótulos. Gerencia o estado interno
|
|
8
|
+
* dos nós e emite eventos na seleção, expansão, colapso e edição.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```html
|
|
12
|
+
* <s-tree
|
|
13
|
+
* [treeData]="nos"
|
|
14
|
+
* selectionMode="multiple"
|
|
15
|
+
* [showCheckbox]="true"
|
|
16
|
+
* (selectedChange)="onSelecaoMudou($event)" />
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* @category Data
|
|
20
|
+
*/
|
|
5
21
|
export class TreeComponent {
|
|
22
|
+
/** @description Lista de nós raíz da árvore. @default [] */
|
|
6
23
|
treeData = [];
|
|
7
24
|
_selected = [];
|
|
25
|
+
/** @description Nó(s) selecionado(s). Suporta array ou item único dependendo de `selectionMode`. @default [] */
|
|
8
26
|
get selected() {
|
|
9
27
|
return this._selected;
|
|
10
28
|
}
|
|
@@ -17,14 +35,23 @@ export class TreeComponent {
|
|
|
17
35
|
}
|
|
18
36
|
this._selected = value;
|
|
19
37
|
}
|
|
38
|
+
/** @description Exibe indicador de carregamento nos nós. @default false */
|
|
20
39
|
loading = false;
|
|
40
|
+
/** @description Modo de seleção: `'single'` ou `'multiple'`. @default 'single' */
|
|
21
41
|
selectionMode = 'single';
|
|
42
|
+
/** @description Exibe checkboxes nos nós para seleção visual. @default false */
|
|
22
43
|
showCheckbox = false;
|
|
44
|
+
/** @description Expão todos os nós inicialmente. @default false */
|
|
23
45
|
allExpanded = false;
|
|
46
|
+
/** @description Emitido quando a seleção muda, com o(s) nó(s) selecionado(s). */
|
|
24
47
|
selectedChange = new EventEmitter();
|
|
48
|
+
/** @description Emitido quando o usuário clica em um nó da árvore. */
|
|
25
49
|
treeNodeItemClicked = new EventEmitter();
|
|
50
|
+
/** @description Emitido após uma edição inline de rótulo de nó. */
|
|
26
51
|
treeNodeEdit = new EventEmitter();
|
|
52
|
+
/** @description Emitido quando um nó é expandido pelo usuário. */
|
|
27
53
|
nodeExpanded = new EventEmitter();
|
|
54
|
+
/** @description Emitido quando um nó é colapsado pelo usuário. */
|
|
28
55
|
nodeCollapsed = new EventEmitter();
|
|
29
56
|
ngOnChanges(changes) {
|
|
30
57
|
this.onChanges(changes);
|
|
@@ -235,4 +262,4 @@ const parseInternalTreeNodeItem = (internalTreeNodeItem) => {
|
|
|
235
262
|
});
|
|
236
263
|
return object;
|
|
237
264
|
};
|
|
238
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvdHJlZS9zcmMvbGliL3RyZWUvdHJlZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvdHJlZS9zcmMvbGliL3RyZWUvdHJlZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7OztBQVNqRyxNQUFNLE9BQU8sYUFBYTtJQUVmLFFBQVEsR0FBbUIsRUFBRSxDQUFDO0lBRTdCLFNBQVMsR0FBbUIsRUFBRSxDQUFDO0lBQ3ZDLElBQ1csUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBVyxRQUFRLENBQUMsS0FBZ0Q7UUFDaEUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1QsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNmLENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hCLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BCLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBR00sT0FBTyxHQUFHLEtBQUssQ0FBQztJQUdoQixhQUFhLEdBQTBCLFFBQVEsQ0FBQztJQUdoRCxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBR3JCLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFHcEIsY0FBYyxHQUFnRCxJQUFJLFlBQVksRUFBRSxDQUFDO0lBR2pGLG1CQUFtQixHQUErQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBR3JFLFlBQVksR0FBK0IsSUFB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QUFNLE1BQU0sR0FBRztRQUNYLEVBQUU7UUFDRixLQUFLO1FBQ0wsSUFBSTtRQUNKLE9BQU87UUFDUCxVQUFVO1FBQ1YsT0FBTztRQUNQLFFBQVE7UUFDUixTQUFTLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQztRQUNuRCxJQUFJLFFBQVE7WUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDMUIsQ0FBQztRQUNELElBQUksUUFBUSxDQUFDLEtBQUs7WUFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN2QixvQkFBb0IsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQzFDLENBQUM7S0FDSixDQUFDO0lBQ0YsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFO1FBQ3ZDLFVBQVUsRUFBRSxLQUFLO0tBQ3BCLENBQUMsQ0FBQztJQUNILE9BQU8sTUFBeUIsQ0FBQztBQUNyQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEludGVybmFsVHJlZU5vZGVJdGVtLCBUcmVlTm9kZUVkaXQsIFRyZWVOb2RlSXRlbSB9IGZyb20gJy4vTW9kZWxzL3RyZWUubW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzLXRyZWUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90cmVlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi90cmVlLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFRyZWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHRyZWVEYXRhOiBUcmVlTm9kZUl0ZW1bXSA9IFtdO1xuXG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWQ6IFRyZWVOb2RlSXRlbVtdID0gW107XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHNlbGVjdGVkKCk6IFRyZWVOb2RlSXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IHNlbGVjdGVkKHZhbHVlOiBUcmVlTm9kZUl0ZW1bXSB8IFRyZWVOb2RlSXRlbSB8IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlID0gW3ZhbHVlXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zZWxlY3RlZCA9IHZhbHVlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGxvYWRpbmcgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNlbGVjdGlvbk1vZGU6ICdzaW5nbGUnIHwgJ211bHRpcGxlJyA9ICdzaW5nbGUnO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd0NoZWNrYm94ID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhbGxFeHBhbmRlZCA9IGZhbHNlO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHNlbGVjdGVkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8VHJlZU5vZGVJdGVtW10gfCBUcmVlTm9kZUl0ZW0+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHRyZWVOb2RlSXRlbUNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxUcmVlTm9kZUl0ZW0+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHRyZWVOb2RlRWRpdDogRXZlbnRFbWl0dGVyPFRyZWVOb2RlRWRpdD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgbm9kZUV4cGFuZGVkOiBFdmVudEVtaXR0ZXI8VHJlZU5vZGVJdGVtPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBub2RlQ29sbGFwc2VkOiBFdmVudEVtaXR0ZXI8VHJlZU5vZGVJdGVtPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2VzKGNoYW5nZXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblRyZWVOb2RlSXRlbUNsaWNrZWQoeyBpdGVtIH06IHsgaXRlbTogSW50ZXJuYWxUcmVlTm9kZUl0ZW0gfSkge1xuICAgICAgICB0aGlzLnRyZWVOb2RlSXRlbUNsaWNrZWQuZW1pdChwYXJzZUludGVybmFsVHJlZU5vZGVJdGVtKGl0ZW0pKTtcbiAgICAgICAgdGhpcy50b2dnbGVDaGVja2VkKGl0ZW0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblRyZWVOb2RlRWRpdChwYXlsb2FkOiBUcmVlTm9kZUVkaXQpIHtcbiAgICAgICAgY29uc3QgeyByZXZlcnRBY3Rpb24sIGl0ZW0sIG5ld1ZhbHVlLCBwcmV2aW91c1ZhbHVlIH0gPSBwYXlsb2FkO1xuICAgICAgICB0aGlzLnRyZWVOb2RlRWRpdC5lbWl0KHtcbiAgICAgICAgICAgIHJldmVydEFjdGlvbixcbiAgICAgICAgICAgIGl0ZW06IHBhcnNlSW50ZXJuYWxUcmVlTm9kZUl0ZW0oaXRlbSksXG4gICAgICAgICAgICBuZXdWYWx1ZSxcbiAgICAgICAgICAgIHByZXZpb3VzVmFsdWUsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbk5vZGVFeHBhbmRlZChpdGVtOiBJbnRlcm5hbFRyZWVOb2RlSXRlbSkge1xuICAgICAgICB0aGlzLm5vZGVFeHBhbmRlZC5lbWl0KHBhcnNlSW50ZXJuYWxUcmVlTm9kZUl0ZW0oaXRlbSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbk5vZGVDb2xsYXBzZWQoaXRlbTogSW50ZXJuYWxUcmVlTm9kZUl0ZW0pIHtcbiAgICAgICAgdGhpcy5ub2RlQ29sbGFwc2VkLmVtaXQocGFyc2VJbnRlcm5hbFRyZWVOb2RlSXRlbShpdGVtKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0b2dnbGVDaGVja2VkKHRyZWVOb2RlSXRlbTogVHJlZU5vZGVJdGVtKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRDaGVja1N0YXRlID0gIXRyZWVOb2RlSXRlbS5jaGVja2VkO1xuICAgICAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGZsYXR0ZW5UcmVlKHRoaXMudHJlZURhdGEpLmZvckVhY2goKHgpID0+ICh4LmNoZWNrZWQgPSBmYWxzZSkpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IFt0cmVlTm9kZUl0ZW1dO1xuICAgICAgICB9XG4gICAgICAgIHRyZWVOb2RlSXRlbS5jaGVja2VkID0gZWxlbWVudENoZWNrU3RhdGU7XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrVHJlZURhdGFDaGlsZHJlbih0cmVlTm9kZUl0ZW0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrVHJlZURhdGFDaGlsZHJlbihzZWxlY3RlZFRyZWVOb2RlOiBUcmVlTm9kZUl0ZW0pIHtcbiAgICAgICAgY29uc3QgcGFyZW50Q2hlY2tlZCA9IHNlbGVjdGVkVHJlZU5vZGUuY2hlY2tlZDtcbiAgICAgICAgaWYgKHNlbGVjdGVkVHJlZU5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgIHNlbGVjdGVkVHJlZU5vZGUuY2hpbGRyZW4uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVucyA9IGZsYXR0ZW5UcmVlKGl0ZW0uY2hpbGRyZW4gfHwgW10pO1xuICAgICAgICAgICAgICAgIGl0ZW0uY2hlY2tlZCA9IHBhcmVudENoZWNrZWQ7XG4gICAgICAgICAgICAgICAgY2hpbGRyZW5zLmZvckVhY2goKGNoaWxkKSA9PiAoY2hpbGQuY2hlY2tlZCA9IHBhcmVudENoZWNrZWQpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZ2V0Tm9kZUNoaWxkcmVuU3VtbWFyeSA9IChub2RlOiBUcmVlTm9kZUl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbiA/PyBbXTtcbiAgICAgICAgICAgIGNvbnN0IGFsbENoaWxkcmVuQ2hlY2tlZCA9IGNoaWxkcmVuLmV2ZXJ5KCh5KSA9PiB5LmNoZWNrZWQgPT09IHRydWUpO1xuICAgICAgICAgICAgY29uc3Qgc29tZUNoaWxkcmVuQ2hlY2tlZCA9IGNoaWxkcmVuLnNvbWUoKHkpID0+IHkuY2hlY2tlZCA9PT0gdHJ1ZSB8fCB5LmNoZWNrZWQgPT09IG51bGwpO1xuICAgICAgICAgICAgY29uc3QgYWxsQ2hpbGRyZW5VbmNoZWNrZWQgPSBjaGlsZHJlbi5ldmVyeSgoeSkgPT4geS5jaGVja2VkID09PSBmYWxzZSB8fCB5LmNoZWNrZWQgPT09IHVuZGVmaW5lZCk7XG4gICAgICAgICAgICByZXR1cm4geyBhbGxDaGlsZHJlbkNoZWNrZWQsIHNvbWVDaGlsZHJlbkNoZWNrZWQsIGFsbENoaWxkcmVuVW5jaGVja2VkIH07XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHVwZGF0ZUNoZWNrZWRTdGF0ZVJlY3Vyc2l2ZWx5ID0gKG5vZGU6IFRyZWVOb2RlSXRlbSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgaWYgKCFub2RlLmNoaWxkcmVuPy5sZW5ndGgpIHJldHVybjtcblxuICAgICAgICAgICAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKHVwZGF0ZUNoZWNrZWRTdGF0ZVJlY3Vyc2l2ZWx5KTtcblxuICAgICAgICAgICAgY29uc3QgeyBhbGxDaGlsZHJlbkNoZWNrZWQsIHNvbWVDaGlsZHJlbkNoZWNrZWQsIGFsbENoaWxkcmVuVW5jaGVja2VkIH0gPSBnZXROb2RlQ2hpbGRyZW5TdW1tYXJ5KG5vZGUpO1xuICAgICAgICAgICAgaWYgKGFsbENoaWxkcmVuQ2hlY2tlZCkge1xuICAgICAgICAgICAgICAgIG5vZGUuY2hlY2tlZCA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHNvbWVDaGlsZHJlbkNoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICBub2RlLmNoZWNrZWQgPSBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChhbGxDaGlsZHJlblVuY2hlY2tlZCkge1xuICAgICAgICAgICAgICAgIG5vZGUuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnRyZWVEYXRhLmZvckVhY2godXBkYXRlQ2hlY2tlZFN0YXRlUmVjdXJzaXZlbHkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0U2VsZWN0ZWQoKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZEVsZW1lbnRzO1xuICAgICAgICB0aGlzLnNlbGVjdGVkID0gWy4uLnNlbGVjdGVkXTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KHNlbGVjdGVkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGNvbnN0IGFsbEV4cGFuZGVkQ2hhbmdlcyA9IGNoYW5nZXNbJ2FsbEV4cGFuZGVkJ107XG4gICAgICAgIGNvbnN0IF9jaGVja0lzRmlyc3RDaGFuZ2VXaXRoVmFsdWUgPSAodmFsdWU6IEV4dHJhY3Q8a2V5b2YgVHJlZUNvbXBvbmVudCwgJ3NlbGVjdGVkJyB8ICd0cmVlRGF0YSc+KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWNoYW5nZXNbdmFsdWVdKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAoIWNoYW5nZXNbdmFsdWVdLnByZXZpb3VzVmFsdWUgfHwgY2hhbmdlc1t2YWx1ZV0ucHJldmlvdXNWYWx1ZS5sZW5ndGggPT09IDApICYmXG4gICAgICAgICAgICAgICAgY2hhbmdlc1t2YWx1ZV0uY3VycmVudFZhbHVlPy5sZW5ndGggPiAwXG4gICAgICAgICAgICApO1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChfY2hlY2tJc0ZpcnN0Q2hhbmdlV2l0aFZhbHVlKCdzZWxlY3RlZCcpKSB7XG4gICAgICAgICAgICB0aGlzLnN5bmNTZWxlY3RlZENoYW5nZXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfY2hlY2tJc0ZpcnN0Q2hhbmdlV2l0aFZhbHVlKCd0cmVlRGF0YScpKSB7XG4gICAgICAgICAgICBjb25zdCBpc0FsbEV4cGFuZGVkID0gdGhpcy5hbGxFeHBhbmRlZDtcbiAgICAgICAgICAgIGlmIChpc0FsbEV4cGFuZGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5leHBhbmRBbGwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhbGxFeHBhbmRlZENoYW5nZXMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmFsbEV4cGFuZGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5leHBhbmRBbGwoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb2xsYXBzZUFsbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzeW5jU2VsZWN0ZWRDaGFuZ2VzKCkge1xuICAgICAgICBjb25zdCB0cmVlRmxhdHRlbiA9IGZsYXR0ZW5UcmVlKHRoaXMudHJlZURhdGEpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkLmZvckVhY2goKHNlbGVjdGVkSXRlbSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHRyZWVGbGF0dGVuLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IHNlbGVjdGVkSXRlbS5pZCk7XG4gICAgICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgICAgIGl0ZW0uY2hlY2tlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXRlbSAmJiBpdGVtLmNoaWxkcmVuICYmIHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICBpdGVtLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkLmNoZWNrZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBleGlzdENoaWxkSW5TZWxlY3RlZExpc3QgPSB0aGlzLnNlbGVjdGVkLnNvbWUoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGNoaWxkLmlkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFleGlzdENoaWxkSW5TZWxlY3RlZExpc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQucHVzaChjaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSB0aGlzLnNlbGVjdGVkRWxlbWVudHM7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHNOb3RJblNlbGVjdGVkTGlzdCA9IHNlbGVjdGVkRWxlbWVudHMuZmlsdGVyKFxuICAgICAgICAgICAgKHgpID0+ICF0aGlzLnNlbGVjdGVkLnNvbWUoKHkpID0+IHkuaWQgPT09IHguaWQpLFxuICAgICAgICApO1xuICAgICAgICBzZWxlY3RlZEVsZW1lbnRzTm90SW5TZWxlY3RlZExpc3QuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jaGVja1RyZWVEYXRhQ2hpbGRyZW4oaXRlbSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb2xsYXBzZUFsbCgpIHtcbiAgICAgICAgY29uc3QgZmxhdHRlbiA9IGZsYXR0ZW5UcmVlKHRoaXMudHJlZURhdGEpO1xuICAgICAgICBmbGF0dGVuLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGl0ZW0uaXNFeHBhbmRlZCA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV4cGFuZEFsbCgpIHtcbiAgICAgICAgY29uc3QgZmxhdHRlbiA9IGZsYXR0ZW5UcmVlKHRoaXMudHJlZURhdGEpO1xuICAgICAgICBmbGF0dGVuLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGl0ZW0uaXNFeHBhbmRlZCA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IHNlbGVjdGVkRWxlbWVudHMoKSB7XG4gICAgICAgIHJldHVybiBmbGF0dGVuVHJlZSh0aGlzLnRyZWVEYXRhKVxuICAgICAgICAgICAgLmZpbHRlcigoeCkgPT4geC5jaGVja2VkKVxuICAgICAgICAgICAgLmZpbHRlcigoeCkgPT4geC5sZWFmICE9PSB0cnVlICYmICF4LmNoaWxkcmVuPy5sZW5ndGgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IG11bHRpcGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnbXVsdGlwbGUnO1xuICAgIH1cbn1cblxuY29uc3QgZmxhdHRlblRyZWUgPSA8VCA9IGFueT4odHJlZTogVHJlZU5vZGVJdGVtPFQ+W10pOiBUcmVlTm9kZUl0ZW08VD5bXSA9PiB7XG4gICAgY29uc3QgcmVzdWx0OiBUcmVlTm9kZUl0ZW08VD5bXSA9IFtdO1xuXG4gICAgZnVuY3Rpb24gdHJhdmVyc2Uobm9kZXM6IFRyZWVOb2RlSXRlbTxUPltdKSB7XG4gICAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2gobm9kZSk7XG4gICAgICAgICAgICBpZiAobm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRyYXZlcnNlKG5vZGUuY2hpbGRyZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdHJhdmVyc2UodHJlZSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmNvbnN0IHBhcnNlSW50ZXJuYWxUcmVlTm9kZUl0ZW0gPSA8VCA9IGFueT4oaW50ZXJuYWxUcmVlTm9kZUl0ZW06IEludGVybmFsVHJlZU5vZGVJdGVtPFQ+KTogVHJlZU5vZGVJdGVtPFQ+ID0+IHtcbiAgICBjb25zdCB7IGlkLCBsYWJlbCwgaWNvbiwgY2hlY2tlZCwgaXNFeHBhbmRlZCwgcGF5bG9hZCwgZWRpdGFibGUsIGNoaWxkcmVuIH0gPSBpbnRlcm5hbFRyZWVOb2RlSXRlbTtcbiAgICBjb25zdCBvYmplY3QgPSB7XG4gICAgICAgIGlkLFxuICAgICAgICBsYWJlbCxcbiAgICAgICAgaWNvbixcbiAgICAgICAgY2hlY2tlZCxcbiAgICAgICAgaXNFeHBhbmRlZCxcbiAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgZWRpdGFibGUsXG4gICAgICAgIF9jaGlsZHJlbjogY2hpbGRyZW4/Lm1hcChwYXJzZUludGVybmFsVHJlZU5vZGVJdGVtKSxcbiAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NoaWxkcmVuO1xuICAgICAgICB9LFxuICAgICAgICBzZXQgY2hpbGRyZW4odmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX2NoaWxkcmVuID0gdmFsdWU7XG4gICAgICAgICAgICBpbnRlcm5hbFRyZWVOb2RlSXRlbS5jaGlsZHJlbiA9IHZhbHVlO1xuICAgICAgICB9LFxuICAgIH07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgJ19jaGlsZHJlbicsIHtcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgfSk7XG4gICAgcmV0dXJuIG9iamVjdCBhcyBUcmVlTm9kZUl0ZW08VD47XG59O1xuIiwiPGRpdiBjbGFzcz1cInRyZWVcIiAqc0xvYWRpbmdTdGF0ZT1cImxvYWRpbmdcIj5cbiAgICBAZm9yKGl0ZW0gb2YgdHJlZURhdGE7IHRyYWNrICRpbmRleCkge1xuICAgICAgICA8cy10cmVlLW5vZGUtaXRlbVxuICAgICAgICAgICAgW3Nob3dDaGVja2JveF09XCJzaG93Q2hlY2tib3hcIlxuICAgICAgICAgICAgW3RyZWVOb2RlSXRlbV09XCJpdGVtXCJcbiAgICAgICAgICAgIChub2RlRXhwYW5kZWQpPVwib25Ob2RlRXhwYW5kZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAobm9kZUNvbGxhcHNlZCk9XCJvbk5vZGVDb2xsYXBzZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAodHJlZU5vZGVFZGl0KT1cIm9uVHJlZU5vZGVFZGl0KCRldmVudClcIlxuICAgICAgICAgICAgKHRyZWVOb2RlSXRlbUNsaWNrZWQpPVwib25UcmVlTm9kZUl0ZW1DbGlja2VkKCRldmVudClcIj5cbiAgICAgICAgPC9zLXRyZWUtbm9kZS1pdGVtPlxuXG4gICAgfVxuPC9kaXY+XG4iXX0=
|
|
265
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvdHJlZS9zcmMvbGliL3RyZWUvdHJlZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvdHJlZS9zcmMvbGliL3RyZWUvdHJlZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7OztBQUlqRzs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFNSCxNQUFNLE9BQU8sYUFBYTtJQUN0Qiw0REFBNEQ7SUFFckQsUUFBUSxHQUFtQixFQUFFLENBQUM7SUFFN0IsU0FBUyxHQUFtQixFQUFFLENBQUM7SUFDdkMsZ0hBQWdIO0lBQ2hILElBQ1csUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBVyxRQUFRLENBQUMsS0FBZ0Q7UUFDaEUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1QsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNmLENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hCLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BCLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRUQsMkVBQTJFO0lBRXBFLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFFdkIsa0ZBQWtGO0lBRTNFLGFBQWEsR0FBMEIsUUFBUSxDQUFDO0lBRXZELGdGQUFnRjtJQUV6RSxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBRTVCLG1FQUFtRTtJQUU1RCxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBRTNCLGlGQUFpRjtJQUUxRSxjQUFjLEdBQWdELElBQUksWUFBWSxFQUFFLENBQUM7SUFFeEYsc0VBQXNFO0lBRS9ELG1CQUFtQixHQUErQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBRTVFLG1FQUFtRTtJQUU1RCxZQUFZLEdBQStCLElBQUksWUFBWSxFQUFFLENBQUM7SUFFckUsa0VBQWtFO0lBRTNELFlBQVksR0FBK0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUVyRSxrRUFBa0U7SUFFM0QsYUFBYSxHQUErQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBRS9ELFdBQVcsQ0FBQyxPQUFzQjtRQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxFQUFFLElBQUksRUFBa0M7UUFDakUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVNLGNBQWMsQ0FBQyxPQUFxQjtRQUN2QyxNQUFNLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO1lBQ25CLFlBQVk7WUFDWixJQUFJLEVBQUUseUJBQXlCLENBQUMsSUFBSSxDQUFDO1lBQ3JDLFFBQVE7WUFDUixhQUFhO1NBQ2hCLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxjQUFjLENBQUMsSUFBMEI7UUFDNUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRU0sZUFBZSxDQUFDLElBQTBCO1FBQzdDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVPLGFBQWEsQ0FBQyxZQUEwQjtRQUM1QyxNQUFNLGlCQUFpQixHQUFHLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQztRQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2pCLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUNELFlBQVksQ0FBQyxPQUFPLEdBQUcsaUJBQWlCLENBQUM7UUFDekMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVPLHFCQUFxQixDQUFDLGdCQUE4QjtRQUN4RCxNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7UUFDL0MsSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM1QixnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ3ZDLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUNuRCxJQUFJLENBQUMsT0FBTyxHQUFHLGFBQWEsQ0FBQztnQkFDN0IsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFDbEUsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO1FBRUQsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLElBQWtCLEVBQUUsRUFBRTtZQUNsRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUNyQyxNQUFNLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLENBQUM7WUFDckUsTUFBTSxtQkFBbUIsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxDQUFDO1lBQzNGLE1BQU0sb0JBQW9CLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUMsQ0FBQztZQUNuRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQztRQUM3RSxDQUFDLENBQUM7UUFDRixNQUFNLDZCQUE2QixHQUFHLENBQUMsSUFBa0IsRUFBUSxFQUFFO1lBQy9ELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU07Z0JBQUUsT0FBTztZQUVuQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1lBRXJELE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDeEIsQ0FBQztpQkFBTSxJQUFJLG1CQUFtQixFQUFFLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLENBQUM7aUJBQU0sSUFBSSxvQkFBb0IsRUFBRSxDQUFDO2dCQUM5QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUN6QixDQUFDO1FBQ0wsQ0FBQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRU8sV0FBVztRQUNmLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRU8sU0FBUyxDQUFDLE9BQXNCO1FBQ3BDLE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sNEJBQTRCLEdBQUcsQ0FBQyxLQUE0RCxFQUFFLEVBQUU7WUFDbEcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNsQixPQUFPO1lBQ1gsQ0FBQztZQUNELE9BQU8sQ0FDSCxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLGFBQWEsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsYUFBYSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7Z0JBQzVFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxZQUFZLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FDMUMsQ0FBQztRQUNOLENBQUMsQ0FBQztRQUVGLElBQUksNEJBQTRCLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMvQixDQUFDO1FBRUQsSUFBSSw0QkFBNEIsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzNDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDdkMsSUFBSSxhQUFhLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3JCLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1lBQ3JCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDckIsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFTyxtQkFBbUI7UUFDdkIsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQ25DLE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1AsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDeEIsQ0FBQztZQUNELElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUM1QixLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztvQkFDckIsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3BGLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO3dCQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDOUIsQ0FBQztnQkFDTCxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQy9DLE1BQU0saUNBQWlDLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUM3RCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQ25ELENBQUM7UUFDRixpQ0FBaUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUMvQyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVPLFdBQVc7UUFDZixNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNyQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxTQUFTO1FBQ2IsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsSUFBWSxnQkFBZ0I7UUFDeEIsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQzthQUM1QixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7YUFDeEIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELElBQVksUUFBUTtRQUNoQixPQUFPLElBQUksQ0FBQyxhQUFhLEtBQUssVUFBVSxDQUFDO0lBQzdDLENBQUM7d0dBMU5RLGFBQWE7NEZBQWIsYUFBYSxnYUN6QjFCLHVlQWFBOzs0RkRZYSxhQUFhO2tCQUx6QixTQUFTOytCQUNJLFFBQVE7OEJBT1gsUUFBUTtzQkFEZCxLQUFLO2dCQU1LLFFBQVE7c0JBRGxCLEtBQUs7Z0JBZ0JDLE9BQU87c0JBRGIsS0FBSztnQkFLQyxhQUFhO3NCQURuQixLQUFLO2dCQUtDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBS0MsV0FBVztzQkFEakIsS0FBSztnQkFLQyxjQUFjO3NCQURwQixNQUFNO2dCQUtBLG1CQUFtQjtzQkFEekIsTUFBTTtnQkFLQSxZQUFZO3NCQURsQixNQUFNO2dCQUtBLFlBQVk7c0JBRGxCLE1BQU07Z0JBS0EsYUFBYTtzQkFEbkIsTUFBTTs7QUF1S1gsTUFBTSxXQUFXLEdBQUcsQ0FBVSxJQUF1QixFQUFxQixFQUFFO0lBQ3hFLE1BQU0sTUFBTSxHQUFzQixFQUFFLENBQUM7SUFFckMsU0FBUyxRQUFRLENBQUMsS0FBd0I7UUFDdEMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN2QixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN4QyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVCLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNmLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVGLE1BQU0seUJBQXlCLEdBQUcsQ0FBVSxvQkFBNkMsRUFBbUIsRUFBRTtJQUMxRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxHQUFHLG9CQUFvQixDQUFDO0lBQ25HLE1BQU0sTUFBTSxHQUFHO1FBQ1gsRUFBRTtRQUNGLEtBQUs7UUFDTCxJQUFJO1FBQ0osT0FBTztRQUNQLFVBQVU7UUFDVixPQUFPO1FBQ1AsUUFBUTtRQUNSLFNBQVMsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLHlCQUF5QixDQUFDO1FBQ25ELElBQUksUUFBUTtZQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUMxQixDQUFDO1FBQ0QsSUFBSSxRQUFRLENBQUMsS0FBSztZQUNkLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLG9CQUFvQixDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDMUMsQ0FBQztLQUNKLENBQUM7SUFDRixNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUU7UUFDdkMsVUFBVSxFQUFFLEtBQUs7S0FDcEIsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxNQUF5QixDQUFDO0FBQ3JDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgSW50ZXJuYWxUcmVlTm9kZUl0ZW0sIFRyZWVOb2RlRWRpdCwgVHJlZU5vZGVJdGVtIH0gZnJvbSAnLi9Nb2RlbHMvdHJlZS5tb2RlbHMnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb21wb25lbnRlIGRlIMOhcnZvcmUgaGllcsOhcnF1aWNhIGNvbSBzdXBvcnRlIGEgc2VsZcOnw6NvIMO6bmljYSBvdSBtw7psdGlwbGEsXG4gKiBjaGVja2JveGVzLCBub8OzcyBleHBhbnPDrXZlaXMgZSBlZGnDp8OjbyBpbmxpbmUgZGUgcsOzdHVsb3MuIEdlcmVuY2lhIG8gZXN0YWRvIGludGVybm9cbiAqIGRvcyBuw7NzIGUgZW1pdGUgZXZlbnRvcyBuYSBzZWxlw6fDo28sIGV4cGFuc8OjbywgY29sYXBzbyBlIGVkacOnw6NvLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8cy10cmVlXG4gKiAgIFt0cmVlRGF0YV09XCJub3NcIlxuICogICBzZWxlY3Rpb25Nb2RlPVwibXVsdGlwbGVcIlxuICogICBbc2hvd0NoZWNrYm94XT1cInRydWVcIlxuICogICAoc2VsZWN0ZWRDaGFuZ2UpPVwib25TZWxlY2FvTXVkb3UoJGV2ZW50KVwiIC8+XG4gKiBgYGBcbiAqXG4gKiBAY2F0ZWdvcnkgRGF0YVxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3MtdHJlZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RyZWUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3RyZWUuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVHJlZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBMaXN0YSBkZSBuw7NzIHJhw616IGRhIMOhcnZvcmUuIEBkZWZhdWx0IFtdICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdHJlZURhdGE6IFRyZWVOb2RlSXRlbVtdID0gW107XG5cbiAgICBwcml2YXRlIF9zZWxlY3RlZDogVHJlZU5vZGVJdGVtW10gPSBbXTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIE7DsyhzKSBzZWxlY2lvbmFkbyhzKS4gU3Vwb3J0YSBhcnJheSBvdSBpdGVtIMO6bmljbyBkZXBlbmRlbmRvIGRlIGBzZWxlY3Rpb25Nb2RlYC4gQGRlZmF1bHQgW10gKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgc2VsZWN0ZWQoKTogVHJlZU5vZGVJdGVtW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgc2VsZWN0ZWQodmFsdWU6IFRyZWVOb2RlSXRlbVtdIHwgVHJlZU5vZGVJdGVtIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHZhbHVlID0gW107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsdWUgPSBbdmFsdWVdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFeGliZSBpbmRpY2Fkb3IgZGUgY2FycmVnYW1lbnRvIG5vcyBuw7NzLiBAZGVmYXVsdCBmYWxzZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGxvYWRpbmcgPSBmYWxzZTtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gTW9kbyBkZSBzZWxlw6fDo286IGAnc2luZ2xlJ2Agb3UgYCdtdWx0aXBsZSdgLiBAZGVmYXVsdCAnc2luZ2xlJyAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNlbGVjdGlvbk1vZGU6ICdzaW5nbGUnIHwgJ211bHRpcGxlJyA9ICdzaW5nbGUnO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFeGliZSBjaGVja2JveGVzIG5vcyBuw7NzIHBhcmEgc2VsZcOnw6NvIHZpc3VhbC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93Q2hlY2tib3ggPSBmYWxzZTtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gRXhww6NvIHRvZG9zIG9zIG7Ds3MgaW5pY2lhbG1lbnRlLiBAZGVmYXVsdCBmYWxzZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFsbEV4cGFuZGVkID0gZmFsc2U7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIGEgc2VsZcOnw6NvIG11ZGEsIGNvbSBvKHMpIG7DsyhzKSBzZWxlY2lvbmFkbyhzKS4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgc2VsZWN0ZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxUcmVlTm9kZUl0ZW1bXSB8IFRyZWVOb2RlSXRlbT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIG8gdXN1w6FyaW8gY2xpY2EgZW0gdW0gbsOzIGRhIMOhcnZvcmUuICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHRyZWVOb2RlSXRlbUNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxUcmVlTm9kZUl0ZW0+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIGFww7NzIHVtYSBlZGnDp8OjbyBpbmxpbmUgZGUgcsOzdHVsbyBkZSBuw7MuICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHRyZWVOb2RlRWRpdDogRXZlbnRFbWl0dGVyPFRyZWVOb2RlRWRpdD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIHVtIG7DsyDDqSBleHBhbmRpZG8gcGVsbyB1c3XDoXJpby4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgbm9kZUV4cGFuZGVkOiBFdmVudEVtaXR0ZXI8VHJlZU5vZGVJdGVtPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBxdWFuZG8gdW0gbsOzIMOpIGNvbGFwc2FkbyBwZWxvIHVzdcOhcmlvLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBub2RlQ29sbGFwc2VkOiBFdmVudEVtaXR0ZXI8VHJlZU5vZGVJdGVtPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2VzKGNoYW5nZXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblRyZWVOb2RlSXRlbUNsaWNrZWQoeyBpdGVtIH06IHsgaXRlbTogSW50ZXJuYWxUcmVlTm9kZUl0ZW0gfSkge1xuICAgICAgICB0aGlzLnRyZWVOb2RlSXRlbUNsaWNrZWQuZW1pdChwYXJzZUludGVybmFsVHJlZU5vZGVJdGVtKGl0ZW0pKTtcbiAgICAgICAgdGhpcy50b2dnbGVDaGVja2VkKGl0ZW0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblRyZWVOb2RlRWRpdChwYXlsb2FkOiBUcmVlTm9kZUVkaXQpIHtcbiAgICAgICAgY29uc3QgeyByZXZlcnRBY3Rpb24sIGl0ZW0sIG5ld1ZhbHVlLCBwcmV2aW91c1ZhbHVlIH0gPSBwYXlsb2FkO1xuICAgICAgICB0aGlzLnRyZWVOb2RlRWRpdC5lbWl0KHtcbiAgICAgICAgICAgIHJldmVydEFjdGlvbixcbiAgICAgICAgICAgIGl0ZW06IHBhcnNlSW50ZXJuYWxUcmVlTm9kZUl0ZW0oaXRlbSksXG4gICAgICAgICAgICBuZXdWYWx1ZSxcbiAgICAgICAgICAgIHByZXZpb3VzVmFsdWUsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbk5vZGVFeHBhbmRlZChpdGVtOiBJbnRlcm5hbFRyZWVOb2RlSXRlbSkge1xuICAgICAgICB0aGlzLm5vZGVFeHBhbmRlZC5lbWl0KHBhcnNlSW50ZXJuYWxUcmVlTm9kZUl0ZW0oaXRlbSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbk5vZGVDb2xsYXBzZWQoaXRlbTogSW50ZXJuYWxUcmVlTm9kZUl0ZW0pIHtcbiAgICAgICAgdGhpcy5ub2RlQ29sbGFwc2VkLmVtaXQocGFyc2VJbnRlcm5hbFRyZWVOb2RlSXRlbShpdGVtKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0b2dnbGVDaGVja2VkKHRyZWVOb2RlSXRlbTogVHJlZU5vZGVJdGVtKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRDaGVja1N0YXRlID0gIXRyZWVOb2RlSXRlbS5jaGVja2VkO1xuICAgICAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGZsYXR0ZW5UcmVlKHRoaXMudHJlZURhdGEpLmZvckVhY2goKHgpID0+ICh4LmNoZWNrZWQgPSBmYWxzZSkpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IFt0cmVlTm9kZUl0ZW1dO1xuICAgICAgICB9XG4gICAgICAgIHRyZWVOb2RlSXRlbS5jaGVja2VkID0gZWxlbWVudENoZWNrU3RhdGU7XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrVHJlZURhdGFDaGlsZHJlbih0cmVlTm9kZUl0ZW0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrVHJlZURhdGFDaGlsZHJlbihzZWxlY3RlZFRyZWVOb2RlOiBUcmVlTm9kZUl0ZW0pIHtcbiAgICAgICAgY29uc3QgcGFyZW50Q2hlY2tlZCA9IHNlbGVjdGVkVHJlZU5vZGUuY2hlY2tlZDtcbiAgICAgICAgaWYgKHNlbGVjdGVkVHJlZU5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgIHNlbGVjdGVkVHJlZU5vZGUuY2hpbGRyZW4uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVucyA9IGZsYXR0ZW5UcmVlKGl0ZW0uY2hpbGRyZW4gfHwgW10pO1xuICAgICAgICAgICAgICAgIGl0ZW0uY2hlY2tlZCA9IHBhcmVudENoZWNrZWQ7XG4gICAgICAgICAgICAgICAgY2hpbGRyZW5zLmZvckVhY2goKGNoaWxkKSA9PiAoY2hpbGQuY2hlY2tlZCA9IHBhcmVudENoZWNrZWQpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZ2V0Tm9kZUNoaWxkcmVuU3VtbWFyeSA9IChub2RlOiBUcmVlTm9kZUl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbiA/PyBbXTtcbiAgICAgICAgICAgIGNvbnN0IGFsbENoaWxkcmVuQ2hlY2tlZCA9IGNoaWxkcmVuLmV2ZXJ5KCh5KSA9PiB5LmNoZWNrZWQgPT09IHRydWUpO1xuICAgICAgICAgICAgY29uc3Qgc29tZUNoaWxkcmVuQ2hlY2tlZCA9IGNoaWxkcmVuLnNvbWUoKHkpID0+IHkuY2hlY2tlZCA9PT0gdHJ1ZSB8fCB5LmNoZWNrZWQgPT09IG51bGwpO1xuICAgICAgICAgICAgY29uc3QgYWxsQ2hpbGRyZW5VbmNoZWNrZWQgPSBjaGlsZHJlbi5ldmVyeSgoeSkgPT4geS5jaGVja2VkID09PSBmYWxzZSB8fCB5LmNoZWNrZWQgPT09IHVuZGVmaW5lZCk7XG4gICAgICAgICAgICByZXR1cm4geyBhbGxDaGlsZHJlbkNoZWNrZWQsIHNvbWVDaGlsZHJlbkNoZWNrZWQsIGFsbENoaWxkcmVuVW5jaGVja2VkIH07XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHVwZGF0ZUNoZWNrZWRTdGF0ZVJlY3Vyc2l2ZWx5ID0gKG5vZGU6IFRyZWVOb2RlSXRlbSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgaWYgKCFub2RlLmNoaWxkcmVuPy5sZW5ndGgpIHJldHVybjtcblxuICAgICAgICAgICAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKHVwZGF0ZUNoZWNrZWRTdGF0ZVJlY3Vyc2l2ZWx5KTtcblxuICAgICAgICAgICAgY29uc3QgeyBhbGxDaGlsZHJlbkNoZWNrZWQsIHNvbWVDaGlsZHJlbkNoZWNrZWQsIGFsbENoaWxkcmVuVW5jaGVja2VkIH0gPSBnZXROb2RlQ2hpbGRyZW5TdW1tYXJ5KG5vZGUpO1xuICAgICAgICAgICAgaWYgKGFsbENoaWxkcmVuQ2hlY2tlZCkge1xuICAgICAgICAgICAgICAgIG5vZGUuY2hlY2tlZCA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHNvbWVDaGlsZHJlbkNoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICBub2RlLmNoZWNrZWQgPSBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChhbGxDaGlsZHJlblVuY2hlY2tlZCkge1xuICAgICAgICAgICAgICAgIG5vZGUuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnRyZWVEYXRhLmZvckVhY2godXBkYXRlQ2hlY2tlZFN0YXRlUmVjdXJzaXZlbHkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0U2VsZWN0ZWQoKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZEVsZW1lbnRzO1xuICAgICAgICB0aGlzLnNlbGVjdGVkID0gWy4uLnNlbGVjdGVkXTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KHNlbGVjdGVkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGNvbnN0IGFsbEV4cGFuZGVkQ2hhbmdlcyA9IGNoYW5nZXNbJ2FsbEV4cGFuZGVkJ107XG4gICAgICAgIGNvbnN0IF9jaGVja0lzRmlyc3RDaGFuZ2VXaXRoVmFsdWUgPSAodmFsdWU6IEV4dHJhY3Q8a2V5b2YgVHJlZUNvbXBvbmVudCwgJ3NlbGVjdGVkJyB8ICd0cmVlRGF0YSc+KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWNoYW5nZXNbdmFsdWVdKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAoIWNoYW5nZXNbdmFsdWVdLnByZXZpb3VzVmFsdWUgfHwgY2hhbmdlc1t2YWx1ZV0ucHJldmlvdXNWYWx1ZS5sZW5ndGggPT09IDApICYmXG4gICAgICAgICAgICAgICAgY2hhbmdlc1t2YWx1ZV0uY3VycmVudFZhbHVlPy5sZW5ndGggPiAwXG4gICAgICAgICAgICApO1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChfY2hlY2tJc0ZpcnN0Q2hhbmdlV2l0aFZhbHVlKCdzZWxlY3RlZCcpKSB7XG4gICAgICAgICAgICB0aGlzLnN5bmNTZWxlY3RlZENoYW5nZXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfY2hlY2tJc0ZpcnN0Q2hhbmdlV2l0aFZhbHVlKCd0cmVlRGF0YScpKSB7XG4gICAgICAgICAgICBjb25zdCBpc0FsbEV4cGFuZGVkID0gdGhpcy5hbGxFeHBhbmRlZDtcbiAgICAgICAgICAgIGlmIChpc0FsbEV4cGFuZGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5leHBhbmRBbGwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhbGxFeHBhbmRlZENoYW5nZXMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmFsbEV4cGFuZGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5leHBhbmRBbGwoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb2xsYXBzZUFsbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzeW5jU2VsZWN0ZWRDaGFuZ2VzKCkge1xuICAgICAgICBjb25zdCB0cmVlRmxhdHRlbiA9IGZsYXR0ZW5UcmVlKHRoaXMudHJlZURhdGEpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkLmZvckVhY2goKHNlbGVjdGVkSXRlbSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHRyZWVGbGF0dGVuLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IHNlbGVjdGVkSXRlbS5pZCk7XG4gICAgICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgICAgIGl0ZW0uY2hlY2tlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXRlbSAmJiBpdGVtLmNoaWxkcmVuICYmIHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICBpdGVtLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkLmNoZWNrZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBleGlzdENoaWxkSW5TZWxlY3RlZExpc3QgPSB0aGlzLnNlbGVjdGVkLnNvbWUoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGNoaWxkLmlkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFleGlzdENoaWxkSW5TZWxlY3RlZExpc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQucHVzaChjaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSB0aGlzLnNlbGVjdGVkRWxlbWVudHM7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHNOb3RJblNlbGVjdGVkTGlzdCA9IHNlbGVjdGVkRWxlbWVudHMuZmlsdGVyKFxuICAgICAgICAgICAgKHgpID0+ICF0aGlzLnNlbGVjdGVkLnNvbWUoKHkpID0+IHkuaWQgPT09IHguaWQpLFxuICAgICAgICApO1xuICAgICAgICBzZWxlY3RlZEVsZW1lbnRzTm90SW5TZWxlY3RlZExpc3QuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jaGVja1RyZWVEYXRhQ2hpbGRyZW4oaXRlbSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb2xsYXBzZUFsbCgpIHtcbiAgICAgICAgY29uc3QgZmxhdHRlbiA9IGZsYXR0ZW5UcmVlKHRoaXMudHJlZURhdGEpO1xuICAgICAgICBmbGF0dGVuLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGl0ZW0uaXNFeHBhbmRlZCA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV4cGFuZEFsbCgpIHtcbiAgICAgICAgY29uc3QgZmxhdHRlbiA9IGZsYXR0ZW5UcmVlKHRoaXMudHJlZURhdGEpO1xuICAgICAgICBmbGF0dGVuLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGl0ZW0uaXNFeHBhbmRlZCA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IHNlbGVjdGVkRWxlbWVudHMoKSB7XG4gICAgICAgIHJldHVybiBmbGF0dGVuVHJlZSh0aGlzLnRyZWVEYXRhKVxuICAgICAgICAgICAgLmZpbHRlcigoeCkgPT4geC5jaGVja2VkKVxuICAgICAgICAgICAgLmZpbHRlcigoeCkgPT4geC5sZWFmICE9PSB0cnVlICYmICF4LmNoaWxkcmVuPy5sZW5ndGgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IG11bHRpcGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnbXVsdGlwbGUnO1xuICAgIH1cbn1cblxuY29uc3QgZmxhdHRlblRyZWUgPSA8VCA9IGFueT4odHJlZTogVHJlZU5vZGVJdGVtPFQ+W10pOiBUcmVlTm9kZUl0ZW08VD5bXSA9PiB7XG4gICAgY29uc3QgcmVzdWx0OiBUcmVlTm9kZUl0ZW08VD5bXSA9IFtdO1xuXG4gICAgZnVuY3Rpb24gdHJhdmVyc2Uobm9kZXM6IFRyZWVOb2RlSXRlbTxUPltdKSB7XG4gICAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2gobm9kZSk7XG4gICAgICAgICAgICBpZiAobm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRyYXZlcnNlKG5vZGUuY2hpbGRyZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdHJhdmVyc2UodHJlZSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmNvbnN0IHBhcnNlSW50ZXJuYWxUcmVlTm9kZUl0ZW0gPSA8VCA9IGFueT4oaW50ZXJuYWxUcmVlTm9kZUl0ZW06IEludGVybmFsVHJlZU5vZGVJdGVtPFQ+KTogVHJlZU5vZGVJdGVtPFQ+ID0+IHtcbiAgICBjb25zdCB7IGlkLCBsYWJlbCwgaWNvbiwgY2hlY2tlZCwgaXNFeHBhbmRlZCwgcGF5bG9hZCwgZWRpdGFibGUsIGNoaWxkcmVuIH0gPSBpbnRlcm5hbFRyZWVOb2RlSXRlbTtcbiAgICBjb25zdCBvYmplY3QgPSB7XG4gICAgICAgIGlkLFxuICAgICAgICBsYWJlbCxcbiAgICAgICAgaWNvbixcbiAgICAgICAgY2hlY2tlZCxcbiAgICAgICAgaXNFeHBhbmRlZCxcbiAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgZWRpdGFibGUsXG4gICAgICAgIF9jaGlsZHJlbjogY2hpbGRyZW4/Lm1hcChwYXJzZUludGVybmFsVHJlZU5vZGVJdGVtKSxcbiAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NoaWxkcmVuO1xuICAgICAgICB9LFxuICAgICAgICBzZXQgY2hpbGRyZW4odmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX2NoaWxkcmVuID0gdmFsdWU7XG4gICAgICAgICAgICBpbnRlcm5hbFRyZWVOb2RlSXRlbS5jaGlsZHJlbiA9IHZhbHVlO1xuICAgICAgICB9LFxuICAgIH07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgJ19jaGlsZHJlbicsIHtcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgfSk7XG4gICAgcmV0dXJuIG9iamVjdCBhcyBUcmVlTm9kZUl0ZW08VD47XG59O1xuXG4iLCI8ZGl2IGNsYXNzPVwidHJlZVwiICpzTG9hZGluZ1N0YXRlPVwibG9hZGluZ1wiPlxuICAgIEBmb3IoaXRlbSBvZiB0cmVlRGF0YTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIDxzLXRyZWUtbm9kZS1pdGVtXG4gICAgICAgICAgICBbc2hvd0NoZWNrYm94XT1cInNob3dDaGVja2JveFwiXG4gICAgICAgICAgICBbdHJlZU5vZGVJdGVtXT1cIml0ZW1cIlxuICAgICAgICAgICAgKG5vZGVFeHBhbmRlZCk9XCJvbk5vZGVFeHBhbmRlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChub2RlQ29sbGFwc2VkKT1cIm9uTm9kZUNvbGxhcHNlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICh0cmVlTm9kZUVkaXQpPVwib25UcmVlTm9kZUVkaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAodHJlZU5vZGVJdGVtQ2xpY2tlZCk9XCJvblRyZWVOb2RlSXRlbUNsaWNrZWQoJGV2ZW50KVwiPlxuICAgICAgICA8L3MtdHJlZS1ub2RlLWl0ZW0+XG5cbiAgICB9XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,14 +1,60 @@
|
|
|
1
1
|
import { Component, EventEmitter, HostBinding, HostListener, Input, Output, ViewChildren, } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "@angular/common";
|
|
4
|
+
/**
|
|
5
|
+
* @description Componente de seleção de workspace exibe um dropdown com a lista de espaços de trabalho
|
|
6
|
+
* disponíveis, permitindo ao usuário alternar entre eles. Suporta navegação por teclado
|
|
7
|
+
* (setas, Enter, Escape), estado desabilitado e um botão de ação customizável no rodapé.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```html
|
|
11
|
+
* <s-workspace-switch
|
|
12
|
+
* [workspaces]="workspaces"
|
|
13
|
+
* footerButtonLabel="Criar workspace"
|
|
14
|
+
* (selected)="onWorkspaceSelect($event)"
|
|
15
|
+
* (footerButtonClicked)="onCreate()"
|
|
16
|
+
* />
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* @category Navegação
|
|
20
|
+
*/
|
|
4
21
|
export class WorkspaceSwitchComponent {
|
|
5
22
|
eRef;
|
|
6
23
|
changeDetectorRef;
|
|
24
|
+
/**
|
|
25
|
+
* @description Lista de workspaces disponíveis para seleção. Campo obrigatório.
|
|
26
|
+
* Cada item deve implementar a interface `Workspace`.
|
|
27
|
+
* Lança um erro em runtime se a lista estiver vazia.
|
|
28
|
+
*/
|
|
7
29
|
workspaces = [];
|
|
30
|
+
/**
|
|
31
|
+
* @description Rótulo exibido no botão de ação localizado no rodapé do dropdown.
|
|
32
|
+
*
|
|
33
|
+
* @default 'Adicionar'
|
|
34
|
+
*/
|
|
8
35
|
footerButtonLabel = 'Adicionar';
|
|
36
|
+
/**
|
|
37
|
+
* @description Controla a visibilidade do botão de ação no rodapé do dropdown.
|
|
38
|
+
* Quando `false`, o botão não é renderizado.
|
|
39
|
+
*
|
|
40
|
+
* @default true
|
|
41
|
+
*/
|
|
9
42
|
showFooterButton = true;
|
|
43
|
+
/**
|
|
44
|
+
* @description Quando `true`, o componente fica desabilitado: não abre o dropdown,
|
|
45
|
+
* não emite eventos e fica inacessível via teclado (`tabindex = -1`).
|
|
46
|
+
*
|
|
47
|
+
* @default false
|
|
48
|
+
*/
|
|
10
49
|
disabled = false;
|
|
50
|
+
/**
|
|
51
|
+
* @description Emitido quando o usuário clica no botão de ação do rodapé do dropdown.
|
|
52
|
+
*/
|
|
11
53
|
footerButtonClicked = new EventEmitter();
|
|
54
|
+
/**
|
|
55
|
+
* @description Emitido quando o usuário seleciona um workspace da lista.
|
|
56
|
+
* Retorna o objeto `Workspace` selecionado.
|
|
57
|
+
*/
|
|
12
58
|
selected = new EventEmitter();
|
|
13
59
|
listItems = null;
|
|
14
60
|
get open() {
|
|
@@ -134,4 +180,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
134
180
|
type: HostListener,
|
|
135
181
|
args: ['keydown', ['$event']]
|
|
136
182
|
}] } });
|
|
137
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlLXN3aXRjaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvd29ya3NwYWNlLXN3aXRjaC9zcmMvbGliL3dvcmtzcGFjZS1zd2l0Y2gvd29ya3NwYWNlLXN3aXRjaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvd29ya3NwYWNlLXN3aXRjaC9zcmMvbGliL3dvcmtzcGFjZS1zd2l0Y2gvd29ya3NwYWNlLXN3aXRjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sWUFBWSxHQUNmLE1BQU0sZUFBZSxDQUFDOzs7QUFTdkIsTUFBTSxPQUFPLHdCQUF3QjtJQTBDWjtJQUNBO0lBekNkLFVBQVUsR0FBZ0IsRUFBRSxDQUFDO0lBRzdCLGlCQUFpQixHQUFHLFdBQVcsQ0FBQztJQUdoQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7SUFHeEIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUdqQixtQkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBR3pDLFFBQVEsR0FBNEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUd2RCxTQUFTLEdBQWlDLElBQUksQ0FBQztJQUV0RCxJQUFXLElBQUk7UUFDWCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQVcsSUFBSSxDQUFDLElBQWE7UUFDekIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXZDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDUCxJQUFJLENBQUMsdUJBQXVCLEVBQUUs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Qzt3R0FuSVEsd0JBQXdCOzRGQUF4Qix3QkFBd0IsZ2dCQ3JCckMsNG5FQWdFQTs7NEZEM0NhLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDSSxvQkFBb0I7K0dBTXZCLFVBQVU7c0JBRGhCLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUlsQixpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBSUMsZ0JBQWdCO3NCQUR0QixLQUFLO2dCQUlDLFFBQVE7c0JBRGQsS0FBSztnQkFJQyxtQkFBbUI7c0JBRHpCLE1BQU07Z0JBSUEsUUFBUTtzQkFEZCxNQUFNO2dCQUlBLFNBQVM7c0JBRGYsWUFBWTt1QkFBQyxVQUFVO2dCQTRCakIsUUFBUTtzQkFEZCxXQUFXO3VCQUFDLGVBQWU7Z0JBSXJCLFVBQVU7c0JBRGhCLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBUW5DLFNBQVM7c0JBRGYsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgV29ya3NwYWNlIH0gZnJvbSAnLi9tb2RlbHMvd29ya3NwYWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzLXdvcmtzcGFjZS1zd2l0Y2gnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi93b3Jrc3BhY2Utc3dpdGNoLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi93b3Jrc3BhY2Utc3dpdGNoLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFdvcmtzcGFjZVN3aXRjaENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICBwdWJsaWMgd29ya3NwYWNlczogV29ya3NwYWNlW10gPSBbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZvb3RlckJ1dHRvbkxhYmVsID0gJ0FkaWNpb25hcic7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93Rm9vdGVyQnV0dG9uID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgZm9vdGVyQnV0dG9uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBzZWxlY3RlZDogRXZlbnRFbWl0dGVyPFdvcmtzcGFjZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAVmlld0NoaWxkcmVuKCdsaXN0SXRlbScpXG4gICAgcHVibGljIGxpc3RJdGVtczogUXVlcnlMaXN0PEVsZW1lbnRSZWY+IHwgbnVsbCA9IG51bGw7XG5cbiAgICBwdWJsaWMgZ2V0IG9wZW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcGVuO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgb3BlbihvcGVuOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX29wZW4gPSBvcGVuO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICBpZiAob3Blbikge1xuICAgICAgICAgICAgdGhpcy5fY2FsY3VsYXRlTGlzdE1heEhlaWdodCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGhlaWdodCA9IDA7XG4gICAgcHVibGljIHNlbGVjdGVkSXRlbUluZGV4ID0gMDtcbiAgICBwdWJsaWMgY3VycmVudEl0ZW1JbmRleCA9IDA7XG5cbiAgICBwcml2YXRlIF9vcGVuID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBlUmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICApIHt9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKVxuICAgIHB1YmxpYyB0YWJpbmRleCA9IDA7XG5cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uQ2xpY2tvdXQoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmVSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJyB8fCBldmVudC5rZXkgPT09ICcgJykge1xuICAgICAgICAgICAgaWYgKHRoaXMub3Blbikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHdvcmtzcGFjZSA9IHRoaXMud29ya3NwYWNlc1t0aGlzLnNlbGVjdGVkSXRlbUluZGV4XTtcblxuICAgICAgICAgICAgICAgIGlmICh3b3Jrc3BhY2UuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtSW5kZXggPSB0aGlzLmN1cnJlbnRJdGVtSW5kZXg7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHRoaXMud29ya3NwYWNlc1t0aGlzLnNlbGVjdGVkSXRlbUluZGV4XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm9wZW4gPSAhdGhpcy5vcGVuO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRJdGVtSW5kZXggPCB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEl0ZW1JbmRleCsrO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Njcm9sbFRvQ3VycmVudEl0ZW0oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1VwJykge1xuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudEl0ZW1JbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRJdGVtSW5kZXgtLTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zY3JvbGxUb0N1cnJlbnRJdGVtKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLnRhYmluZGV4ID0gLTE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdXb3Jrc3BhY2VzIGxpc3QgaXMgZW1wdHkuJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYnV0dG9uT25CbHVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jdXJyZW50SXRlbUluZGV4ID0gdGhpcy5zZWxlY3RlZEl0ZW1JbmRleDtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25TZWxlY3RJdGVtKHdvcmtzcGFjZTogV29ya3NwYWNlKTogdm9pZCB7XG4gICAgICAgIGlmICh3b3Jrc3BhY2UuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbUluZGV4ID0gdGhpcy53b3Jrc3BhY2VzLmluZGV4T2Yod29ya3NwYWNlKTtcbiAgICAgICAgdGhpcy5jdXJyZW50SXRlbUluZGV4ID0gdGhpcy5zZWxlY3RlZEl0ZW1JbmRleDtcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHdvcmtzcGFjZSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRm9vdGVyQnV0dG9uQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZvb3RlckJ1dHRvbkNsaWNrZWQuZW1pdCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NhbGN1bGF0ZUxpc3RNYXhIZWlnaHQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHdvcmtzcGFjZUxpc3RSZWYgPSB0aGlzLmVSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcjd29ya3NwYWNlLWxpc3QnKTtcbiAgICAgICAgY29uc3QgeyB0b3AgfSA9IHdvcmtzcGFjZUxpc3RSZWYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgdGhpcy5oZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSB0b3AgLSAyMCAtICh0aGlzLnNob3dGb290ZXJCdXR0b24gPyA2NCA6IDApO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zY3JvbGxUb0N1cnJlbnRJdGVtKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50SXRlbSA9IHRoaXMubGlzdEl0ZW1zPy50b0FycmF5KClbdGhpcy5jdXJyZW50SXRlbUluZGV4XTtcbiAgICAgICAgaWYgKGN1cnJlbnRJdGVtKSB7XG4gICAgICAgICAgICBjdXJyZW50SXRlbS5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ25lYXJlc3QnIH0pO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGNsYXNzPVwid29ya3NwYWNlLXN3aXRjaFwiXG4gICAgW25nQ2xhc3NdPVwieyAnd29ya3NwYWNlLXN3aXRjaC0tZGlzYWJsZWQnOiBkaXNhYmxlZCB9XCJcbiAgICAoYmx1cik9XCJidXR0b25PbkJsdXIoKVwiXG4+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJvcGVuID0gIW9wZW5cIlxuICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW1cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGVcIj57eyB3b3Jrc3BhY2VzW3NlbGVjdGVkSXRlbUluZGV4XS50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VidGl0bGVcIj57eyB3b3Jrc3BhY2VzW3NlbGVjdGVkSXRlbUluZGV4XS5zdWJ0aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpY29uc1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYXMgZmEtY2hldnJvbi11cFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tZG93blwiPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgICAqbmdJZj1cIiFkaXNhYmxlZCAmJiBvcGVuXCJcbiAgICAgICAgY2xhc3M9XCJkcm9wLXBhbmVsXCJcbiAgICA+XG4gICAgICAgIDx1bFxuICAgICAgICAgICAgaWQ9XCJ3b3Jrc3BhY2UtbGlzdFwiXG4gICAgICAgICAgICBjbGFzcz1cIndvcmtzcGFjZS1saXN0XCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ21heC1oZWlnaHQnOiBoZWlnaHQgKyAncHgnIH1cIlxuICAgICAgICA+XG5cbiAgICAgICAgICAgIEBmb3Iod29ya3NwYWNlIG9mIHdvcmtzcGFjZXM7IHRyYWNrIHdvcmtzcGFjZS5pZDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICNsaXN0SXRlbVxuICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid29ya3NwYWNlXCJcbiAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICd3b3Jrc3BhY2UtLWZvY3VzZWQnOiBpID09PSBjdXJyZW50SXRlbUluZGV4ICYmICF3b3Jrc3BhY2UuZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICd3b3Jrc3BhY2UtLWRpc2FibGVkJzogd29ya3NwYWNlLmRpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdEl0ZW0od29ya3NwYWNlKVwiXG4gICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiPnt7IHdvcmtzcGFjZS50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWJ0aXRsZVwiPnt7IHdvcmtzcGFjZS5zdWJ0aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgIEBpZiAoaSA9PT0gc2VsZWN0ZWRJdGVtSW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFjdGl2ZS1pY29uIGZhcyBmYS1jaGVja1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgIDwvdWw+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd0Zvb3RlckJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImZvb3RlclwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvb3Rlcl9fYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Gb290ZXJCdXR0b25DbGljaygpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvb3Rlcl9fYnV0dG9uX19pY29uIGZhcyBmYS1wbHVzXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9vdGVyX19idXR0b25fX3RpdGxlXCI+e3sgZm9vdGVyQnV0dG9uTGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlLXN3aXRjaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvd29ya3NwYWNlLXN3aXRjaC9zcmMvbGliL3dvcmtzcGFjZS1zd2l0Y2gvd29ya3NwYWNlLXN3aXRjaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvd29ya3NwYWNlLXN3aXRjaC9zcmMvbGliL3dvcmtzcGFjZS1zd2l0Y2gvd29ya3NwYWNlLXN3aXRjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sWUFBWSxHQUNmLE1BQU0sZUFBZSxDQUFDOzs7QUFJdkI7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFNSCxNQUFNLE9BQU8sd0JBQXdCO0lBdUVaO0lBQ0E7SUF2RXJCOzs7O09BSUc7SUFFSSxVQUFVLEdBQWdCLEVBQUUsQ0FBQztJQUVwQzs7OztPQUlHO0lBRUksaUJBQWlCLEdBQUcsV0FBVyxDQUFDO0lBRXZDOzs7OztPQUtHO0lBRUksZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0lBRS9COzs7OztPQUtHO0lBRUksUUFBUSxHQUFHLEtBQUssQ0FBQztJQUV4Qjs7T0FFRztJQUVJLG1CQUFtQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFFaEQ7OztPQUdHO0lBRUksUUFBUSxHQUE0QixJQUFJLFlBQVksRUFBRSxDQUFDO0lBR3ZELFNBQVMsR0FBaUMsSUFBSSxDQUFDO0lBRXRELElBQVcsSUFBSTtRQUNYLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBVyxJQUFJLENBQUMsSUFBYTtRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLElB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V0FBVyxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZGLENBQUM7SUFDTCxDQUFDO3dHQWhLUSx3QkFBd0I7NEZBQXhCLHdCQUF3QixnZ0JDdENyQyw0bkVBZ0VBOzs0RkQxQmEsd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNJLG9CQUFvQjsrR0FXdkIsVUFBVTtzQkFEaEIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBU2xCLGlCQUFpQjtzQkFEdkIsS0FBSztnQkFVQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBVUMsUUFBUTtzQkFEZCxLQUFLO2dCQU9DLG1CQUFtQjtzQkFEekIsTUFBTTtnQkFRQSxRQUFRO3NCQURkLE1BQU07Z0JBSUEsU0FBUztzQkFEZixZQUFZO3VCQUFDLFVBQVU7Z0JBNEJqQixRQUFRO3NCQURkLFdBQVc7dUJBQUMsZUFBZTtnQkFJckIsVUFBVTtzQkFEaEIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFRbkMsU0FBUztzQkFEZixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBXb3Jrc3BhY2UgfSBmcm9tICcuL21vZGVscy93b3Jrc3BhY2UnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb21wb25lbnRlIGRlIHNlbGXDp8OjbyBkZSB3b3Jrc3BhY2UgZXhpYmUgdW0gZHJvcGRvd24gY29tIGEgbGlzdGEgZGUgZXNwYcOnb3MgZGUgdHJhYmFsaG9cbiAqIGRpc3BvbsOtdmVpcywgcGVybWl0aW5kbyBhbyB1c3XDoXJpbyBhbHRlcm5hciBlbnRyZSBlbGVzLiBTdXBvcnRhIG5hdmVnYcOnw6NvIHBvciB0ZWNsYWRvXG4gKiAoc2V0YXMsIEVudGVyLCBFc2NhcGUpLCBlc3RhZG8gZGVzYWJpbGl0YWRvIGUgdW0gYm90w6NvIGRlIGHDp8OjbyBjdXN0b21pesOhdmVsIG5vIHJvZGFww6kuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxzLXdvcmtzcGFjZS1zd2l0Y2hcbiAqICAgW3dvcmtzcGFjZXNdPVwid29ya3NwYWNlc1wiXG4gKiAgIGZvb3RlckJ1dHRvbkxhYmVsPVwiQ3JpYXIgd29ya3NwYWNlXCJcbiAqICAgKHNlbGVjdGVkKT1cIm9uV29ya3NwYWNlU2VsZWN0KCRldmVudClcIlxuICogICAoZm9vdGVyQnV0dG9uQ2xpY2tlZCk9XCJvbkNyZWF0ZSgpXCJcbiAqIC8+XG4gKiBgYGBcbiAqXG4gKiBAY2F0ZWdvcnkgTmF2ZWdhw6fDo29cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzLXdvcmtzcGFjZS1zd2l0Y2gnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi93b3Jrc3BhY2Utc3dpdGNoLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi93b3Jrc3BhY2Utc3dpdGNoLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFdvcmtzcGFjZVN3aXRjaENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3RhIGRlIHdvcmtzcGFjZXMgZGlzcG9uw612ZWlzIHBhcmEgc2VsZcOnw6NvLiBDYW1wbyBvYnJpZ2F0w7NyaW8uXG4gICAgICogQ2FkYSBpdGVtIGRldmUgaW1wbGVtZW50YXIgYSBpbnRlcmZhY2UgYFdvcmtzcGFjZWAuXG4gICAgICogTGFuw6dhIHVtIGVycm8gZW0gcnVudGltZSBzZSBhIGxpc3RhIGVzdGl2ZXIgdmF6aWEuXG4gICAgICovXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICBwdWJsaWMgd29ya3NwYWNlczogV29ya3NwYWNlW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSw7N0dWxvIGV4aWJpZG8gbm8gYm90w6NvIGRlIGHDp8OjbyBsb2NhbGl6YWRvIG5vIHJvZGFww6kgZG8gZHJvcGRvd24uXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAnQWRpY2lvbmFyJ1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZvb3RlckJ1dHRvbkxhYmVsID0gJ0FkaWNpb25hcic7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29udHJvbGEgYSB2aXNpYmlsaWRhZGUgZG8gYm90w6NvIGRlIGHDp8OjbyBubyByb2RhcMOpIGRvIGRyb3Bkb3duLlxuICAgICAqIFF1YW5kbyBgZmFsc2VgLCBvIGJvdMOjbyBuw6NvIMOpIHJlbmRlcml6YWRvLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dGb290ZXJCdXR0b24gPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFF1YW5kbyBgdHJ1ZWAsIG8gY29tcG9uZW50ZSBmaWNhIGRlc2FiaWxpdGFkbzogbsOjbyBhYnJlIG8gZHJvcGRvd24sXG4gICAgICogbsOjbyBlbWl0ZSBldmVudG9zIGUgZmljYSBpbmFjZXNzw612ZWwgdmlhIHRlY2xhZG8gKGB0YWJpbmRleCA9IC0xYCkuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBxdWFuZG8gbyB1c3XDoXJpbyBjbGljYSBubyBib3TDo28gZGUgYcOnw6NvIGRvIHJvZGFww6kgZG8gZHJvcGRvd24uXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGZvb3RlckJ1dHRvbkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBxdWFuZG8gbyB1c3XDoXJpbyBzZWxlY2lvbmEgdW0gd29ya3NwYWNlIGRhIGxpc3RhLlxuICAgICAqIFJldG9ybmEgbyBvYmpldG8gYFdvcmtzcGFjZWAgc2VsZWNpb25hZG8uXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8V29ya3NwYWNlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBWaWV3Q2hpbGRyZW4oJ2xpc3RJdGVtJylcbiAgICBwdWJsaWMgbGlzdEl0ZW1zOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj4gfCBudWxsID0gbnVsbDtcblxuICAgIHB1YmxpYyBnZXQgb3BlbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wZW47XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBvcGVuKG9wZW46IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fb3BlbiA9IG9wZW47XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIGlmIChvcGVuKSB7XG4gICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGVMaXN0TWF4SGVpZ2h0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaGVpZ2h0ID0gMDtcbiAgICBwdWJsaWMgc2VsZWN0ZWRJdGVtSW5kZXggPSAwO1xuICAgIHB1YmxpYyBjdXJyZW50SXRlbUluZGV4ID0gMDtcblxuICAgIHByaXZhdGUgX29wZW4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGVSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICkge31cblxuICAgIEBIb3N0QmluZGluZygnYXR0ci50YWJpbmRleCcpXG4gICAgcHVibGljIHRhYmluZGV4ID0gMDtcblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25DbGlja291dChldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZVJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleSA9PT0gJyAnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5vcGVuKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgd29ya3NwYWNlID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMuc2VsZWN0ZWRJdGVtSW5kZXhdO1xuXG4gICAgICAgICAgICAgICAgaWYgKHdvcmtzcGFjZS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1JbmRleCA9IHRoaXMuY3VycmVudEl0ZW1JbmRleDtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkLmVtaXQodGhpcy53b3Jrc3BhY2VzW3RoaXMuc2VsZWN0ZWRJdGVtSW5kZXhdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMub3BlbiA9ICF0aGlzLm9wZW47XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudEl0ZW1JbmRleCA8IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50SXRlbUluZGV4Kys7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2Nyb2xsVG9DdXJyZW50SXRlbSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50SXRlbUluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEl0ZW1JbmRleC0tO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Njcm9sbFRvQ3VycmVudEl0ZW0oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMudGFiaW5kZXggPSAtMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB2YWxpZGF0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLndvcmtzcGFjZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1dvcmtzcGFjZXMgbGlzdCBpcyBlbXB0eS4nKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBidXR0b25PbkJsdXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmN1cnJlbnRJdGVtSW5kZXggPSB0aGlzLnNlbGVjdGVkSXRlbUluZGV4O1xuICAgIH1cblxuICAgIHB1YmxpYyBvblNlbGVjdEl0ZW0od29ya3NwYWNlOiBXb3Jrc3BhY2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKHdvcmtzcGFjZS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtSW5kZXggPSB0aGlzLndvcmtzcGFjZXMuaW5kZXhPZih3b3Jrc3BhY2UpO1xuICAgICAgICB0aGlzLmN1cnJlbnRJdGVtSW5kZXggPSB0aGlzLnNlbGVjdGVkSXRlbUluZGV4O1xuICAgICAgICB0aGlzLnNlbGVjdGVkLmVtaXQod29ya3NwYWNlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Gb290ZXJCdXR0b25DbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZm9vdGVyQnV0dG9uQ2xpY2tlZC5lbWl0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlTGlzdE1heEhlaWdodCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgd29ya3NwYWNlTGlzdFJlZiA9IHRoaXMuZVJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJyN3b3Jrc3BhY2UtbGlzdCcpO1xuICAgICAgICBjb25zdCB7IHRvcCB9ID0gd29ya3NwYWNlTGlzdFJlZi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICB0aGlzLmhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCAtIHRvcCAtIDIwIC0gKHRoaXMuc2hvd0Zvb3RlckJ1dHRvbiA/IDY0IDogMCk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3Njcm9sbFRvQ3VycmVudEl0ZW0oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gdGhpcy5saXN0SXRlbXM/LnRvQXJyYXkoKVt0aGlzLmN1cnJlbnRJdGVtSW5kZXhdO1xuICAgICAgICBpZiAoY3VycmVudEl0ZW0pIHtcbiAgICAgICAgICAgIGN1cnJlbnRJdGVtLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnbmVhcmVzdCcgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbiIsIjxkaXZcbiAgICBjbGFzcz1cIndvcmtzcGFjZS1zd2l0Y2hcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ3dvcmtzcGFjZS1zd2l0Y2gtLWRpc2FibGVkJzogZGlzYWJsZWQgfVwiXG4gICAgKGJsdXIpPVwiYnV0dG9uT25CbHVyKClcIlxuPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwib3BlbiA9ICFvcGVuXCJcbiAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+e3sgd29ya3NwYWNlc1tzZWxlY3RlZEl0ZW1JbmRleF0udGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1YnRpdGxlXCI+e3sgd29ya3NwYWNlc1tzZWxlY3RlZEl0ZW1JbmRleF0uc3VidGl0bGUgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbnNcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tdXBcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWRvd25cIj48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCIhZGlzYWJsZWQgJiYgb3BlblwiXG4gICAgICAgIGNsYXNzPVwiZHJvcC1wYW5lbFwiXG4gICAgPlxuICAgICAgICA8dWxcbiAgICAgICAgICAgIGlkPVwid29ya3NwYWNlLWxpc3RcIlxuICAgICAgICAgICAgY2xhc3M9XCJ3b3Jrc3BhY2UtbGlzdFwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICdtYXgtaGVpZ2h0JzogaGVpZ2h0ICsgJ3B4JyB9XCJcbiAgICAgICAgPlxuXG4gICAgICAgICAgICBAZm9yKHdvcmtzcGFjZSBvZiB3b3Jrc3BhY2VzOyB0cmFjayB3b3Jrc3BhY2UuaWQ7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAjbGlzdEl0ZW1cbiAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndvcmtzcGFjZVwiXG4gICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAnd29ya3NwYWNlLS1mb2N1c2VkJzogaSA9PT0gY3VycmVudEl0ZW1JbmRleCAmJiAhd29ya3NwYWNlLmRpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAnd29ya3NwYWNlLS1kaXNhYmxlZCc6IHdvcmtzcGFjZS5kaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3RJdGVtKHdvcmtzcGFjZSlcIlxuICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGVcIj57eyB3b3Jrc3BhY2UudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VidGl0bGVcIj57eyB3b3Jrc3BhY2Uuc3VidGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICBAaWYgKGkgPT09IHNlbGVjdGVkSXRlbUluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhY3RpdmUtaWNvbiBmYXMgZmEtY2hlY2tcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIH1cblxuICAgICAgICA8L3VsPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cInNob3dGb290ZXJCdXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJmb290ZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb290ZXJfX2J1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRm9vdGVyQnV0dG9uQ2xpY2soKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb290ZXJfX2J1dHRvbl9faWNvbiBmYXMgZmEtcGx1c1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvb3Rlcl9fYnV0dG9uX190aXRsZVwiPnt7IGZvb3RlckJ1dHRvbkxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -12,16 +12,76 @@ import { SwitchModule } from '@seniorsistemas/angular-components/switch';
|
|
|
12
12
|
import { Subject } from 'rxjs';
|
|
13
13
|
import { takeUntil } from 'rxjs/operators';
|
|
14
14
|
|
|
15
|
+
/**
|
|
16
|
+
* @description Painel individual do {@link AccordionComponent}. Gerencia o estado de
|
|
17
|
+
* abertura/fechamento com animação, podendo conter um switch de controle via `switchControl`,
|
|
18
|
+
* botões de ação configuráveis e uma mensagem de validação com ícone.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```html
|
|
22
|
+
* <s-accordion-panel
|
|
23
|
+
* header="Configurações"
|
|
24
|
+
* [disabled]="false"
|
|
25
|
+
* (panelOpened)="onOpen()"
|
|
26
|
+
* (panelClosed)="onClose()">
|
|
27
|
+
* <p>Conteúdo do painel</p>
|
|
28
|
+
* </s-accordion-panel>
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @category Inputs
|
|
32
|
+
*/
|
|
15
33
|
class AccordionPanelComponent {
|
|
34
|
+
/**
|
|
35
|
+
* @description Título exibido no cabeçalho do painel. Campo obrigatório.
|
|
36
|
+
*/
|
|
16
37
|
header;
|
|
38
|
+
/**
|
|
39
|
+
* @description Lista de botões de ação exibidos no cabeçalho do painel,
|
|
40
|
+
* à direita do título. Cada item define ícone, tooltip e callback de clique.
|
|
41
|
+
*/
|
|
17
42
|
buttons;
|
|
43
|
+
/**
|
|
44
|
+
* @description Desabilita a interação do usuário com o painel, impedindo abertura e fechamento.
|
|
45
|
+
*
|
|
46
|
+
* @default false
|
|
47
|
+
*/
|
|
18
48
|
disabled = false;
|
|
49
|
+
/**
|
|
50
|
+
* @description `FormControl` vinculado a um switch exibido no cabeçalho do painel.
|
|
51
|
+
* Permite habilitar/desabilitar o conteúdo do painel via toggle.
|
|
52
|
+
*/
|
|
19
53
|
switchControl;
|
|
54
|
+
/**
|
|
55
|
+
* @description Mensagem de validação exibida abaixo do cabeçalho, acompanhada de um ícone.
|
|
56
|
+
* Útil para indicar erros ou alertas relacionados ao conteúdo do painel.
|
|
57
|
+
*/
|
|
20
58
|
validationMessage;
|
|
59
|
+
/**
|
|
60
|
+
* @description Mantém o conteúdo do painel no DOM mesmo quando fechado (modo cache).
|
|
61
|
+
* Útil para preservar o estado de componentes internos ao reabrir o painel.
|
|
62
|
+
*
|
|
63
|
+
* @default false
|
|
64
|
+
*/
|
|
21
65
|
cache = false;
|
|
66
|
+
/**
|
|
67
|
+
* @description Classe do ícone exibido ao lado da mensagem de validação.
|
|
68
|
+
*
|
|
69
|
+
* @default 'fas fa-exclamation-circle'
|
|
70
|
+
*/
|
|
22
71
|
validationMessageIcon = 'fas fa-exclamation-circle';
|
|
72
|
+
/**
|
|
73
|
+
* @description Cor do ícone da mensagem de validação.
|
|
74
|
+
*
|
|
75
|
+
* @default 'Red'
|
|
76
|
+
*/
|
|
23
77
|
validationMessageIconColor = 'Red';
|
|
78
|
+
/**
|
|
79
|
+
* @description Emitido quando o painel é aberto pelo usuário.
|
|
80
|
+
*/
|
|
24
81
|
panelOpened = new EventEmitter();
|
|
82
|
+
/**
|
|
83
|
+
* @description Emitido quando o painel é fechado pelo usuário.
|
|
84
|
+
*/
|
|
25
85
|
panelClosed = new EventEmitter();
|
|
26
86
|
isAnimating = false;
|
|
27
87
|
isContentAnimationDisabled = true;
|
|
@@ -129,8 +189,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
129
189
|
type: Output
|
|
130
190
|
}] } });
|
|
131
191
|
|
|
192
|
+
/**
|
|
193
|
+
* @description Componente de acordeão que gerencia a abertura e o fechamento de painéis
|
|
194
|
+
* {@link AccordionPanelComponent}. Suporta modo de painel único (apenas um aberto por vez)
|
|
195
|
+
* ou modo múltiplo (vários painéis abertos simultaneamente), configurável via input `multiple`.
|
|
196
|
+
*
|
|
197
|
+
* @example
|
|
198
|
+
* ```html
|
|
199
|
+
* <s-accordion [multiple]="false" [activeIndex]="0">
|
|
200
|
+
* <s-accordion-panel header="Seção 1">Conteúdo 1</s-accordion-panel>
|
|
201
|
+
* <s-accordion-panel header="Seção 2">Conteúdo 2</s-accordion-panel>
|
|
202
|
+
* </s-accordion>
|
|
203
|
+
* ```
|
|
204
|
+
*
|
|
205
|
+
* @category Inputs
|
|
206
|
+
*/
|
|
132
207
|
class AccordionComponent {
|
|
208
|
+
/**
|
|
209
|
+
* @description Índice (ou lista de índices) do(s) painel(is) que devem iniciar abertos.
|
|
210
|
+
* Aceita um número para painel único ou um array de números para o modo múltiplo.
|
|
211
|
+
*/
|
|
133
212
|
activeIndex;
|
|
213
|
+
/**
|
|
214
|
+
* @description Permite que múltiplos painéis estejam abertos ao mesmo tempo.
|
|
215
|
+
* Quando `false`, abrir um painel fecha automaticamente o anterior.
|
|
216
|
+
*
|
|
217
|
+
* @default false
|
|
218
|
+
*/
|
|
134
219
|
multiple = false;
|
|
135
220
|
panelsComponents;
|
|
136
221
|
_unsubscribe$ = new Subject();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seniorsistemas-angular-components-accordion.mjs","sources":["../../projects/angular-components/accordion/src/lib/accordion/components/accordion-panel/accordion-panel.component.ts","../../projects/angular-components/accordion/src/lib/accordion/components/accordion-panel/accordion-panel.component.html","../../projects/angular-components/accordion/src/lib/accordion/accordion.component.ts","../../projects/angular-components/accordion/src/lib/accordion/accordion.component.html","../../projects/angular-components/accordion/src/lib/accordion/accordion.module.ts","../../projects/angular-components/accordion/src/seniorsistemas-angular-components-accordion.ts"],"sourcesContent":["import { AfterViewInit, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { trigger, style, animate, transition, state } from '@angular/animations';\n\nimport { UntypedFormControl } from '@angular/forms';\nimport { AccordionButtonSettings, ValidationMessageIconColor } from '../../models/accordion-button-settings';\n\n@Component({\n selector: 's-accordion-panel',\n templateUrl: './accordion-panel.component.html',\n styleUrls: ['./accordion-panel.component.scss'],\n animations: [\n trigger('cachelessAnimation', [\n transition(':enter', [style({ height: '0' }), animate('200ms linear', style({ height: '*' }))]),\n transition(':leave', [style({ height: '*' }), animate('200ms linear', style({ height: '0' }))]),\n ]),\n trigger('cacheAnimation', [\n state('true', style({ height: '*' })),\n state('false', style({ height: '0px' })),\n transition('* => *', animate('200ms')),\n ]),\n ],\n})\nexport class AccordionPanelComponent implements OnChanges, AfterViewInit {\n @Input({ required: true })\n public header!: string;\n\n @Input()\n public buttons?: AccordionButtonSettings[];\n\n @Input()\n public disabled = false;\n\n @Input()\n public switchControl?: UntypedFormControl;\n\n @Input()\n public validationMessage?: string;\n\n @Input()\n public cache = false;\n\n @Input() validationMessageIcon = 'fas fa-exclamation-circle';\n\n @Input() validationMessageIconColor: ValidationMessageIconColor = 'Red';\n\n @Output()\n public panelOpened = new EventEmitter<void>();\n\n @Output()\n public panelClosed = new EventEmitter<void>();\n\n public isAnimating = false;\n public isContentAnimationDisabled = true;\n\n private _isOpen = false;\n\n public get isOpen() {\n return this._isOpen;\n }\n\n public set isOpen(isOpen: boolean) {\n this._isOpen = isOpen;\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if ('disabled' in changes && this.switchControl) {\n if (changes['disabled'].currentValue) {\n this.switchControl.disable({ emitEvent: false });\n } else {\n this.switchControl.enable({ emitEvent: false });\n }\n }\n\n if ('switch' in changes && 'switchControl' in changes) {\n throw new Error(\"You can't set switch and switchControl together.\");\n }\n }\n\n public ngAfterViewInit(): void {\n // to executed at a safe time prior to control returning to the browser's event loop\n queueMicrotask(() => {\n this.isContentAnimationDisabled = false;\n });\n }\n\n public onIconButtonsClick(event: Event, callback: VoidFunction) {\n if (this.disabled) {\n return;\n }\n\n event.stopPropagation();\n callback();\n }\n\n public onTabClick() {\n if (this.disabled || this.isAnimating) {\n return;\n }\n this.isOpen = !this.isOpen;\n this._emitPanelEvent();\n }\n\n public onContentAnimationStart() {\n this.isAnimating = true;\n }\n\n public onContentAnimationDone() {\n this.isAnimating = false;\n\n this._emitPanelEvent();\n }\n\n private _emitPanelEvent() {\n if (this.isOpen) {\n this.panelOpened.emit();\n } else {\n this.panelClosed.emit();\n }\n }\n}\n","<div\n class=\"accordion-panel\"\n [class.accordion-panel--open]=\"isOpen\"\n [class.accordion-panel--disabled]=\"disabled\"\n>\n <div\n class=\"header\"\n (click)=\"onTabClick()\"\n >\n <div class=\"header__title\">\n <span\n class=\"icon fas\"\n [class.fa-minus]=\"isOpen\"\n [class.fa-plus]=\"!isOpen\"\n >\n </span>\n @if (validationMessage) {\n <span\n class=\"exclamation-icon\"\n [class]=\"validationMessageIcon\"\n [sTooltip]=\"validationMessage\"\n [class.exclamation-icon-red]=\"validationMessageIconColor === 'Red'\"\n [class.exclamation-icon-orange]=\"validationMessageIconColor === 'Orange'\"\n [class.exclamation-icon-yellow]=\"validationMessageIconColor === 'Yellow'\"\n [class.exclamation-icon-green]=\"validationMessageIconColor === 'Green'\"\n [class.exclamation-icon-blue]=\"validationMessageIconColor === 'Blue'\"\n >\n </span>\n }\n <span class=\"title\">{{ header }}</span>\n </div>\n <div class=\"header__controls\">\n @for (button of buttons; track button.icon) {\n <button\n class=\"icon-button\"\n [ngClass]=\"button.icon\"\n (click)=\"onIconButtonsClick($event, button.onClick)\"\n ></button>\n }\n\n @if (switchControl) {\n <s-switch\n class=\"switch\"\n [formControl]=\"switchControl\"\n (click)=\"$event.stopPropagation()\"\n >\n </s-switch>\n }\n </div>\n </div>\n\n @if (cache) {\n <div\n class=\"content\"\n [@cacheAnimation]=\"isOpen\"\n [@.disabled]=\"isContentAnimationDisabled\"\n (@cacheAnimation.start)=\"onContentAnimationStart()\"\n (@cacheAnimation.done)=\"onContentAnimationDone()\"\n >\n <div class=\"content-container\">\n <ng-container [ngTemplateOutlet]=\"panelContent\"></ng-container>\n </div>\n </div>\n } @else {\n @if (isOpen) {\n <div\n class=\"content\"\n @cachelessAnimation\n [@.disabled]=\"isContentAnimationDisabled\"\n (@cachelessAnimation.start)=\"onContentAnimationStart()\"\n (@cachelessAnimation.done)=\"onContentAnimationDone()\"\n >\n <div class=\"content-container\">\n <ng-container [ngTemplateOutlet]=\"panelContent\"></ng-container>\n </div>\n </div>\n }\n }\n</div>\n\n<ng-template #panelContent>\n <ng-content></ng-content>\n</ng-template>\n","import {\n AfterContentInit,\n OnChanges,\n Component,\n ContentChildren,\n Input,\n QueryList,\n SimpleChanges,\n OnDestroy,\n} from '@angular/core';\n\nimport { AccordionPanelComponent } from './components/accordion-panel/accordion-panel.component';\nimport { Subject, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 's-accordion',\n templateUrl: './accordion.component.html',\n styleUrls: ['./accordion.component.scss'],\n})\nexport class AccordionComponent implements AfterContentInit, OnChanges, OnDestroy {\n @Input()\n public activeIndex?: number | number[];\n\n @Input()\n public multiple = false;\n\n @ContentChildren(AccordionPanelComponent)\n public panelsComponents?: QueryList<AccordionPanelComponent>;\n\n private readonly _unsubscribe$ = new Subject<void>();\n private _panels: AccordionPanelComponent[] = [];\n private _openSubs: Subscription[] = [];\n\n public ngAfterContentInit(): void {\n if (this.panelsComponents) {\n this._panels = this.panelsComponents?.toArray();\n }\n\n this._openSubs = Array.from({ length: this._panels.length });\n\n this._setBehavior(this.multiple);\n this._setupTabs();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes['multiple']) {\n this._setBehavior(changes['multiple'].currentValue);\n }\n }\n\n public ngOnDestroy(): void {\n this._unsubscribe$.next();\n this._unsubscribe$.complete();\n }\n\n private _setupTabs(): void {\n if (this._panels?.length) {\n if (this.activeIndex !== undefined && this.activeIndex !== null) {\n const activeTabs = Array.isArray(this.activeIndex)\n ? this._panels.filter((_, index) => (this.activeIndex as number[]).includes(index))\n : [this._panels[this.activeIndex]];\n\n if (activeTabs.length === 0) {\n throw new Error('activeIndex does not represent any panel.');\n }\n\n for (const activeTab of activeTabs) {\n if (!activeTab.disabled) {\n activeTab.isOpen = true;\n }\n }\n }\n }\n }\n\n private _closeOtherTabs(exception: number) {\n this._panels.forEach((panel, index) => {\n if (index !== exception) {\n panel.isOpen = false;\n }\n });\n }\n\n private _setBehavior(multiple: boolean): void {\n if (multiple) {\n this._enableMultiplePanelBehavior();\n } else {\n this._enableSinglePanelBehavior();\n }\n }\n\n private _enableSinglePanelBehavior() {\n this._panels.forEach((panel, index) => {\n this._openSubs[index] = panel.panelOpened.pipe(takeUntil(this._unsubscribe$)).subscribe(() => {\n this._closeOtherTabs(index);\n });\n });\n }\n\n private _enableMultiplePanelBehavior() {\n this._panels.forEach((_, index) => {\n if (this._openSubs[index]) {\n this._openSubs[index].unsubscribe();\n }\n });\n }\n}\n","<div class=\"accordion\">\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { AccordionComponent } from './accordion.component';\nimport { AccordionPanelComponent } from './components/accordion-panel/accordion-panel.component';\nimport { TooltipModule } from '@seniorsistemas/angular-components/tooltip';\nimport { SwitchModule } from '@seniorsistemas/angular-components/switch';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TooltipModule,\n SwitchModule,\n ],\n declarations: [AccordionComponent, AccordionPanelComponent],\n exports: [AccordionComponent, AccordionPanelComponent],\n})\nexport class AccordionModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;MAsBa,uBAAuB,CAAA;AAEzB,IAAA,MAAM,CAAU;AAGhB,IAAA,OAAO,CAA6B;IAGpC,QAAQ,GAAG,KAAK,CAAC;AAGjB,IAAA,aAAa,CAAsB;AAGnC,IAAA,iBAAiB,CAAU;IAG3B,KAAK,GAAG,KAAK,CAAC;IAEZ,qBAAqB,GAAG,2BAA2B,CAAC;IAEpD,0BAA0B,GAA+B,KAAK,CAAC;AAGjE,IAAA,WAAW,GAAG,IAAI,YAAY,EAAQ,CAAC;AAGvC,IAAA,WAAW,GAAG,IAAI,YAAY,EAAQ,CAAC;IAEvC,WAAW,GAAG,KAAK,CAAC;IACpB,0BAA0B,GAAG,IAAI,CAAC;IAEjC,OAAO,GAAG,KAAK,CAAC;AAExB,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;IAED,IAAW,MAAM,CAAC,MAAe,EAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;KACzB;AAEM,IAAA,WAAW,CAAC,OAAsB,EAAA;QACrC,IAAI,UAAU,IAAI,OAAO,IAAI,IAAI,CAAC,aAAa,EAAE;AAC7C,YAAA,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,EAAE;gBAClC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;aACpD;iBAAM;gBACH,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;aACnD;SACJ;QAED,IAAI,QAAQ,IAAI,OAAO,IAAI,eAAe,IAAI,OAAO,EAAE;AACnD,YAAA,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;SACvE;KACJ;IAEM,eAAe,GAAA;;QAElB,cAAc,CAAC,MAAK;AAChB,YAAA,IAAI,CAAC,0BAA0B,GAAG,KAAK,CAAC;AAC5C,SAAC,CAAC,CAAC;KACN;IAEM,kBAAkB,CAAC,KAAY,EAAE,QAAsB,EAAA;AAC1D,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO;SACV;QAED,KAAK,CAAC,eAAe,EAAE,CAAC;AACxB,QAAA,QAAQ,EAAE,CAAC;KACd;IAEM,UAAU,GAAA;QACb,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;YACnC,OAAO;SACV;AACD,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;IAEM,uBAAuB,GAAA;AAC1B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;KAC3B;IAEM,sBAAsB,GAAA;AACzB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAEzB,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;IAEO,eAAe,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACb,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;SAC3B;aAAM;AACH,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;SAC3B;KACJ;wGAhGQ,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAvB,uBAAuB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtBpC,m8FAmFA,EDzEgB,MAAA,EAAA,CAAA,+2DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,QAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACR,OAAO,CAAC,oBAAoB,EAAE;gBAC1B,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC/F,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;aAClG,CAAC;YACF,OAAO,CAAC,gBAAgB,EAAE;gBACtB,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;gBACrC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AACxC,gBAAA,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;aACzC,CAAC;AACL,SAAA,EAAA,CAAA,CAAA;;4FAEQ,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAhBnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAGjB,UAAA,EAAA;wBACR,OAAO,CAAC,oBAAoB,EAAE;4BAC1B,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;4BAC/F,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;yBAClG,CAAC;wBACF,OAAO,CAAC,gBAAgB,EAAE;4BACtB,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;4BACrC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AACxC,4BAAA,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;yBACzC,CAAC;AACL,qBAAA,EAAA,QAAA,EAAA,m8FAAA,EAAA,MAAA,EAAA,CAAA,+2DAAA,CAAA,EAAA,CAAA;8BAIM,MAAM,EAAA,CAAA;sBADZ,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;gBAIlB,OAAO,EAAA,CAAA;sBADb,KAAK;gBAIC,QAAQ,EAAA,CAAA;sBADd,KAAK;gBAIC,aAAa,EAAA,CAAA;sBADnB,KAAK;gBAIC,iBAAiB,EAAA,CAAA;sBADvB,KAAK;gBAIC,KAAK,EAAA,CAAA;sBADX,KAAK;gBAGG,qBAAqB,EAAA,CAAA;sBAA7B,KAAK;gBAEG,0BAA0B,EAAA,CAAA;sBAAlC,KAAK;gBAGC,WAAW,EAAA,CAAA;sBADjB,MAAM;gBAIA,WAAW,EAAA,CAAA;sBADjB,MAAM;;;ME5BE,kBAAkB,CAAA;AAEpB,IAAA,WAAW,CAAqB;IAGhC,QAAQ,GAAG,KAAK,CAAC;AAGjB,IAAA,gBAAgB,CAAsC;AAE5C,IAAA,aAAa,GAAG,IAAI,OAAO,EAAQ,CAAC;IAC7C,OAAO,GAA8B,EAAE,CAAC;IACxC,SAAS,GAAmB,EAAE,CAAC;IAEhC,kBAAkB,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,OAAO,EAAE,CAAC;SACnD;AAED,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAE7D,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjC,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB;AAEM,IAAA,WAAW,CAAC,OAAsB,EAAA;AACrC,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC;SACvD;KACJ;IAEM,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;KACjC;IAEO,UAAU,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE;AACtB,YAAA,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE;gBAC7D,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;sBAC5C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,KAAM,IAAI,CAAC,WAAwB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;sBACjF,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AAEvC,gBAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AACzB,oBAAA,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;iBAChE;AAED,gBAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;AAChC,oBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AACrB,wBAAA,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC;qBAC3B;iBACJ;aACJ;SACJ;KACJ;AAEO,IAAA,eAAe,CAAC,SAAiB,EAAA;QACrC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;AAClC,YAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACrB,gBAAA,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;aACxB;AACL,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,YAAY,CAAC,QAAiB,EAAA;QAClC,IAAI,QAAQ,EAAE;YACV,IAAI,CAAC,4BAA4B,EAAE,CAAC;SACvC;aAAM;YACH,IAAI,CAAC,0BAA0B,EAAE,CAAC;SACrC;KACJ;IAEO,0BAA0B,GAAA;QAC9B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;YAClC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AACzF,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AAChC,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACN;IAEO,4BAA4B,GAAA;QAChC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;AAC9B,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACvB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;aACvC;AACL,SAAC,CAAC,CAAC;KACN;wGAtFQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAlB,kBAAkB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,SAAA,EAOV,uBAAuB,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3B5C,oEAGA,EAAA,MAAA,EAAA,CAAA,0EAAA,CAAA,EAAA,CAAA,CAAA;;4FDiBa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;+BACI,aAAa,EAAA,QAAA,EAAA,oEAAA,EAAA,MAAA,EAAA,CAAA,0EAAA,CAAA,EAAA,CAAA;8BAMhB,WAAW,EAAA,CAAA;sBADjB,KAAK;gBAIC,QAAQ,EAAA,CAAA;sBADd,KAAK;gBAIC,gBAAgB,EAAA,CAAA;sBADtB,eAAe;uBAAC,uBAAuB,CAAA;;;MEP/B,eAAe,CAAA;wGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,EAHT,YAAA,EAAA,CAAA,kBAAkB,EAAE,uBAAuB,aANtD,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,aAAa;YACb,YAAY,CAAA,EAAA,OAAA,EAAA,CAGN,kBAAkB,EAAE,uBAAuB,CAAA,EAAA,CAAA,CAAA;AAE5C,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YATpB,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,aAAa;YACb,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAKP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAX3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,aAAa;wBACb,YAAY;AACf,qBAAA;AACD,oBAAA,YAAY,EAAE,CAAC,kBAAkB,EAAE,uBAAuB,CAAC;AAC3D,oBAAA,OAAO,EAAE,CAAC,kBAAkB,EAAE,uBAAuB,CAAC;AACzD,iBAAA,CAAA;;;ACnBD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"seniorsistemas-angular-components-accordion.mjs","sources":["../../projects/angular-components/accordion/src/lib/accordion/components/accordion-panel/accordion-panel.component.ts","../../projects/angular-components/accordion/src/lib/accordion/components/accordion-panel/accordion-panel.component.html","../../projects/angular-components/accordion/src/lib/accordion/accordion.component.ts","../../projects/angular-components/accordion/src/lib/accordion/accordion.component.html","../../projects/angular-components/accordion/src/lib/accordion/accordion.module.ts","../../projects/angular-components/accordion/src/seniorsistemas-angular-components-accordion.ts"],"sourcesContent":["import { AfterViewInit, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { trigger, style, animate, transition, state } from '@angular/animations';\n\nimport { UntypedFormControl } from '@angular/forms';\nimport { AccordionButtonSettings, ValidationMessageIconColor } from '../../models/accordion-button-settings';\n\n/**\n * @description Painel individual do {@link AccordionComponent}. Gerencia o estado de\n * abertura/fechamento com animação, podendo conter um switch de controle via `switchControl`,\n * botões de ação configuráveis e uma mensagem de validação com ícone.\n *\n * @example\n * ```html\n * <s-accordion-panel\n * header=\"Configurações\"\n * [disabled]=\"false\"\n * (panelOpened)=\"onOpen()\"\n * (panelClosed)=\"onClose()\">\n * <p>Conteúdo do painel</p>\n * </s-accordion-panel>\n * ```\n *\n * @category Inputs\n */\n@Component({\n selector: 's-accordion-panel',\n templateUrl: './accordion-panel.component.html',\n styleUrls: ['./accordion-panel.component.scss'],\n animations: [\n trigger('cachelessAnimation', [\n transition(':enter', [style({ height: '0' }), animate('200ms linear', style({ height: '*' }))]),\n transition(':leave', [style({ height: '*' }), animate('200ms linear', style({ height: '0' }))]),\n ]),\n trigger('cacheAnimation', [\n state('true', style({ height: '*' })),\n state('false', style({ height: '0px' })),\n transition('* => *', animate('200ms')),\n ]),\n ],\n})\nexport class AccordionPanelComponent implements OnChanges, AfterViewInit {\n /**\n * @description Título exibido no cabeçalho do painel. Campo obrigatório.\n */\n @Input({ required: true })\n public header!: string;\n\n /**\n * @description Lista de botões de ação exibidos no cabeçalho do painel,\n * à direita do título. Cada item define ícone, tooltip e callback de clique.\n */\n @Input()\n public buttons?: AccordionButtonSettings[];\n\n /**\n * @description Desabilita a interação do usuário com o painel, impedindo abertura e fechamento.\n *\n * @default false\n */\n @Input()\n public disabled = false;\n\n /**\n * @description `FormControl` vinculado a um switch exibido no cabeçalho do painel.\n * Permite habilitar/desabilitar o conteúdo do painel via toggle.\n */\n @Input()\n public switchControl?: UntypedFormControl;\n\n /**\n * @description Mensagem de validação exibida abaixo do cabeçalho, acompanhada de um ícone.\n * Útil para indicar erros ou alertas relacionados ao conteúdo do painel.\n */\n @Input()\n public validationMessage?: string;\n\n /**\n * @description Mantém o conteúdo do painel no DOM mesmo quando fechado (modo cache).\n * Útil para preservar o estado de componentes internos ao reabrir o painel.\n *\n * @default false\n */\n @Input()\n public cache = false;\n\n /**\n * @description Classe do ícone exibido ao lado da mensagem de validação.\n *\n * @default 'fas fa-exclamation-circle'\n */\n @Input() validationMessageIcon = 'fas fa-exclamation-circle';\n\n /**\n * @description Cor do ícone da mensagem de validação.\n *\n * @default 'Red'\n */\n @Input() validationMessageIconColor: ValidationMessageIconColor = 'Red';\n\n /**\n * @description Emitido quando o painel é aberto pelo usuário.\n */\n @Output()\n public panelOpened = new EventEmitter<void>();\n\n /**\n * @description Emitido quando o painel é fechado pelo usuário.\n */\n @Output()\n public panelClosed = new EventEmitter<void>();\n\n public isAnimating = false;\n public isContentAnimationDisabled = true;\n\n private _isOpen = false;\n\n public get isOpen() {\n return this._isOpen;\n }\n\n public set isOpen(isOpen: boolean) {\n this._isOpen = isOpen;\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if ('disabled' in changes && this.switchControl) {\n if (changes['disabled'].currentValue) {\n this.switchControl.disable({ emitEvent: false });\n } else {\n this.switchControl.enable({ emitEvent: false });\n }\n }\n\n if ('switch' in changes && 'switchControl' in changes) {\n throw new Error(\"You can't set switch and switchControl together.\");\n }\n }\n\n public ngAfterViewInit(): void {\n // to executed at a safe time prior to control returning to the browser's event loop\n queueMicrotask(() => {\n this.isContentAnimationDisabled = false;\n });\n }\n\n public onIconButtonsClick(event: Event, callback: VoidFunction) {\n if (this.disabled) {\n return;\n }\n\n event.stopPropagation();\n callback();\n }\n\n public onTabClick() {\n if (this.disabled || this.isAnimating) {\n return;\n }\n this.isOpen = !this.isOpen;\n this._emitPanelEvent();\n }\n\n public onContentAnimationStart() {\n this.isAnimating = true;\n }\n\n public onContentAnimationDone() {\n this.isAnimating = false;\n\n this._emitPanelEvent();\n }\n\n private _emitPanelEvent() {\n if (this.isOpen) {\n this.panelOpened.emit();\n } else {\n this.panelClosed.emit();\n }\n }\n}\n\n","<div\n class=\"accordion-panel\"\n [class.accordion-panel--open]=\"isOpen\"\n [class.accordion-panel--disabled]=\"disabled\"\n>\n <div\n class=\"header\"\n (click)=\"onTabClick()\"\n >\n <div class=\"header__title\">\n <span\n class=\"icon fas\"\n [class.fa-minus]=\"isOpen\"\n [class.fa-plus]=\"!isOpen\"\n >\n </span>\n @if (validationMessage) {\n <span\n class=\"exclamation-icon\"\n [class]=\"validationMessageIcon\"\n [sTooltip]=\"validationMessage\"\n [class.exclamation-icon-red]=\"validationMessageIconColor === 'Red'\"\n [class.exclamation-icon-orange]=\"validationMessageIconColor === 'Orange'\"\n [class.exclamation-icon-yellow]=\"validationMessageIconColor === 'Yellow'\"\n [class.exclamation-icon-green]=\"validationMessageIconColor === 'Green'\"\n [class.exclamation-icon-blue]=\"validationMessageIconColor === 'Blue'\"\n >\n </span>\n }\n <span class=\"title\">{{ header }}</span>\n </div>\n <div class=\"header__controls\">\n @for (button of buttons; track button.icon) {\n <button\n class=\"icon-button\"\n [ngClass]=\"button.icon\"\n (click)=\"onIconButtonsClick($event, button.onClick)\"\n ></button>\n }\n\n @if (switchControl) {\n <s-switch\n class=\"switch\"\n [formControl]=\"switchControl\"\n (click)=\"$event.stopPropagation()\"\n >\n </s-switch>\n }\n </div>\n </div>\n\n @if (cache) {\n <div\n class=\"content\"\n [@cacheAnimation]=\"isOpen\"\n [@.disabled]=\"isContentAnimationDisabled\"\n (@cacheAnimation.start)=\"onContentAnimationStart()\"\n (@cacheAnimation.done)=\"onContentAnimationDone()\"\n >\n <div class=\"content-container\">\n <ng-container [ngTemplateOutlet]=\"panelContent\"></ng-container>\n </div>\n </div>\n } @else {\n @if (isOpen) {\n <div\n class=\"content\"\n @cachelessAnimation\n [@.disabled]=\"isContentAnimationDisabled\"\n (@cachelessAnimation.start)=\"onContentAnimationStart()\"\n (@cachelessAnimation.done)=\"onContentAnimationDone()\"\n >\n <div class=\"content-container\">\n <ng-container [ngTemplateOutlet]=\"panelContent\"></ng-container>\n </div>\n </div>\n }\n }\n</div>\n\n<ng-template #panelContent>\n <ng-content></ng-content>\n</ng-template>\n","import {\n AfterContentInit,\n OnChanges,\n Component,\n ContentChildren,\n Input,\n QueryList,\n SimpleChanges,\n OnDestroy,\n} from '@angular/core';\n\nimport { AccordionPanelComponent } from './components/accordion-panel/accordion-panel.component';\nimport { Subject, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n/**\n * @description Componente de acordeão que gerencia a abertura e o fechamento de painéis\n * {@link AccordionPanelComponent}. Suporta modo de painel único (apenas um aberto por vez)\n * ou modo múltiplo (vários painéis abertos simultaneamente), configurável via input `multiple`.\n *\n * @example\n * ```html\n * <s-accordion [multiple]=\"false\" [activeIndex]=\"0\">\n * <s-accordion-panel header=\"Seção 1\">Conteúdo 1</s-accordion-panel>\n * <s-accordion-panel header=\"Seção 2\">Conteúdo 2</s-accordion-panel>\n * </s-accordion>\n * ```\n *\n * @category Inputs\n */\n@Component({\n selector: 's-accordion',\n templateUrl: './accordion.component.html',\n styleUrls: ['./accordion.component.scss'],\n})\nexport class AccordionComponent implements AfterContentInit, OnChanges, OnDestroy {\n /**\n * @description Índice (ou lista de índices) do(s) painel(is) que devem iniciar abertos.\n * Aceita um número para painel único ou um array de números para o modo múltiplo.\n */\n @Input()\n public activeIndex?: number | number[];\n\n /**\n * @description Permite que múltiplos painéis estejam abertos ao mesmo tempo.\n * Quando `false`, abrir um painel fecha automaticamente o anterior.\n *\n * @default false\n */\n @Input()\n public multiple = false;\n\n @ContentChildren(AccordionPanelComponent)\n public panelsComponents?: QueryList<AccordionPanelComponent>;\n\n private readonly _unsubscribe$ = new Subject<void>();\n private _panels: AccordionPanelComponent[] = [];\n private _openSubs: Subscription[] = [];\n\n public ngAfterContentInit(): void {\n if (this.panelsComponents) {\n this._panels = this.panelsComponents?.toArray();\n }\n\n this._openSubs = Array.from({ length: this._panels.length });\n\n this._setBehavior(this.multiple);\n this._setupTabs();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes['multiple']) {\n this._setBehavior(changes['multiple'].currentValue);\n }\n }\n\n public ngOnDestroy(): void {\n this._unsubscribe$.next();\n this._unsubscribe$.complete();\n }\n\n private _setupTabs(): void {\n if (this._panels?.length) {\n if (this.activeIndex !== undefined && this.activeIndex !== null) {\n const activeTabs = Array.isArray(this.activeIndex)\n ? this._panels.filter((_, index) => (this.activeIndex as number[]).includes(index))\n : [this._panels[this.activeIndex]];\n\n if (activeTabs.length === 0) {\n throw new Error('activeIndex does not represent any panel.');\n }\n\n for (const activeTab of activeTabs) {\n if (!activeTab.disabled) {\n activeTab.isOpen = true;\n }\n }\n }\n }\n }\n\n private _closeOtherTabs(exception: number) {\n this._panels.forEach((panel, index) => {\n if (index !== exception) {\n panel.isOpen = false;\n }\n });\n }\n\n private _setBehavior(multiple: boolean): void {\n if (multiple) {\n this._enableMultiplePanelBehavior();\n } else {\n this._enableSinglePanelBehavior();\n }\n }\n\n private _enableSinglePanelBehavior() {\n this._panels.forEach((panel, index) => {\n this._openSubs[index] = panel.panelOpened.pipe(takeUntil(this._unsubscribe$)).subscribe(() => {\n this._closeOtherTabs(index);\n });\n });\n }\n\n private _enableMultiplePanelBehavior() {\n this._panels.forEach((_, index) => {\n if (this._openSubs[index]) {\n this._openSubs[index].unsubscribe();\n }\n });\n }\n}\n\n","<div class=\"accordion\">\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { AccordionComponent } from './accordion.component';\nimport { AccordionPanelComponent } from './components/accordion-panel/accordion-panel.component';\nimport { TooltipModule } from '@seniorsistemas/angular-components/tooltip';\nimport { SwitchModule } from '@seniorsistemas/angular-components/switch';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TooltipModule,\n SwitchModule,\n ],\n declarations: [AccordionComponent, AccordionPanelComponent],\n exports: [AccordionComponent, AccordionPanelComponent],\n})\nexport class AccordionModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -3,12 +3,52 @@ import { EventEmitter, Component, Input, Output, NgModule } from '@angular/core'
|
|
|
3
3
|
import * as i1 from '@angular/common';
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* @description Componente de alerta que exibe mensagens informativas, de sucesso, aviso ou erro.
|
|
8
|
+
* Suporta fechamento manual pelo usuário e emite um evento ao ser fechado.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```html
|
|
12
|
+
* <s-alert
|
|
13
|
+
* severity="warning"
|
|
14
|
+
* summary="Atenção"
|
|
15
|
+
* detail="Verifique os dados antes de continuar."
|
|
16
|
+
* (closed)="onAlertClosed()"
|
|
17
|
+
* />
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* @category Feedback
|
|
21
|
+
*/
|
|
6
22
|
class AlertComponent {
|
|
23
|
+
/**
|
|
24
|
+
* @description Nível de severidade do alerta, que define a cor e o ícone exibidos.
|
|
25
|
+
* - `'info'`: alerta informativo (padrão).
|
|
26
|
+
* - `'success'`: alerta de sucesso.
|
|
27
|
+
* - `'warning'`: alerta de aviso.
|
|
28
|
+
* - `'error'`: alerta de erro.
|
|
29
|
+
*
|
|
30
|
+
* @default 'info'
|
|
31
|
+
*/
|
|
7
32
|
// sonar-ignore: Refactor this union type to have less than 3 elements
|
|
8
33
|
severity = 'info';
|
|
34
|
+
/**
|
|
35
|
+
* @description Título principal do alerta exibido em destaque. Campo obrigatório.
|
|
36
|
+
*/
|
|
9
37
|
summary;
|
|
38
|
+
/**
|
|
39
|
+
* @description Mensagem detalhada exibida abaixo do título do alerta. Campo obrigatório.
|
|
40
|
+
*/
|
|
10
41
|
detail;
|
|
42
|
+
/**
|
|
43
|
+
* @description Quando `true`, exibe o botão de fechar o alerta.
|
|
44
|
+
* Quando `false`, o alerta não pode ser dispensado pelo usuário.
|
|
45
|
+
*
|
|
46
|
+
* @default true
|
|
47
|
+
*/
|
|
11
48
|
closable = true;
|
|
49
|
+
/**
|
|
50
|
+
* @description Emitido quando o usuário fecha o alerta clicando no botão de fechar.
|
|
51
|
+
*/
|
|
12
52
|
closed = new EventEmitter();
|
|
13
53
|
get isOpen() {
|
|
14
54
|
return this._isOpen;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seniorsistemas-angular-components-alert.mjs","sources":["../../projects/angular-components/alert/src/lib/alert/alert.component.ts","../../projects/angular-components/alert/src/lib/alert/alert.component.html","../../projects/angular-components/alert/src/lib/alert/alert.module.ts","../../projects/angular-components/alert/src/seniorsistemas-angular-components-alert.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 's-alert',\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.scss'],\n})\nexport class AlertComponent {\n // sonar-ignore: Refactor this union type to have less than 3 elements\n @Input()\n public severity: 'info' | 'success' | 'warning' | 'error' = 'info';\n\n @Input({ required: true })\n public summary!: string;\n\n @Input({ required: true })\n public detail!: string;\n\n @Input()\n public closable = true;\n\n @Output()\n public closed = new EventEmitter<void>();\n\n public get isOpen(): boolean {\n return this._isOpen;\n }\n\n public closeAlert(): void {\n this._isOpen = false;\n }\n\n public showAlert(): void {\n this._isOpen = true;\n }\n\n public onClose(): void {\n this.closed.emit();\n this.closeAlert();\n }\n\n private _isOpen = true;\n}\n","<div\n class=\"alert\"\n [ngClass]=\"{\n 'alert--info': severity === 'info',\n 'alert--success': severity === 'success',\n 'alert--warning': severity === 'warning',\n 'alert--error': severity === 'error',\n }\"\n>\n <div class=\"content\">\n <div class=\"icon-container\">\n <i\n class=\"fas fa-info\"\n [ngClass]=\"{\n 'fa-info': severity === 'info',\n 'fa-check': severity === 'success',\n 'fa-exclamation-triangle': severity === 'warning',\n 'fa-times': severity === 'error',\n }\"\n ></i>\n </div>\n <div class=\"text-container\">\n <div class=\"text\">\n @if (summary) {\n <span class=\"summary\">{{ summary }}</span>\n }\n\n @if (detail) {\n <span class=\"detail\">{{ detail }}</span>\n }\n </div>\n </div>\n </div>\n @if (closable) {\n <button\n class=\"close-option\"\n (click)=\"onClose()\"\n >\n <i class=\"fas fa-times\"></i>\n </button>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { AlertComponent } from './alert.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [AlertComponent],\n exports: [AlertComponent],\n})\nexport class AlertModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"seniorsistemas-angular-components-alert.mjs","sources":["../../projects/angular-components/alert/src/lib/alert/alert.component.ts","../../projects/angular-components/alert/src/lib/alert/alert.component.html","../../projects/angular-components/alert/src/lib/alert/alert.module.ts","../../projects/angular-components/alert/src/seniorsistemas-angular-components-alert.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n/**\n * @description Componente de alerta que exibe mensagens informativas, de sucesso, aviso ou erro.\n * Suporta fechamento manual pelo usuário e emite um evento ao ser fechado.\n *\n * @example\n * ```html\n * <s-alert\n * severity=\"warning\"\n * summary=\"Atenção\"\n * detail=\"Verifique os dados antes de continuar.\"\n * (closed)=\"onAlertClosed()\"\n * />\n * ```\n *\n * @category Feedback\n */\n@Component({\n selector: 's-alert',\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.scss'],\n})\nexport class AlertComponent {\n /**\n * @description Nível de severidade do alerta, que define a cor e o ícone exibidos.\n * - `'info'`: alerta informativo (padrão).\n * - `'success'`: alerta de sucesso.\n * - `'warning'`: alerta de aviso.\n * - `'error'`: alerta de erro.\n *\n * @default 'info'\n */\n // sonar-ignore: Refactor this union type to have less than 3 elements\n @Input()\n public severity: 'info' | 'success' | 'warning' | 'error' = 'info';\n\n /**\n * @description Título principal do alerta exibido em destaque. Campo obrigatório.\n */\n @Input({ required: true })\n public summary!: string;\n\n /**\n * @description Mensagem detalhada exibida abaixo do título do alerta. Campo obrigatório.\n */\n @Input({ required: true })\n public detail!: string;\n\n /**\n * @description Quando `true`, exibe o botão de fechar o alerta.\n * Quando `false`, o alerta não pode ser dispensado pelo usuário.\n *\n * @default true\n */\n @Input()\n public closable = true;\n\n /**\n * @description Emitido quando o usuário fecha o alerta clicando no botão de fechar.\n */\n @Output()\n public closed = new EventEmitter<void>();\n\n public get isOpen(): boolean {\n return this._isOpen;\n }\n\n public closeAlert(): void {\n this._isOpen = false;\n }\n\n public showAlert(): void {\n this._isOpen = true;\n }\n\n public onClose(): void {\n this.closed.emit();\n this.closeAlert();\n }\n\n private _isOpen = true;\n}\n\n","<div\n class=\"alert\"\n [ngClass]=\"{\n 'alert--info': severity === 'info',\n 'alert--success': severity === 'success',\n 'alert--warning': severity === 'warning',\n 'alert--error': severity === 'error',\n }\"\n>\n <div class=\"content\">\n <div class=\"icon-container\">\n <i\n class=\"fas fa-info\"\n [ngClass]=\"{\n 'fa-info': severity === 'info',\n 'fa-check': severity === 'success',\n 'fa-exclamation-triangle': severity === 'warning',\n 'fa-times': severity === 'error',\n }\"\n ></i>\n </div>\n <div class=\"text-container\">\n <div class=\"text\">\n @if (summary) {\n <span class=\"summary\">{{ summary }}</span>\n }\n\n @if (detail) {\n <span class=\"detail\">{{ detail }}</span>\n }\n </div>\n </div>\n </div>\n @if (closable) {\n <button\n class=\"close-option\"\n (click)=\"onClose()\"\n >\n <i class=\"fas fa-times\"></i>\n </button>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { AlertComponent } from './alert.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [AlertComponent],\n exports: [AlertComponent],\n})\nexport class AlertModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;AAEA;;;;;;;;;;;;;;;AAeG;MAMU,cAAc,CAAA;AACvB;;;;;;;;AAQG;;IAGI,QAAQ,GAA6C,MAAM,CAAC;AAEnE;;AAEG;AAEI,IAAA,OAAO,CAAU;AAExB;;AAEG;AAEI,IAAA,MAAM,CAAU;AAEvB;;;;;AAKG;IAEI,QAAQ,GAAG,IAAI,CAAC;AAEvB;;AAEG;AAEI,IAAA,MAAM,GAAG,IAAI,YAAY,EAAQ,CAAC;AAEzC,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;IAEM,UAAU,GAAA;AACb,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACxB;IAEM,SAAS,GAAA;AACZ,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACvB;IAEM,OAAO,GAAA;AACV,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACnB,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB;IAEO,OAAO,GAAG,IAAI,CAAC;wGA1Dd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,4KCvB3B,0uCA0CA,EAAA,MAAA,EAAA,CAAA,4+CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDnBa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,SAAS;+BACI,SAAS,EAAA,QAAA,EAAA,0uCAAA,EAAA,MAAA,EAAA,CAAA,4+CAAA,CAAA,EAAA,CAAA;8BAgBZ,QAAQ,EAAA,CAAA;sBADd,KAAK;gBAOC,OAAO,EAAA,CAAA;sBADb,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;gBAOlB,MAAM,EAAA,CAAA;sBADZ,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;gBAUlB,QAAQ,EAAA,CAAA;sBADd,KAAK;gBAOC,MAAM,EAAA,CAAA;sBADZ,MAAM;;;MEnDE,WAAW,CAAA;wGAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,EAHL,YAAA,EAAA,CAAA,cAAc,CADnB,EAAA,OAAA,EAAA,CAAA,YAAY,aAEZ,cAAc,CAAA,EAAA,CAAA,CAAA;AAEf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,YAJV,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAIb,WAAW,EAAA,UAAA,EAAA,CAAA;kBALvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,YAAY,EAAE,CAAC,cAAc,CAAC;oBAC9B,OAAO,EAAE,CAAC,cAAc,CAAC;AAC5B,iBAAA,CAAA;;;ACTD;;AAEG;;;;"}
|