@fundamental-ngx/platform 0.48.0-rc.8 → 0.48.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/approval-flow/approval-flow-node/approval-flow-node.component.d.ts +0 -2
- package/button/button.component.d.ts +7 -8
- package/dynamic-page/dynamic-page.component.d.ts +24 -15
- package/dynamic-page/dynamic-page.tokens.d.ts +3 -0
- package/dynamic-page/index.d.ts +2 -1
- package/dynamic-page/platform-dynamic-page.interface.d.ts +22 -0
- package/esm2022/approval-flow/approval-flow-add-node/approval-flow-add-node.component.mjs +4 -4
- package/esm2022/approval-flow/approval-flow-approver-details/approval-flow-approver-details.component.mjs +4 -4
- package/esm2022/approval-flow/approval-flow-messages/approval-flow-messages.component.mjs +3 -3
- package/esm2022/approval-flow/approval-flow-node/approval-flow-drop-zone.directive.mjs +3 -3
- package/esm2022/approval-flow/approval-flow-node/approval-flow-node.component.mjs +5 -7
- package/esm2022/approval-flow/approval-flow-select-type/approval-flow-select-type.component.mjs +3 -3
- package/esm2022/approval-flow/approval-flow-team-list/approval-flow-team-list.component.mjs +3 -3
- package/esm2022/approval-flow/approval-flow-toolbar-actions/approval-flow-toolbar-actions.component.mjs +3 -3
- package/esm2022/approval-flow/approval-flow-user-details/approval-flow-user-details.component.mjs +3 -3
- package/esm2022/approval-flow/approval-flow-user-list/approval-flow-user-list.component.mjs +3 -3
- package/esm2022/approval-flow/approval-flow.component.mjs +5 -5
- package/esm2022/approval-flow/approval-flow.module.mjs +4 -4
- package/esm2022/approval-flow/services/approval-flow-add-node-view.service.mjs +3 -3
- package/esm2022/button/button.component.mjs +14 -15
- package/esm2022/button/button.module.mjs +4 -4
- package/esm2022/dynamic-page/directives/dynamic-page-header-subtitle.directive.mjs +3 -3
- package/esm2022/dynamic-page/directives/dynamic-page-header-title.directive.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-content/dynamic-page-content-host.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-content/dynamic-page-content.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-footer/dynamic-page-footer.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-header/actions/global-actions/dynamic-page-global-actions.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-header/actions/layout-actions/dynamic-page-layout-actions.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-header/key-info/dynamic-page-key-info.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-header/title/dynamic-page-title-image.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page-header/title/dynamic-page-title.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page.component.mjs +48 -35
- package/esm2022/dynamic-page/dynamic-page.config.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page.module.mjs +4 -4
- package/esm2022/dynamic-page/dynamic-page.tokens.mjs +3 -0
- package/esm2022/dynamic-page/index.mjs +3 -2
- package/esm2022/dynamic-page/platform-dynamic-page.interface.mjs +2 -0
- package/esm2022/feed-input/feed-input.component.mjs +6 -6
- package/esm2022/feed-input/feed-input.module.mjs +4 -4
- package/esm2022/form/auto-complete/auto-complete.directive.mjs +3 -3
- package/esm2022/form/auto-complete/auto-complete.module.mjs +4 -4
- package/esm2022/form/checkbox/checkbox.component.mjs +11 -43
- package/esm2022/form/checkbox/checkbox.module.mjs +4 -4
- package/esm2022/form/checkbox-group/checkbox-group.component.mjs +21 -63
- package/esm2022/form/checkbox-group/checkbox-group.module.mjs +4 -4
- package/esm2022/form/combobox/combobox/combobox.component.mjs +33 -63
- package/esm2022/form/combobox/combobox-mobile/combobox/combobox-mobile.component.mjs +15 -22
- package/esm2022/form/combobox/combobox-mobile/combobox-mobile.module.mjs +4 -4
- package/esm2022/form/combobox/combobox.config.mjs +3 -3
- package/esm2022/form/combobox/combobox.module.mjs +4 -4
- package/esm2022/form/combobox/commons/base-combobox.mjs +24 -58
- package/esm2022/form/combobox/directives/combobox-item.directive.mjs +15 -15
- package/esm2022/form/date-picker/date-picker.component.mjs +21 -57
- package/esm2022/form/date-picker/date-picker.module.mjs +4 -4
- package/esm2022/form/datetime-picker/datetime-picker.component.mjs +22 -60
- package/esm2022/form/datetime-picker/datetime-picker.module.mjs +4 -4
- package/esm2022/form/form-generator/base-dynamic-form-generator-control.mjs +3 -3
- package/esm2022/form/form-generator/controls/dynamic-form-generator-checkbox/dynamic-form-generator-checkbox.component.mjs +5 -9
- package/esm2022/form/form-generator/controls/dynamic-form-generator-datepicker/dynamic-form-generator-datepicker.component.mjs +5 -9
- package/esm2022/form/form-generator/controls/dynamic-form-generator-editor/dynamic-form-generator-editor.component.mjs +5 -9
- package/esm2022/form/form-generator/controls/dynamic-form-generator-input/dynamic-form-generator-input.component.mjs +5 -9
- package/esm2022/form/form-generator/controls/dynamic-form-generator-multi-input/dynamic-form-generator-multi-input.component.mjs +5 -9
- package/esm2022/form/form-generator/controls/dynamic-form-generator-object-status/dynamic-form-generator-object-status.component.mjs +4 -4
- package/esm2022/form/form-generator/controls/dynamic-form-generator-radio/dynamic-form-generator-radio.component.mjs +5 -9
- package/esm2022/form/form-generator/controls/dynamic-form-generator-select/dynamic-form-generator-select.component.mjs +5 -9
- package/esm2022/form/form-generator/controls/dynamic-form-generator-switch/dynamic-form-generator-switch.component.mjs +5 -9
- package/esm2022/form/form-generator/dynamic-form-control-field.directive.mjs +3 -3
- package/esm2022/form/form-generator/dynamic-form-control.directive.mjs +3 -3
- package/esm2022/form/form-generator/fdp-form-generator.module.mjs +4 -4
- package/esm2022/form/form-generator/form-generator/form-generator.component.mjs +27 -13
- package/esm2022/form/form-generator/form-generator-components-accessor.service.mjs +3 -3
- package/esm2022/form/form-generator/form-generator-field/form-generator-field.component.mjs +3 -3
- package/esm2022/form/form-generator/form-generator.service.mjs +11 -16
- package/esm2022/form/form-generator/interfaces/dynamic-form-item.mjs +1 -1
- package/esm2022/form/form-generator/pipes/get-hint-options.pipe.mjs +3 -3
- package/esm2022/form/form-generator/pipes/get-ordered-form-controls.pipe.mjs +3 -3
- package/esm2022/form/form-group/fdp-form.module.mjs +4 -4
- package/esm2022/form/form-group/form-field/form-field.component.mjs +40 -47
- package/esm2022/form/form-group/form-field-error/form-field-error-description.directive.mjs +3 -3
- package/esm2022/form/form-group/form-field-error/form-field-error-heading.directive.mjs +3 -3
- package/esm2022/form/form-group/form-field-error/form-field-error.directive.mjs +3 -3
- package/esm2022/form/form-group/form-field-extras/form-field-extras.component.mjs +3 -3
- package/esm2022/form/form-group/form-field-group/form-field-group.component.mjs +4 -4
- package/esm2022/form/form-group/form-group-header/form-group-header.component.mjs +3 -3
- package/esm2022/form/form-group/form-group.component.mjs +40 -50
- package/esm2022/form/form-group/pipes/field-group-row-value.pipe.mjs +3 -3
- package/esm2022/form/form-group/services/form-field-layout.service.mjs +3 -3
- package/esm2022/form/input/fdp-input.module.mjs +4 -4
- package/esm2022/form/input/input.component.mjs +16 -48
- package/esm2022/form/input-group/addon-body.component.mjs +4 -5
- package/esm2022/form/input-group/addon.component.mjs +3 -3
- package/esm2022/form/input-group/input-group.component.mjs +13 -46
- package/esm2022/form/input-group/input-group.config.mjs +3 -3
- package/esm2022/form/input-group/input-group.module.mjs +4 -4
- package/esm2022/form/input-group/input.component.mjs +3 -3
- package/esm2022/form/input-message-group-with-template/input-message-group-with-template.component.mjs +3 -3
- package/esm2022/form/multi-combobox/commons/base-multi-combobox.mjs +64 -102
- package/esm2022/form/multi-combobox/multi-combobox/multi-combobox.component.mjs +25 -71
- package/esm2022/form/multi-combobox/multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component.mjs +18 -26
- package/esm2022/form/multi-combobox/multi-combobox-mobile/multi-combobox-mobile.module.mjs +4 -4
- package/esm2022/form/multi-combobox/multi-combobox.config.mjs +3 -3
- package/esm2022/form/multi-combobox/multi-combobox.interface.mjs +1 -1
- package/esm2022/form/multi-combobox/multi-combobox.module.mjs +4 -4
- package/esm2022/form/multi-input/base-multi-input.mjs +43 -83
- package/esm2022/form/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +13 -21
- package/esm2022/form/multi-input/multi-input-mobile/multi-input-mobile.module.mjs +4 -4
- package/esm2022/form/multi-input/multi-input.component.mjs +32 -91
- package/esm2022/form/multi-input/multi-input.config.mjs +3 -3
- package/esm2022/form/multi-input/multi-input.module.mjs +4 -4
- package/esm2022/form/radio-group/radio/radio.component.mjs +12 -44
- package/esm2022/form/radio-group/radio-group.component.mjs +32 -74
- package/esm2022/form/radio-group/radio-group.module.mjs +4 -4
- package/esm2022/form/select/commons/base-select.mjs +59 -101
- package/esm2022/form/select/select/select.component.mjs +17 -60
- package/esm2022/form/select/select.config.mjs +3 -3
- package/esm2022/form/select/select.module.mjs +4 -4
- package/esm2022/form/step-input/base.step-input.mjs +72 -85
- package/esm2022/form/step-input/number/number-step-input.component.mjs +14 -53
- package/esm2022/form/step-input/step-input-action-button.mjs +9 -13
- package/esm2022/form/step-input/step-input-control.directive.mjs +3 -3
- package/esm2022/form/step-input/step-input-decrement.directive.mjs +9 -13
- package/esm2022/form/step-input/step-input-increment.directive.mjs +9 -13
- package/esm2022/form/step-input/step-input.config.mjs +3 -3
- package/esm2022/form/step-input/step-input.module.mjs +4 -4
- package/esm2022/form/switch/switch/switch.component.mjs +12 -49
- package/esm2022/form/switch/switch/switch.config.mjs +3 -3
- package/esm2022/form/switch/switch.module.mjs +4 -4
- package/esm2022/form/text-area/text-area.component.mjs +14 -45
- package/esm2022/form/text-area/text-area.config.mjs +3 -3
- package/esm2022/form/text-area/text-area.module.mjs +4 -4
- package/esm2022/form/time-picker/time-picker.component.mjs +11 -42
- package/esm2022/form/time-picker/time-picker.module.mjs +4 -4
- package/esm2022/fundamental-ngx.module.mjs +4 -4
- package/esm2022/icon-tab-bar/components/closable-icon-tab-bar.class.mjs +6 -6
- package/esm2022/icon-tab-bar/components/icon-tab-bar-base.class.mjs +85 -90
- package/esm2022/icon-tab-bar/components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component.mjs +21 -9
- package/esm2022/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.mjs +26 -9
- package/esm2022/icon-tab-bar/components/icon-tab-bar-process-type/icon-tab-bar-process-type.component.mjs +40 -26
- package/esm2022/icon-tab-bar/components/icon-tab-bar-tab/icon-tab-bar-tab.component.mjs +76 -0
- package/esm2022/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.mjs +28 -16
- package/esm2022/icon-tab-bar/components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component.mjs +14 -5
- package/esm2022/icon-tab-bar/components/popovers/icon-tab-bar-popover-base.class.mjs +3 -3
- package/esm2022/icon-tab-bar/components/popovers/text-type-popover/text-type-popover.component.mjs +5 -5
- package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-container.directive.mjs +12 -21
- package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-item.directive.mjs +10 -12
- package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-list.directive.mjs +10 -11
- package/esm2022/icon-tab-bar/directives/icon-tab-bar-free-content.directive.mjs +14 -0
- package/esm2022/icon-tab-bar/icon-tab-bar.component.mjs +208 -27
- package/esm2022/icon-tab-bar/icon-tab-bar.module.mjs +19 -9
- package/esm2022/icon-tab-bar/index.mjs +3 -1
- package/esm2022/icon-tab-bar/interfaces/tab-config.interface.mjs +1 -1
- package/esm2022/info-label/info-label.component.mjs +6 -4
- package/esm2022/info-label/info-label.module.mjs +4 -4
- package/esm2022/link/link.component.mjs +15 -23
- package/esm2022/link/link.module.mjs +4 -4
- package/esm2022/list/action-list-item/action-list-item.component.mjs +5 -5
- package/esm2022/list/action-list-item/action-list-item.module.mjs +4 -4
- package/esm2022/list/base-list-item.mjs +20 -22
- package/esm2022/list/display-list-item/display-list-item.component.mjs +5 -5
- package/esm2022/list/display-list-item/display-list-item.module.mjs +4 -4
- package/esm2022/list/free-content-list-item/free-content-list-item.component.mjs +5 -5
- package/esm2022/list/list-group-footer.component.mjs +5 -5
- package/esm2022/list/list-group-header.component.mjs +7 -7
- package/esm2022/list/list.component.mjs +25 -66
- package/esm2022/list/list.config.mjs +3 -3
- package/esm2022/list/list.module.mjs +4 -4
- package/esm2022/list/load-more-content.directive.mjs +3 -3
- package/esm2022/list/object-list-item/object-list-item-row.component.mjs +6 -6
- package/esm2022/list/object-list-item/object-list-item.component.mjs +5 -5
- package/esm2022/list/object-list-item/object-list-item.module.mjs +4 -4
- package/esm2022/list/standard-list-item/standard-list-item.component.mjs +5 -5
- package/esm2022/list/standard-list-item/standard-list-item.module.mjs +4 -4
- package/esm2022/menu/menu-item.component.mjs +5 -5
- package/esm2022/menu/menu-trigger.directive.mjs +3 -3
- package/esm2022/menu/menu.component.mjs +5 -6
- package/esm2022/menu/menu.module.mjs +4 -4
- package/esm2022/menu-button/menu-button.component.mjs +14 -9
- package/esm2022/menu-button/menu-button.module.mjs +4 -4
- package/esm2022/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.mjs +11 -14
- package/esm2022/message-popover/components/message-view/message-view.component.mjs +4 -4
- package/esm2022/message-popover/directives/message-popover-form-item.directive.mjs +3 -3
- package/esm2022/message-popover/message-popover.component.mjs +53 -54
- package/esm2022/message-popover/models/message-popover-wrapper.interface.mjs +1 -1
- package/esm2022/message-popover/platform-message-popover.module.mjs +4 -4
- package/esm2022/object-marker/object-marker.component.mjs +10 -5
- package/esm2022/object-marker/object-marker.module.mjs +4 -4
- package/esm2022/object-status/object-status.component.mjs +13 -8
- package/esm2022/object-status/object-status.module.mjs +4 -4
- package/esm2022/page-footer/page-footer.component.mjs +8 -10
- package/esm2022/page-footer/page-footer.module.mjs +4 -4
- package/esm2022/panel/panel-actions.component.mjs +3 -3
- package/esm2022/panel/panel-content/panel-content.component.mjs +3 -3
- package/esm2022/panel/panel.component.mjs +8 -9
- package/esm2022/panel/panel.config.mjs +3 -3
- package/esm2022/panel/panel.module.mjs +4 -4
- package/esm2022/search-field/search-field-mobile/search-field/search-field-mobile.component.mjs +12 -22
- package/esm2022/search-field/search-field.component.mjs +36 -42
- package/esm2022/search-field/search-field.module.mjs +4 -4
- package/esm2022/settings-generator/controls/theme-selector-list/theme-selector-list.component.mjs +6 -6
- package/esm2022/settings-generator/default-config.mjs +2 -2
- package/esm2022/settings-generator/layouts/base-settings-generator-layout.mjs +3 -3
- package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-icon/settings-generator-sidebar-icon.component.mjs +3 -3
- package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component.mjs +3 -3
- package/esm2022/settings-generator/models/settings.model.mjs +1 -1
- package/esm2022/settings-generator/settings-generator-content/settings-generator-content.component.mjs +34 -28
- package/esm2022/settings-generator/settings-generator-content/settings-generator-section/settings-generator-section.component.mjs +4 -5
- package/esm2022/settings-generator/settings-generator-layout-accessor.service.mjs +3 -3
- package/esm2022/settings-generator/settings-generator.component.mjs +6 -6
- package/esm2022/settings-generator/settings-generator.module.mjs +4 -4
- package/esm2022/settings-generator/settings-generator.service.mjs +12 -13
- package/esm2022/shared/base.mjs +30 -18
- package/esm2022/shared/form/base.input.mjs +70 -69
- package/esm2022/shared/form/collection-base.input.mjs +7 -49
- package/esm2022/shared/form/inline-layout-collection-base.input.mjs +25 -66
- package/esm2022/shared/pipes/convert-bytes/convert-bytes.pipe.mjs +3 -3
- package/esm2022/shared/pipes/pipe.module.mjs +4 -4
- package/esm2022/shared/platform.config.mjs +3 -3
- package/esm2022/slider/slider.component.mjs +11 -43
- package/esm2022/slider/slider.module.mjs +4 -4
- package/esm2022/smart-filter-bar/components/smart-filter-bar-condition-field/base-smart-filter-bar-condition-field.mjs +11 -14
- package/esm2022/smart-filter-bar/components/smart-filter-bar-condition-field/smart-filter-bar-condition-field.component.mjs +8 -16
- package/esm2022/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.mjs +6 -6
- package/esm2022/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.mjs +13 -18
- package/esm2022/smart-filter-bar/directives/smart-filter-bar-field-definition.directive.mjs +22 -47
- package/esm2022/smart-filter-bar/directives/smart-filter-bar-subject.directive.mjs +12 -10
- package/esm2022/smart-filter-bar/directives/smart-filter-bar-toolbar-item.directive.mjs +3 -3
- package/esm2022/smart-filter-bar/smart-filter-bar.class.mjs +3 -3
- package/esm2022/smart-filter-bar/smart-filter-bar.component.mjs +73 -57
- package/esm2022/smart-filter-bar/smart-filter-bar.module.mjs +4 -4
- package/esm2022/smart-filter-bar/smart-filter-bar.service.mjs +3 -3
- package/esm2022/split-menu-button/split-menu-button.component.mjs +17 -24
- package/esm2022/split-menu-button/split-menu-button.module.mjs +4 -4
- package/esm2022/table/components/no-data-wrapper/no-data-wrapper.component.mjs +3 -3
- package/esm2022/table/components/reset-button/reset-button.component.mjs +8 -9
- package/esm2022/table/components/table-cell-header-popover/table-cell-header-popover.component.mjs +10 -9
- package/esm2022/table/components/table-column/table-column.component.mjs +3 -3
- package/esm2022/table/components/table-column-resizer/table-column-resizer.component.mjs +11 -14
- package/esm2022/table/components/table-editable-cell/table-editable-cell.component.mjs +4 -4
- package/esm2022/table/components/table-group-row/table-group-row.component.mjs +6 -10
- package/esm2022/table/components/table-header-cell-content/table-header-cell-content.component.mjs +31 -15
- package/esm2022/table/components/table-header-row/table-header-row.component.mjs +19 -24
- package/esm2022/table/components/table-p13-dialog/columns/columns.component.mjs +9 -11
- package/esm2022/table/components/table-p13-dialog/filtering/filter-rule.component.mjs +4 -4
- package/esm2022/table/components/table-p13-dialog/filtering/filtering.component.mjs +8 -11
- package/esm2022/table/components/table-p13-dialog/grouping/grouping.component.mjs +8 -11
- package/esm2022/table/components/table-p13-dialog/sorting/sorting.component.mjs +11 -14
- package/esm2022/table/components/table-p13-dialog/table-p13-columns.component.mjs +3 -3
- package/esm2022/table/components/table-p13-dialog/table-p13-dialog.component.mjs +3 -3
- package/esm2022/table/components/table-p13-dialog/table-p13-filter.component.mjs +3 -3
- package/esm2022/table/components/table-p13-dialog/table-p13-group.component.mjs +3 -3
- package/esm2022/table/components/table-p13-dialog/table-p13-sort.component.mjs +3 -3
- package/esm2022/table/components/table-popping-row/table-popping-row.component.mjs +7 -8
- package/esm2022/table/components/table-row/table-row.component.mjs +12 -17
- package/esm2022/table/components/table-toolbar/table-toolbar-actions.component.mjs +3 -3
- package/esm2022/table/components/table-toolbar/table-toolbar-left-actions.component.mjs +3 -3
- package/esm2022/table/components/table-toolbar/table-toolbar.component.mjs +38 -23
- package/esm2022/table/components/table-view-settings-dialog/filtering/filter-custom.component.mjs +3 -3
- package/esm2022/table/components/table-view-settings-dialog/filtering/filter-multi-select.component.mjs +3 -3
- package/esm2022/table/components/table-view-settings-dialog/filtering/filter-single-select.component.mjs +3 -3
- package/esm2022/table/components/table-view-settings-dialog/filtering/filter-step.component.mjs +4 -4
- package/esm2022/table/components/table-view-settings-dialog/filtering/filters-list-step.component.mjs +4 -4
- package/esm2022/table/components/table-view-settings-dialog/filtering/filters.component.mjs +8 -11
- package/esm2022/table/components/table-view-settings-dialog/grouping/grouping.component.mjs +9 -12
- package/esm2022/table/components/table-view-settings-dialog/sorting/sorting.component.mjs +9 -12
- package/esm2022/table/components/table-view-settings-dialog/table-view-settings-dialog.component.mjs +3 -3
- package/esm2022/table/components/table-view-settings-dialog/table-view-settings-filter.component.mjs +3 -3
- package/esm2022/table/table.component.mjs +138 -62
- package/esm2022/table/table.module.mjs +4 -4
- package/esm2022/table-helpers/directives/platform-table-column-responsive.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-cell-header-popover.directive.mjs +4 -4
- package/esm2022/table-helpers/directives/table-cell-resizable.directive.mjs +20 -23
- package/esm2022/table-helpers/directives/table-cell-selectable.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-cell.directive.mjs +12 -12
- package/esm2022/table-helpers/directives/table-data-source.directive.mjs +10 -9
- package/esm2022/table-helpers/directives/table-draggable.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-header-resizer.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-header.directive.mjs +6 -6
- package/esm2022/table-helpers/directives/table-initial-state.directive.mjs +5 -5
- package/esm2022/table-helpers/directives/table-scrollable.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-view-settings-filter-custom.directive.mjs +3 -3
- package/esm2022/table-helpers/directives/table-virtual-scroll.directive.mjs +3 -3
- package/esm2022/table-helpers/pipes/cell-styles.pipe.mjs +3 -3
- package/esm2022/table-helpers/pipes/column-resizable-side.pipe.mjs +3 -3
- package/esm2022/table-helpers/pipes/column-sorting-direction.pipe.mjs +3 -3
- package/esm2022/table-helpers/pipes/row-classes.pipe.mjs +3 -3
- package/esm2022/table-helpers/pipes/selection-cell-styles.pipe.mjs +3 -3
- package/esm2022/table-helpers/services/table-column-resize.service.mjs +22 -20
- package/esm2022/table-helpers/services/table-responsive.service.mjs +9 -14
- package/esm2022/table-helpers/services/table-row.service.mjs +3 -3
- package/esm2022/table-helpers/services/table-scroll-dispatcher.service.mjs +3 -3
- package/esm2022/table-helpers/services/table.service.mjs +23 -21
- package/esm2022/table-helpers/table-helpers.module.mjs +4 -4
- package/esm2022/table-helpers/table.mjs +1 -1
- package/esm2022/value-help-dialog/components/base-tab/vhd-base-tab.component.mjs +3 -3
- package/esm2022/value-help-dialog/components/define-tab/define-tab.component.mjs +4 -4
- package/esm2022/value-help-dialog/components/select-tab/select-tab.component.mjs +28 -8
- package/esm2022/value-help-dialog/components/value-help-dialog-filter/value-help-dialog-filter.component.mjs +9 -5
- package/esm2022/value-help-dialog/directives/condition-count-message.directive.mjs +3 -3
- package/esm2022/value-help-dialog/directives/value-help-column-def.directive.mjs +24 -0
- package/esm2022/value-help-dialog/directives/value-help-filter-def.directive.mjs +22 -0
- package/esm2022/value-help-dialog/index.mjs +3 -1
- package/esm2022/value-help-dialog/models/vhd-component.model.mjs +3 -0
- package/esm2022/value-help-dialog/models/vhd-filter.model.mjs +1 -1
- package/esm2022/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +59 -32
- package/esm2022/value-help-dialog/value-help-dialog.module.mjs +4 -4
- package/esm2022/variant-management/components/manage-variant-item/manage-variant-item.component.mjs +4 -4
- package/esm2022/variant-management/components/manage-variants-dialog/manage-variants-dialog.component.mjs +6 -6
- package/esm2022/variant-management/components/variant-management-wrapper/variant-management-wrapper.component.mjs +3 -3
- package/esm2022/variant-management/directives/variant-management-dirty-label.directive.mjs +3 -3
- package/esm2022/variant-management/variant-management.component.mjs +47 -13
- package/esm2022/variant-management/variant-management.module.mjs +4 -4
- package/esm2022/wizard-generator/base-wizard-generator.mjs +21 -28
- package/esm2022/wizard-generator/components/dialog-wizard-generator/dialog-wizard-generator.component.mjs +19 -19
- package/esm2022/wizard-generator/components/wizard-body/wizard-body.component.mjs +12 -18
- package/esm2022/wizard-generator/components/wizard-generator/wizard-generator.component.mjs +7 -12
- package/esm2022/wizard-generator/components/wizard-generator-step/wizard-generator-step.component.mjs +11 -10
- package/esm2022/wizard-generator/components/wizard-summary-step/wizard-summary-section/wizard-summary-section.component.mjs +4 -4
- package/esm2022/wizard-generator/components/wizard-summary-step/wizard-summary-step.component.mjs +3 -3
- package/esm2022/wizard-generator/directives/wizard-generator-finish-button.directive.mjs +3 -3
- package/esm2022/wizard-generator/directives/wizard-generator-go-next-button.directive.mjs +3 -3
- package/esm2022/wizard-generator/directives/wizard-generator-review-button.directive.mjs +3 -3
- package/esm2022/wizard-generator/directives/wizard-generator-summary-step.directive.mjs +3 -3
- package/esm2022/wizard-generator/wizard-dialog-generator.service.mjs +3 -3
- package/esm2022/wizard-generator/wizard-generator.module.mjs +4 -4
- package/esm2022/wizard-generator/wizard-generator.service.mjs +3 -3
- package/fesm2022/fundamental-ngx-platform-approval-flow.mjs +42 -44
- package/fesm2022/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-button.mjs +16 -17
- package/fesm2022/fundamental-ngx-platform-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs +88 -130
- package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-feed-input.mjs +9 -9
- package/fesm2022/fundamental-ngx-platform-feed-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-form.mjs +853 -1636
- package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs +532 -220
- package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-info-label.mjs +9 -7
- package/fesm2022/fundamental-ngx-platform-info-label.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-link.mjs +18 -26
- package/fesm2022/fundamental-ngx-platform-link.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-list.mjs +104 -143
- package/fesm2022/fundamental-ngx-platform-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-menu-button.mjs +16 -11
- package/fesm2022/fundamental-ngx-platform-menu-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-menu.mjs +16 -16
- package/fesm2022/fundamental-ngx-platform-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-message-popover.mjs +71 -74
- package/fesm2022/fundamental-ngx-platform-message-popover.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-object-marker.mjs +13 -8
- package/fesm2022/fundamental-ngx-platform-object-marker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-object-status.mjs +16 -11
- package/fesm2022/fundamental-ngx-platform-object-status.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-page-footer.mjs +10 -12
- package/fesm2022/fundamental-ngx-platform-page-footer.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-panel.mjs +19 -20
- package/fesm2022/fundamental-ngx-platform-panel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-search-field.mjs +49 -77
- package/fesm2022/fundamental-ngx-platform-search-field.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-settings-generator.mjs +75 -72
- package/fesm2022/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-shared.mjs +162 -218
- package/fesm2022/fundamental-ngx-platform-shared.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-slider.mjs +12 -44
- package/fesm2022/fundamental-ngx-platform-slider.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +144 -162
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs +20 -27
- package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-table-helpers.mjs +143 -148
- package/fesm2022/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-table.mjs +366 -291
- package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +144 -53
- package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs +63 -30
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs +82 -98
- package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform.mjs +4 -4
- package/form/checkbox/checkbox.component.d.ts +4 -6
- package/form/checkbox-group/checkbox-group.component.d.ts +3 -8
- package/form/combobox/combobox/combobox.component.d.ts +4 -12
- package/form/combobox/combobox-mobile/combobox/combobox-mobile.component.d.ts +5 -8
- package/form/combobox/commons/base-combobox.d.ts +4 -9
- package/form/date-picker/date-picker.component.d.ts +8 -11
- package/form/datetime-picker/datetime-picker.component.d.ts +9 -11
- package/form/form-generator/controls/dynamic-form-generator-checkbox/dynamic-form-generator-checkbox.component.d.ts +0 -2
- package/form/form-generator/controls/dynamic-form-generator-datepicker/dynamic-form-generator-datepicker.component.d.ts +0 -2
- package/form/form-generator/controls/dynamic-form-generator-editor/dynamic-form-generator-editor.component.d.ts +0 -2
- package/form/form-generator/controls/dynamic-form-generator-input/dynamic-form-generator-input.component.d.ts +0 -2
- package/form/form-generator/controls/dynamic-form-generator-multi-input/dynamic-form-generator-multi-input.component.d.ts +0 -2
- package/form/form-generator/controls/dynamic-form-generator-radio/dynamic-form-generator-radio.component.d.ts +0 -2
- package/form/form-generator/controls/dynamic-form-generator-select/dynamic-form-generator-select.component.d.ts +0 -2
- package/form/form-generator/controls/dynamic-form-generator-switch/dynamic-form-generator-switch.component.d.ts +0 -2
- package/form/form-generator/form-generator/form-generator.component.d.ts +3 -1
- package/form/form-generator/form-generator.service.d.ts +3 -7
- package/form/form-generator/interfaces/dynamic-form-item.d.ts +5 -5
- package/form/form-group/form-field/form-field.component.d.ts +16 -20
- package/form/form-group/form-group.component.d.ts +36 -35
- package/form/input/input.component.d.ts +3 -6
- package/form/input-group/addon-body.component.d.ts +0 -1
- package/form/input-group/input-group.component.d.ts +4 -5
- package/form/multi-combobox/commons/base-multi-combobox.d.ts +13 -16
- package/form/multi-combobox/multi-combobox/multi-combobox.component.d.ts +4 -12
- package/form/multi-combobox/multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component.d.ts +6 -9
- package/form/multi-combobox/multi-combobox.interface.d.ts +3 -3
- package/form/multi-input/base-multi-input.d.ts +10 -15
- package/form/multi-input/multi-input-mobile/multi-input-mobile.component.d.ts +5 -8
- package/form/multi-input/multi-input.component.d.ts +7 -37
- package/form/radio-group/radio/radio.component.d.ts +4 -5
- package/form/radio-group/radio-group.component.d.ts +7 -11
- package/form/select/commons/base-select.d.ts +11 -18
- package/form/select/select/select.component.d.ts +2 -15
- package/form/step-input/base.step-input.d.ts +13 -14
- package/form/step-input/number/number-step-input.component.d.ts +2 -7
- package/form/step-input/step-input-action-button.d.ts +4 -7
- package/form/step-input/step-input-decrement.directive.d.ts +2 -5
- package/form/step-input/step-input-increment.directive.d.ts +2 -5
- package/form/switch/switch/switch.component.d.ts +5 -8
- package/form/text-area/text-area.component.d.ts +4 -5
- package/form/time-picker/time-picker.component.d.ts +4 -5
- package/fundamental-ngx-platform-v0.48.0.tgz +0 -0
- package/icon-tab-bar/components/icon-tab-bar-base.class.d.ts +19 -20
- package/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.d.ts +2 -0
- package/icon-tab-bar/components/icon-tab-bar-tab/icon-tab-bar-tab.component.d.ts +45 -0
- package/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.d.ts +1 -3
- package/icon-tab-bar/directives/dnd/icon-bar-dnd-container.directive.d.ts +5 -8
- package/icon-tab-bar/directives/dnd/icon-bar-dnd-item.directive.d.ts +1 -1
- package/icon-tab-bar/directives/dnd/icon-bar-dnd-list.directive.d.ts +1 -1
- package/icon-tab-bar/directives/icon-tab-bar-free-content.directive.d.ts +5 -0
- package/icon-tab-bar/icon-tab-bar.component.d.ts +82 -8
- package/icon-tab-bar/icon-tab-bar.module.d.ts +7 -1
- package/icon-tab-bar/index.d.ts +2 -0
- package/icon-tab-bar/interfaces/tab-config.interface.d.ts +13 -5
- package/info-label/info-label.component.d.ts +2 -2
- package/link/link.component.d.ts +4 -7
- package/list/base-list-item.d.ts +4 -6
- package/list/list.component.d.ts +6 -15
- package/menu-button/menu-button.component.d.ts +7 -4
- package/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.d.ts +2 -4
- package/message-popover/message-popover.component.d.ts +13 -20
- package/message-popover/models/message-popover-wrapper.interface.d.ts +2 -2
- package/object-marker/object-marker.component.d.ts +4 -1
- package/object-status/object-status.component.d.ts +4 -1
- package/package.json +4 -4
- package/page-footer/page-footer.component.d.ts +2 -4
- package/panel/panel.component.d.ts +2 -3
- package/search-field/search-field-mobile/search-field/search-field-mobile.component.d.ts +7 -10
- package/search-field/search-field.component.d.ts +10 -19
- package/settings-generator/models/settings.model.d.ts +7 -6
- package/settings-generator/settings-generator-content/settings-generator-content.component.d.ts +31 -12
- package/settings-generator/settings-generator-content/settings-generator-section/settings-generator-section.component.d.ts +0 -2
- package/settings-generator/settings-generator.component.d.ts +3 -3
- package/settings-generator/settings-generator.service.d.ts +1 -1
- package/shared/base.d.ts +11 -4
- package/shared/form/base.input.d.ts +24 -16
- package/shared/form/collection-base.input.d.ts +1 -9
- package/shared/form/inline-layout-collection-base.input.d.ts +5 -12
- package/slider/slider.component.d.ts +3 -6
- package/smart-filter-bar/components/smart-filter-bar-condition-field/base-smart-filter-bar-condition-field.d.ts +3 -5
- package/smart-filter-bar/components/smart-filter-bar-condition-field/smart-filter-bar-condition-field.component.d.ts +0 -5
- package/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.d.ts +4 -8
- package/smart-filter-bar/directives/smart-filter-bar-field-definition.directive.d.ts +8 -17
- package/smart-filter-bar/directives/smart-filter-bar-subject.directive.d.ts +2 -0
- package/smart-filter-bar/smart-filter-bar.component.d.ts +28 -22
- package/split-menu-button/split-menu-button.component.d.ts +11 -14
- package/table/components/reset-button/reset-button.component.d.ts +2 -3
- package/table/components/table-cell-header-popover/table-cell-header-popover.component.d.ts +4 -3
- package/table/components/table-column-resizer/table-column-resizer.component.d.ts +4 -5
- package/table/components/table-group-row/table-group-row.component.d.ts +2 -5
- package/table/components/table-header-cell-content/table-header-cell-content.component.d.ts +11 -6
- package/table/components/table-header-row/table-header-row.component.d.ts +1 -3
- package/table/components/table-p13-dialog/columns/columns.component.d.ts +2 -4
- package/table/components/table-p13-dialog/filtering/filtering.component.d.ts +1 -4
- package/table/components/table-p13-dialog/grouping/grouping.component.d.ts +1 -4
- package/table/components/table-p13-dialog/sorting/sorting.component.d.ts +1 -4
- package/table/components/table-row/table-row.component.d.ts +2 -2
- package/table/components/table-toolbar/table-toolbar.component.d.ts +24 -8
- package/table/components/table-view-settings-dialog/filtering/filters.component.d.ts +1 -4
- package/table/components/table-view-settings-dialog/grouping/grouping.component.d.ts +1 -4
- package/table/components/table-view-settings-dialog/sorting/sorting.component.d.ts +1 -4
- package/table/table.component.d.ts +29 -19
- package/table-helpers/directives/table-cell-header-popover.directive.d.ts +2 -3
- package/table-helpers/directives/table-cell-resizable.directive.d.ts +1 -3
- package/table-helpers/directives/table-data-source.directive.d.ts +1 -1
- package/table-helpers/services/table-column-resize.service.d.ts +4 -2
- package/table-helpers/services/table-responsive.service.d.ts +3 -5
- package/table-helpers/services/table.service.d.ts +12 -10
- package/table-helpers/table.d.ts +1 -0
- package/value-help-dialog/components/select-tab/select-tab.component.d.ts +9 -2
- package/value-help-dialog/components/value-help-dialog-filter/value-help-dialog-filter.component.d.ts +5 -1
- package/value-help-dialog/directives/value-help-column-def.directive.d.ts +17 -0
- package/value-help-dialog/directives/value-help-filter-def.directive.d.ts +15 -0
- package/value-help-dialog/index.d.ts +2 -0
- package/value-help-dialog/models/vhd-component.model.d.ts +5 -0
- package/value-help-dialog/models/vhd-filter.model.d.ts +3 -0
- package/value-help-dialog/value-help-dialog/value-help-dialog.component.d.ts +14 -7
- package/variant-management/variant-management.component.d.ts +19 -6
- package/wizard-generator/base-wizard-generator.d.ts +9 -12
- package/wizard-generator/components/dialog-wizard-generator/dialog-wizard-generator.component.d.ts +2 -3
- package/wizard-generator/components/wizard-body/wizard-body.component.d.ts +3 -7
- package/wizard-generator/components/wizard-generator/wizard-generator.component.d.ts +1 -4
- package/wizard-generator/components/wizard-generator-step/wizard-generator-step.component.d.ts +1 -1
- package/dynamic-page/dynamic-page.service.d.ts +0 -35
- package/esm2022/dynamic-page/dynamic-page.service.mjs +0 -58
- package/esm2022/search-field/search-field-mobile/search-field-mobile.module.mjs +0 -16
- package/fundamental-ngx-platform-v0.48.0-rc.8.tgz +0 -0
- package/search-field/search-field-mobile/search-field-mobile.module.d.ts +0 -7
|
@@ -1,46 +1,52 @@
|
|
|
1
|
-
import { ChangeDetectorRef, Directive, EventEmitter, Input, isDevMode, NgZone, Output, ViewChild } from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import { take, takeUntil } from 'rxjs/operators';
|
|
1
|
+
import { ChangeDetectorRef, DestroyRef, Directive, ElementRef, EventEmitter, inject, Input, isDevMode, NgZone, Output, signal, ViewChild } from '@angular/core';
|
|
2
|
+
import { take } from 'rxjs/operators';
|
|
4
3
|
import { DOWN_ARROW, ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';
|
|
4
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
5
5
|
import { KeyUtil, OverflowListDirective } from '@fundamental-ngx/cdk/utils';
|
|
6
|
+
import { FD_DYNAMIC_PAGE } from '@fundamental-ngx/core/dynamic-page';
|
|
6
7
|
import { cloneDeep } from 'lodash-es';
|
|
7
|
-
import { ICON_TAB_HIDDEN_CLASS_NAME
|
|
8
|
+
import { ICON_TAB_HIDDEN_CLASS_NAME } from '../constants';
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
10
|
export class IconTabBarBase {
|
|
10
|
-
|
|
11
|
-
* @description densityMode setter triggers tabs to re-calculation overflowed tabs
|
|
12
|
-
*/
|
|
13
|
-
set densityMode(value) {
|
|
14
|
-
// Skip first value && value doesn't equal to previous one
|
|
15
|
-
if (this._densityMode && value !== this._densityMode) {
|
|
16
|
-
this._triggerRecalculationVisibleItems();
|
|
17
|
-
}
|
|
18
|
-
this._densityMode = value;
|
|
19
|
-
}
|
|
20
|
-
/** @hidden */
|
|
21
|
-
constructor(_cd, _ngZone) {
|
|
22
|
-
this._cd = _cd;
|
|
23
|
-
this._ngZone = _ngZone;
|
|
11
|
+
constructor() {
|
|
24
12
|
/**
|
|
25
13
|
* @description A tab bar configuration that stores the state of each tab. Based on this configuration, a tab bar is representing.
|
|
26
14
|
*/
|
|
27
|
-
this.
|
|
15
|
+
this.tabs = [];
|
|
28
16
|
/**
|
|
29
17
|
* @description Emits when some tab is selected.
|
|
30
18
|
*/
|
|
31
19
|
this.selected = new EventEmitter();
|
|
20
|
+
/** Emits when selected tab Unique ID changes. */
|
|
21
|
+
this.selectedUidChange = new EventEmitter();
|
|
22
|
+
/** @hidden */
|
|
23
|
+
this._extraTabs$ = signal([]);
|
|
32
24
|
/** @hidden */
|
|
33
|
-
this.
|
|
25
|
+
this._extraItems$ = signal(false);
|
|
34
26
|
/** @hidden */
|
|
35
|
-
this.
|
|
27
|
+
this._inDynamicPage = !!inject(FD_DYNAMIC_PAGE, { optional: true });
|
|
36
28
|
/** @hidden */
|
|
37
|
-
this.
|
|
29
|
+
this._cd = inject(ChangeDetectorRef);
|
|
30
|
+
/** @Hidden */
|
|
31
|
+
this._ngZone = inject(NgZone);
|
|
32
|
+
/** @hidden */
|
|
33
|
+
this._destroyRef = inject(DestroyRef);
|
|
38
34
|
/** @hidden */
|
|
39
35
|
this._destroyed = false;
|
|
40
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* @description densityMode setter triggers tabs to re-calculation overflowed tabs
|
|
39
|
+
*/
|
|
40
|
+
set densityMode(value) {
|
|
41
|
+
// Skip first value && value doesn't equal to previous one
|
|
42
|
+
if (this._densityMode && value !== this._densityMode) {
|
|
43
|
+
this._triggerRecalculationVisibleItems();
|
|
44
|
+
}
|
|
45
|
+
this._densityMode = value;
|
|
46
|
+
}
|
|
41
47
|
/** @hidden */
|
|
42
48
|
ngOnChanges(changes) {
|
|
43
|
-
if (changes.
|
|
49
|
+
if (changes.tabs && !changes.tabs.firstChange) {
|
|
44
50
|
this._initTabs();
|
|
45
51
|
this._triggerRecalculationVisibleItems();
|
|
46
52
|
return;
|
|
@@ -59,8 +65,6 @@ export class IconTabBarBase {
|
|
|
59
65
|
}
|
|
60
66
|
/** @hidden */
|
|
61
67
|
ngOnDestroy() {
|
|
62
|
-
this._onDestroy$.next();
|
|
63
|
-
this._onDestroy$.complete();
|
|
64
68
|
this._destroyed = true;
|
|
65
69
|
}
|
|
66
70
|
/**
|
|
@@ -70,7 +74,8 @@ export class IconTabBarBase {
|
|
|
70
74
|
*/
|
|
71
75
|
_selectItem(selectedItem, event) {
|
|
72
76
|
event?.stopPropagation();
|
|
73
|
-
this.
|
|
77
|
+
this.selectedUid = selectedItem.uId;
|
|
78
|
+
this.selectedUidChange.emit(this.selectedUid);
|
|
74
79
|
selectedItem.badge = false;
|
|
75
80
|
this.selected.emit(selectedItem);
|
|
76
81
|
}
|
|
@@ -91,14 +96,14 @@ export class IconTabBarBase {
|
|
|
91
96
|
}
|
|
92
97
|
/** @hidden focuses next tab */
|
|
93
98
|
_focusNextItem(currentIndex) {
|
|
94
|
-
const nextIndex = currentIndex === this.
|
|
99
|
+
const nextIndex = currentIndex === this.tabs.length - 1 ? 0 : currentIndex + 1;
|
|
95
100
|
this._focusItem(nextIndex);
|
|
96
101
|
}
|
|
97
102
|
/** @hidden focuses previous tab */
|
|
98
103
|
_focusPreviousItem(currentIndex) {
|
|
99
104
|
if (currentIndex === 0) {
|
|
100
105
|
// if current focused element is first, focus the last one. If tabs are overflowed, focus the last tab in the popover
|
|
101
|
-
this._focusItem(this.
|
|
106
|
+
this._focusItem(this.tabs.length - 1, true);
|
|
102
107
|
}
|
|
103
108
|
else {
|
|
104
109
|
this._focusItem(currentIndex - 1);
|
|
@@ -123,15 +128,18 @@ export class IconTabBarBase {
|
|
|
123
128
|
* @description select extra item inside popover
|
|
124
129
|
*/
|
|
125
130
|
_selectExtraItem(selectedItem) {
|
|
126
|
-
const
|
|
127
|
-
|
|
131
|
+
const tabs = [...this.tabs];
|
|
132
|
+
const deletedItem = tabs.splice(this._lastVisibleTabIndex, 1, selectedItem)[0];
|
|
133
|
+
tabs.splice(selectedItem.index, 1, deletedItem);
|
|
134
|
+
this.tabs = tabs;
|
|
135
|
+
const extraTabs = [...this._extraTabs$()];
|
|
128
136
|
deletedItem.index = selectedItem.index;
|
|
129
137
|
deletedItem.uId = `${deletedItem.index}`;
|
|
130
138
|
const itemToPopover = cloneDeep(deletedItem);
|
|
131
139
|
deletedItem.hidden = true;
|
|
132
140
|
deletedItem.cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);
|
|
133
141
|
let indexInExtraItems;
|
|
134
|
-
this._extraTabs.forEach((item, index) => {
|
|
142
|
+
this._extraTabs$().forEach((item, index) => {
|
|
135
143
|
if (item.index === selectedItem.index) {
|
|
136
144
|
indexInExtraItems = index;
|
|
137
145
|
}
|
|
@@ -142,8 +150,8 @@ export class IconTabBarBase {
|
|
|
142
150
|
if (selectedItem.color) {
|
|
143
151
|
selectedItem.cssClasses = [`fd-icon-tab-bar__item--${selectedItem.color}`];
|
|
144
152
|
}
|
|
145
|
-
|
|
146
|
-
this._extraTabs
|
|
153
|
+
extraTabs.splice(indexInExtraItems, 1, itemToPopover);
|
|
154
|
+
this._extraTabs$.set(extraTabs);
|
|
147
155
|
this._selectItem(selectedItem);
|
|
148
156
|
this._triggerRecalculationVisibleItems();
|
|
149
157
|
this._focusItem(this._lastVisibleTabIndex);
|
|
@@ -154,19 +162,23 @@ export class IconTabBarBase {
|
|
|
154
162
|
* @description recalculate _nextSteps and _prevSteps array if we have extra items
|
|
155
163
|
*/
|
|
156
164
|
_recalculateVisibleItems(extraItems) {
|
|
157
|
-
this.
|
|
158
|
-
this.
|
|
165
|
+
this._extraItems$.set(extraItems > 0);
|
|
166
|
+
this._cd.detectChanges();
|
|
167
|
+
const tabs = [...this.tabs];
|
|
168
|
+
const extraTabs = [];
|
|
169
|
+
this._lastVisibleTabIndex = tabs.length - 1 - extraItems;
|
|
170
|
+
tabs.forEach((item) => {
|
|
159
171
|
item.hidden = false;
|
|
160
172
|
item.cssClasses = item.cssClasses.filter((cssClass) => cssClass !== ICON_TAB_HIDDEN_CLASS_NAME);
|
|
161
173
|
});
|
|
162
|
-
this.
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
this._extraTabs.push(cloneDeep(tab));
|
|
174
|
+
for (let i = this._lastVisibleTabIndex + 1; i < tabs.length; i++) {
|
|
175
|
+
const tab = tabs[i];
|
|
176
|
+
extraTabs.push(cloneDeep(tab));
|
|
166
177
|
tab.hidden = true;
|
|
167
178
|
tab.cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);
|
|
168
179
|
}
|
|
169
|
-
this.
|
|
180
|
+
this._extraTabs$.set(extraTabs);
|
|
181
|
+
this._cd.detectChanges();
|
|
170
182
|
}
|
|
171
183
|
/**
|
|
172
184
|
* @hidden
|
|
@@ -188,7 +200,7 @@ export class IconTabBarBase {
|
|
|
188
200
|
* @description trigger recalculation items, need to do it asynchronously after dom was rerendered
|
|
189
201
|
*/
|
|
190
202
|
_triggerRecalculationVisibleItems() {
|
|
191
|
-
this._ngZone.onMicrotaskEmpty.pipe(take(1),
|
|
203
|
+
this._ngZone.onMicrotaskEmpty.pipe(take(1), takeUntilDestroyed(this._destroyRef)).subscribe(() => {
|
|
192
204
|
if (this.overflowDirective && !this._destroyed) {
|
|
193
205
|
const extra = this.overflowDirective.getAmountOfExtraItems();
|
|
194
206
|
this._recalculateVisibleItems(extra);
|
|
@@ -201,60 +213,36 @@ export class IconTabBarBase {
|
|
|
201
213
|
* @description initialize state of tabs
|
|
202
214
|
*/
|
|
203
215
|
_initTabs() {
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
this.
|
|
207
|
-
|
|
216
|
+
const selectedItem = this._findActiveTabId(this.tabs) || this.tabs[0];
|
|
217
|
+
this.selectedUid = selectedItem?.uId;
|
|
218
|
+
this._lastVisibleTabIndex = this.tabs.length - 1;
|
|
219
|
+
if (selectedItem) {
|
|
220
|
+
this.selectedUidChange.emit(this.selectedUid);
|
|
221
|
+
this.selected.emit(selectedItem);
|
|
222
|
+
}
|
|
208
223
|
}
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
return config.map((item, index) => {
|
|
216
|
-
const result = {
|
|
217
|
-
...item,
|
|
218
|
-
index,
|
|
219
|
-
cssClasses: [],
|
|
220
|
-
uId: index.toString(),
|
|
221
|
-
hidden: false,
|
|
222
|
-
subItems: undefined,
|
|
223
|
-
flatIndex: flatIndexRef.value++
|
|
224
|
-
};
|
|
225
|
-
if (item.color) {
|
|
226
|
-
result.cssClasses = [`fd-icon-tab-bar__item--${item.color}`];
|
|
224
|
+
_findActiveTabId(tabs) {
|
|
225
|
+
let activeTab;
|
|
226
|
+
for (const tab of tabs) {
|
|
227
|
+
if (tab.active) {
|
|
228
|
+
activeTab = tab;
|
|
229
|
+
break;
|
|
227
230
|
}
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
}
|
|
234
|
-
/** @hidden */
|
|
235
|
-
_generateSubItems(subItems, parent, flatIndexRef) {
|
|
236
|
-
return subItems?.map((item, index) => {
|
|
237
|
-
const result = {
|
|
238
|
-
...item,
|
|
239
|
-
index,
|
|
240
|
-
uId: `${parent.uId}${UNIQUE_KEY_SEPARATOR}${index}`,
|
|
241
|
-
cssClasses: [],
|
|
242
|
-
subItems: undefined,
|
|
243
|
-
flatIndex: flatIndexRef.value++,
|
|
244
|
-
parentUId: parent.uId
|
|
245
|
-
};
|
|
246
|
-
if (Array.isArray(item.subItems) && item.subItems.length) {
|
|
247
|
-
result.subItems = this._generateSubItems(item.subItems, result, flatIndexRef);
|
|
231
|
+
else if (tab.subItems) {
|
|
232
|
+
activeTab = this._findActiveTabId(tab.subItems);
|
|
233
|
+
if (activeTab) {
|
|
234
|
+
break;
|
|
235
|
+
}
|
|
248
236
|
}
|
|
249
|
-
|
|
250
|
-
|
|
237
|
+
}
|
|
238
|
+
return activeTab;
|
|
251
239
|
}
|
|
252
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.
|
|
253
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.
|
|
240
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: IconTabBarBase, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
241
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.8", type: IconTabBarBase, inputs: { tabs: "tabs", isRtl: "isRtl", colorAssociations: "colorAssociations", densityMode: "densityMode", selectedUid: "selectedUid" }, outputs: { selected: "selected", selectedUidChange: "selectedUidChange" }, viewQueries: [{ propertyName: "overflowDirective", first: true, predicate: OverflowListDirective, descendants: true }, { propertyName: "headerElement", first: true, predicate: ["tablist"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0 }); }
|
|
254
242
|
}
|
|
255
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.
|
|
243
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: IconTabBarBase, decorators: [{
|
|
256
244
|
type: Directive
|
|
257
|
-
}],
|
|
245
|
+
}], propDecorators: { tabs: [{
|
|
258
246
|
type: Input
|
|
259
247
|
}], isRtl: [{
|
|
260
248
|
type: Input
|
|
@@ -262,10 +250,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImpor
|
|
|
262
250
|
type: Input
|
|
263
251
|
}], densityMode: [{
|
|
264
252
|
type: Input
|
|
253
|
+
}], selectedUid: [{
|
|
254
|
+
type: Input
|
|
265
255
|
}], selected: [{
|
|
266
256
|
type: Output
|
|
257
|
+
}], selectedUidChange: [{
|
|
258
|
+
type: Output
|
|
267
259
|
}], overflowDirective: [{
|
|
268
260
|
type: ViewChild,
|
|
269
261
|
args: [OverflowListDirective]
|
|
262
|
+
}], headerElement: [{
|
|
263
|
+
type: ViewChild,
|
|
264
|
+
args: ['tablist', { read: ElementRef }]
|
|
270
265
|
}] } });
|
|
271
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi10YWItYmFyLWJhc2UuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2ljb24tdGFiLWJhci9jb21wb25lbnRzL2ljb24tdGFiLWJhci1iYXNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFJTixNQUFNLEVBR04sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRyxPQUFPLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBUWhGLE1BQU0sT0FBZ0IsY0FBYztJQTRCaEM7O09BRUc7SUFDSCxJQUNJLFdBQVcsQ0FBQyxLQUFxQjtRQUNqQywwREFBMEQ7UUFDMUQsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2xELElBQUksQ0FBQyxpQ0FBaUMsRUFBRSxDQUFDO1NBQzVDO1FBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQW1DRCxjQUFjO0lBQ2QsWUFDYyxHQUFzQixFQUN0QixPQUFlO1FBRGYs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RyxLQUFLLEVBQUU7Z0JBQ25ELFVBQVUsRUFBRSxFQUFFO2dCQUNkLFFBQVEsRUFBRSxTQUFTO2dCQUNuQixTQUFTLEVBQUUsWUFBWSxDQUFDLEtBQUssRUFBRTtnQkFDL0IsU0FBUyxFQUFFLE1BQU0sQ0FBQyxHQUFHO2FBQ3hCLENBQUM7WUFDRixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUN0RCxNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQzthQUNqRjtZQUNELE9BQU8sTUFBTSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs4R0FyVGlCLGNBQWM7a0dBQWQsY0FBYywwT0FpRHJCLHFCQUFxQjs7MkZBakRkLGNBQWM7a0JBRG5DLFNBQVM7MkdBY04sVUFBVTtzQkFEVCxLQUFLO2dCQU9OLEtBQUs7c0JBREosS0FBSztnQkFRTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBT0YsV0FBVztzQkFEZCxLQUFLO2dCQWFOLFFBQVE7c0JBRFAsTUFBTTtnQkFPUCxpQkFBaUI7c0JBRGhCLFNBQVM7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBpc0Rldk1vZGUsXG4gICAgTmdab25lLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IERPV05fQVJST1csIEVOVEVSLCBMRUZUX0FSUk9XLCBSSUdIVF9BUlJPVywgU1BBQ0UsIFVQX0FSUk9XIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IEtleVV0aWwsIE92ZXJmbG93TGlzdERpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBJQ09OX1RBQl9ISURERU5fQ0xBU1NfTkFNRSwgVU5JUVVFX0tFWV9TRVBBUkFUT1IgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgSWNvblRhYkJhckl0ZW0gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2ljb24tdGFiLWJhci1pdGVtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUYWJDb2xvckFzc29jaWF0aW9ucyB9IGZyb20gJy4uL2ludGVyZmFjZXMvdGFiLWNvbG9yLWFzc29jaWF0aW9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVGFiQ29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90YWItY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUYWJEZXN0aW55TW9kZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IEljb25UYWJCYXJQb3BvdmVyQmFzZSB9IGZyb20gJy4vcG9wb3ZlcnMvaWNvbi10YWItYmFyLXBvcG92ZXItYmFzZS5jbGFzcyc7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEljb25UYWJCYXJCYXNlIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIExpc3Qgb2YgdGFiIGVsZW1lbnRzLCB0aGF0IGNhbiByZWNlaXZlIGZvY3VzLlxuICAgICAqIFRoZXJlJ3MgYSBzZXBhcmF0ZSBtYXBwaW5nIGZ1bmN0aW9uIHRvIGdldCBhY3R1YWwgaHRtbCBlbGVtZW50OiBgX2dldFRhYlVJRWxlbWVudEZvY3VzYWJsZWBcbiAgICAgKi9cbiAgICBhYnN0cmFjdCBfdGFiVUlFbGVtZW50czogUXVlcnlMaXN0PHVua25vd24+O1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgYWJzdHJhY3QgX3RhYkJhclBvcG92ZXI6IEljb25UYWJCYXJQb3BvdmVyQmFzZTtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQSB0YWIgYmFyIGNvbmZpZ3VyYXRpb24gdGhhdCBzdG9yZXMgdGhlIHN0YXRlIG9mIGVhY2ggdGFiLiBCYXNlZCBvbiB0aGlzIGNvbmZpZ3VyYXRpb24sIGEgdGFiIGJhciBpcyByZXByZXNlbnRpbmcuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB0YWJzQ29uZmlnOiBUYWJDb25maWdbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEZsYWcgcmVwcmVzZW50aW5nIHJ0bCBtb2RlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBpc1J0bDogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBc3NvY2lhdGlvbnMgZm9yIGNvbG9ycyBvZiB0aGUgdGFicy5cbiAgICAgKiBJZiBhbnkgb2YgdGhlIGNvbG9yIGFzc29jaWF0aW9ucyBwcm92aWRlZCwgdGhleSdsbCBiZSByZWFkIGJ5IHNjcmVlbnJlYWRlciBpbnN0ZWFkIG9mIHRoZSBhY3R1YWwgY29sb3JcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbG9yQXNzb2NpYXRpb25zOiBUYWJDb2xvckFzc29jaWF0aW9ucztcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBkZW5zaXR5TW9kZSBzZXR0ZXIgdHJpZ2dlcnMgdGFicyB0byByZS1jYWxjdWxhdGlvbiBvdmVyZmxvd2VkIHRhYnNcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBkZW5zaXR5TW9kZSh2YWx1ZTogVGFiRGVzdGlueU1vZGUpIHtcbiAgICAgICAgLy8gU2tpcCBmaXJzdCB2YWx1ZSAmJiB2YWx1ZSBkb2Vzbid0IGVxdWFsIHRvIHByZXZpb3VzIG9uZVxuICAgICAgICBpZiAodGhpcy5fZGVuc2l0eU1vZGUgJiYgdmFsdWUgIT09IHRoaXMuX2RlbnNpdHlNb2RlKSB7XG4gICAgICAgICAgICB0aGlzLl90cmlnZ2VyUmVjYWxjdWxhdGlvblZpc2libGVJdGVtcygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2RlbnNpdHlNb2RlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEVtaXRzIHdoZW4gc29tZSB0YWIgaXMgc2VsZWN0ZWQuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgc2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxJY29uVGFiQmFySXRlbT4gPSBuZXcgRXZlbnRFbWl0dGVyPEljb25UYWJCYXJJdGVtPigpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlZmVyZW5jZSB0byBPdmVyZmxvd0xpc3REaXJlY3RpdmVcbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKE92ZXJmbG93TGlzdERpcmVjdGl2ZSlcbiAgICBvdmVyZmxvd0RpcmVjdGl2ZTogT3ZlcmZsb3dMaXN0RGlyZWN0aXZlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0ZWRVaWQ/OiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9leHRyYVRhYnM6IEljb25UYWJCYXJJdGVtW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2xhc3RWaXNpYmxlVGFiSW5kZXg6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RhYnM6IEljb25UYWJCYXJJdGVtW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGVuc2l0eU1vZGU6IFRhYkRlc3RpbnlNb2RlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9vbkRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGVzdHJveWVkID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJvdGVjdGVkIF9uZ1pvbmU6IE5nWm9uZVxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcy50YWJzQ29uZmlnICYmICFjaGFuZ2VzLnRhYnNDb25maWcuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2luaXRUYWJzKCk7XG4gICAgICAgICAgICB0aGlzLl90cmlnZ2VyUmVjYWxjdWxhdGlvblZpc2libGVJdGVtcygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzLmlzUnRsICYmICFjaGFuZ2VzLmlzUnRsLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLl90cmlnZ2VyUmVjYWxjdWxhdGlvblZpc2libGVJdGVtcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5pdFRhYnMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdHJpZ2dlclJlY2FsY3VsYXRpb25WaXNpYmxlSXRlbXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9kZXN0cm95ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcGFyYW0gc2VsZWN0ZWRJdGVtXG4gICAgICogQHBhcmFtIGV2ZW50XG4gICAgICovXG4gICAgX3NlbGVjdEl0ZW0oc2VsZWN0ZWRJdGVtOiBJY29uVGFiQmFySXRlbSwgZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudD8uc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkVWlkID0gc2VsZWN0ZWRJdGVtLnVJZDtcbiAgICAgICAgc2VsZWN0ZWRJdGVtLmJhZGdlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdChzZWxlY3RlZEl0ZW0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2tleURvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50LCB0YWI6IEljb25UYWJCYXJJdGVtIHwgdW5kZWZpbmVkLCBjdXJyZW50SW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodGFiICYmIEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbU1BBQ0UsIEVOVEVSXSkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RJdGVtKHRhYik7XG4gICAgICAgIH0gZWxzZSBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtSSUdIVF9BUlJPVywgRE9XTl9BUlJPV10pKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5pc1J0bCA/IHRoaXMuX2ZvY3VzUHJldmlvdXNJdGVtKGN1cnJlbnRJbmRleCkgOiB0aGlzLl9mb2N1c05leHRJdGVtKGN1cnJlbnRJbmRleCk7XG4gICAgICAgIH0gZWxzZSBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtMRUZUX0FSUk9XLCBVUF9BUlJPV10pKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5pc1J0bCA/IHRoaXMuX2ZvY3VzTmV4dEl0ZW0oY3VycmVudEluZGV4KSA6IHRoaXMuX2ZvY3VzUHJldmlvdXNJdGVtKGN1cnJlbnRJbmRleCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBmb2N1c2VzIG5leHQgdGFiICovXG4gICAgX2ZvY3VzTmV4dEl0ZW0oY3VycmVudEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbmV4dEluZGV4ID0gY3VycmVudEluZGV4ID09PSB0aGlzLl90YWJzLmxlbmd0aCAtIDEgPyAwIDogY3VycmVudEluZGV4ICsgMTtcbiAgICAgICAgdGhpcy5fZm9jdXNJdGVtKG5leHRJbmRleCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gZm9jdXNlcyBwcmV2aW91cyB0YWIgKi9cbiAgICBfZm9jdXNQcmV2aW91c0l0ZW0oY3VycmVudEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgLy8gaWYgY3VycmVudCBmb2N1c2VkIGVsZW1lbnQgaXMgZmlyc3QsIGZvY3VzIHRoZSBsYXN0IG9uZS4gSWYgdGFicyBhcmUgb3ZlcmZsb3dlZCwgZm9jdXMgdGhlIGxhc3QgdGFiIGluIHRoZSBwb3BvdmVyXG4gICAgICAgICAgICB0aGlzLl9mb2N1c0l0ZW0odGhpcy5fdGFicy5sZW5ndGggLSAxLCB0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzSXRlbShjdXJyZW50SW5kZXggLSAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcGFyYW0gdGFiSW5kZXggaW5kZXggb2YgdGhlIHRhYiB0byBhcHBseSBmb2N1c1xuICAgICAqIEBwYXJhbSBmb2N1c0xhc3Qgd2hldGhlciB0byBmb2N1cyBmaXJzdCBvciBsYXN0IGl0ZW0gaW4gdGhlIHBvcG92ZXJcbiAgICAgKi9cbiAgICBfZm9jdXNJdGVtKHRhYkluZGV4OiBudW1iZXIsIGZvY3VzTGFzdCA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGlmICh0YWJJbmRleCA+IHRoaXMuX2xhc3RWaXNpYmxlVGFiSW5kZXgpIHtcbiAgICAgICAgICAgIHRoaXMuX3RhYkJhclBvcG92ZXIuX29wZW5Qb3BvdmVyKGZvY3VzTGFzdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9nZXRUYWJVSUVsZW1lbnRGb2N1c2FibGUodGhpcy5fdGFiVUlFbGVtZW50cy5nZXQodGFiSW5kZXgpKT8uZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcGFyYW0gc2VsZWN0ZWRJdGVtXG4gICAgICogQGRlc2NyaXB0aW9uIHNlbGVjdCBleHRyYSBpdGVtIGluc2lkZSBwb3BvdmVyXG4gICAgICovXG4gICAgX3NlbGVjdEV4dHJhSXRlbShzZWxlY3RlZEl0ZW06IEljb25UYWJCYXJJdGVtKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRlbGV0ZWRJdGVtID0gdGhpcy5fdGFicy5zcGxpY2UodGhpcy5fbGFzdFZpc2libGVUYWJJbmRleCwgMSwgc2VsZWN0ZWRJdGVtKVswXSBhcyBJY29uVGFiQmFySXRlbTtcbiAgICAgICAgdGhpcy5fdGFicy5zcGxpY2Uoc2VsZWN0ZWRJdGVtLmluZGV4LCAxLCBkZWxldGVkSXRlbSk7XG5cbiAgICAgICAgZGVsZXRlZEl0ZW0uaW5kZXggPSBzZWxlY3RlZEl0ZW0uaW5kZXg7XG4gICAgICAgIGRlbGV0ZWRJdGVtLnVJZCA9IGAke2RlbGV0ZWRJdGVtLmluZGV4fWA7XG4gICAgICAgIGNvbnN0IGl0ZW1Ub1BvcG92ZXIgPSBjbG9uZURlZXAoZGVsZXRlZEl0ZW0pO1xuICAgICAgICBkZWxldGVkSXRlbS5oaWRkZW4gPSB0cnVlO1xuICAgICAgICBkZWxldGVkSXRlbS5jc3NDbGFzc2VzLnB1c2goSUNPTl9UQUJfSElEREVOX0NMQVNTX05BTUUpO1xuXG4gICAgICAgIGxldCBpbmRleEluRXh0cmFJdGVtcztcbiAgICAgICAgdGhpcy5fZXh0cmFUYWJzLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbS5pbmRleCA9PT0gc2VsZWN0ZWRJdGVtLmluZGV4KSB7XG4gICAgICAgICAgICAgICAgaW5kZXhJbkV4dHJhSXRlbXMgPSBpbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgc2VsZWN0ZWRJdGVtLmluZGV4ID0gdGhpcy5fbGFzdFZpc2libGVUYWJJbmRleDtcbiAgICAgICAgc2VsZWN0ZWRJdGVtLnVJZCA9IGAke3NlbGVjdGVkSXRlbS5pbmRleH1gO1xuICAgICAgICBzZWxlY3RlZEl0ZW0uaGlkZGVuID0gZmFsc2U7XG4gICAgICAgIGlmIChzZWxlY3RlZEl0ZW0uY29sb3IpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbS5jc3NDbGFzc2VzID0gW2BmZC1pY29uLXRhYi1iYXJfX2l0ZW0tLSR7c2VsZWN0ZWRJdGVtLmNvbG9yfWBdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2V4dHJhVGFicy5zcGxpY2UoaW5kZXhJbkV4dHJhSXRlbXMsIDEsIGl0ZW1Ub1BvcG92ZXIpO1xuICAgICAgICB0aGlzLl9leHRyYVRhYnMgPSBbLi4udGhpcy5fZXh0cmFUYWJzXTtcblxuICAgICAgICB0aGlzLl9zZWxlY3RJdGVtKHNlbGVjdGVkSXRlbSk7XG4gICAgICAgIHRoaXMuX3RyaWdnZXJSZWNhbGN1bGF0aW9uVmlzaWJsZUl0ZW1zKCk7XG4gICAgICAgIHRoaXMuX2ZvY3VzSXRlbSh0aGlzLl9sYXN0VmlzaWJsZVRhYkluZGV4KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHBhcmFtIGV4dHJhSXRlbXNcbiAgICAgKiBAZGVzY3JpcHRpb24gcmVjYWxjdWxhdGUgX25leHRTdGVwcyBhbmQgX3ByZXZTdGVwcyBhcnJheSBpZiB3ZSBoYXZlIGV4dHJhIGl0ZW1zXG4gICAgICovXG4gICAgX3JlY2FsY3VsYXRlVmlzaWJsZUl0ZW1zKGV4dHJhSXRlbXM6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl9sYXN0VmlzaWJsZVRhYkluZGV4ID0gdGhpcy5fdGFicy5sZW5ndGggLSAxIC0gZXh0cmFJdGVtcztcbiAgICAgICAgdGhpcy5fdGFicy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpdGVtLmhpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgICAgaXRlbS5jc3NDbGFzc2VzID0gaXRlbS5jc3NDbGFzc2VzLmZpbHRlcigoY3NzQ2xhc3MpID0+IGNzc0NsYXNzICE9PSBJQ09OX1RBQl9ISURERU5fQ0xBU1NfTkFNRSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9leHRyYVRhYnMgPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5fbGFzdFZpc2libGVUYWJJbmRleCArIDE7IGkgPCB0aGlzLl90YWJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB0YWIgPSB0aGlzLl90YWJzW2ldO1xuICAgICAgICAgICAgdGhpcy5fZXh0cmFUYWJzLnB1c2goY2xvbmVEZWVwKHRhYikpO1xuICAgICAgICAgICAgdGFiLmhpZGRlbiA9IHRydWU7XG4gICAgICAgICAgICB0YWIuY3NzQ2xhc3Nlcy5wdXNoKElDT05fVEFCX0hJRERFTl9DTEFTU19OQU1FKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTWFwcGluZyBmdW5jdGlvbiB0byByZXNvbHZlIFVJIHRhYiBlbGVtZW50IHRvIGl0J3MgZm9jdXNhYmxlIHBhcnQvZGVzY2VuZGFudFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfZ2V0VGFiVUlFbGVtZW50Rm9jdXNhYmxlKHRhYlVJRWxlbWVudDogdW5rbm93bik6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIGlmICh0YWJVSUVsZW1lbnQgJiYgdHlwZW9mIHRhYlVJRWxlbWVudCA9PT0gJ29iamVjdCcgJiYgJ25hdGl2ZUVsZW1lbnQnIGluIHRhYlVJRWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKCg8RWxlbWVudFJlZj50YWJVSUVsZW1lbnQpLm5hdGl2ZUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoPEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PnRhYlVJRWxlbWVudCkubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignRmFpbGVkIHRvIGdldCBmb2N1c2FibGUgdGFiIGVsZW1lbnQnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGRlc2NyaXB0aW9uIHRyaWdnZXIgcmVjYWxjdWxhdGlvbiBpdGVtcywgbmVlZCB0byBkbyBpdCBhc3luY2hyb25vdXNseSBhZnRlciBkb20gd2FzIHJlcmVuZGVyZWRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX3RyaWdnZXJSZWNhbGN1bGF0aW9uVmlzaWJsZUl0ZW1zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9uZ1pvbmUub25NaWNyb3Rhc2tFbXB0eS5waXBlKHRha2UoMSksIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLm92ZXJmbG93RGlyZWN0aXZlICYmICF0aGlzLl9kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBleHRyYSA9IHRoaXMub3ZlcmZsb3dEaXJlY3RpdmUuZ2V0QW1vdW50T2ZFeHRyYUl0ZW1zKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVjYWxjdWxhdGVWaXNpYmxlSXRlbXMoZXh0cmEpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBkZXNjcmlwdGlvbiBpbml0aWFsaXplIHN0YXRlIG9mIHRhYnNcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2luaXRUYWJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJzID0gdGhpcy5fZ2VuZXJhdGVUYWJCYXJJdGVtcyh0aGlzLnRhYnNDb25maWcpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLl90YWJzLmZpbmQoKGl0ZW0pID0+IGl0ZW0uYWN0aXZlKTtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRVaWQgPSBzZWxlY3RlZEl0ZW0/LnVJZDtcbiAgICAgICAgdGhpcy5fbGFzdFZpc2libGVUYWJJbmRleCA9IHRoaXMuX3RhYnMubGVuZ3RoIC0gMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGRlc2NyaXB0aW9uIGdlbmVyYXRlIEljb25UYWJJdGVtcyBmcm9tIFRhYkNvbmZpZyBhcnJheVxuICAgICAqL1xuICAgIHByaXZhdGUgX2dlbmVyYXRlVGFiQmFySXRlbXMoY29uZmlnOiBUYWJDb25maWdbXSk6IEljb25UYWJCYXJJdGVtW10ge1xuICAgICAgICBjb25zdCBmbGF0SW5kZXhSZWY6IEZsYXRJbmRleCA9IHsgdmFsdWU6IDAgfTtcbiAgICAgICAgcmV0dXJuIGNvbmZpZy5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQ6IEljb25UYWJCYXJJdGVtID0ge1xuICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICAgICAgY3NzQ2xhc3NlczogW10sXG4gICAgICAgICAgICAgICAgdUlkOiBpbmRleC50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgc3ViSXRlbXM6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBmbGF0SW5kZXg6IGZsYXRJbmRleFJlZi52YWx1ZSsrXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKGl0ZW0uY29sb3IpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQuY3NzQ2xhc3NlcyA9IFtgZmQtaWNvbi10YWItYmFyX19pdGVtLS0ke2l0ZW0uY29sb3J9YF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQuc3ViSXRlbXMgPSBpdGVtLnN1Ykl0ZW1zPy5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IHRoaXMuX2dlbmVyYXRlU3ViSXRlbXMoaXRlbS5zdWJJdGVtcywgcmVzdWx0LCBmbGF0SW5kZXhSZWYpXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dlbmVyYXRlU3ViSXRlbXMoXG4gICAgICAgIHN1Ykl0ZW1zOiBUYWJDb25maWdbXSxcbiAgICAgICAgcGFyZW50OiBJY29uVGFiQmFySXRlbSxcbiAgICAgICAgZmxhdEluZGV4UmVmOiBGbGF0SW5kZXhcbiAgICApOiBJY29uVGFiQmFySXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIHN1Ykl0ZW1zPy5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQ6IEljb25UYWJCYXJJdGVtID0ge1xuICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICAgICAgdUlkOiBgJHtwYXJlbnQudUlkfSR7VU5JUVVFX0tFWV9TRVBBUkFUT1J9JHtpbmRleH1gLFxuICAgICAgICAgICAgICAgIGNzc0NsYXNzZXM6IFtdLFxuICAgICAgICAgICAgICAgIHN1Ykl0ZW1zOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgZmxhdEluZGV4OiBmbGF0SW5kZXhSZWYudmFsdWUrKyxcbiAgICAgICAgICAgICAgICBwYXJlbnRVSWQ6IHBhcmVudC51SWRcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtLnN1Ykl0ZW1zKSAmJiBpdGVtLnN1Ykl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5zdWJJdGVtcyA9IHRoaXMuX2dlbmVyYXRlU3ViSXRlbXMoaXRlbS5zdWJJdGVtcywgcmVzdWx0LCBmbGF0SW5kZXhSZWYpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG4vKiogQGhpZGRlbiBoZWxwZXIgb2JqZWN0IHRoYXQgaXMgdXNlZCBpbiB0YWIgZ2VuZXJhdGlvbiBmdW5jdGlvbnMgdG8gY2FsY3VsYXRlIHRoZWlyIGluZGV4ZXMgbm90IGRlcGVuZGluZyBvbiBsZXZlbCBvZiBuZXN0aW5nICovXG5pbnRlcmZhY2UgRmxhdEluZGV4IHtcbiAgICB2YWx1ZTogbnVtYmVyO1xufVxuIl19
|
|
266
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi10YWItYmFyLWJhc2UuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2ljb24tdGFiLWJhci9jb21wb25lbnRzL2ljb24tdGFiLWJhci1iYXNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsVUFBVSxFQUNWLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFJTixNQUFNLEVBRU4sTUFBTSxFQUVOLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFPMUQsTUFBTSxPQUFnQixjQUFjO0lBRHBDO1FBVUk7O1dBRUc7UUFFSCxTQUFJLEdBQXFCLEVBQUUsQ0FBQztRQStCNUI7O1dBRUc7UUFFSCxhQUFRLEdBQWlDLElBQUksWUFBWSxFQUFrQixDQUFDO1FBRTVFLGlEQUFpRDtRQUVqRCxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBc0IsQ0FBQztRQVkzRCxjQUFjO1FBQ2QsZ0JBQVcsR0FBRyxNQUFN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U0FDSjtRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7OEdBMVNpQixjQUFjO2tHQUFkLGNBQWMsa1NBeURyQixxQkFBcUIsc0hBSUYsVUFBVTs7MkZBN0R0QixjQUFjO2tCQURuQyxTQUFTOzhCQWNOLElBQUk7c0JBREgsS0FBSztnQkFPTixLQUFLO3NCQURKLEtBQUs7Z0JBUU4saUJBQWlCO3NCQURoQixLQUFLO2dCQU9GLFdBQVc7c0JBRGQsS0FBSztnQkFXTixXQUFXO3NCQURWLEtBQUs7Z0JBT04sUUFBUTtzQkFEUCxNQUFNO2dCQUtQLGlCQUFpQjtzQkFEaEIsTUFBTTtnQkFPUCxpQkFBaUI7c0JBRGhCLFNBQVM7dUJBQUMscUJBQXFCO2dCQUtoQyxhQUFhO3NCQURaLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBEZXN0cm95UmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgaXNEZXZNb2RlLFxuICAgIE5nWm9uZSxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIHNpZ25hbCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IERPV05fQVJST1csIEVOVEVSLCBMRUZUX0FSUk9XLCBSSUdIVF9BUlJPVywgU1BBQ0UsIFVQX0FSUk9XIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEtleVV0aWwsIE92ZXJmbG93TGlzdERpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IEZEX0RZTkFNSUNfUEFHRSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9keW5hbWljLXBhZ2UnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IElDT05fVEFCX0hJRERFTl9DTEFTU19OQU1FIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEljb25UYWJCYXJJdGVtIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pY29uLXRhYi1iYXItaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVGFiQ29sb3JBc3NvY2lhdGlvbnMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RhYi1jb2xvci1hc3NvY2lhdGlvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFRhYkRlc3RpbnlNb2RlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgSWNvblRhYkJhclBvcG92ZXJCYXNlIH0gZnJvbSAnLi9wb3BvdmVycy9pY29uLXRhYi1iYXItcG9wb3Zlci1iYXNlLmNsYXNzJztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSWNvblRhYkJhckJhc2UgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTGlzdCBvZiB0YWIgZWxlbWVudHMsIHRoYXQgY2FuIHJlY2VpdmUgZm9jdXMuXG4gICAgICogVGhlcmUncyBhIHNlcGFyYXRlIG1hcHBpbmcgZnVuY3Rpb24gdG8gZ2V0IGFjdHVhbCBodG1sIGVsZW1lbnQ6IGBfZ2V0VGFiVUlFbGVtZW50Rm9jdXNhYmxlYFxuICAgICAqL1xuICAgIGFic3RyYWN0IF90YWJVSUVsZW1lbnRzOiBRdWVyeUxpc3Q8dW5rbm93bj47XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBhYnN0cmFjdCBfdGFiQmFyUG9wb3ZlcjogSWNvblRhYkJhclBvcG92ZXJCYXNlO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBIHRhYiBiYXIgY29uZmlndXJhdGlvbiB0aGF0IHN0b3JlcyB0aGUgc3RhdGUgb2YgZWFjaCB0YWIuIEJhc2VkIG9uIHRoaXMgY29uZmlndXJhdGlvbiwgYSB0YWIgYmFyIGlzIHJlcHJlc2VudGluZy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHRhYnM6IEljb25UYWJCYXJJdGVtW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBGbGFnIHJlcHJlc2VudGluZyBydGwgbW9kZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgaXNSdGw6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQXNzb2NpYXRpb25zIGZvciBjb2xvcnMgb2YgdGhlIHRhYnMuXG4gICAgICogSWYgYW55IG9mIHRoZSBjb2xvciBhc3NvY2lhdGlvbnMgcHJvdmlkZWQsIHRoZXknbGwgYmUgcmVhZCBieSBzY3JlZW5yZWFkZXIgaW5zdGVhZCBvZiB0aGUgYWN0dWFsIGNvbG9yXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBjb2xvckFzc29jaWF0aW9uczogVGFiQ29sb3JBc3NvY2lhdGlvbnM7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gZGVuc2l0eU1vZGUgc2V0dGVyIHRyaWdnZXJzIHRhYnMgdG8gcmUtY2FsY3VsYXRpb24gb3ZlcmZsb3dlZCB0YWJzXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZGVuc2l0eU1vZGUodmFsdWU6IFRhYkRlc3RpbnlNb2RlKSB7XG4gICAgICAgIC8vIFNraXAgZmlyc3QgdmFsdWUgJiYgdmFsdWUgZG9lc24ndCBlcXVhbCB0byBwcmV2aW91cyBvbmVcbiAgICAgICAgaWYgKHRoaXMuX2RlbnNpdHlNb2RlICYmIHZhbHVlICE9PSB0aGlzLl9kZW5zaXR5TW9kZSkge1xuICAgICAgICAgICAgdGhpcy5fdHJpZ2dlclJlY2FsY3VsYXRpb25WaXNpYmxlSXRlbXMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9kZW5zaXR5TW9kZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBDdXJyZW50bHkgc2VsZWN0ZWQgdGFiIFVuaXF1ZSBJRC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdGVkVWlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRW1pdHMgd2hlbiBzb21lIHRhYiBpcyBzZWxlY3RlZC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBzZWxlY3RlZDogRXZlbnRFbWl0dGVyPEljb25UYWJCYXJJdGVtPiA9IG5ldyBFdmVudEVtaXR0ZXI8SWNvblRhYkJhckl0ZW0+KCk7XG5cbiAgICAvKiogRW1pdHMgd2hlbiBzZWxlY3RlZCB0YWIgVW5pcXVlIElEIGNoYW5nZXMuICovXG4gICAgQE91dHB1dCgpXG4gICAgc2VsZWN0ZWRVaWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZWZlcmVuY2UgdG8gT3ZlcmZsb3dMaXN0RGlyZWN0aXZlXG4gICAgICovXG4gICAgQFZpZXdDaGlsZChPdmVyZmxvd0xpc3REaXJlY3RpdmUpXG4gICAgb3ZlcmZsb3dEaXJlY3RpdmU6IE92ZXJmbG93TGlzdERpcmVjdGl2ZTtcblxuICAgIC8qKiBIZWFkZXIgZWxlbWVudCByZWZlcmVuY2UuICovXG4gICAgQFZpZXdDaGlsZCgndGFibGlzdCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIGhlYWRlckVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZXh0cmFUYWJzJCA9IHNpZ25hbDxJY29uVGFiQmFySXRlbVtdPihbXSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9sYXN0VmlzaWJsZVRhYkluZGV4OiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9leHRyYUl0ZW1zJCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IF9pbkR5bmFtaWNQYWdlID0gISFpbmplY3QoRkRfRFlOQU1JQ19QQUdFLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NkID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAgIC8qKiBASGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9uZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGVuc2l0eU1vZGU6IFRhYkRlc3RpbnlNb2RlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kZXN0cm95ZWQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcy50YWJzICYmICFjaGFuZ2VzLnRhYnMuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2luaXRUYWJzKCk7XG4gICAgICAgICAgICB0aGlzLl90cmlnZ2VyUmVjYWxjdWxhdGlvblZpc2libGVJdGVtcygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzLmlzUnRsICYmICFjaGFuZ2VzLmlzUnRsLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLl90cmlnZ2VyUmVjYWxjdWxhdGlvblZpc2libGVJdGVtcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5pdFRhYnMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdHJpZ2dlclJlY2FsY3VsYXRpb25WaXNpYmxlSXRlbXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kZXN0cm95ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcGFyYW0gc2VsZWN0ZWRJdGVtXG4gICAgICogQHBhcmFtIGV2ZW50XG4gICAgICovXG4gICAgX3NlbGVjdEl0ZW0oc2VsZWN0ZWRJdGVtOiBJY29uVGFiQmFySXRlbSwgZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudD8uc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRVaWQgPSBzZWxlY3RlZEl0ZW0udUlkO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVWlkQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZFVpZCk7XG4gICAgICAgIHNlbGVjdGVkSXRlbS5iYWRnZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNlbGVjdGVkLmVtaXQoc2VsZWN0ZWRJdGVtKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9rZXlEb3duSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCwgdGFiOiBJY29uVGFiQmFySXRlbSB8IHVuZGVmaW5lZCwgY3VycmVudEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRhYiAmJiBLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW1NQQUNFLCBFTlRFUl0pKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0SXRlbSh0YWIpO1xuICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbUklHSFRfQVJST1csIERPV05fQVJST1ddKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMuaXNSdGwgPyB0aGlzLl9mb2N1c1ByZXZpb3VzSXRlbShjdXJyZW50SW5kZXgpIDogdGhpcy5fZm9jdXNOZXh0SXRlbShjdXJyZW50SW5kZXgpO1xuICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbTEVGVF9BUlJPVywgVVBfQVJST1ddKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMuaXNSdGwgPyB0aGlzLl9mb2N1c05leHRJdGVtKGN1cnJlbnRJbmRleCkgOiB0aGlzLl9mb2N1c1ByZXZpb3VzSXRlbShjdXJyZW50SW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gZm9jdXNlcyBuZXh0IHRhYiAqL1xuICAgIF9mb2N1c05leHRJdGVtKGN1cnJlbnRJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5leHRJbmRleCA9IGN1cnJlbnRJbmRleCA9PT0gdGhpcy50YWJzLmxlbmd0aCAtIDEgPyAwIDogY3VycmVudEluZGV4ICsgMTtcbiAgICAgICAgdGhpcy5fZm9jdXNJdGVtKG5leHRJbmRleCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gZm9jdXNlcyBwcmV2aW91cyB0YWIgKi9cbiAgICBfZm9jdXNQcmV2aW91c0l0ZW0oY3VycmVudEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgLy8gaWYgY3VycmVudCBmb2N1c2VkIGVsZW1lbnQgaXMgZmlyc3QsIGZvY3VzIHRoZSBsYXN0IG9uZS4gSWYgdGFicyBhcmUgb3ZlcmZsb3dlZCwgZm9jdXMgdGhlIGxhc3QgdGFiIGluIHRoZSBwb3BvdmVyXG4gICAgICAgICAgICB0aGlzLl9mb2N1c0l0ZW0odGhpcy50YWJzLmxlbmd0aCAtIDEsIHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZm9jdXNJdGVtKGN1cnJlbnRJbmRleCAtIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSB0YWJJbmRleCBpbmRleCBvZiB0aGUgdGFiIHRvIGFwcGx5IGZvY3VzXG4gICAgICogQHBhcmFtIGZvY3VzTGFzdCB3aGV0aGVyIHRvIGZvY3VzIGZpcnN0IG9yIGxhc3QgaXRlbSBpbiB0aGUgcG9wb3ZlclxuICAgICAqL1xuICAgIF9mb2N1c0l0ZW0odGFiSW5kZXg6IG51bWJlciwgZm9jdXNMYXN0ID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRhYkluZGV4ID4gdGhpcy5fbGFzdFZpc2libGVUYWJJbmRleCkge1xuICAgICAgICAgICAgdGhpcy5fdGFiQmFyUG9wb3Zlci5fb3BlblBvcG92ZXIoZm9jdXNMYXN0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2dldFRhYlVJRWxlbWVudEZvY3VzYWJsZSh0aGlzLl90YWJVSUVsZW1lbnRzLmdldCh0YWJJbmRleCkpPy5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSBzZWxlY3RlZEl0ZW1cbiAgICAgKiBAZGVzY3JpcHRpb24gc2VsZWN0IGV4dHJhIGl0ZW0gaW5zaWRlIHBvcG92ZXJcbiAgICAgKi9cbiAgICBfc2VsZWN0RXh0cmFJdGVtKHNlbGVjdGVkSXRlbTogSWNvblRhYkJhckl0ZW0pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGFicyA9IFsuLi50aGlzLnRhYnNdO1xuICAgICAgICBjb25zdCBkZWxldGVkSXRlbSA9IHRhYnMuc3BsaWNlKHRoaXMuX2xhc3RWaXNpYmxlVGFiSW5kZXgsIDEsIHNlbGVjdGVkSXRlbSlbMF0gYXMgSWNvblRhYkJhckl0ZW07XG4gICAgICAgIHRhYnMuc3BsaWNlKHNlbGVjdGVkSXRlbS5pbmRleCwgMSwgZGVsZXRlZEl0ZW0pO1xuICAgICAgICB0aGlzLnRhYnMgPSB0YWJzO1xuICAgICAgICBjb25zdCBleHRyYVRhYnMgPSBbLi4udGhpcy5fZXh0cmFUYWJzJCgpXTtcblxuICAgICAgICBkZWxldGVkSXRlbS5pbmRleCA9IHNlbGVjdGVkSXRlbS5pbmRleDtcbiAgICAgICAgZGVsZXRlZEl0ZW0udUlkID0gYCR7ZGVsZXRlZEl0ZW0uaW5kZXh9YDtcbiAgICAgICAgY29uc3QgaXRlbVRvUG9wb3ZlciA9IGNsb25lRGVlcChkZWxldGVkSXRlbSk7XG4gICAgICAgIGRlbGV0ZWRJdGVtLmhpZGRlbiA9IHRydWU7XG4gICAgICAgIGRlbGV0ZWRJdGVtLmNzc0NsYXNzZXMucHVzaChJQ09OX1RBQl9ISURERU5fQ0xBU1NfTkFNRSk7XG5cbiAgICAgICAgbGV0IGluZGV4SW5FeHRyYUl0ZW1zO1xuICAgICAgICB0aGlzLl9leHRyYVRhYnMkKCkuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLmluZGV4ID09PSBzZWxlY3RlZEl0ZW0uaW5kZXgpIHtcbiAgICAgICAgICAgICAgICBpbmRleEluRXh0cmFJdGVtcyA9IGluZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBzZWxlY3RlZEl0ZW0uaW5kZXggPSB0aGlzLl9sYXN0VmlzaWJsZVRhYkluZGV4O1xuICAgICAgICBzZWxlY3RlZEl0ZW0udUlkID0gYCR7c2VsZWN0ZWRJdGVtLmluZGV4fWA7XG4gICAgICAgIHNlbGVjdGVkSXRlbS5oaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgaWYgKHNlbGVjdGVkSXRlbS5jb2xvcikge1xuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtLmNzc0NsYXNzZXMgPSBbYGZkLWljb24tdGFiLWJhcl9faXRlbS0tJHtzZWxlY3RlZEl0ZW0uY29sb3J9YF07XG4gICAgICAgIH1cbiAgICAgICAgZXh0cmFUYWJzLnNwbGljZShpbmRleEluRXh0cmFJdGVtcywgMSwgaXRlbVRvUG9wb3Zlcik7XG4gICAgICAgIHRoaXMuX2V4dHJhVGFicyQuc2V0KGV4dHJhVGFicyk7XG5cbiAgICAgICAgdGhpcy5fc2VsZWN0SXRlbShzZWxlY3RlZEl0ZW0pO1xuICAgICAgICB0aGlzLl90cmlnZ2VyUmVjYWxjdWxhdGlvblZpc2libGVJdGVtcygpO1xuICAgICAgICB0aGlzLl9mb2N1c0l0ZW0odGhpcy5fbGFzdFZpc2libGVUYWJJbmRleCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSBleHRyYUl0ZW1zXG4gICAgICogQGRlc2NyaXB0aW9uIHJlY2FsY3VsYXRlIF9uZXh0U3RlcHMgYW5kIF9wcmV2U3RlcHMgYXJyYXkgaWYgd2UgaGF2ZSBleHRyYSBpdGVtc1xuICAgICAqL1xuICAgIF9yZWNhbGN1bGF0ZVZpc2libGVJdGVtcyhleHRyYUl0ZW1zOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZXh0cmFJdGVtcyQuc2V0KGV4dHJhSXRlbXMgPiAwKTtcbiAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICBjb25zdCB0YWJzID0gWy4uLnRoaXMudGFic107XG4gICAgICAgIGNvbnN0IGV4dHJhVGFiczogSWNvblRhYkJhckl0ZW1bXSA9IFtdO1xuICAgICAgICB0aGlzLl9sYXN0VmlzaWJsZVRhYkluZGV4ID0gdGFicy5sZW5ndGggLSAxIC0gZXh0cmFJdGVtcztcbiAgICAgICAgdGFicy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpdGVtLmhpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgICAgaXRlbS5jc3NDbGFzc2VzID0gaXRlbS5jc3NDbGFzc2VzLmZpbHRlcigoY3NzQ2xhc3MpID0+IGNzc0NsYXNzICE9PSBJQ09OX1RBQl9ISURERU5fQ0xBU1NfTkFNRSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLl9sYXN0VmlzaWJsZVRhYkluZGV4ICsgMTsgaSA8IHRhYnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHRhYiA9IHRhYnNbaV07XG4gICAgICAgICAgICBleHRyYVRhYnMucHVzaChjbG9uZURlZXAodGFiKSk7XG4gICAgICAgICAgICB0YWIuaGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgICAgIHRhYi5jc3NDbGFzc2VzLnB1c2goSUNPTl9UQUJfSElEREVOX0NMQVNTX05BTUUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2V4dHJhVGFicyQuc2V0KGV4dHJhVGFicyk7XG4gICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTWFwcGluZyBmdW5jdGlvbiB0byByZXNvbHZlIFVJIHRhYiBlbGVtZW50IHRvIGl0J3MgZm9jdXNhYmxlIHBhcnQvZGVzY2VuZGFudFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfZ2V0VGFiVUlFbGVtZW50Rm9jdXNhYmxlKHRhYlVJRWxlbWVudDogdW5rbm93bik6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIGlmICh0YWJVSUVsZW1lbnQgJiYgdHlwZW9mIHRhYlVJRWxlbWVudCA9PT0gJ29iamVjdCcgJiYgJ25hdGl2ZUVsZW1lbnQnIGluIHRhYlVJRWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKCg8RWxlbWVudFJlZj50YWJVSUVsZW1lbnQpLm5hdGl2ZUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoPEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PnRhYlVJRWxlbWVudCkubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignRmFpbGVkIHRvIGdldCBmb2N1c2FibGUgdGFiIGVsZW1lbnQnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGRlc2NyaXB0aW9uIHRyaWdnZXIgcmVjYWxjdWxhdGlvbiBpdGVtcywgbmVlZCB0byBkbyBpdCBhc3luY2hyb25vdXNseSBhZnRlciBkb20gd2FzIHJlcmVuZGVyZWRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX3RyaWdnZXJSZWNhbGN1bGF0aW9uVmlzaWJsZUl0ZW1zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9uZ1pvbmUub25NaWNyb3Rhc2tFbXB0eS5waXBlKHRha2UoMSksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLm92ZXJmbG93RGlyZWN0aXZlICYmICF0aGlzLl9kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBleHRyYSA9IHRoaXMub3ZlcmZsb3dEaXJlY3RpdmUuZ2V0QW1vdW50T2ZFeHRyYUl0ZW1zKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVjYWxjdWxhdGVWaXNpYmxlSXRlbXMoZXh0cmEpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBkZXNjcmlwdGlvbiBpbml0aWFsaXplIHN0YXRlIG9mIHRhYnNcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2luaXRUYWJzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLl9maW5kQWN0aXZlVGFiSWQodGhpcy50YWJzKSB8fCB0aGlzLnRhYnNbMF07XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRVaWQgPSBzZWxlY3RlZEl0ZW0/LnVJZDtcbiAgICAgICAgdGhpcy5fbGFzdFZpc2libGVUYWJJbmRleCA9IHRoaXMudGFicy5sZW5ndGggLSAxO1xuICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVWlkQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZFVpZCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkLmVtaXQoc2VsZWN0ZWRJdGVtKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2ZpbmRBY3RpdmVUYWJJZCh0YWJzOiBJY29uVGFiQmFySXRlbVtdKTogSWNvblRhYkJhckl0ZW0gfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgYWN0aXZlVGFiOiBJY29uVGFiQmFySXRlbSB8IHVuZGVmaW5lZDtcbiAgICAgICAgZm9yIChjb25zdCB0YWIgb2YgdGFicykge1xuICAgICAgICAgICAgaWYgKHRhYi5hY3RpdmUpIHtcbiAgICAgICAgICAgICAgICBhY3RpdmVUYWIgPSB0YWI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRhYi5zdWJJdGVtcykge1xuICAgICAgICAgICAgICAgIGFjdGl2ZVRhYiA9IHRoaXMuX2ZpbmRBY3RpdmVUYWJJZCh0YWIuc3ViSXRlbXMpO1xuICAgICAgICAgICAgICAgIGlmIChhY3RpdmVUYWIpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFjdGl2ZVRhYjtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { SlicePipe } from '@angular/common';
|
|
2
2
|
import { Component, Input, QueryList, ViewChild, ViewChildren } from '@angular/core';
|
|
3
|
-
import { OverflowListDirective, OverflowListItemDirective } from '@fundamental-ngx/cdk/utils';
|
|
3
|
+
import { AsyncOrSyncPipe, OverflowListDirective, OverflowListItemDirective } from '@fundamental-ngx/cdk/utils';
|
|
4
4
|
import { ButtonComponent } from '@fundamental-ngx/core/button';
|
|
5
5
|
import { IconComponent } from '@fundamental-ngx/core/icon';
|
|
6
6
|
import { ClosableIconTabBar } from '../closable-icon-tab-bar.class';
|
|
7
|
+
import { IconTabBarBase } from '../icon-tab-bar-base.class';
|
|
7
8
|
import { IconTabBarPopoverComponent } from '../popovers/icon-tab-bar-popover/icon-tab-bar-popover.component';
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
10
|
export class IconTabBarFilterTypeComponent extends ClosableIconTabBar {
|
|
@@ -20,21 +21,32 @@ export class IconTabBarFilterTypeComponent extends ClosableIconTabBar {
|
|
|
20
21
|
*/
|
|
21
22
|
_initTabs() {
|
|
22
23
|
super._initTabs();
|
|
23
|
-
this._totalTab = this.showTotalTab ? this.
|
|
24
|
+
this._totalTab = this.showTotalTab ? this.tabs[0] : undefined;
|
|
24
25
|
}
|
|
25
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.
|
|
26
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.
|
|
26
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: IconTabBarFilterTypeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
27
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.8", type: IconTabBarFilterTypeComponent, isStandalone: true, selector: "fdp-icon-tab-bar-filter-type", inputs: { showTotalTab: "showTotalTab" }, providers: [
|
|
28
|
+
{
|
|
29
|
+
provide: IconTabBarBase,
|
|
30
|
+
useExisting: IconTabBarFilterTypeComponent
|
|
31
|
+
}
|
|
32
|
+
], viewQueries: [{ propertyName: "_tabBarPopover", first: true, predicate: IconTabBarPopoverComponent, descendants: true }, { propertyName: "_tabUIElements", predicate: ["tabItem"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ul\n class=\"fd-icon-tab-bar__header\"\n [class.fd-dynamic-page__tabs]=\"_inDynamicPage\"\n role=\"tablist\"\n fdkOverflowList\n [isRtl]=\"isRtl\"\n #tablist\n [overflowOffset]=\"100\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n>\n @if (showTotalTab) {\n <li class=\"fd-icon-tab-bar__item\" role=\"presentation\" fdkOverflowListItem>\n <a\n (click)=\"_totalTab && _selectItem(_totalTab)\"\n (keydown)=\"_keyDownHandler($event, _totalTab, 0)\"\n [attr.aria-selected]=\"_totalTab?.uId === selectedUid\"\n class=\"fd-icon-tab-bar__tab\"\n tabindex=\"0\"\n #tabItem\n role=\"tab\"\n >\n <div class=\"fd-icon-tab-bar__container fd-icon-tab-bar__container--filter\">\n @if (_totalTab?.counter) {\n <span class=\"fd-icon-tab-bar__filter-counter\">{{ _totalTab?.counter }}</span>\n }\n <span class=\"fd-icon-tab-bar__filter-label\">{{ _totalTab?.label | fdkAsyncOrSync }}</span>\n </div>\n </a>\n </li>\n }\n @for (item of tabs | slice: 1; track item.uId; let idx = $index) {\n <li\n [class]=\"item.cssClasses\"\n class=\"fd-icon-tab-bar__item\"\n role=\"presentation\"\n fdkOverflowListItem\n [attr.aria-hidden]=\"item.hidden\"\n >\n <a\n (click)=\"_selectItem(item)\"\n [attr.aria-selected]=\"item.uId === selectedUid\"\n class=\"fd-icon-tab-bar__tab\"\n #tabItem\n [attr.tabindex]=\"showTotalTab ? -1 : idx > 0 ? -1 : 0\"\n (keydown)=\"_keyDownHandler($event, item, idx + (showTotalTab ? 1 : 0))\"\n role=\"tab\"\n >\n <div class=\"fd-icon-tab-bar__container\">\n <span class=\"fd-icon-tab-bar__icon\">\n <fd-icon [glyph]=\"item.icon\"></fd-icon>\n </span>\n @if (item.counter) {\n <span class=\"fd-icon-tab-bar__counter\">{{ item.counter }}</span>\n }\n </div>\n <div class=\"fd-icon-tab-bar__label\">{{ item.label | fdkAsyncOrSync }}</div>\n @if (item.color | fdkAsyncOrSync; as itemColor) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[itemColor]) || itemColor }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"_closeTab(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n }\n @if (_extraItems$()) {\n <li role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-icon-tab-bar-popover\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_extraTabs$()\"\n [colorAssociations]=\"colorAssociations\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n ></fdp-icon-tab-bar-popover>\n </li>\n }\n</ul>\n", dependencies: [{ kind: "directive", type: OverflowListDirective, selector: "[fdkOverflowList]", inputs: ["overflowOffset", "isRtl", "itemCssBlockValue"], outputs: ["overflowChanged"] }, { kind: "directive", type: OverflowListItemDirective, selector: "[fdkOverflowListItem]" }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: IconTabBarPopoverComponent, selector: "fdp-icon-tab-bar-popover", inputs: ["leftSide", "label", "showItemLabel"] }, { kind: "pipe", type: SlicePipe, name: "slice" }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "pipe", type: AsyncOrSyncPipe, name: "fdkAsyncOrSync" }] }); }
|
|
27
33
|
}
|
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: IconTabBarFilterTypeComponent, decorators: [{
|
|
29
35
|
type: Component,
|
|
30
|
-
args: [{ selector: 'fdp-icon-tab-bar-filter-type', standalone: true,
|
|
36
|
+
args: [{ selector: 'fdp-icon-tab-bar-filter-type', standalone: true, providers: [
|
|
37
|
+
{
|
|
38
|
+
provide: IconTabBarBase,
|
|
39
|
+
useExisting: IconTabBarFilterTypeComponent
|
|
40
|
+
}
|
|
41
|
+
], imports: [
|
|
31
42
|
OverflowListDirective,
|
|
32
43
|
OverflowListItemDirective,
|
|
33
44
|
IconComponent,
|
|
34
45
|
IconTabBarPopoverComponent,
|
|
35
46
|
SlicePipe,
|
|
36
|
-
ButtonComponent
|
|
37
|
-
|
|
47
|
+
ButtonComponent,
|
|
48
|
+
AsyncOrSyncPipe
|
|
49
|
+
], template: "<ul\n class=\"fd-icon-tab-bar__header\"\n [class.fd-dynamic-page__tabs]=\"_inDynamicPage\"\n role=\"tablist\"\n fdkOverflowList\n [isRtl]=\"isRtl\"\n #tablist\n [overflowOffset]=\"100\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n>\n @if (showTotalTab) {\n <li class=\"fd-icon-tab-bar__item\" role=\"presentation\" fdkOverflowListItem>\n <a\n (click)=\"_totalTab && _selectItem(_totalTab)\"\n (keydown)=\"_keyDownHandler($event, _totalTab, 0)\"\n [attr.aria-selected]=\"_totalTab?.uId === selectedUid\"\n class=\"fd-icon-tab-bar__tab\"\n tabindex=\"0\"\n #tabItem\n role=\"tab\"\n >\n <div class=\"fd-icon-tab-bar__container fd-icon-tab-bar__container--filter\">\n @if (_totalTab?.counter) {\n <span class=\"fd-icon-tab-bar__filter-counter\">{{ _totalTab?.counter }}</span>\n }\n <span class=\"fd-icon-tab-bar__filter-label\">{{ _totalTab?.label | fdkAsyncOrSync }}</span>\n </div>\n </a>\n </li>\n }\n @for (item of tabs | slice: 1; track item.uId; let idx = $index) {\n <li\n [class]=\"item.cssClasses\"\n class=\"fd-icon-tab-bar__item\"\n role=\"presentation\"\n fdkOverflowListItem\n [attr.aria-hidden]=\"item.hidden\"\n >\n <a\n (click)=\"_selectItem(item)\"\n [attr.aria-selected]=\"item.uId === selectedUid\"\n class=\"fd-icon-tab-bar__tab\"\n #tabItem\n [attr.tabindex]=\"showTotalTab ? -1 : idx > 0 ? -1 : 0\"\n (keydown)=\"_keyDownHandler($event, item, idx + (showTotalTab ? 1 : 0))\"\n role=\"tab\"\n >\n <div class=\"fd-icon-tab-bar__container\">\n <span class=\"fd-icon-tab-bar__icon\">\n <fd-icon [glyph]=\"item.icon\"></fd-icon>\n </span>\n @if (item.counter) {\n <span class=\"fd-icon-tab-bar__counter\">{{ item.counter }}</span>\n }\n </div>\n <div class=\"fd-icon-tab-bar__label\">{{ item.label | fdkAsyncOrSync }}</div>\n @if (item.color | fdkAsyncOrSync; as itemColor) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[itemColor]) || itemColor }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"_closeTab(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n }\n @if (_extraItems$()) {\n <li role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-icon-tab-bar-popover\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_extraTabs$()\"\n [colorAssociations]=\"colorAssociations\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n ></fdp-icon-tab-bar-popover>\n </li>\n }\n</ul>\n" }]
|
|
38
50
|
}], propDecorators: { _tabUIElements: [{
|
|
39
51
|
type: ViewChildren,
|
|
40
52
|
args: ['tabItem']
|
|
@@ -44,4 +56,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImpor
|
|
|
44
56
|
}], showTotalTab: [{
|
|
45
57
|
type: Input
|
|
46
58
|
}] } });
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi10YWItYmFyLWZpbHRlci10eXBlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vaWNvbi10YWItYmFyL2NvbXBvbmVudHMvaWNvbi10YWItYmFyLWZpbHRlci10eXBlL2ljb24tdGFiLWJhci1maWx0ZXItdHlwZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2ljb24tdGFiLWJhci9jb21wb25lbnRzL2ljb24tdGFiLWJhci1maWx0ZXItdHlwZS9pY29uLXRhYi1iYXItZmlsdGVyLXR5cGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxlQUFlLEVBQUUscUJBQXFCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQzs7QUFzQjdHLE1BQU0sT0FBTyw2QkFBOEIsU0FBUSxrQkFBa0I7SUFwQnJFOztRQTJCSTs7V0FFRztRQUVILGlCQUFZLEdBQUcsSUFBSSxDQUFDO0tBYXZCO0lBUkc7OztPQUdHO0lBQ08sU0FBUztRQUNmLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNsRSxDQUFDOzhHQXZCUSw2QkFBNkI7a0dBQTdCLDZCQUE2QixxSEFoQjNCO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLGNBQWM7Z0JBQ3ZCLFdBQVcsRUFBRSw2QkFBNkI7YUFDN0M7U0FDSiwwRUFnQlUsMEJBQTBCLHNKQ25DekMsMHNIQXlGQSw0Q0RwRVEscUJBQXFCLHNKQUNyQix5QkFBeUIsa0VBQ3pCLGFBQWEsMElBQ2IsMEJBQTBCLGdIQUMxQixTQUFTLDhDQUNULGVBQWUsbUhBQ2YsZUFBZTs7MkZBR1YsNkJBQTZCO2tCQXBCekMsU0FBUzsrQkFDSSw4QkFBOEIsY0FFNUIsSUFBSSxhQUNMO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxjQUFjOzRCQUN2QixXQUFXLCtCQUErQjt5QkFDN0M7cUJBQ0osV0FDUTt3QkFDTCxxQkFBcUI7d0JBQ3JCLHlCQUF5Qjt3QkFDekIsYUFBYTt3QkFDYiwwQkFBMEI7d0JBQzFCLFNBQVM7d0JBQ1QsZUFBZTt3QkFDZixlQUFlO3FCQUNsQjs4QkFJd0IsY0FBYztzQkFBdEMsWUFBWTt1QkFBQyxTQUFTO2dCQUdnQixjQUFjO3NCQUFwRCxTQUFTO3VCQUFDLDBCQUEwQjtnQkFNckMsWUFBWTtzQkFEWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2xpY2VQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFzeW5jT3JTeW5jUGlwZSwgT3ZlcmZsb3dMaXN0RGlyZWN0aXZlLCBPdmVyZmxvd0xpc3RJdGVtRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2ljb24nO1xuaW1wb3J0IHsgSWNvblRhYkJhckl0ZW0gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2ljb24tdGFiLWJhci1pdGVtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDbG9zYWJsZUljb25UYWJCYXIgfSBmcm9tICcuLi9jbG9zYWJsZS1pY29uLXRhYi1iYXIuY2xhc3MnO1xuaW1wb3J0IHsgSWNvblRhYkJhckJhc2UgfSBmcm9tICcuLi9pY29uLXRhYi1iYXItYmFzZS5jbGFzcyc7XG5pbXBvcnQgeyBJY29uVGFiQmFyUG9wb3ZlckNvbXBvbmVudCB9IGZyb20gJy4uL3BvcG92ZXJzL2ljb24tdGFiLWJhci1wb3BvdmVyL2ljb24tdGFiLWJhci1wb3BvdmVyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLWljb24tdGFiLWJhci1maWx0ZXItdHlwZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ljb24tdGFiLWJhci1maWx0ZXItdHlwZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogSWNvblRhYkJhckJhc2UsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogSWNvblRhYkJhckZpbHRlclR5cGVDb21wb25lbnRcbiAgICAgICAgfVxuICAgIF0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBPdmVyZmxvd0xpc3REaXJlY3RpdmUsXG4gICAgICAgIE92ZXJmbG93TGlzdEl0ZW1EaXJlY3RpdmUsXG4gICAgICAgIEljb25Db21wb25lbnQsXG4gICAgICAgIEljb25UYWJCYXJQb3BvdmVyQ29tcG9uZW50LFxuICAgICAgICBTbGljZVBpcGUsXG4gICAgICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICAgICAgQXN5bmNPclN5bmNQaXBlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBJY29uVGFiQmFyRmlsdGVyVHlwZUNvbXBvbmVudCBleHRlbmRzIENsb3NhYmxlSWNvblRhYkJhciB7XG4gICAgLyoqIEBoaWRkZW4gbGlzdCBvZiB0YWIgaHRtbCBlbGVtZW50cywgdGhhdCBjYW4gcmVjZWl2ZSBmb2N1cyAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oJ3RhYkl0ZW0nKSBfdGFiVUlFbGVtZW50czogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChJY29uVGFiQmFyUG9wb3ZlckNvbXBvbmVudCkgX3RhYkJhclBvcG92ZXI6IEljb25UYWJCYXJQb3BvdmVyQ29tcG9uZW50O1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEJvb2xlYW4gZmxhZyBpbmRpY2F0aW5nIHRvIHNob3cgdG90YWwgdGFiXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzaG93VG90YWxUYWIgPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdG90YWxUYWI/OiBJY29uVGFiQmFySXRlbTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAZGVzY3JpcHRpb24gaW5pdGlhbGl6ZSBzdGF0ZSBvZiB0YWJzXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9pbml0VGFicygpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuX2luaXRUYWJzKCk7XG4gICAgICAgIHRoaXMuX3RvdGFsVGFiID0gdGhpcy5zaG93VG90YWxUYWIgPyB0aGlzLnRhYnNbMF0gOiB1bmRlZmluZWQ7XG4gICAgfVxufVxuIiwiPHVsXG4gICAgY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJfX2hlYWRlclwiXG4gICAgW2NsYXNzLmZkLWR5bmFtaWMtcGFnZV9fdGFic109XCJfaW5EeW5hbWljUGFnZVwiXG4gICAgcm9sZT1cInRhYmxpc3RcIlxuICAgIGZka092ZXJmbG93TGlzdFxuICAgIFtpc1J0bF09XCJpc1J0bFwiXG4gICAgI3RhYmxpc3RcbiAgICBbb3ZlcmZsb3dPZmZzZXRdPVwiMTAwXCJcbiAgICAob3ZlcmZsb3dDaGFuZ2VkKT1cIl9yZWNhbGN1bGF0ZVZpc2libGVJdGVtcygkZXZlbnQpXCJcbj5cbiAgICBAaWYgKHNob3dUb3RhbFRhYikge1xuICAgICAgICA8bGkgY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJfX2l0ZW1cIiByb2xlPVwicHJlc2VudGF0aW9uXCIgZmRrT3ZlcmZsb3dMaXN0SXRlbT5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIl90b3RhbFRhYiAmJiBfc2VsZWN0SXRlbShfdG90YWxUYWIpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJfa2V5RG93bkhhbmRsZXIoJGV2ZW50LCBfdG90YWxUYWIsIDApXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cIl90b3RhbFRhYj8udUlkID09PSBzZWxlY3RlZFVpZFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJfX3RhYlwiXG4gICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAjdGFiSXRlbVxuICAgICAgICAgICAgICAgIHJvbGU9XCJ0YWJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJfX2NvbnRhaW5lciBmZC1pY29uLXRhYi1iYXJfX2NvbnRhaW5lci0tZmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoX3RvdGFsVGFiPy5jb3VudGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fZmlsdGVyLWNvdW50ZXJcIj57eyBfdG90YWxUYWI/LmNvdW50ZXIgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJfX2ZpbHRlci1sYWJlbFwiPnt7IF90b3RhbFRhYj8ubGFiZWwgfCBmZGtBc3luY09yU3luYyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9saT5cbiAgICB9XG4gICAgQGZvciAoaXRlbSBvZiB0YWJzIHwgc2xpY2U6IDE7IHRyYWNrIGl0ZW0udUlkOyBsZXQgaWR4ID0gJGluZGV4KSB7XG4gICAgICAgIDxsaVxuICAgICAgICAgICAgW2NsYXNzXT1cIml0ZW0uY3NzQ2xhc3Nlc1wiXG4gICAgICAgICAgICBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9faXRlbVwiXG4gICAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgICAgIGZka092ZXJmbG93TGlzdEl0ZW1cbiAgICAgICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cIml0ZW0uaGlkZGVuXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiX3NlbGVjdEl0ZW0oaXRlbSlcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaXRlbS51SWQgPT09IHNlbGVjdGVkVWlkXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fdGFiXCJcbiAgICAgICAgICAgICAgICAjdGFiSXRlbVxuICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cInNob3dUb3RhbFRhYiA/IC0xIDogaWR4ID4gMCA/IC0xIDogMFwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24pPVwiX2tleURvd25IYW5kbGVyKCRldmVudCwgaXRlbSwgaWR4ICsgKHNob3dUb3RhbFRhYiA/IDEgOiAwKSlcIlxuICAgICAgICAgICAgICAgIHJvbGU9XCJ0YWJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJfX2NvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9faWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWljb24gW2dseXBoXT1cIml0ZW0uaWNvblwiPjwvZmQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uY291bnRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJfX2NvdW50ZXJcIj57eyBpdGVtLmNvdW50ZXIgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX19sYWJlbFwiPnt7IGl0ZW0ubGFiZWwgfCBmZGtBc3luY09yU3luYyB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5jb2xvciB8IGZka0FzeW5jT3JTeW5jOyBhcyBpdGVtQ29sb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjcmVlbnJlYWRlci1vbmx5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAoY29sb3JBc3NvY2lhdGlvbnMgJiYgY29sb3JBc3NvY2lhdGlvbnNbaXRlbUNvbG9yXSkgfHwgaXRlbUNvbG9yIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIEBpZiAoaXRlbS5jbG9zYWJsZSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZC1pY29uLXRhYi1iYXJfX2J1dHRvbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWljb24tdGFiLWJhcl9fYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfY2xvc2VUYWIoaXRlbS51SWQpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWljb24gZ2x5cGg9XCJkZWNsaW5lXCI+PC9mZC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9saT5cbiAgICB9XG4gICAgQGlmIChfZXh0cmFJdGVtcyQoKSkge1xuICAgICAgICA8bGkgcm9sZT1cInByZXNlbnRhdGlvblwiIGNsYXNzPVwiZmQtaWNvbi10YWItYmFyX19pdGVtIGZkLWljb24tdGFiLWJhcl9faXRlbS0tb3ZlcmZsb3dcIj5cbiAgICAgICAgICAgIDxmZHAtaWNvbi10YWItYmFyLXBvcG92ZXJcbiAgICAgICAgICAgICAgICBbaXNSdGxdPVwiaXNSdGxcIlxuICAgICAgICAgICAgICAgIFtleHRyYVRhYnNdPVwiX2V4dHJhVGFicyQoKVwiXG4gICAgICAgICAgICAgICAgW2NvbG9yQXNzb2NpYXRpb25zXT1cImNvbG9yQXNzb2NpYXRpb25zXCJcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWRFeHRyYUl0ZW0pPVwiX3NlbGVjdEV4dHJhSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoZm9jdXNGaXJzdFZpc2libGVJdGVtKT1cIl9mb2N1c0l0ZW0oMClcIlxuICAgICAgICAgICAgICAgIChmb2N1c0xhc3RWaXNpYmxlSXRlbSk9XCJfZm9jdXNJdGVtKF9sYXN0VmlzaWJsZVRhYkluZGV4KVwiXG4gICAgICAgICAgICA+PC9mZHAtaWNvbi10YWItYmFyLXBvcG92ZXI+XG4gICAgICAgIDwvbGk+XG4gICAgfVxuPC91bD5cbiJdfQ==
|