@fundamental-ngx/core 0.40.4-rc.6 → 0.40.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/action-bar/action-bar-actions/action-bar-actions.directive.mjs +3 -3
- package/esm2020/action-bar/action-bar-back/action-bar-back.directive.mjs +3 -3
- package/esm2020/action-bar/action-bar-description/action-bar-description.directive.mjs +3 -3
- package/esm2020/action-bar/action-bar-header/action-bar-header.directive.mjs +3 -3
- package/esm2020/action-bar/action-bar-mobile/action-bar-mobile.directive.mjs +3 -3
- package/esm2020/action-bar/action-bar-title/action-bar-title.component.mjs +3 -3
- package/esm2020/action-bar/action-bar.component.mjs +3 -3
- package/esm2020/action-bar/action-bar.module.mjs +4 -4
- package/esm2020/action-sheet/action-sheet-body/action-sheet-body.component.mjs +3 -3
- package/esm2020/action-sheet/action-sheet-control/action-sheet-control.component.mjs +3 -3
- package/esm2020/action-sheet/action-sheet-item/action-sheet-item.component.mjs +3 -3
- package/esm2020/action-sheet/action-sheet-mobile/action-sheet-mobile.component.mjs +3 -3
- package/esm2020/action-sheet/action-sheet-mobile/action-sheet-mobile.module.mjs +4 -4
- package/esm2020/action-sheet/action-sheet.component.mjs +3 -3
- package/esm2020/action-sheet/action-sheet.module.mjs +4 -4
- package/esm2020/action-sheet/deprecated-action-sheet-compact.directive.mjs +3 -3
- package/esm2020/alert/alert-service/alert.service.mjs +3 -3
- package/esm2020/alert/alert-utils/alert-container.component.mjs +3 -3
- package/esm2020/alert/alert.component.mjs +3 -3
- package/esm2020/alert/alert.module.mjs +4 -4
- package/esm2020/avatar/avatar.component.mjs +3 -3
- package/esm2020/avatar/avatar.module.mjs +4 -4
- package/esm2020/avatar-group/avatar-group.component.mjs +3 -3
- package/esm2020/avatar-group/avatar-group.module.mjs +4 -4
- package/esm2020/avatar-group/directives/avatar-group-focusable-avatar.directive.mjs +3 -3
- package/esm2020/avatar-group/directives/avatar-group-item.directive.mjs +3 -3
- package/esm2020/avatar-group/directives/avatar-group-overflow-body.directive.mjs +3 -3
- package/esm2020/avatar-group/directives/avatar-group-overflow-button-text.directive.mjs +3 -3
- package/esm2020/avatar-group/directives/avatar-group-overflow-button.directive.mjs +3 -3
- package/esm2020/avatar-group/directives/avatar-group-overflow-item.directive.mjs +3 -3
- package/esm2020/avatar-group/directives/avatar-group-popover-control.directive.mjs +3 -3
- package/esm2020/bar/bar.component.mjs +3 -3
- package/esm2020/bar/bar.module.mjs +4 -4
- package/esm2020/bar/button-bar/button-bar.component.mjs +3 -3
- package/esm2020/bar/deprecated-bar-button-content-density.directive.mjs +3 -3
- package/esm2020/bar/deprecated-bar-content-density.directive.mjs +3 -3
- package/esm2020/bar/directives/bar-element.directive.mjs +3 -3
- package/esm2020/bar/directives/bar-left.directive.mjs +3 -3
- package/esm2020/bar/directives/bar-middle.directive.mjs +3 -3
- package/esm2020/bar/directives/bar-right.directive.mjs +3 -3
- package/esm2020/breadcrumb/breadcrumb-item.component.mjs +3 -3
- package/esm2020/breadcrumb/breadcrumb.component.mjs +3 -3
- package/esm2020/breadcrumb/breadcrumb.module.mjs +4 -4
- package/esm2020/breadcrumb/deprecated-breadcrumbs-compact.directive.mjs +3 -3
- package/esm2020/busy-indicator/busy-indicator-extended/busy-indicator-extended.directive.mjs +3 -3
- package/esm2020/busy-indicator/busy-indicator.component.mjs +3 -3
- package/esm2020/busy-indicator/busy-indicator.module.mjs +4 -4
- package/esm2020/button/base-button.mjs +3 -3
- package/esm2020/button/button.component.mjs +3 -3
- package/esm2020/button/button.module.mjs +4 -4
- package/esm2020/button/deprecated-button-content-density.directive.mjs +3 -3
- package/esm2020/calendar/calendar-directives.mjs +3 -3
- package/esm2020/calendar/calendar-header/calendar-header.component.mjs +3 -3
- package/esm2020/calendar/calendar-views/calendar-aggregated-year-view/calendar-aggregated-year-view.component.mjs +3 -3
- package/esm2020/calendar/calendar-views/calendar-day-view/calendar-day-view.component.mjs +3 -3
- package/esm2020/calendar/calendar-views/calendar-month-view/calendar-month-view.component.mjs +3 -3
- package/esm2020/calendar/calendar-views/calendar-year-view/calendar-year-view.component.mjs +3 -3
- package/esm2020/calendar/calendar.component.mjs +3 -3
- package/esm2020/calendar/calendar.module.mjs +4 -4
- package/esm2020/calendar/calendar.service.mjs +3 -3
- package/esm2020/calendar/deprecated-calendar-content-density.directive.mjs +3 -3
- package/esm2020/calendar/i18n/calendar-i18n-labels.mjs +3 -3
- package/esm2020/card/card-content.component.mjs +3 -3
- package/esm2020/card/card-counter.directive.mjs +3 -3
- package/esm2020/card/card-footer-action-item.directive.mjs +3 -3
- package/esm2020/card/card-footer.component.mjs +3 -3
- package/esm2020/card/card-header.component.mjs +3 -3
- package/esm2020/card/card-loader.component.mjs +3 -3
- package/esm2020/card/card-second-subtitle.directive.mjs +3 -3
- package/esm2020/card/card-subtitle.directive.mjs +3 -3
- package/esm2020/card/card-title.directive.mjs +3 -3
- package/esm2020/card/card.component.mjs +3 -3
- package/esm2020/card/card.module.mjs +4 -4
- package/esm2020/card/deprecated-card-content-density.directive.mjs +3 -3
- package/esm2020/card/kpi/card-kpi-analytics-content.directive.mjs +3 -3
- package/esm2020/card/kpi/card-kpi-analytics-label.directive.mjs +3 -3
- package/esm2020/card/kpi/card-kpi-analytics.directive.mjs +3 -3
- package/esm2020/card/kpi/card-kpi-header.component.mjs +3 -3
- package/esm2020/card/kpi/card-kpi-scale-icon.directive.mjs +3 -3
- package/esm2020/card/kpi/card-kpi-scale-text.directive.mjs +3 -3
- package/esm2020/card/kpi/card-kpi-value.directive.mjs +3 -3
- package/esm2020/carousel/carousel-item/carousel-item.component.mjs +3 -3
- package/esm2020/carousel/carousel-item.directive.mjs +3 -3
- package/esm2020/carousel/carousel.component.mjs +3 -3
- package/esm2020/carousel/carousel.directive.mjs +3 -3
- package/esm2020/carousel/carousel.module.mjs +4 -4
- package/esm2020/carousel/carousel.service.mjs +3 -3
- package/esm2020/checkbox/checkbox/checkbox.component.mjs +3 -3
- package/esm2020/checkbox/checkbox.module.mjs +4 -4
- package/esm2020/checkbox/deprecated-checkbox-content-density.directive.mjs +3 -3
- package/esm2020/combobox/combobox-mobile/combobox-mobile.component.mjs +3 -3
- package/esm2020/combobox/combobox-mobile/combobox-mobile.module.mjs +4 -4
- package/esm2020/combobox/combobox.component.mjs +3 -3
- package/esm2020/combobox/combobox.module.mjs +4 -4
- package/esm2020/combobox/deprecated-combobox-content-density.directive.mjs +3 -3
- package/esm2020/combobox/list-group.pipe.mjs +3 -3
- package/esm2020/content-density/classes/deprecated-compact.directive.mjs +3 -3
- package/esm2020/content-density/classes/deprecated-condensed.directive.mjs +3 -3
- package/esm2020/content-density/classes/deprecated-content-density.directive.mjs +3 -3
- package/esm2020/content-density/classes/deprecated-cozy.directive.mjs +3 -3
- package/esm2020/content-density/content-density.module.mjs +4 -4
- package/esm2020/content-density/directives/content-density.directive.mjs +3 -3
- package/esm2020/content-density/providers/local-content-density-storage.mjs +3 -3
- package/esm2020/content-density/providers/memory-content-density-storage.mjs +3 -3
- package/esm2020/content-density/providers/url-content-density-storage.mjs +3 -3
- package/esm2020/content-density/services/content-density-observer.service.mjs +3 -3
- package/esm2020/content-density/services/deprecated-content-density.service.mjs +3 -3
- package/esm2020/content-density/services/global-content-density.service.mjs +3 -3
- package/esm2020/date-picker/date-picker.component.mjs +3 -3
- package/esm2020/date-picker/date-picker.module.mjs +4 -4
- package/esm2020/date-picker/deprecated-date-picker-compact.directive.mjs +3 -3
- package/esm2020/datetime/datetime-format.pipes.mjs +9 -9
- package/esm2020/datetime/fd-datetime-adapter.mjs +3 -3
- package/esm2020/datetime/fd-datetime-pipes.module.mjs +4 -4
- package/esm2020/datetime/fd-datetime.module.mjs +8 -8
- package/esm2020/datetime-picker/datetime-picker.component.mjs +3 -3
- package/esm2020/datetime-picker/datetime-picker.module.mjs +4 -4
- package/esm2020/datetime-picker/deprecated-date-time-picker-content-density.directive.mjs +3 -3
- package/esm2020/dialog/base/dialog-base.class.mjs +3 -3
- package/esm2020/dialog/base/dialog-base.service.mjs +3 -3
- package/esm2020/dialog/base/dialog-footer-base.class.mjs +3 -3
- package/esm2020/dialog/base/dialog-header-base.class.mjs +3 -3
- package/esm2020/dialog/dialog-body/dialog-body.component.mjs +3 -3
- package/esm2020/dialog/dialog-close-button/dialog-close-button.component.mjs +3 -3
- package/esm2020/dialog/dialog-container/dialog-container.component.mjs +3 -3
- package/esm2020/dialog/dialog-default/dialog-default.component.mjs +3 -3
- package/esm2020/dialog/dialog-footer/dialog-footer.component.mjs +3 -3
- package/esm2020/dialog/dialog-footer-button/dialog-footer-button.component.mjs +3 -3
- package/esm2020/dialog/dialog-header/dialog-header.component.mjs +3 -3
- package/esm2020/dialog/dialog-service/dialog.service.mjs +3 -3
- package/esm2020/dialog/dialog.component.mjs +3 -3
- package/esm2020/dialog/dialog.module.mjs +4 -4
- package/esm2020/dialog/directives/dialog-decisive-button.directive.mjs +3 -3
- package/esm2020/dialog/directives/dialog-title.directive.mjs +3 -3
- package/esm2020/dialog/utils/dialog-config.class.mjs +3 -3
- package/esm2020/dialog/utils/dialog-overlay.container.mjs +3 -3
- package/esm2020/dialog/utils/dialog-ref.class.mjs +3 -3
- package/esm2020/dynamic-page/deprecated-dynamic-page-compact.directive.mjs +3 -3
- package/esm2020/dynamic-page/dynamic-page-content/dynamic-page-content.component.mjs +3 -3
- package/esm2020/dynamic-page/dynamic-page-footer/dynamic-page-footer.component.mjs +3 -3
- package/esm2020/dynamic-page/dynamic-page-header/actions/dynamic-page-base-actions.mjs +3 -3
- package/esm2020/dynamic-page/dynamic-page-header/actions/dynamic-page-global-actions.component.mjs +3 -3
- package/esm2020/dynamic-page/dynamic-page-header/actions/dynamic-page-layout-actions.component.mjs +3 -3
- package/esm2020/dynamic-page/dynamic-page-header/actions/dynamic-page-title-content.component.mjs +4 -4
- package/esm2020/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.mjs +3 -3
- package/esm2020/dynamic-page/dynamic-page-header/subheader/dynamic-page-subheader.component.mjs +3 -3
- package/esm2020/dynamic-page/dynamic-page-wrapper.directive.mjs +3 -3
- package/esm2020/dynamic-page/dynamic-page.component.mjs +3 -3
- package/esm2020/dynamic-page/dynamic-page.config.mjs +3 -3
- package/esm2020/dynamic-page/dynamic-page.module.mjs +4 -4
- package/esm2020/dynamic-page/dynamic-page.service.mjs +3 -3
- package/esm2020/dynamic-side-content/dynamic-side-content-main.component.mjs +3 -3
- package/esm2020/dynamic-side-content/dynamic-side-content-side.component.mjs +3 -3
- package/esm2020/dynamic-side-content/dynamic-side-content.component.mjs +3 -3
- package/esm2020/dynamic-side-content/dynamic-side-content.module.mjs +4 -4
- package/esm2020/facets/content/facet-content.component.mjs +3 -3
- package/esm2020/facets/facet/facet.component.mjs +3 -3
- package/esm2020/facets/facet-group.component.mjs +3 -3
- package/esm2020/facets/facet.module.mjs +4 -4
- package/esm2020/feed-input/directives/feed-input-avatar.directive.mjs +3 -3
- package/esm2020/feed-input/directives/feed-input-button.directive.mjs +3 -3
- package/esm2020/feed-input/directives/feed-input-textarea.directive.mjs +3 -3
- package/esm2020/feed-input/feed-input.component.mjs +3 -3
- package/esm2020/feed-input/feed-input.module.mjs +4 -4
- package/esm2020/feed-list-item/components/feed-list-action/feed-list-action.component.mjs +3 -3
- package/esm2020/feed-list-item/components/feed-list-avatar/feed-list-avatar.component.mjs +3 -3
- package/esm2020/feed-list-item/components/feed-list-footer/feed-list-footer.component.mjs +3 -3
- package/esm2020/feed-list-item/components/item/feed-list-item.component.mjs +3 -3
- package/esm2020/feed-list-item/components/list/feed-list.component.mjs +3 -3
- package/esm2020/feed-list-item/directives/byline.directive.mjs +3 -3
- package/esm2020/feed-list-item/feed-list-item.module.mjs +4 -4
- package/esm2020/file-uploader/deprecated-file-uploader-content-density.directive.mjs +3 -3
- package/esm2020/file-uploader/directives/file-uploader-dragndrop.directive.mjs +3 -3
- package/esm2020/file-uploader/directives/file-uploader-select.directive.mjs +3 -3
- package/esm2020/file-uploader/file-uploader.component.mjs +3 -3
- package/esm2020/file-uploader/file-uploader.module.mjs +4 -4
- package/esm2020/file-uploader/file-uploader.service.mjs +3 -3
- package/esm2020/fixed-card-layout/fixed-card-layout-item/fixed-card-layout-item.component.mjs +3 -3
- package/esm2020/fixed-card-layout/fixed-card-layout.component.mjs +6 -6
- package/esm2020/fixed-card-layout/fixed-card-layout.module.mjs +4 -4
- package/esm2020/flexible-column-layout/flexible-column-layout.component.mjs +3 -3
- package/esm2020/flexible-column-layout/flexible-column-layout.module.mjs +4 -4
- package/esm2020/form/fieldset/fieldset.component.mjs +3 -3
- package/esm2020/form/fieldset/fieldset.module.mjs +4 -4
- package/esm2020/form/form-control/deprecated-form-control-content-density.directive.mjs +3 -3
- package/esm2020/form/form-control/form-control.component.mjs +3 -3
- package/esm2020/form/form-control/form-control.module.mjs +4 -4
- package/esm2020/form/form-control/input-form-control.directive.mjs +3 -3
- package/esm2020/form/form-control/textarea-form-control.directive.mjs +3 -3
- package/esm2020/form/form-group/form-group.component.mjs +3 -3
- package/esm2020/form/form-group/form-group.module.mjs +4 -4
- package/esm2020/form/form-header/form-header.component.mjs +3 -3
- package/esm2020/form/form-header/form-header.module.mjs +4 -4
- package/esm2020/form/form-input-message-group/form-input-message-group.component.mjs +3 -3
- package/esm2020/form/form-input-message-group/form-input-message-group.module.mjs +4 -4
- package/esm2020/form/form-item/form-item.component.mjs +3 -3
- package/esm2020/form/form-item/form-item.module.mjs +4 -4
- package/esm2020/form/form-label/form-label.component.mjs +3 -3
- package/esm2020/form/form-label/form-label.module.mjs +4 -4
- package/esm2020/form/form-legend/form-legend.directive.mjs +3 -3
- package/esm2020/form/form-legend/form-legend.module.mjs +4 -4
- package/esm2020/form/form-message/form-message.component.mjs +3 -3
- package/esm2020/form/form-message/form-message.module.mjs +4 -4
- package/esm2020/form/form-message/popover-form-message.service.mjs +3 -3
- package/esm2020/form/form.module.mjs +4 -4
- package/esm2020/formatted-text/formatted-text.component.mjs +3 -3
- package/esm2020/formatted-text/formatted-text.module.mjs +4 -4
- package/esm2020/fundamental-ngx.module.mjs +4 -4
- package/esm2020/grid-list/components/grid-list/grid-list-base.component.mjs +3 -3
- package/esm2020/grid-list/components/grid-list/grid-list.component.mjs +3 -3
- package/esm2020/grid-list/components/grid-list-filter-bar/grid-list-filter-bar.component.mjs +3 -3
- package/esm2020/grid-list/components/grid-list-footer/grid-list-footer.component.mjs +3 -3
- package/esm2020/grid-list/components/grid-list-group-header/grid-list-group-header.component.mjs +3 -3
- package/esm2020/grid-list/components/grid-list-item/grid-list-item.component.mjs +3 -3
- package/esm2020/grid-list/components/grid-list-item-footer-bar/grid-list-item-footer-bar.component.mjs +3 -3
- package/esm2020/grid-list/components/grid-list-item-toolbar/grid-list-item-toolbar.component.mjs +3 -3
- package/esm2020/grid-list/components/grid-list-more-btn/grid-list-more-btn.component.mjs +3 -3
- package/esm2020/grid-list/components/grid-list-title-bar/grid-list-title-bar.component.mjs +3 -3
- package/esm2020/grid-list/components/grid-list-title-bar/grid-list-title-bar.directive.mjs +3 -3
- package/esm2020/grid-list/components/grid-list-title-bar-spacer/grid-list-title-bar-spacer.component.mjs +6 -6
- package/esm2020/grid-list/directives/grid-list-item-body.directive.mjs +3 -3
- package/esm2020/grid-list/directives/grid-list-item-image.directive.mjs +3 -3
- package/esm2020/grid-list/grid-list.module.mjs +4 -4
- package/esm2020/icon/icon.component.mjs +3 -3
- package/esm2020/icon/icon.module.mjs +4 -4
- package/esm2020/illustrated-message/components/illustrated-message-actions/illustrated-message-actions.component.mjs +3 -3
- package/esm2020/illustrated-message/components/illustrated-message-figcaption/illustrated-message-figcaption.component.mjs +3 -3
- package/esm2020/illustrated-message/directives/illustrated-message-text/illustrated-message-text.directive.mjs +3 -3
- package/esm2020/illustrated-message/directives/illustrated-message-title/illustrated-message-title.directive.mjs +3 -3
- package/esm2020/illustrated-message/illustrated-message.component.mjs +3 -3
- package/esm2020/illustrated-message/illustrated-message.module.mjs +4 -4
- package/esm2020/infinite-scroll/infinite-scroll.directive.mjs +3 -3
- package/esm2020/infinite-scroll/infinite-scroll.module.mjs +4 -4
- package/esm2020/info-label/info-label.component.mjs +3 -3
- package/esm2020/info-label/info-label.module.mjs +4 -4
- package/esm2020/inline-help/inline-help.directive.mjs +4 -11
- package/esm2020/inline-help/inline-help.module.mjs +4 -4
- package/esm2020/input-group/deprecated-input-group-compact.directive.mjs +3 -3
- package/esm2020/input-group/input-group-directives.mjs +12 -12
- package/esm2020/input-group/input-group.component.mjs +3 -3
- package/esm2020/input-group/input-group.module.mjs +4 -4
- package/esm2020/layout-grid/directives/layout-grid-col.directive.mjs +3 -3
- package/esm2020/layout-grid/directives/layout-grid-row.directive.mjs +3 -3
- package/esm2020/layout-grid/layout-grid.component.mjs +3 -3
- package/esm2020/layout-grid/layout-grid.module.mjs +4 -4
- package/esm2020/layout-panel/layout-panel-actions/layout-panel-actions.component.mjs +3 -3
- package/esm2020/layout-panel/layout-panel-body/layout-panel-body.component.mjs +3 -3
- package/esm2020/layout-panel/layout-panel-description/layout-panel-description.component.mjs +3 -3
- package/esm2020/layout-panel/layout-panel-filters/layout-panel-filters.component.mjs +3 -3
- package/esm2020/layout-panel/layout-panel-footer/layout-panel-footer.component.mjs +3 -3
- package/esm2020/layout-panel/layout-panel-head/layout-panel-head.component.mjs +3 -3
- package/esm2020/layout-panel/layout-panel-header/layout-panel-header.component.mjs +3 -3
- package/esm2020/layout-panel/layout-panel-title/layout-panel-title.directive.mjs +3 -3
- package/esm2020/layout-panel/layout-panel.component.mjs +3 -3
- package/esm2020/layout-panel/layout-panel.module.mjs +4 -4
- package/esm2020/link/link.component.mjs +3 -3
- package/esm2020/link/link.module.mjs +4 -4
- package/esm2020/list/deprecated-list-content-density,directive.mjs +3 -3
- package/esm2020/list/directives/byline/list-byline-left.directive.mjs +3 -3
- package/esm2020/list/directives/byline/list-byline-right.directive.mjs +3 -3
- package/esm2020/list/directives/byline/list-byline.directive.mjs +3 -3
- package/esm2020/list/directives/byline/list-content.directive.mjs +3 -3
- package/esm2020/list/directives/byline/list-thumbnail.directive.mjs +3 -3
- package/esm2020/list/directives/list-footer.directive.mjs +3 -3
- package/esm2020/list/directives/list-group-header.directive.mjs +3 -3
- package/esm2020/list/directives/list-icon.directive.mjs +3 -3
- package/esm2020/list/directives/list-link.directive.mjs +3 -3
- package/esm2020/list/directives/list-navigation-item-arrow.directive.mjs +7 -13
- package/esm2020/list/directives/list-navigation-item-text.directive.mjs +3 -3
- package/esm2020/list/directives/list-secondary.directive.mjs +3 -3
- package/esm2020/list/directives/list-title-text.directive.mjs +3 -3
- package/esm2020/list/directives/list-title.directive.mjs +3 -3
- package/esm2020/list/list-focus-item.model.mjs +3 -3
- package/esm2020/list/list-item/list-item.component.mjs +3 -3
- package/esm2020/list/list-message.directive.mjs +3 -3
- package/esm2020/list/list-navigation-item/list-navigation-item.component.mjs +5 -10
- package/esm2020/list/list.component.mjs +3 -3
- package/esm2020/list/list.module.mjs +4 -4
- package/esm2020/menu/directives/deprecated-menu-compact.directive.mjs +3 -3
- package/esm2020/menu/directives/menu-addon.directive.mjs +3 -3
- package/esm2020/menu/directives/menu-interactive.directive.mjs +3 -3
- package/esm2020/menu/directives/menu-shortcut.directive.mjs +3 -3
- package/esm2020/menu/directives/menu-title.directive.mjs +3 -3
- package/esm2020/menu/directives/menu-trigger.directive.mjs +3 -3
- package/esm2020/menu/menu-item/menu-item.component.mjs +6 -6
- package/esm2020/menu/menu-keyboard.service.mjs +3 -3
- package/esm2020/menu/menu-mobile/menu-mobile.component.mjs +3 -3
- package/esm2020/menu/menu-mobile/menu-mobile.module.mjs +4 -4
- package/esm2020/menu/menu-separator/menu-separator.component.mjs +3 -3
- package/esm2020/menu/menu.component.mjs +3 -3
- package/esm2020/menu/menu.module.mjs +4 -4
- package/esm2020/menu/services/menu.service.mjs +3 -3
- package/esm2020/message-box/directives/message-box-decisive-button.directive.mjs +3 -3
- package/esm2020/message-box/message-box-body/message-box-body.component.mjs +3 -3
- package/esm2020/message-box/message-box-container/message-box-container.component.mjs +3 -3
- package/esm2020/message-box/message-box-default/message-box-default.component.mjs +3 -3
- package/esm2020/message-box/message-box-footer/message-box-footer.component.mjs +3 -3
- package/esm2020/message-box/message-box-footer-button/message-box-footer-button.component.mjs +3 -3
- package/esm2020/message-box/message-box-header/message-box-header.component.mjs +3 -3
- package/esm2020/message-box/message-box-semantic-icon/message-box-semantic-icon.component.mjs +3 -3
- package/esm2020/message-box/message-box.component.mjs +3 -3
- package/esm2020/message-box/message-box.module.mjs +4 -4
- package/esm2020/message-box/services/message-box.service.mjs +3 -3
- package/esm2020/message-box/utils/message-box-config.class.mjs +3 -3
- package/esm2020/message-box/utils/message-box-ref.class.mjs +3 -3
- package/esm2020/message-page/message-page-actions/message-page-actions.component.mjs +3 -3
- package/esm2020/message-page/message-page-more/message-page-more.component.mjs +3 -3
- package/esm2020/message-page/message-page-subtitle/message-page-subtitle.component.mjs +3 -3
- package/esm2020/message-page/message-page-title/message-page-title.component.mjs +3 -3
- package/esm2020/message-page/message-page.component.mjs +3 -3
- package/esm2020/message-page/message-page.module.mjs +4 -4
- package/esm2020/message-strip/message-strip.component.mjs +3 -3
- package/esm2020/message-strip/message-strip.module.mjs +4 -4
- package/esm2020/message-toast/message-toast-service/message-toast.service.mjs +3 -3
- package/esm2020/message-toast/message-toast-utils/message-toast-container.component.mjs +3 -3
- package/esm2020/message-toast/message-toast.component.mjs +3 -3
- package/esm2020/message-toast/message-toast.module.mjs +4 -4
- package/esm2020/micro-process-flow/components/micro-process-flow/deprecated-micro-process-flow-content-density.directive.mjs +3 -3
- package/esm2020/micro-process-flow/components/micro-process-flow/micro-process-flow.component.mjs +3 -3
- package/esm2020/micro-process-flow/components/micro-process-flow-icon/micro-process-flow-icon.component.mjs +3 -3
- package/esm2020/micro-process-flow/components/micro-process-flow-item/micro-process-flow-item.component.mjs +3 -3
- package/esm2020/micro-process-flow/micro-process-flow-focusable-item.directive.mjs +3 -3
- package/esm2020/micro-process-flow/micro-process-flow-intermediary-item.directive.mjs +3 -3
- package/esm2020/micro-process-flow/micro-process-flow.module.mjs +4 -4
- package/esm2020/multi-combobox/base-multi-combobox.class.mjs +3 -3
- package/esm2020/multi-combobox/mobile/mobile-multi-combobox.component.mjs +3 -3
- package/esm2020/multi-combobox/mobile/mobile-multi-combobox.module.mjs +4 -4
- package/esm2020/multi-combobox/multi-combobox-config.mjs +3 -3
- package/esm2020/multi-combobox/multi-combobox.component.mjs +6 -11
- package/esm2020/multi-combobox/multi-combobox.module.mjs +4 -4
- package/esm2020/multi-input/deprecated-multi-input-compact.directive.mjs +3 -3
- package/esm2020/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +3 -3
- package/esm2020/multi-input/multi-input-mobile/multi-input-mobile.module.mjs +4 -4
- package/esm2020/multi-input/multi-input.component.mjs +3 -3
- package/esm2020/multi-input/multi-input.module.mjs +4 -4
- package/esm2020/nested-list/deprecated-nested-list-compact.directive.mjs +3 -3
- package/esm2020/nested-list/nested-content/nested-list-content.directive.mjs +3 -3
- package/esm2020/nested-list/nested-item/nested-item.directive.mjs +3 -3
- package/esm2020/nested-list/nested-link/nested-link.directive.mjs +3 -3
- package/esm2020/nested-list/nested-list/nested-list.directive.mjs +3 -3
- package/esm2020/nested-list/nested-list-directives.mjs +12 -12
- package/esm2020/nested-list/nested-list-keyboard.service.mjs +3 -3
- package/esm2020/nested-list/nested-list-popover/nested-list-popover.component.mjs +3 -3
- package/esm2020/nested-list/nested-list-state.service.mjs +3 -3
- package/esm2020/nested-list/nested-list.module.mjs +4 -4
- package/esm2020/nested-list/prepared-nested-list/prepared-nested-list.component.mjs +3 -3
- package/esm2020/notification/directives/notification-footer-content.directive.mjs +3 -3
- package/esm2020/notification/directives/notification-indicator.directive.mjs +3 -3
- package/esm2020/notification/directives/notification-limit-description.directive.mjs +3 -3
- package/esm2020/notification/directives/notification-limit-title.directive.mjs +3 -3
- package/esm2020/notification/directives/notification-paragraph.directive.mjs +3 -3
- package/esm2020/notification/directives/notification-separator.directive.mjs +3 -3
- package/esm2020/notification/directives/notification-title.directive.mjs +3 -3
- package/esm2020/notification/notification/notification.component.mjs +3 -3
- package/esm2020/notification/notification-actions/notification-actions.component.mjs +3 -3
- package/esm2020/notification/notification-body/notification-body.component.mjs +3 -3
- package/esm2020/notification/notification-content/notification-content.component.mjs +3 -3
- package/esm2020/notification/notification-footer/notification-footer.component.mjs +3 -3
- package/esm2020/notification/notification-group/notification-group.component.mjs +3 -3
- package/esm2020/notification/notification-group-header/notification-group-header.component.mjs +3 -3
- package/esm2020/notification/notification-group-list/notification-group-list.component.mjs +3 -3
- package/esm2020/notification/notification-header/notification-header.component.mjs +3 -3
- package/esm2020/notification/notification-limit/notification-limit.component.mjs +3 -3
- package/esm2020/notification/notification-service/notification.service.mjs +3 -3
- package/esm2020/notification/notification-utils/notification-container.mjs +3 -3
- package/esm2020/notification/notification-utils/notification-group-base.mjs +3 -3
- package/esm2020/notification/notification.module.mjs +4 -4
- package/esm2020/object-identifier/object-identifier.component.mjs +3 -3
- package/esm2020/object-identifier/object-identifier.module.mjs +4 -4
- package/esm2020/object-marker/object-marker.component.mjs +3 -3
- package/esm2020/object-marker/object-marker.module.mjs +4 -4
- package/esm2020/object-number/object-number.component.mjs +3 -3
- package/esm2020/object-number/object-number.module.mjs +4 -4
- package/esm2020/object-status/object-status.component.mjs +3 -3
- package/esm2020/object-status/object-status.module.mjs +4 -4
- package/esm2020/overflow-layout/directives/overflow-expand.directive.mjs +3 -3
- package/esm2020/overflow-layout/directives/overflow-item-container-ref.directive.mjs +3 -3
- package/esm2020/overflow-layout/directives/overflow-item-ref.directive.mjs +3 -3
- package/esm2020/overflow-layout/directives/overflow-layout-focusable-item.directive.mjs +3 -3
- package/esm2020/overflow-layout/directives/overflow-layout-item-container.directive.mjs +3 -3
- package/esm2020/overflow-layout/directives/overflow-layout-item.directive.mjs +3 -3
- package/esm2020/overflow-layout/directives/overflow-layout-popover-content.directive.mjs +3 -3
- package/esm2020/overflow-layout/overflow-layout.component.mjs +3 -3
- package/esm2020/overflow-layout/overflow-layout.module.mjs +4 -4
- package/esm2020/overflow-layout/overflow-layout.service.mjs +22 -18
- package/esm2020/pagination/deprecated-pagination-compact.directive.mjs +3 -3
- package/esm2020/pagination/pagination.component.mjs +3 -3
- package/esm2020/pagination/pagination.module.mjs +4 -4
- package/esm2020/pagination/pagination.service.mjs +3 -3
- package/esm2020/panel/deprecated-panel-compact.directive.mjs +3 -3
- package/esm2020/panel/panel-content/panel-content.directive.mjs +3 -3
- package/esm2020/panel/panel-title/panel-title.directive.mjs +3 -3
- package/esm2020/panel/panel.component.mjs +3 -3
- package/esm2020/panel/panel.module.mjs +4 -4
- package/esm2020/popover/base/base-popover.class.mjs +4 -8
- package/esm2020/popover/popover-body/popover-body-directives/popover-body-footer.directive.mjs +3 -3
- package/esm2020/popover/popover-body/popover-body-directives/popover-body-header.directive.mjs +3 -3
- package/esm2020/popover/popover-body/popover-body.component.mjs +5 -9
- package/esm2020/popover/popover-container/popover-container.directive.mjs +3 -3
- package/esm2020/popover/popover-control/popover-control.component.mjs +3 -3
- package/esm2020/popover/popover-mobile/popover-mobile.component.mjs +3 -3
- package/esm2020/popover/popover-mobile/popover-mobile.module.mjs +4 -4
- package/esm2020/popover/popover-service/popover.service.mjs +4 -6
- package/esm2020/popover/popover-trigger.directive.mjs +3 -3
- package/esm2020/popover/popover.component.mjs +3 -3
- package/esm2020/popover/popover.module.mjs +4 -4
- package/esm2020/product-switch/product-switch/product-switch.component.mjs +3 -3
- package/esm2020/product-switch/product-switch-body/product-switch-body.component.mjs +3 -3
- package/esm2020/product-switch/product-switch.module.mjs +4 -4
- package/esm2020/progress-indicator/progress-indicator.component.mjs +3 -3
- package/esm2020/progress-indicator/progress-indicator.module.mjs +4 -4
- package/esm2020/quick-view/quick-view/quick-view.component.mjs +3 -3
- package/esm2020/quick-view/quick-view-group/quick-view-group.component.mjs +3 -3
- package/esm2020/quick-view/quick-view-group-item/quick-view-group-item.component.mjs +3 -3
- package/esm2020/quick-view/quick-view-group-item-content/quick-view-group-item-content-element.directive.mjs +3 -3
- package/esm2020/quick-view/quick-view-group-item-content/quick-view-group-item-content.component.mjs +3 -3
- package/esm2020/quick-view/quick-view-group-item-label/quick-view-group-item-label.component.mjs +3 -3
- package/esm2020/quick-view/quick-view-group-title/quick-view-group-title.component.mjs +3 -3
- package/esm2020/quick-view/quick-view-subheader/quick-view-subheader.component.mjs +3 -3
- package/esm2020/quick-view/quick-view-subheader-subtitle/quick-view-subheader-subtitle.component.mjs +3 -3
- package/esm2020/quick-view/quick-view-subheader-title/quick-view-subheader-title.component.mjs +3 -3
- package/esm2020/quick-view/quick-view-title/quick-view-title.component.mjs +3 -3
- package/esm2020/quick-view/quick-view.module.mjs +4 -4
- package/esm2020/radio/deprecated-radio-button-compact.directive.mjs +3 -3
- package/esm2020/radio/radio-button/radio-button.component.mjs +3 -3
- package/esm2020/radio/radio.module.mjs +4 -4
- package/esm2020/rating-indicator/components/rating-indicator.component.mjs +3 -3
- package/esm2020/rating-indicator/pipes/rating-star-label.pipe.mjs +3 -3
- package/esm2020/rating-indicator/rating-indicator.module.mjs +4 -4
- package/esm2020/resizable-card-layout/resizable-card-layout/resizable-card-item/resizable-card-item.component.mjs +3 -3
- package/esm2020/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.mjs +3 -3
- package/esm2020/resizable-card-layout/resizable-card-layout.module.mjs +4 -4
- package/esm2020/scroll-spy/scroll-spy.directive.mjs +3 -3
- package/esm2020/scroll-spy/scroll-spy.module.mjs +4 -4
- package/esm2020/scrollbar/scrollbar.directive.mjs +3 -3
- package/esm2020/scrollbar/scrollbar.module.mjs +4 -4
- package/esm2020/segmented-button/segmented-button.component.mjs +3 -3
- package/esm2020/segmented-button/segmented-button.module.mjs +4 -4
- package/esm2020/select/deprecated-select-compact.directive.mjs +3 -3
- package/esm2020/select/option/option.component.mjs +3 -3
- package/esm2020/select/select-key-manager.service.mjs +3 -3
- package/esm2020/select/select-mobile/select-mobile.component.mjs +3 -3
- package/esm2020/select/select-mobile/select-mobile.module.mjs +4 -4
- package/esm2020/select/select.component.mjs +6 -7
- package/esm2020/select/select.module.mjs +4 -4
- package/esm2020/shared/services/value-state-message.service.mjs +3 -3
- package/esm2020/shellbar/deprecated-shellbar-compact.directive.mjs +3 -3
- package/esm2020/shellbar/product-menu/product-menu.component.mjs +3 -3
- package/esm2020/shellbar/shellbar-action/shellbar-action.component.mjs +3 -3
- package/esm2020/shellbar/shellbar-actions/shellbar-actions.component.mjs +3 -3
- package/esm2020/shellbar/shellbar-actions-mobile/shellbar-actions-mobile.component.mjs +3 -3
- package/esm2020/shellbar/shellbar-logo/shellbar-logo.component.mjs +3 -3
- package/esm2020/shellbar/shellbar-sidenav.directive.mjs +3 -3
- package/esm2020/shellbar/shellbar-subtitle/shellbar-subtitle.component.mjs +3 -3
- package/esm2020/shellbar/shellbar-title/shellbar-title.component.mjs +3 -3
- package/esm2020/shellbar/shellbar.component.mjs +3 -3
- package/esm2020/shellbar/shellbar.module.mjs +4 -4
- package/esm2020/shellbar/user-menu/shellbar-user-menu.component.mjs +3 -3
- package/esm2020/side-navigation/side-navigation-main.directive.mjs +3 -3
- package/esm2020/side-navigation/side-navigation-utility.directive.mjs +3 -3
- package/esm2020/side-navigation/side-navigation.component.mjs +3 -3
- package/esm2020/side-navigation/side-navigation.module.mjs +4 -4
- package/esm2020/skeleton/components/skeleton.component.mjs +3 -3
- package/esm2020/skeleton/skeleton.module.mjs +4 -4
- package/esm2020/slider/deprecated-slider-cozy.directive.mjs +3 -3
- package/esm2020/slider/slider-position.directive.mjs +3 -3
- package/esm2020/slider/slider.component.mjs +3 -3
- package/esm2020/slider/slider.module.mjs +4 -4
- package/esm2020/split-button/deprecated-split-button-compact.directive.mjs +3 -3
- package/esm2020/split-button/split-button-utils/split-button.directives.mjs +3 -3
- package/esm2020/split-button/split-button.component.mjs +3 -3
- package/esm2020/split-button/split-button.module.mjs +4 -4
- package/esm2020/splitter/splitter-pagination/splitter-pagination.component.mjs +3 -3
- package/esm2020/splitter/splitter-pane-container/splitter-pane-container.component.mjs +6 -6
- package/esm2020/splitter/splitter-resizer/splitter-resizer.component.mjs +3 -3
- package/esm2020/splitter/splitter-split-pane/splitter-split-pane.component.mjs +3 -3
- package/esm2020/splitter/splitter.component.mjs +3 -3
- package/esm2020/splitter/splitter.module.mjs +4 -4
- package/esm2020/status-indicator/status-indicator.component.mjs +3 -3
- package/esm2020/status-indicator/status-indicator.module.mjs +4 -4
- package/esm2020/step-input/deprecated-step-input-compact.directive.mjs +3 -3
- package/esm2020/step-input/step-input.component.mjs +3 -3
- package/esm2020/step-input/step-input.module.mjs +4 -4
- package/esm2020/switch/deprecated-switch-compact.directive.mjs +3 -3
- package/esm2020/switch/switch.component.mjs +3 -3
- package/esm2020/switch/switch.module.mjs +4 -4
- package/esm2020/table/deprecated-table-compact.directive.mjs +3 -3
- package/esm2020/table/deprecated-table-condensed.directive.mjs +3 -3
- package/esm2020/table/directives/table-body.directive.mjs +3 -3
- package/esm2020/table/directives/table-cell.directive.mjs +3 -3
- package/esm2020/table/directives/table-fixed.directive.mjs +3 -3
- package/esm2020/table/directives/table-footer.directive.mjs +3 -3
- package/esm2020/table/directives/table-header.directive.mjs +3 -3
- package/esm2020/table/directives/table-icon.directive.mjs +3 -3
- package/esm2020/table/directives/table-inner.directive.mjs +3 -3
- package/esm2020/table/directives/table-popover.directive.mjs +3 -3
- package/esm2020/table/directives/table-responsive-wrapper.directive.mjs +3 -3
- package/esm2020/table/directives/table-row.directive.mjs +3 -3
- package/esm2020/table/directives/table-status-indicator.directive.mjs +3 -3
- package/esm2020/table/directives/table-text.directive.mjs +3 -3
- package/esm2020/table/table-wrapper.component.mjs +3 -3
- package/esm2020/table/table.component.mjs +3 -3
- package/esm2020/table/table.module.mjs +7 -8
- package/esm2020/tabs/deprecated-tabs-compact.directive.mjs +3 -3
- package/esm2020/tabs/tab-item/tab-item.directive.mjs +3 -3
- package/esm2020/tabs/tab-item-expand/tab-item-expand.component.mjs +3 -3
- package/esm2020/tabs/tab-link/tab-link.directive.mjs +3 -3
- package/esm2020/tabs/tab-list.component.mjs +3 -3
- package/esm2020/tabs/tab-nav/tab-nav.component.mjs +3 -3
- package/esm2020/tabs/tab-panel/tab-panel.component.mjs +3 -3
- package/esm2020/tabs/tab-utils/tab-directives.mjs +30 -30
- package/esm2020/tabs/tabs.module.mjs +4 -4
- package/esm2020/text/text.component.mjs +3 -3
- package/esm2020/text/text.module.mjs +4 -4
- package/esm2020/theming/theming.module.mjs +4 -4
- package/esm2020/theming/theming.service.mjs +3 -3
- package/esm2020/tile/directives/numeric-content.directives.mjs +27 -27
- package/esm2020/tile/directives/tile.directives.mjs +69 -69
- package/esm2020/tile/tile.component.mjs +3 -3
- package/esm2020/tile/tile.module.mjs +4 -4
- package/esm2020/time/deprecated-time-content-density.directive.mjs +3 -3
- package/esm2020/time/i18n/time-i18n.mjs +3 -3
- package/esm2020/time/time-column/time-column.component.mjs +3 -3
- package/esm2020/time/time.component.mjs +3 -3
- package/esm2020/time/time.module.mjs +4 -4
- package/esm2020/time-picker/deprecated-timepicker-compact.directive.mjs +3 -3
- package/esm2020/time-picker/time-picker.component.mjs +3 -3
- package/esm2020/time-picker/time-picker.module.mjs +4 -4
- package/esm2020/timeline/components/timeline-node/timeline-node.component.mjs +3 -3
- package/esm2020/timeline/components/timeline-node-body/timeline-node-body.component.mjs +3 -3
- package/esm2020/timeline/components/timeline-node-footer/timeline-node-footer.component.mjs +3 -3
- package/esm2020/timeline/components/timeline-node-header/timeline-node-header-info/timeline-node-header-info.component.mjs +3 -3
- package/esm2020/timeline/components/timeline-node-header/timeline-node-header.component.mjs +3 -3
- package/esm2020/timeline/directives/class-bindings/timeline-header-info-sub-title.directive.mjs +3 -3
- package/esm2020/timeline/directives/class-bindings/timeline-node-header-info-text.directive.mjs +3 -3
- package/esm2020/timeline/directives/class-bindings/timeline-node-header-info-title.directive.mjs +3 -3
- package/esm2020/timeline/directives/timeline-first-list-outlet.directive.mjs +3 -3
- package/esm2020/timeline/directives/timeline-node-def.directive.mjs +3 -3
- package/esm2020/timeline/directives/timeline-second-list-outlet.directive.mjs +3 -3
- package/esm2020/timeline/services/timeline-position-control.service.mjs +3 -3
- package/esm2020/timeline/timeline.component.mjs +3 -3
- package/esm2020/timeline/timeline.module.mjs +4 -4
- package/esm2020/title/title.component.mjs +3 -3
- package/esm2020/title/title.module.mjs +4 -4
- package/esm2020/token/deprecated-tokenizer-content-density.directive.mjs +3 -3
- package/esm2020/token/token-input.directive.mjs +3 -3
- package/esm2020/token/token.component.mjs +3 -3
- package/esm2020/token/token.module.mjs +4 -4
- package/esm2020/token/tokenizer.component.mjs +3 -3
- package/esm2020/toolbar/deprecated-toolbar-size.directive.mjs +3 -3
- package/esm2020/toolbar/public_api.mjs +4 -3
- package/esm2020/toolbar/toolbar-form-label.directive.mjs +3 -3
- package/esm2020/toolbar/toolbar-item.directive.mjs +8 -43
- package/esm2020/toolbar/toolbar-label.directive.mjs +3 -3
- package/esm2020/toolbar/toolbar-overflow-button-menu.directive.mjs +3 -3
- package/esm2020/toolbar/toolbar-overflow-button.directive.mjs +3 -3
- package/esm2020/toolbar/toolbar-overflow-group.directive.mjs +27 -0
- package/esm2020/toolbar/toolbar-overflow-priority.directive.mjs +29 -0
- package/esm2020/toolbar/toolbar-separator.component.mjs +3 -3
- package/esm2020/toolbar/toolbar-spacer.component.mjs +47 -0
- package/esm2020/toolbar/toolbar.component.mjs +277 -159
- package/esm2020/toolbar/toolbar.module.mjs +19 -12
- package/esm2020/tree/tree-child.component.mjs +3 -3
- package/esm2020/tree/tree.component.mjs +3 -3
- package/esm2020/tree/tree.module.mjs +4 -4
- package/esm2020/upload-collection/upload-collection-button-group/upload-collection-button-group.component.mjs +3 -3
- package/esm2020/upload-collection/upload-collection-form-item/upload-collection-form-item.component.mjs +3 -3
- package/esm2020/upload-collection/upload-collection-item.directive.mjs +3 -3
- package/esm2020/upload-collection/upload-collection-simple.directives.mjs +21 -21
- package/esm2020/upload-collection/upload-collection.component.mjs +3 -3
- package/esm2020/upload-collection/upload-collection.module.mjs +4 -4
- package/esm2020/vertical-navigation/vertical-navigation-group-header.directive.mjs +3 -3
- package/esm2020/vertical-navigation/vertical-navigation-main-navigation.component.mjs +3 -3
- package/esm2020/vertical-navigation/vertical-navigation.component.mjs +3 -3
- package/esm2020/vertical-navigation/vertical-navigation.module.mjs +4 -4
- package/esm2020/wizard/deprecated-wizard-compact.directive.mjs +3 -3
- package/esm2020/wizard/wizard-content/wizard-content.component.mjs +3 -3
- package/esm2020/wizard/wizard-navigation/wizard-navigation.component.mjs +3 -3
- package/esm2020/wizard/wizard-next-step/wizard-next-step.component.mjs +3 -3
- package/esm2020/wizard/wizard-progress-bar/wizard-progress-bar.directive.mjs +3 -3
- package/esm2020/wizard/wizard-step/wizard-step.component.mjs +3 -3
- package/esm2020/wizard/wizard-step-indicator/wizard-step-indicator.component.mjs +3 -3
- package/esm2020/wizard/wizard.component.mjs +3 -3
- package/esm2020/wizard/wizard.module.mjs +4 -4
- package/esm2020/wizard/wizard.service.mjs +3 -3
- package/fesm2015/fundamental-ngx-core-action-bar.mjs +25 -25
- package/fesm2015/fundamental-ngx-core-action-sheet.mjs +26 -26
- package/fesm2015/fundamental-ngx-core-alert.mjs +13 -13
- package/fesm2015/fundamental-ngx-core-avatar-group.mjs +28 -28
- package/fesm2015/fundamental-ngx-core-avatar.mjs +7 -7
- package/fesm2015/fundamental-ngx-core-bar.mjs +28 -28
- package/fesm2015/fundamental-ngx-core-breadcrumb.mjs +13 -13
- package/fesm2015/fundamental-ngx-core-busy-indicator.mjs +10 -10
- package/fesm2015/fundamental-ngx-core-button.mjs +13 -13
- package/fesm2015/fundamental-ngx-core-calendar.mjs +34 -34
- package/fesm2015/fundamental-ngx-core-card.mjs +58 -58
- package/fesm2015/fundamental-ngx-core-carousel.mjs +19 -19
- package/fesm2015/fundamental-ngx-core-checkbox.mjs +10 -10
- package/fesm2015/fundamental-ngx-core-combobox.mjs +20 -20
- package/fesm2015/fundamental-ngx-core-content-density.mjs +37 -37
- package/fesm2015/fundamental-ngx-core-date-picker.mjs +10 -10
- package/fesm2015/fundamental-ngx-core-datetime-picker.mjs +10 -10
- package/fesm2015/fundamental-ngx-core-datetime.mjs +24 -24
- package/fesm2015/fundamental-ngx-core-dialog.mjs +58 -58
- package/fesm2015/fundamental-ngx-core-dynamic-page.mjs +44 -44
- package/fesm2015/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-dynamic-side-content.mjs +13 -13
- package/fesm2015/fundamental-ngx-core-facets.mjs +13 -13
- package/fesm2015/fundamental-ngx-core-feed-input.mjs +16 -16
- package/fesm2015/fundamental-ngx-core-feed-list-item.mjs +22 -22
- package/fesm2015/fundamental-ngx-core-file-uploader.mjs +19 -19
- package/fesm2015/fundamental-ngx-core-fixed-card-layout.mjs +13 -13
- package/fesm2015/fundamental-ngx-core-flexible-column-layout.mjs +7 -7
- package/fesm2015/fundamental-ngx-core-form.mjs +79 -79
- package/fesm2015/fundamental-ngx-core-formatted-text.mjs +7 -7
- package/fesm2015/fundamental-ngx-core-grid-list.mjs +48 -48
- package/fesm2015/fundamental-ngx-core-grid-list.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-icon.mjs +7 -7
- package/fesm2015/fundamental-ngx-core-illustrated-message.mjs +19 -19
- package/fesm2015/fundamental-ngx-core-infinite-scroll.mjs +7 -7
- package/fesm2015/fundamental-ngx-core-info-label.mjs +7 -7
- package/fesm2015/fundamental-ngx-core-inline-help.mjs +7 -14
- package/fesm2015/fundamental-ngx-core-inline-help.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-input-group.mjs +22 -22
- package/fesm2015/fundamental-ngx-core-layout-grid.mjs +13 -13
- package/fesm2015/fundamental-ngx-core-layout-panel.mjs +31 -31
- package/fesm2015/fundamental-ngx-core-link.mjs +7 -7
- package/fesm2015/fundamental-ngx-core-list.mjs +67 -79
- package/fesm2015/fundamental-ngx-core-list.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-menu.mjs +47 -47
- package/fesm2015/fundamental-ngx-core-message-box.mjs +40 -40
- package/fesm2015/fundamental-ngx-core-message-page.mjs +19 -19
- package/fesm2015/fundamental-ngx-core-message-strip.mjs +7 -7
- package/fesm2015/fundamental-ngx-core-message-toast.mjs +13 -13
- package/fesm2015/fundamental-ngx-core-micro-process-flow.mjs +22 -22
- package/fesm2015/fundamental-ngx-core-multi-combobox.mjs +23 -28
- package/fesm2015/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-multi-input.mjs +17 -17
- package/fesm2015/fundamental-ngx-core-nested-list.mjs +43 -43
- package/fesm2015/fundamental-ngx-core-notification.mjs +64 -64
- package/fesm2015/fundamental-ngx-core-object-identifier.mjs +7 -7
- package/fesm2015/fundamental-ngx-core-object-marker.mjs +7 -7
- package/fesm2015/fundamental-ngx-core-object-number.mjs +7 -7
- package/fesm2015/fundamental-ngx-core-object-status.mjs +7 -7
- package/fesm2015/fundamental-ngx-core-overflow-layout.mjs +49 -45
- package/fesm2015/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-pagination.mjs +13 -13
- package/fesm2015/fundamental-ngx-core-panel.mjs +16 -16
- package/fesm2015/fundamental-ngx-core-popover.mjs +39 -49
- package/fesm2015/fundamental-ngx-core-popover.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-product-switch.mjs +10 -10
- package/fesm2015/fundamental-ngx-core-progress-indicator.mjs +7 -7
- package/fesm2015/fundamental-ngx-core-quick-view.mjs +37 -37
- package/fesm2015/fundamental-ngx-core-radio.mjs +10 -10
- package/fesm2015/fundamental-ngx-core-rating-indicator.mjs +10 -10
- package/fesm2015/fundamental-ngx-core-resizable-card-layout.mjs +10 -10
- package/fesm2015/fundamental-ngx-core-scroll-spy.mjs +7 -7
- package/fesm2015/fundamental-ngx-core-scrollbar.mjs +7 -7
- package/fesm2015/fundamental-ngx-core-segmented-button.mjs +7 -7
- package/fesm2015/fundamental-ngx-core-select.mjs +24 -25
- package/fesm2015/fundamental-ngx-core-select.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-shared.mjs +3 -3
- package/fesm2015/fundamental-ngx-core-shellbar.mjs +37 -37
- package/fesm2015/fundamental-ngx-core-side-navigation.mjs +13 -13
- package/fesm2015/fundamental-ngx-core-skeleton.mjs +7 -7
- package/fesm2015/fundamental-ngx-core-slider.mjs +13 -13
- package/fesm2015/fundamental-ngx-core-split-button.mjs +13 -13
- package/fesm2015/fundamental-ngx-core-splitter.mjs +22 -22
- package/fesm2015/fundamental-ngx-core-status-indicator.mjs +7 -7
- package/fesm2015/fundamental-ngx-core-step-input.mjs +10 -10
- package/fesm2015/fundamental-ngx-core-switch.mjs +10 -10
- package/fesm2015/fundamental-ngx-core-table.mjs +55 -55
- package/fesm2015/fundamental-ngx-core-table.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-tabs.mjs +55 -55
- package/fesm2015/fundamental-ngx-core-text.mjs +7 -7
- package/fesm2015/fundamental-ngx-core-theming.mjs +7 -7
- package/fesm2015/fundamental-ngx-core-tile.mjs +103 -103
- package/fesm2015/fundamental-ngx-core-time-picker.mjs +10 -10
- package/fesm2015/fundamental-ngx-core-time.mjs +16 -16
- package/fesm2015/fundamental-ngx-core-timeline.mjs +43 -43
- package/fesm2015/fundamental-ngx-core-title.mjs +7 -7
- package/fesm2015/fundamental-ngx-core-token.mjs +16 -16
- package/fesm2015/fundamental-ngx-core-toolbar.mjs +416 -276
- package/fesm2015/fundamental-ngx-core-toolbar.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-tree.mjs +10 -10
- package/fesm2015/fundamental-ngx-core-upload-collection.mjs +37 -37
- package/fesm2015/fundamental-ngx-core-vertical-navigation.mjs +13 -13
- package/fesm2015/fundamental-ngx-core-wizard.mjs +31 -31
- package/fesm2015/fundamental-ngx-core.mjs +4 -4
- package/fesm2020/fundamental-ngx-core-action-bar.mjs +25 -25
- package/fesm2020/fundamental-ngx-core-action-sheet.mjs +26 -26
- package/fesm2020/fundamental-ngx-core-alert.mjs +13 -13
- package/fesm2020/fundamental-ngx-core-avatar-group.mjs +28 -28
- package/fesm2020/fundamental-ngx-core-avatar.mjs +7 -7
- package/fesm2020/fundamental-ngx-core-bar.mjs +28 -28
- package/fesm2020/fundamental-ngx-core-breadcrumb.mjs +13 -13
- package/fesm2020/fundamental-ngx-core-busy-indicator.mjs +10 -10
- package/fesm2020/fundamental-ngx-core-button.mjs +13 -13
- package/fesm2020/fundamental-ngx-core-calendar.mjs +34 -34
- package/fesm2020/fundamental-ngx-core-card.mjs +58 -58
- package/fesm2020/fundamental-ngx-core-carousel.mjs +19 -19
- package/fesm2020/fundamental-ngx-core-checkbox.mjs +10 -10
- package/fesm2020/fundamental-ngx-core-combobox.mjs +20 -20
- package/fesm2020/fundamental-ngx-core-content-density.mjs +37 -37
- package/fesm2020/fundamental-ngx-core-date-picker.mjs +10 -10
- package/fesm2020/fundamental-ngx-core-datetime-picker.mjs +10 -10
- package/fesm2020/fundamental-ngx-core-datetime.mjs +24 -24
- package/fesm2020/fundamental-ngx-core-dialog.mjs +58 -58
- package/fesm2020/fundamental-ngx-core-dynamic-page.mjs +44 -44
- package/fesm2020/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-dynamic-side-content.mjs +13 -13
- package/fesm2020/fundamental-ngx-core-facets.mjs +13 -13
- package/fesm2020/fundamental-ngx-core-feed-input.mjs +16 -16
- package/fesm2020/fundamental-ngx-core-feed-list-item.mjs +22 -22
- package/fesm2020/fundamental-ngx-core-file-uploader.mjs +19 -19
- package/fesm2020/fundamental-ngx-core-fixed-card-layout.mjs +13 -13
- package/fesm2020/fundamental-ngx-core-flexible-column-layout.mjs +7 -7
- package/fesm2020/fundamental-ngx-core-form.mjs +79 -79
- package/fesm2020/fundamental-ngx-core-formatted-text.mjs +7 -7
- package/fesm2020/fundamental-ngx-core-grid-list.mjs +48 -48
- package/fesm2020/fundamental-ngx-core-grid-list.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-icon.mjs +7 -7
- package/fesm2020/fundamental-ngx-core-illustrated-message.mjs +19 -19
- package/fesm2020/fundamental-ngx-core-infinite-scroll.mjs +7 -7
- package/fesm2020/fundamental-ngx-core-info-label.mjs +7 -7
- package/fesm2020/fundamental-ngx-core-inline-help.mjs +7 -14
- package/fesm2020/fundamental-ngx-core-inline-help.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-input-group.mjs +22 -22
- package/fesm2020/fundamental-ngx-core-layout-grid.mjs +13 -13
- package/fesm2020/fundamental-ngx-core-layout-panel.mjs +31 -31
- package/fesm2020/fundamental-ngx-core-link.mjs +7 -7
- package/fesm2020/fundamental-ngx-core-list.mjs +67 -78
- package/fesm2020/fundamental-ngx-core-list.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-menu.mjs +47 -47
- package/fesm2020/fundamental-ngx-core-message-box.mjs +40 -40
- package/fesm2020/fundamental-ngx-core-message-page.mjs +19 -19
- package/fesm2020/fundamental-ngx-core-message-strip.mjs +7 -7
- package/fesm2020/fundamental-ngx-core-message-toast.mjs +13 -13
- package/fesm2020/fundamental-ngx-core-micro-process-flow.mjs +22 -22
- package/fesm2020/fundamental-ngx-core-multi-combobox.mjs +22 -27
- package/fesm2020/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-multi-input.mjs +17 -17
- package/fesm2020/fundamental-ngx-core-nested-list.mjs +43 -43
- package/fesm2020/fundamental-ngx-core-notification.mjs +64 -64
- package/fesm2020/fundamental-ngx-core-object-identifier.mjs +7 -7
- package/fesm2020/fundamental-ngx-core-object-marker.mjs +7 -7
- package/fesm2020/fundamental-ngx-core-object-number.mjs +7 -7
- package/fesm2020/fundamental-ngx-core-object-status.mjs +7 -7
- package/fesm2020/fundamental-ngx-core-overflow-layout.mjs +49 -45
- package/fesm2020/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-pagination.mjs +13 -13
- package/fesm2020/fundamental-ngx-core-panel.mjs +16 -16
- package/fesm2020/fundamental-ngx-core-popover.mjs +39 -49
- package/fesm2020/fundamental-ngx-core-popover.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-product-switch.mjs +10 -10
- package/fesm2020/fundamental-ngx-core-progress-indicator.mjs +7 -7
- package/fesm2020/fundamental-ngx-core-quick-view.mjs +37 -37
- package/fesm2020/fundamental-ngx-core-radio.mjs +10 -10
- package/fesm2020/fundamental-ngx-core-rating-indicator.mjs +10 -10
- package/fesm2020/fundamental-ngx-core-resizable-card-layout.mjs +10 -10
- package/fesm2020/fundamental-ngx-core-scroll-spy.mjs +7 -7
- package/fesm2020/fundamental-ngx-core-scrollbar.mjs +7 -7
- package/fesm2020/fundamental-ngx-core-segmented-button.mjs +7 -7
- package/fesm2020/fundamental-ngx-core-select.mjs +24 -25
- package/fesm2020/fundamental-ngx-core-select.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-shared.mjs +3 -3
- package/fesm2020/fundamental-ngx-core-shellbar.mjs +37 -37
- package/fesm2020/fundamental-ngx-core-side-navigation.mjs +13 -13
- package/fesm2020/fundamental-ngx-core-skeleton.mjs +7 -7
- package/fesm2020/fundamental-ngx-core-slider.mjs +13 -13
- package/fesm2020/fundamental-ngx-core-split-button.mjs +13 -13
- package/fesm2020/fundamental-ngx-core-splitter.mjs +22 -22
- package/fesm2020/fundamental-ngx-core-status-indicator.mjs +7 -7
- package/fesm2020/fundamental-ngx-core-step-input.mjs +10 -10
- package/fesm2020/fundamental-ngx-core-switch.mjs +10 -10
- package/fesm2020/fundamental-ngx-core-table.mjs +55 -55
- package/fesm2020/fundamental-ngx-core-table.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-tabs.mjs +55 -55
- package/fesm2020/fundamental-ngx-core-text.mjs +7 -7
- package/fesm2020/fundamental-ngx-core-theming.mjs +7 -7
- package/fesm2020/fundamental-ngx-core-tile.mjs +103 -103
- package/fesm2020/fundamental-ngx-core-time-picker.mjs +10 -10
- package/fesm2020/fundamental-ngx-core-time.mjs +16 -16
- package/fesm2020/fundamental-ngx-core-timeline.mjs +43 -43
- package/fesm2020/fundamental-ngx-core-title.mjs +7 -7
- package/fesm2020/fundamental-ngx-core-token.mjs +16 -16
- package/fesm2020/fundamental-ngx-core-toolbar.mjs +416 -275
- package/fesm2020/fundamental-ngx-core-toolbar.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-tree.mjs +10 -10
- package/fesm2020/fundamental-ngx-core-upload-collection.mjs +37 -37
- package/fesm2020/fundamental-ngx-core-vertical-navigation.mjs +13 -13
- package/fesm2020/fundamental-ngx-core-wizard.mjs +31 -31
- package/fesm2020/fundamental-ngx-core.mjs +4 -4
- package/fundamental-ngx-core-v0.40.5.tgz +0 -0
- package/grid-list/components/grid-list-title-bar-spacer/grid-list-title-bar-spacer.component.d.ts +2 -2
- package/inline-help/inline-help.directive.d.ts +0 -2
- package/list/directives/list-navigation-item-arrow.directive.d.ts +0 -6
- package/overflow-layout/overflow-layout.service.d.ts +4 -4
- package/package.json +4 -4
- package/popover/base/base-popover.class.d.ts +0 -4
- package/popover/popover-body/popover-body.component.d.ts +0 -4
- package/schematics/add-dependencies/index.js +4 -4
- package/table/table.module.d.ts +1 -2
- package/toolbar/public_api.d.ts +3 -2
- package/toolbar/toolbar-item.directive.d.ts +2 -20
- package/toolbar/toolbar-overflow-group.directive.d.ts +14 -0
- package/toolbar/toolbar-overflow-priority.directive.d.ts +17 -0
- package/toolbar/{toolbar-spacer.directive.d.ts → toolbar-spacer.component.d.ts} +3 -3
- package/toolbar/toolbar.component.d.ts +70 -33
- package/toolbar/toolbar.module.d.ts +9 -8
- package/esm2020/toolbar/abstract-toolbar-item.class.mjs +0 -3
- package/esm2020/toolbar/toolbar-spacer.directive.mjs +0 -45
- package/fundamental-ngx-core-v0.40.4-rc.6.tgz +0 -0
- package/toolbar/abstract-toolbar-item.class.d.ts +0 -8
|
@@ -1,52 +1,45 @@
|
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, ElementRef, forwardRef, Inject, Input,
|
|
2
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, ElementRef, forwardRef, Inject, Input, Optional, QueryList, Renderer2, SkipSelf, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
3
3
|
import { DYNAMIC_PAGE_HEADER_TOKEN } from '@fundamental-ngx/core/shared';
|
|
4
|
-
import { applyCssClass,
|
|
5
|
-
import {
|
|
4
|
+
import { applyCssClass, OVERFLOW_PRIORITY_SCORE, DestroyedService } from '@fundamental-ngx/cdk/utils';
|
|
5
|
+
import { fromEvent, of, Subscription } from 'rxjs';
|
|
6
|
+
import { debounceTime, delay, distinctUntilChanged, filter, takeUntil } from 'rxjs/operators';
|
|
7
|
+
import { ToolbarItemDirective } from './toolbar-item.directive';
|
|
6
8
|
import { TitleToken } from '@fundamental-ngx/core/title';
|
|
7
9
|
import { ContentDensityMode, ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';
|
|
8
|
-
import { ToolbarItem } from './abstract-toolbar-item.class';
|
|
9
10
|
import * as i0 from "@angular/core";
|
|
10
11
|
import * as i1 from "@fundamental-ngx/core/content-density";
|
|
11
12
|
import * as i2 from "@fundamental-ngx/cdk/utils";
|
|
12
13
|
import * as i3 from "@angular/common";
|
|
13
14
|
import * as i4 from "@fundamental-ngx/core/button";
|
|
14
15
|
import * as i5 from "@fundamental-ngx/core/popover";
|
|
15
|
-
import * as i6 from "./toolbar-spacer.directive";
|
|
16
|
-
import * as i7 from "./toolbar-separator.component";
|
|
17
16
|
const ELEMENT_MARGIN = 8;
|
|
18
17
|
const OVERFLOW_SPACE = 50 + 2 * ELEMENT_MARGIN;
|
|
19
18
|
const MAX_CONTENT_SIZE = 99999999;
|
|
20
19
|
export class ToolbarComponent {
|
|
21
|
-
/** Determines if overflow button should be visible
|
|
22
|
-
* Default value: false
|
|
23
|
-
*/
|
|
24
|
-
set shouldOverflow(val) {
|
|
25
|
-
this._shouldOverflow = val;
|
|
26
|
-
this.shouldOverflow$.next(val);
|
|
27
|
-
}
|
|
28
|
-
get shouldOverflow() {
|
|
29
|
-
return this._shouldOverflow;
|
|
30
|
-
}
|
|
31
20
|
/** @hidden */
|
|
32
|
-
|
|
33
|
-
this.
|
|
21
|
+
get _toolbarWidth() {
|
|
22
|
+
return this.toolbar.nativeElement.clientWidth - OVERFLOW_SPACE;
|
|
34
23
|
}
|
|
35
|
-
|
|
36
|
-
|
|
24
|
+
/** @hidden */
|
|
25
|
+
get _overflowBody() {
|
|
26
|
+
return this.overflowBody && this.overflowBody.nativeElement;
|
|
37
27
|
}
|
|
38
28
|
/** @hidden */
|
|
39
|
-
get
|
|
40
|
-
return this.toolbar.nativeElement
|
|
29
|
+
get _toolbar() {
|
|
30
|
+
return this.toolbar.nativeElement;
|
|
41
31
|
}
|
|
42
32
|
/** @hidden */
|
|
43
|
-
constructor(_cd, _contentDensityObserver, _destroy$,
|
|
33
|
+
constructor(_cd, _renderer, _contentDensityObserver, _destroy$, _dynamicPageHeader) {
|
|
44
34
|
this._cd = _cd;
|
|
35
|
+
this._renderer = _renderer;
|
|
45
36
|
this._contentDensityObserver = _contentDensityObserver;
|
|
46
37
|
this._destroy$ = _destroy$;
|
|
47
|
-
this.resizeObserverService = resizeObserverService;
|
|
48
|
-
this.ngZone = ngZone;
|
|
49
38
|
this._dynamicPageHeader = _dynamicPageHeader;
|
|
39
|
+
/** Determines if overflow button should be visible
|
|
40
|
+
* Default value: false
|
|
41
|
+
*/
|
|
42
|
+
this.shouldOverflow = false;
|
|
50
43
|
/** Determines the type of toolbar
|
|
51
44
|
* Available options: 'solid' | 'transparent' | 'auto' | 'info'
|
|
52
45
|
* Default value: 'solid'
|
|
@@ -67,74 +60,36 @@ export class ToolbarComponent {
|
|
|
67
60
|
/** Tabindex of the toolbar element, to be used when fdType="info" */
|
|
68
61
|
this.tabindex = -1;
|
|
69
62
|
/** @hidden */
|
|
70
|
-
this.
|
|
63
|
+
this.titleComponent = null;
|
|
71
64
|
/** @hidden */
|
|
72
|
-
this.
|
|
65
|
+
this.overflowVisibility = of(false);
|
|
73
66
|
/** @hidden */
|
|
74
|
-
this.
|
|
67
|
+
this._subscriptions = new Subscription();
|
|
75
68
|
/** @hidden */
|
|
76
|
-
this.
|
|
69
|
+
this._overflowElements = [];
|
|
77
70
|
/** @hidden */
|
|
78
|
-
this.
|
|
71
|
+
this._normalElements = [];
|
|
79
72
|
/** @hidden */
|
|
80
|
-
this.
|
|
73
|
+
this._disappearElements = [];
|
|
74
|
+
/** @hidden */
|
|
75
|
+
this._initialised = false;
|
|
81
76
|
_contentDensityObserver.subscribe();
|
|
82
77
|
}
|
|
83
78
|
/** @hidden */
|
|
79
|
+
ngOnInit() {
|
|
80
|
+
fromEvent(window, 'resize')
|
|
81
|
+
.pipe(filter(() => this.shouldOverflow), debounceTime(50), distinctUntilChanged(), takeUntil(this._destroy$))
|
|
82
|
+
.subscribe(() => this._onResize());
|
|
83
|
+
}
|
|
84
|
+
/** @hidden */
|
|
84
85
|
ngAfterViewInit() {
|
|
85
|
-
this.
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
return this.titleElement?.nativeElement;
|
|
91
|
-
}
|
|
92
|
-
return titleComponent.elementRef.nativeElement;
|
|
93
|
-
})),
|
|
94
|
-
this.shouldOverflow$,
|
|
95
|
-
this._refreshOverflow$
|
|
96
|
-
]).pipe(map(([toolbarWidth, toolbarItems, titleElement, shouldOverflow]) => {
|
|
97
|
-
if (shouldOverflow) {
|
|
98
|
-
const _sortedByPriorityAndGroupItems = this._getSortedByPriorityAndGroupItems(toolbarItems);
|
|
99
|
-
const overflowItems = [];
|
|
100
|
-
_sortedByPriorityAndGroupItems.reduce((_contentWidth, toolbarItem) => {
|
|
101
|
-
const itemWidth = toolbarItem.width;
|
|
102
|
-
const itemPriority = toolbarItem.priority;
|
|
103
|
-
const shouldItemBeRemovedByWidth = itemWidth + _contentWidth > toolbarWidth;
|
|
104
|
-
const shouldAlwaysBeInOverflow = itemPriority === "always" /* OverflowPriorityEnum.ALWAYS */ || this.forceOverflow;
|
|
105
|
-
const shouldNeverBeInOverflow = itemPriority === "never" /* OverflowPriorityEnum.NEVER */;
|
|
106
|
-
if ((shouldItemBeRemovedByWidth && !shouldNeverBeInOverflow) || shouldAlwaysBeInOverflow) {
|
|
107
|
-
overflowItems.push(toolbarItem);
|
|
108
|
-
return shouldAlwaysBeInOverflow ? _contentWidth : MAX_CONTENT_SIZE;
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
return _contentWidth + itemWidth;
|
|
112
|
-
}
|
|
113
|
-
}, titleElement?.clientWidth || 0);
|
|
114
|
-
// Hide orphans
|
|
115
|
-
for (const toolbarItem of overflowItems) {
|
|
116
|
-
const groupedCollection = this._getGroupedCollection(toolbarItems);
|
|
117
|
-
const groupedCollectionPriorities = this._getGroupedCollectionPriority(groupedCollection);
|
|
118
|
-
const group = toolbarItem.group;
|
|
119
|
-
const itemPriority = toolbarItem.priority;
|
|
120
|
-
if (group !== 0 && itemPriority !== "disappear" /* OverflowPriorityEnum.DISAPPEAR */) {
|
|
121
|
-
const itemsFromCurrentGroup = this._getElementsFromCurrentGroup(group, groupedCollection, groupedCollectionPriorities) || [];
|
|
122
|
-
itemsFromCurrentGroup.forEach((i) => {
|
|
123
|
-
if (overflowItems.indexOf(i) === -1) {
|
|
124
|
-
overflowItems.push(i);
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
return overflowItems.sort((a, b) => this._sortPriorities(a.priority, b.priority));
|
|
130
|
-
}
|
|
131
|
-
return [];
|
|
132
|
-
}), takeUntil(this._destroy$));
|
|
133
|
-
this.overflowItems$.subscribe((items) => {
|
|
134
|
-
this.overflownItems = items;
|
|
135
|
-
this._cd.detectChanges();
|
|
136
|
-
});
|
|
86
|
+
if (this.shouldOverflow) {
|
|
87
|
+
of(true)
|
|
88
|
+
.pipe(delay(5), takeUntil(this._destroy$))
|
|
89
|
+
.subscribe(() => this._collapseItems());
|
|
90
|
+
}
|
|
137
91
|
this._initialised = true;
|
|
92
|
+
this._listenForItemChanges();
|
|
138
93
|
this.buildComponentCssClass();
|
|
139
94
|
}
|
|
140
95
|
/** @hidden */
|
|
@@ -148,6 +103,10 @@ export class ToolbarComponent {
|
|
|
148
103
|
this.buildComponentCssClass();
|
|
149
104
|
}
|
|
150
105
|
}
|
|
106
|
+
/** @hidden */
|
|
107
|
+
ngOnDestroy() {
|
|
108
|
+
this._subscriptions.unsubscribe();
|
|
109
|
+
}
|
|
151
110
|
/** Change detection reference */
|
|
152
111
|
detectChanges() {
|
|
153
112
|
this._cd.detectChanges();
|
|
@@ -169,81 +128,117 @@ export class ToolbarComponent {
|
|
|
169
128
|
}
|
|
170
129
|
/** Method triggering collapsible toolbar */
|
|
171
130
|
updateCollapsibleItems() {
|
|
172
|
-
this.
|
|
131
|
+
if (this._initialised) {
|
|
132
|
+
this._onResize();
|
|
133
|
+
}
|
|
173
134
|
}
|
|
174
|
-
/** @hidden
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
if (!priority || !OVERFLOW_PRIORITY_SCORE.get(priority[itemGroup])) {
|
|
180
|
-
return itemGroup;
|
|
135
|
+
/** @hidden */
|
|
136
|
+
_onResize() {
|
|
137
|
+
this._reset();
|
|
138
|
+
if (this.shouldOverflow) {
|
|
139
|
+
this._collapseItems();
|
|
181
140
|
}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
141
|
+
this._cd.detectChanges();
|
|
142
|
+
}
|
|
143
|
+
// shouldOverflow items
|
|
144
|
+
/** @hidden */
|
|
145
|
+
_collapseItems() {
|
|
146
|
+
this._groupedCollection = this._getGroupedCollection();
|
|
147
|
+
this._groupedCollectionPriority = this._getGroupedCollectionPriority();
|
|
148
|
+
const _sortedByPriorityAndGroupItems = this._getSortedByPriorityAndGroupItems();
|
|
149
|
+
_sortedByPriorityAndGroupItems.reduce((_contentWidth, toolbarItem) => {
|
|
150
|
+
const itemWidth = this._getElementWidthWithMargin(toolbarItem);
|
|
151
|
+
const itemGroup = this._getElementGroup(toolbarItem);
|
|
152
|
+
const itemPriority = this._getElementPriority(toolbarItem);
|
|
153
|
+
const shouldItemBeRemovedByWidth = this._shouldToolbarItemBeRemovedByWidth(itemWidth, _contentWidth);
|
|
154
|
+
const shouldAlwaysBeInOverflow = itemPriority === "always" /* OverflowPriorityEnum.ALWAYS */ || this.forceOverflow;
|
|
155
|
+
const shouldNeverBeInOverflow = itemPriority === "never" /* OverflowPriorityEnum.NEVER */;
|
|
156
|
+
if ((shouldItemBeRemovedByWidth && !shouldNeverBeInOverflow) || shouldAlwaysBeInOverflow) {
|
|
157
|
+
if (itemGroup) {
|
|
158
|
+
this._hideElementsFromCurrentGroup(itemGroup);
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
this._hideElementWithoutGroup(toolbarItem, itemPriority);
|
|
162
|
+
}
|
|
163
|
+
return shouldAlwaysBeInOverflow ? _contentWidth : MAX_CONTENT_SIZE;
|
|
188
164
|
}
|
|
189
|
-
|
|
190
|
-
|
|
165
|
+
else {
|
|
166
|
+
this._normalElements.push(toolbarItem);
|
|
167
|
+
return _contentWidth + itemWidth;
|
|
168
|
+
}
|
|
169
|
+
}, 0);
|
|
170
|
+
this._collapseLastSpacerElement(this._overflowElements, this._normalElements);
|
|
171
|
+
this._addToolbarItemToOverflow(this._overflowElements);
|
|
172
|
+
this._disappearElements.forEach(this._removeToolbarItemFromDOM.bind(this));
|
|
173
|
+
this._normalElements = [...this._getOrderedItemsFollowingQuery(this._normalElements)];
|
|
174
|
+
this._overflowElements = [...this._getOrderedItemsFollowingQuery(this._overflowElements)];
|
|
175
|
+
this.toolbarItems.forEach((item) => this._changeItemVisibilityState(item.elementRef.nativeElement, true));
|
|
176
|
+
this._changeOverflowVisibleState(this._overflowElements.length > 0);
|
|
177
|
+
this._cd.markForCheck();
|
|
178
|
+
}
|
|
179
|
+
/** @hidden */
|
|
180
|
+
_shouldToolbarItemBeRemovedByWidth(itemWidth, contentWidth) {
|
|
181
|
+
return contentWidth + itemWidth > this._toolbarWidth;
|
|
182
|
+
}
|
|
183
|
+
/** @hidden */
|
|
184
|
+
_getElementWidthWithMargin(toolbarItem) {
|
|
185
|
+
return (toolbarItem.elementRef.nativeElement && toolbarItem.elementRef.nativeElement.offsetWidth + ELEMENT_MARGIN);
|
|
186
|
+
}
|
|
187
|
+
/** @hidden */
|
|
188
|
+
_listenForItemChanges() {
|
|
189
|
+
this.toolbarItems.changes.pipe(filter(() => this.shouldOverflow)).subscribe(() => this._onResize());
|
|
191
190
|
}
|
|
192
191
|
/** @hidden */
|
|
193
|
-
|
|
194
|
-
const
|
|
195
|
-
|
|
196
|
-
|
|
192
|
+
_getElementPriority(toolbarItem) {
|
|
193
|
+
const priority = toolbarItem.elementRef.nativeElement && toolbarItem.elementRef.nativeElement.attributes.fdOverflowPriority;
|
|
194
|
+
return (priority && priority.value) || "high" /* OverflowPriorityEnum.HIGH */;
|
|
195
|
+
}
|
|
196
|
+
/** @hidden */
|
|
197
|
+
_getElementGroup(toolbarItem) {
|
|
198
|
+
const itemGroup = toolbarItem.elementRef.nativeElement && toolbarItem.elementRef.nativeElement.attributes.fdOverflowGroup;
|
|
199
|
+
return (itemGroup && itemGroup.value) || 0;
|
|
200
|
+
}
|
|
201
|
+
/** @hidden */
|
|
202
|
+
_hideElementsFromCurrentGroup(itemGroup) {
|
|
203
|
+
const lowestPriorityFromGroup = this._getLowestPriorityFromGroup(itemGroup);
|
|
204
|
+
if (!this._groupedCollection || !this._groupedCollectionPriority) {
|
|
205
|
+
return;
|
|
197
206
|
}
|
|
198
|
-
let itemsToRemove =
|
|
199
|
-
delete
|
|
200
|
-
delete
|
|
207
|
+
let itemsToRemove = this._groupedCollection[lowestPriorityFromGroup];
|
|
208
|
+
delete this._groupedCollection[lowestPriorityFromGroup];
|
|
209
|
+
delete this._groupedCollectionPriority[lowestPriorityFromGroup];
|
|
201
210
|
if (lowestPriorityFromGroup !== itemGroup) {
|
|
202
|
-
itemsToRemove = [...itemsToRemove, ...
|
|
203
|
-
delete
|
|
204
|
-
delete
|
|
211
|
+
itemsToRemove = [...itemsToRemove, ...this._groupedCollection[itemGroup]];
|
|
212
|
+
delete this._groupedCollection[itemGroup];
|
|
213
|
+
delete this._groupedCollectionPriority[itemGroup];
|
|
205
214
|
}
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
const itemPrio = item.priority;
|
|
212
|
-
const itemGroup = item.group;
|
|
213
|
-
if (itemPrio === "never" /* OverflowPriorityEnum.NEVER */ ||
|
|
214
|
-
itemPrio === "always" /* OverflowPriorityEnum.ALWAYS */ ||
|
|
215
|
-
itemGroup === 0) {
|
|
216
|
-
return acc;
|
|
215
|
+
itemsToRemove?.forEach((item) => {
|
|
216
|
+
this._removeItemFromArray(this._normalElements, item);
|
|
217
|
+
const isDisappear = this._getElementPriority(item) === "disappear" /* OverflowPriorityEnum.DISAPPEAR */;
|
|
218
|
+
if (isDisappear) {
|
|
219
|
+
this._disappearElements.push(item);
|
|
217
220
|
}
|
|
218
|
-
if (!
|
|
219
|
-
|
|
221
|
+
if (this._overflowElements.indexOf(item) === -1 && !isDisappear) {
|
|
222
|
+
this._overflowElements.push(item);
|
|
220
223
|
}
|
|
221
|
-
|
|
222
|
-
return acc;
|
|
223
|
-
}, {});
|
|
224
|
-
}
|
|
225
|
-
/** @hidden Get the object with the highest priority for each group of elements. */
|
|
226
|
-
_getGroupedCollectionPriority(groupedCollection) {
|
|
227
|
-
const groups = Object.keys(groupedCollection);
|
|
228
|
-
return groups.reduce((acc, itemGroup) => {
|
|
229
|
-
const sortedPriorities = groupedCollection[itemGroup]
|
|
230
|
-
.map((i) => i.priority)
|
|
231
|
-
.filter((prio) => prio !== "always" /* OverflowPriorityEnum.ALWAYS */ && prio !== "never" /* OverflowPriorityEnum.NEVER */)
|
|
232
|
-
.sort(this._sortPriorities);
|
|
233
|
-
acc[itemGroup] = sortedPriorities[0];
|
|
234
|
-
return acc;
|
|
235
|
-
}, {});
|
|
224
|
+
});
|
|
236
225
|
}
|
|
237
|
-
/** @hidden
|
|
238
|
-
|
|
239
|
-
|
|
226
|
+
/** @hidden */
|
|
227
|
+
_hideElementWithoutGroup(toolbarItem, itemPriority) {
|
|
228
|
+
const isDisappear = itemPriority === "disappear" /* OverflowPriorityEnum.DISAPPEAR */;
|
|
229
|
+
if (isDisappear) {
|
|
230
|
+
this._disappearElements.push(toolbarItem);
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
this._overflowElements.push(toolbarItem);
|
|
234
|
+
}
|
|
240
235
|
}
|
|
241
236
|
/** @hidden Sort by group and priority and initial position */
|
|
242
|
-
_getSortedByPriorityAndGroupItems(
|
|
243
|
-
const notSorted = toolbarItems.map((element, index) => ({ element, index }));
|
|
237
|
+
_getSortedByPriorityAndGroupItems() {
|
|
238
|
+
const notSorted = this.toolbarItems.toArray().map((element, index) => ({ element, index }));
|
|
244
239
|
const groups = notSorted.reduce((gr, item) => {
|
|
245
|
-
let groupId = item.element
|
|
246
|
-
const itemPrio = item.element
|
|
240
|
+
let groupId = this._getElementGroup(item.element);
|
|
241
|
+
const itemPrio = this._getElementPriority(item.element);
|
|
247
242
|
if (itemPrio === "never" /* OverflowPriorityEnum.NEVER */ || itemPrio === "always" /* OverflowPriorityEnum.ALWAYS */) {
|
|
248
243
|
groupId = 0;
|
|
249
244
|
}
|
|
@@ -262,7 +257,7 @@ export class ToolbarComponent {
|
|
|
262
257
|
let maxPriority = 0;
|
|
263
258
|
for (const item of groups[g]) {
|
|
264
259
|
minIndex = Math.min(minIndex, item.index);
|
|
265
|
-
maxPriority = Math.max(maxPriority, OVERFLOW_PRIORITY_SCORE.get(item.element
|
|
260
|
+
maxPriority = Math.max(maxPriority, OVERFLOW_PRIORITY_SCORE.get(this._getElementPriority(item.element)) ?? -Infinity);
|
|
266
261
|
}
|
|
267
262
|
return { group: groups[g].map(({ element }) => element), minIndex, maxPriority };
|
|
268
263
|
})
|
|
@@ -270,44 +265,164 @@ export class ToolbarComponent {
|
|
|
270
265
|
? []
|
|
271
266
|
: groups[0].map((item) => ({
|
|
272
267
|
group: [item.element],
|
|
273
|
-
maxPriority: OVERFLOW_PRIORITY_SCORE.get(item.element
|
|
268
|
+
maxPriority: OVERFLOW_PRIORITY_SCORE.get(this._getElementPriority(item.element)),
|
|
274
269
|
minIndex: item.index
|
|
275
270
|
})))
|
|
276
271
|
.sort((a, b) => b.maxPriority - a.maxPriority || a.minIndex - b.minIndex)
|
|
277
272
|
.reduce((arr, i) => arr.concat(i.group), []);
|
|
278
273
|
}
|
|
274
|
+
/** @hidden Get the object with grouped arrays of elements. */
|
|
275
|
+
_getGroupedCollection() {
|
|
276
|
+
const collection = (this.toolbarItems &&
|
|
277
|
+
this.toolbarItems.reduce((acc, item) => {
|
|
278
|
+
const itemPrio = this._getElementPriority(item);
|
|
279
|
+
if (itemPrio === "never" /* OverflowPriorityEnum.NEVER */ || itemPrio === "always" /* OverflowPriorityEnum.ALWAYS */) {
|
|
280
|
+
return acc;
|
|
281
|
+
}
|
|
282
|
+
const itemGroup = this._getElementGroup(item);
|
|
283
|
+
acc[itemGroup] && acc[itemGroup].length ? acc[itemGroup].push(item) : (acc[itemGroup] = [item]);
|
|
284
|
+
return acc;
|
|
285
|
+
}, {})) ||
|
|
286
|
+
{};
|
|
287
|
+
delete collection[0];
|
|
288
|
+
return collection;
|
|
289
|
+
}
|
|
290
|
+
/** @hidden Get the object with the highest priority for each group of elements. */
|
|
291
|
+
_getGroupedCollectionPriority() {
|
|
292
|
+
if (!this._groupedCollection) {
|
|
293
|
+
return {};
|
|
294
|
+
}
|
|
295
|
+
const groups = Object.keys(this._groupedCollection);
|
|
296
|
+
return groups.reduce((acc, itemGroup) => {
|
|
297
|
+
const sortedPriorities = this._groupedCollection[itemGroup].map(this._getElementPriority)
|
|
298
|
+
.filter((prio) => prio !== "always" /* OverflowPriorityEnum.ALWAYS */ && prio !== "never" /* OverflowPriorityEnum.NEVER */)
|
|
299
|
+
.sort(this._sortPriorities.bind(this));
|
|
300
|
+
acc[itemGroup] = sortedPriorities[0];
|
|
301
|
+
return acc;
|
|
302
|
+
}, {});
|
|
303
|
+
}
|
|
304
|
+
/** @hidden Get group number with the lowest priority.
|
|
305
|
+
* Uses for detecting a group of elements which would be hidden from the toolbar.
|
|
306
|
+
* */
|
|
307
|
+
_getLowestPriorityFromGroup(itemGroup) {
|
|
308
|
+
const priority = this._groupedCollectionPriority;
|
|
309
|
+
if (!priority || !OVERFLOW_PRIORITY_SCORE.get(priority[itemGroup])) {
|
|
310
|
+
return itemGroup;
|
|
311
|
+
}
|
|
312
|
+
const groups = Object.keys(priority);
|
|
313
|
+
return groups.reduce((lowestGroup, currentGroup) => {
|
|
314
|
+
const lowestGroupPriority = priority[lowestGroup];
|
|
315
|
+
const currentGroupPriority = priority[currentGroup];
|
|
316
|
+
if (OVERFLOW_PRIORITY_SCORE.get(currentGroupPriority) < OVERFLOW_PRIORITY_SCORE.get(lowestGroupPriority)) {
|
|
317
|
+
return +currentGroup;
|
|
318
|
+
}
|
|
319
|
+
return lowestGroup;
|
|
320
|
+
}, itemGroup);
|
|
321
|
+
}
|
|
322
|
+
/** @hidden */
|
|
323
|
+
_removeItemFromArray(toolbarItems, toolbarItem) {
|
|
324
|
+
const itemIndex = toolbarItems.indexOf(toolbarItem);
|
|
325
|
+
return itemIndex >= 0 ? toolbarItems.splice(itemIndex, 1)[0] : null;
|
|
326
|
+
}
|
|
327
|
+
/** @hidden */
|
|
328
|
+
_removeToolbarItemFromDOM(toolbarItem) {
|
|
329
|
+
if (toolbarItem.elementRef.nativeElement && toolbarItem.elementRef.nativeElement.parentNode) {
|
|
330
|
+
// IE11 workaround element.remove() is not supported
|
|
331
|
+
this._renderer.removeChild(this.elementRef().nativeElement, toolbarItem.elementRef.nativeElement);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
/** @hidden */
|
|
335
|
+
_addToolbarItemToOverflow(toolbarItems) {
|
|
336
|
+
toolbarItems.forEach((x) => {
|
|
337
|
+
if (this._overflowBody) {
|
|
338
|
+
this._overflowBody.appendChild(x.elementRef.nativeElement);
|
|
339
|
+
}
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
/** @hidden */
|
|
343
|
+
_reset() {
|
|
344
|
+
this._normalElements.forEach(this._removeToolbarItemFromDOM.bind(this));
|
|
345
|
+
this._overflowElements.forEach(this._removeToolbarItemFromDOM.bind(this));
|
|
346
|
+
if (this.overflowSpacer) {
|
|
347
|
+
this.toolbarItems.map((x) => {
|
|
348
|
+
this._renderer.insertBefore(this._toolbar, x.elementRef.nativeElement, this.overflowSpacer.nativeElement);
|
|
349
|
+
});
|
|
350
|
+
}
|
|
351
|
+
this._overflowElements = [];
|
|
352
|
+
this._normalElements = [];
|
|
353
|
+
this._disappearElements = [];
|
|
354
|
+
this._groupedCollection = null;
|
|
355
|
+
this._groupedCollectionPriority = null;
|
|
356
|
+
this._changeOverflowVisibleState(false);
|
|
357
|
+
}
|
|
358
|
+
/** @hidden */
|
|
359
|
+
_changeOverflowVisibleState(visible) {
|
|
360
|
+
this.overflowVisibility = of(visible).pipe(debounceTime(1));
|
|
361
|
+
}
|
|
362
|
+
/** @hidden */
|
|
363
|
+
_changeItemVisibilityState(element, visible) {
|
|
364
|
+
const fadeIn = 'fd-toolbar-fade-in';
|
|
365
|
+
const fadeOut = 'fd-toolbar-fade-out';
|
|
366
|
+
if (visible) {
|
|
367
|
+
element.classList.add(fadeIn);
|
|
368
|
+
element.classList.remove(fadeOut);
|
|
369
|
+
return;
|
|
370
|
+
}
|
|
371
|
+
element.classList.add(fadeOut);
|
|
372
|
+
element.classList.remove(fadeIn);
|
|
373
|
+
}
|
|
374
|
+
/** @hidden Sort priorities of elements/groups. */
|
|
375
|
+
_sortPriorities(a, b) {
|
|
376
|
+
return OVERFLOW_PRIORITY_SCORE.get(b) - OVERFLOW_PRIORITY_SCORE.get(a);
|
|
377
|
+
}
|
|
378
|
+
/** @hidden */
|
|
379
|
+
_collapseLastSpacerElement(overflowElements, normalElements) {
|
|
380
|
+
if (!normalElements || normalElements.length < 1) {
|
|
381
|
+
return;
|
|
382
|
+
}
|
|
383
|
+
const isSpacer = (element) => element.elementRef.nativeElement.classList.contains('fd-toolbar__spacer');
|
|
384
|
+
let lastItem = normalElements[normalElements.length - 1];
|
|
385
|
+
while (isSpacer(lastItem) && normalElements.length > 0) {
|
|
386
|
+
overflowElements.push(normalElements.pop());
|
|
387
|
+
lastItem = normalElements[normalElements.length - 1];
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
/** @hidden */
|
|
391
|
+
_getOrderedItemsFollowingQuery(toolbarItems) {
|
|
392
|
+
const queryArray = this.toolbarItems.toArray();
|
|
393
|
+
const sortMethod = (a, b) => queryArray.findIndex((_item) => _item === a) > queryArray.findIndex((_item) => _item === b) ? 1 : -1;
|
|
394
|
+
return toolbarItems.sort(sortMethod);
|
|
395
|
+
}
|
|
279
396
|
}
|
|
280
|
-
ToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.
|
|
281
|
-
ToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.
|
|
397
|
+
ToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: ToolbarComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i1.ContentDensityObserver }, { token: i2.DestroyedService }, { token: DYNAMIC_PAGE_HEADER_TOKEN, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
398
|
+
ToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: ToolbarComponent, selector: "fd-toolbar", inputs: { class: "class", shouldOverflow: "shouldOverflow", fdType: "fdType", hasTitle: "hasTitle", title: "title", active: "active", clearBorder: "clearBorder", forceOverflow: "forceOverflow", tabindex: "tabindex" }, providers: [
|
|
282
399
|
contentDensityObserverProviders({
|
|
283
400
|
defaultContentDensity: ContentDensityMode.COMPACT
|
|
284
401
|
}),
|
|
285
402
|
DestroyedService
|
|
286
|
-
], queries: [{ propertyName: "titleComponent", first: true, predicate: TitleToken, descendants: true }, { propertyName: "toolbarItems", predicate: i0.forwardRef(function () { return ToolbarItem; }) }], viewQueries: [{ propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true }, { propertyName: "titleElement", first: true, predicate: ["titleElement"], descendants: true }], ngImport: i0, template: "<div #toolbar [tabindex]=\"tabindex\" [class.fd-toolbar--cozy]=\"_contentDensityObserver.isCozy$ | async\">\n <h4 *ngIf=\"title\" class=\"fd-title fd-title--h4 fd-toolbar__title\" [id]=\"titleId\" #titleElement>{{ title }}</h4>\n\n <ng-content></ng-content>\n\n <ng-container *ngIf=\"overflownItems.length > 0\">\n <fd-toolbar-spacer></fd-toolbar-spacer>\n <fd-toolbar-separator></fd-toolbar-separator>\n <fd-popover placement=\"bottom-end\" [noArrow]=\"true\" class=\"fd-popover\">\n <fd-popover-control>\n <button\n fd-button\n title=\"More\"\n aria-label=\"More\"\n aria-haspopup=\"true\"\n fdType=\"transparent\"\n glyph=\"overflow\"\n ></button>\n </fd-popover-control>\n\n <fd-popover-body>\n <div class=\"fd-toolbar__overflow\">\n <ng-container *ngFor=\"let overflowedItem of overflownItems\">\n <fdk-dynamic-portal\n [domElement]=\"overflowedItem.element\"\n [style.display]=\"overflowedItem.priority === 'disappear' ? 'none' : 'flex'\"\n [style.flex-direction]=\"overflowedItem.priority === 'disappear' ? undefined : 'column'\"\n >\n </fdk-dynamic-portal>\n </ng-container>\n </div>\n </fd-popover-body>\n </fd-popover>\n </ng-container>\n</div>\n", styles: ["/*!\n * Fundamental Library Styles v0.28.3\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-toolbar>*~:not(.fd-toolbar__spacer){margin-left:.5rem}.fd-toolbar>*~[dir=rtl]:not(.fd-toolbar__spacer),[dir=rtl] .fd-toolbar>*~:not(.fd-toolbar__spacer){margin-left:0;margin-right:.5rem}.fd-toolbar{-webkit-box-sizing:border-box;align-items:center;border:0;border-bottom:.0625rem solid var(--sapGroup_TitleBorderColor);box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:2rem;line-height:var(--sapContent_LineHeight);margin:0;padding:0 .5rem}.fd-toolbar:after,.fd-toolbar:before{box-sizing:inherit;font-size:inherit}.fd-toolbar>.fd-toolbar__spacer+:not(.fd-toolbar__spacer){margin-left:0;margin-right:0}.fd-toolbar--title{background-color:var(--sapGroup_TitleBackground)!important;height:2.75rem;padding:0 .5rem 0 1rem}.fd-toolbar--clear{border-bottom:none}.fd-toolbar--auto{background-color:var(--fdToolbar_Auto_Background)}.fd-toolbar--solid{background-color:var(--fdToolbar_Solid_Background)}.fd-toolbar--transparent{background-color:var(--sapToolbar_Background)}.fd-toolbar--fade-in{-webkit-transition:visibility 0s linear 0s,opacity 1s;opacity:1;transition:visibility 0s linear 0s,opacity 1s;visibility:visible}.fd-toolbar--fade-out{-webkit-transition:visibility 0s linear 1s,opacity 1ms;opacity:0;transition:visibility 0s linear 1s,opacity 1ms;visibility:hidden}.fd-toolbar--info{background-color:var(--sapInfobar_NonInteractive_Background);color:var(--sapList_TextColor);outline:none;padding-left:.5rem;padding-right:1rem;position:relative}.fd-toolbar--info.fd-toolbar--active{background-color:var(--sapInfobar_Background);color:var(--sapInfobar_TextColor)}.fd-toolbar--info.fd-toolbar--active.is-hover,.fd-toolbar--info.fd-toolbar--active:hover{background-color:var(--sapInfobar_Hover_Background)}.fd-toolbar--info.fd-toolbar--active.is-active,.fd-toolbar--info.fd-toolbar--active:active{background-color:var(--sapInfobar_Active_Background)}.fd-toolbar--info[dir=rtl],[dir=rtl] .fd-toolbar--info{padding-left:1rem;padding-right:.5rem}.fd-toolbar--info.is-focus:after,.fd-toolbar--info:focus:after{border-color:var(--sapContent_FocusColor);border-style:var(--sapContent_FocusStyle);border-width:var(--sapContent_FocusWidth);content:\"\";inset:.0625rem;pointer-events:none;position:absolute}.fd-toolbar--info.is-focus,.fd-toolbar--info:focus{z-index:5}.fd-toolbar--info.is-focus:after,.fd-toolbar--info:focus:after{border-color:var(--fdToolbar_Info_Outline_Color)}.fd-toolbar--info [class*=sap-icon]{color:var(--sapInfobar_TextColor);font-size:1rem;height:1rem;line-height:1rem}.fd-toolbar__spacer{-webkit-box-sizing:border-box;-webkit-box-flex:1;-ms-flex:1 auto;border:0;box-sizing:border-box;color:var(--sapTextColor);flex:1 auto;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-toolbar__spacer:after,.fd-toolbar__spacer:before{box-sizing:inherit;font-size:inherit}.fd-toolbar__spacer--fixed{-webkit-box-flex:0;-ms-flex:none;display:inline-block;flex:none}.fd-toolbar__separator{-webkit-box-sizing:border-box;background-color:var(--sapToolbar_SeparatorColor);border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:1.5rem;line-height:var(--sapContent_LineHeight);margin:0;padding:0;width:.0625rem}.fd-toolbar__separator:after,.fd-toolbar__separator:before{box-sizing:inherit;font-size:inherit}.fd-toolbar__overflow{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:column;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;max-height:50vh;max-width:20rem;overflow:auto;padding:.1875rem .375rem}.fd-toolbar__overflow:after,.fd-toolbar__overflow:before{box-sizing:inherit;font-size:inherit}.fd-toolbar__overflow .fd-toolbar__overflow-button{justify-content:flex-start;margin:.1875rem 0;text-align:left;width:auto}.fd-toolbar__overflow .fd-toolbar__overflow-button[dir=rtl],[dir=rtl] .fd-toolbar__overflow .fd-toolbar__overflow-button{text-align:right}.fd-toolbar__overflow .fd-toolbar__overflow-button--menu{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;-webkit-box-pack:justify;-ms-flex-pack:justify;align-items:center;display:flex;justify-content:center;justify-content:space-between;max-width:100%}.fd-toolbar__overflow .fd-toolbar__separator{-webkit-box-sizing:border-box;background-color:var(--sapToolbar_SeparatorColor);border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:.0625rem;line-height:var(--sapContent_LineHeight);margin:.1875rem;padding:0;width:auto}.fd-toolbar__overflow .fd-toolbar__separator:after,.fd-toolbar__overflow .fd-toolbar__separator:before{box-sizing:inherit;font-size:inherit}.fd-toolbar__overflow .fd-toolbar__overflow-form-label,.fd-toolbar__overflow .fd-toolbar__overflow-label{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;overflow:hidden;padding:0;text-overflow:ellipsis;white-space:nowrap}.fd-toolbar__overflow .fd-toolbar__overflow-form-label:after,.fd-toolbar__overflow .fd-toolbar__overflow-form-label:before,.fd-toolbar__overflow .fd-toolbar__overflow-label:after,.fd-toolbar__overflow .fd-toolbar__overflow-label:before{box-sizing:inherit;font-size:inherit}.fd-toolbar__overflow .fd-toolbar__overflow-form-label--text,.fd-toolbar__overflow .fd-toolbar__overflow-label--text{margin-top:.4375rem}.fd-toolbar__title{color:var(--sapGroup_TitleTextColor);font-size:var(--sapGroup_Title_FontSize)}.fd-toolbar--cozy{height:2.75rem;min-height:2.75rem}.fd-toolbar--cozy.fd-toolbar--info{height:2rem;min-height:2rem}.fd-toolbar--cozy .fd-toolbar__overflow{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:.25rem .5rem}.fd-toolbar--cozy .fd-toolbar__overflow:after,.fd-toolbar--cozy .fd-toolbar__overflow:before{box-sizing:inherit;font-size:inherit}.fd-toolbar>*{flex-shrink:0}fdk-dynamic-portal:not(:last-of-type) [fd-toolbar-item]{margin-bottom:.25rem}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5.PopoverControlComponent, selector: "fd-popover-control" }, { kind: "component", type: i5.PopoverBodyComponent, selector: "fd-popover-body" }, { kind: "component", type: i5.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: i2.DynamicPortalComponent, selector: "fdk-dynamic-portal", inputs: ["domElement", "component", "template"] }, { kind: "directive", type: i6.ToolbarSpacerDirective, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "component", type: i7.ToolbarSeparatorComponent, selector: "fd-toolbar-separator" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
403
|
+
], queries: [{ propertyName: "titleComponent", first: true, predicate: TitleToken, descendants: true }, { propertyName: "toolbarItems", predicate: i0.forwardRef(function () { return ToolbarItemDirective; }) }], viewQueries: [{ propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true }, { propertyName: "overflowBody", first: true, predicate: ["overflowBody"], descendants: true }, { propertyName: "overflowSpacer", first: true, predicate: ["overflowSpacer"], descendants: true }], ngImport: i0, template: "<div #toolbar [tabindex]=\"tabindex\" [class.fd-toolbar--cozy]=\"_contentDensityObserver.isCozy$ | async\">\n <h4 *ngIf=\"title\" class=\"fd-title fd-title--h4 fd-toolbar__title\">{{ title }}</h4>\n\n <ng-content></ng-content>\n\n <ng-container *ngIf=\"shouldOverflow\">\n <span #overflowSpacer class=\"fd-toolbar__spacer\"></span>\n\n <span class=\"fd-toolbar__separator\" *ngIf=\"overflowVisibility | async\"></span>\n\n <fd-popover placement=\"bottom-end\" [noArrow]=\"true\" class=\"fd-popover\">\n <fd-popover-control>\n <button\n *ngIf=\"overflowVisibility | async\"\n fd-button\n title=\"More\"\n aria-label=\"More\"\n aria-haspopup=\"true\"\n fdType=\"transparent\"\n glyph=\"overflow\"\n ></button>\n </fd-popover-control>\n\n <fd-popover-body>\n <div class=\"fd-toolbar__overflow\" #overflowBody></div>\n </fd-popover-body>\n </fd-popover>\n </ng-container>\n</div>\n", styles: ["/*!\n * Fundamental Library Styles v0.28.3\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-toolbar>*~:not(.fd-toolbar__spacer){margin-left:.5rem}.fd-toolbar>*~[dir=rtl]:not(.fd-toolbar__spacer),[dir=rtl] .fd-toolbar>*~:not(.fd-toolbar__spacer){margin-left:0;margin-right:.5rem}.fd-toolbar{-webkit-box-sizing:border-box;align-items:center;border:0;border-bottom:.0625rem solid var(--sapGroup_TitleBorderColor);box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:2rem;line-height:var(--sapContent_LineHeight);margin:0;padding:0 .5rem}.fd-toolbar:after,.fd-toolbar:before{box-sizing:inherit;font-size:inherit}.fd-toolbar>.fd-toolbar__spacer+:not(.fd-toolbar__spacer){margin-left:0;margin-right:0}.fd-toolbar--title{background-color:var(--sapGroup_TitleBackground)!important;height:2.75rem;padding:0 .5rem 0 1rem}.fd-toolbar--clear{border-bottom:none}.fd-toolbar--auto{background-color:var(--fdToolbar_Auto_Background)}.fd-toolbar--solid{background-color:var(--fdToolbar_Solid_Background)}.fd-toolbar--transparent{background-color:var(--sapToolbar_Background)}.fd-toolbar--fade-in{-webkit-transition:visibility 0s linear 0s,opacity 1s;opacity:1;transition:visibility 0s linear 0s,opacity 1s;visibility:visible}.fd-toolbar--fade-out{-webkit-transition:visibility 0s linear 1s,opacity 1ms;opacity:0;transition:visibility 0s linear 1s,opacity 1ms;visibility:hidden}.fd-toolbar--info{background-color:var(--sapInfobar_NonInteractive_Background);color:var(--sapList_TextColor);outline:none;padding-left:.5rem;padding-right:1rem;position:relative}.fd-toolbar--info.fd-toolbar--active{background-color:var(--sapInfobar_Background);color:var(--sapInfobar_TextColor)}.fd-toolbar--info.fd-toolbar--active.is-hover,.fd-toolbar--info.fd-toolbar--active:hover{background-color:var(--sapInfobar_Hover_Background)}.fd-toolbar--info.fd-toolbar--active.is-active,.fd-toolbar--info.fd-toolbar--active:active{background-color:var(--sapInfobar_Active_Background)}.fd-toolbar--info[dir=rtl],[dir=rtl] .fd-toolbar--info{padding-left:1rem;padding-right:.5rem}.fd-toolbar--info.is-focus:after,.fd-toolbar--info:focus:after{border-color:var(--sapContent_FocusColor);border-style:var(--sapContent_FocusStyle);border-width:var(--sapContent_FocusWidth);content:\"\";inset:.0625rem;pointer-events:none;position:absolute}.fd-toolbar--info.is-focus,.fd-toolbar--info:focus{z-index:5}.fd-toolbar--info.is-focus:after,.fd-toolbar--info:focus:after{border-color:var(--fdToolbar_Info_Outline_Color)}.fd-toolbar--info [class*=sap-icon]{color:var(--sapInfobar_TextColor);font-size:1rem;height:1rem;line-height:1rem}.fd-toolbar__spacer{-webkit-box-sizing:border-box;-webkit-box-flex:1;-ms-flex:1 auto;border:0;box-sizing:border-box;color:var(--sapTextColor);flex:1 auto;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-toolbar__spacer:after,.fd-toolbar__spacer:before{box-sizing:inherit;font-size:inherit}.fd-toolbar__spacer--fixed{-webkit-box-flex:0;-ms-flex:none;display:inline-block;flex:none}.fd-toolbar__separator{-webkit-box-sizing:border-box;background-color:var(--sapToolbar_SeparatorColor);border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:1.5rem;line-height:var(--sapContent_LineHeight);margin:0;padding:0;width:.0625rem}.fd-toolbar__separator:after,.fd-toolbar__separator:before{box-sizing:inherit;font-size:inherit}.fd-toolbar__overflow{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:column;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;max-height:50vh;max-width:20rem;overflow:auto;padding:.1875rem .375rem}.fd-toolbar__overflow:after,.fd-toolbar__overflow:before{box-sizing:inherit;font-size:inherit}.fd-toolbar__overflow .fd-toolbar__overflow-button{justify-content:flex-start;margin:.1875rem 0;text-align:left;width:auto}.fd-toolbar__overflow .fd-toolbar__overflow-button[dir=rtl],[dir=rtl] .fd-toolbar__overflow .fd-toolbar__overflow-button{text-align:right}.fd-toolbar__overflow .fd-toolbar__overflow-button--menu{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;-webkit-box-pack:justify;-ms-flex-pack:justify;align-items:center;display:flex;justify-content:center;justify-content:space-between;max-width:100%}.fd-toolbar__overflow .fd-toolbar__separator{-webkit-box-sizing:border-box;background-color:var(--sapToolbar_SeparatorColor);border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:.0625rem;line-height:var(--sapContent_LineHeight);margin:.1875rem;padding:0;width:auto}.fd-toolbar__overflow .fd-toolbar__separator:after,.fd-toolbar__overflow .fd-toolbar__separator:before{box-sizing:inherit;font-size:inherit}.fd-toolbar__overflow .fd-toolbar__overflow-form-label,.fd-toolbar__overflow .fd-toolbar__overflow-label{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;overflow:hidden;padding:0;text-overflow:ellipsis;white-space:nowrap}.fd-toolbar__overflow .fd-toolbar__overflow-form-label:after,.fd-toolbar__overflow .fd-toolbar__overflow-form-label:before,.fd-toolbar__overflow .fd-toolbar__overflow-label:after,.fd-toolbar__overflow .fd-toolbar__overflow-label:before{box-sizing:inherit;font-size:inherit}.fd-toolbar__overflow .fd-toolbar__overflow-form-label--text,.fd-toolbar__overflow .fd-toolbar__overflow-label--text{margin-top:.4375rem}.fd-toolbar__title{color:var(--sapGroup_TitleTextColor);font-size:var(--sapGroup_Title_FontSize)}.fd-toolbar--cozy{height:2.75rem;min-height:2.75rem}.fd-toolbar--cozy.fd-toolbar--info{height:2rem;min-height:2rem}.fd-toolbar--cozy .fd-toolbar__overflow{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:.25rem .5rem}.fd-toolbar--cozy .fd-toolbar__overflow:after,.fd-toolbar--cozy .fd-toolbar__overflow:before{box-sizing:inherit;font-size:inherit}.fd-toolbar>*{flex-shrink:0}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5.PopoverControlComponent, selector: "fd-popover-control" }, { kind: "component", type: i5.PopoverBodyComponent, selector: "fd-popover-body" }, { kind: "component", type: i5.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
287
404
|
__decorate([
|
|
288
405
|
applyCssClass,
|
|
289
406
|
__metadata("design:type", Function),
|
|
290
407
|
__metadata("design:paramtypes", []),
|
|
291
408
|
__metadata("design:returntype", Array)
|
|
292
409
|
], ToolbarComponent.prototype, "buildComponentCssClass", null);
|
|
293
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.
|
|
410
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: ToolbarComponent, decorators: [{
|
|
294
411
|
type: Component,
|
|
295
412
|
args: [{ selector: 'fd-toolbar', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
296
413
|
contentDensityObserverProviders({
|
|
297
414
|
defaultContentDensity: ContentDensityMode.COMPACT
|
|
298
415
|
}),
|
|
299
416
|
DestroyedService
|
|
300
|
-
], template: "<div #toolbar [tabindex]=\"tabindex\" [class.fd-toolbar--cozy]=\"_contentDensityObserver.isCozy$ | async\">\n <h4 *ngIf=\"title\" class=\"fd-title fd-title--h4 fd-toolbar__title\"
|
|
301
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type:
|
|
417
|
+
], template: "<div #toolbar [tabindex]=\"tabindex\" [class.fd-toolbar--cozy]=\"_contentDensityObserver.isCozy$ | async\">\n <h4 *ngIf=\"title\" class=\"fd-title fd-title--h4 fd-toolbar__title\">{{ title }}</h4>\n\n <ng-content></ng-content>\n\n <ng-container *ngIf=\"shouldOverflow\">\n <span #overflowSpacer class=\"fd-toolbar__spacer\"></span>\n\n <span class=\"fd-toolbar__separator\" *ngIf=\"overflowVisibility | async\"></span>\n\n <fd-popover placement=\"bottom-end\" [noArrow]=\"true\" class=\"fd-popover\">\n <fd-popover-control>\n <button\n *ngIf=\"overflowVisibility | async\"\n fd-button\n title=\"More\"\n aria-label=\"More\"\n aria-haspopup=\"true\"\n fdType=\"transparent\"\n glyph=\"overflow\"\n ></button>\n </fd-popover-control>\n\n <fd-popover-body>\n <div class=\"fd-toolbar__overflow\" #overflowBody></div>\n </fd-popover-body>\n </fd-popover>\n </ng-container>\n</div>\n", styles: ["/*!\n * Fundamental Library Styles v0.28.3\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-toolbar>*~:not(.fd-toolbar__spacer){margin-left:.5rem}.fd-toolbar>*~[dir=rtl]:not(.fd-toolbar__spacer),[dir=rtl] .fd-toolbar>*~:not(.fd-toolbar__spacer){margin-left:0;margin-right:.5rem}.fd-toolbar{-webkit-box-sizing:border-box;align-items:center;border:0;border-bottom:.0625rem solid var(--sapGroup_TitleBorderColor);box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:2rem;line-height:var(--sapContent_LineHeight);margin:0;padding:0 .5rem}.fd-toolbar:after,.fd-toolbar:before{box-sizing:inherit;font-size:inherit}.fd-toolbar>.fd-toolbar__spacer+:not(.fd-toolbar__spacer){margin-left:0;margin-right:0}.fd-toolbar--title{background-color:var(--sapGroup_TitleBackground)!important;height:2.75rem;padding:0 .5rem 0 1rem}.fd-toolbar--clear{border-bottom:none}.fd-toolbar--auto{background-color:var(--fdToolbar_Auto_Background)}.fd-toolbar--solid{background-color:var(--fdToolbar_Solid_Background)}.fd-toolbar--transparent{background-color:var(--sapToolbar_Background)}.fd-toolbar--fade-in{-webkit-transition:visibility 0s linear 0s,opacity 1s;opacity:1;transition:visibility 0s linear 0s,opacity 1s;visibility:visible}.fd-toolbar--fade-out{-webkit-transition:visibility 0s linear 1s,opacity 1ms;opacity:0;transition:visibility 0s linear 1s,opacity 1ms;visibility:hidden}.fd-toolbar--info{background-color:var(--sapInfobar_NonInteractive_Background);color:var(--sapList_TextColor);outline:none;padding-left:.5rem;padding-right:1rem;position:relative}.fd-toolbar--info.fd-toolbar--active{background-color:var(--sapInfobar_Background);color:var(--sapInfobar_TextColor)}.fd-toolbar--info.fd-toolbar--active.is-hover,.fd-toolbar--info.fd-toolbar--active:hover{background-color:var(--sapInfobar_Hover_Background)}.fd-toolbar--info.fd-toolbar--active.is-active,.fd-toolbar--info.fd-toolbar--active:active{background-color:var(--sapInfobar_Active_Background)}.fd-toolbar--info[dir=rtl],[dir=rtl] .fd-toolbar--info{padding-left:1rem;padding-right:.5rem}.fd-toolbar--info.is-focus:after,.fd-toolbar--info:focus:after{border-color:var(--sapContent_FocusColor);border-style:var(--sapContent_FocusStyle);border-width:var(--sapContent_FocusWidth);content:\"\";inset:.0625rem;pointer-events:none;position:absolute}.fd-toolbar--info.is-focus,.fd-toolbar--info:focus{z-index:5}.fd-toolbar--info.is-focus:after,.fd-toolbar--info:focus:after{border-color:var(--fdToolbar_Info_Outline_Color)}.fd-toolbar--info [class*=sap-icon]{color:var(--sapInfobar_TextColor);font-size:1rem;height:1rem;line-height:1rem}.fd-toolbar__spacer{-webkit-box-sizing:border-box;-webkit-box-flex:1;-ms-flex:1 auto;border:0;box-sizing:border-box;color:var(--sapTextColor);flex:1 auto;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-toolbar__spacer:after,.fd-toolbar__spacer:before{box-sizing:inherit;font-size:inherit}.fd-toolbar__spacer--fixed{-webkit-box-flex:0;-ms-flex:none;display:inline-block;flex:none}.fd-toolbar__separator{-webkit-box-sizing:border-box;background-color:var(--sapToolbar_SeparatorColor);border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:1.5rem;line-height:var(--sapContent_LineHeight);margin:0;padding:0;width:.0625rem}.fd-toolbar__separator:after,.fd-toolbar__separator:before{box-sizing:inherit;font-size:inherit}.fd-toolbar__overflow{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:column;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;max-height:50vh;max-width:20rem;overflow:auto;padding:.1875rem .375rem}.fd-toolbar__overflow:after,.fd-toolbar__overflow:before{box-sizing:inherit;font-size:inherit}.fd-toolbar__overflow .fd-toolbar__overflow-button{justify-content:flex-start;margin:.1875rem 0;text-align:left;width:auto}.fd-toolbar__overflow .fd-toolbar__overflow-button[dir=rtl],[dir=rtl] .fd-toolbar__overflow .fd-toolbar__overflow-button{text-align:right}.fd-toolbar__overflow .fd-toolbar__overflow-button--menu{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;-webkit-box-pack:justify;-ms-flex-pack:justify;align-items:center;display:flex;justify-content:center;justify-content:space-between;max-width:100%}.fd-toolbar__overflow .fd-toolbar__separator{-webkit-box-sizing:border-box;background-color:var(--sapToolbar_SeparatorColor);border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:.0625rem;line-height:var(--sapContent_LineHeight);margin:.1875rem;padding:0;width:auto}.fd-toolbar__overflow .fd-toolbar__separator:after,.fd-toolbar__overflow .fd-toolbar__separator:before{box-sizing:inherit;font-size:inherit}.fd-toolbar__overflow .fd-toolbar__overflow-form-label,.fd-toolbar__overflow .fd-toolbar__overflow-label{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;overflow:hidden;padding:0;text-overflow:ellipsis;white-space:nowrap}.fd-toolbar__overflow .fd-toolbar__overflow-form-label:after,.fd-toolbar__overflow .fd-toolbar__overflow-form-label:before,.fd-toolbar__overflow .fd-toolbar__overflow-label:after,.fd-toolbar__overflow .fd-toolbar__overflow-label:before{box-sizing:inherit;font-size:inherit}.fd-toolbar__overflow .fd-toolbar__overflow-form-label--text,.fd-toolbar__overflow .fd-toolbar__overflow-label--text{margin-top:.4375rem}.fd-toolbar__title{color:var(--sapGroup_TitleTextColor);font-size:var(--sapGroup_Title_FontSize)}.fd-toolbar--cozy{height:2.75rem;min-height:2.75rem}.fd-toolbar--cozy.fd-toolbar--info{height:2rem;min-height:2rem}.fd-toolbar--cozy .fd-toolbar__overflow{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:.25rem .5rem}.fd-toolbar--cozy .fd-toolbar__overflow:after,.fd-toolbar--cozy .fd-toolbar__overflow:before{box-sizing:inherit;font-size:inherit}.fd-toolbar>*{flex-shrink:0}\n"] }]
|
|
418
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i1.ContentDensityObserver }, { type: i2.DestroyedService }, { type: undefined, decorators: [{
|
|
302
419
|
type: Optional
|
|
303
420
|
}, {
|
|
304
421
|
type: SkipSelf
|
|
305
422
|
}, {
|
|
306
423
|
type: Inject,
|
|
307
424
|
args: [DYNAMIC_PAGE_HEADER_TOKEN]
|
|
308
|
-
}] }]; }, propDecorators: {
|
|
309
|
-
type: Input
|
|
310
|
-
}], class: [{
|
|
425
|
+
}] }]; }, propDecorators: { class: [{
|
|
311
426
|
type: Input
|
|
312
427
|
}], shouldOverflow: [{
|
|
313
428
|
type: Input
|
|
@@ -328,14 +443,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
|
|
|
328
443
|
}], toolbar: [{
|
|
329
444
|
type: ViewChild,
|
|
330
445
|
args: ['toolbar']
|
|
331
|
-
}],
|
|
446
|
+
}], overflowBody: [{
|
|
447
|
+
type: ViewChild,
|
|
448
|
+
args: ['overflowBody']
|
|
449
|
+
}], overflowSpacer: [{
|
|
332
450
|
type: ViewChild,
|
|
333
|
-
args: ['
|
|
451
|
+
args: ['overflowSpacer']
|
|
334
452
|
}], toolbarItems: [{
|
|
335
453
|
type: ContentChildren,
|
|
336
|
-
args: [forwardRef(() =>
|
|
454
|
+
args: [forwardRef(() => ToolbarItemDirective)]
|
|
337
455
|
}], titleComponent: [{
|
|
338
456
|
type: ContentChild,
|
|
339
457
|
args: [TitleToken]
|
|
340
458
|
}], buildComponentCssClass: [] } });
|
|
341
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi90b29sYmFyL3Rvb2xiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBSUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFFBQVEsRUFDUixTQUFTLEVBQ1QsUUFBUSxFQUNSLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHlCQUF5QixFQUFxQixNQUFNLDhCQUE4QixDQUFDO0FBRTVGLE9BQU8sRUFDSCxhQUFhLEVBRWIsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUV2QixxQkFBcUIsRUFDeEIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUNILGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdEIsK0JBQStCLEVBQ2xDLE1BQU0sdUNBQXVDLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7QUFFNUQsTUFBTSxjQUFjLEdBQUcsQ0FBQyxDQUFDO0FBQ3pCLE1BQU0sY0FBYyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsY0FBYyxDQUFDO0FBQy9DLE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxD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Z0JBQWdCO2tCQWI1QixTQUFTOytCQUNJLFlBQVksaUJBR1AsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDUCwrQkFBK0IsQ0FBQzs0QkFDNUIscUJBQXFCLEVBQUUsa0JBQWtCLENBQUMsT0FBTzt5QkFDcEQsQ0FBQzt3QkFDRixnQkFBZ0I7cUJBQ25COzswQkFvSEksUUFBUTs7MEJBQUksUUFBUTs7MEJBQUksTUFBTTsyQkFBQyx5QkFBeUI7NENBN0c3RCxPQUFPO3NCQUROLEtBQUs7Z0JBTU4sS0FBSztzQkFESixLQUFLO2dCQU9GLGNBQWM7c0JBRGpCLEtBQUs7Z0JBZU4sTUFBTTtzQkFETCxLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFLTixLQUFLO3NCQURKLEtBQUs7Z0JBT04sTUFBTTtzQkFETCxLQUFLO2dCQU9OLFdBQVc7c0JBRFYsS0FBSztnQkFLTixhQUFhO3NCQURaLEtBQUs7Z0JBS04sUUFBUTtzQkFEUCxLQUFLO2dCQUtOLE9BQU87c0JBRE4sU0FBUzt1QkFBQyxTQUFTO2dCQUtwQixZQUFZO3NCQURYLFNBQVM7dUJBQUMsY0FBYztnQkFLekIsWUFBWTtzQkFEWCxlQUFlO3VCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUM7Z0JBSzFDLGNBQWM7c0JBRGpCLFlBQVk7dUJBQUMsVUFBVTtnQkErSXhCLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdDaGVja2VkLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT3B0aW9uYWwsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNraXBTZWxmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERZTkFNSUNfUEFHRV9IRUFERVJfVE9LRU4sIER5bmFtaWNQYWdlSGVhZGVyIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NoYXJlZCc7XG5cbmltcG9ydCB7XG4gICAgYXBwbHlDc3NDbGFzcyxcbiAgICBDc3NDbGFzc0J1aWxkZXIsXG4gICAgRGVzdHJveWVkU2VydmljZSxcbiAgICBPVkVSRkxPV19QUklPUklUWV9TQ09SRSxcbiAgICBPdmVyZmxvd1ByaW9yaXR5LFxuICAgIFJlc2l6ZU9ic2VydmVyU2VydmljZVxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgc3RhcnRXaXRoLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRpdGxlVG9rZW4gfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdGl0bGUnO1xuaW1wb3J0IHtcbiAgICBDb250ZW50RGVuc2l0eU1vZGUsXG4gICAgQ29udGVudERlbnNpdHlPYnNlcnZlcixcbiAgICBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuaW1wb3J0IHsgVG9vbGJhckl0ZW0gfSBmcm9tICcuL2Fic3RyYWN0LXRvb2xiYXItaXRlbS5jbGFzcyc7XG5cbmNvbnN0IEVMRU1FTlRfTUFSR0lOID0gODtcbmNvbnN0IE9WRVJGTE9XX1NQQUNFID0gNTAgKyAyICogRUxFTUVOVF9NQVJHSU47XG5jb25zdCBNQVhfQ09OVEVOVF9TSVpFID0gOTk5OTk5OTk7XG5cbmV4cG9ydCB0eXBlIFRvb2xiYXJUeXBlID0gJ3NvbGlkJyB8ICd0cmFuc3BhcmVudCcgfCAnYXV0bycgfCAnaW5mbyc7XG5cbmV4cG9ydCBjb25zdCBlbnVtIE92ZXJmbG93UHJpb3JpdHlFbnVtIHtcbiAgICBBTFdBWVMgPSAnYWx3YXlzJyxcbiAgICBORVZFUiA9ICduZXZlcicsXG4gICAgTE9XID0gJ2xvdycsXG4gICAgSElHSCA9ICdoaWdoJyxcbiAgICBESVNBUFBFQVIgPSAnZGlzYXBwZWFyJ1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLXRvb2xiYXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90b29sYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi90b29sYmFyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVycyh7XG4gICAgICAgICAgICBkZWZhdWx0Q29udGVudERlbnNpdHk6IENvbnRlbnREZW5zaXR5TW9kZS5DT01QQUNUXG4gICAgICAgIH0pLFxuICAgICAgICBEZXN0cm95ZWRTZXJ2aWNlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUb29sYmFyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCwgQ3NzQ2xhc3NCdWlsZGVyLCBBZnRlckNvbnRlbnRJbml0IHtcbiAgICAvKipcbiAgICAgKiBUaGUgSUQgb2YgdGhlIHRvb2xiYXIgdGl0bGVcbiAgICAgKiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGl0bGVJZDogc3RyaW5nO1xuXG4gICAgLyoqIFByb3BlcnR5IGFsbG93cyB1c2VyIHRvIHBhc3MgYWRkaXRpb25hbCBjbGFzc1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgY2xhc3M6IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIGlmIG92ZXJmbG93IGJ1dHRvbiBzaG91bGQgYmUgdmlzaWJsZVxuICAgICAqIERlZmF1bHQgdmFsdWU6IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgc2hvdWxkT3ZlcmZsb3codmFsOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3Nob3VsZE92ZXJmbG93ID0gdmFsO1xuICAgICAgICB0aGlzLnNob3VsZE92ZXJmbG93JC5uZXh0KHZhbCk7XG4gICAgfVxuXG4gICAgZ2V0IHNob3VsZE92ZXJmbG93KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2hvdWxkT3ZlcmZsb3c7XG4gICAgfVxuXG4gICAgLyoqIERldGVybWluZXMgdGhlIHR5cGUgb2YgdG9vbGJhclxuICAgICAqIEF2YWlsYWJsZSBvcHRpb25zOiAnc29saWQnIHwgJ3RyYW5zcGFyZW50JyB8ICdhdXRvJyB8ICdpbmZvJ1xuICAgICAqIERlZmF1bHQgdmFsdWU6ICdzb2xpZCdcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZkVHlwZTogVG9vbGJhclR5cGUgPSAnc29saWQnO1xuICAgIC8qKiBAZGVwcmVjYXRlZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgaGFzVGl0bGUgPSBmYWxzZTtcblxuICAgIC8qKiBUaGUgdGl0bGUgZm9yIHRoZSB0b29sYmFyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGl0bGU6IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIGlmIHRvb2xiYXIgc2hvdWxkIGhhcyBhY3RpdmUgc3RhdGUgKG9ubHkgd2hlbiBmZFR5cGUgPT0gJ2luZm8nKVxuICAgICAqIERlZmF1bHQgdmFsdWU6IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhY3RpdmUgPSBmYWxzZTtcblxuICAgIC8qKiBEZXRlcm1pbmVzIGlmIHRvb2xiYXIgc2hvdWxkIGNsZWFyIGJvcmRlciBib3R0b21cbiAgICAgKiBEZWZhdWx0IHZhbHVlOiBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgY2xlYXJCb3JkZXIgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIGFsbCBpdGVtcyBzaG91bGQgYmUgaW5zaWRlIG92ZXJmbG93ICovXG4gICAgQElucHV0KClcbiAgICBmb3JjZU92ZXJmbG93ID0gZmFsc2U7XG5cbiAgICAvKiogVGFiaW5kZXggb2YgdGhlIHRvb2xiYXIgZWxlbWVudCwgdG8gYmUgdXNlZCB3aGVuIGZkVHlwZT1cImluZm9cIiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGFiaW5kZXggPSAtMTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgndG9vbGJhcicpXG4gICAgdG9vbGJhcjogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgndGl0bGVFbGVtZW50JylcbiAgICB0aXRsZUVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEhlYWRFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IFRvb2xiYXJJdGVtKSlcbiAgICB0b29sYmFySXRlbXM6IFF1ZXJ5TGlzdDxUb29sYmFySXRlbT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGQoVGl0bGVUb2tlbilcbiAgICBzZXQgdGl0bGVDb21wb25lbnQodGl0bGU6IFRpdGxlVG9rZW4gfCBudWxsKSB7XG4gICAgICAgIHRoaXMuX3RpdGxlQ29tcG9uZW50JC5uZXh0KHRpdGxlKTtcbiAgICB9XG5cbiAgICBnZXQgdGl0bGVDb21wb25lbnQoKTogVGl0bGVUb2tlbiB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGl0bGVDb21wb25lbnQkLnZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb3ZlcmZsb3dJdGVtcyQ6IE9ic2VydmFibGU8VG9vbGJhckl0ZW1bXT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG92ZXJmbG93bkl0ZW1zOiBUb29sYmFySXRlbVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3RpdGxlQ29tcG9uZW50JDogQmVoYXZpb3JTdWJqZWN0PFRpdGxlVG9rZW4gfCBudWxsPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGl0bGVUb2tlbiB8IG51bGw+KG51bGwpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZWZyZXNoT3ZlcmZsb3ckID0gbmV3IEJlaGF2aW9yU3ViamVjdDx2b2lkPih1bmRlZmluZWQpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGdldCBfdG9vbGJhcldpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiAodGhpcy50b29sYmFyLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmNsaWVudFdpZHRoIC0gT1ZFUkZMT1dfU1BBQ0U7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zaG91bGRPdmVyZmxvdyA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0aWFsaXNlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHNob3VsZE92ZXJmbG93JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICByZWFkb25seSBfY29udGVudERlbnNpdHlPYnNlcnZlcjogQ29udGVudERlbnNpdHlPYnNlcnZlcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSQ6IERlc3Ryb3llZFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXJTZXJ2aWNlOiBSZXNpemVPYnNlcnZlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIEBJbmplY3QoRFlOQU1JQ19QQUdFX0hFQURFUl9UT0tFTikgcHJpdmF0ZSBfZHluYW1pY1BhZ2VIZWFkZXI/OiBEeW5hbWljUGFnZUhlYWRlclxuICAgICkge1xuICAgICAgICBfY29udGVudERlbnNpdHlPYnNlcnZlci5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vdmVyZmxvd0l0ZW1zJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2Uub2JzZXJ2ZSh0aGlzLnRvb2xiYXIubmF0aXZlRWxlbWVudCkucGlwZShtYXAoKCkgPT4gdGhpcy5fdG9vbGJhcldpZHRoKSksXG4gICAgICAgICAgICB0aGlzLnRvb2xiYXJJdGVtcy5jaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKHRoaXMudG9vbGJhckl0ZW1zKSxcbiAgICAgICAgICAgICAgICBtYXAoKHRvb2xiYXJJdGVtcykgPT4gdG9vbGJhckl0ZW1zLnRvQXJyYXkoKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0aGlzLl90aXRsZUNvbXBvbmVudCQucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHRpdGxlQ29tcG9uZW50KTogSFRNTEVsZW1lbnQgfCBudWxsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aXRsZUNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGl0bGVFbGVtZW50Py5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aXRsZUNvbXBvbmVudC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0aGlzLnNob3VsZE92ZXJmbG93JCxcbiAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hPdmVyZmxvdyRcbiAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoW3Rvb2xiYXJXaWR0aCwgdG9vbGJhckl0ZW1zLCB0aXRsZUVsZW1lbnQsIHNob3VsZE92ZXJmbG93XSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzaG91bGRPdmVyZmxvdykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBfc29ydGVkQnlQcmlvcml0eUFuZEdyb3VwSXRlbXMgPSB0aGlzLl9nZXRTb3J0ZWRCeVByaW9yaXR5QW5kR3JvdXBJdGVtcyh0b29sYmFySXRlbXMpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvdmVyZmxvd0l0ZW1zOiBUb29sYmFySXRlbVtdID0gW107XG4gICAgICAgICAgICAgICAgICAgIF9zb3J0ZWRCeVByaW9yaXR5QW5kR3JvdXBJdGVtcy5yZWR1Y2UoKF9jb250ZW50V2lkdGgsIHRvb2xiYXJJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtV2lkdGggPSB0b29sYmFySXRlbS53aWR0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1Qcmlvcml0eSA9IHRvb2xiYXJJdGVtLnByaW9yaXR5O1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkSXRlbUJlUmVtb3ZlZEJ5V2lkdGggPSBpdGVtV2lkdGggKyBfY29udGVudFdpZHRoID4gdG9vbGJhcldpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkQWx3YXlzQmVJbk92ZXJmbG93ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtUHJpb3JpdHkgPT09IE92ZXJmbG93UHJpb3JpdHlFbnVtLkFMV0FZUyB8fCB0aGlzLmZvcmNlT3ZlcmZsb3c7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGROZXZlckJlSW5PdmVyZmxvdyA9IGl0ZW1Qcmlvcml0eSA9PT0gT3ZlcmZsb3dQcmlvcml0eUVudW0uTkVWRVI7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHNob3VsZEl0ZW1CZVJlbW92ZWRCeVdpZHRoICYmICFzaG91bGROZXZlckJlSW5PdmVyZmxvdykgfHwgc2hvdWxkQWx3YXlzQmVJbk92ZXJmbG93KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3dJdGVtcy5wdXNoKHRvb2xiYXJJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2hvdWxkQWx3YXlzQmVJbk92ZXJmbG93ID8gX2NvbnRlbnRXaWR0aCA6IE1BWF9DT05URU5UX1NJWkU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfY29udGVudFdpZHRoICsgaXRlbVdpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB0aXRsZUVsZW1lbnQ/LmNsaWVudFdpZHRoIHx8IDApO1xuICAgICAgICAgICAgICAgICAgICAvLyBIaWRlIG9ycGhhbnNcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCB0b29sYmFySXRlbSBvZiBvdmVyZmxvd0l0ZW1zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncm91cGVkQ29sbGVjdGlvbiA9IHRoaXMuX2dldEdyb3VwZWRDb2xsZWN0aW9uKHRvb2xiYXJJdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncm91cGVkQ29sbGVjdGlvblByaW9yaXRpZXMgPSB0aGlzLl9nZXRHcm91cGVkQ29sbGVjdGlvblByaW9yaXR5KGdyb3VwZWRDb2xsZWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdG9vbGJhckl0ZW0uZ3JvdXA7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtUHJpb3JpdHkgPSB0b29sYmFySXRlbS5wcmlvcml0eTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChncm91cCAhPT0gMCAmJiBpdGVtUHJpb3JpdHkgIT09IE92ZXJmbG93UHJpb3JpdHlFbnVtLkRJU0FQUEVBUikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zRnJvbUN1cnJlbnRHcm91cCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2dldEVsZW1lbnRzRnJvbUN1cnJlbnRHcm91cChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBlZENvbGxlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cGVkQ29sbGVjdGlvblByaW9yaXRpZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB8fCBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc0Zyb21DdXJyZW50R3JvdXAuZm9yRWFjaCgoaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3ZlcmZsb3dJdGVtcy5pbmRleE9mKGkpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3dJdGVtcy5wdXNoKGkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG92ZXJmbG93SXRlbXMuc29ydCgoYSwgYikgPT4gdGhpcy5fc29ydFByaW9yaXRpZXMoYS5wcmlvcml0eSwgYi5wcmlvcml0eSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JClcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5vdmVyZmxvd0l0ZW1zJC5zdWJzY3JpYmUoKGl0ZW1zKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm92ZXJmbG93bkl0ZW1zID0gaXRlbXM7XG4gICAgICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9pbml0aWFsaXNlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudGl0bGVDb21wb25lbnQpIHtcbiAgICAgICAgICAgIHRoaXMudGl0bGVDb21wb25lbnQuZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdmZC10b29sYmFyX190aXRsZScpO1xuICAgICAgICAgICAgdGhpcy5idWlsZENvbXBvbmVudENzc0NsYXNzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQ2hhbmdlIGRldGVjdGlvbiByZWZlcmVuY2UgKi9cbiAgICBkZXRlY3RDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBlbGVtZW50UmVmKCk6IEVsZW1lbnRSZWYge1xuICAgICAgICByZXR1cm4gdGhpcy50b29sYmFyO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQGFwcGx5Q3NzQ2xhc3NcbiAgICBidWlsZENvbXBvbmVudENzc0NsYXNzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICdmZC10b29sYmFyJyxcbiAgICAgICAgICAgIGBmZC10b29sYmFyLS0ke3RoaXMuZmRUeXBlfWAsXG4gICAgICAgICAgICBgJHt0aGlzLmFjdGl2ZSAmJiB0aGlzLmZkVHlwZSA9PT0gJ2luZm8nID8gJ2ZkLXRvb2xiYXItLWFjdGl2ZScgOiAnJ31gLFxuICAgICAgICAgICAgYCR7dGhpcy5oYXNUaXRsZSB8fCB0aGlzLnRpdGxlIHx8IHRoaXMudGl0bGVDb21wb25lbnQgPyAnZmQtdG9vbGJhci0tdGl0bGUnIDogJyd9YCxcbiAgICAgICAgICAgIGAke3RoaXMuY2xlYXJCb3JkZXIgPyAnZmQtdG9vbGJhci0tY2xlYXInIDogJyd9YCxcbiAgICAgICAgICAgIGAke3RoaXMuX2R5bmFtaWNQYWdlSGVhZGVyID8gJ2ZkLWR5bmFtaWMtcGFnZV9fdG9vbGJhcicgOiAnJ31gXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCB0cmlnZ2VyaW5nIGNvbGxhcHNpYmxlIHRvb2xiYXIgICovXG4gICAgdXBkYXRlQ29sbGFwc2libGVJdGVtcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVmcmVzaE92ZXJmbG93JC5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gR2V0IGdyb3VwIG51bWJlciB3aXRoIHRoZSBsb3dlc3QgcHJpb3JpdHkuXG4gICAgICogIFVzZXMgZm9yIGRldGVjdGluZyBhIGdyb3VwIG9mIGVsZW1lbnRzIHdoaWNoIHdvdWxkIGJlIGhpZGRlbiBmcm9tIHRoZSB0b29sYmFyLlxuICAgICAqICAqL1xuICAgIHByaXZhdGUgX2dldExvd2VzdFByaW9yaXR5RnJvbUdyb3VwKFxuICAgICAgICBpdGVtR3JvdXA6IG51bWJlcixcbiAgICAgICAgZ3JvdXBlZENvbGxlY3Rpb25Qcmlvcml0eT86IFJlY29yZDxudW1iZXIsIE92ZXJmbG93UHJpb3JpdHk+XG4gICAgKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgcHJpb3JpdHkgPSBncm91cGVkQ29sbGVjdGlvblByaW9yaXR5O1xuICAgICAgICBpZiAoIXByaW9yaXR5IHx8ICFPVkVSRkxPV19QUklPUklUWV9TQ09SRS5nZXQocHJpb3JpdHlbaXRlbUdyb3VwXSkpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtR3JvdXA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBncm91cHMgPSBPYmplY3Qua2V5cyhwcmlvcml0eSk7XG5cbiAgICAgICAgcmV0dXJuIGdyb3Vwcy5yZWR1Y2UoKGxvd2VzdEdyb3VwLCBjdXJyZW50R3JvdXApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxvd2VzdEdyb3VwUHJpb3JpdHkgPSBwcmlvcml0eVtsb3dlc3RHcm91cF07XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50R3JvdXBQcmlvcml0eSA9IHByaW9yaXR5W2N1cnJlbnRHcm91cF07XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgT1ZFUkZMT1dfUFJJT1JJVFlfU0NPUkUuZ2V0KGN1cnJlbnRHcm91cFByaW9yaXR5KSEgPCBPVkVSRkxPV19QUklPUklUWV9TQ09SRS5nZXQobG93ZXN0R3JvdXBQcmlvcml0eSkhXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gK2N1cnJlbnRHcm91cDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGxvd2VzdEdyb3VwO1xuICAgICAgICB9LCBpdGVtR3JvdXAgYXMgbnVtYmVyKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldEVsZW1lbnRzRnJvbUN1cnJlbnRHcm91cChcbiAgICAgICAgaXRlbUdyb3VwOiBudW1iZXIsXG4gICAgICAgIGdyb3VwZWRDb2xsZWN0aW9uPzogUmVjb3JkPG51bWJlciwgVG9vbGJhckl0ZW1bXT4sXG4gICAgICAgIGdyb3VwZWRDb2xsZWN0aW9uUHJpb3JpdHk/OiBSZWNvcmQ8bnVtYmVyLCBPdmVyZmxvd1ByaW9yaXR5PlxuICAgICk6IFRvb2xiYXJJdGVtW10ge1xuICAgICAgICBjb25zdCBsb3dlc3RQcmlvcml0eUZyb21Hcm91cCA9IHRoaXMuX2dldExvd2VzdFByaW9yaXR5RnJvbUdyb3VwKGl0ZW1Hcm91cCwgZ3JvdXBlZENvbGxlY3Rpb25Qcmlvcml0eSk7XG4gICAgICAgIGlmICghZ3JvdXBlZENvbGxlY3Rpb24gfHwgIWdyb3VwZWRDb2xsZWN0aW9uUHJpb3JpdHkpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaXRlbXNUb1JlbW92ZSA9IGdyb3VwZWRDb2xsZWN0aW9uW2xvd2VzdFByaW9yaXR5RnJvbUdyb3VwXTtcblxuICAgICAgICBkZWxldGUgZ3JvdXBlZENvbGxlY3Rpb25bbG93ZXN0UHJpb3JpdHlGcm9tR3JvdXBdO1xuICAgICAgICBkZWxldGUgZ3JvdXBlZENvbGxlY3Rpb25Qcmlvcml0eVtsb3dlc3RQcmlvcml0eUZyb21Hcm91cF07XG5cbiAgICAgICAgaWYgKGxvd2VzdFByaW9yaXR5RnJvbUdyb3VwICE9PSBpdGVtR3JvdXApIHtcbiAgICAgICAgICAgIGl0ZW1zVG9SZW1vdmUgPSBbLi4uaXRlbXNUb1JlbW92ZSwgLi4uZ3JvdXBlZENvbGxlY3Rpb25baXRlbUdyb3VwXV07XG4gICAgICAgICAgICBkZWxldGUgZ3JvdXBlZENvbGxlY3Rpb25baXRlbUdyb3VwXTtcbiAgICAgICAgICAgIGRlbGV0ZSBncm91cGVkQ29sbGVjdGlvblByaW9yaXR5W2l0ZW1Hcm91cF07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXRlbXNUb1JlbW92ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBHZXQgdGhlIG9iamVjdCB3aXRoIGdyb3VwZWQgYXJyYXlzIG9mIGVsZW1lbnRzLiAqL1xuICAgIHByaXZhdGUgX2dldEdyb3VwZWRDb2xsZWN0aW9uKHRvb2xiYXJJdGVtczogVG9vbGJhckl0ZW1bXSk6IFJlY29yZDxudW1iZXIsIFRvb2xiYXJJdGVtW10+IHtcbiAgICAgICAgcmV0dXJuIHRvb2xiYXJJdGVtcy5yZWR1Y2UoKGFjYywgaXRlbSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXRlbVByaW8gPSBpdGVtLnByaW9yaXR5O1xuICAgICAgICAgICAgY29uc3QgaXRlbUdyb3VwID0gaXRlbS5ncm91cDtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBpdGVtUHJpbyA9PT0gT3ZlcmZsb3dQcmlvcml0eUVudW0uTkVWRVIgfHxcbiAgICAgICAgICAgICAgICBpdGVtUHJpbyA9PT0gT3ZlcmZsb3dQcmlvcml0eUVudW0uQUxXQVlTIHx8XG4gICAgICAgICAgICAgICAgaXRlbUdyb3VwID09PSAwXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFhY2NbaXRlbUdyb3VwXSkge1xuICAgICAgICAgICAgICAgIGFjY1tpdGVtR3JvdXBdID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhY2NbaXRlbUdyb3VwXS5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSwge30pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEdldCB0aGUgb2JqZWN0IHdpdGggdGhlIGhpZ2hlc3QgcHJpb3JpdHkgZm9yIGVhY2ggZ3JvdXAgb2YgZWxlbWVudHMuICovXG4gICAgcHJpdmF0ZSBfZ2V0R3JvdXBlZENvbGxlY3Rpb25Qcmlvcml0eShcbiAgICAgICAgZ3JvdXBlZENvbGxlY3Rpb246IFJlY29yZDxudW1iZXIsIFRvb2xiYXJJdGVtW10+XG4gICAgKTogUmVjb3JkPG51bWJlciwgT3ZlcmZsb3dQcmlvcml0eT4ge1xuICAgICAgICBjb25zdCBncm91cHMgPSBPYmplY3Qua2V5cyhncm91cGVkQ29sbGVjdGlvbik7XG5cbiAgICAgICAgcmV0dXJuIGdyb3Vwcy5yZWR1Y2UoKGFjYywgaXRlbUdyb3VwKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzb3J0ZWRQcmlvcml0aWVzID0gZ3JvdXBlZENvbGxlY3Rpb24hW2l0ZW1Hcm91cF1cbiAgICAgICAgICAgICAgICAubWFwKChpKSA9PiBpLnByaW9yaXR5KVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHByaW8pID0+IHByaW8gIT09IE92ZXJmbG93UHJpb3JpdHlFbnVtLkFMV0FZUyAmJiBwcmlvICE9PSBPdmVyZmxvd1ByaW9yaXR5RW51bS5ORVZFUilcbiAgICAgICAgICAgICAgICAuc29ydCh0aGlzLl9zb3J0UHJpb3JpdGllcyk7XG5cbiAgICAgICAgICAgIGFjY1tpdGVtR3JvdXBdID0gc29ydGVkUHJpb3JpdGllc1swXTtcblxuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSwge30pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFNvcnQgcHJpb3JpdGllcyBvZiBlbGVtZW50cy9ncm91cHMuICovXG4gICAgcHJpdmF0ZSBfc29ydFByaW9yaXRpZXMoYTogT3ZlcmZsb3dQcmlvcml0eSwgYjogT3ZlcmZsb3dQcmlvcml0eSk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBPVkVSRkxPV19QUklPUklUWV9TQ09SRS5nZXQoYikhIC0gT1ZFUkZMT1dfUFJJT1JJVFlfU0NPUkUuZ2V0KGEpITtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBTb3J0IGJ5IGdyb3VwIGFuZCBwcmlvcml0eSBhbmQgaW5pdGlhbCBwb3NpdGlvbiAqL1xuICAgIHByaXZhdGUgX2dldFNvcnRlZEJ5UHJpb3JpdHlBbmRHcm91cEl0ZW1zKHRvb2xiYXJJdGVtczogVG9vbGJhckl0ZW1bXSk6IFRvb2xiYXJJdGVtW10ge1xuICAgICAgICBjb25zdCBub3RTb3J0ZWQgPSB0b29sYmFySXRlbXMubWFwKChlbGVtZW50LCBpbmRleCkgPT4gKHsgZWxlbWVudCwgaW5kZXggfSkpO1xuXG4gICAgICAgIGNvbnN0IGdyb3VwcyA9IG5vdFNvcnRlZC5yZWR1Y2UoKGdyLCBpdGVtKSA9PiB7XG4gICAgICAgICAgICBsZXQgZ3JvdXBJZCA9IGl0ZW0uZWxlbWVudC5ncm91cDtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1QcmlvID0gaXRlbS5lbGVtZW50LnByaW9yaXR5O1xuICAgICAgICAgICAgaWYgKGl0ZW1QcmlvID09PSBPdmVyZmxvd1ByaW9yaXR5RW51bS5ORVZFUiB8fCBpdGVtUHJpbyA9PT0gT3ZlcmZsb3dQcmlvcml0eUVudW0uQUxXQVlTKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBJZCA9IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghZ3JbZ3JvdXBJZF0pIHtcbiAgICAgICAgICAgICAgICBncltncm91cElkXSA9IFtdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBncltncm91cElkXS5wdXNoKGl0ZW0pO1xuXG4gICAgICAgICAgICByZXR1cm4gZ3I7XG4gICAgICAgIH0sIHt9KTtcblxuICAgICAgICBjb25zdCBncm91cElkcyA9IE9iamVjdC5rZXlzKGdyb3VwcylcbiAgICAgICAgICAgIC5tYXAoKGcpID0+IHBhcnNlSW50KGcsIDEwKSlcbiAgICAgICAgICAgIC5maWx0ZXIoKGcpID0+IGcgIT09IDApO1xuXG4gICAgICAgIHJldHVybiBncm91cElkc1xuICAgICAgICAgICAgLm1hcCgoZykgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBtaW5JbmRleCA9IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSO1xuICAgICAgICAgICAgICAgIGxldCBtYXhQcmlvcml0eSA9IDA7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGdyb3Vwc1tnXSkge1xuICAgICAgICAgICAgICAgICAgICBtaW5JbmRleCA9IE1hdGgubWluKG1pbkluZGV4LCBpdGVtLmluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgbWF4UHJpb3JpdHkgPSBNYXRoLm1heChcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heFByaW9yaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgT1ZFUkZMT1dfUFJJT1JJVFlfU0NPUkUuZ2V0KGl0ZW0uZWxlbWVudC5wcmlvcml0eSkgPz8gLUluZmluaXR5XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgZ3JvdXA6IGdyb3Vwc1tnXS5tYXAoKHsgZWxlbWVudCB9KSA9PiBlbGVtZW50KSwgbWluSW5kZXgsIG1heFByaW9yaXR5IH07XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNvbmNhdChcbiAgICAgICAgICAgICAgICAhZ3JvdXBzWzBdXG4gICAgICAgICAgICAgICAgICAgID8gW11cbiAgICAgICAgICAgICAgICAgICAgOiBncm91cHNbMF0ubWFwKChpdGVtKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cDogW2l0ZW0uZWxlbWVudF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1heFByaW9yaXR5OiBPVkVSRkxPV19QUklPUklUWV9TQ09SRS5nZXQoaXRlbS5lbGVtZW50LnByaW9yaXR5KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWluSW5kZXg6IGl0ZW0uaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBiLm1heFByaW9yaXR5IC0gYS5tYXhQcmlvcml0eSB8fCBhLm1pbkluZGV4IC0gYi5taW5JbmRleClcbiAgICAgICAgICAgIC5yZWR1Y2UoKGFyciwgaSkgPT4gYXJyLmNvbmNhdChpLmdyb3VwKSwgW10pO1xuICAgIH1cbn1cbiIsIjxkaXYgI3Rvb2xiYXIgW3RhYmluZGV4XT1cInRhYmluZGV4XCIgW2NsYXNzLmZkLXRvb2xiYXItLWNvenldPVwiX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXIuaXNDb3p5JCB8IGFzeW5jXCI+XG4gICAgPGg0ICpuZ0lmPVwidGl0bGVcIiBjbGFzcz1cImZkLXRpdGxlIGZkLXRpdGxlLS1oNCBmZC10b29sYmFyX190aXRsZVwiIFtpZF09XCJ0aXRsZUlkXCIgI3RpdGxlRWxlbWVudD57eyB0aXRsZSB9fTwvaDQ+XG5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib3ZlcmZsb3duSXRlbXMubGVuZ3RoID4gMFwiPlxuICAgICAgICA8ZmQtdG9vbGJhci1zcGFjZXI+PC9mZC10b29sYmFyLXNwYWNlcj5cbiAgICAgICAgPGZkLXRvb2xiYXItc2VwYXJhdG9yPjwvZmQtdG9vbGJhci1zZXBhcmF0b3I+XG4gICAgICAgIDxmZC1wb3BvdmVyIHBsYWNlbWVudD1cImJvdHRvbS1lbmRcIiBbbm9BcnJvd109XCJ0cnVlXCIgY2xhc3M9XCJmZC1wb3BvdmVyXCI+XG4gICAgICAgICAgICA8ZmQtcG9wb3Zlci1jb250cm9sPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiTW9yZVwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJNb3JlXCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgIGdseXBoPVwib3ZlcmZsb3dcIlxuICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZmQtcG9wb3Zlci1jb250cm9sPlxuXG4gICAgICAgICAgICA8ZmQtcG9wb3Zlci1ib2R5PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZC10b29sYmFyX19vdmVyZmxvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvdmVyZmxvd2VkSXRlbSBvZiBvdmVyZmxvd25JdGVtc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZkay1keW5hbWljLXBvcnRhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkb21FbGVtZW50XT1cIm92ZXJmbG93ZWRJdGVtLmVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cIm92ZXJmbG93ZWRJdGVtLnByaW9yaXR5ID09PSAnZGlzYXBwZWFyJyA/ICdub25lJyA6ICdmbGV4J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmZsZXgtZGlyZWN0aW9uXT1cIm92ZXJmbG93ZWRJdGVtLnByaW9yaXR5ID09PSAnZGlzYXBwZWFyJyA/IHVuZGVmaW5lZCA6ICdjb2x1bW4nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZmRrLWR5bmFtaWMtcG9ydGFsPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZmQtcG9wb3Zlci1ib2R5PlxuICAgICAgICA8L2ZkLXBvcG92ZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
|
|
459
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi90b29sYmFyL3Rvb2xiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBSUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLFNBQVMsRUFDVCxTQUFTLEVBQ1QsUUFBUSxFQUNSLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHlCQUF5QixFQUFxQixNQUFNLDhCQUE4QixDQUFDO0FBRTVGLE9BQU8sRUFDSCxhQUFhLEVBRWIsdUJBQXVCLEVBRXZCLGdCQUFnQixFQUNuQixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxTQUFTLEVBQWMsRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsc0JBQXNCLEVBQ3RCLCtCQUErQixFQUNsQyxNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7O0FBRS9DLE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBQztBQUN6QixNQUFNLGNBQWMsR0FBRyxFQUFFLEdB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VUFBVSxxR0FKVSxvQkFBb0IsdVVDbEkxRCxxbkNBNkJBO0FEbU5JO0lBQUMsYUFBYTs7Ozs4REFVYjsyRkF0TFEsZ0JBQWdCO2tCQWI1QixTQUFTOytCQUNJLFlBQVksaUJBR1AsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDUCwrQkFBK0IsQ0FBQzs0QkFDNUIscUJBQXFCLEVBQUUsa0JBQWtCLENBQUMsT0FBTzt5QkFDcEQsQ0FBQzt3QkFDRixnQkFBZ0I7cUJBQ25COzswQkFvSEksUUFBUTs7MEJBQUksUUFBUTs7MEJBQUksTUFBTTsyQkFBQyx5QkFBeUI7NENBNUc3RCxLQUFLO3NCQURKLEtBQUs7Z0JBT04sY0FBYztzQkFEYixLQUFLO2dCQVFOLE1BQU07c0JBREwsS0FBSztnQkFLTixRQUFRO3NCQURQLEtBQUs7Z0JBS04sS0FBSztzQkFESixLQUFLO2dCQU9OLE1BQU07c0JBREwsS0FBSztnQkFPTixXQUFXO3NCQURWLEtBQUs7Z0JBS04sYUFBYTtzQkFEWixLQUFLO2dCQUtOLFFBQVE7c0JBRFAsS0FBSztnQkFLTixPQUFPO3NCQUROLFNBQVM7dUJBQUMsU0FBUztnQkFLcEIsWUFBWTtzQkFEWCxTQUFTO3VCQUFDLGNBQWM7Z0JBS3pCLGNBQWM7c0JBRGIsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBSzNCLFlBQVk7c0JBRFgsZUFBZTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUM7Z0JBS3ZELGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxVQUFVO2dCQTJHeEIsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIEFmdGVyVmlld0NoZWNrZWQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgUXVlcnlMaXN0LFxuICAgIFJlbmRlcmVyMixcbiAgICBTa2lwU2VsZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEWU5BTUlDX1BBR0VfSEVBREVSX1RPS0VOLCBEeW5hbWljUGFnZUhlYWRlciB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zaGFyZWQnO1xuXG5pbXBvcnQge1xuICAgIGFwcGx5Q3NzQ2xhc3MsXG4gICAgQ3NzQ2xhc3NCdWlsZGVyLFxuICAgIE9WRVJGTE9XX1BSSU9SSVRZX1NDT1JFLFxuICAgIE92ZXJmbG93UHJpb3JpdHksXG4gICAgRGVzdHJveWVkU2VydmljZVxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIE9ic2VydmFibGUsIG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGVsYXksIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRvb2xiYXJJdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi90b29sYmFyLWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IFRpdGxlVG9rZW4gfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdGl0bGUnO1xuaW1wb3J0IHtcbiAgICBDb250ZW50RGVuc2l0eU1vZGUsXG4gICAgQ29udGVudERlbnNpdHlPYnNlcnZlcixcbiAgICBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuXG5jb25zdCBFTEVNRU5UX01BUkdJTiA9IDg7XG5jb25zdCBPVkVSRkxPV19TUEFDRSA9IDUwICsgMiAqIEVMRU1FTlRfTUFSR0lOO1xuY29uc3QgTUFYX0NPTlRFTlRfU0laRSA9IDk5OTk5OTk5O1xuXG5leHBvcnQgdHlwZSBUb29sYmFyVHlwZSA9ICdzb2xpZCcgfCAndHJhbnNwYXJlbnQnIHwgJ2F1dG8nIHwgJ2luZm8nO1xuXG5leHBvcnQgY29uc3QgZW51bSBPdmVyZmxvd1ByaW9yaXR5RW51bSB7XG4gICAgQUxXQVlTID0gJ2Fsd2F5cycsXG4gICAgTkVWRVIgPSAnbmV2ZXInLFxuICAgIExPVyA9ICdsb3cnLFxuICAgIEhJR0ggPSAnaGlnaCcsXG4gICAgRElTQVBQRUFSID0gJ2Rpc2FwcGVhcidcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC10b29sYmFyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdG9vbGJhci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdG9vbGJhci5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMoe1xuICAgICAgICAgICAgZGVmYXVsdENvbnRlbnREZW5zaXR5OiBDb250ZW50RGVuc2l0eU1vZGUuQ09NUEFDVFxuICAgICAgICB9KSxcbiAgICAgICAgRGVzdHJveWVkU2VydmljZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgVG9vbGJhckNvbXBvbmVudFxuICAgIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWQsIENzc0NsYXNzQnVpbGRlciwgQWZ0ZXJDb250ZW50SW5pdFxue1xuICAgIC8qKiBQcm9wZXJ0eSBhbGxvd3MgdXNlciB0byBwYXNzIGFkZGl0aW9uYWwgY2xhc3NcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGNsYXNzOiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyBpZiBvdmVyZmxvdyBidXR0b24gc2hvdWxkIGJlIHZpc2libGVcbiAgICAgKiBEZWZhdWx0IHZhbHVlOiBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvdWxkT3ZlcmZsb3cgPSBmYWxzZTtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHRoZSB0eXBlIG9mIHRvb2xiYXJcbiAgICAgKiBBdmFpbGFibGUgb3B0aW9uczogJ3NvbGlkJyB8ICd0cmFuc3BhcmVudCcgfCAnYXV0bycgfCAnaW5mbydcbiAgICAgKiBEZWZhdWx0IHZhbHVlOiAnc29saWQnXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBmZFR5cGU6IFRvb2xiYXJUeXBlID0gJ3NvbGlkJztcblxuICAgIC8qKiBAZGVwcmVjYXRlZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgaGFzVGl0bGUgPSBmYWxzZTtcblxuICAgIC8qKiBUaGUgdGl0bGUgZm9yIHRoZSB0b29sYmFyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGl0bGU6IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIGlmIHRvb2xiYXIgc2hvdWxkIGhhcyBhY3RpdmUgc3RhdGUgKG9ubHkgd2hlbiBmZFR5cGUgPT0gJ2luZm8nKVxuICAgICAqIERlZmF1bHQgdmFsdWU6IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhY3RpdmUgPSBmYWxzZTtcblxuICAgIC8qKiBEZXRlcm1pbmVzIGlmIHRvb2xiYXIgc2hvdWxkIGNsZWFyIGJvcmRlciBib3R0b21cbiAgICAgKiBEZWZhdWx0IHZhbHVlOiBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgY2xlYXJCb3JkZXIgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIGFsbCBpdGVtcyBzaG91bGQgYmUgaW5zaWRlIG92ZXJmbG93ICovXG4gICAgQElucHV0KClcbiAgICBmb3JjZU92ZXJmbG93ID0gZmFsc2U7XG5cbiAgICAvKiogVGFiaW5kZXggb2YgdGhlIHRvb2xiYXIgZWxlbWVudCwgdG8gYmUgdXNlZCB3aGVuIGZkVHlwZT1cImluZm9cIiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGFiaW5kZXggPSAtMTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgndG9vbGJhcicpXG4gICAgdG9vbGJhcjogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnb3ZlcmZsb3dCb2R5JylcbiAgICBvdmVyZmxvd0JvZHk6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ292ZXJmbG93U3BhY2VyJylcbiAgICBvdmVyZmxvd1NwYWNlcjogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IFRvb2xiYXJJdGVtRGlyZWN0aXZlKSlcbiAgICB0b29sYmFySXRlbXM6IFF1ZXJ5TGlzdDxUb29sYmFySXRlbURpcmVjdGl2ZT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGQoVGl0bGVUb2tlbilcbiAgICB0aXRsZUNvbXBvbmVudDogVGl0bGVUb2tlbiB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvdmVyZmxvd1Zpc2liaWxpdHk6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSBvZihmYWxzZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgZ2V0IF90b29sYmFyV2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnRvb2xiYXIubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuY2xpZW50V2lkdGggLSBPVkVSRkxPV19TUEFDRTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgZ2V0IF9vdmVyZmxvd0JvZHkoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5vdmVyZmxvd0JvZHkgJiYgKHRoaXMub3ZlcmZsb3dCb2R5Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBnZXQgX3Rvb2xiYXIoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy50b29sYmFyLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9vdmVyZmxvd0VsZW1lbnRzOiBUb29sYmFySXRlbURpcmVjdGl2ZVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX25vcm1hbEVsZW1lbnRzOiBUb29sYmFySXRlbURpcmVjdGl2ZVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Rpc2FwcGVhckVsZW1lbnRzOiBUb29sYmFySXRlbURpcmVjdGl2ZVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dyb3VwZWRDb2xsZWN0aW9uOiB7IFtrZXk6IG51bWJlcl06IFRvb2xiYXJJdGVtRGlyZWN0aXZlW10gfSB8IG51bGw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dyb3VwZWRDb2xsZWN0aW9uUHJpb3JpdHk6IHsgW2tleTogbnVtYmVyXTogT3ZlcmZsb3dQcmlvcml0eSB9IHwgbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5pdGlhbGlzZWQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcmVhZG9ubHkgX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkOiBEZXN0cm95ZWRTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBASW5qZWN0KERZTkFNSUNfUEFHRV9IRUFERVJfVE9LRU4pIHByaXZhdGUgX2R5bmFtaWNQYWdlSGVhZGVyPzogRHluYW1pY1BhZ2VIZWFkZXJcbiAgICApIHtcbiAgICAgICAgX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXIuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5zaG91bGRPdmVyZmxvdyksXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDUwKSxcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fb25SZXNpemUoKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNob3VsZE92ZXJmbG93KSB7XG4gICAgICAgICAgICBvZih0cnVlKVxuICAgICAgICAgICAgICAgIC5waXBlKGRlbGF5KDUpLCB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fY29sbGFwc2VJdGVtcygpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pbml0aWFsaXNlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuX2xpc3RlbkZvckl0ZW1DaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudGl0bGVDb21wb25lbnQpIHtcbiAgICAgICAgICAgIHRoaXMudGl0bGVDb21wb25lbnQuZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdmZC10b29sYmFyX190aXRsZScpO1xuICAgICAgICAgICAgdGhpcy5idWlsZENvbXBvbmVudENzc0NsYXNzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqIENoYW5nZSBkZXRlY3Rpb24gcmVmZXJlbmNlICovXG4gICAgZGV0ZWN0Q2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZWxlbWVudFJlZigpOiBFbGVtZW50UmVmIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9vbGJhcjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBhcHBseUNzc0NsYXNzXG4gICAgYnVpbGRDb21wb25lbnRDc3NDbGFzcygpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAnZmQtdG9vbGJhcicsXG4gICAgICAgICAgICBgZmQtdG9vbGJhci0tJHt0aGlzLmZkVHlwZX1gLFxuICAgICAgICAgICAgYCR7dGhpcy5hY3RpdmUgJiYgdGhpcy5mZFR5cGUgPT09ICdpbmZvJyA/ICdmZC10b29sYmFyLS1hY3RpdmUnIDogJyd9YCxcbiAgICAgICAgICAgIGAke3RoaXMuaGFzVGl0bGUgfHwgdGhpcy50aXRsZSB8fCB0aGlzLnRpdGxlQ29tcG9uZW50ID8gJ2ZkLXRvb2xiYXItLXRpdGxlJyA6ICcnfWAsXG4gICAgICAgICAgICBgJHt0aGlzLmNsZWFyQm9yZGVyID8gJ2ZkLXRvb2xiYXItLWNsZWFyJyA6ICcnfWAsXG4gICAgICAgICAgICBgJHt0aGlzLl9keW5hbWljUGFnZUhlYWRlciA/ICdmZC1keW5hbWljLXBhZ2VfX3Rvb2xiYXInIDogJyd9YFxuICAgICAgICBdO1xuICAgIH1cblxuICAgIC8qKiBNZXRob2QgdHJpZ2dlcmluZyBjb2xsYXBzaWJsZSB0b29sYmFyICAqL1xuICAgIHVwZGF0ZUNvbGxhcHNpYmxlSXRlbXMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9pbml0aWFsaXNlZCkge1xuICAgICAgICAgICAgdGhpcy5fb25SZXNpemUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfb25SZXNpemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Jlc2V0KCk7XG4gICAgICAgIGlmICh0aGlzLnNob3VsZE92ZXJmbG93KSB7XG4gICAgICAgICAgICB0aGlzLl9jb2xsYXBzZUl0ZW1zKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8vIHNob3VsZE92ZXJmbG93IGl0ZW1zXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jb2xsYXBzZUl0ZW1zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9ncm91cGVkQ29sbGVjdGlvbiA9IHRoaXMuX2dldEdyb3VwZWRDb2xsZWN0aW9uKCk7XG4gICAgICAgIHRoaXMuX2dyb3VwZWRDb2xsZWN0aW9uUHJpb3JpdHkgPSB0aGlzLl9nZXRHcm91cGVkQ29sbGVjdGlvblByaW9yaXR5KCk7XG4gICAgICAgIGNvbnN0IF9zb3J0ZWRCeVByaW9yaXR5QW5kR3JvdXBJdGVtcyA9IHRoaXMuX2dldFNvcnRlZEJ5UHJpb3JpdHlBbmRHcm91cEl0ZW1zKCk7XG5cbiAgICAgICAgX3NvcnRlZEJ5UHJpb3JpdHlBbmRHcm91cEl0ZW1zLnJlZHVjZSgoX2NvbnRlbnRXaWR0aCwgdG9vbGJhckl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1XaWR0aCA9IHRoaXMuX2dldEVsZW1lbnRXaWR0aFdpdGhNYXJnaW4odG9vbGJhckl0ZW0pO1xuICAgICAgICAgICAgY29uc3QgaXRlbUdyb3VwID0gdGhpcy5fZ2V0RWxlbWVudEdyb3VwKHRvb2xiYXJJdGVtKTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1Qcmlvcml0eSA9IHRoaXMuX2dldEVsZW1lbnRQcmlvcml0eSh0b29sYmFySXRlbSk7XG4gICAgICAgICAgICBjb25zdCBzaG91bGRJdGVtQmVSZW1vdmVkQnlXaWR0aCA9IHRoaXMuX3Nob3VsZFRvb2xiYXJJdGVtQmVSZW1vdmVkQnlXaWR0aChpdGVtV2lkdGgsIF9jb250ZW50V2lkdGgpO1xuICAgICAgICAgICAgY29uc3Qgc2hvdWxkQWx3YXlzQmVJbk92ZXJmbG93ID0gaXRlbVByaW9yaXR5ID09PSBPdmVyZmxvd1ByaW9yaXR5RW51bS5BTFdBWVMgfHwgdGhpcy5mb3JjZU92ZXJmbG93O1xuICAgICAgICAgICAgY29uc3Qgc2hvdWxkTmV2ZXJCZUluT3ZlcmZsb3cgPSBpdGVtUHJpb3JpdHkgPT09IE92ZXJmbG93UHJpb3JpdHlFbnVtLk5FVkVSO1xuICAgICAgICAgICAgaWYgKChzaG91bGRJdGVtQmVSZW1vdmVkQnlXaWR0aCAmJiAhc2hvdWxkTmV2ZXJCZUluT3ZlcmZsb3cpIHx8IHNob3VsZEFsd2F5c0JlSW5PdmVyZmxvdykge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtR3JvdXApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faGlkZUVsZW1lbnRzRnJvbUN1cnJlbnRHcm91cChpdGVtR3JvdXApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2hpZGVFbGVtZW50V2l0aG91dEdyb3VwKHRvb2xiYXJJdGVtLCBpdGVtUHJpb3JpdHkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gc2hvdWxkQWx3YXlzQmVJbk92ZXJmbG93ID8gX2NvbnRlbnRXaWR0aCA6IE1BWF9DT05URU5UX1NJWkU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX25vcm1hbEVsZW1lbnRzLnB1c2godG9vbGJhckl0ZW0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGVudFdpZHRoICsgaXRlbVdpZHRoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcblxuICAgICAgICB0aGlzLl9jb2xsYXBzZUxhc3RTcGFjZXJFbGVtZW50KHRoaXMuX292ZXJmbG93RWxlbWVudHMsIHRoaXMuX25vcm1hbEVsZW1lbnRzKTtcbiAgICAgICAgdGhpcy5fYWRkVG9vbGJhckl0ZW1Ub092ZXJmbG93KHRoaXMuX292ZXJmbG93RWxlbWVudHMpO1xuICAgICAgICB0aGlzLl9kaXNhcHBlYXJFbGVtZW50cy5mb3JFYWNoKHRoaXMuX3JlbW92ZVRvb2xiYXJJdGVtRnJvbURPTS5iaW5kKHRoaXMpKTtcblxuICAgICAgICB0aGlzLl9ub3JtYWxFbGVtZW50cyA9IFsuLi50aGlzLl9nZXRPcmRlcmVkSXRlbXNGb2xsb3dpbmdRdWVyeSh0aGlzLl9ub3JtYWxFbGVtZW50cyldO1xuICAgICAgICB0aGlzLl9vdmVyZmxvd0VsZW1lbnRzID0gWy4uLnRoaXMuX2dldE9yZGVyZWRJdGVtc0ZvbGxvd2luZ1F1ZXJ5KHRoaXMuX292ZXJmbG93RWxlbWVudHMpXTtcblxuICAgICAgICB0aGlzLnRvb2xiYXJJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB0aGlzLl9jaGFuZ2VJdGVtVmlzaWJpbGl0eVN0YXRlKGl0ZW0uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB0cnVlKSk7XG5cbiAgICAgICAgdGhpcy5fY2hhbmdlT3ZlcmZsb3dWaXNpYmxlU3RhdGUodGhpcy5fb3ZlcmZsb3dFbGVtZW50cy5sZW5ndGggPiAwKTtcblxuICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Nob3VsZFRvb2xiYXJJdGVtQmVSZW1vdmVkQnlXaWR0aChpdGVtV2lkdGg6IG51bWJlciwgY29udGVudFdpZHRoOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGNvbnRlbnRXaWR0aCArIGl0ZW1XaWR0aCA+IHRoaXMuX3Rvb2xiYXJXaWR0aDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldEVsZW1lbnRXaWR0aFdpdGhNYXJnaW4odG9vbGJhckl0ZW06IFRvb2xiYXJJdGVtRGlyZWN0aXZlKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRvb2xiYXJJdGVtLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCAmJiB0b29sYmFySXRlbS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggKyBFTEVNRU5UX01BUkdJTlxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuRm9ySXRlbUNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudG9vbGJhckl0ZW1zLmNoYW5nZXMucGlwZShmaWx0ZXIoKCkgPT4gdGhpcy5zaG91bGRPdmVyZmxvdykpLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9vblJlc2l6ZSgpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldEVsZW1lbnRQcmlvcml0eSh0b29sYmFySXRlbTogVG9vbGJhckl0ZW1EaXJlY3RpdmUpOiBPdmVyZmxvd1ByaW9yaXR5IHtcbiAgICAgICAgY29uc3QgcHJpb3JpdHkgPVxuICAgICAgICAgICAgdG9vbGJhckl0ZW0uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50ICYmIHRvb2xiYXJJdGVtLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hdHRyaWJ1dGVzLmZkT3ZlcmZsb3dQcmlvcml0eTtcblxuICAgICAgICByZXR1cm4gKHByaW9yaXR5ICYmIHByaW9yaXR5LnZhbHVlKSB8fCBPdmVyZmxvd1ByaW9yaXR5RW51bS5ISUdIO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0RWxlbWVudEdyb3VwKHRvb2xiYXJJdGVtOiBUb29sYmFySXRlbURpcmVjdGl2ZSk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGl0ZW1Hcm91cCA9XG4gICAgICAgICAgICB0b29sYmFySXRlbS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgJiYgdG9vbGJhckl0ZW0uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmF0dHJpYnV0ZXMuZmRPdmVyZmxvd0dyb3VwO1xuXG4gICAgICAgIHJldHVybiAoaXRlbUdyb3VwICYmIGl0ZW1Hcm91cC52YWx1ZSkgfHwgMDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2hpZGVFbGVtZW50c0Zyb21DdXJyZW50R3JvdXAoaXRlbUdyb3VwOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbG93ZXN0UHJpb3JpdHlGcm9tR3JvdXAgPSB0aGlzLl9nZXRMb3dlc3RQcmlvcml0eUZyb21Hcm91cChpdGVtR3JvdXApO1xuICAgICAgICBpZiAoIXRoaXMuX2dyb3VwZWRDb2xsZWN0aW9uIHx8ICF0aGlzLl9ncm91cGVkQ29sbGVjdGlvblByaW9yaXR5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGl0ZW1zVG9SZW1vdmUgPSB0aGlzLl9ncm91cGVkQ29sbGVjdGlvbltsb3dlc3RQcmlvcml0eUZyb21Hcm91cF07XG5cbiAgICAgICAgZGVsZXRlIHRoaXMuX2dyb3VwZWRDb2xsZWN0aW9uW2xvd2VzdFByaW9yaXR5RnJvbUdyb3VwXTtcbiAgICAgICAgZGVsZXRlIHRoaXMuX2dyb3VwZWRDb2xsZWN0aW9uUHJpb3JpdHlbbG93ZXN0UHJpb3JpdHlGcm9tR3JvdXBdO1xuXG4gICAgICAgIGlmIChsb3dlc3RQcmlvcml0eUZyb21Hcm91cCAhPT0gaXRlbUdyb3VwKSB7XG4gICAgICAgICAgICBpdGVtc1RvUmVtb3ZlID0gWy4uLml0ZW1zVG9SZW1vdmUsIC4uLnRoaXMuX2dyb3VwZWRDb2xsZWN0aW9uW2l0ZW1Hcm91cF1dO1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2dyb3VwZWRDb2xsZWN0aW9uW2l0ZW1Hcm91cF07XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5fZ3JvdXBlZENvbGxlY3Rpb25Qcmlvcml0eVtpdGVtR3JvdXBdO1xuICAgICAgICB9XG5cbiAgICAgICAgaXRlbXNUb1JlbW92ZT8uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcmVtb3ZlSXRlbUZyb21BcnJheSh0aGlzLl9ub3JtYWxFbGVtZW50cywgaXRlbSk7XG4gICAgICAgICAgICBjb25zdCBpc0Rpc2FwcGVhciA9IHRoaXMuX2dldEVsZW1lbnRQcmlvcml0eShpdGVtKSA9PT0gT3ZlcmZsb3dQcmlvcml0eUVudW0uRElTQVBQRUFSO1xuICAgICAgICAgICAgaWYgKGlzRGlzYXBwZWFyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGlzYXBwZWFyRWxlbWVudHMucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuX292ZXJmbG93RWxlbWVudHMuaW5kZXhPZihpdGVtKSA9PT0gLTEgJiYgIWlzRGlzYXBwZWFyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fb3ZlcmZsb3dFbGVtZW50cy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2hpZGVFbGVtZW50V2l0aG91dEdyb3VwKHRvb2xiYXJJdGVtOiBUb29sYmFySXRlbURpcmVjdGl2ZSwgaXRlbVByaW9yaXR5OiBPdmVyZmxvd1ByaW9yaXR5KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlzRGlzYXBwZWFyID0gaXRlbVByaW9yaXR5ID09PSBPdmVyZmxvd1ByaW9yaXR5RW51bS5ESVNBUFBFQVI7XG4gICAgICAgIGlmIChpc0Rpc2FwcGVhcikge1xuICAgICAgICAgICAgdGhpcy5fZGlzYXBwZWFyRWxlbWVudHMucHVzaCh0b29sYmFySXRlbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9vdmVyZmxvd0VsZW1lbnRzLnB1c2godG9vbGJhckl0ZW0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gU29ydCBieSBncm91cCBhbmQgcHJpb3JpdHkgYW5kIGluaXRpYWwgcG9zaXRpb24gKi9cbiAgICBwcml2YXRlIF9nZXRTb3J0ZWRCeVByaW9yaXR5QW5kR3JvdXBJdGVtcygpOiBUb29sYmFySXRlbURpcmVjdGl2ZVtdIHtcbiAgICAgICAgY29uc3Qgbm90U29ydGVkID0gdGhpcy50b29sYmFySXRlbXMudG9BcnJheSgpLm1hcCgoZWxlbWVudCwgaW5kZXgpID0+ICh7IGVsZW1lbnQsIGluZGV4IH0pKTtcblxuICAgICAgICBjb25zdCBncm91cHMgPSBub3RTb3J0ZWQucmVkdWNlKChnciwgaXRlbSkgPT4ge1xuICAgICAgICAgICAgbGV0IGdyb3VwSWQgPSB0aGlzLl9nZXRFbGVtZW50R3JvdXAoaXRlbS5lbGVtZW50KTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1QcmlvID0gdGhpcy5fZ2V0RWxlbWVudFByaW9yaXR5KGl0ZW0uZWxlbWVudCk7XG4gICAgICAgICAgICBpZiAoaXRlbVByaW8gPT09IE92ZXJmbG93UHJpb3JpdHlFbnVtLk5FVkVSIHx8IGl0ZW1QcmlvID09PSBPdmVyZmxvd1ByaW9yaXR5RW51bS5BTFdBWVMpIHtcbiAgICAgICAgICAgICAgICBncm91cElkID0gMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFncltncm91cElkXSkge1xuICAgICAgICAgICAgICAgIGdyW2dyb3VwSWRdID0gW107XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGdyW2dyb3VwSWRdLnB1c2goaXRlbSk7XG5cbiAgICAgICAgICAgIHJldHVybiBncjtcbiAgICAgICAgfSwge30pO1xuXG4gICAgICAgIGNvbnN0IGdyb3VwSWRzID0gT2JqZWN0LmtleXMoZ3JvdXBzKVxuICAgICAgICAgICAgLm1hcCgoZykgPT4gcGFyc2VJbnQoZywgMTApKVxuICAgICAgICAgICAgLmZpbHRlcigoZykgPT4gZyAhPT0gMCk7XG5cbiAgICAgICAgcmV0dXJuIGdyb3VwSWRzXG4gICAgICAgICAgICAubWFwKChnKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IG1pbkluZGV4ID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7XG4gICAgICAgICAgICAgICAgbGV0IG1heFByaW9yaXR5ID0gMDtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZ3JvdXBzW2ddKSB7XG4gICAgICAgICAgICAgICAgICAgIG1pbkluZGV4ID0gTWF0aC5taW4obWluSW5kZXgsIGl0ZW0uaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICBtYXhQcmlvcml0eSA9IE1hdGgubWF4KFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4UHJpb3JpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICBPVkVSRkxPV19QUklPUklUWV9TQ09SRS5nZXQodGhpcy5fZ2V0RWxlbWVudFByaW9yaXR5KGl0ZW0uZWxlbWVudCkpID8/IC1JbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB7IGdyb3VwOiBncm91cHNbZ10ubWFwKCh7IGVsZW1lbnQgfSkgPT4gZWxlbWVudCksIG1pbkluZGV4LCBtYXhQcmlvcml0eSB9O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jb25jYXQoXG4gICAgICAgICAgICAgICAgIWdyb3Vwc1swXVxuICAgICAgICAgICAgICAgICAgICA/IFtdXG4gICAgICAgICAgICAgICAgICAgIDogZ3JvdXBzWzBdLm1hcCgoaXRlbSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA6IFtpdGVtLmVsZW1lbnRdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhQcmlvcml0eTogT1ZFUkZMT1dfUFJJT1JJVFlfU0NPUkUuZ2V0KHRoaXMuX2dldEVsZW1lbnRQcmlvcml0eShpdGVtLmVsZW1lbnQpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWluSW5kZXg6IGl0ZW0uaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBiLm1heFByaW9yaXR5IC0gYS5tYXhQcmlvcml0eSB8fCBhLm1pbkluZGV4IC0gYi5taW5JbmRleClcbiAgICAgICAgICAgIC5yZWR1Y2UoKGFyciwgaSkgPT4gYXJyLmNvbmNhdChpLmdyb3VwKSwgW10pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEdldCB0aGUgb2JqZWN0IHdpdGggZ3JvdXBlZCBhcnJheXMgb2YgZWxlbWVudHMuICovXG4gICAgcHJpdmF0ZSBfZ2V0R3JvdXBlZENvbGxlY3Rpb24oKTogeyBba2V5OiBudW1iZXJdOiBUb29sYmFySXRlbURpcmVjdGl2ZVtdIH0ge1xuICAgICAgICBjb25zdCBjb2xsZWN0aW9uID1cbiAgICAgICAgICAgICh0aGlzLnRvb2xiYXJJdGVtcyAmJlxuICAgICAgICAgICAgICAgIHRoaXMudG9vbGJhckl0ZW1zLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1QcmlvID0gdGhpcy5fZ2V0RWxlbWVudFByaW9yaXR5KGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbVByaW8gPT09IE92ZXJmbG93UHJpb3JpdHlFbnVtLk5FVkVSIHx8IGl0ZW1QcmlvID09PSBPdmVyZmxvd1ByaW9yaXR5RW51bS5BTFdBWVMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtR3JvdXAgPSB0aGlzLl9nZXRFbGVtZW50R3JvdXAoaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIGFjY1tpdGVtR3JvdXBdICYmIGFjY1tpdGVtR3JvdXBdLmxlbmd0aCA/IGFjY1tpdGVtR3JvdXBdLnB1c2goaXRlbSkgOiAoYWNjW2l0ZW1Hcm91cF0gPSBbaXRlbV0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgICAgfSwge30pKSB8fFxuICAgICAgICAgICAge307XG5cbiAgICAgICAgZGVsZXRlIGNvbGxlY3Rpb25bMF07XG5cbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gR2V0IHRoZSBvYmplY3Qgd2l0aCB0aGUgaGlnaGVzdCBwcmlvcml0eSBmb3IgZWFjaCBncm91cCBvZiBlbGVtZW50cy4gKi9cbiAgICBwcml2YXRlIF9nZXRHcm91cGVkQ29sbGVjdGlvblByaW9yaXR5KCk6IHsgW2tleTogbnVtYmVyXTogT3ZlcmZsb3dQcmlvcml0eSB9IHtcbiAgICAgICAgaWYgKCF0aGlzLl9ncm91cGVkQ29sbGVjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZ3JvdXBzID0gT2JqZWN0LmtleXModGhpcy5fZ3JvdXBlZENvbGxlY3Rpb24pO1xuXG4gICAgICAgIHJldHVybiBncm91cHMucmVkdWNlKChhY2MsIGl0ZW1Hcm91cCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc29ydGVkUHJpb3JpdGllcyA9IHRoaXMuX2dyb3VwZWRDb2xsZWN0aW9uIVtpdGVtR3JvdXBdLm1hcCh0aGlzLl9nZXRFbGVtZW50UHJpb3JpdHkpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigocHJpbykgPT4gcHJpbyAhPT0gT3ZlcmZsb3dQcmlvcml0eUVudW0uQUxXQVlTICYmIHByaW8gIT09IE92ZXJmbG93UHJpb3JpdHlFbnVtLk5FVkVSKVxuICAgICAgICAgICAgICAgIC5zb3J0KHRoaXMuX3NvcnRQcmlvcml0aWVzLmJpbmQodGhpcykpO1xuXG4gICAgICAgICAgICBhY2NbaXRlbUdyb3VwXSA9IHNvcnRlZFByaW9yaXRpZXNbMF07XG5cbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIHt9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBHZXQgZ3JvdXAgbnVtYmVyIHdpdGggdGhlIGxvd2VzdCBwcmlvcml0eS5cbiAgICAgKiAgVXNlcyBmb3IgZGV0ZWN0aW5nIGEgZ3JvdXAgb2YgZWxlbWVudHMgd2hpY2ggd291bGQgYmUgaGlkZGVuIGZyb20gdGhlIHRvb2xiYXIuXG4gICAgICogICovXG4gICAgcHJpdmF0ZSBfZ2V0TG93ZXN0UHJpb3JpdHlGcm9tR3JvdXAoaXRlbUdyb3VwOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBwcmlvcml0eSA9IHRoaXMuX2dyb3VwZWRDb2xsZWN0aW9uUHJpb3JpdHk7XG4gICAgICAgIGlmICghcHJpb3JpdHkgfHwgIU9WRVJGTE9XX1BSSU9SSVRZX1NDT1JFLmdldChwcmlvcml0eVtpdGVtR3JvdXBdKSkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1Hcm91cDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGdyb3VwcyA9IE9iamVjdC5rZXlzKHByaW9yaXR5KTtcblxuICAgICAgICByZXR1cm4gZ3JvdXBzLnJlZHVjZSgobG93ZXN0R3JvdXAsIGN1cnJlbnRHcm91cCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbG93ZXN0R3JvdXBQcmlvcml0eSA9IHByaW9yaXR5W2xvd2VzdEdyb3VwXTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRHcm91cFByaW9yaXR5ID0gcHJpb3JpdHlbY3VycmVudEdyb3VwXTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBPVkVSRkxPV19QUklPUklUWV9TQ09SRS5nZXQoY3VycmVudEdyb3VwUHJpb3JpdHkpISA8IE9WRVJGTE9XX1BSSU9SSVRZX1NDT1JFLmdldChsb3dlc3RHcm91cFByaW9yaXR5KSFcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiArY3VycmVudEdyb3VwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbG93ZXN0R3JvdXA7XG4gICAgICAgIH0sIGl0ZW1Hcm91cCBhcyBudW1iZXIpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVtb3ZlSXRlbUZyb21BcnJheShcbiAgICAgICAgdG9vbGJhckl0ZW1zOiBUb29sYmFySXRlbURpcmVjdGl2ZVtdLFxuICAgICAgICB0b29sYmFySXRlbTogVG9vbGJhckl0ZW1EaXJlY3RpdmVcbiAgICApOiBUb29sYmFySXRlbURpcmVjdGl2ZSB8IG51bGwge1xuICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0b29sYmFySXRlbXMuaW5kZXhPZih0b29sYmFySXRlbSk7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW1JbmRleCA+PSAwID8gdG9vbGJhckl0ZW1zLnNwbGljZShpdGVtSW5kZXgsIDEpWzBdIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3JlbW92ZVRvb2xiYXJJdGVtRnJvbURPTSh0b29sYmFySXRlbTogVG9vbGJhckl0ZW1EaXJlY3RpdmUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRvb2xiYXJJdGVtLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCAmJiB0b29sYmFySXRlbS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgLy8gSUUxMSB3b3JrYXJvdW5kIGVsZW1lbnQucmVtb3ZlKCkgaXMgbm90IHN1cHBvcnRlZFxuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50UmVmKCkubmF0aXZlRWxlbWVudCwgdG9vbGJhckl0ZW0uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYWRkVG9vbGJhckl0ZW1Ub092ZXJmbG93KHRvb2xiYXJJdGVtczogVG9vbGJhckl0ZW1EaXJlY3RpdmVbXSk6IHZvaWQge1xuICAgICAgICB0b29sYmFySXRlbXMuZm9yRWFjaCgoeCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX292ZXJmbG93Qm9keSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX292ZXJmbG93Qm9keS5hcHBlbmRDaGlsZCh4LmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzZXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX25vcm1hbEVsZW1lbnRzLmZvckVhY2godGhpcy5fcmVtb3ZlVG9vbGJhckl0ZW1Gcm9tRE9NLmJpbmQodGhpcykpO1xuICAgICAgICB0aGlzLl9vdmVyZmxvd0VsZW1lbnRzLmZvckVhY2godGhpcy5fcmVtb3ZlVG9vbGJhckl0ZW1Gcm9tRE9NLmJpbmQodGhpcykpO1xuXG4gICAgICAgIGlmICh0aGlzLm92ZXJmbG93U3BhY2VyKSB7XG4gICAgICAgICAgICB0aGlzLnRvb2xiYXJJdGVtcy5tYXAoKHgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5pbnNlcnRCZWZvcmUoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3Rvb2xiYXIsXG4gICAgICAgICAgICAgICAgICAgIHguZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICB0aGlzLm92ZXJmbG93U3BhY2VyLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9vdmVyZmxvd0VsZW1lbnRzID0gW107XG4gICAgICAgIHRoaXMuX25vcm1hbEVsZW1lbnRzID0gW107XG4gICAgICAgIHRoaXMuX2Rpc2FwcGVhckVsZW1lbnRzID0gW107XG5cbiAgICAgICAgdGhpcy5fZ3JvdXBlZENvbGxlY3Rpb24gPSBudWxsO1xuICAgICAgICB0aGlzLl9ncm91cGVkQ29sbGVjdGlvblByaW9yaXR5ID0gbnVsbDtcblxuICAgICAgICB0aGlzLl9jaGFuZ2VPdmVyZmxvd1Zpc2libGVTdGF0ZShmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jaGFuZ2VPdmVyZmxvd1Zpc2libGVTdGF0ZSh2aXNpYmxlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3ZlcmZsb3dWaXNpYmlsaXR5ID0gb2YodmlzaWJsZSkucGlwZShkZWJvdW5jZVRpbWUoMSkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2hhbmdlSXRlbVZpc2liaWxpdHlTdGF0ZShlbGVtZW50OiBIVE1MRWxlbWVudCwgdmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBjb25zdCBmYWRlSW4gPSAnZmQtdG9vbGJhci1mYWRlLWluJztcbiAgICAgICAgY29uc3QgZmFkZU91dCA9ICdmZC10b29sYmFyLWZhZGUtb3V0JztcblxuICAgICAgICBpZiAodmlzaWJsZSkge1xuICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKGZhZGVJbik7XG4gICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoZmFkZU91dCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoZmFkZU91dCk7XG4gICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShmYWRlSW4pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFNvcnQgcHJpb3JpdGllcyBvZiBlbGVtZW50cy9ncm91cHMuICovXG4gICAgcHJpdmF0ZSBfc29ydFByaW9yaXRpZXMoYTogT3ZlcmZsb3dQcmlvcml0eSwgYjogT3ZlcmZsb3dQcmlvcml0eSk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBPVkVSRkxPV19QUklPUklUWV9TQ09SRS5nZXQoYikhIC0gT1ZFUkZMT1dfUFJJT1JJVFlfU0NPUkUuZ2V0KGEpITtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NvbGxhcHNlTGFzdFNwYWNlckVsZW1lbnQoXG4gICAgICAgIG92ZXJmbG93RWxlbWVudHM6IFRvb2xiYXJJdGVtRGlyZWN0aXZlW10sXG4gICAgICAgIG5vcm1hbEVsZW1lbnRzOiBUb29sYmFySXRlbURpcmVjdGl2ZVtdXG4gICAgKTogdm9pZCB7XG4gICAgICAgIGlmICghbm9ybWFsRWxlbWVudHMgfHwgbm9ybWFsRWxlbWVudHMubGVuZ3RoIDwgMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNTcGFjZXIgPSAoZWxlbWVudDogVG9vbGJhckl0ZW1EaXJlY3RpdmUpOiBib29sZWFuID0+XG4gICAgICAgICAgICBlbGVtZW50LmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2ZkLXRvb2xiYXJfX3NwYWNlcicpO1xuXG4gICAgICAgIGxldCBsYXN0SXRlbTogVG9vbGJhckl0ZW1EaXJlY3RpdmUgPSBub3JtYWxFbGVtZW50c1tub3JtYWxFbGVtZW50cy5sZW5ndGggLSAxXTtcblxuICAgICAgICB3aGlsZSAoaXNTcGFjZXIobGFzdEl0ZW0pICYmIG5vcm1hbEVsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIG92ZXJmbG93RWxlbWVudHMucHVzaChub3JtYWxFbGVtZW50cy5wb3AoKSEpO1xuICAgICAgICAgICAgbGFzdEl0ZW0gPSBub3JtYWxFbGVtZW50c1tub3JtYWxFbGVtZW50cy5sZW5ndGggLSAxXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0T3JkZXJlZEl0ZW1zRm9sbG93aW5nUXVlcnkodG9vbGJhckl0ZW1zOiBUb29sYmFySXRlbURpcmVjdGl2ZVtdKTogVG9vbGJhckl0ZW1EaXJlY3RpdmVbXSB7XG4gICAgICAgIGNvbnN0IHF1ZXJ5QXJyYXkgPSB0aGlzLnRvb2xiYXJJdGVtcy50b0FycmF5KCk7XG4gICAgICAgIGNvbnN0IHNvcnRNZXRob2QgPSAoYTogVG9vbGJhckl0ZW1EaXJlY3RpdmUsIGI6IFRvb2xiYXJJdGVtRGlyZWN0aXZlKTogbnVtYmVyID0+XG4gICAgICAgICAgICBxdWVyeUFycmF5LmZpbmRJbmRleCgoX2l0ZW0pID0+IF9pdGVtID09PSBhKSA+IHF1ZXJ5QXJyYXkuZmluZEluZGV4KChfaXRlbSkgPT4gX2l0ZW0gPT09IGIpID8gMSA6IC0xO1xuICAgICAgICByZXR1cm4gdG9vbGJhckl0ZW1zLnNvcnQoc29ydE1ldGhvZCk7XG4gICAgfVxufVxuIiwiPGRpdiAjdG9vbGJhciBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIiBbY2xhc3MuZmQtdG9vbGJhci0tY296eV09XCJfY29udGVudERlbnNpdHlPYnNlcnZlci5pc0NvenkkIHwgYXN5bmNcIj5cbiAgICA8aDQgKm5nSWY9XCJ0aXRsZVwiIGNsYXNzPVwiZmQtdGl0bGUgZmQtdGl0bGUtLWg0IGZkLXRvb2xiYXJfX3RpdGxlXCI+e3sgdGl0bGUgfX08L2g0PlxuXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3VsZE92ZXJmbG93XCI+XG4gICAgICAgIDxzcGFuICNvdmVyZmxvd1NwYWNlciBjbGFzcz1cImZkLXRvb2xiYXJfX3NwYWNlclwiPjwvc3Bhbj5cblxuICAgICAgICA8c3BhbiBjbGFzcz1cImZkLXRvb2xiYXJfX3NlcGFyYXRvclwiICpuZ0lmPVwib3ZlcmZsb3dWaXNpYmlsaXR5IHwgYXN5bmNcIj48L3NwYW4+XG5cbiAgICAgICAgPGZkLXBvcG92ZXIgcGxhY2VtZW50PVwiYm90dG9tLWVuZFwiIFtub0Fycm93XT1cInRydWVcIiBjbGFzcz1cImZkLXBvcG92ZXJcIj5cbiAgICAgICAgICAgIDxmZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm92ZXJmbG93VmlzaWJpbGl0eSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiTW9yZVwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJNb3JlXCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgIGdseXBoPVwib3ZlcmZsb3dcIlxuICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZmQtcG9wb3Zlci1jb250cm9sPlxuXG4gICAgICAgICAgICA8ZmQtcG9wb3Zlci1ib2R5PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZC10b29sYmFyX19vdmVyZmxvd1wiICNvdmVyZmxvd0JvZHk+PC9kaXY+XG4gICAgICAgICAgICA8L2ZkLXBvcG92ZXItYm9keT5cbiAgICAgICAgPC9mZC1wb3BvdmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
|