@libs-ui/components-tabs 0.2.284 → 0.2.285

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.
@@ -104,7 +104,7 @@ export class LibsUiComponentsTabsItemComponent {
104
104
  this.onDestroy.complete();
105
105
  }
106
106
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsTabsItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
107
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsTabsItemComponent, isStandalone: true, selector: "libs_ui-components-tabs-item", inputs: { ignoreCalculatorTab: { classPropertyName: "ignoreCalculatorTab", publicName: "ignoreCalculatorTab", isSignal: true, isRequired: true, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: true, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: true, transformFunction: null }, tabs: { classPropertyName: "tabs", publicName: "tabs", isSignal: true, isRequired: true, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, keySelected: { classPropertyName: "keySelected", publicName: "keySelected", isSignal: true, isRequired: true, transformFunction: null }, fieldLabel: { classPropertyName: "fieldLabel", publicName: "fieldLabel", isSignal: true, isRequired: true, transformFunction: null }, fieldKey: { classPropertyName: "fieldKey", publicName: "fieldKey", isSignal: true, isRequired: true, transformFunction: null }, cssDefault: { classPropertyName: "cssDefault", publicName: "cssDefault", isSignal: true, isRequired: true, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: true, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, disableLabel: { classPropertyName: "disableLabel", publicName: "disableLabel", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, changeViewTab: { classPropertyName: "changeViewTab", publicName: "changeViewTab", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { item: "itemChange", outAction: "outAction" }, ngImport: i0, template: " @if (item(); as item) {\n <div #itemEl\n class=\"libs-ui-tab-header-center-item {{ cssDefault() }} {{ item.classInclude || '' }} {{ item[fieldKey()] === keySelected() && tabs().classIncludeActiveItem ? tabs().classIncludeActiveItem : '' }}\"\n [attr.key]=\"item[fieldKey()]\"\n [attr.invalid]=\"item.invalid && !tabs().ignoreShowLineBottomInTab\"\n [attr.active]=\"item[fieldKey()] === keySelected() && !tabs().ignoreShowLineBottomInTab\"\n [attr.disable]=\"disable()\"\n [class.!cursor-pointer]=\"!disable()\"\n [class.!cursor-default]=\"disable()\"\n [class.libs-ui-tab-header-center-item-hover]=\"!tabs().ignoreShowLineBottomInTab\"\n [class.libs-ui-tab-header-center-item-action-show]=\"actionShowing()\">\n @if (tabs().hasImage) {\n <img class=\"libs-ui-tab-header-center-item-image {{ item.classImageInclude || '' }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverImage\"\n [config]=\"item.popoverImage\"\n [ignoreStopPropagationEvent]=\"true\"\n [class.libs-ui-disable]=\"disable()\"\n [src]=\"item.linkImage\"\n [attr.key]=\"item[fieldKey()]\"\n (error)=\"handlerImgError($event)\" />\n }\n @if (item.iconLeft) {\n <i class=\"libs-ui-tab-header-center-item-icon libs-ui-mr-8px {{ item.iconLeft }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconLeft\"\n [config]=\"item.popoverIconLeft\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (item.is_pin) {\n <i class=\"libs-ui-tab-header-center-item-icon mr-[8px] {{ item[fieldKey()] === keySelected() ? 'libs-ui-icon-pin-solid' : 'libs-ui-icon-pin-outline' }}\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (tabs().hasStep) {\n @if (tabs().stepHasBackGround) {\n <div class=\"libs-ui-tab-header-center-item-step !border-none libs-ui-font-h6m\"\n [class.!text-[#ffffff]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.!text-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.!text-[#f15767]]=\"item.invalid\"\n [class.bg-[#f8f9fa]]=\"step() > (tabs().stepCompleted || 0) && (tabs().ignoreSelectedBackgroundStep || disable()) && !item.invalid\"\n [class.bg-[#00bc62]]=\"step() <= (tabs().stepCompleted || -1) && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.bg-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.bg-[var(--libs-ui-color-light-2)]]=\"((item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep) || (step() > (tabs().stepCompleted || 0) && !tabs().ignoreSelectedBackgroundStep)) && !item.invalid\"\n [class.!bg-[#fdeaec]]=\"item.invalid\">\n @if ((step() <= (tabs().stepCompleted || -1))) {\n <i class=\"libs-ui-icon-check text-[#ffffff]\"></i>\n } @else {\n <span [class.text-[#cdd0d6]]=\"disable()\">{{ step() }}</span>\n }\n </div>\n } @else {\n <div class=\"libs-ui-tab-header-center-item-step\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n <span>{{ step() }}</span>\n </div>\n }\n }\n @if (item.configButtonLeft) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonLeft.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonLeft.classInclude || ''\"\n [classIconLeft]=\"item.configButtonLeft.classIconLeft ||''\"\n [classLabel]=\"item.configButtonLeft.classLabel || ''\"\n [classIconRight]=\"item.configButtonLeft.classIconRight ||''\"\n [label]=\"item.configButtonLeft.label ||''\"\n [popover]=\"item.configButtonLeft.popover || {}\"\n (outClick)=\"handlerClickButton($event, 'configButtonLeft')\" />\n }\n @if (item[fieldLabel()]) {\n <div class=\"relative flex\"\n [style.maxWidth.px]=\"tabs().maxWidthTextLabelItem || 160\">\n <span LibsUiComponentsPopoverDirective\n [type]=\"'text'\"\n [config]=\"{position: {mode: step() === 1 ? 'start' : 'center', distance: 0}, zIndex: zIndex()}\"\n [attr.size]=\"size()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.!text-[#f15767]]=\"item.invalid\"\n [ignoreStopPropagationEvent]=\"true\"\n [classInclude]=\"'w-full libs-ui-tab-header-center-item-label '+ (item.classLabel || 'libs-ui-font-h6m') + \n (disableLabel() && (disable()) ? ' libs-ui-disable' : '') \n + (tabs().stepHasBackGround && (disable()) ? ' text-[#cdd0d6]' : '')\"\n [innerHTML]=\"labelComputed()\"></span>\n @if (item.hasRedDot) {\n <div class=\"absolute right-[-6px] top-[-2px] w-[6px] h-[6px] bg-[#ee2d41] rounded-[6px]\">\n </div>\n }\n </div>\n }\n @if (item.popover) {\n <i class=\"libs-ui-tab-header-center-item-icon ml-[8px] libs-ui-icon-tooltip-outline\"\n LibsUiComponentsPopoverDirective\n [config]=\"item.popover\"\n [ignoreStopPropagationEvent]=\"true\"\n [class.libs-ui-disable]=\"disable()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\">\n </i>\n }\n @if (item.iconRight) {\n <i class=\"libs-ui-tab-header-center-item-icon {{ item.iconRight }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconRight\"\n [config]=\"item.popoverIconRight\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (item.count !== undefined) {\n <libs_ui-components-badge [mode]=\"item.modeCount || 'x+'\"\n [count]=\"item.count\"\n [maxCount]=\"item.maxCount || 99\"\n [classCircle]=\"(item.classCircle || 'libs-ui-font-h5r') + (item.invalid ? ' !text-[#f15767] !bg-[#fdeaec]' : '')\"\n [active]=\"item[fieldKey()] === keySelected()\"\n [class.libs-ui-disable]=\"disable()\" />\n }\n @if (item.configButtonRight) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonRight.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonRight.classInclude || ''\"\n [classIconLeft]=\"item.configButtonRight.classIconLeft ||''\"\n [classLabel]=\"item.configButtonRight.classLabel || ''\"\n [classIconRight]=\"item.configButtonRight.classIconRight ||''\"\n [popover]=\"item.configButtonRight.popover || {}\"\n [label]=\"item.configButtonRight.label ||''\"\n (outClick)=\"handlerClickButton($event, 'configButtonRight')\" />\n }\n @if (tabs().actionRightConfig?.(); as right) {\n <libs_ui-components-popover [class]=\"right.classInclude || 'ml-[8px]'\"\n [class.libs-ui-tab-header-center-item-action]=\"right.onlyShowWhenHoverItemActive\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [mode]=\"'click-toggle'\"\n [ignoreStopPropagationEvent]=\"true\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [elementRefCustom]=\"right.onlyShowWhenHoverItemActive ? undefined : itemEl \"\n [config]=\"{\n zIndex: right.config?.()?.zIndex || 1000,\n maxHeight: right.config?.()?.maxHeight || 287,\n maxWidth: right.config?.()?.maxWidth || 2048,\n width: right.config?.()?.width || 220, \n direction: right.config?.()?.direction || 'bottom',\n template: right.config?.()?.template || actionEl,\n classInclude: (right.config?.()?.classInclude || '')+ ' !rounded-[4px] overflow-hidden',\n whiteTheme: true,\n ignoreArrow: true,\n position: right.config?.()?.position || { mode: 'start', distance: 0 }\n }\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outFunctionsControl)=\"handlerPopoverFunctionControlEvent($event)\">\n @if (right.customView) {\n <div [innerHtml]=\"item[fieldKey()] | LibsUiPipesCallFunctionInTemplatePipe:right.customView:item\"></div>\n } @else {\n <i [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.invalid]=\"item.invalid\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class]=\"right.onlyShowWhenHoverItemActive ? 'libs-ui-icon-more-vertical rotate-90 libs-ui-tab-header-center-item-icon' : 'libs-ui-icon-chevron-right rotate-90 libs-ui-tab-header-center-item-icon'\">\n </i>\n }\n </libs_ui-components-popover>\n <ng-template #actionEl>\n @if ((0 | LibsUiPipesCallFunctionInTemplatePipe:right.getListViewConfig:item: item[fieldKey()]: {valueIs0: 0} |async) ; as config) {\n <libs_ui-components-list [config]=\"config()\"\n [maxItemShow]=\"5\"\n [hiddenInputSearch]=\"true\"\n [paddingLeftItem]=\"true\"\n (outSelectKey)=\"handlerSelectedKey($event)\" />\n }\n </ng-template>\n }\n @if (tabs().allowRemove && tabs().items().length > 1) {\n <libs_ui-components-buttons-button [type]=\"tabs().configButtonRemove?.type || 'button-link-custom'\"\n [iconOnlyType]=\"tabs().configButtonRemove?.iconOnlyType || true\"\n [classInclude]=\"tabs().configButtonRemove?.classInclude || 'ml-[8px] !p-0'\"\n [classIconLeft]=\"tabs().configButtonRemove?.classIconLeft || 'libs-ui-icon-close'\"\n [classLabel]=\"tabs().configButtonRemove?.classLabel || ''\"\n [classIconRight]=\"tabs().configButtonRemove?.classIconRight ||''\"\n [popover]=\"tabs().configButtonRemove?.popover || {config: {content: 'i18n_delete'}}\"\n [label]=\"tabs().configButtonRemove?.label ||''\"\n [buttonCustom]=\"{\n configStepColor: {\n text: '#6a7383',\n text_hover: '#f15767',\n text_active: '#f15767',\n text_disable: '#cdd0d6'\n },\n rootColor: '#f15767'\n }\"\n (outClick)=\"handlerClickButton($event, 'remove')\" />\n }\n </div>\n }\n", styles: [".libs-ui-tab-header-center-item{position:relative;display:flex;align-items:center;flex-wrap:nowrap;padding:12px 0;height:100%;width:fit-content}.libs-ui-tab-header-center-item[active=true]:after{content:\"\";width:100%;height:2px;background-color:var(--libs-ui-color-default, #226ff5);position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item[invalid=true]:after{background-color:#f15767}.libs-ui-tab-header-center-item-image{width:20px;height:20px;border-radius:50%;margin-right:8px}.libs-ui-tab-header-center-item-icon{display:flex}.libs-ui-tab-header-center-item-icon:before{font-size:12px}.libs-ui-tab-header-center-item-label{font-family:var(--libs-ui-font-family-name, \"Arial\");color:#6a7383;font-size:11px}.libs-ui-tab-header-center-item-label[size=langer]{font-size:13px}.libs-ui-tab-header-center-item-label[completed=true]{color:#6a7383}.libs-ui-tab-header-center-item-label[active=true]{color:var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item-action{display:none}.libs-ui-tab-header-center-item-step{border-radius:50%;border:1px solid #9ca2ad;color:#9ca2ad;min-width:24px;min-height:24px;display:flex;align-items:center;justify-content:center;margin-right:8px}.libs-ui-tab-header-center-item-step[completed=true]{color:#6a7383;border:1px solid #6A7383}.libs-ui-tab-header-center-item-step[active=true]{color:var(--libs-ui-color-default, #226ff5);border:1px solid var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-]:before{color:#6a7383}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][completed=true]:before{color:#6a7383}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][active=true]:before{color:var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][invalid=true]:before{color:#f15767}.libs-ui-tab-header-center-item-hover:hover[active=false][disable=false]:after{content:\"\";width:100%;height:2px;background-color:#6a7383;position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item-hover:hover .libs-ui-tab-header-center-item-action[active=true],.libs-ui-tab-header-center-item-action-show .libs-ui-tab-header-center-item-action{display:flex}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: LibsUiComponentsButtonsButtonComponent, selector: "libs_ui-components-buttons-button", inputs: ["flagMouse", "type", "buttonCustom", "sizeButton", "label", "disable", "isPending", "imageLeft", "classInclude", "classIconLeft", "classIconRight", "classLabel", "iconOnlyType", "popover", "ignoreStopPropagationEvent", "zIndex", "widthLabelPopover", "styleIconLeft", "styleButton", "ignoreFocusWhenInputTab", "ignoreSetClickWhenShowPopover", "ignorePointerEvent", "isActive", "isHandlerEnterDocumentClickButton"], outputs: ["outClick", "outPopoverEvent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsBadgeComponent, selector: "libs_ui-components-badge", inputs: ["popoverConfig", "active", "count", "mode", "maxCount", "ignoreMarginDefault", "classCircle", "ignoreStopPropagationEvent"] }, { kind: "component", type: LibsUiComponentsListComponent, selector: "libs_ui-components-list", inputs: ["hiddenInputSearch", "dropdownTabKeyActive", "keySearch", "paddingLeftItem", "config", "autoSelectedFirstItemCallOutsideBefore", "isSearchOnline", "disable", "disableLabel", "labelConfig", "searchConfig", "searchPadding", "dividerClassInclude", "hasDivider", "buttonsOther", "hasButtonUnSelectOption", "clickExactly", "backgroundListCustom", "maxItemShow", "keySelected", "multiKeySelected", "keysDisableItem", "keysHiddenItem", "focusInputSearch", "skipFocusInputWhenKeySearchStoreUndefined", "functionGetItemsAutoAddList", "validRequired", "showValidateBottom", "zIndex", "loadingIconSize", "templateRefSearchNoData", "resetKeyWhenSelectAllKeyDropdown", "ignoreClassDisableDefaultWhenUseKeysDisableItem"], outputs: ["outSelectKey", "outSelectMultiKey", "outUnSelectMultiKey", "outClickButtonOther", "outFieldKey", "outChangeView", "outKeySearch", "outLoading", "outFunctionsControl", "outChangStageFlagMousePopover", "outLoadItemsComplete"] }, { kind: "pipe", type: LibsUiPipesCallFunctionInTemplatePipe, name: "LibsUiPipesCallFunctionInTemplatePipe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
107
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsTabsItemComponent, isStandalone: true, selector: "libs_ui-components-tabs-item", inputs: { ignoreCalculatorTab: { classPropertyName: "ignoreCalculatorTab", publicName: "ignoreCalculatorTab", isSignal: true, isRequired: true, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: true, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: true, transformFunction: null }, tabs: { classPropertyName: "tabs", publicName: "tabs", isSignal: true, isRequired: true, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, keySelected: { classPropertyName: "keySelected", publicName: "keySelected", isSignal: true, isRequired: true, transformFunction: null }, fieldLabel: { classPropertyName: "fieldLabel", publicName: "fieldLabel", isSignal: true, isRequired: true, transformFunction: null }, fieldKey: { classPropertyName: "fieldKey", publicName: "fieldKey", isSignal: true, isRequired: true, transformFunction: null }, cssDefault: { classPropertyName: "cssDefault", publicName: "cssDefault", isSignal: true, isRequired: true, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: true, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, disableLabel: { classPropertyName: "disableLabel", publicName: "disableLabel", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, changeViewTab: { classPropertyName: "changeViewTab", publicName: "changeViewTab", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { item: "itemChange", outAction: "outAction" }, ngImport: i0, template: " @if (item(); as item) {\n <div #itemEl\n class=\"libs-ui-tab-header-center-item {{ cssDefault() }} {{ item.classInclude || '' }} {{ item[fieldKey()] === keySelected() && tabs().classIncludeActiveItem ? tabs().classIncludeActiveItem : '' }}\"\n [attr.key]=\"item[fieldKey()]\"\n [attr.invalid]=\"item.invalid && !tabs().ignoreShowLineBottomInTab\"\n [attr.active]=\"item[fieldKey()] === keySelected() && !tabs().ignoreShowLineBottomInTab\"\n [attr.disable]=\"disable()\"\n [class.!cursor-pointer]=\"!disable()\"\n [class.!cursor-default]=\"disable()\"\n [class.libs-ui-tab-header-center-item-hover]=\"!tabs().ignoreShowLineBottomInTab\"\n [class.libs-ui-tab-header-center-item-action-show]=\"actionShowing()\">\n @if (tabs().hasImage) {\n <img class=\"libs-ui-tab-header-center-item-image {{ item.classImageInclude || '' }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverImage\"\n [config]=\"item.popoverImage\"\n [ignoreStopPropagationEvent]=\"true\"\n [class.libs-ui-disable]=\"disable()\"\n [src]=\"item.linkImage\"\n [attr.key]=\"item[fieldKey()]\"\n (error)=\"handlerImgError($event)\" />\n }\n @if (item.iconLeft) {\n <i class=\"libs-ui-tab-header-center-item-icon libs-ui-mr-8px {{ item.iconLeft }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconLeft\"\n [config]=\"item.popoverIconLeft\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (item.is_pin) {\n <i class=\"libs-ui-tab-header-center-item-icon mr-[8px] {{ item[fieldKey()] === keySelected() ? 'libs-ui-icon-pin-solid' : 'libs-ui-icon-pin-outline' }}\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (tabs().hasStep) {\n @if (tabs().stepHasBackGround) {\n <div class=\"libs-ui-tab-header-center-item-step !border-none libs-ui-font-h6m\"\n [class.!text-[#ffffff]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.!text-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.!text-[#f15767]]=\"item.invalid\"\n [class.bg-[#f8f9fa]]=\"step() > (tabs().stepCompleted || 0) && (tabs().ignoreSelectedBackgroundStep || disable()) && !item.invalid\"\n [class.bg-[#00bc62]]=\"step() <= (tabs().stepCompleted || -1) && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.bg-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.bg-[var(--libs-ui-color-light-2)]]=\"((item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep) || (step() > (tabs().stepCompleted || 0) && !tabs().ignoreSelectedBackgroundStep)) && !item.invalid\"\n [class.!bg-[#fdeaec]]=\"item.invalid\">\n @if ((step() <= (tabs().stepCompleted || -1))) {\n <i class=\"libs-ui-icon-check text-[#ffffff]\"></i>\n } @else {\n <span [class.text-[#cdd0d6]]=\"disable()\">{{ step() }}</span>\n }\n </div>\n } @else {\n <div class=\"libs-ui-tab-header-center-item-step\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n <span>{{ step() }}</span>\n </div>\n }\n }\n @if (item.configButtonLeft) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonLeft.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonLeft.classInclude || ''\"\n [classIconLeft]=\"item.configButtonLeft.classIconLeft ||''\"\n [classLabel]=\"item.configButtonLeft.classLabel || ''\"\n [classIconRight]=\"item.configButtonLeft.classIconRight ||''\"\n [label]=\"item.configButtonLeft.label ||''\"\n [popover]=\"item.configButtonLeft.popover || {}\"\n (outClick)=\"handlerClickButton($event, 'configButtonLeft')\" />\n }\n @if (item[fieldLabel()]) {\n <div class=\"relative flex\"\n [style.maxWidth.px]=\"tabs().maxWidthTextLabelItem || 160\">\n <span LibsUiComponentsPopoverDirective\n [type]=\"'text'\"\n [config]=\"{position: {mode: step() === 1 ? 'start' : 'center', distance: 0}, zIndex: zIndex()}\"\n [attr.size]=\"size()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.!text-[#f15767]]=\"item.invalid\"\n [ignoreStopPropagationEvent]=\"true\"\n [classInclude]=\"'w-full libs-ui-tab-header-center-item-label '+ (item.classLabel || 'libs-ui-font-h6m') + \n (disableLabel() && (disable()) ? ' libs-ui-disable' : '') \n + (tabs().stepHasBackGround && (disable()) ? ' text-[#cdd0d6]' : '')\"\n [innerHTML]=\"labelComputed()\"></span>\n @if (item.hasRedDot) {\n <div class=\"absolute right-[-6px] top-[-2px] w-[6px] h-[6px] bg-[#ee2d41] rounded-[6px]\">\n </div>\n }\n </div>\n }\n @if (item.popover) {\n <i class=\"libs-ui-tab-header-center-item-icon ml-[8px] libs-ui-icon-tooltip-outline\"\n LibsUiComponentsPopoverDirective\n [config]=\"item.popover\"\n [ignoreStopPropagationEvent]=\"true\"\n [class.libs-ui-disable]=\"disable()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\">\n </i>\n }\n @if (item.iconRight) {\n <i class=\"libs-ui-tab-header-center-item-icon {{ item.iconRight }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconRight\"\n [config]=\"item.popoverIconRight\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (item.count !== undefined) {\n <libs_ui-components-badge [mode]=\"item.modeCount || 'x+'\"\n [count]=\"item.count\"\n [maxCount]=\"item.maxCount || 99\"\n [classCircle]=\"(item.classCircle || 'libs-ui-font-h5r') + (item.invalid ? ' !text-[#f15767] !bg-[#fdeaec]' : '')\"\n [active]=\"item[fieldKey()] === keySelected()\"\n [class.libs-ui-disable]=\"disable()\" />\n }\n @if (item.configButtonRight) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonRight.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonRight.classInclude || ''\"\n [classIconLeft]=\"item.configButtonRight.classIconLeft ||''\"\n [classLabel]=\"item.configButtonRight.classLabel || ''\"\n [classIconRight]=\"item.configButtonRight.classIconRight ||''\"\n [popover]=\"item.configButtonRight.popover || {}\"\n [label]=\"item.configButtonRight.label ||''\"\n (outClick)=\"handlerClickButton($event, 'configButtonRight')\" />\n }\n @if (tabs().actionRightConfig?.(); as right) {\n <libs_ui-components-popover [class]=\"right.classInclude || 'ml-[8px]'\"\n [class.libs-ui-tab-header-center-item-action]=\"right.onlyShowWhenHoverItemActive\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [mode]=\"'click-toggle'\"\n [ignoreStopPropagationEvent]=\"true\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [elementRefCustom]=\"right.onlyShowWhenHoverItemActive ? undefined : itemEl \"\n [config]=\"{\n zIndex: right.config?.()?.zIndex || 1000,\n maxHeight: right.config?.()?.maxHeight || 287,\n maxWidth: right.config?.()?.maxWidth || 2048,\n width: right.config?.()?.width || 220, \n direction: right.config?.()?.direction || 'bottom',\n template: right.config?.()?.template || actionEl,\n classInclude: (right.config?.()?.classInclude || '')+ ' !rounded-[4px] overflow-hidden',\n whiteTheme: true,\n ignoreArrow: true,\n position: right.config?.()?.position || { mode: 'start', distance: 0 }\n }\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outFunctionsControl)=\"handlerPopoverFunctionControlEvent($event)\">\n @if (right.customView) {\n <div [innerHtml]=\"item[fieldKey()] | LibsUiPipesCallFunctionInTemplatePipe:right.customView:item\"></div>\n } @else {\n <i [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.invalid]=\"item.invalid\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class]=\"right.onlyShowWhenHoverItemActive ? 'libs-ui-icon-more-vertical rotate-90 libs-ui-tab-header-center-item-icon' : 'libs-ui-icon-chevron-right rotate-90 libs-ui-tab-header-center-item-icon'\">\n </i>\n }\n </libs_ui-components-popover>\n <ng-template #actionEl>\n @if ((0 | LibsUiPipesCallFunctionInTemplatePipe:right.getListViewConfig:item: item[fieldKey()]: {valueIs0: 0} |async) ; as config) {\n <libs_ui-components-list [config]=\"config()\"\n [maxItemShow]=\"5\"\n [hiddenInputSearch]=\"true\"\n [paddingLeftItem]=\"true\"\n (outSelectKey)=\"handlerSelectedKey($event)\" />\n }\n </ng-template>\n }\n @if (tabs().allowRemove && tabs().items().length > 1) {\n <libs_ui-components-buttons-button [type]=\"tabs().configButtonRemove?.type || 'button-link-custom'\"\n [iconOnlyType]=\"tabs().configButtonRemove?.iconOnlyType || true\"\n [classInclude]=\"tabs().configButtonRemove?.classInclude || 'ml-[8px] !p-0'\"\n [classIconLeft]=\"tabs().configButtonRemove?.classIconLeft || 'libs-ui-icon-close'\"\n [classLabel]=\"tabs().configButtonRemove?.classLabel || ''\"\n [classIconRight]=\"tabs().configButtonRemove?.classIconRight ||''\"\n [popover]=\"tabs().configButtonRemove?.popover || {config: {content: 'i18n_delete'}}\"\n [label]=\"tabs().configButtonRemove?.label ||''\"\n [buttonCustom]=\"{\n configStepColor: {\n text: '#6a7383',\n text_hover: '#f15767',\n text_active: '#f15767',\n text_disable: '#cdd0d6'\n },\n rootColor: '#f15767'\n }\"\n (outClick)=\"handlerClickButton($event, 'remove')\" />\n }\n </div>\n }\n", styles: [".libs-ui-tab-header-center-item{position:relative;display:flex;align-items:center;flex-wrap:nowrap;padding:12px 0;height:100%;width:fit-content}.libs-ui-tab-header-center-item[active=true]:after{content:\"\";width:100%;height:2px;background-color:var(--libs-ui-color-default, #226ff5);position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item[invalid=true]:after{background-color:#f15767}.libs-ui-tab-header-center-item-image{width:20px;height:20px;border-radius:50%;margin-right:8px}.libs-ui-tab-header-center-item-icon{display:flex}.libs-ui-tab-header-center-item-icon:before{font-size:12px}.libs-ui-tab-header-center-item-label{font-family:var(--libs-ui-font-family-name, \"Arial\");color:#6a7383;font-size:11px}.libs-ui-tab-header-center-item-label[size=langer]{font-size:13px}.libs-ui-tab-header-center-item-label[completed=true]{color:#6a7383}.libs-ui-tab-header-center-item-label[active=true]{color:var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item-action{display:none}.libs-ui-tab-header-center-item-step{border-radius:50%;border:1px solid #9ca2ad;color:#9ca2ad;min-width:24px;min-height:24px;display:flex;align-items:center;justify-content:center;margin-right:8px}.libs-ui-tab-header-center-item-step[completed=true]{color:#6a7383;border:1px solid #6A7383}.libs-ui-tab-header-center-item-step[active=true]{color:var(--libs-ui-color-default, #226ff5);border:1px solid var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-]:before,.libs-ui-tab-header-center-item i[class*=icon-font-3rd]:before{color:#6a7383}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][completed=true]:before,.libs-ui-tab-header-center-item i[class*=icon-font-3rd][completed=true]:before{color:#6a7383}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][active=true]:before,.libs-ui-tab-header-center-item i[class*=icon-font-3rd][active=true]:before{color:var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][invalid=true]:before,.libs-ui-tab-header-center-item i[class*=icon-font-3rd][invalid=true]:before{color:#f15767}.libs-ui-tab-header-center-item-hover:hover[active=false][disable=false]:after{content:\"\";width:100%;height:2px;background-color:#6a7383;position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item-hover:hover .libs-ui-tab-header-center-item-action[active=true],.libs-ui-tab-header-center-item-action-show .libs-ui-tab-header-center-item-action{display:flex}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: LibsUiComponentsButtonsButtonComponent, selector: "libs_ui-components-buttons-button", inputs: ["flagMouse", "type", "buttonCustom", "sizeButton", "label", "disable", "isPending", "imageLeft", "classInclude", "classIconLeft", "classIconRight", "classLabel", "iconOnlyType", "popover", "ignoreStopPropagationEvent", "zIndex", "widthLabelPopover", "styleIconLeft", "styleButton", "ignoreFocusWhenInputTab", "ignoreSetClickWhenShowPopover", "ignorePointerEvent", "isActive", "isHandlerEnterDocumentClickButton"], outputs: ["outClick", "outPopoverEvent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsBadgeComponent, selector: "libs_ui-components-badge", inputs: ["popoverConfig", "active", "count", "mode", "maxCount", "ignoreMarginDefault", "classCircle", "ignoreStopPropagationEvent"] }, { kind: "component", type: LibsUiComponentsListComponent, selector: "libs_ui-components-list", inputs: ["hiddenInputSearch", "dropdownTabKeyActive", "keySearch", "paddingLeftItem", "config", "autoSelectedFirstItemCallOutsideBefore", "isSearchOnline", "disable", "disableLabel", "labelConfig", "searchConfig", "searchPadding", "dividerClassInclude", "hasDivider", "buttonsOther", "hasButtonUnSelectOption", "clickExactly", "backgroundListCustom", "maxItemShow", "keySelected", "multiKeySelected", "keysDisableItem", "keysHiddenItem", "focusInputSearch", "skipFocusInputWhenKeySearchStoreUndefined", "functionGetItemsAutoAddList", "validRequired", "showValidateBottom", "zIndex", "loadingIconSize", "templateRefSearchNoData", "resetKeyWhenSelectAllKeyDropdown", "ignoreClassDisableDefaultWhenUseKeysDisableItem"], outputs: ["outSelectKey", "outSelectMultiKey", "outUnSelectMultiKey", "outClickButtonOther", "outFieldKey", "outChangeView", "outKeySearch", "outLoading", "outFunctionsControl", "outChangStageFlagMousePopover", "outLoadItemsComplete"] }, { kind: "pipe", type: LibsUiPipesCallFunctionInTemplatePipe, name: "LibsUiPipesCallFunctionInTemplatePipe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
108
108
  }
109
109
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsTabsItemComponent, decorators: [{
110
110
  type: Component,
@@ -115,6 +115,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
115
115
  LibsUiComponentsBadgeComponent,
116
116
  LibsUiComponentsListComponent,
117
117
  LibsUiPipesCallFunctionInTemplatePipe
118
- ], template: " @if (item(); as item) {\n <div #itemEl\n class=\"libs-ui-tab-header-center-item {{ cssDefault() }} {{ item.classInclude || '' }} {{ item[fieldKey()] === keySelected() && tabs().classIncludeActiveItem ? tabs().classIncludeActiveItem : '' }}\"\n [attr.key]=\"item[fieldKey()]\"\n [attr.invalid]=\"item.invalid && !tabs().ignoreShowLineBottomInTab\"\n [attr.active]=\"item[fieldKey()] === keySelected() && !tabs().ignoreShowLineBottomInTab\"\n [attr.disable]=\"disable()\"\n [class.!cursor-pointer]=\"!disable()\"\n [class.!cursor-default]=\"disable()\"\n [class.libs-ui-tab-header-center-item-hover]=\"!tabs().ignoreShowLineBottomInTab\"\n [class.libs-ui-tab-header-center-item-action-show]=\"actionShowing()\">\n @if (tabs().hasImage) {\n <img class=\"libs-ui-tab-header-center-item-image {{ item.classImageInclude || '' }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverImage\"\n [config]=\"item.popoverImage\"\n [ignoreStopPropagationEvent]=\"true\"\n [class.libs-ui-disable]=\"disable()\"\n [src]=\"item.linkImage\"\n [attr.key]=\"item[fieldKey()]\"\n (error)=\"handlerImgError($event)\" />\n }\n @if (item.iconLeft) {\n <i class=\"libs-ui-tab-header-center-item-icon libs-ui-mr-8px {{ item.iconLeft }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconLeft\"\n [config]=\"item.popoverIconLeft\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (item.is_pin) {\n <i class=\"libs-ui-tab-header-center-item-icon mr-[8px] {{ item[fieldKey()] === keySelected() ? 'libs-ui-icon-pin-solid' : 'libs-ui-icon-pin-outline' }}\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (tabs().hasStep) {\n @if (tabs().stepHasBackGround) {\n <div class=\"libs-ui-tab-header-center-item-step !border-none libs-ui-font-h6m\"\n [class.!text-[#ffffff]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.!text-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.!text-[#f15767]]=\"item.invalid\"\n [class.bg-[#f8f9fa]]=\"step() > (tabs().stepCompleted || 0) && (tabs().ignoreSelectedBackgroundStep || disable()) && !item.invalid\"\n [class.bg-[#00bc62]]=\"step() <= (tabs().stepCompleted || -1) && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.bg-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.bg-[var(--libs-ui-color-light-2)]]=\"((item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep) || (step() > (tabs().stepCompleted || 0) && !tabs().ignoreSelectedBackgroundStep)) && !item.invalid\"\n [class.!bg-[#fdeaec]]=\"item.invalid\">\n @if ((step() <= (tabs().stepCompleted || -1))) {\n <i class=\"libs-ui-icon-check text-[#ffffff]\"></i>\n } @else {\n <span [class.text-[#cdd0d6]]=\"disable()\">{{ step() }}</span>\n }\n </div>\n } @else {\n <div class=\"libs-ui-tab-header-center-item-step\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n <span>{{ step() }}</span>\n </div>\n }\n }\n @if (item.configButtonLeft) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonLeft.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonLeft.classInclude || ''\"\n [classIconLeft]=\"item.configButtonLeft.classIconLeft ||''\"\n [classLabel]=\"item.configButtonLeft.classLabel || ''\"\n [classIconRight]=\"item.configButtonLeft.classIconRight ||''\"\n [label]=\"item.configButtonLeft.label ||''\"\n [popover]=\"item.configButtonLeft.popover || {}\"\n (outClick)=\"handlerClickButton($event, 'configButtonLeft')\" />\n }\n @if (item[fieldLabel()]) {\n <div class=\"relative flex\"\n [style.maxWidth.px]=\"tabs().maxWidthTextLabelItem || 160\">\n <span LibsUiComponentsPopoverDirective\n [type]=\"'text'\"\n [config]=\"{position: {mode: step() === 1 ? 'start' : 'center', distance: 0}, zIndex: zIndex()}\"\n [attr.size]=\"size()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.!text-[#f15767]]=\"item.invalid\"\n [ignoreStopPropagationEvent]=\"true\"\n [classInclude]=\"'w-full libs-ui-tab-header-center-item-label '+ (item.classLabel || 'libs-ui-font-h6m') + \n (disableLabel() && (disable()) ? ' libs-ui-disable' : '') \n + (tabs().stepHasBackGround && (disable()) ? ' text-[#cdd0d6]' : '')\"\n [innerHTML]=\"labelComputed()\"></span>\n @if (item.hasRedDot) {\n <div class=\"absolute right-[-6px] top-[-2px] w-[6px] h-[6px] bg-[#ee2d41] rounded-[6px]\">\n </div>\n }\n </div>\n }\n @if (item.popover) {\n <i class=\"libs-ui-tab-header-center-item-icon ml-[8px] libs-ui-icon-tooltip-outline\"\n LibsUiComponentsPopoverDirective\n [config]=\"item.popover\"\n [ignoreStopPropagationEvent]=\"true\"\n [class.libs-ui-disable]=\"disable()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\">\n </i>\n }\n @if (item.iconRight) {\n <i class=\"libs-ui-tab-header-center-item-icon {{ item.iconRight }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconRight\"\n [config]=\"item.popoverIconRight\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (item.count !== undefined) {\n <libs_ui-components-badge [mode]=\"item.modeCount || 'x+'\"\n [count]=\"item.count\"\n [maxCount]=\"item.maxCount || 99\"\n [classCircle]=\"(item.classCircle || 'libs-ui-font-h5r') + (item.invalid ? ' !text-[#f15767] !bg-[#fdeaec]' : '')\"\n [active]=\"item[fieldKey()] === keySelected()\"\n [class.libs-ui-disable]=\"disable()\" />\n }\n @if (item.configButtonRight) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonRight.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonRight.classInclude || ''\"\n [classIconLeft]=\"item.configButtonRight.classIconLeft ||''\"\n [classLabel]=\"item.configButtonRight.classLabel || ''\"\n [classIconRight]=\"item.configButtonRight.classIconRight ||''\"\n [popover]=\"item.configButtonRight.popover || {}\"\n [label]=\"item.configButtonRight.label ||''\"\n (outClick)=\"handlerClickButton($event, 'configButtonRight')\" />\n }\n @if (tabs().actionRightConfig?.(); as right) {\n <libs_ui-components-popover [class]=\"right.classInclude || 'ml-[8px]'\"\n [class.libs-ui-tab-header-center-item-action]=\"right.onlyShowWhenHoverItemActive\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [mode]=\"'click-toggle'\"\n [ignoreStopPropagationEvent]=\"true\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [elementRefCustom]=\"right.onlyShowWhenHoverItemActive ? undefined : itemEl \"\n [config]=\"{\n zIndex: right.config?.()?.zIndex || 1000,\n maxHeight: right.config?.()?.maxHeight || 287,\n maxWidth: right.config?.()?.maxWidth || 2048,\n width: right.config?.()?.width || 220, \n direction: right.config?.()?.direction || 'bottom',\n template: right.config?.()?.template || actionEl,\n classInclude: (right.config?.()?.classInclude || '')+ ' !rounded-[4px] overflow-hidden',\n whiteTheme: true,\n ignoreArrow: true,\n position: right.config?.()?.position || { mode: 'start', distance: 0 }\n }\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outFunctionsControl)=\"handlerPopoverFunctionControlEvent($event)\">\n @if (right.customView) {\n <div [innerHtml]=\"item[fieldKey()] | LibsUiPipesCallFunctionInTemplatePipe:right.customView:item\"></div>\n } @else {\n <i [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.invalid]=\"item.invalid\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class]=\"right.onlyShowWhenHoverItemActive ? 'libs-ui-icon-more-vertical rotate-90 libs-ui-tab-header-center-item-icon' : 'libs-ui-icon-chevron-right rotate-90 libs-ui-tab-header-center-item-icon'\">\n </i>\n }\n </libs_ui-components-popover>\n <ng-template #actionEl>\n @if ((0 | LibsUiPipesCallFunctionInTemplatePipe:right.getListViewConfig:item: item[fieldKey()]: {valueIs0: 0} |async) ; as config) {\n <libs_ui-components-list [config]=\"config()\"\n [maxItemShow]=\"5\"\n [hiddenInputSearch]=\"true\"\n [paddingLeftItem]=\"true\"\n (outSelectKey)=\"handlerSelectedKey($event)\" />\n }\n </ng-template>\n }\n @if (tabs().allowRemove && tabs().items().length > 1) {\n <libs_ui-components-buttons-button [type]=\"tabs().configButtonRemove?.type || 'button-link-custom'\"\n [iconOnlyType]=\"tabs().configButtonRemove?.iconOnlyType || true\"\n [classInclude]=\"tabs().configButtonRemove?.classInclude || 'ml-[8px] !p-0'\"\n [classIconLeft]=\"tabs().configButtonRemove?.classIconLeft || 'libs-ui-icon-close'\"\n [classLabel]=\"tabs().configButtonRemove?.classLabel || ''\"\n [classIconRight]=\"tabs().configButtonRemove?.classIconRight ||''\"\n [popover]=\"tabs().configButtonRemove?.popover || {config: {content: 'i18n_delete'}}\"\n [label]=\"tabs().configButtonRemove?.label ||''\"\n [buttonCustom]=\"{\n configStepColor: {\n text: '#6a7383',\n text_hover: '#f15767',\n text_active: '#f15767',\n text_disable: '#cdd0d6'\n },\n rootColor: '#f15767'\n }\"\n (outClick)=\"handlerClickButton($event, 'remove')\" />\n }\n </div>\n }\n", styles: [".libs-ui-tab-header-center-item{position:relative;display:flex;align-items:center;flex-wrap:nowrap;padding:12px 0;height:100%;width:fit-content}.libs-ui-tab-header-center-item[active=true]:after{content:\"\";width:100%;height:2px;background-color:var(--libs-ui-color-default, #226ff5);position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item[invalid=true]:after{background-color:#f15767}.libs-ui-tab-header-center-item-image{width:20px;height:20px;border-radius:50%;margin-right:8px}.libs-ui-tab-header-center-item-icon{display:flex}.libs-ui-tab-header-center-item-icon:before{font-size:12px}.libs-ui-tab-header-center-item-label{font-family:var(--libs-ui-font-family-name, \"Arial\");color:#6a7383;font-size:11px}.libs-ui-tab-header-center-item-label[size=langer]{font-size:13px}.libs-ui-tab-header-center-item-label[completed=true]{color:#6a7383}.libs-ui-tab-header-center-item-label[active=true]{color:var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item-action{display:none}.libs-ui-tab-header-center-item-step{border-radius:50%;border:1px solid #9ca2ad;color:#9ca2ad;min-width:24px;min-height:24px;display:flex;align-items:center;justify-content:center;margin-right:8px}.libs-ui-tab-header-center-item-step[completed=true]{color:#6a7383;border:1px solid #6A7383}.libs-ui-tab-header-center-item-step[active=true]{color:var(--libs-ui-color-default, #226ff5);border:1px solid var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-]:before{color:#6a7383}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][completed=true]:before{color:#6a7383}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][active=true]:before{color:var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][invalid=true]:before{color:#f15767}.libs-ui-tab-header-center-item-hover:hover[active=false][disable=false]:after{content:\"\";width:100%;height:2px;background-color:#6a7383;position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item-hover:hover .libs-ui-tab-header-center-item-action[active=true],.libs-ui-tab-header-center-item-action-show .libs-ui-tab-header-center-item-action{display:flex}\n"] }]
118
+ ], template: " @if (item(); as item) {\n <div #itemEl\n class=\"libs-ui-tab-header-center-item {{ cssDefault() }} {{ item.classInclude || '' }} {{ item[fieldKey()] === keySelected() && tabs().classIncludeActiveItem ? tabs().classIncludeActiveItem : '' }}\"\n [attr.key]=\"item[fieldKey()]\"\n [attr.invalid]=\"item.invalid && !tabs().ignoreShowLineBottomInTab\"\n [attr.active]=\"item[fieldKey()] === keySelected() && !tabs().ignoreShowLineBottomInTab\"\n [attr.disable]=\"disable()\"\n [class.!cursor-pointer]=\"!disable()\"\n [class.!cursor-default]=\"disable()\"\n [class.libs-ui-tab-header-center-item-hover]=\"!tabs().ignoreShowLineBottomInTab\"\n [class.libs-ui-tab-header-center-item-action-show]=\"actionShowing()\">\n @if (tabs().hasImage) {\n <img class=\"libs-ui-tab-header-center-item-image {{ item.classImageInclude || '' }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverImage\"\n [config]=\"item.popoverImage\"\n [ignoreStopPropagationEvent]=\"true\"\n [class.libs-ui-disable]=\"disable()\"\n [src]=\"item.linkImage\"\n [attr.key]=\"item[fieldKey()]\"\n (error)=\"handlerImgError($event)\" />\n }\n @if (item.iconLeft) {\n <i class=\"libs-ui-tab-header-center-item-icon libs-ui-mr-8px {{ item.iconLeft }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconLeft\"\n [config]=\"item.popoverIconLeft\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (item.is_pin) {\n <i class=\"libs-ui-tab-header-center-item-icon mr-[8px] {{ item[fieldKey()] === keySelected() ? 'libs-ui-icon-pin-solid' : 'libs-ui-icon-pin-outline' }}\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (tabs().hasStep) {\n @if (tabs().stepHasBackGround) {\n <div class=\"libs-ui-tab-header-center-item-step !border-none libs-ui-font-h6m\"\n [class.!text-[#ffffff]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.!text-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.!text-[#f15767]]=\"item.invalid\"\n [class.bg-[#f8f9fa]]=\"step() > (tabs().stepCompleted || 0) && (tabs().ignoreSelectedBackgroundStep || disable()) && !item.invalid\"\n [class.bg-[#00bc62]]=\"step() <= (tabs().stepCompleted || -1) && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.bg-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.bg-[var(--libs-ui-color-light-2)]]=\"((item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep) || (step() > (tabs().stepCompleted || 0) && !tabs().ignoreSelectedBackgroundStep)) && !item.invalid\"\n [class.!bg-[#fdeaec]]=\"item.invalid\">\n @if ((step() <= (tabs().stepCompleted || -1))) {\n <i class=\"libs-ui-icon-check text-[#ffffff]\"></i>\n } @else {\n <span [class.text-[#cdd0d6]]=\"disable()\">{{ step() }}</span>\n }\n </div>\n } @else {\n <div class=\"libs-ui-tab-header-center-item-step\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n <span>{{ step() }}</span>\n </div>\n }\n }\n @if (item.configButtonLeft) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonLeft.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonLeft.classInclude || ''\"\n [classIconLeft]=\"item.configButtonLeft.classIconLeft ||''\"\n [classLabel]=\"item.configButtonLeft.classLabel || ''\"\n [classIconRight]=\"item.configButtonLeft.classIconRight ||''\"\n [label]=\"item.configButtonLeft.label ||''\"\n [popover]=\"item.configButtonLeft.popover || {}\"\n (outClick)=\"handlerClickButton($event, 'configButtonLeft')\" />\n }\n @if (item[fieldLabel()]) {\n <div class=\"relative flex\"\n [style.maxWidth.px]=\"tabs().maxWidthTextLabelItem || 160\">\n <span LibsUiComponentsPopoverDirective\n [type]=\"'text'\"\n [config]=\"{position: {mode: step() === 1 ? 'start' : 'center', distance: 0}, zIndex: zIndex()}\"\n [attr.size]=\"size()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.!text-[#f15767]]=\"item.invalid\"\n [ignoreStopPropagationEvent]=\"true\"\n [classInclude]=\"'w-full libs-ui-tab-header-center-item-label '+ (item.classLabel || 'libs-ui-font-h6m') + \n (disableLabel() && (disable()) ? ' libs-ui-disable' : '') \n + (tabs().stepHasBackGround && (disable()) ? ' text-[#cdd0d6]' : '')\"\n [innerHTML]=\"labelComputed()\"></span>\n @if (item.hasRedDot) {\n <div class=\"absolute right-[-6px] top-[-2px] w-[6px] h-[6px] bg-[#ee2d41] rounded-[6px]\">\n </div>\n }\n </div>\n }\n @if (item.popover) {\n <i class=\"libs-ui-tab-header-center-item-icon ml-[8px] libs-ui-icon-tooltip-outline\"\n LibsUiComponentsPopoverDirective\n [config]=\"item.popover\"\n [ignoreStopPropagationEvent]=\"true\"\n [class.libs-ui-disable]=\"disable()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\">\n </i>\n }\n @if (item.iconRight) {\n <i class=\"libs-ui-tab-header-center-item-icon {{ item.iconRight }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconRight\"\n [config]=\"item.popoverIconRight\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (item.count !== undefined) {\n <libs_ui-components-badge [mode]=\"item.modeCount || 'x+'\"\n [count]=\"item.count\"\n [maxCount]=\"item.maxCount || 99\"\n [classCircle]=\"(item.classCircle || 'libs-ui-font-h5r') + (item.invalid ? ' !text-[#f15767] !bg-[#fdeaec]' : '')\"\n [active]=\"item[fieldKey()] === keySelected()\"\n [class.libs-ui-disable]=\"disable()\" />\n }\n @if (item.configButtonRight) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonRight.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonRight.classInclude || ''\"\n [classIconLeft]=\"item.configButtonRight.classIconLeft ||''\"\n [classLabel]=\"item.configButtonRight.classLabel || ''\"\n [classIconRight]=\"item.configButtonRight.classIconRight ||''\"\n [popover]=\"item.configButtonRight.popover || {}\"\n [label]=\"item.configButtonRight.label ||''\"\n (outClick)=\"handlerClickButton($event, 'configButtonRight')\" />\n }\n @if (tabs().actionRightConfig?.(); as right) {\n <libs_ui-components-popover [class]=\"right.classInclude || 'ml-[8px]'\"\n [class.libs-ui-tab-header-center-item-action]=\"right.onlyShowWhenHoverItemActive\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [mode]=\"'click-toggle'\"\n [ignoreStopPropagationEvent]=\"true\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [elementRefCustom]=\"right.onlyShowWhenHoverItemActive ? undefined : itemEl \"\n [config]=\"{\n zIndex: right.config?.()?.zIndex || 1000,\n maxHeight: right.config?.()?.maxHeight || 287,\n maxWidth: right.config?.()?.maxWidth || 2048,\n width: right.config?.()?.width || 220, \n direction: right.config?.()?.direction || 'bottom',\n template: right.config?.()?.template || actionEl,\n classInclude: (right.config?.()?.classInclude || '')+ ' !rounded-[4px] overflow-hidden',\n whiteTheme: true,\n ignoreArrow: true,\n position: right.config?.()?.position || { mode: 'start', distance: 0 }\n }\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outFunctionsControl)=\"handlerPopoverFunctionControlEvent($event)\">\n @if (right.customView) {\n <div [innerHtml]=\"item[fieldKey()] | LibsUiPipesCallFunctionInTemplatePipe:right.customView:item\"></div>\n } @else {\n <i [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.invalid]=\"item.invalid\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class]=\"right.onlyShowWhenHoverItemActive ? 'libs-ui-icon-more-vertical rotate-90 libs-ui-tab-header-center-item-icon' : 'libs-ui-icon-chevron-right rotate-90 libs-ui-tab-header-center-item-icon'\">\n </i>\n }\n </libs_ui-components-popover>\n <ng-template #actionEl>\n @if ((0 | LibsUiPipesCallFunctionInTemplatePipe:right.getListViewConfig:item: item[fieldKey()]: {valueIs0: 0} |async) ; as config) {\n <libs_ui-components-list [config]=\"config()\"\n [maxItemShow]=\"5\"\n [hiddenInputSearch]=\"true\"\n [paddingLeftItem]=\"true\"\n (outSelectKey)=\"handlerSelectedKey($event)\" />\n }\n </ng-template>\n }\n @if (tabs().allowRemove && tabs().items().length > 1) {\n <libs_ui-components-buttons-button [type]=\"tabs().configButtonRemove?.type || 'button-link-custom'\"\n [iconOnlyType]=\"tabs().configButtonRemove?.iconOnlyType || true\"\n [classInclude]=\"tabs().configButtonRemove?.classInclude || 'ml-[8px] !p-0'\"\n [classIconLeft]=\"tabs().configButtonRemove?.classIconLeft || 'libs-ui-icon-close'\"\n [classLabel]=\"tabs().configButtonRemove?.classLabel || ''\"\n [classIconRight]=\"tabs().configButtonRemove?.classIconRight ||''\"\n [popover]=\"tabs().configButtonRemove?.popover || {config: {content: 'i18n_delete'}}\"\n [label]=\"tabs().configButtonRemove?.label ||''\"\n [buttonCustom]=\"{\n configStepColor: {\n text: '#6a7383',\n text_hover: '#f15767',\n text_active: '#f15767',\n text_disable: '#cdd0d6'\n },\n rootColor: '#f15767'\n }\"\n (outClick)=\"handlerClickButton($event, 'remove')\" />\n }\n </div>\n }\n", styles: [".libs-ui-tab-header-center-item{position:relative;display:flex;align-items:center;flex-wrap:nowrap;padding:12px 0;height:100%;width:fit-content}.libs-ui-tab-header-center-item[active=true]:after{content:\"\";width:100%;height:2px;background-color:var(--libs-ui-color-default, #226ff5);position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item[invalid=true]:after{background-color:#f15767}.libs-ui-tab-header-center-item-image{width:20px;height:20px;border-radius:50%;margin-right:8px}.libs-ui-tab-header-center-item-icon{display:flex}.libs-ui-tab-header-center-item-icon:before{font-size:12px}.libs-ui-tab-header-center-item-label{font-family:var(--libs-ui-font-family-name, \"Arial\");color:#6a7383;font-size:11px}.libs-ui-tab-header-center-item-label[size=langer]{font-size:13px}.libs-ui-tab-header-center-item-label[completed=true]{color:#6a7383}.libs-ui-tab-header-center-item-label[active=true]{color:var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item-action{display:none}.libs-ui-tab-header-center-item-step{border-radius:50%;border:1px solid #9ca2ad;color:#9ca2ad;min-width:24px;min-height:24px;display:flex;align-items:center;justify-content:center;margin-right:8px}.libs-ui-tab-header-center-item-step[completed=true]{color:#6a7383;border:1px solid #6A7383}.libs-ui-tab-header-center-item-step[active=true]{color:var(--libs-ui-color-default, #226ff5);border:1px solid var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-]:before,.libs-ui-tab-header-center-item i[class*=icon-font-3rd]:before{color:#6a7383}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][completed=true]:before,.libs-ui-tab-header-center-item i[class*=icon-font-3rd][completed=true]:before{color:#6a7383}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][active=true]:before,.libs-ui-tab-header-center-item i[class*=icon-font-3rd][active=true]:before{color:var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][invalid=true]:before,.libs-ui-tab-header-center-item i[class*=icon-font-3rd][invalid=true]:before{color:#f15767}.libs-ui-tab-header-center-item-hover:hover[active=false][disable=false]:after{content:\"\";width:100%;height:2px;background-color:#6a7383;position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item-hover:hover .libs-ui-tab-header-center-item-action[active=true],.libs-ui-tab-header-center-item-action-show .libs-ui-tab-header-center-item-action{display:flex}\n"] }]
119
119
  }], ctorParameters: () => [] });
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvdGFicy9zcmMvaXRlbS9pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy90YWJzL3NyYy9pdGVtL2l0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckssT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0UsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUYsT0FBTyxFQUFnQyxnQ0FBZ0MsRUFBc0IsTUFBTSw2QkFBNkIsQ0FBQztBQUVqSSxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTdDLE9BQU8sRUFBb0IsNkJBQTZCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRixPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNqRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBa0I1QyxNQUFNLE9BQU8saUNBQWlDO0lBRTVDLG1CQUFtQjtJQUNULGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFB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N0IscUNBQXFDOzs0RkFHNUIsaUNBQWlDO2tCQWhCN0MsU0FBUzsrQkFFRSw4QkFBOEIsY0FHNUIsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLFNBQVM7d0JBQ1Qsc0NBQXNDO3dCQUN0QyxnQ0FBZ0M7d0JBQ2hDLDhCQUE4Qjt3QkFDOUIsNkJBQTZCO3dCQUM3QixxQ0FBcUM7cUJBQ3RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgRWxlbWVudFJlZiwgaW5qZWN0LCBpbnB1dCwgbW9kZWwsIE9uRGVzdHJveSwgT25Jbml0LCBvdXRwdXQsIHNpZ25hbCwgdW50cmFja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzQmFkZ2VDb21wb25lbnQgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLWJhZGdlJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNCdXR0b25zQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1idXR0b25zLWJ1dHRvbic7XG5pbXBvcnQgeyBJUG9wb3ZlckZ1bmN0aW9uQ29udHJvbEV2ZW50LCBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudCwgVFlQRV9QT1BPVkVSX0VWRU5UIH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1wb3BvdmVyJztcbmltcG9ydCB7IElFdmVudCB9IGZyb20gJ0BsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXMnO1xuaW1wb3J0IHsgZXNjYXBlSHRtbCwgdXVpZCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSVRhYnNJdGVtLCBJVGFic0l0ZW1FdmVudCwgSVRhYnMsIFRZUEVfVEFCX01PREUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RhYi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUxpc3REYXRhRW1pdEtleSwgTGlic1VpQ29tcG9uZW50c0xpc3RDb21wb25lbnQgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLWxpc3QnO1xuaW1wb3J0IHsgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZSB9IGZyb20gJ0BsaWJzLXVpL3BpcGVzLWNhbGwtZnVuY3Rpb24taW4tdGVtcGxhdGUnO1xuaW1wb3J0IHsgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnbGlic191aS1jb21wb25lbnRzLXRhYnMtaXRlbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaXRlbS5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIEFzeW5jUGlwZSxcbiAgICBMaWJzVWlDb21wb25lbnRzQnV0dG9uc0J1dHRvbkNvbXBvbmVudCxcbiAgICBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudCxcbiAgICBMaWJzVWlDb21wb25lbnRzQmFkZ2VDb21wb25lbnQsXG4gICAgTGlic1VpQ29tcG9uZW50c0xpc3RDb21wb25lbnQsXG4gICAgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNUYWJzSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICAvLyAjcmVnaW9uIFBST1BFUlRZXG4gIHByb3RlY3RlZCBsYWJlbENvbXB1dGVkID0gY29tcHV0ZWQoKCkgPT4gZXNjYXBlSHRtbCh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCh0aGlzLml0ZW0oKVt0aGlzLmZpZWxkTGFiZWwoKV0pKSk7XG4gIHByb3RlY3RlZCBhY3Rpb25TaG93aW5nID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICBwcml2YXRlIG11dGF0aW9uT2JzZXJ2ZXIgPSBzaWduYWw8TXV0YXRpb25PYnNlcnZlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSBtdXRhdGlvbk9ic2VydmVyU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgb25EZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIHBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCA9IHNpZ25hbDxJUG9wb3ZlckZ1bmN0aW9uQ29udHJvbEV2ZW50IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIC8vICNyZWdpb24gSU5QVVRcbiAgcmVhZG9ubHkgaWdub3JlQ2FsY3VsYXRvclRhYiA9IGlucHV0LnJlcXVpcmVkPGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IHN0ZXAgPSBpbnB1dC5yZXF1aXJlZDxudW1iZXI+KCk7XG4gIHJlYWRvbmx5IG1vZGUgPSBpbnB1dC5yZXF1aXJlZDxUWVBFX1RBQl9NT0RFPigpO1xuICByZWFkb25seSB0YWJzID0gaW5wdXQucmVxdWlyZWQ8SVRhYnM+KCk7XG4gIHJlYWRvbmx5IGl0ZW0gPSBtb2RlbC5yZXF1aXJlZDxJVGFic0l0ZW0+KCk7XG4gIHJlYWRvbmx5IGtleVNlbGVjdGVkID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICByZWFkb25seSBmaWVsZExhYmVsID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICByZWFkb25seSBmaWVsZEtleSA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgY3NzRGVmYXVsdCA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgc2l6ZSA9IGlucHV0LnJlcXVpcmVkPCdsYW5nZXInIHwgJ21lZGl1bSc+KCk7XG4gIHJlYWRvbmx5IGRpc2FibGUgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBkaXNhYmxlTGFiZWwgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSB6SW5kZXggPSBpbnB1dDxudW1iZXI+KCk7XG4gIHJlYWRvbmx5IGNoYW5nZVZpZXdUYWIgPSBpbnB1dC5yZXF1aXJlZDxTdWJqZWN0PHZvaWQ+PigpO1xuXG4gIC8vICNyZWdpb24gT1VUUFVUXG4gIHJlYWRvbmx5IG91dEFjdGlvbiA9IG91dHB1dDxJVGFic0l0ZW1FdmVudD4oKTtcblxuICAvKiBJTkpFQ1QqL1xuICBwcml2YXRlIGVsZW1lbnQgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMubW9kZSgpICE9PSAnbGVmdCcgfHwgdGhpcy5pZ25vcmVDYWxjdWxhdG9yVGFiKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy51cGRhdGVTcGVjaWZpY1dpZHRoKCk7XG4gICAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyKCk/LmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJTdWJqZWN0LnBpcGUoZGVib3VuY2VUaW1lKDEwKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlU3BlY2lmaWNXaWR0aCgpKTtcbiAgICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIuc2V0KG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHRoaXMubXV0YXRpb25PYnNlcnZlclN1YmplY3QubmV4dCgpKSk7XG4gICAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyKCk/Lm9ic2VydmUodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIHsgYXR0cmlidXRlczogdHJ1ZSwgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlIH0pO1xuICAgICAgICB9KVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuaXRlbSgpLmtleSkge1xuICAgICAgdGhpcy5pdGVtLnVwZGF0ZShpdGVtID0+ICh7IC4uLml0ZW0sIGtleTogdXVpZCgpIH0pKTtcbiAgICB9XG4gIH1cblxuICAvKiBGVU5DVElPTlMgKi9cbiAgcHJpdmF0ZSB1cGRhdGVTcGVjaWZpY1dpZHRoKCkge1xuICAgIGNvbnN0IHByZVNwZWNpZmljV2lkdGggPSB0aGlzLml0ZW0oKS5zcGVjaWZpY1dpZHRoO1xuICAgIGNvbnN0IHdpZHRoID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgaWYgKHdpZHRoICYmIHByZVNwZWNpZmljV2lkdGggIT09IHdpZHRoKSB7XG4gICAgICB0aGlzLml0ZW0udXBkYXRlKGl0ZW0gPT4gKHsgLi4uaXRlbSwgc3BlY2lmaWNXaWR0aDogd2lkdGggfSkpO1xuICAgICAgdGhpcy5jaGFuZ2VWaWV3VGFiKCkubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVySW1nRXJyb3IoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgKGV2ZW50IGFzIElFdmVudCkudGFyZ2V0LnNyYyA9IHRoaXMuaXRlbSgpLmxpbmtJbWFnZUVycm9yXG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlclNlbGVjdGVkS2V5KGV2ZW50OiBJTGlzdERhdGFFbWl0S2V5IHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFldmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm91dEFjdGlvbi5lbWl0KHsgaXRlbTogdGhpcy5pdGVtKCksIGtleTogZXZlbnQua2V5IGFzIHN0cmluZyB9KTtcbiAgICB0aGlzLnBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCgpPy5yZW1vdmVQb3BvdmVyT3ZlcmxheSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJQb3BvdmVyRnVuY3Rpb25Db250cm9sRXZlbnQoZXZlbnQ6IElQb3BvdmVyRnVuY3Rpb25Db250cm9sRXZlbnQpIHtcbiAgICB0aGlzLnBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudC5zZXQoZXZlbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJQb3BvdmVyRXZlbnQoZXZlbnQ6IFRZUEVfUE9QT1ZFUl9FVkVOVCkge1xuICAgIGlmIChldmVudCAhPT0gJ3Nob3cnICYmIGV2ZW50ICE9PSAncmVtb3ZlJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmFjdGlvblNob3dpbmcuc2V0KGV2ZW50ID09PSAnc2hvdycpO1xuICB9XG5cblxuICBwcm90ZWN0ZWQgaGFuZGxlckNsaWNrQnV0dG9uKGV2ZW50OiBFdmVudCwgdHlwZTogJ2NvbmZpZ0J1dHRvbkxlZnQnIHwgJ2NvbmZpZ0J1dHRvblJpZ2h0JyB8ICdyZW1vdmUnKSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKHR5cGUgPT09ICdyZW1vdmUnKSB7XG4gICAgICB0aGlzLm91dEFjdGlvbi5lbWl0KHsga2V5OiAncmVtb3ZlJywgaXRlbTogdGhpcy5pdGVtKCkgfSlcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5pdGVtKClbdHlwZV0/LmFjdGlvbjtcbiAgICBpZiAoYWN0aW9uKSB7XG4gICAgICBhY3Rpb24odGhpcy5pdGVtKCkpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubXV0YXRpb25PYnNlcnZlcigpPy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5vbkRlc3Ryb3kubmV4dCgpO1xuICAgIHRoaXMub25EZXN0cm95LmNvbXBsZXRlKCk7XG4gIH1cblxufVxuIiwiICBAaWYgKGl0ZW0oKTsgYXMgaXRlbSkge1xuICAgIDxkaXYgI2l0ZW1FbFxuICAgICAgY2xhc3M9XCJsaWJzLXVpLXRhYi1oZWFkZXItY2VudGVyLWl0ZW0ge3sgY3NzRGVmYXVsdCgpIH19IHt7IGl0ZW0uY2xhc3NJbmNsdWRlIHx8ICcnIH19IHt7IGl0ZW1bZmllbGRLZXkoKV0gPT09IGtleVNlbGVjdGVkKCkgJiYgdGFicygpLmNsYXNzSW5jbHVkZUFjdGl2ZUl0ZW0gPyB0YWJzKCkuY2xhc3NJbmNsdWRlQWN0aXZlSXRlbSA6ICcnIH19XCJcbiAgICAgIFthdHRyLmtleV09XCJpdGVtW2ZpZWxkS2V5KCldXCJcbiAgICAgIFthdHRyLmludmFsaWRdPVwiaXRlbS5pbnZhbGlkICYmICF0YWJzKCkuaWdub3JlU2hvd0xpbmVCb3R0b21JblRhYlwiXG4gICAgICBbYXR0ci5hY3RpdmVdPVwiaXRlbVtmaWVsZEtleSgpXSA9PT0ga2V5U2VsZWN0ZWQoKSAmJiAhdGFicygpLmlnbm9yZVNob3dMaW5lQm90dG9tSW5UYWJcIlxuICAgICAgW2F0dHIuZGlzYWJsZV09XCJkaXNhYmxlKClcIlxuICAgICAgW2NsYXNzLiFjdXJzb3ItcG9pbnRlcl09XCIhZGlzYWJsZSgpXCJcbiAgICAgIFtjbGFzcy4hY3Vyc29yLWRlZmF1bHRdPVwiZGlzYWJsZSgpXCJcbiAgICAgIFtjbGFzcy5saWJzLXVpLXRhYi1oZWFkZXItY2VudGVyLWl0ZW0taG92ZXJdPVwiIXRhYnMoKS5pZ25vcmVTaG93TGluZUJvdHRvbUluVGFiXCJcbiAgICAgIFtjbGFzcy5saWJzLXVpLXRhYi1oZWFkZXItY2VudGVyLWl0ZW0tYWN0aW9uLXNob3ddPVwiYWN0aW9uU2hvd2luZygpXCI+XG4gICAgICBAaWYgKHRhYnMoKS5oYXNJbWFnZSkge1xuICAgICAgICA8aW1nIGNsYXNzPVwibGlicy11aS10YWItaGVhZGVyLWNlbnRlci1pdGVtLWltYWdlIHt7IGl0ZW0uY2xhc3NJbWFnZUluY2x1ZGUgfHwgJycgfX1cIlxuICAgICAgICAgIExpYnNVaUNvbXBvbmVudHNQb3BvdmVyRGlyZWN0aXZlXG4gICAgICAgICAgW2lnbm9yZVNob3dQb3BvdmVyXT1cIiFpdGVtLnBvcG92ZXJJbWFnZVwiXG4gICAgICAgICAgW2NvbmZpZ109XCJpdGVtLnBvcG92ZXJJbWFnZVwiXG4gICAgICAgICAgW2lnbm9yZVN0b3BQcm9wYWdhdGlvbkV2ZW50XT1cInRydWVcIlxuICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwiZGlzYWJsZSgpXCJcbiAgICAgICAgICBbc3JjXT1cIml0ZW0ubGlua0ltYWdlXCJcbiAgICAgICAgICBbYXR0ci5rZXldPVwiaXRlbVtmaWVsZEtleSgpXVwiXG4gICAgICAgICAgKGVycm9yKT1cImhhbmRsZXJJbWdFcnJvcigkZXZlbnQpXCIgLz5cbiAgICAgIH1cbiAgICAgIEBpZiAoaXRlbS5pY29uTGVmdCkge1xuICAgICAgICA8aSBjbGFzcz1cImxpYnMtdWktdGFiLWhlYWRlci1jZW50ZXItaXRlbS1pY29uIGxpYnMtdWktbXItOHB4IHt7IGl0ZW0uaWNvbkxlZnQgfX1cIlxuICAgICAgICAgIExpYnNVaUNvbXBvbmVudHNQb3BvdmVyRGlyZWN0aXZlXG4gICAgICAgICAgW2lnbm9yZVNob3dQb3BvdmVyXT1cIiFpdGVtLnBvcG92ZXJJY29uTGVmdFwiXG4gICAgICAgICAgW2NvbmZpZ109XCJpdGVtLnBvcG92ZXJJY29uTGVmdFwiXG4gICAgICAgICAgW2lnbm9yZVN0b3BQcm9wYWdhdGlvbkV2ZW50XT1cInRydWVcIlxuICAgICAgICAgIFthdHRyLmFjdGl2ZV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpXCJcbiAgICAgICAgICBbYXR0ci5jb21wbGV0ZWRdPVwic3RlcCgpIDw9ICh0YWJzKCkuc3RlcENvbXBsZXRlZCB8fCAtMSlcIlxuICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwiZGlzYWJsZSgpXCI+XG4gICAgICAgIDwvaT5cbiAgICAgIH1cbiAgICAgIEBpZiAoaXRlbS5pc19waW4pIHtcbiAgICAgICAgPGkgY2xhc3M9XCJsaWJzLXVpLXRhYi1oZWFkZXItY2VudGVyLWl0ZW0taWNvbiBtci1bOHB4XSB7eyBpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpID8gJ2xpYnMtdWktaWNvbi1waW4tc29saWQnIDogJ2xpYnMtdWktaWNvbi1waW4tb3V0bGluZScgfX1cIlxuICAgICAgICAgIFthdHRyLmFjdGl2ZV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpXCJcbiAgICAgICAgICBbYXR0ci5jb21wbGV0ZWRdPVwic3RlcCgpIDw9ICh0YWJzKCkuc3RlcENvbXBsZXRlZCB8fCAtMSlcIlxuICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwiZGlzYWJsZSgpXCI+XG4gICAgICAgIDwvaT5cbiAgICAgIH1cbiAgICAgIEBpZiAodGFicygpLmhhc1N0ZXApIHtcbiAgICAgICAgQGlmICh0YWJzKCkuc3RlcEhhc0JhY2tHcm91bmQpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlicy11aS10YWItaGVhZGVyLWNlbnRlci1pdGVtLXN0ZXAgIWJvcmRlci1ub25lIGxpYnMtdWktZm9udC1oNm1cIlxuICAgICAgICAgICAgW2NsYXNzLiF0ZXh0LVsjZmZmZmZmXV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpICYmICF0YWJzKCkuaWdub3JlU2VsZWN0ZWRCYWNrZ3JvdW5kU3RlcCAmJiAhaXRlbS5pbnZhbGlkXCJcbiAgICAgICAgICAgIFtjbGFzcy4hdGV4dC1bdmFyKC0tbGlicy11aS1jb2xvci1kZWZhdWx0KV1dPVwiaXRlbVtmaWVsZEtleSgpXSA9PT0ga2V5U2VsZWN0ZWQoKSAmJiB0YWJzKCkuaWdub3JlU2VsZWN0ZWRCYWNrZ3JvdW5kU3RlcCAmJiAhaXRlbS5pbnZhbGlkXCJcbiAgICAgICAgICAgIFtjbGFzcy4hdGV4dC1bI2YxNTc2N11dPVwiaXRlbS5pbnZhbGlkXCJcbiAgICAgICAgICAgIFtjbGFzcy5iZy1bI2Y4ZjlmYV1dPVwic3RlcCgpID4gKHRhYnMoKS5zdGVwQ29tcGxldGVkIHx8IDApICYmICh0YWJzKCkuaWdub3JlU2VsZWN0ZWRCYWNrZ3JvdW5kU3RlcCB8fCBkaXNhYmxlKCkpICYmICFpdGVtLmludmFsaWRcIlxuICAgICAgICAgICAgW2NsYXNzLmJnLVsjMDBiYzYyXV09XCJzdGVwKCkgPD0gKHRhYnMoKS5zdGVwQ29tcGxldGVkIHx8IC0xKSAmJiAhdGFicygpLmlnbm9yZVNlbGVjdGVkQmFja2dyb3VuZFN0ZXAgJiYgIWl0ZW0uaW52YWxpZFwiXG4gICAgICAgICAgICBbY2xhc3MuYmctW3ZhcigtLWxpYnMtdWktY29sb3ItZGVmYXVsdCldXT1cIml0ZW1bZmllbGRLZXkoKV0gPT09IGtleVNlbGVjdGVkKCkgJiYgIXRhYnMoKS5pZ25vcmVTZWxlY3RlZEJhY2tncm91bmRTdGVwICYmICFpdGVtLmludmFsaWRcIlxuICAgICAgICAgICAgW2NsYXNzLmJnLVt2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTIpXV09XCIoKGl0ZW1bZmllbGRLZXkoKV0gPT09IGtleVNlbGVjdGVkKCkgJiYgdGFicygpLmlnbm9yZVNlbGVjdGVkQmFja2dyb3VuZFN0ZXApIHx8IChzdGVwKCkgPiAodGFicygpLnN0ZXBDb21wbGV0ZWQgfHwgMCkgJiYgIXRhYnMoKS5pZ25vcmVTZWxlY3RlZEJhY2tncm91bmRTdGVwKSkgJiYgIWl0ZW0uaW52YWxpZFwiXG4gICAgICAgICAgICBbY2xhc3MuIWJnLVsjZmRlYWVjXV09XCJpdGVtLmludmFsaWRcIj5cbiAgICAgICAgICAgIEBpZiAoKHN0ZXAoKSA8PSAodGFicygpLnN0ZXBDb21wbGV0ZWQgfHwgLTEpKSkge1xuICAgICAgICAgICAgICA8aSBjbGFzcz1cImxpYnMtdWktaWNvbi1jaGVjayB0ZXh0LVsjZmZmZmZmXVwiPjwvaT5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICA8c3BhbiBbY2xhc3MudGV4dC1bI2NkZDBkNl1dPVwiZGlzYWJsZSgpXCI+e3sgc3RlcCgpIH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlicy11aS10YWItaGVhZGVyLWNlbnRlci1pdGVtLXN0ZXBcIlxuICAgICAgICAgICAgW2F0dHIuYWN0aXZlXT1cIml0ZW1bZmllbGRLZXkoKV0gPT09IGtleVNlbGVjdGVkKClcIlxuICAgICAgICAgICAgW2F0dHIuY29tcGxldGVkXT1cInN0ZXAoKSA8PSAodGFicygpLnN0ZXBDb21wbGV0ZWQgfHwgLTEpXCJcbiAgICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwiZGlzYWJsZSgpXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyBzdGVwKCkgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBpZiAoaXRlbS5jb25maWdCdXR0b25MZWZ0KSB7XG4gICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtYnV0dG9ucy1idXR0b24gW3R5cGVdPVwiaXRlbS5jb25maWdCdXR0b25MZWZ0LnR5cGUgfHwgJ2J1dHRvbi1saW5rLXRoaXJkJ1wiXG4gICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCJpdGVtLmNvbmZpZ0J1dHRvbkxlZnQuY2xhc3NJbmNsdWRlIHx8ICcnXCJcbiAgICAgICAgICBbY2xhc3NJY29uTGVmdF09XCJpdGVtLmNvbmZpZ0J1dHRvbkxlZnQuY2xhc3NJY29uTGVmdCB8fCcnXCJcbiAgICAgICAgICBbY2xhc3NMYWJlbF09XCJpdGVtLmNvbmZpZ0J1dHRvbkxlZnQuY2xhc3NMYWJlbCB8fCAnJ1wiXG4gICAgICAgICAgW2NsYXNzSWNvblJpZ2h0XT1cIml0ZW0uY29uZmlnQnV0dG9uTGVmdC5jbGFzc0ljb25SaWdodCB8fCcnXCJcbiAgICAgICAgICBbbGFiZWxdPVwiaXRlbS5jb25maWdCdXR0b25MZWZ0LmxhYmVsIHx8JydcIlxuICAgICAgICAgIFtwb3BvdmVyXT1cIml0ZW0uY29uZmlnQnV0dG9uTGVmdC5wb3BvdmVyIHx8IHt9XCJcbiAgICAgICAgICAob3V0Q2xpY2spPVwiaGFuZGxlckNsaWNrQnV0dG9uKCRldmVudCwgJ2NvbmZpZ0J1dHRvbkxlZnQnKVwiIC8+XG4gICAgICB9XG4gICAgICBAaWYgKGl0ZW1bZmllbGRMYWJlbCgpXSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgZmxleFwiXG4gICAgICAgICAgW3N0eWxlLm1heFdpZHRoLnB4XT1cInRhYnMoKS5tYXhXaWR0aFRleHRMYWJlbEl0ZW0gfHwgMTYwXCI+XG4gICAgICAgICAgPHNwYW4gTGlic1VpQ29tcG9uZW50c1BvcG92ZXJEaXJlY3RpdmVcbiAgICAgICAgICAgIFt0eXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgICBbY29uZmlnXT1cIntwb3NpdGlvbjoge21vZGU6IHN0ZXAoKSA9PT0gMSA/ICdzdGFydCcgOiAnY2VudGVyJywgZGlzdGFuY2U6IDB9LCB6SW5kZXg6IHpJbmRleCgpfVwiXG4gICAgICAgICAgICBbYXR0ci5zaXplXT1cInNpemUoKVwiXG4gICAgICAgICAgICBbYXR0ci5hY3RpdmVdPVwiaXRlbVtmaWVsZEtleSgpXSA9PT0ga2V5U2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICBbYXR0ci5jb21wbGV0ZWRdPVwic3RlcCgpIDw9ICh0YWJzKCkuc3RlcENvbXBsZXRlZCB8fCAtMSlcIlxuICAgICAgICAgICAgW2NsYXNzLiF0ZXh0LVsjZjE1NzY3XV09XCJpdGVtLmludmFsaWRcIlxuICAgICAgICAgICAgW2lnbm9yZVN0b3BQcm9wYWdhdGlvbkV2ZW50XT1cInRydWVcIlxuICAgICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCIndy1mdWxsIGxpYnMtdWktdGFiLWhlYWRlci1jZW50ZXItaXRlbS1sYWJlbCAnKyAoaXRlbS5jbGFzc0xhYmVsIHx8ICdsaWJzLXVpLWZvbnQtaDZtJykgKyBcbiAgICAgICAgICAgICAgKGRpc2FibGVMYWJlbCgpICYmIChkaXNhYmxlKCkpID8gJyBsaWJzLXVpLWRpc2FibGUnIDogJycpIFxuICAgICAgICAgICAgICArICh0YWJzKCkuc3RlcEhhc0JhY2tHcm91bmQgJiYgKGRpc2FibGUoKSkgPyAnIHRleHQtWyNjZGQwZDZdJyA6ICcnKVwiXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cImxhYmVsQ29tcHV0ZWQoKVwiPjwvc3Bhbj5cbiAgICAgICAgICBAaWYgKGl0ZW0uaGFzUmVkRG90KSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgcmlnaHQtWy02cHhdIHRvcC1bLTJweF0gdy1bNnB4XSBoLVs2cHhdIGJnLVsjZWUyZDQxXSByb3VuZGVkLVs2cHhdXCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgQGlmIChpdGVtLnBvcG92ZXIpIHtcbiAgICAgICAgPGkgY2xhc3M9XCJsaWJzLXVpLXRhYi1oZWFkZXItY2VudGVyLWl0ZW0taWNvbiBtbC1bOHB4XSBsaWJzLXVpLWljb24tdG9vbHRpcC1vdXRsaW5lXCJcbiAgICAgICAgICBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckRpcmVjdGl2ZVxuICAgICAgICAgIFtjb25maWddPVwiaXRlbS5wb3BvdmVyXCJcbiAgICAgICAgICBbaWdub3JlU3RvcFByb3BhZ2F0aW9uRXZlbnRdPVwidHJ1ZVwiXG4gICAgICAgICAgW2NsYXNzLmxpYnMtdWktZGlzYWJsZV09XCJkaXNhYmxlKClcIlxuICAgICAgICAgIFthdHRyLmFjdGl2ZV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpXCJcbiAgICAgICAgICBbYXR0ci5jb21wbGV0ZWRdPVwic3RlcCgpIDw9ICh0YWJzKCkuc3RlcENvbXBsZXRlZCB8fCAtMSlcIj5cbiAgICAgICAgPC9pPlxuICAgICAgfVxuICAgICAgQGlmIChpdGVtLmljb25SaWdodCkge1xuICAgICAgICA8aSBjbGFzcz1cImxpYnMtdWktdGFiLWhlYWRlci1jZW50ZXItaXRlbS1pY29uIHt7IGl0ZW0uaWNvblJpZ2h0IH19XCJcbiAgICAgICAgICBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckRpcmVjdGl2ZVxuICAgICAgICAgIFtpZ25vcmVTaG93UG9wb3Zlcl09XCIhaXRlbS5wb3BvdmVySWNvblJpZ2h0XCJcbiAgICAgICAgICBbY29uZmlnXT1cIml0ZW0ucG9wb3Zlckljb25SaWdodFwiXG4gICAgICAgICAgW2lnbm9yZVN0b3BQcm9wYWdhdGlvbkV2ZW50XT1cInRydWVcIlxuICAgICAgICAgIFthdHRyLmFjdGl2ZV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpXCJcbiAgICAgICAgICBbYXR0ci5jb21wbGV0ZWRdPVwic3RlcCgpIDw9ICh0YWJzKCkuc3RlcENvbXBsZXRlZCB8fCAtMSlcIlxuICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwiZGlzYWJsZSgpXCI+XG4gICAgICAgIDwvaT5cbiAgICAgIH1cbiAgICAgIEBpZiAoaXRlbS5jb3VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtYmFkZ2UgW21vZGVdPVwiaXRlbS5tb2RlQ291bnQgfHwgJ3grJ1wiXG4gICAgICAgICAgW2NvdW50XT1cIml0ZW0uY291bnRcIlxuICAgICAgICAgIFttYXhDb3VudF09XCJpdGVtLm1heENvdW50IHx8IDk5XCJcbiAgICAgICAgICBbY2xhc3NDaXJjbGVdPVwiKGl0ZW0uY2xhc3NDaXJjbGUgfHwgJ2xpYnMtdWktZm9udC1oNXInKSArIChpdGVtLmludmFsaWQgPyAnICF0ZXh0LVsjZjE1NzY3XSAhYmctWyNmZGVhZWNdJyA6ICcnKVwiXG4gICAgICAgICAgW2FjdGl2ZV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpXCJcbiAgICAgICAgICBbY2xhc3MubGlicy11aS1kaXNhYmxlXT1cImRpc2FibGUoKVwiIC8+XG4gICAgICB9XG4gICAgICBAaWYgKGl0ZW0uY29uZmlnQnV0dG9uUmlnaHQpIHtcbiAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1idXR0b25zLWJ1dHRvbiBbdHlwZV09XCJpdGVtLmNvbmZpZ0J1dHRvblJpZ2h0LnR5cGUgfHwgJ2J1dHRvbi1saW5rLXRoaXJkJ1wiXG4gICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCJpdGVtLmNvbmZpZ0J1dHRvblJpZ2h0LmNsYXNzSW5jbHVkZSB8fCAnJ1wiXG4gICAgICAgICAgW2NsYXNzSWNvbkxlZnRdPVwiaXRlbS5jb25maWdCdXR0b25SaWdodC5jbGFzc0ljb25MZWZ0IHx8JydcIlxuICAgICAgICAgIFtjbGFzc0xhYmVsXT1cIml0ZW0uY29uZmlnQnV0dG9uUmlnaHQuY2xhc3NMYWJlbCB8fCAnJ1wiXG4gICAgICAgICAgW2NsYXNzSWNvblJpZ2h0XT1cIml0ZW0uY29uZmlnQnV0dG9uUmlnaHQuY2xhc3NJY29uUmlnaHQgfHwnJ1wiXG4gICAgICAgICAgW3BvcG92ZXJdPVwiaXRlbS5jb25maWdCdXR0b25SaWdodC5wb3BvdmVyIHx8IHt9XCJcbiAgICAgICAgICBbbGFiZWxdPVwiaXRlbS5jb25maWdCdXR0b25SaWdodC5sYWJlbCB8fCcnXCJcbiAgICAgICAgICAob3V0Q2xpY2spPVwiaGFuZGxlckNsaWNrQnV0dG9uKCRldmVudCwgJ2NvbmZpZ0J1dHRvblJpZ2h0JylcIiAvPlxuICAgICAgfVxuICAgICAgQGlmICh0YWJzKCkuYWN0aW9uUmlnaHRDb25maWc/LigpOyBhcyByaWdodCkge1xuICAgICAgICA8bGlic191aS1jb21wb25lbnRzLXBvcG92ZXIgW2NsYXNzXT1cInJpZ2h0LmNsYXNzSW5jbHVkZSB8fCAnbWwtWzhweF0nXCJcbiAgICAgICAgICBbY2xhc3MubGlicy11aS10YWItaGVhZGVyLWNlbnRlci1pdGVtLWFjdGlvbl09XCJyaWdodC5vbmx5U2hvd1doZW5Ib3Zlckl0ZW1BY3RpdmVcIlxuICAgICAgICAgIFthdHRyLmFjdGl2ZV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpXCJcbiAgICAgICAgICBbYXR0ci5jb21wbGV0ZWRdPVwic3RlcCgpIDw9ICh0YWJzKCkuc3RlcENvbXBsZXRlZCB8fCAtMSlcIlxuICAgICAgICAgIFttb2RlXT1cIidjbGljay10b2dnbGUnXCJcbiAgICAgICAgICBbaWdub3JlU3RvcFByb3BhZ2F0aW9uRXZlbnRdPVwidHJ1ZVwiXG4gICAgICAgICAgW2lnbm9yZUhpZGRlblBvcG92ZXJDb250ZW50V2hlbk1vdXNlTGVhdmVdPVwidHJ1ZVwiXG4gICAgICAgICAgW2VsZW1lbnRSZWZDdXN0b21dPVwicmlnaHQub25seVNob3dXaGVuSG92ZXJJdGVtQWN0aXZlID8gdW5kZWZpbmVkIDogaXRlbUVsIFwiXG4gICAgICAgICAgW2NvbmZpZ109XCJ7XG4gICAgICAgICAgICB6SW5kZXg6IHJpZ2h0LmNvbmZpZz8uKCk/LnpJbmRleCB8fCAxMDAwLFxuICAgICAgICAgICAgbWF4SGVpZ2h0OiByaWdodC5jb25maWc/LigpPy5tYXhIZWlnaHQgfHwgMjg3LFxuICAgICAgICAgICAgbWF4V2lkdGg6IHJpZ2h0LmNvbmZpZz8uKCk/Lm1heFdpZHRoIHx8IDIwNDgsXG4gICAgICAgICAgICB3aWR0aDogcmlnaHQuY29uZmlnPy4oKT8ud2lkdGggfHwgMjIwLCBcbiAgICAgICAgICAgIGRpcmVjdGlvbjogcmlnaHQuY29uZmlnPy4oKT8uZGlyZWN0aW9uIHx8ICdib3R0b20nLFxuICAgICAgICAgICAgdGVtcGxhdGU6IHJpZ2h0LmNvbmZpZz8uKCk/LnRlbXBsYXRlIHx8IGFjdGlvbkVsLFxuICAgICAgICAgICAgY2xhc3NJbmNsdWRlOiAocmlnaHQuY29uZmlnPy4oKT8uY2xhc3NJbmNsdWRlIHx8ICcnKSsgJyAhcm91bmRlZC1bNHB4XSBvdmVyZmxvdy1oaWRkZW4nLFxuICAgICAgICAgICAgd2hpdGVUaGVtZTogdHJ1ZSxcbiAgICAgICAgICAgIGlnbm9yZUFycm93OiB0cnVlLFxuICAgICAgICAgICAgcG9zaXRpb246IHJpZ2h0LmNvbmZpZz8uKCk/LnBvc2l0aW9uIHx8IHsgbW9kZTogJ3N0YXJ0JywgZGlzdGFuY2U6IDAgfVxuICAgICAgICAgIH1cIlxuICAgICAgICAgIChvdXRFdmVudCk9XCJoYW5kbGVyUG9wb3ZlckV2ZW50KCRldmVudClcIlxuICAgICAgICAgIChvdXRGdW5jdGlvbnNDb250cm9sKT1cImhhbmRsZXJQb3BvdmVyRnVuY3Rpb25Db250cm9sRXZlbnQoJGV2ZW50KVwiPlxuICAgICAgICAgIEBpZiAocmlnaHQuY3VzdG9tVmlldykge1xuICAgICAgICAgICAgPGRpdiBbaW5uZXJIdG1sXT1cIml0ZW1bZmllbGRLZXkoKV0gfCBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlOnJpZ2h0LmN1c3RvbVZpZXc6aXRlbVwiPjwvZGl2PlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPGkgW2F0dHIuYWN0aXZlXT1cIml0ZW1bZmllbGRLZXkoKV0gPT09IGtleVNlbGVjdGVkKClcIlxuICAgICAgICAgICAgICBbYXR0ci5pbnZhbGlkXT1cIml0ZW0uaW52YWxpZFwiXG4gICAgICAgICAgICAgIFthdHRyLmNvbXBsZXRlZF09XCJzdGVwKCkgPD0gKHRhYnMoKS5zdGVwQ29tcGxldGVkIHx8IC0xKVwiXG4gICAgICAgICAgICAgIFtjbGFzc109XCJyaWdodC5vbmx5U2hvd1doZW5Ib3Zlckl0ZW1BY3RpdmUgPyAnbGlicy11aS1pY29uLW1vcmUtdmVydGljYWwgcm90YXRlLTkwIGxpYnMtdWktdGFiLWhlYWRlci1jZW50ZXItaXRlbS1pY29uJyA6ICdsaWJzLXVpLWljb24tY2hldnJvbi1yaWdodCByb3RhdGUtOTAgbGlicy11aS10YWItaGVhZGVyLWNlbnRlci1pdGVtLWljb24nXCI+XG4gICAgICAgICAgICA8L2k+XG4gICAgICAgICAgfVxuICAgICAgICA8L2xpYnNfdWktY29tcG9uZW50cy1wb3BvdmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2FjdGlvbkVsPlxuICAgICAgICAgIEBpZiAoKDAgfCBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlOnJpZ2h0LmdldExpc3RWaWV3Q29uZmlnOml0ZW06IGl0ZW1bZmllbGRLZXkoKV06IHt2YWx1ZUlzMDogMH0gfGFzeW5jKSA7IGFzIGNvbmZpZykge1xuICAgICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1saXN0IFtjb25maWddPVwiY29uZmlnKClcIlxuICAgICAgICAgICAgICBbbWF4SXRlbVNob3ddPVwiNVwiXG4gICAgICAgICAgICAgIFtoaWRkZW5JbnB1dFNlYXJjaF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3BhZGRpbmdMZWZ0SXRlbV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgKG91dFNlbGVjdEtleSk9XCJoYW5kbGVyU2VsZWN0ZWRLZXkoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgfVxuICAgICAgQGlmICh0YWJzKCkuYWxsb3dSZW1vdmUgJiYgdGFicygpLml0ZW1zKCkubGVuZ3RoID4gMSkge1xuICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uIFt0eXBlXT1cInRhYnMoKS5jb25maWdCdXR0b25SZW1vdmU/LnR5cGUgfHwgJ2J1dHRvbi1saW5rLWN1c3RvbSdcIlxuICAgICAgICAgIFtpY29uT25seVR5cGVdPVwidGFicygpLmNvbmZpZ0J1dHRvblJlbW92ZT8uaWNvbk9ubHlUeXBlIHx8IHRydWVcIlxuICAgICAgICAgIFtjbGFzc0luY2x1ZGVdPVwidGFicygpLmNvbmZpZ0J1dHRvblJlbW92ZT8uY2xhc3NJbmNsdWRlIHx8ICdtbC1bOHB4XSAhcC0wJ1wiXG4gICAgICAgICAgW2NsYXNzSWNvbkxlZnRdPVwidGFicygpLmNvbmZpZ0J1dHRvblJlbW92ZT8uY2xhc3NJY29uTGVmdCB8fCAnbGlicy11aS1pY29uLWNsb3NlJ1wiXG4gICAgICAgICAgW2NsYXNzTGFiZWxdPVwidGFicygpLmNvbmZpZ0J1dHRvblJlbW92ZT8uY2xhc3NMYWJlbCB8fCAnJ1wiXG4gICAgICAgICAgW2NsYXNzSWNvblJpZ2h0XT1cInRhYnMoKS5jb25maWdCdXR0b25SZW1vdmU/LmNsYXNzSWNvblJpZ2h0IHx8JydcIlxuICAgICAgICAgIFtwb3BvdmVyXT1cInRhYnMoKS5jb25maWdCdXR0b25SZW1vdmU/LnBvcG92ZXIgfHwge2NvbmZpZzoge2NvbnRlbnQ6ICdpMThuX2RlbGV0ZSd9fVwiXG4gICAgICAgICAgW2xhYmVsXT1cInRhYnMoKS5jb25maWdCdXR0b25SZW1vdmU/LmxhYmVsIHx8JydcIlxuICAgICAgICAgIFtidXR0b25DdXN0b21dPVwie1xuICAgICAgICAgICAgY29uZmlnU3RlcENvbG9yOiB7XG4gICAgICAgICAgICAgIHRleHQ6ICcjNmE3MzgzJyxcbiAgICAgICAgICAgICAgdGV4dF9ob3ZlcjogJyNmMTU3NjcnLFxuICAgICAgICAgICAgICB0ZXh0X2FjdGl2ZTogJyNmMTU3NjcnLFxuICAgICAgICAgICAgICB0ZXh0X2Rpc2FibGU6ICcjY2RkMGQ2J1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJvb3RDb2xvcjogJyNmMTU3NjcnXG4gICAgICAgICAgfVwiXG4gICAgICAgICAgKG91dENsaWNrKT1cImhhbmRsZXJDbGlja0J1dHRvbigkZXZlbnQsICdyZW1vdmUnKVwiIC8+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIH1cbiJdfQ==
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvdGFicy9zcmMvaXRlbS9pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy90YWJzL3NyYy9pdGVtL2l0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckssT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0UsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUYsT0FBTyxFQUFnQyxnQ0FBZ0MsRUFBc0IsTUFBTSw2QkFBNkIsQ0FBQztBQUVqSSxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTdDLE9BQU8sRUFBb0IsNkJBQTZCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRixPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNqRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBa0I1QyxNQUFNLE9BQU8saUNBQWlDO0lBRTVDLG1CQUFtQjtJQUNULGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFB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N0IscUNBQXFDOzs0RkFHNUIsaUNBQWlDO2tCQWhCN0MsU0FBUzsrQkFFRSw4QkFBOEIsY0FHNUIsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLFNBQVM7d0JBQ1Qsc0NBQXNDO3dCQUN0QyxnQ0FBZ0M7d0JBQ2hDLDhCQUE4Qjt3QkFDOUIsNkJBQTZCO3dCQUM3QixxQ0FBcUM7cUJBQ3RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgRWxlbWVudFJlZiwgaW5qZWN0LCBpbnB1dCwgbW9kZWwsIE9uRGVzdHJveSwgT25Jbml0LCBvdXRwdXQsIHNpZ25hbCwgdW50cmFja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzQmFkZ2VDb21wb25lbnQgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLWJhZGdlJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNCdXR0b25zQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1idXR0b25zLWJ1dHRvbic7XG5pbXBvcnQgeyBJUG9wb3ZlckZ1bmN0aW9uQ29udHJvbEV2ZW50LCBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudCwgVFlQRV9QT1BPVkVSX0VWRU5UIH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1wb3BvdmVyJztcbmltcG9ydCB7IElFdmVudCB9IGZyb20gJ0BsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXMnO1xuaW1wb3J0IHsgZXNjYXBlSHRtbCwgdXVpZCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSVRhYnNJdGVtLCBJVGFic0l0ZW1FdmVudCwgSVRhYnMsIFRZUEVfVEFCX01PREUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RhYi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUxpc3REYXRhRW1pdEtleSwgTGlic1VpQ29tcG9uZW50c0xpc3RDb21wb25lbnQgfSBmcm9tICdAbGlicy11aS9jb21wb25lbnRzLWxpc3QnO1xuaW1wb3J0IHsgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZSB9IGZyb20gJ0BsaWJzLXVpL3BpcGVzLWNhbGwtZnVuY3Rpb24taW4tdGVtcGxhdGUnO1xuaW1wb3J0IHsgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnbGlic191aS1jb21wb25lbnRzLXRhYnMtaXRlbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaXRlbS5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIEFzeW5jUGlwZSxcbiAgICBMaWJzVWlDb21wb25lbnRzQnV0dG9uc0J1dHRvbkNvbXBvbmVudCxcbiAgICBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudCxcbiAgICBMaWJzVWlDb21wb25lbnRzQmFkZ2VDb21wb25lbnQsXG4gICAgTGlic1VpQ29tcG9uZW50c0xpc3RDb21wb25lbnQsXG4gICAgTGlic1VpUGlwZXNDYWxsRnVuY3Rpb25JblRlbXBsYXRlUGlwZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNUYWJzSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICAvLyAjcmVnaW9uIFBST1BFUlRZXG4gIHByb3RlY3RlZCBsYWJlbENvbXB1dGVkID0gY29tcHV0ZWQoKCkgPT4gZXNjYXBlSHRtbCh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCh0aGlzLml0ZW0oKVt0aGlzLmZpZWxkTGFiZWwoKV0pKSk7XG4gIHByb3RlY3RlZCBhY3Rpb25TaG93aW5nID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICBwcml2YXRlIG11dGF0aW9uT2JzZXJ2ZXIgPSBzaWduYWw8TXV0YXRpb25PYnNlcnZlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSBtdXRhdGlvbk9ic2VydmVyU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgb25EZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIHBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCA9IHNpZ25hbDxJUG9wb3ZlckZ1bmN0aW9uQ29udHJvbEV2ZW50IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIC8vICNyZWdpb24gSU5QVVRcbiAgcmVhZG9ubHkgaWdub3JlQ2FsY3VsYXRvclRhYiA9IGlucHV0LnJlcXVpcmVkPGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IHN0ZXAgPSBpbnB1dC5yZXF1aXJlZDxudW1iZXI+KCk7XG4gIHJlYWRvbmx5IG1vZGUgPSBpbnB1dC5yZXF1aXJlZDxUWVBFX1RBQl9NT0RFPigpO1xuICByZWFkb25seSB0YWJzID0gaW5wdXQucmVxdWlyZWQ8SVRhYnM+KCk7XG4gIHJlYWRvbmx5IGl0ZW0gPSBtb2RlbC5yZXF1aXJlZDxJVGFic0l0ZW0+KCk7XG4gIHJlYWRvbmx5IGtleVNlbGVjdGVkID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICByZWFkb25seSBmaWVsZExhYmVsID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICByZWFkb25seSBmaWVsZEtleSA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgY3NzRGVmYXVsdCA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgc2l6ZSA9IGlucHV0LnJlcXVpcmVkPCdsYW5nZXInIHwgJ21lZGl1bSc+KCk7XG4gIHJlYWRvbmx5IGRpc2FibGUgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBkaXNhYmxlTGFiZWwgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSB6SW5kZXggPSBpbnB1dDxudW1iZXI+KCk7XG4gIHJlYWRvbmx5IGNoYW5nZVZpZXdUYWIgPSBpbnB1dC5yZXF1aXJlZDxTdWJqZWN0PHZvaWQ+PigpO1xuXG4gIC8vICNyZWdpb24gT1VUUFVUXG4gIHJlYWRvbmx5IG91dEFjdGlvbiA9IG91dHB1dDxJVGFic0l0ZW1FdmVudD4oKTtcblxuICAvKiBJTkpFQ1QqL1xuICBwcml2YXRlIGVsZW1lbnQgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMubW9kZSgpICE9PSAnbGVmdCcgfHwgdGhpcy5pZ25vcmVDYWxjdWxhdG9yVGFiKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy51cGRhdGVTcGVjaWZpY1dpZHRoKCk7XG4gICAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyKCk/LmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJTdWJqZWN0LnBpcGUoZGVib3VuY2VUaW1lKDEwKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlU3BlY2lmaWNXaWR0aCgpKTtcbiAgICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIuc2V0KG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHRoaXMubXV0YXRpb25PYnNlcnZlclN1YmplY3QubmV4dCgpKSk7XG4gICAgICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyKCk/Lm9ic2VydmUodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIHsgYXR0cmlidXRlczogdHJ1ZSwgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlIH0pO1xuICAgICAgICB9KVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuaXRlbSgpLmtleSkge1xuICAgICAgdGhpcy5pdGVtLnVwZGF0ZShpdGVtID0+ICh7IC4uLml0ZW0sIGtleTogdXVpZCgpIH0pKTtcbiAgICB9XG4gIH1cblxuICAvKiBGVU5DVElPTlMgKi9cbiAgcHJpdmF0ZSB1cGRhdGVTcGVjaWZpY1dpZHRoKCkge1xuICAgIGNvbnN0IHByZVNwZWNpZmljV2lkdGggPSB0aGlzLml0ZW0oKS5zcGVjaWZpY1dpZHRoO1xuICAgIGNvbnN0IHdpZHRoID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgaWYgKHdpZHRoICYmIHByZVNwZWNpZmljV2lkdGggIT09IHdpZHRoKSB7XG4gICAgICB0aGlzLml0ZW0udXBkYXRlKGl0ZW0gPT4gKHsgLi4uaXRlbSwgc3BlY2lmaWNXaWR0aDogd2lkdGggfSkpO1xuICAgICAgdGhpcy5jaGFuZ2VWaWV3VGFiKCkubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVySW1nRXJyb3IoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgKGV2ZW50IGFzIElFdmVudCkudGFyZ2V0LnNyYyA9IHRoaXMuaXRlbSgpLmxpbmtJbWFnZUVycm9yXG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlclNlbGVjdGVkS2V5KGV2ZW50OiBJTGlzdERhdGFFbWl0S2V5IHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFldmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm91dEFjdGlvbi5lbWl0KHsgaXRlbTogdGhpcy5pdGVtKCksIGtleTogZXZlbnQua2V5IGFzIHN0cmluZyB9KTtcbiAgICB0aGlzLnBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCgpPy5yZW1vdmVQb3BvdmVyT3ZlcmxheSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJQb3BvdmVyRnVuY3Rpb25Db250cm9sRXZlbnQoZXZlbnQ6IElQb3BvdmVyRnVuY3Rpb25Db250cm9sRXZlbnQpIHtcbiAgICB0aGlzLnBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudC5zZXQoZXZlbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJQb3BvdmVyRXZlbnQoZXZlbnQ6IFRZUEVfUE9QT1ZFUl9FVkVOVCkge1xuICAgIGlmIChldmVudCAhPT0gJ3Nob3cnICYmIGV2ZW50ICE9PSAncmVtb3ZlJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmFjdGlvblNob3dpbmcuc2V0KGV2ZW50ID09PSAnc2hvdycpO1xuICB9XG5cblxuICBwcm90ZWN0ZWQgaGFuZGxlckNsaWNrQnV0dG9uKGV2ZW50OiBFdmVudCwgdHlwZTogJ2NvbmZpZ0J1dHRvbkxlZnQnIHwgJ2NvbmZpZ0J1dHRvblJpZ2h0JyB8ICdyZW1vdmUnKSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKHR5cGUgPT09ICdyZW1vdmUnKSB7XG4gICAgICB0aGlzLm91dEFjdGlvbi5lbWl0KHsga2V5OiAncmVtb3ZlJywgaXRlbTogdGhpcy5pdGVtKCkgfSlcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5pdGVtKClbdHlwZV0/LmFjdGlvbjtcbiAgICBpZiAoYWN0aW9uKSB7XG4gICAgICBhY3Rpb24odGhpcy5pdGVtKCkpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubXV0YXRpb25PYnNlcnZlcigpPy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5vbkRlc3Ryb3kubmV4dCgpO1xuICAgIHRoaXMub25EZXN0cm95LmNvbXBsZXRlKCk7XG4gIH1cblxufVxuIiwiICBAaWYgKGl0ZW0oKTsgYXMgaXRlbSkge1xuICAgIDxkaXYgI2l0ZW1FbFxuICAgICAgY2xhc3M9XCJsaWJzLXVpLXRhYi1oZWFkZXItY2VudGVyLWl0ZW0ge3sgY3NzRGVmYXVsdCgpIH19IHt7IGl0ZW0uY2xhc3NJbmNsdWRlIHx8ICcnIH19IHt7IGl0ZW1bZmllbGRLZXkoKV0gPT09IGtleVNlbGVjdGVkKCkgJiYgdGFicygpLmNsYXNzSW5jbHVkZUFjdGl2ZUl0ZW0gPyB0YWJzKCkuY2xhc3NJbmNsdWRlQWN0aXZlSXRlbSA6ICcnIH19XCJcbiAgICAgIFthdHRyLmtleV09XCJpdGVtW2ZpZWxkS2V5KCldXCJcbiAgICAgIFthdHRyLmludmFsaWRdPVwiaXRlbS5pbnZhbGlkICYmICF0YWJzKCkuaWdub3JlU2hvd0xpbmVCb3R0b21JblRhYlwiXG4gICAgICBbYXR0ci5hY3RpdmVdPVwiaXRlbVtmaWVsZEtleSgpXSA9PT0ga2V5U2VsZWN0ZWQoKSAmJiAhdGFicygpLmlnbm9yZVNob3dMaW5lQm90dG9tSW5UYWJcIlxuICAgICAgW2F0dHIuZGlzYWJsZV09XCJkaXNhYmxlKClcIlxuICAgICAgW2NsYXNzLiFjdXJzb3ItcG9pbnRlcl09XCIhZGlzYWJsZSgpXCJcbiAgICAgIFtjbGFzcy4hY3Vyc29yLWRlZmF1bHRdPVwiZGlzYWJsZSgpXCJcbiAgICAgIFtjbGFzcy5saWJzLXVpLXRhYi1oZWFkZXItY2VudGVyLWl0ZW0taG92ZXJdPVwiIXRhYnMoKS5pZ25vcmVTaG93TGluZUJvdHRvbUluVGFiXCJcbiAgICAgIFtjbGFzcy5saWJzLXVpLXRhYi1oZWFkZXItY2VudGVyLWl0ZW0tYWN0aW9uLXNob3ddPVwiYWN0aW9uU2hvd2luZygpXCI+XG4gICAgICBAaWYgKHRhYnMoKS5oYXNJbWFnZSkge1xuICAgICAgICA8aW1nIGNsYXNzPVwibGlicy11aS10YWItaGVhZGVyLWNlbnRlci1pdGVtLWltYWdlIHt7IGl0ZW0uY2xhc3NJbWFnZUluY2x1ZGUgfHwgJycgfX1cIlxuICAgICAgICAgIExpYnNVaUNvbXBvbmVudHNQb3BvdmVyRGlyZWN0aXZlXG4gICAgICAgICAgW2lnbm9yZVNob3dQb3BvdmVyXT1cIiFpdGVtLnBvcG92ZXJJbWFnZVwiXG4gICAgICAgICAgW2NvbmZpZ109XCJpdGVtLnBvcG92ZXJJbWFnZVwiXG4gICAgICAgICAgW2lnbm9yZVN0b3BQcm9wYWdhdGlvbkV2ZW50XT1cInRydWVcIlxuICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwiZGlzYWJsZSgpXCJcbiAgICAgICAgICBbc3JjXT1cIml0ZW0ubGlua0ltYWdlXCJcbiAgICAgICAgICBbYXR0ci5rZXldPVwiaXRlbVtmaWVsZEtleSgpXVwiXG4gICAgICAgICAgKGVycm9yKT1cImhhbmRsZXJJbWdFcnJvcigkZXZlbnQpXCIgLz5cbiAgICAgIH1cbiAgICAgIEBpZiAoaXRlbS5pY29uTGVmdCkge1xuICAgICAgICA8aSBjbGFzcz1cImxpYnMtdWktdGFiLWhlYWRlci1jZW50ZXItaXRlbS1pY29uIGxpYnMtdWktbXItOHB4IHt7IGl0ZW0uaWNvbkxlZnQgfX1cIlxuICAgICAgICAgIExpYnNVaUNvbXBvbmVudHNQb3BvdmVyRGlyZWN0aXZlXG4gICAgICAgICAgW2lnbm9yZVNob3dQb3BvdmVyXT1cIiFpdGVtLnBvcG92ZXJJY29uTGVmdFwiXG4gICAgICAgICAgW2NvbmZpZ109XCJpdGVtLnBvcG92ZXJJY29uTGVmdFwiXG4gICAgICAgICAgW2lnbm9yZVN0b3BQcm9wYWdhdGlvbkV2ZW50XT1cInRydWVcIlxuICAgICAgICAgIFthdHRyLmFjdGl2ZV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpXCJcbiAgICAgICAgICBbYXR0ci5jb21wbGV0ZWRdPVwic3RlcCgpIDw9ICh0YWJzKCkuc3RlcENvbXBsZXRlZCB8fCAtMSlcIlxuICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwiZGlzYWJsZSgpXCI+XG4gICAgICAgIDwvaT5cbiAgICAgIH1cbiAgICAgIEBpZiAoaXRlbS5pc19waW4pIHtcbiAgICAgICAgPGkgY2xhc3M9XCJsaWJzLXVpLXRhYi1oZWFkZXItY2VudGVyLWl0ZW0taWNvbiBtci1bOHB4XSB7eyBpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpID8gJ2xpYnMtdWktaWNvbi1waW4tc29saWQnIDogJ2xpYnMtdWktaWNvbi1waW4tb3V0bGluZScgfX1cIlxuICAgICAgICAgIFthdHRyLmFjdGl2ZV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpXCJcbiAgICAgICAgICBbYXR0ci5jb21wbGV0ZWRdPVwic3RlcCgpIDw9ICh0YWJzKCkuc3RlcENvbXBsZXRlZCB8fCAtMSlcIlxuICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwiZGlzYWJsZSgpXCI+XG4gICAgICAgIDwvaT5cbiAgICAgIH1cbiAgICAgIEBpZiAodGFicygpLmhhc1N0ZXApIHtcbiAgICAgICAgQGlmICh0YWJzKCkuc3RlcEhhc0JhY2tHcm91bmQpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlicy11aS10YWItaGVhZGVyLWNlbnRlci1pdGVtLXN0ZXAgIWJvcmRlci1ub25lIGxpYnMtdWktZm9udC1oNm1cIlxuICAgICAgICAgICAgW2NsYXNzLiF0ZXh0LVsjZmZmZmZmXV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpICYmICF0YWJzKCkuaWdub3JlU2VsZWN0ZWRCYWNrZ3JvdW5kU3RlcCAmJiAhaXRlbS5pbnZhbGlkXCJcbiAgICAgICAgICAgIFtjbGFzcy4hdGV4dC1bdmFyKC0tbGlicy11aS1jb2xvci1kZWZhdWx0KV1dPVwiaXRlbVtmaWVsZEtleSgpXSA9PT0ga2V5U2VsZWN0ZWQoKSAmJiB0YWJzKCkuaWdub3JlU2VsZWN0ZWRCYWNrZ3JvdW5kU3RlcCAmJiAhaXRlbS5pbnZhbGlkXCJcbiAgICAgICAgICAgIFtjbGFzcy4hdGV4dC1bI2YxNTc2N11dPVwiaXRlbS5pbnZhbGlkXCJcbiAgICAgICAgICAgIFtjbGFzcy5iZy1bI2Y4ZjlmYV1dPVwic3RlcCgpID4gKHRhYnMoKS5zdGVwQ29tcGxldGVkIHx8IDApICYmICh0YWJzKCkuaWdub3JlU2VsZWN0ZWRCYWNrZ3JvdW5kU3RlcCB8fCBkaXNhYmxlKCkpICYmICFpdGVtLmludmFsaWRcIlxuICAgICAgICAgICAgW2NsYXNzLmJnLVsjMDBiYzYyXV09XCJzdGVwKCkgPD0gKHRhYnMoKS5zdGVwQ29tcGxldGVkIHx8IC0xKSAmJiAhdGFicygpLmlnbm9yZVNlbGVjdGVkQmFja2dyb3VuZFN0ZXAgJiYgIWl0ZW0uaW52YWxpZFwiXG4gICAgICAgICAgICBbY2xhc3MuYmctW3ZhcigtLWxpYnMtdWktY29sb3ItZGVmYXVsdCldXT1cIml0ZW1bZmllbGRLZXkoKV0gPT09IGtleVNlbGVjdGVkKCkgJiYgIXRhYnMoKS5pZ25vcmVTZWxlY3RlZEJhY2tncm91bmRTdGVwICYmICFpdGVtLmludmFsaWRcIlxuICAgICAgICAgICAgW2NsYXNzLmJnLVt2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTIpXV09XCIoKGl0ZW1bZmllbGRLZXkoKV0gPT09IGtleVNlbGVjdGVkKCkgJiYgdGFicygpLmlnbm9yZVNlbGVjdGVkQmFja2dyb3VuZFN0ZXApIHx8IChzdGVwKCkgPiAodGFicygpLnN0ZXBDb21wbGV0ZWQgfHwgMCkgJiYgIXRhYnMoKS5pZ25vcmVTZWxlY3RlZEJhY2tncm91bmRTdGVwKSkgJiYgIWl0ZW0uaW52YWxpZFwiXG4gICAgICAgICAgICBbY2xhc3MuIWJnLVsjZmRlYWVjXV09XCJpdGVtLmludmFsaWRcIj5cbiAgICAgICAgICAgIEBpZiAoKHN0ZXAoKSA8PSAodGFicygpLnN0ZXBDb21wbGV0ZWQgfHwgLTEpKSkge1xuICAgICAgICAgICAgICA8aSBjbGFzcz1cImxpYnMtdWktaWNvbi1jaGVjayB0ZXh0LVsjZmZmZmZmXVwiPjwvaT5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICA8c3BhbiBbY2xhc3MudGV4dC1bI2NkZDBkNl1dPVwiZGlzYWJsZSgpXCI+e3sgc3RlcCgpIH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlicy11aS10YWItaGVhZGVyLWNlbnRlci1pdGVtLXN0ZXBcIlxuICAgICAgICAgICAgW2F0dHIuYWN0aXZlXT1cIml0ZW1bZmllbGRLZXkoKV0gPT09IGtleVNlbGVjdGVkKClcIlxuICAgICAgICAgICAgW2F0dHIuY29tcGxldGVkXT1cInN0ZXAoKSA8PSAodGFicygpLnN0ZXBDb21wbGV0ZWQgfHwgLTEpXCJcbiAgICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwiZGlzYWJsZSgpXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyBzdGVwKCkgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBpZiAoaXRlbS5jb25maWdCdXR0b25MZWZ0KSB7XG4gICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtYnV0dG9ucy1idXR0b24gW3R5cGVdPVwiaXRlbS5jb25maWdCdXR0b25MZWZ0LnR5cGUgfHwgJ2J1dHRvbi1saW5rLXRoaXJkJ1wiXG4gICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCJpdGVtLmNvbmZpZ0J1dHRvbkxlZnQuY2xhc3NJbmNsdWRlIHx8ICcnXCJcbiAgICAgICAgICBbY2xhc3NJY29uTGVmdF09XCJpdGVtLmNvbmZpZ0J1dHRvbkxlZnQuY2xhc3NJY29uTGVmdCB8fCcnXCJcbiAgICAgICAgICBbY2xhc3NMYWJlbF09XCJpdGVtLmNvbmZpZ0J1dHRvbkxlZnQuY2xhc3NMYWJlbCB8fCAnJ1wiXG4gICAgICAgICAgW2NsYXNzSWNvblJpZ2h0XT1cIml0ZW0uY29uZmlnQnV0dG9uTGVmdC5jbGFzc0ljb25SaWdodCB8fCcnXCJcbiAgICAgICAgICBbbGFiZWxdPVwiaXRlbS5jb25maWdCdXR0b25MZWZ0LmxhYmVsIHx8JydcIlxuICAgICAgICAgIFtwb3BvdmVyXT1cIml0ZW0uY29uZmlnQnV0dG9uTGVmdC5wb3BvdmVyIHx8IHt9XCJcbiAgICAgICAgICAob3V0Q2xpY2spPVwiaGFuZGxlckNsaWNrQnV0dG9uKCRldmVudCwgJ2NvbmZpZ0J1dHRvbkxlZnQnKVwiIC8+XG4gICAgICB9XG4gICAgICBAaWYgKGl0ZW1bZmllbGRMYWJlbCgpXSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgZmxleFwiXG4gICAgICAgICAgW3N0eWxlLm1heFdpZHRoLnB4XT1cInRhYnMoKS5tYXhXaWR0aFRleHRMYWJlbEl0ZW0gfHwgMTYwXCI+XG4gICAgICAgICAgPHNwYW4gTGlic1VpQ29tcG9uZW50c1BvcG92ZXJEaXJlY3RpdmVcbiAgICAgICAgICAgIFt0eXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgICBbY29uZmlnXT1cIntwb3NpdGlvbjoge21vZGU6IHN0ZXAoKSA9PT0gMSA/ICdzdGFydCcgOiAnY2VudGVyJywgZGlzdGFuY2U6IDB9LCB6SW5kZXg6IHpJbmRleCgpfVwiXG4gICAgICAgICAgICBbYXR0ci5zaXplXT1cInNpemUoKVwiXG4gICAgICAgICAgICBbYXR0ci5hY3RpdmVdPVwiaXRlbVtmaWVsZEtleSgpXSA9PT0ga2V5U2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICBbYXR0ci5jb21wbGV0ZWRdPVwic3RlcCgpIDw9ICh0YWJzKCkuc3RlcENvbXBsZXRlZCB8fCAtMSlcIlxuICAgICAgICAgICAgW2NsYXNzLiF0ZXh0LVsjZjE1NzY3XV09XCJpdGVtLmludmFsaWRcIlxuICAgICAgICAgICAgW2lnbm9yZVN0b3BQcm9wYWdhdGlvbkV2ZW50XT1cInRydWVcIlxuICAgICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCIndy1mdWxsIGxpYnMtdWktdGFiLWhlYWRlci1jZW50ZXItaXRlbS1sYWJlbCAnKyAoaXRlbS5jbGFzc0xhYmVsIHx8ICdsaWJzLXVpLWZvbnQtaDZtJykgKyBcbiAgICAgICAgICAgICAgKGRpc2FibGVMYWJlbCgpICYmIChkaXNhYmxlKCkpID8gJyBsaWJzLXVpLWRpc2FibGUnIDogJycpIFxuICAgICAgICAgICAgICArICh0YWJzKCkuc3RlcEhhc0JhY2tHcm91bmQgJiYgKGRpc2FibGUoKSkgPyAnIHRleHQtWyNjZGQwZDZdJyA6ICcnKVwiXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cImxhYmVsQ29tcHV0ZWQoKVwiPjwvc3Bhbj5cbiAgICAgICAgICBAaWYgKGl0ZW0uaGFzUmVkRG90KSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgcmlnaHQtWy02cHhdIHRvcC1bLTJweF0gdy1bNnB4XSBoLVs2cHhdIGJnLVsjZWUyZDQxXSByb3VuZGVkLVs2cHhdXCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgQGlmIChpdGVtLnBvcG92ZXIpIHtcbiAgICAgICAgPGkgY2xhc3M9XCJsaWJzLXVpLXRhYi1oZWFkZXItY2VudGVyLWl0ZW0taWNvbiBtbC1bOHB4XSBsaWJzLXVpLWljb24tdG9vbHRpcC1vdXRsaW5lXCJcbiAgICAgICAgICBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckRpcmVjdGl2ZVxuICAgICAgICAgIFtjb25maWddPVwiaXRlbS5wb3BvdmVyXCJcbiAgICAgICAgICBbaWdub3JlU3RvcFByb3BhZ2F0aW9uRXZlbnRdPVwidHJ1ZVwiXG4gICAgICAgICAgW2NsYXNzLmxpYnMtdWktZGlzYWJsZV09XCJkaXNhYmxlKClcIlxuICAgICAgICAgIFthdHRyLmFjdGl2ZV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpXCJcbiAgICAgICAgICBbYXR0ci5jb21wbGV0ZWRdPVwic3RlcCgpIDw9ICh0YWJzKCkuc3RlcENvbXBsZXRlZCB8fCAtMSlcIj5cbiAgICAgICAgPC9pPlxuICAgICAgfVxuICAgICAgQGlmIChpdGVtLmljb25SaWdodCkge1xuICAgICAgICA8aSBjbGFzcz1cImxpYnMtdWktdGFiLWhlYWRlci1jZW50ZXItaXRlbS1pY29uIHt7IGl0ZW0uaWNvblJpZ2h0IH19XCJcbiAgICAgICAgICBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckRpcmVjdGl2ZVxuICAgICAgICAgIFtpZ25vcmVTaG93UG9wb3Zlcl09XCIhaXRlbS5wb3BvdmVySWNvblJpZ2h0XCJcbiAgICAgICAgICBbY29uZmlnXT1cIml0ZW0ucG9wb3Zlckljb25SaWdodFwiXG4gICAgICAgICAgW2lnbm9yZVN0b3BQcm9wYWdhdGlvbkV2ZW50XT1cInRydWVcIlxuICAgICAgICAgIFthdHRyLmFjdGl2ZV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpXCJcbiAgICAgICAgICBbYXR0ci5jb21wbGV0ZWRdPVwic3RlcCgpIDw9ICh0YWJzKCkuc3RlcENvbXBsZXRlZCB8fCAtMSlcIlxuICAgICAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwiZGlzYWJsZSgpXCI+XG4gICAgICAgIDwvaT5cbiAgICAgIH1cbiAgICAgIEBpZiAoaXRlbS5jb3VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtYmFkZ2UgW21vZGVdPVwiaXRlbS5tb2RlQ291bnQgfHwgJ3grJ1wiXG4gICAgICAgICAgW2NvdW50XT1cIml0ZW0uY291bnRcIlxuICAgICAgICAgIFttYXhDb3VudF09XCJpdGVtLm1heENvdW50IHx8IDk5XCJcbiAgICAgICAgICBbY2xhc3NDaXJjbGVdPVwiKGl0ZW0uY2xhc3NDaXJjbGUgfHwgJ2xpYnMtdWktZm9udC1oNXInKSArIChpdGVtLmludmFsaWQgPyAnICF0ZXh0LVsjZjE1NzY3XSAhYmctWyNmZGVhZWNdJyA6ICcnKVwiXG4gICAgICAgICAgW2FjdGl2ZV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpXCJcbiAgICAgICAgICBbY2xhc3MubGlicy11aS1kaXNhYmxlXT1cImRpc2FibGUoKVwiIC8+XG4gICAgICB9XG4gICAgICBAaWYgKGl0ZW0uY29uZmlnQnV0dG9uUmlnaHQpIHtcbiAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1idXR0b25zLWJ1dHRvbiBbdHlwZV09XCJpdGVtLmNvbmZpZ0J1dHRvblJpZ2h0LnR5cGUgfHwgJ2J1dHRvbi1saW5rLXRoaXJkJ1wiXG4gICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCJpdGVtLmNvbmZpZ0J1dHRvblJpZ2h0LmNsYXNzSW5jbHVkZSB8fCAnJ1wiXG4gICAgICAgICAgW2NsYXNzSWNvbkxlZnRdPVwiaXRlbS5jb25maWdCdXR0b25SaWdodC5jbGFzc0ljb25MZWZ0IHx8JydcIlxuICAgICAgICAgIFtjbGFzc0xhYmVsXT1cIml0ZW0uY29uZmlnQnV0dG9uUmlnaHQuY2xhc3NMYWJlbCB8fCAnJ1wiXG4gICAgICAgICAgW2NsYXNzSWNvblJpZ2h0XT1cIml0ZW0uY29uZmlnQnV0dG9uUmlnaHQuY2xhc3NJY29uUmlnaHQgfHwnJ1wiXG4gICAgICAgICAgW3BvcG92ZXJdPVwiaXRlbS5jb25maWdCdXR0b25SaWdodC5wb3BvdmVyIHx8IHt9XCJcbiAgICAgICAgICBbbGFiZWxdPVwiaXRlbS5jb25maWdCdXR0b25SaWdodC5sYWJlbCB8fCcnXCJcbiAgICAgICAgICAob3V0Q2xpY2spPVwiaGFuZGxlckNsaWNrQnV0dG9uKCRldmVudCwgJ2NvbmZpZ0J1dHRvblJpZ2h0JylcIiAvPlxuICAgICAgfVxuICAgICAgQGlmICh0YWJzKCkuYWN0aW9uUmlnaHRDb25maWc/LigpOyBhcyByaWdodCkge1xuICAgICAgICA8bGlic191aS1jb21wb25lbnRzLXBvcG92ZXIgW2NsYXNzXT1cInJpZ2h0LmNsYXNzSW5jbHVkZSB8fCAnbWwtWzhweF0nXCJcbiAgICAgICAgICBbY2xhc3MubGlicy11aS10YWItaGVhZGVyLWNlbnRlci1pdGVtLWFjdGlvbl09XCJyaWdodC5vbmx5U2hvd1doZW5Ib3Zlckl0ZW1BY3RpdmVcIlxuICAgICAgICAgIFthdHRyLmFjdGl2ZV09XCJpdGVtW2ZpZWxkS2V5KCldID09PSBrZXlTZWxlY3RlZCgpXCJcbiAgICAgICAgICBbYXR0ci5jb21wbGV0ZWRdPVwic3RlcCgpIDw9ICh0YWJzKCkuc3RlcENvbXBsZXRlZCB8fCAtMSlcIlxuICAgICAgICAgIFttb2RlXT1cIidjbGljay10b2dnbGUnXCJcbiAgICAgICAgICBbaWdub3JlU3RvcFByb3BhZ2F0aW9uRXZlbnRdPVwidHJ1ZVwiXG4gICAgICAgICAgW2lnbm9yZUhpZGRlblBvcG92ZXJDb250ZW50V2hlbk1vdXNlTGVhdmVdPVwidHJ1ZVwiXG4gICAgICAgICAgW2VsZW1lbnRSZWZDdXN0b21dPVwicmlnaHQub25seVNob3dXaGVuSG92ZXJJdGVtQWN0aXZlID8gdW5kZWZpbmVkIDogaXRlbUVsIFwiXG4gICAgICAgICAgW2NvbmZpZ109XCJ7XG4gICAgICAgICAgICB6SW5kZXg6IHJpZ2h0LmNvbmZpZz8uKCk/LnpJbmRleCB8fCAxMDAwLFxuICAgICAgICAgICAgbWF4SGVpZ2h0OiByaWdodC5jb25maWc/LigpPy5tYXhIZWlnaHQgfHwgMjg3LFxuICAgICAgICAgICAgbWF4V2lkdGg6IHJpZ2h0LmNvbmZpZz8uKCk/Lm1heFdpZHRoIHx8IDIwNDgsXG4gICAgICAgICAgICB3aWR0aDogcmlnaHQuY29uZmlnPy4oKT8ud2lkdGggfHwgMjIwLCBcbiAgICAgICAgICAgIGRpcmVjdGlvbjogcmlnaHQuY29uZmlnPy4oKT8uZGlyZWN0aW9uIHx8ICdib3R0b20nLFxuICAgICAgICAgICAgdGVtcGxhdGU6IHJpZ2h0LmNvbmZpZz8uKCk/LnRlbXBsYXRlIHx8IGFjdGlvbkVsLFxuICAgICAgICAgICAgY2xhc3NJbmNsdWRlOiAocmlnaHQuY29uZmlnPy4oKT8uY2xhc3NJbmNsdWRlIHx8ICcnKSsgJyAhcm91bmRlZC1bNHB4XSBvdmVyZmxvdy1oaWRkZW4nLFxuICAgICAgICAgICAgd2hpdGVUaGVtZTogdHJ1ZSxcbiAgICAgICAgICAgIGlnbm9yZUFycm93OiB0cnVlLFxuICAgICAgICAgICAgcG9zaXRpb246IHJpZ2h0LmNvbmZpZz8uKCk/LnBvc2l0aW9uIHx8IHsgbW9kZTogJ3N0YXJ0JywgZGlzdGFuY2U6IDAgfVxuICAgICAgICAgIH1cIlxuICAgICAgICAgIChvdXRFdmVudCk9XCJoYW5kbGVyUG9wb3ZlckV2ZW50KCRldmVudClcIlxuICAgICAgICAgIChvdXRGdW5jdGlvbnNDb250cm9sKT1cImhhbmRsZXJQb3BvdmVyRnVuY3Rpb25Db250cm9sRXZlbnQoJGV2ZW50KVwiPlxuICAgICAgICAgIEBpZiAocmlnaHQuY3VzdG9tVmlldykge1xuICAgICAgICAgICAgPGRpdiBbaW5uZXJIdG1sXT1cIml0ZW1bZmllbGRLZXkoKV0gfCBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlOnJpZ2h0LmN1c3RvbVZpZXc6aXRlbVwiPjwvZGl2PlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPGkgW2F0dHIuYWN0aXZlXT1cIml0ZW1bZmllbGRLZXkoKV0gPT09IGtleVNlbGVjdGVkKClcIlxuICAgICAgICAgICAgICBbYXR0ci5pbnZhbGlkXT1cIml0ZW0uaW52YWxpZFwiXG4gICAgICAgICAgICAgIFthdHRyLmNvbXBsZXRlZF09XCJzdGVwKCkgPD0gKHRhYnMoKS5zdGVwQ29tcGxldGVkIHx8IC0xKVwiXG4gICAgICAgICAgICAgIFtjbGFzc109XCJyaWdodC5vbmx5U2hvd1doZW5Ib3Zlckl0ZW1BY3RpdmUgPyAnbGlicy11aS1pY29uLW1vcmUtdmVydGljYWwgcm90YXRlLTkwIGxpYnMtdWktdGFiLWhlYWRlci1jZW50ZXItaXRlbS1pY29uJyA6ICdsaWJzLXVpLWljb24tY2hldnJvbi1yaWdodCByb3RhdGUtOTAgbGlicy11aS10YWItaGVhZGVyLWNlbnRlci1pdGVtLWljb24nXCI+XG4gICAgICAgICAgICA8L2k+XG4gICAgICAgICAgfVxuICAgICAgICA8L2xpYnNfdWktY29tcG9uZW50cy1wb3BvdmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2FjdGlvbkVsPlxuICAgICAgICAgIEBpZiAoKDAgfCBMaWJzVWlQaXBlc0NhbGxGdW5jdGlvbkluVGVtcGxhdGVQaXBlOnJpZ2h0LmdldExpc3RWaWV3Q29uZmlnOml0ZW06IGl0ZW1bZmllbGRLZXkoKV06IHt2YWx1ZUlzMDogMH0gfGFzeW5jKSA7IGFzIGNvbmZpZykge1xuICAgICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1saXN0IFtjb25maWddPVwiY29uZmlnKClcIlxuICAgICAgICAgICAgICBbbWF4SXRlbVNob3ddPVwiNVwiXG4gICAgICAgICAgICAgIFtoaWRkZW5JbnB1dFNlYXJjaF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3BhZGRpbmdMZWZ0SXRlbV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgKG91dFNlbGVjdEtleSk9XCJoYW5kbGVyU2VsZWN0ZWRLZXkoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgfVxuICAgICAgQGlmICh0YWJzKCkuYWxsb3dSZW1vdmUgJiYgdGFicygpLml0ZW1zKCkubGVuZ3RoID4gMSkge1xuICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uIFt0eXBlXT1cInRhYnMoKS5jb25maWdCdXR0b25SZW1vdmU/LnR5cGUgfHwgJ2J1dHRvbi1saW5rLWN1c3RvbSdcIlxuICAgICAgICAgIFtpY29uT25seVR5cGVdPVwidGFicygpLmNvbmZpZ0J1dHRvblJlbW92ZT8uaWNvbk9ubHlUeXBlIHx8IHRydWVcIlxuICAgICAgICAgIFtjbGFzc0luY2x1ZGVdPVwidGFicygpLmNvbmZpZ0J1dHRvblJlbW92ZT8uY2xhc3NJbmNsdWRlIHx8ICdtbC1bOHB4XSAhcC0wJ1wiXG4gICAgICAgICAgW2NsYXNzSWNvbkxlZnRdPVwidGFicygpLmNvbmZpZ0J1dHRvblJlbW92ZT8uY2xhc3NJY29uTGVmdCB8fCAnbGlicy11aS1pY29uLWNsb3NlJ1wiXG4gICAgICAgICAgW2NsYXNzTGFiZWxdPVwidGFicygpLmNvbmZpZ0J1dHRvblJlbW92ZT8uY2xhc3NMYWJlbCB8fCAnJ1wiXG4gICAgICAgICAgW2NsYXNzSWNvblJpZ2h0XT1cInRhYnMoKS5jb25maWdCdXR0b25SZW1vdmU/LmNsYXNzSWNvblJpZ2h0IHx8JydcIlxuICAgICAgICAgIFtwb3BvdmVyXT1cInRhYnMoKS5jb25maWdCdXR0b25SZW1vdmU/LnBvcG92ZXIgfHwge2NvbmZpZzoge2NvbnRlbnQ6ICdpMThuX2RlbGV0ZSd9fVwiXG4gICAgICAgICAgW2xhYmVsXT1cInRhYnMoKS5jb25maWdCdXR0b25SZW1vdmU/LmxhYmVsIHx8JydcIlxuICAgICAgICAgIFtidXR0b25DdXN0b21dPVwie1xuICAgICAgICAgICAgY29uZmlnU3RlcENvbG9yOiB7XG4gICAgICAgICAgICAgIHRleHQ6ICcjNmE3MzgzJyxcbiAgICAgICAgICAgICAgdGV4dF9ob3ZlcjogJyNmMTU3NjcnLFxuICAgICAgICAgICAgICB0ZXh0X2FjdGl2ZTogJyNmMTU3NjcnLFxuICAgICAgICAgICAgICB0ZXh0X2Rpc2FibGU6ICcjY2RkMGQ2J1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJvb3RDb2xvcjogJyNmMTU3NjcnXG4gICAgICAgICAgfVwiXG4gICAgICAgICAgKG91dENsaWNrKT1cImhhbmRsZXJDbGlja0J1dHRvbigkZXZlbnQsICdyZW1vdmUnKVwiIC8+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIH1cbiJdfQ==
@@ -108,7 +108,7 @@ class LibsUiComponentsTabsItemComponent {
108
108
  this.onDestroy.complete();
109
109
  }
110
110
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsTabsItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
111
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsTabsItemComponent, isStandalone: true, selector: "libs_ui-components-tabs-item", inputs: { ignoreCalculatorTab: { classPropertyName: "ignoreCalculatorTab", publicName: "ignoreCalculatorTab", isSignal: true, isRequired: true, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: true, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: true, transformFunction: null }, tabs: { classPropertyName: "tabs", publicName: "tabs", isSignal: true, isRequired: true, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, keySelected: { classPropertyName: "keySelected", publicName: "keySelected", isSignal: true, isRequired: true, transformFunction: null }, fieldLabel: { classPropertyName: "fieldLabel", publicName: "fieldLabel", isSignal: true, isRequired: true, transformFunction: null }, fieldKey: { classPropertyName: "fieldKey", publicName: "fieldKey", isSignal: true, isRequired: true, transformFunction: null }, cssDefault: { classPropertyName: "cssDefault", publicName: "cssDefault", isSignal: true, isRequired: true, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: true, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, disableLabel: { classPropertyName: "disableLabel", publicName: "disableLabel", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, changeViewTab: { classPropertyName: "changeViewTab", publicName: "changeViewTab", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { item: "itemChange", outAction: "outAction" }, ngImport: i0, template: " @if (item(); as item) {\n <div #itemEl\n class=\"libs-ui-tab-header-center-item {{ cssDefault() }} {{ item.classInclude || '' }} {{ item[fieldKey()] === keySelected() && tabs().classIncludeActiveItem ? tabs().classIncludeActiveItem : '' }}\"\n [attr.key]=\"item[fieldKey()]\"\n [attr.invalid]=\"item.invalid && !tabs().ignoreShowLineBottomInTab\"\n [attr.active]=\"item[fieldKey()] === keySelected() && !tabs().ignoreShowLineBottomInTab\"\n [attr.disable]=\"disable()\"\n [class.!cursor-pointer]=\"!disable()\"\n [class.!cursor-default]=\"disable()\"\n [class.libs-ui-tab-header-center-item-hover]=\"!tabs().ignoreShowLineBottomInTab\"\n [class.libs-ui-tab-header-center-item-action-show]=\"actionShowing()\">\n @if (tabs().hasImage) {\n <img class=\"libs-ui-tab-header-center-item-image {{ item.classImageInclude || '' }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverImage\"\n [config]=\"item.popoverImage\"\n [ignoreStopPropagationEvent]=\"true\"\n [class.libs-ui-disable]=\"disable()\"\n [src]=\"item.linkImage\"\n [attr.key]=\"item[fieldKey()]\"\n (error)=\"handlerImgError($event)\" />\n }\n @if (item.iconLeft) {\n <i class=\"libs-ui-tab-header-center-item-icon libs-ui-mr-8px {{ item.iconLeft }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconLeft\"\n [config]=\"item.popoverIconLeft\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (item.is_pin) {\n <i class=\"libs-ui-tab-header-center-item-icon mr-[8px] {{ item[fieldKey()] === keySelected() ? 'libs-ui-icon-pin-solid' : 'libs-ui-icon-pin-outline' }}\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (tabs().hasStep) {\n @if (tabs().stepHasBackGround) {\n <div class=\"libs-ui-tab-header-center-item-step !border-none libs-ui-font-h6m\"\n [class.!text-[#ffffff]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.!text-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.!text-[#f15767]]=\"item.invalid\"\n [class.bg-[#f8f9fa]]=\"step() > (tabs().stepCompleted || 0) && (tabs().ignoreSelectedBackgroundStep || disable()) && !item.invalid\"\n [class.bg-[#00bc62]]=\"step() <= (tabs().stepCompleted || -1) && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.bg-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.bg-[var(--libs-ui-color-light-2)]]=\"((item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep) || (step() > (tabs().stepCompleted || 0) && !tabs().ignoreSelectedBackgroundStep)) && !item.invalid\"\n [class.!bg-[#fdeaec]]=\"item.invalid\">\n @if ((step() <= (tabs().stepCompleted || -1))) {\n <i class=\"libs-ui-icon-check text-[#ffffff]\"></i>\n } @else {\n <span [class.text-[#cdd0d6]]=\"disable()\">{{ step() }}</span>\n }\n </div>\n } @else {\n <div class=\"libs-ui-tab-header-center-item-step\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n <span>{{ step() }}</span>\n </div>\n }\n }\n @if (item.configButtonLeft) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonLeft.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonLeft.classInclude || ''\"\n [classIconLeft]=\"item.configButtonLeft.classIconLeft ||''\"\n [classLabel]=\"item.configButtonLeft.classLabel || ''\"\n [classIconRight]=\"item.configButtonLeft.classIconRight ||''\"\n [label]=\"item.configButtonLeft.label ||''\"\n [popover]=\"item.configButtonLeft.popover || {}\"\n (outClick)=\"handlerClickButton($event, 'configButtonLeft')\" />\n }\n @if (item[fieldLabel()]) {\n <div class=\"relative flex\"\n [style.maxWidth.px]=\"tabs().maxWidthTextLabelItem || 160\">\n <span LibsUiComponentsPopoverDirective\n [type]=\"'text'\"\n [config]=\"{position: {mode: step() === 1 ? 'start' : 'center', distance: 0}, zIndex: zIndex()}\"\n [attr.size]=\"size()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.!text-[#f15767]]=\"item.invalid\"\n [ignoreStopPropagationEvent]=\"true\"\n [classInclude]=\"'w-full libs-ui-tab-header-center-item-label '+ (item.classLabel || 'libs-ui-font-h6m') + \n (disableLabel() && (disable()) ? ' libs-ui-disable' : '') \n + (tabs().stepHasBackGround && (disable()) ? ' text-[#cdd0d6]' : '')\"\n [innerHTML]=\"labelComputed()\"></span>\n @if (item.hasRedDot) {\n <div class=\"absolute right-[-6px] top-[-2px] w-[6px] h-[6px] bg-[#ee2d41] rounded-[6px]\">\n </div>\n }\n </div>\n }\n @if (item.popover) {\n <i class=\"libs-ui-tab-header-center-item-icon ml-[8px] libs-ui-icon-tooltip-outline\"\n LibsUiComponentsPopoverDirective\n [config]=\"item.popover\"\n [ignoreStopPropagationEvent]=\"true\"\n [class.libs-ui-disable]=\"disable()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\">\n </i>\n }\n @if (item.iconRight) {\n <i class=\"libs-ui-tab-header-center-item-icon {{ item.iconRight }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconRight\"\n [config]=\"item.popoverIconRight\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (item.count !== undefined) {\n <libs_ui-components-badge [mode]=\"item.modeCount || 'x+'\"\n [count]=\"item.count\"\n [maxCount]=\"item.maxCount || 99\"\n [classCircle]=\"(item.classCircle || 'libs-ui-font-h5r') + (item.invalid ? ' !text-[#f15767] !bg-[#fdeaec]' : '')\"\n [active]=\"item[fieldKey()] === keySelected()\"\n [class.libs-ui-disable]=\"disable()\" />\n }\n @if (item.configButtonRight) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonRight.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonRight.classInclude || ''\"\n [classIconLeft]=\"item.configButtonRight.classIconLeft ||''\"\n [classLabel]=\"item.configButtonRight.classLabel || ''\"\n [classIconRight]=\"item.configButtonRight.classIconRight ||''\"\n [popover]=\"item.configButtonRight.popover || {}\"\n [label]=\"item.configButtonRight.label ||''\"\n (outClick)=\"handlerClickButton($event, 'configButtonRight')\" />\n }\n @if (tabs().actionRightConfig?.(); as right) {\n <libs_ui-components-popover [class]=\"right.classInclude || 'ml-[8px]'\"\n [class.libs-ui-tab-header-center-item-action]=\"right.onlyShowWhenHoverItemActive\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [mode]=\"'click-toggle'\"\n [ignoreStopPropagationEvent]=\"true\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [elementRefCustom]=\"right.onlyShowWhenHoverItemActive ? undefined : itemEl \"\n [config]=\"{\n zIndex: right.config?.()?.zIndex || 1000,\n maxHeight: right.config?.()?.maxHeight || 287,\n maxWidth: right.config?.()?.maxWidth || 2048,\n width: right.config?.()?.width || 220, \n direction: right.config?.()?.direction || 'bottom',\n template: right.config?.()?.template || actionEl,\n classInclude: (right.config?.()?.classInclude || '')+ ' !rounded-[4px] overflow-hidden',\n whiteTheme: true,\n ignoreArrow: true,\n position: right.config?.()?.position || { mode: 'start', distance: 0 }\n }\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outFunctionsControl)=\"handlerPopoverFunctionControlEvent($event)\">\n @if (right.customView) {\n <div [innerHtml]=\"item[fieldKey()] | LibsUiPipesCallFunctionInTemplatePipe:right.customView:item\"></div>\n } @else {\n <i [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.invalid]=\"item.invalid\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class]=\"right.onlyShowWhenHoverItemActive ? 'libs-ui-icon-more-vertical rotate-90 libs-ui-tab-header-center-item-icon' : 'libs-ui-icon-chevron-right rotate-90 libs-ui-tab-header-center-item-icon'\">\n </i>\n }\n </libs_ui-components-popover>\n <ng-template #actionEl>\n @if ((0 | LibsUiPipesCallFunctionInTemplatePipe:right.getListViewConfig:item: item[fieldKey()]: {valueIs0: 0} |async) ; as config) {\n <libs_ui-components-list [config]=\"config()\"\n [maxItemShow]=\"5\"\n [hiddenInputSearch]=\"true\"\n [paddingLeftItem]=\"true\"\n (outSelectKey)=\"handlerSelectedKey($event)\" />\n }\n </ng-template>\n }\n @if (tabs().allowRemove && tabs().items().length > 1) {\n <libs_ui-components-buttons-button [type]=\"tabs().configButtonRemove?.type || 'button-link-custom'\"\n [iconOnlyType]=\"tabs().configButtonRemove?.iconOnlyType || true\"\n [classInclude]=\"tabs().configButtonRemove?.classInclude || 'ml-[8px] !p-0'\"\n [classIconLeft]=\"tabs().configButtonRemove?.classIconLeft || 'libs-ui-icon-close'\"\n [classLabel]=\"tabs().configButtonRemove?.classLabel || ''\"\n [classIconRight]=\"tabs().configButtonRemove?.classIconRight ||''\"\n [popover]=\"tabs().configButtonRemove?.popover || {config: {content: 'i18n_delete'}}\"\n [label]=\"tabs().configButtonRemove?.label ||''\"\n [buttonCustom]=\"{\n configStepColor: {\n text: '#6a7383',\n text_hover: '#f15767',\n text_active: '#f15767',\n text_disable: '#cdd0d6'\n },\n rootColor: '#f15767'\n }\"\n (outClick)=\"handlerClickButton($event, 'remove')\" />\n }\n </div>\n }\n", styles: [".libs-ui-tab-header-center-item{position:relative;display:flex;align-items:center;flex-wrap:nowrap;padding:12px 0;height:100%;width:fit-content}.libs-ui-tab-header-center-item[active=true]:after{content:\"\";width:100%;height:2px;background-color:var(--libs-ui-color-default, #226ff5);position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item[invalid=true]:after{background-color:#f15767}.libs-ui-tab-header-center-item-image{width:20px;height:20px;border-radius:50%;margin-right:8px}.libs-ui-tab-header-center-item-icon{display:flex}.libs-ui-tab-header-center-item-icon:before{font-size:12px}.libs-ui-tab-header-center-item-label{font-family:var(--libs-ui-font-family-name, \"Arial\");color:#6a7383;font-size:11px}.libs-ui-tab-header-center-item-label[size=langer]{font-size:13px}.libs-ui-tab-header-center-item-label[completed=true]{color:#6a7383}.libs-ui-tab-header-center-item-label[active=true]{color:var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item-action{display:none}.libs-ui-tab-header-center-item-step{border-radius:50%;border:1px solid #9ca2ad;color:#9ca2ad;min-width:24px;min-height:24px;display:flex;align-items:center;justify-content:center;margin-right:8px}.libs-ui-tab-header-center-item-step[completed=true]{color:#6a7383;border:1px solid #6A7383}.libs-ui-tab-header-center-item-step[active=true]{color:var(--libs-ui-color-default, #226ff5);border:1px solid var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-]:before{color:#6a7383}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][completed=true]:before{color:#6a7383}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][active=true]:before{color:var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][invalid=true]:before{color:#f15767}.libs-ui-tab-header-center-item-hover:hover[active=false][disable=false]:after{content:\"\";width:100%;height:2px;background-color:#6a7383;position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item-hover:hover .libs-ui-tab-header-center-item-action[active=true],.libs-ui-tab-header-center-item-action-show .libs-ui-tab-header-center-item-action{display:flex}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: LibsUiComponentsButtonsButtonComponent, selector: "libs_ui-components-buttons-button", inputs: ["flagMouse", "type", "buttonCustom", "sizeButton", "label", "disable", "isPending", "imageLeft", "classInclude", "classIconLeft", "classIconRight", "classLabel", "iconOnlyType", "popover", "ignoreStopPropagationEvent", "zIndex", "widthLabelPopover", "styleIconLeft", "styleButton", "ignoreFocusWhenInputTab", "ignoreSetClickWhenShowPopover", "ignorePointerEvent", "isActive", "isHandlerEnterDocumentClickButton"], outputs: ["outClick", "outPopoverEvent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsBadgeComponent, selector: "libs_ui-components-badge", inputs: ["popoverConfig", "active", "count", "mode", "maxCount", "ignoreMarginDefault", "classCircle", "ignoreStopPropagationEvent"] }, { kind: "component", type: LibsUiComponentsListComponent, selector: "libs_ui-components-list", inputs: ["hiddenInputSearch", "dropdownTabKeyActive", "keySearch", "paddingLeftItem", "config", "autoSelectedFirstItemCallOutsideBefore", "isSearchOnline", "disable", "disableLabel", "labelConfig", "searchConfig", "searchPadding", "dividerClassInclude", "hasDivider", "buttonsOther", "hasButtonUnSelectOption", "clickExactly", "backgroundListCustom", "maxItemShow", "keySelected", "multiKeySelected", "keysDisableItem", "keysHiddenItem", "focusInputSearch", "skipFocusInputWhenKeySearchStoreUndefined", "functionGetItemsAutoAddList", "validRequired", "showValidateBottom", "zIndex", "loadingIconSize", "templateRefSearchNoData", "resetKeyWhenSelectAllKeyDropdown", "ignoreClassDisableDefaultWhenUseKeysDisableItem"], outputs: ["outSelectKey", "outSelectMultiKey", "outUnSelectMultiKey", "outClickButtonOther", "outFieldKey", "outChangeView", "outKeySearch", "outLoading", "outFunctionsControl", "outChangStageFlagMousePopover", "outLoadItemsComplete"] }, { kind: "pipe", type: LibsUiPipesCallFunctionInTemplatePipe, name: "LibsUiPipesCallFunctionInTemplatePipe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
111
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LibsUiComponentsTabsItemComponent, isStandalone: true, selector: "libs_ui-components-tabs-item", inputs: { ignoreCalculatorTab: { classPropertyName: "ignoreCalculatorTab", publicName: "ignoreCalculatorTab", isSignal: true, isRequired: true, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: true, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: true, transformFunction: null }, tabs: { classPropertyName: "tabs", publicName: "tabs", isSignal: true, isRequired: true, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, keySelected: { classPropertyName: "keySelected", publicName: "keySelected", isSignal: true, isRequired: true, transformFunction: null }, fieldLabel: { classPropertyName: "fieldLabel", publicName: "fieldLabel", isSignal: true, isRequired: true, transformFunction: null }, fieldKey: { classPropertyName: "fieldKey", publicName: "fieldKey", isSignal: true, isRequired: true, transformFunction: null }, cssDefault: { classPropertyName: "cssDefault", publicName: "cssDefault", isSignal: true, isRequired: true, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: true, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, disableLabel: { classPropertyName: "disableLabel", publicName: "disableLabel", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, changeViewTab: { classPropertyName: "changeViewTab", publicName: "changeViewTab", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { item: "itemChange", outAction: "outAction" }, ngImport: i0, template: " @if (item(); as item) {\n <div #itemEl\n class=\"libs-ui-tab-header-center-item {{ cssDefault() }} {{ item.classInclude || '' }} {{ item[fieldKey()] === keySelected() && tabs().classIncludeActiveItem ? tabs().classIncludeActiveItem : '' }}\"\n [attr.key]=\"item[fieldKey()]\"\n [attr.invalid]=\"item.invalid && !tabs().ignoreShowLineBottomInTab\"\n [attr.active]=\"item[fieldKey()] === keySelected() && !tabs().ignoreShowLineBottomInTab\"\n [attr.disable]=\"disable()\"\n [class.!cursor-pointer]=\"!disable()\"\n [class.!cursor-default]=\"disable()\"\n [class.libs-ui-tab-header-center-item-hover]=\"!tabs().ignoreShowLineBottomInTab\"\n [class.libs-ui-tab-header-center-item-action-show]=\"actionShowing()\">\n @if (tabs().hasImage) {\n <img class=\"libs-ui-tab-header-center-item-image {{ item.classImageInclude || '' }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverImage\"\n [config]=\"item.popoverImage\"\n [ignoreStopPropagationEvent]=\"true\"\n [class.libs-ui-disable]=\"disable()\"\n [src]=\"item.linkImage\"\n [attr.key]=\"item[fieldKey()]\"\n (error)=\"handlerImgError($event)\" />\n }\n @if (item.iconLeft) {\n <i class=\"libs-ui-tab-header-center-item-icon libs-ui-mr-8px {{ item.iconLeft }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconLeft\"\n [config]=\"item.popoverIconLeft\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (item.is_pin) {\n <i class=\"libs-ui-tab-header-center-item-icon mr-[8px] {{ item[fieldKey()] === keySelected() ? 'libs-ui-icon-pin-solid' : 'libs-ui-icon-pin-outline' }}\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (tabs().hasStep) {\n @if (tabs().stepHasBackGround) {\n <div class=\"libs-ui-tab-header-center-item-step !border-none libs-ui-font-h6m\"\n [class.!text-[#ffffff]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.!text-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.!text-[#f15767]]=\"item.invalid\"\n [class.bg-[#f8f9fa]]=\"step() > (tabs().stepCompleted || 0) && (tabs().ignoreSelectedBackgroundStep || disable()) && !item.invalid\"\n [class.bg-[#00bc62]]=\"step() <= (tabs().stepCompleted || -1) && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.bg-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.bg-[var(--libs-ui-color-light-2)]]=\"((item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep) || (step() > (tabs().stepCompleted || 0) && !tabs().ignoreSelectedBackgroundStep)) && !item.invalid\"\n [class.!bg-[#fdeaec]]=\"item.invalid\">\n @if ((step() <= (tabs().stepCompleted || -1))) {\n <i class=\"libs-ui-icon-check text-[#ffffff]\"></i>\n } @else {\n <span [class.text-[#cdd0d6]]=\"disable()\">{{ step() }}</span>\n }\n </div>\n } @else {\n <div class=\"libs-ui-tab-header-center-item-step\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n <span>{{ step() }}</span>\n </div>\n }\n }\n @if (item.configButtonLeft) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonLeft.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonLeft.classInclude || ''\"\n [classIconLeft]=\"item.configButtonLeft.classIconLeft ||''\"\n [classLabel]=\"item.configButtonLeft.classLabel || ''\"\n [classIconRight]=\"item.configButtonLeft.classIconRight ||''\"\n [label]=\"item.configButtonLeft.label ||''\"\n [popover]=\"item.configButtonLeft.popover || {}\"\n (outClick)=\"handlerClickButton($event, 'configButtonLeft')\" />\n }\n @if (item[fieldLabel()]) {\n <div class=\"relative flex\"\n [style.maxWidth.px]=\"tabs().maxWidthTextLabelItem || 160\">\n <span LibsUiComponentsPopoverDirective\n [type]=\"'text'\"\n [config]=\"{position: {mode: step() === 1 ? 'start' : 'center', distance: 0}, zIndex: zIndex()}\"\n [attr.size]=\"size()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.!text-[#f15767]]=\"item.invalid\"\n [ignoreStopPropagationEvent]=\"true\"\n [classInclude]=\"'w-full libs-ui-tab-header-center-item-label '+ (item.classLabel || 'libs-ui-font-h6m') + \n (disableLabel() && (disable()) ? ' libs-ui-disable' : '') \n + (tabs().stepHasBackGround && (disable()) ? ' text-[#cdd0d6]' : '')\"\n [innerHTML]=\"labelComputed()\"></span>\n @if (item.hasRedDot) {\n <div class=\"absolute right-[-6px] top-[-2px] w-[6px] h-[6px] bg-[#ee2d41] rounded-[6px]\">\n </div>\n }\n </div>\n }\n @if (item.popover) {\n <i class=\"libs-ui-tab-header-center-item-icon ml-[8px] libs-ui-icon-tooltip-outline\"\n LibsUiComponentsPopoverDirective\n [config]=\"item.popover\"\n [ignoreStopPropagationEvent]=\"true\"\n [class.libs-ui-disable]=\"disable()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\">\n </i>\n }\n @if (item.iconRight) {\n <i class=\"libs-ui-tab-header-center-item-icon {{ item.iconRight }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconRight\"\n [config]=\"item.popoverIconRight\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (item.count !== undefined) {\n <libs_ui-components-badge [mode]=\"item.modeCount || 'x+'\"\n [count]=\"item.count\"\n [maxCount]=\"item.maxCount || 99\"\n [classCircle]=\"(item.classCircle || 'libs-ui-font-h5r') + (item.invalid ? ' !text-[#f15767] !bg-[#fdeaec]' : '')\"\n [active]=\"item[fieldKey()] === keySelected()\"\n [class.libs-ui-disable]=\"disable()\" />\n }\n @if (item.configButtonRight) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonRight.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonRight.classInclude || ''\"\n [classIconLeft]=\"item.configButtonRight.classIconLeft ||''\"\n [classLabel]=\"item.configButtonRight.classLabel || ''\"\n [classIconRight]=\"item.configButtonRight.classIconRight ||''\"\n [popover]=\"item.configButtonRight.popover || {}\"\n [label]=\"item.configButtonRight.label ||''\"\n (outClick)=\"handlerClickButton($event, 'configButtonRight')\" />\n }\n @if (tabs().actionRightConfig?.(); as right) {\n <libs_ui-components-popover [class]=\"right.classInclude || 'ml-[8px]'\"\n [class.libs-ui-tab-header-center-item-action]=\"right.onlyShowWhenHoverItemActive\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [mode]=\"'click-toggle'\"\n [ignoreStopPropagationEvent]=\"true\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [elementRefCustom]=\"right.onlyShowWhenHoverItemActive ? undefined : itemEl \"\n [config]=\"{\n zIndex: right.config?.()?.zIndex || 1000,\n maxHeight: right.config?.()?.maxHeight || 287,\n maxWidth: right.config?.()?.maxWidth || 2048,\n width: right.config?.()?.width || 220, \n direction: right.config?.()?.direction || 'bottom',\n template: right.config?.()?.template || actionEl,\n classInclude: (right.config?.()?.classInclude || '')+ ' !rounded-[4px] overflow-hidden',\n whiteTheme: true,\n ignoreArrow: true,\n position: right.config?.()?.position || { mode: 'start', distance: 0 }\n }\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outFunctionsControl)=\"handlerPopoverFunctionControlEvent($event)\">\n @if (right.customView) {\n <div [innerHtml]=\"item[fieldKey()] | LibsUiPipesCallFunctionInTemplatePipe:right.customView:item\"></div>\n } @else {\n <i [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.invalid]=\"item.invalid\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class]=\"right.onlyShowWhenHoverItemActive ? 'libs-ui-icon-more-vertical rotate-90 libs-ui-tab-header-center-item-icon' : 'libs-ui-icon-chevron-right rotate-90 libs-ui-tab-header-center-item-icon'\">\n </i>\n }\n </libs_ui-components-popover>\n <ng-template #actionEl>\n @if ((0 | LibsUiPipesCallFunctionInTemplatePipe:right.getListViewConfig:item: item[fieldKey()]: {valueIs0: 0} |async) ; as config) {\n <libs_ui-components-list [config]=\"config()\"\n [maxItemShow]=\"5\"\n [hiddenInputSearch]=\"true\"\n [paddingLeftItem]=\"true\"\n (outSelectKey)=\"handlerSelectedKey($event)\" />\n }\n </ng-template>\n }\n @if (tabs().allowRemove && tabs().items().length > 1) {\n <libs_ui-components-buttons-button [type]=\"tabs().configButtonRemove?.type || 'button-link-custom'\"\n [iconOnlyType]=\"tabs().configButtonRemove?.iconOnlyType || true\"\n [classInclude]=\"tabs().configButtonRemove?.classInclude || 'ml-[8px] !p-0'\"\n [classIconLeft]=\"tabs().configButtonRemove?.classIconLeft || 'libs-ui-icon-close'\"\n [classLabel]=\"tabs().configButtonRemove?.classLabel || ''\"\n [classIconRight]=\"tabs().configButtonRemove?.classIconRight ||''\"\n [popover]=\"tabs().configButtonRemove?.popover || {config: {content: 'i18n_delete'}}\"\n [label]=\"tabs().configButtonRemove?.label ||''\"\n [buttonCustom]=\"{\n configStepColor: {\n text: '#6a7383',\n text_hover: '#f15767',\n text_active: '#f15767',\n text_disable: '#cdd0d6'\n },\n rootColor: '#f15767'\n }\"\n (outClick)=\"handlerClickButton($event, 'remove')\" />\n }\n </div>\n }\n", styles: [".libs-ui-tab-header-center-item{position:relative;display:flex;align-items:center;flex-wrap:nowrap;padding:12px 0;height:100%;width:fit-content}.libs-ui-tab-header-center-item[active=true]:after{content:\"\";width:100%;height:2px;background-color:var(--libs-ui-color-default, #226ff5);position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item[invalid=true]:after{background-color:#f15767}.libs-ui-tab-header-center-item-image{width:20px;height:20px;border-radius:50%;margin-right:8px}.libs-ui-tab-header-center-item-icon{display:flex}.libs-ui-tab-header-center-item-icon:before{font-size:12px}.libs-ui-tab-header-center-item-label{font-family:var(--libs-ui-font-family-name, \"Arial\");color:#6a7383;font-size:11px}.libs-ui-tab-header-center-item-label[size=langer]{font-size:13px}.libs-ui-tab-header-center-item-label[completed=true]{color:#6a7383}.libs-ui-tab-header-center-item-label[active=true]{color:var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item-action{display:none}.libs-ui-tab-header-center-item-step{border-radius:50%;border:1px solid #9ca2ad;color:#9ca2ad;min-width:24px;min-height:24px;display:flex;align-items:center;justify-content:center;margin-right:8px}.libs-ui-tab-header-center-item-step[completed=true]{color:#6a7383;border:1px solid #6A7383}.libs-ui-tab-header-center-item-step[active=true]{color:var(--libs-ui-color-default, #226ff5);border:1px solid var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-]:before,.libs-ui-tab-header-center-item i[class*=icon-font-3rd]:before{color:#6a7383}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][completed=true]:before,.libs-ui-tab-header-center-item i[class*=icon-font-3rd][completed=true]:before{color:#6a7383}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][active=true]:before,.libs-ui-tab-header-center-item i[class*=icon-font-3rd][active=true]:before{color:var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][invalid=true]:before,.libs-ui-tab-header-center-item i[class*=icon-font-3rd][invalid=true]:before{color:#f15767}.libs-ui-tab-header-center-item-hover:hover[active=false][disable=false]:after{content:\"\";width:100%;height:2px;background-color:#6a7383;position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item-hover:hover .libs-ui-tab-header-center-item-action[active=true],.libs-ui-tab-header-center-item-action-show .libs-ui-tab-header-center-item-action{display:flex}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: LibsUiComponentsButtonsButtonComponent, selector: "libs_ui-components-buttons-button", inputs: ["flagMouse", "type", "buttonCustom", "sizeButton", "label", "disable", "isPending", "imageLeft", "classInclude", "classIconLeft", "classIconRight", "classLabel", "iconOnlyType", "popover", "ignoreStopPropagationEvent", "zIndex", "widthLabelPopover", "styleIconLeft", "styleButton", "ignoreFocusWhenInputTab", "ignoreSetClickWhenShowPopover", "ignorePointerEvent", "isActive", "isHandlerEnterDocumentClickButton"], outputs: ["outClick", "outPopoverEvent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsBadgeComponent, selector: "libs_ui-components-badge", inputs: ["popoverConfig", "active", "count", "mode", "maxCount", "ignoreMarginDefault", "classCircle", "ignoreStopPropagationEvent"] }, { kind: "component", type: LibsUiComponentsListComponent, selector: "libs_ui-components-list", inputs: ["hiddenInputSearch", "dropdownTabKeyActive", "keySearch", "paddingLeftItem", "config", "autoSelectedFirstItemCallOutsideBefore", "isSearchOnline", "disable", "disableLabel", "labelConfig", "searchConfig", "searchPadding", "dividerClassInclude", "hasDivider", "buttonsOther", "hasButtonUnSelectOption", "clickExactly", "backgroundListCustom", "maxItemShow", "keySelected", "multiKeySelected", "keysDisableItem", "keysHiddenItem", "focusInputSearch", "skipFocusInputWhenKeySearchStoreUndefined", "functionGetItemsAutoAddList", "validRequired", "showValidateBottom", "zIndex", "loadingIconSize", "templateRefSearchNoData", "resetKeyWhenSelectAllKeyDropdown", "ignoreClassDisableDefaultWhenUseKeysDisableItem"], outputs: ["outSelectKey", "outSelectMultiKey", "outUnSelectMultiKey", "outClickButtonOther", "outFieldKey", "outChangeView", "outKeySearch", "outLoading", "outFunctionsControl", "outChangStageFlagMousePopover", "outLoadItemsComplete"] }, { kind: "pipe", type: LibsUiPipesCallFunctionInTemplatePipe, name: "LibsUiPipesCallFunctionInTemplatePipe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
112
112
  }
113
113
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsTabsItemComponent, decorators: [{
114
114
  type: Component,
@@ -119,7 +119,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
119
119
  LibsUiComponentsBadgeComponent,
120
120
  LibsUiComponentsListComponent,
121
121
  LibsUiPipesCallFunctionInTemplatePipe
122
- ], template: " @if (item(); as item) {\n <div #itemEl\n class=\"libs-ui-tab-header-center-item {{ cssDefault() }} {{ item.classInclude || '' }} {{ item[fieldKey()] === keySelected() && tabs().classIncludeActiveItem ? tabs().classIncludeActiveItem : '' }}\"\n [attr.key]=\"item[fieldKey()]\"\n [attr.invalid]=\"item.invalid && !tabs().ignoreShowLineBottomInTab\"\n [attr.active]=\"item[fieldKey()] === keySelected() && !tabs().ignoreShowLineBottomInTab\"\n [attr.disable]=\"disable()\"\n [class.!cursor-pointer]=\"!disable()\"\n [class.!cursor-default]=\"disable()\"\n [class.libs-ui-tab-header-center-item-hover]=\"!tabs().ignoreShowLineBottomInTab\"\n [class.libs-ui-tab-header-center-item-action-show]=\"actionShowing()\">\n @if (tabs().hasImage) {\n <img class=\"libs-ui-tab-header-center-item-image {{ item.classImageInclude || '' }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverImage\"\n [config]=\"item.popoverImage\"\n [ignoreStopPropagationEvent]=\"true\"\n [class.libs-ui-disable]=\"disable()\"\n [src]=\"item.linkImage\"\n [attr.key]=\"item[fieldKey()]\"\n (error)=\"handlerImgError($event)\" />\n }\n @if (item.iconLeft) {\n <i class=\"libs-ui-tab-header-center-item-icon libs-ui-mr-8px {{ item.iconLeft }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconLeft\"\n [config]=\"item.popoverIconLeft\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (item.is_pin) {\n <i class=\"libs-ui-tab-header-center-item-icon mr-[8px] {{ item[fieldKey()] === keySelected() ? 'libs-ui-icon-pin-solid' : 'libs-ui-icon-pin-outline' }}\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (tabs().hasStep) {\n @if (tabs().stepHasBackGround) {\n <div class=\"libs-ui-tab-header-center-item-step !border-none libs-ui-font-h6m\"\n [class.!text-[#ffffff]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.!text-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.!text-[#f15767]]=\"item.invalid\"\n [class.bg-[#f8f9fa]]=\"step() > (tabs().stepCompleted || 0) && (tabs().ignoreSelectedBackgroundStep || disable()) && !item.invalid\"\n [class.bg-[#00bc62]]=\"step() <= (tabs().stepCompleted || -1) && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.bg-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.bg-[var(--libs-ui-color-light-2)]]=\"((item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep) || (step() > (tabs().stepCompleted || 0) && !tabs().ignoreSelectedBackgroundStep)) && !item.invalid\"\n [class.!bg-[#fdeaec]]=\"item.invalid\">\n @if ((step() <= (tabs().stepCompleted || -1))) {\n <i class=\"libs-ui-icon-check text-[#ffffff]\"></i>\n } @else {\n <span [class.text-[#cdd0d6]]=\"disable()\">{{ step() }}</span>\n }\n </div>\n } @else {\n <div class=\"libs-ui-tab-header-center-item-step\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n <span>{{ step() }}</span>\n </div>\n }\n }\n @if (item.configButtonLeft) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonLeft.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonLeft.classInclude || ''\"\n [classIconLeft]=\"item.configButtonLeft.classIconLeft ||''\"\n [classLabel]=\"item.configButtonLeft.classLabel || ''\"\n [classIconRight]=\"item.configButtonLeft.classIconRight ||''\"\n [label]=\"item.configButtonLeft.label ||''\"\n [popover]=\"item.configButtonLeft.popover || {}\"\n (outClick)=\"handlerClickButton($event, 'configButtonLeft')\" />\n }\n @if (item[fieldLabel()]) {\n <div class=\"relative flex\"\n [style.maxWidth.px]=\"tabs().maxWidthTextLabelItem || 160\">\n <span LibsUiComponentsPopoverDirective\n [type]=\"'text'\"\n [config]=\"{position: {mode: step() === 1 ? 'start' : 'center', distance: 0}, zIndex: zIndex()}\"\n [attr.size]=\"size()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.!text-[#f15767]]=\"item.invalid\"\n [ignoreStopPropagationEvent]=\"true\"\n [classInclude]=\"'w-full libs-ui-tab-header-center-item-label '+ (item.classLabel || 'libs-ui-font-h6m') + \n (disableLabel() && (disable()) ? ' libs-ui-disable' : '') \n + (tabs().stepHasBackGround && (disable()) ? ' text-[#cdd0d6]' : '')\"\n [innerHTML]=\"labelComputed()\"></span>\n @if (item.hasRedDot) {\n <div class=\"absolute right-[-6px] top-[-2px] w-[6px] h-[6px] bg-[#ee2d41] rounded-[6px]\">\n </div>\n }\n </div>\n }\n @if (item.popover) {\n <i class=\"libs-ui-tab-header-center-item-icon ml-[8px] libs-ui-icon-tooltip-outline\"\n LibsUiComponentsPopoverDirective\n [config]=\"item.popover\"\n [ignoreStopPropagationEvent]=\"true\"\n [class.libs-ui-disable]=\"disable()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\">\n </i>\n }\n @if (item.iconRight) {\n <i class=\"libs-ui-tab-header-center-item-icon {{ item.iconRight }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconRight\"\n [config]=\"item.popoverIconRight\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (item.count !== undefined) {\n <libs_ui-components-badge [mode]=\"item.modeCount || 'x+'\"\n [count]=\"item.count\"\n [maxCount]=\"item.maxCount || 99\"\n [classCircle]=\"(item.classCircle || 'libs-ui-font-h5r') + (item.invalid ? ' !text-[#f15767] !bg-[#fdeaec]' : '')\"\n [active]=\"item[fieldKey()] === keySelected()\"\n [class.libs-ui-disable]=\"disable()\" />\n }\n @if (item.configButtonRight) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonRight.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonRight.classInclude || ''\"\n [classIconLeft]=\"item.configButtonRight.classIconLeft ||''\"\n [classLabel]=\"item.configButtonRight.classLabel || ''\"\n [classIconRight]=\"item.configButtonRight.classIconRight ||''\"\n [popover]=\"item.configButtonRight.popover || {}\"\n [label]=\"item.configButtonRight.label ||''\"\n (outClick)=\"handlerClickButton($event, 'configButtonRight')\" />\n }\n @if (tabs().actionRightConfig?.(); as right) {\n <libs_ui-components-popover [class]=\"right.classInclude || 'ml-[8px]'\"\n [class.libs-ui-tab-header-center-item-action]=\"right.onlyShowWhenHoverItemActive\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [mode]=\"'click-toggle'\"\n [ignoreStopPropagationEvent]=\"true\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [elementRefCustom]=\"right.onlyShowWhenHoverItemActive ? undefined : itemEl \"\n [config]=\"{\n zIndex: right.config?.()?.zIndex || 1000,\n maxHeight: right.config?.()?.maxHeight || 287,\n maxWidth: right.config?.()?.maxWidth || 2048,\n width: right.config?.()?.width || 220, \n direction: right.config?.()?.direction || 'bottom',\n template: right.config?.()?.template || actionEl,\n classInclude: (right.config?.()?.classInclude || '')+ ' !rounded-[4px] overflow-hidden',\n whiteTheme: true,\n ignoreArrow: true,\n position: right.config?.()?.position || { mode: 'start', distance: 0 }\n }\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outFunctionsControl)=\"handlerPopoverFunctionControlEvent($event)\">\n @if (right.customView) {\n <div [innerHtml]=\"item[fieldKey()] | LibsUiPipesCallFunctionInTemplatePipe:right.customView:item\"></div>\n } @else {\n <i [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.invalid]=\"item.invalid\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class]=\"right.onlyShowWhenHoverItemActive ? 'libs-ui-icon-more-vertical rotate-90 libs-ui-tab-header-center-item-icon' : 'libs-ui-icon-chevron-right rotate-90 libs-ui-tab-header-center-item-icon'\">\n </i>\n }\n </libs_ui-components-popover>\n <ng-template #actionEl>\n @if ((0 | LibsUiPipesCallFunctionInTemplatePipe:right.getListViewConfig:item: item[fieldKey()]: {valueIs0: 0} |async) ; as config) {\n <libs_ui-components-list [config]=\"config()\"\n [maxItemShow]=\"5\"\n [hiddenInputSearch]=\"true\"\n [paddingLeftItem]=\"true\"\n (outSelectKey)=\"handlerSelectedKey($event)\" />\n }\n </ng-template>\n }\n @if (tabs().allowRemove && tabs().items().length > 1) {\n <libs_ui-components-buttons-button [type]=\"tabs().configButtonRemove?.type || 'button-link-custom'\"\n [iconOnlyType]=\"tabs().configButtonRemove?.iconOnlyType || true\"\n [classInclude]=\"tabs().configButtonRemove?.classInclude || 'ml-[8px] !p-0'\"\n [classIconLeft]=\"tabs().configButtonRemove?.classIconLeft || 'libs-ui-icon-close'\"\n [classLabel]=\"tabs().configButtonRemove?.classLabel || ''\"\n [classIconRight]=\"tabs().configButtonRemove?.classIconRight ||''\"\n [popover]=\"tabs().configButtonRemove?.popover || {config: {content: 'i18n_delete'}}\"\n [label]=\"tabs().configButtonRemove?.label ||''\"\n [buttonCustom]=\"{\n configStepColor: {\n text: '#6a7383',\n text_hover: '#f15767',\n text_active: '#f15767',\n text_disable: '#cdd0d6'\n },\n rootColor: '#f15767'\n }\"\n (outClick)=\"handlerClickButton($event, 'remove')\" />\n }\n </div>\n }\n", styles: [".libs-ui-tab-header-center-item{position:relative;display:flex;align-items:center;flex-wrap:nowrap;padding:12px 0;height:100%;width:fit-content}.libs-ui-tab-header-center-item[active=true]:after{content:\"\";width:100%;height:2px;background-color:var(--libs-ui-color-default, #226ff5);position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item[invalid=true]:after{background-color:#f15767}.libs-ui-tab-header-center-item-image{width:20px;height:20px;border-radius:50%;margin-right:8px}.libs-ui-tab-header-center-item-icon{display:flex}.libs-ui-tab-header-center-item-icon:before{font-size:12px}.libs-ui-tab-header-center-item-label{font-family:var(--libs-ui-font-family-name, \"Arial\");color:#6a7383;font-size:11px}.libs-ui-tab-header-center-item-label[size=langer]{font-size:13px}.libs-ui-tab-header-center-item-label[completed=true]{color:#6a7383}.libs-ui-tab-header-center-item-label[active=true]{color:var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item-action{display:none}.libs-ui-tab-header-center-item-step{border-radius:50%;border:1px solid #9ca2ad;color:#9ca2ad;min-width:24px;min-height:24px;display:flex;align-items:center;justify-content:center;margin-right:8px}.libs-ui-tab-header-center-item-step[completed=true]{color:#6a7383;border:1px solid #6A7383}.libs-ui-tab-header-center-item-step[active=true]{color:var(--libs-ui-color-default, #226ff5);border:1px solid var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-]:before{color:#6a7383}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][completed=true]:before{color:#6a7383}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][active=true]:before{color:var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][invalid=true]:before{color:#f15767}.libs-ui-tab-header-center-item-hover:hover[active=false][disable=false]:after{content:\"\";width:100%;height:2px;background-color:#6a7383;position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item-hover:hover .libs-ui-tab-header-center-item-action[active=true],.libs-ui-tab-header-center-item-action-show .libs-ui-tab-header-center-item-action{display:flex}\n"] }]
122
+ ], template: " @if (item(); as item) {\n <div #itemEl\n class=\"libs-ui-tab-header-center-item {{ cssDefault() }} {{ item.classInclude || '' }} {{ item[fieldKey()] === keySelected() && tabs().classIncludeActiveItem ? tabs().classIncludeActiveItem : '' }}\"\n [attr.key]=\"item[fieldKey()]\"\n [attr.invalid]=\"item.invalid && !tabs().ignoreShowLineBottomInTab\"\n [attr.active]=\"item[fieldKey()] === keySelected() && !tabs().ignoreShowLineBottomInTab\"\n [attr.disable]=\"disable()\"\n [class.!cursor-pointer]=\"!disable()\"\n [class.!cursor-default]=\"disable()\"\n [class.libs-ui-tab-header-center-item-hover]=\"!tabs().ignoreShowLineBottomInTab\"\n [class.libs-ui-tab-header-center-item-action-show]=\"actionShowing()\">\n @if (tabs().hasImage) {\n <img class=\"libs-ui-tab-header-center-item-image {{ item.classImageInclude || '' }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverImage\"\n [config]=\"item.popoverImage\"\n [ignoreStopPropagationEvent]=\"true\"\n [class.libs-ui-disable]=\"disable()\"\n [src]=\"item.linkImage\"\n [attr.key]=\"item[fieldKey()]\"\n (error)=\"handlerImgError($event)\" />\n }\n @if (item.iconLeft) {\n <i class=\"libs-ui-tab-header-center-item-icon libs-ui-mr-8px {{ item.iconLeft }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconLeft\"\n [config]=\"item.popoverIconLeft\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (item.is_pin) {\n <i class=\"libs-ui-tab-header-center-item-icon mr-[8px] {{ item[fieldKey()] === keySelected() ? 'libs-ui-icon-pin-solid' : 'libs-ui-icon-pin-outline' }}\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (tabs().hasStep) {\n @if (tabs().stepHasBackGround) {\n <div class=\"libs-ui-tab-header-center-item-step !border-none libs-ui-font-h6m\"\n [class.!text-[#ffffff]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.!text-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.!text-[#f15767]]=\"item.invalid\"\n [class.bg-[#f8f9fa]]=\"step() > (tabs().stepCompleted || 0) && (tabs().ignoreSelectedBackgroundStep || disable()) && !item.invalid\"\n [class.bg-[#00bc62]]=\"step() <= (tabs().stepCompleted || -1) && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.bg-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.bg-[var(--libs-ui-color-light-2)]]=\"((item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep) || (step() > (tabs().stepCompleted || 0) && !tabs().ignoreSelectedBackgroundStep)) && !item.invalid\"\n [class.!bg-[#fdeaec]]=\"item.invalid\">\n @if ((step() <= (tabs().stepCompleted || -1))) {\n <i class=\"libs-ui-icon-check text-[#ffffff]\"></i>\n } @else {\n <span [class.text-[#cdd0d6]]=\"disable()\">{{ step() }}</span>\n }\n </div>\n } @else {\n <div class=\"libs-ui-tab-header-center-item-step\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n <span>{{ step() }}</span>\n </div>\n }\n }\n @if (item.configButtonLeft) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonLeft.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonLeft.classInclude || ''\"\n [classIconLeft]=\"item.configButtonLeft.classIconLeft ||''\"\n [classLabel]=\"item.configButtonLeft.classLabel || ''\"\n [classIconRight]=\"item.configButtonLeft.classIconRight ||''\"\n [label]=\"item.configButtonLeft.label ||''\"\n [popover]=\"item.configButtonLeft.popover || {}\"\n (outClick)=\"handlerClickButton($event, 'configButtonLeft')\" />\n }\n @if (item[fieldLabel()]) {\n <div class=\"relative flex\"\n [style.maxWidth.px]=\"tabs().maxWidthTextLabelItem || 160\">\n <span LibsUiComponentsPopoverDirective\n [type]=\"'text'\"\n [config]=\"{position: {mode: step() === 1 ? 'start' : 'center', distance: 0}, zIndex: zIndex()}\"\n [attr.size]=\"size()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.!text-[#f15767]]=\"item.invalid\"\n [ignoreStopPropagationEvent]=\"true\"\n [classInclude]=\"'w-full libs-ui-tab-header-center-item-label '+ (item.classLabel || 'libs-ui-font-h6m') + \n (disableLabel() && (disable()) ? ' libs-ui-disable' : '') \n + (tabs().stepHasBackGround && (disable()) ? ' text-[#cdd0d6]' : '')\"\n [innerHTML]=\"labelComputed()\"></span>\n @if (item.hasRedDot) {\n <div class=\"absolute right-[-6px] top-[-2px] w-[6px] h-[6px] bg-[#ee2d41] rounded-[6px]\">\n </div>\n }\n </div>\n }\n @if (item.popover) {\n <i class=\"libs-ui-tab-header-center-item-icon ml-[8px] libs-ui-icon-tooltip-outline\"\n LibsUiComponentsPopoverDirective\n [config]=\"item.popover\"\n [ignoreStopPropagationEvent]=\"true\"\n [class.libs-ui-disable]=\"disable()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\">\n </i>\n }\n @if (item.iconRight) {\n <i class=\"libs-ui-tab-header-center-item-icon {{ item.iconRight }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconRight\"\n [config]=\"item.popoverIconRight\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (item.count !== undefined) {\n <libs_ui-components-badge [mode]=\"item.modeCount || 'x+'\"\n [count]=\"item.count\"\n [maxCount]=\"item.maxCount || 99\"\n [classCircle]=\"(item.classCircle || 'libs-ui-font-h5r') + (item.invalid ? ' !text-[#f15767] !bg-[#fdeaec]' : '')\"\n [active]=\"item[fieldKey()] === keySelected()\"\n [class.libs-ui-disable]=\"disable()\" />\n }\n @if (item.configButtonRight) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonRight.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonRight.classInclude || ''\"\n [classIconLeft]=\"item.configButtonRight.classIconLeft ||''\"\n [classLabel]=\"item.configButtonRight.classLabel || ''\"\n [classIconRight]=\"item.configButtonRight.classIconRight ||''\"\n [popover]=\"item.configButtonRight.popover || {}\"\n [label]=\"item.configButtonRight.label ||''\"\n (outClick)=\"handlerClickButton($event, 'configButtonRight')\" />\n }\n @if (tabs().actionRightConfig?.(); as right) {\n <libs_ui-components-popover [class]=\"right.classInclude || 'ml-[8px]'\"\n [class.libs-ui-tab-header-center-item-action]=\"right.onlyShowWhenHoverItemActive\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [mode]=\"'click-toggle'\"\n [ignoreStopPropagationEvent]=\"true\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [elementRefCustom]=\"right.onlyShowWhenHoverItemActive ? undefined : itemEl \"\n [config]=\"{\n zIndex: right.config?.()?.zIndex || 1000,\n maxHeight: right.config?.()?.maxHeight || 287,\n maxWidth: right.config?.()?.maxWidth || 2048,\n width: right.config?.()?.width || 220, \n direction: right.config?.()?.direction || 'bottom',\n template: right.config?.()?.template || actionEl,\n classInclude: (right.config?.()?.classInclude || '')+ ' !rounded-[4px] overflow-hidden',\n whiteTheme: true,\n ignoreArrow: true,\n position: right.config?.()?.position || { mode: 'start', distance: 0 }\n }\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outFunctionsControl)=\"handlerPopoverFunctionControlEvent($event)\">\n @if (right.customView) {\n <div [innerHtml]=\"item[fieldKey()] | LibsUiPipesCallFunctionInTemplatePipe:right.customView:item\"></div>\n } @else {\n <i [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.invalid]=\"item.invalid\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class]=\"right.onlyShowWhenHoverItemActive ? 'libs-ui-icon-more-vertical rotate-90 libs-ui-tab-header-center-item-icon' : 'libs-ui-icon-chevron-right rotate-90 libs-ui-tab-header-center-item-icon'\">\n </i>\n }\n </libs_ui-components-popover>\n <ng-template #actionEl>\n @if ((0 | LibsUiPipesCallFunctionInTemplatePipe:right.getListViewConfig:item: item[fieldKey()]: {valueIs0: 0} |async) ; as config) {\n <libs_ui-components-list [config]=\"config()\"\n [maxItemShow]=\"5\"\n [hiddenInputSearch]=\"true\"\n [paddingLeftItem]=\"true\"\n (outSelectKey)=\"handlerSelectedKey($event)\" />\n }\n </ng-template>\n }\n @if (tabs().allowRemove && tabs().items().length > 1) {\n <libs_ui-components-buttons-button [type]=\"tabs().configButtonRemove?.type || 'button-link-custom'\"\n [iconOnlyType]=\"tabs().configButtonRemove?.iconOnlyType || true\"\n [classInclude]=\"tabs().configButtonRemove?.classInclude || 'ml-[8px] !p-0'\"\n [classIconLeft]=\"tabs().configButtonRemove?.classIconLeft || 'libs-ui-icon-close'\"\n [classLabel]=\"tabs().configButtonRemove?.classLabel || ''\"\n [classIconRight]=\"tabs().configButtonRemove?.classIconRight ||''\"\n [popover]=\"tabs().configButtonRemove?.popover || {config: {content: 'i18n_delete'}}\"\n [label]=\"tabs().configButtonRemove?.label ||''\"\n [buttonCustom]=\"{\n configStepColor: {\n text: '#6a7383',\n text_hover: '#f15767',\n text_active: '#f15767',\n text_disable: '#cdd0d6'\n },\n rootColor: '#f15767'\n }\"\n (outClick)=\"handlerClickButton($event, 'remove')\" />\n }\n </div>\n }\n", styles: [".libs-ui-tab-header-center-item{position:relative;display:flex;align-items:center;flex-wrap:nowrap;padding:12px 0;height:100%;width:fit-content}.libs-ui-tab-header-center-item[active=true]:after{content:\"\";width:100%;height:2px;background-color:var(--libs-ui-color-default, #226ff5);position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item[invalid=true]:after{background-color:#f15767}.libs-ui-tab-header-center-item-image{width:20px;height:20px;border-radius:50%;margin-right:8px}.libs-ui-tab-header-center-item-icon{display:flex}.libs-ui-tab-header-center-item-icon:before{font-size:12px}.libs-ui-tab-header-center-item-label{font-family:var(--libs-ui-font-family-name, \"Arial\");color:#6a7383;font-size:11px}.libs-ui-tab-header-center-item-label[size=langer]{font-size:13px}.libs-ui-tab-header-center-item-label[completed=true]{color:#6a7383}.libs-ui-tab-header-center-item-label[active=true]{color:var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item-action{display:none}.libs-ui-tab-header-center-item-step{border-radius:50%;border:1px solid #9ca2ad;color:#9ca2ad;min-width:24px;min-height:24px;display:flex;align-items:center;justify-content:center;margin-right:8px}.libs-ui-tab-header-center-item-step[completed=true]{color:#6a7383;border:1px solid #6A7383}.libs-ui-tab-header-center-item-step[active=true]{color:var(--libs-ui-color-default, #226ff5);border:1px solid var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-]:before,.libs-ui-tab-header-center-item i[class*=icon-font-3rd]:before{color:#6a7383}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][completed=true]:before,.libs-ui-tab-header-center-item i[class*=icon-font-3rd][completed=true]:before{color:#6a7383}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][active=true]:before,.libs-ui-tab-header-center-item i[class*=icon-font-3rd][active=true]:before{color:var(--libs-ui-color-default, #226ff5)}.libs-ui-tab-header-center-item i[class*=libs-ui-icon-][invalid=true]:before,.libs-ui-tab-header-center-item i[class*=icon-font-3rd][invalid=true]:before{color:#f15767}.libs-ui-tab-header-center-item-hover:hover[active=false][disable=false]:after{content:\"\";width:100%;height:2px;background-color:#6a7383;position:absolute;bottom:0;left:0}.libs-ui-tab-header-center-item-hover:hover .libs-ui-tab-header-center-item-action[active=true],.libs-ui-tab-header-center-item-action-show .libs-ui-tab-header-center-item-action{display:flex}\n"] }]
123
123
  }], ctorParameters: () => [] });
124
124
 
125
125
  const tabMoreListConfig = (translate, fieldKey, fieldLabel, tabs, disable) => {
@@ -1 +1 @@
1
- {"version":3,"file":"libs-ui-components-tabs.mjs","sources":["../../../../../libs-ui/components/tabs/src/item/item.component.ts","../../../../../libs-ui/components/tabs/src/item/item.component.html","../../../../../libs-ui/components/tabs/src/utils/tabs.ts","../../../../../libs-ui/components/tabs/src/tabs.component.ts","../../../../../libs-ui/components/tabs/src/tabs.component.html","../../../../../libs-ui/components/tabs/src/libs-ui-components-tabs.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, input, model, OnDestroy, OnInit, output, signal, untracked } from '@angular/core';\nimport { LibsUiComponentsBadgeComponent } from '@libs-ui/components-badge';\nimport { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';\nimport { IPopoverFunctionControlEvent, LibsUiComponentsPopoverComponent, TYPE_POPOVER_EVENT } from '@libs-ui/components-popover';\nimport { IEvent } from '@libs-ui/interfaces-types';\nimport { escapeHtml, uuid } from '@libs-ui/utils';\nimport { TranslateService } from '@ngx-translate/core';\nimport { debounceTime, Subject } from 'rxjs';\nimport { ITabsItem, ITabsItemEvent, ITabs, TYPE_TAB_MODE } from '../interfaces/tab.interface';\nimport { IListDataEmitKey, LibsUiComponentsListComponent } from '@libs-ui/components-list';\nimport { LibsUiPipesCallFunctionInTemplatePipe } from '@libs-ui/pipes-call-function-in-template';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-tabs-item',\n templateUrl: './item.component.html',\n styleUrls: ['./item.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AsyncPipe,\n LibsUiComponentsButtonsButtonComponent,\n LibsUiComponentsPopoverComponent,\n LibsUiComponentsBadgeComponent,\n LibsUiComponentsListComponent,\n LibsUiPipesCallFunctionInTemplatePipe\n ]\n})\nexport class LibsUiComponentsTabsItemComponent implements OnInit, OnDestroy {\n\n // #region PROPERTY\n protected labelComputed = computed(() => escapeHtml(this.translateService.instant(this.item()[this.fieldLabel()])));\n protected actionShowing = signal<boolean>(false);\n\n private mutationObserver = signal<MutationObserver | undefined>(undefined);\n private mutationObserverSubject = new Subject<void>();\n private onDestroy = new Subject<void>();\n\n private popoverFunctionControlEvent = signal<IPopoverFunctionControlEvent | undefined>(undefined);\n\n // #region INPUT\n readonly ignoreCalculatorTab = input.required<boolean>();\n readonly step = input.required<number>();\n readonly mode = input.required<TYPE_TAB_MODE>();\n readonly tabs = input.required<ITabs>();\n readonly item = model.required<ITabsItem>();\n readonly keySelected = input.required<string>();\n readonly fieldLabel = input.required<string>();\n readonly fieldKey = input.required<string>();\n readonly cssDefault = input.required<string>();\n readonly size = input.required<'langer' | 'medium'>();\n readonly disable = input<boolean>();\n readonly disableLabel = input<boolean>();\n readonly zIndex = input<number>();\n readonly changeViewTab = input.required<Subject<void>>();\n\n // #region OUTPUT\n readonly outAction = output<ITabsItemEvent>();\n\n /* INJECT*/\n private element = inject(ElementRef);\n private translateService = inject(TranslateService);\n\n constructor() {\n effect(() => {\n if (this.mode() !== 'left' || this.ignoreCalculatorTab()) {\n return;\n }\n untracked(() => {\n setTimeout(() => {\n this.updateSpecificWidth();\n this.mutationObserver()?.disconnect();\n this.mutationObserverSubject.pipe(debounceTime(10)).subscribe(() => this.updateSpecificWidth());\n this.mutationObserver.set(new MutationObserver(() => this.mutationObserverSubject.next()));\n this.mutationObserver()?.observe(this.element.nativeElement, { attributes: true, childList: true, subtree: true });\n })\n });\n });\n }\n\n ngOnInit() {\n if (!this.item().key) {\n this.item.update(item => ({ ...item, key: uuid() }));\n }\n }\n\n /* FUNCTIONS */\n private updateSpecificWidth() {\n const preSpecificWidth = this.item().specificWidth;\n const width = this.element.nativeElement.offsetWidth;\n if (width && preSpecificWidth !== width) {\n this.item.update(item => ({ ...item, specificWidth: width }));\n this.changeViewTab().next();\n }\n }\n\n protected handlerImgError(event: Event) {\n event.stopPropagation();\n (event as IEvent).target.src = this.item().linkImageError\n }\n\n protected handlerSelectedKey(event: IListDataEmitKey | undefined) {\n if (!event) {\n return;\n }\n this.outAction.emit({ item: this.item(), key: event.key as string });\n this.popoverFunctionControlEvent()?.removePopoverOverlay();\n }\n\n protected handlerPopoverFunctionControlEvent(event: IPopoverFunctionControlEvent) {\n this.popoverFunctionControlEvent.set(event);\n }\n\n protected handlerPopoverEvent(event: TYPE_POPOVER_EVENT) {\n if (event !== 'show' && event !== 'remove') {\n return;\n }\n this.actionShowing.set(event === 'show');\n }\n\n\n protected handlerClickButton(event: Event, type: 'configButtonLeft' | 'configButtonRight' | 'remove') {\n event.stopPropagation();\n if (type === 'remove') {\n this.outAction.emit({ key: 'remove', item: this.item() })\n return;\n }\n const action = this.item()[type]?.action;\n if (action) {\n action(this.item());\n }\n }\n\n ngOnDestroy(): void {\n this.mutationObserver()?.disconnect();\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n\n}\n"," @if (item(); as item) {\n <div #itemEl\n class=\"libs-ui-tab-header-center-item {{ cssDefault() }} {{ item.classInclude || '' }} {{ item[fieldKey()] === keySelected() && tabs().classIncludeActiveItem ? tabs().classIncludeActiveItem : '' }}\"\n [attr.key]=\"item[fieldKey()]\"\n [attr.invalid]=\"item.invalid && !tabs().ignoreShowLineBottomInTab\"\n [attr.active]=\"item[fieldKey()] === keySelected() && !tabs().ignoreShowLineBottomInTab\"\n [attr.disable]=\"disable()\"\n [class.!cursor-pointer]=\"!disable()\"\n [class.!cursor-default]=\"disable()\"\n [class.libs-ui-tab-header-center-item-hover]=\"!tabs().ignoreShowLineBottomInTab\"\n [class.libs-ui-tab-header-center-item-action-show]=\"actionShowing()\">\n @if (tabs().hasImage) {\n <img class=\"libs-ui-tab-header-center-item-image {{ item.classImageInclude || '' }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverImage\"\n [config]=\"item.popoverImage\"\n [ignoreStopPropagationEvent]=\"true\"\n [class.libs-ui-disable]=\"disable()\"\n [src]=\"item.linkImage\"\n [attr.key]=\"item[fieldKey()]\"\n (error)=\"handlerImgError($event)\" />\n }\n @if (item.iconLeft) {\n <i class=\"libs-ui-tab-header-center-item-icon libs-ui-mr-8px {{ item.iconLeft }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconLeft\"\n [config]=\"item.popoverIconLeft\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (item.is_pin) {\n <i class=\"libs-ui-tab-header-center-item-icon mr-[8px] {{ item[fieldKey()] === keySelected() ? 'libs-ui-icon-pin-solid' : 'libs-ui-icon-pin-outline' }}\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (tabs().hasStep) {\n @if (tabs().stepHasBackGround) {\n <div class=\"libs-ui-tab-header-center-item-step !border-none libs-ui-font-h6m\"\n [class.!text-[#ffffff]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.!text-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.!text-[#f15767]]=\"item.invalid\"\n [class.bg-[#f8f9fa]]=\"step() > (tabs().stepCompleted || 0) && (tabs().ignoreSelectedBackgroundStep || disable()) && !item.invalid\"\n [class.bg-[#00bc62]]=\"step() <= (tabs().stepCompleted || -1) && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.bg-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.bg-[var(--libs-ui-color-light-2)]]=\"((item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep) || (step() > (tabs().stepCompleted || 0) && !tabs().ignoreSelectedBackgroundStep)) && !item.invalid\"\n [class.!bg-[#fdeaec]]=\"item.invalid\">\n @if ((step() <= (tabs().stepCompleted || -1))) {\n <i class=\"libs-ui-icon-check text-[#ffffff]\"></i>\n } @else {\n <span [class.text-[#cdd0d6]]=\"disable()\">{{ step() }}</span>\n }\n </div>\n } @else {\n <div class=\"libs-ui-tab-header-center-item-step\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n <span>{{ step() }}</span>\n </div>\n }\n }\n @if (item.configButtonLeft) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonLeft.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonLeft.classInclude || ''\"\n [classIconLeft]=\"item.configButtonLeft.classIconLeft ||''\"\n [classLabel]=\"item.configButtonLeft.classLabel || ''\"\n [classIconRight]=\"item.configButtonLeft.classIconRight ||''\"\n [label]=\"item.configButtonLeft.label ||''\"\n [popover]=\"item.configButtonLeft.popover || {}\"\n (outClick)=\"handlerClickButton($event, 'configButtonLeft')\" />\n }\n @if (item[fieldLabel()]) {\n <div class=\"relative flex\"\n [style.maxWidth.px]=\"tabs().maxWidthTextLabelItem || 160\">\n <span LibsUiComponentsPopoverDirective\n [type]=\"'text'\"\n [config]=\"{position: {mode: step() === 1 ? 'start' : 'center', distance: 0}, zIndex: zIndex()}\"\n [attr.size]=\"size()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.!text-[#f15767]]=\"item.invalid\"\n [ignoreStopPropagationEvent]=\"true\"\n [classInclude]=\"'w-full libs-ui-tab-header-center-item-label '+ (item.classLabel || 'libs-ui-font-h6m') + \n (disableLabel() && (disable()) ? ' libs-ui-disable' : '') \n + (tabs().stepHasBackGround && (disable()) ? ' text-[#cdd0d6]' : '')\"\n [innerHTML]=\"labelComputed()\"></span>\n @if (item.hasRedDot) {\n <div class=\"absolute right-[-6px] top-[-2px] w-[6px] h-[6px] bg-[#ee2d41] rounded-[6px]\">\n </div>\n }\n </div>\n }\n @if (item.popover) {\n <i class=\"libs-ui-tab-header-center-item-icon ml-[8px] libs-ui-icon-tooltip-outline\"\n LibsUiComponentsPopoverDirective\n [config]=\"item.popover\"\n [ignoreStopPropagationEvent]=\"true\"\n [class.libs-ui-disable]=\"disable()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\">\n </i>\n }\n @if (item.iconRight) {\n <i class=\"libs-ui-tab-header-center-item-icon {{ item.iconRight }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconRight\"\n [config]=\"item.popoverIconRight\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (item.count !== undefined) {\n <libs_ui-components-badge [mode]=\"item.modeCount || 'x+'\"\n [count]=\"item.count\"\n [maxCount]=\"item.maxCount || 99\"\n [classCircle]=\"(item.classCircle || 'libs-ui-font-h5r') + (item.invalid ? ' !text-[#f15767] !bg-[#fdeaec]' : '')\"\n [active]=\"item[fieldKey()] === keySelected()\"\n [class.libs-ui-disable]=\"disable()\" />\n }\n @if (item.configButtonRight) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonRight.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonRight.classInclude || ''\"\n [classIconLeft]=\"item.configButtonRight.classIconLeft ||''\"\n [classLabel]=\"item.configButtonRight.classLabel || ''\"\n [classIconRight]=\"item.configButtonRight.classIconRight ||''\"\n [popover]=\"item.configButtonRight.popover || {}\"\n [label]=\"item.configButtonRight.label ||''\"\n (outClick)=\"handlerClickButton($event, 'configButtonRight')\" />\n }\n @if (tabs().actionRightConfig?.(); as right) {\n <libs_ui-components-popover [class]=\"right.classInclude || 'ml-[8px]'\"\n [class.libs-ui-tab-header-center-item-action]=\"right.onlyShowWhenHoverItemActive\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [mode]=\"'click-toggle'\"\n [ignoreStopPropagationEvent]=\"true\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [elementRefCustom]=\"right.onlyShowWhenHoverItemActive ? undefined : itemEl \"\n [config]=\"{\n zIndex: right.config?.()?.zIndex || 1000,\n maxHeight: right.config?.()?.maxHeight || 287,\n maxWidth: right.config?.()?.maxWidth || 2048,\n width: right.config?.()?.width || 220, \n direction: right.config?.()?.direction || 'bottom',\n template: right.config?.()?.template || actionEl,\n classInclude: (right.config?.()?.classInclude || '')+ ' !rounded-[4px] overflow-hidden',\n whiteTheme: true,\n ignoreArrow: true,\n position: right.config?.()?.position || { mode: 'start', distance: 0 }\n }\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outFunctionsControl)=\"handlerPopoverFunctionControlEvent($event)\">\n @if (right.customView) {\n <div [innerHtml]=\"item[fieldKey()] | LibsUiPipesCallFunctionInTemplatePipe:right.customView:item\"></div>\n } @else {\n <i [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.invalid]=\"item.invalid\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class]=\"right.onlyShowWhenHoverItemActive ? 'libs-ui-icon-more-vertical rotate-90 libs-ui-tab-header-center-item-icon' : 'libs-ui-icon-chevron-right rotate-90 libs-ui-tab-header-center-item-icon'\">\n </i>\n }\n </libs_ui-components-popover>\n <ng-template #actionEl>\n @if ((0 | LibsUiPipesCallFunctionInTemplatePipe:right.getListViewConfig:item: item[fieldKey()]: {valueIs0: 0} |async) ; as config) {\n <libs_ui-components-list [config]=\"config()\"\n [maxItemShow]=\"5\"\n [hiddenInputSearch]=\"true\"\n [paddingLeftItem]=\"true\"\n (outSelectKey)=\"handlerSelectedKey($event)\" />\n }\n </ng-template>\n }\n @if (tabs().allowRemove && tabs().items().length > 1) {\n <libs_ui-components-buttons-button [type]=\"tabs().configButtonRemove?.type || 'button-link-custom'\"\n [iconOnlyType]=\"tabs().configButtonRemove?.iconOnlyType || true\"\n [classInclude]=\"tabs().configButtonRemove?.classInclude || 'ml-[8px] !p-0'\"\n [classIconLeft]=\"tabs().configButtonRemove?.classIconLeft || 'libs-ui-icon-close'\"\n [classLabel]=\"tabs().configButtonRemove?.classLabel || ''\"\n [classIconRight]=\"tabs().configButtonRemove?.classIconRight ||''\"\n [popover]=\"tabs().configButtonRemove?.popover || {config: {content: 'i18n_delete'}}\"\n [label]=\"tabs().configButtonRemove?.label ||''\"\n [buttonCustom]=\"{\n configStepColor: {\n text: '#6a7383',\n text_hover: '#f15767',\n text_active: '#f15767',\n text_disable: '#cdd0d6'\n },\n rootColor: '#f15767'\n }\"\n (outClick)=\"handlerClickButton($event, 'remove')\" />\n }\n </div>\n }\n","import { IDataFunctionCallInConfig, IListConfigItem } from \"@libs-ui/components-list\";\nimport { convertObjectToSignal, escapeHtml, isNil } from \"@libs-ui/utils\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { of } from \"rxjs\";\nimport { ITabs, ITabsItem } from \"../interfaces/tab.interface\";\nimport { returnListObject } from \"@libs-ui/services-http-request\";\nimport { signal } from \"@angular/core\";\n\nexport const tabMoreListConfig = (translate: TranslateService, fieldKey: string, fieldLabel: string, tabs: ITabs, disable: boolean | undefined): IListConfigItem => {\n return {\n type: 'text',\n httpRequestData: signal({\n serviceOther: returnListObject(tabs.items().filter(item => !item().specificDisplay).map(item => item())),\n functionName: 'listObservable',\n argumentsValue: []\n }),\n configTemplateText: signal({\n fieldKey: fieldKey || 'key',\n getClassItem: () => '!py-[12px]',\n classRows: 'w-full',\n notUseVirtualScroll: true,\n rows: convertObjectToSignal([{\n classCols: 'flex items-center',\n cols: [\n {\n getPopover: (item: ITabsItem) => {\n if (!tabs.hasStep) {\n return;\n }\n const step = (item.order || 0) + 1;\n let classStep = 'bg-[#f8f9fa] text-[#9ca2ad]';\n if (item.invalid) {\n classStep = '!text-[#f15767] !bg-[#fdeaec]';\n }\n if (item.disable || disable) {\n classStep = 'bg-[#f8f9fa] text-[#cdd0d6]';\n }\n return {\n classInclude: 'flex',\n dataView: `\n <div class=\"libs-ui-font-h6m rounded-full min-w-[24px] min-h-[24px] flex items-center justify-center mr-[8px] ${classStep}\">\n ${(step <= (tabs.stepCompleted || -1)) ? `<i class=\"libs-ui-icon-check text-[#ffffff]\"></i>` : `${step}`}\n </div>\n `\n }\n }\n },\n {\n getPopover: (item: ITabsItem) => item.iconLeft ? { classInclude: 'flex', dataView: `<i class=\"${item.iconLeft} text-[16px] mr-[8px]\"></i>` } : undefined\n },\n {\n getClassCol: (item: ITabsItem) => `libs-ui-font-h6m ${item.invalid ? '!text-[#f15767]' : 'text-[#6a7383]'}`,\n getValue: (data: IDataFunctionCallInConfig) => of(escapeHtml(translate.instant(data.item[fieldLabel] || ' ')))\n },\n {\n getPopover: (item: ITabsItem) => item.popover ? { config: item.popover } : undefined\n },\n {\n getPopover: (item: ITabsItem) => item.iconRight ? { classInclude: 'flex', dataView: `<i class=\"${item.iconRight} text-[16px] ml-[8px]\"></i>` } : undefined\n },\n {\n getConfigBadge: (item: ITabsItem) => {\n if (isNil(item.count)) {\n return;\n }\n return {\n mode: item.modeCount || 'x+',\n count: item.count,\n maxCount: item.maxCount || 99,\n classCircle: (item.classCircle || 'libs-ui-font-h5r') + (item.invalid ? ' !text-[#f15767] !bg-[#fdeaec]' : '')\n };\n }\n }\n ]\n }])\n })\n };\n}","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input, model, OnDestroy, OnInit, output, signal, viewChild, WritableSignal } from '@angular/core';\nimport { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';\nimport { IDrop, LibsUiComponentsDragContainerDirective, LibsUiDragItemDirective } from '@libs-ui/components-drag-drop';\nimport { IListDataEmitKey, LibsUiComponentsListComponent } from '@libs-ui/components-list';\nimport { IPopover, IPopoverFunctionControlEvent, LibsUiComponentsPopoverComponent } from '@libs-ui/components-popover';\nimport { convertObjectToSignal, isNil, uuid } from '@libs-ui/utils';\nimport { TranslateService } from '@ngx-translate/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { ITabCssConfig, ITabs, ITabsFunctionControlEvent, ITabsItem, ITabsItemEvent, TYPE_TAB_MODE } from './interfaces/tab.interface';\nimport { LibsUiComponentsTabsItemComponent } from './item/item.component';\nimport { tabMoreListConfig } from './utils/tabs';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-tabs',\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n LibsUiComponentsDragContainerDirective,\n LibsUiDragItemDirective,\n LibsUiComponentsPopoverComponent,\n LibsUiComponentsButtonsButtonComponent,\n LibsUiComponentsTabsItemComponent,\n LibsUiComponentsListComponent\n ]\n})\nexport class LibsUiComponentsTabsComponent implements OnInit, OnDestroy {\n\n // #region PROPERTY\n protected itemsDisplay = signal<Array<WritableSignal<ITabsItem>>>([]);\n protected displayMoreItem = signal<boolean>(false);\n protected tabMoreListConfig = computed(() => tabMoreListConfig(this.translate, this.fieldKey(), this.fieldLabel(), this.tabs(), this.disable()));\n protected changeViewTab = new Subject<void>();\n protected groupName = signal<string>(uuid());\n protected stylesDragDropOverrideComputed = computed(() => this.updateStylesDragDropOverride());\n\n private popoverFunctionControlEvent = signal<IPopoverFunctionControlEvent | undefined>(undefined);\n private onDestroy = new Subject<void>();\n\n // #region INPUT\n readonly tabs = input.required<ITabs>();\n readonly keySelected = model.required<string>();\n readonly mode = input<TYPE_TAB_MODE>('left');\n readonly fieldKey = input<string>('key');\n readonly fieldLabel = input<string>('label');\n readonly disable = input<boolean>();\n readonly disableLabel = input<boolean>();\n readonly heightTabItem = input<number>(40);\n readonly ignoreCalculatorTab = input<boolean>(false);\n readonly size = input<'langer' | 'medium'>('medium');\n readonly allowDragDropPosition = input<boolean>();\n readonly zIndex = input<number>();\n readonly configCss = model<ITabCssConfig>();\n readonly popoverShowMoreTabItem = input<IPopover>();\n readonly checkCanChangeTabSelected = input<() => boolean | Promise<boolean>>();\n\n // #region OUTPUT\n readonly outKeySelected = output<string>();\n readonly outFunctionsControl = output<ITabsFunctionControlEvent>();\n readonly outDragTabChange = output<void>();\n readonly outDisplayMoreItem = output<boolean>();\n readonly outAction = output<ITabsItemEvent>();\n\n /* VIEW CHILD */\n private readonly headerEl = viewChild.required<ElementRef>('headerEl');\n private readonly headerLeftEl = viewChild.required<ElementRef>('headerLeftEl');\n private readonly headerRightEl = viewChild.required<ElementRef>('headerRightEl');\n\n /* INJECT*/\n private translate = inject(TranslateService);\n\n ngOnInit() {\n this.updateTabsCssConfig();\n this.outFunctionsControl.emit({\n addTabsItem: this.addTabsItem.bind(this),\n calculatorTabsItemsDisplay: this.calculatorTabsItemDisplay.bind(this),\n selectedTabsItem: this.handlerSelectedTabsItem.bind(this)\n });\n if (this.mode() !== 'left' || this.ignoreCalculatorTab()) {\n this.tabs().items().map(item => item.update(data => ({ ...data, specificDisplay: true })));\n this.itemsDisplay.set(this.tabs().items().filter(item => item().specificDisplay));\n return;\n }\n fromEvent(window, 'resize').pipe(debounceTime(250), takeUntil(this.onDestroy)).subscribe(() => {\n if (!this.tabs().items().length) {\n return;\n }\n this.displayMoreItem.set(false);\n this.calculatorTabsItemDisplay();\n });\n this.changeViewTab.pipe(debounceTime(20), takeUntil(this.onDestroy)).subscribe(() => this.calculatorTabsItemDisplay());\n }\n\n /* FUNCTIONS */\n private updateTabsCssConfig() {\n if (this.configCss()) {\n return;\n }\n switch (this.mode()) {\n case 'left':\n this.configCss.set({\n first: 'ml-[20px] mr-[16px]',\n other: 'ml-[20px] mr-[16px]'\n });\n break;\n case 'center':\n this.configCss.set({\n first: 'px-[12px] ml-[18px] mr-[18px]',\n other: 'px-[12px] mx-[18px]',\n header: 'flex justify-center'\n });\n break;\n case 'center-has-line':\n this.configCss.set({\n first: 'px-[16px]',\n other: 'px-[16px]',\n headerCenter: 'items-center'\n });\n break;\n case 'space-between':\n this.configCss.set({\n first: 'mx-auto',\n other: 'mx-auto',\n headerCenter: 'w-full'\n });\n break;\n }\n }\n\n private updateStylesDragDropOverride() {\n if (this.allowDragDropPosition()) {\n return [\n {\n className: 'libs-ui-drag-drop-item-placeholder',\n styles: ''\n },\n {\n className: 'libs-ui-drag-drop-item',\n styles: 'cursor: move;'\n },\n {\n className: 'libs-ui-drag-drop-item-dragging',\n styles: 'cursor: move; background: #dddddd;'\n }\n ];\n }\n return [\n {\n className: 'libs-ui-drag-drop-item',\n styles: ''\n },\n {\n className: 'libs-ui-drag-drop-item-disable',\n styles: ''\n }\n ]\n }\n\n protected handlerDropContainer(event: IDrop) {\n const { itemDragInfo } = event;\n if (!itemDragInfo) {\n return;\n }\n const items = this.tabs().items;\n const { indexDrag, indexDrop } = itemDragInfo;\n if (isNil(indexDrag) || isNil(indexDrop) || indexDrop === indexDrag) {\n return;\n }\n const itemDrag = items()[indexDrag as number];\n items.update(items => {\n items.splice(indexDrag as number, 1);\n items.splice(indexDrop as number, 0, itemDrag);\n return [...items];\n });\n this.outDragTabChange.emit();\n }\n\n protected handlerPopoverFunctionControlEvent(event: IPopoverFunctionControlEvent) {\n this.popoverFunctionControlEvent.set(event);\n }\n\n private async handlerSelectedTabsItem(key: string, resetDisable = true) {\n const itemSelected = this.tabs().items().find(item => item()[this.fieldKey()] === key);\n if (!itemSelected) {\n return;\n }\n if (resetDisable) {\n itemSelected.update(item => ({ ...item, disable: false }));\n }\n this.handlerClickItem(itemSelected);\n }\n\n protected handlerSelectedKey(event: IListDataEmitKey | undefined) {\n if (!event) {\n return;\n }\n this.handlerClickItem(convertObjectToSignal(event.item));\n this.outDragTabChange.emit();\n }\n\n protected async handlerClickItem(item: WritableSignal<ITabsItem>) {\n if (item().disable || this.disable()) {\n return;\n }\n const checkCanChangeTabSelected = this.checkCanChangeTabSelected();\n if (checkCanChangeTabSelected) {\n const state = await checkCanChangeTabSelected();\n if (state) {\n this.changeItemSelected(item);\n }\n return;\n }\n this.changeItemSelected(item);\n }\n\n private changeItemSelected(item: WritableSignal<ITabsItem>) {\n this.keySelected.set(item()[this.fieldKey()]);\n this.outKeySelected.emit(this.keySelected());\n this.popoverFunctionControlEvent()?.removePopoverOverlay();\n this.calculatorTabsItemDisplay();\n }\n\n protected async handlerAction(event: ITabsItemEvent) {\n this.outAction.emit(event);\n }\n\n private async addTabsItem(item: WritableSignal<ITabsItem>, selected = true, addFirst?: boolean) {\n const items = this.tabs().items;\n items.update(items => {\n if (addFirst) {\n return [item, ...items];\n }\n return [...items, item];\n });\n if (selected) {\n this.handlerClickItem(item);\n }\n }\n\n protected async calculatorTabsItemDisplay() {\n let items = this.tabs().items();\n const indexItemSelected = items.findIndex(item => item()[this.fieldKey()] === this.keySelected());\n if (indexItemSelected < 0) {\n return;\n }\n this.displayMoreItem.set(false);\n let displayMoreItem = false;\n const headerWidth = this.headerEl().nativeElement.clientWidth || 0;\n const itemSelected = items[indexItemSelected];\n const itemSelectedWidth = itemSelected().specificWidth;\n let totalWidthItemsDisplay = (this.headerLeftEl().nativeElement.clientWidth || 0) + (this.headerRightEl().nativeElement.clientWidth || 0) + 32;\n items.forEach((item, index) => {\n if (!item().specificWidth) {\n return;\n }\n item.update(data => ({ ...data, specificDisplay: false }));\n const itemWidth = item().specificWidth || 0;\n const width = totalWidthItemsDisplay + itemWidth + (index < indexItemSelected ? itemSelectedWidth : 0);\n totalWidthItemsDisplay += itemWidth;\n if (width > headerWidth) {\n displayMoreItem = true;\n return;\n }\n item.update(data => ({ ...data, specificDisplay: true }));\n });\n itemSelected.update(data => ({ ...data, specificDisplay: true }));\n const display = items.filter(item => item().specificDisplay === true);\n const notDisplay = items.filter(item => item().specificDisplay === false);\n items = display.concat(notDisplay);\n items.forEach((item, index) => item.update(data => ({ ...data, order: index })));\n this.tabs().items.set(items.sort((prev, next) => (prev().order || 0) - (next().order || 0)));\n this.displayMoreItem.set(displayMoreItem);\n this.outDisplayMoreItem.emit(this.displayMoreItem());\n this.itemsDisplay.set(this.tabs().items().filter(item => item().specificDisplay));\n }\n\n ngOnDestroy() {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n\n}","<div class=\"libs-ui-tab\">\n <div #headerEl\n class=\"libs-ui-tab-header z-[1] {{ configCss()?.header || '' }} {{ tabs().classIncludeHeader || '' }}\"\n [style.minHeight.px]=\"heightTabItem()\">\n <div #headerLeftEl\n class='libs-ui-tab-header-left'>\n <ng-content select=\"div.libs-ui-tab-header-left\"></ng-content>\n </div>\n <div\n class=\"libs-ui-tab-header-center {{ configCss()?.headerCenter || '' }} {{ tabs().classIncludeHeaderCenter || '' }}\">\n <div class=\"!flex w-full\"\n #elementContainerEl\n LibsUiComponentsDragContainerDirective\n [stylesOverride]=\"stylesDragDropOverrideComputed()\"\n [groupName]=\"groupName()\"\n [(items)]=\"itemsDisplay\"\n [directionDrag]=\"'horizontal'\"\n [disableDragContainer]=\"!allowDragDropPosition()\"\n [acceptDragSameGroup]=\"allowDragDropPosition()\"\n (outDroppedContainer)=\"handlerDropContainer($event)\">\n @for (item of itemsDisplay(); track item) {\n <div LibsUiDragItemDirective\n [disable]=\"disable() || !allowDragDropPosition()\"\n [elementContainer]=\"elementContainerEl\"\n [dragBoundary]=\"true\"\n [dragBoundaryAcceptMouseLeaveContainer]=\"true\"\n class=\"relative libs-ui-tab-item-container\"\n [style.width.px]=\"mode() === 'space-between' ? (elementContainerEl.clientWidth/(itemsDisplay().length || 1)) : undefined\"\n [class.flex]=\"mode() === 'center-has-line'\"\n [class.items-center]=\"mode() === 'center-has-line'\">\n @if (allowDragDropPosition() && !disable()) {\n <span class=\"libs-ui-icon-arrange text-[#9ca2ad] absolute top-[14px] left-[4px]\"></span>\n }\n <libs_ui-components-tabs-item class=\"h-full w-full {{ tabs().classIncludeItem || '' }}\"\n [tabs]=\"tabs()\"\n [size]=\"size()\"\n [(item)]=\"item\"\n [step]=\"$index+1\"\n [class.!pointer-events-none]=\"item().disable || disable()\"\n [disable]=\"item().disable || disable()\"\n [disableLabel]=\"disableLabel()\"\n [keySelected]=\"keySelected()\"\n [fieldLabel]=\"fieldLabel()\"\n [fieldKey]=\"fieldKey()\"\n [cssDefault]=\"($first ? configCss()?.first : configCss()?.other) || ''\"\n [zIndex]=\"zIndex()\"\n [mode]=\"mode()\"\n [ignoreCalculatorTab]=\"true\"\n [changeViewTab]=\"changeViewTab\"\n (click)=\"handlerClickItem(item)\"\n (outAction)=\"handlerAction($event)\" />\n @if (mode() === 'center-has-line' && !$last) {\n <div class=\"w-[40px] h-[1px] bg-[#e6e7ea]\"></div>\n }\n </div>\n }\n </div>\n </div>\n <div class=\"flex items-center\"\n [class.ml-auto]=\"displayMoreItem() && !tabs().viewMoreIgnoreMarginLeft\">\n @if (displayMoreItem()) {\n <libs_ui-components-popover class=\"w-full h-full flex items-center\"\n [mode]=\"'click-toggle'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [config]=\"{\n zIndex: popoverShowMoreTabItem()?.config?.zIndex || 1000,\n maxHeight: popoverShowMoreTabItem()?.config?.maxHeight || 287,\n maxWidth: popoverShowMoreTabItem()?.config?.maxWidth || 2048,\n width: popoverShowMoreTabItem()?.config?.width || 277, \n direction: popoverShowMoreTabItem()?.config?.direction || 'bottom',\n template: popoverShowMoreTabItem()?.config?.template || menuEl,\n whiteTheme: true,\n ignoreArrow: true,\n position: popoverShowMoreTabItem()?.config?.position || { mode: 'end', distance: 0 }\n }\"\n (outFunctionsControl)=\"handlerPopoverFunctionControlEvent($event)\">\n <libs_ui-components-buttons-button [type]=\"'button-link-third'\"\n [classInclude]=\"'!p-[8px]'\"\n [iconOnlyType]=\"true\"\n [classIconLeft]=\"'libs-ui-icon-more-vertical rotate-90 text-[16px] mr-0'\"\n [popover]=\"{config: {content: popoverShowMoreTabItem()?.config?.content || 'i18n_view_more'}}\"\n [ignoreStopPropagationEvent]=\"true\" />\n </libs_ui-components-popover>\n }\n </div>\n <div #headerRightEl\n class=\"libs-ui-tab-header-right {{ tabs().classIncludeHeaderRight || '' }}\">\n <ng-content select=\"div.libs-ui-tab-header-right\"></ng-content>\n </div>\n </div>\n <div class=\"absolute top-0 z-0 w-full\">\n <div class=\"libs-ui-tab-header {{ configCss()?.header || '' }} {{ tabs().classIncludeHeader || '' }}\"\n [style.minHeight.px]=\"heightTabItem()\">\n <div\n class=\"libs-ui-tab-header-center {{ configCss()?.headerCenter || '' }} {{ tabs().classIncludeHeaderCenter || '' }}\">\n @for (item of tabs().items(); track item) {\n <libs_ui-components-tabs-item class=\"h-full w-full {{ tabs().classIncludeItem || '' }}\"\n [tabs]=\"tabs()\"\n [size]=\"size()\"\n [(item)]=\"item\"\n [step]=\"$index+1\"\n [disable]=\"disable()\"\n [disableLabel]=\"disableLabel()\"\n [keySelected]=\"keySelected()\"\n [fieldLabel]=\"fieldLabel()\"\n [fieldKey]=\"fieldKey()\"\n [cssDefault]=\"($first ? configCss()?.first : configCss()?.other) || ''\"\n [zIndex]=\"zIndex()\"\n [mode]=\"mode()\"\n [changeViewTab]=\"changeViewTab\"\n [ignoreCalculatorTab]=\"ignoreCalculatorTab()\" />\n }\n </div>\n </div>\n </div>\n</div>\n<ng-template #menuEl>\n <libs_ui-components-list [config]=\"tabMoreListConfig()\"\n [maxItemShow]=\"5\"\n [hiddenInputSearch]=\"true\"\n [paddingLeftItem]=\"true\"\n (outSelectKey)=\"handlerSelectedKey($event)\" />\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["debounceTime"],"mappings":"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"}
1
+ {"version":3,"file":"libs-ui-components-tabs.mjs","sources":["../../../../../libs-ui/components/tabs/src/item/item.component.ts","../../../../../libs-ui/components/tabs/src/item/item.component.html","../../../../../libs-ui/components/tabs/src/utils/tabs.ts","../../../../../libs-ui/components/tabs/src/tabs.component.ts","../../../../../libs-ui/components/tabs/src/tabs.component.html","../../../../../libs-ui/components/tabs/src/libs-ui-components-tabs.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, input, model, OnDestroy, OnInit, output, signal, untracked } from '@angular/core';\nimport { LibsUiComponentsBadgeComponent } from '@libs-ui/components-badge';\nimport { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';\nimport { IPopoverFunctionControlEvent, LibsUiComponentsPopoverComponent, TYPE_POPOVER_EVENT } from '@libs-ui/components-popover';\nimport { IEvent } from '@libs-ui/interfaces-types';\nimport { escapeHtml, uuid } from '@libs-ui/utils';\nimport { TranslateService } from '@ngx-translate/core';\nimport { debounceTime, Subject } from 'rxjs';\nimport { ITabsItem, ITabsItemEvent, ITabs, TYPE_TAB_MODE } from '../interfaces/tab.interface';\nimport { IListDataEmitKey, LibsUiComponentsListComponent } from '@libs-ui/components-list';\nimport { LibsUiPipesCallFunctionInTemplatePipe } from '@libs-ui/pipes-call-function-in-template';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-tabs-item',\n templateUrl: './item.component.html',\n styleUrls: ['./item.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AsyncPipe,\n LibsUiComponentsButtonsButtonComponent,\n LibsUiComponentsPopoverComponent,\n LibsUiComponentsBadgeComponent,\n LibsUiComponentsListComponent,\n LibsUiPipesCallFunctionInTemplatePipe\n ]\n})\nexport class LibsUiComponentsTabsItemComponent implements OnInit, OnDestroy {\n\n // #region PROPERTY\n protected labelComputed = computed(() => escapeHtml(this.translateService.instant(this.item()[this.fieldLabel()])));\n protected actionShowing = signal<boolean>(false);\n\n private mutationObserver = signal<MutationObserver | undefined>(undefined);\n private mutationObserverSubject = new Subject<void>();\n private onDestroy = new Subject<void>();\n\n private popoverFunctionControlEvent = signal<IPopoverFunctionControlEvent | undefined>(undefined);\n\n // #region INPUT\n readonly ignoreCalculatorTab = input.required<boolean>();\n readonly step = input.required<number>();\n readonly mode = input.required<TYPE_TAB_MODE>();\n readonly tabs = input.required<ITabs>();\n readonly item = model.required<ITabsItem>();\n readonly keySelected = input.required<string>();\n readonly fieldLabel = input.required<string>();\n readonly fieldKey = input.required<string>();\n readonly cssDefault = input.required<string>();\n readonly size = input.required<'langer' | 'medium'>();\n readonly disable = input<boolean>();\n readonly disableLabel = input<boolean>();\n readonly zIndex = input<number>();\n readonly changeViewTab = input.required<Subject<void>>();\n\n // #region OUTPUT\n readonly outAction = output<ITabsItemEvent>();\n\n /* INJECT*/\n private element = inject(ElementRef);\n private translateService = inject(TranslateService);\n\n constructor() {\n effect(() => {\n if (this.mode() !== 'left' || this.ignoreCalculatorTab()) {\n return;\n }\n untracked(() => {\n setTimeout(() => {\n this.updateSpecificWidth();\n this.mutationObserver()?.disconnect();\n this.mutationObserverSubject.pipe(debounceTime(10)).subscribe(() => this.updateSpecificWidth());\n this.mutationObserver.set(new MutationObserver(() => this.mutationObserverSubject.next()));\n this.mutationObserver()?.observe(this.element.nativeElement, { attributes: true, childList: true, subtree: true });\n })\n });\n });\n }\n\n ngOnInit() {\n if (!this.item().key) {\n this.item.update(item => ({ ...item, key: uuid() }));\n }\n }\n\n /* FUNCTIONS */\n private updateSpecificWidth() {\n const preSpecificWidth = this.item().specificWidth;\n const width = this.element.nativeElement.offsetWidth;\n if (width && preSpecificWidth !== width) {\n this.item.update(item => ({ ...item, specificWidth: width }));\n this.changeViewTab().next();\n }\n }\n\n protected handlerImgError(event: Event) {\n event.stopPropagation();\n (event as IEvent).target.src = this.item().linkImageError\n }\n\n protected handlerSelectedKey(event: IListDataEmitKey | undefined) {\n if (!event) {\n return;\n }\n this.outAction.emit({ item: this.item(), key: event.key as string });\n this.popoverFunctionControlEvent()?.removePopoverOverlay();\n }\n\n protected handlerPopoverFunctionControlEvent(event: IPopoverFunctionControlEvent) {\n this.popoverFunctionControlEvent.set(event);\n }\n\n protected handlerPopoverEvent(event: TYPE_POPOVER_EVENT) {\n if (event !== 'show' && event !== 'remove') {\n return;\n }\n this.actionShowing.set(event === 'show');\n }\n\n\n protected handlerClickButton(event: Event, type: 'configButtonLeft' | 'configButtonRight' | 'remove') {\n event.stopPropagation();\n if (type === 'remove') {\n this.outAction.emit({ key: 'remove', item: this.item() })\n return;\n }\n const action = this.item()[type]?.action;\n if (action) {\n action(this.item());\n }\n }\n\n ngOnDestroy(): void {\n this.mutationObserver()?.disconnect();\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n\n}\n"," @if (item(); as item) {\n <div #itemEl\n class=\"libs-ui-tab-header-center-item {{ cssDefault() }} {{ item.classInclude || '' }} {{ item[fieldKey()] === keySelected() && tabs().classIncludeActiveItem ? tabs().classIncludeActiveItem : '' }}\"\n [attr.key]=\"item[fieldKey()]\"\n [attr.invalid]=\"item.invalid && !tabs().ignoreShowLineBottomInTab\"\n [attr.active]=\"item[fieldKey()] === keySelected() && !tabs().ignoreShowLineBottomInTab\"\n [attr.disable]=\"disable()\"\n [class.!cursor-pointer]=\"!disable()\"\n [class.!cursor-default]=\"disable()\"\n [class.libs-ui-tab-header-center-item-hover]=\"!tabs().ignoreShowLineBottomInTab\"\n [class.libs-ui-tab-header-center-item-action-show]=\"actionShowing()\">\n @if (tabs().hasImage) {\n <img class=\"libs-ui-tab-header-center-item-image {{ item.classImageInclude || '' }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverImage\"\n [config]=\"item.popoverImage\"\n [ignoreStopPropagationEvent]=\"true\"\n [class.libs-ui-disable]=\"disable()\"\n [src]=\"item.linkImage\"\n [attr.key]=\"item[fieldKey()]\"\n (error)=\"handlerImgError($event)\" />\n }\n @if (item.iconLeft) {\n <i class=\"libs-ui-tab-header-center-item-icon libs-ui-mr-8px {{ item.iconLeft }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconLeft\"\n [config]=\"item.popoverIconLeft\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (item.is_pin) {\n <i class=\"libs-ui-tab-header-center-item-icon mr-[8px] {{ item[fieldKey()] === keySelected() ? 'libs-ui-icon-pin-solid' : 'libs-ui-icon-pin-outline' }}\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (tabs().hasStep) {\n @if (tabs().stepHasBackGround) {\n <div class=\"libs-ui-tab-header-center-item-step !border-none libs-ui-font-h6m\"\n [class.!text-[#ffffff]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.!text-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.!text-[#f15767]]=\"item.invalid\"\n [class.bg-[#f8f9fa]]=\"step() > (tabs().stepCompleted || 0) && (tabs().ignoreSelectedBackgroundStep || disable()) && !item.invalid\"\n [class.bg-[#00bc62]]=\"step() <= (tabs().stepCompleted || -1) && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.bg-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.bg-[var(--libs-ui-color-light-2)]]=\"((item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep) || (step() > (tabs().stepCompleted || 0) && !tabs().ignoreSelectedBackgroundStep)) && !item.invalid\"\n [class.!bg-[#fdeaec]]=\"item.invalid\">\n @if ((step() <= (tabs().stepCompleted || -1))) {\n <i class=\"libs-ui-icon-check text-[#ffffff]\"></i>\n } @else {\n <span [class.text-[#cdd0d6]]=\"disable()\">{{ step() }}</span>\n }\n </div>\n } @else {\n <div class=\"libs-ui-tab-header-center-item-step\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n <span>{{ step() }}</span>\n </div>\n }\n }\n @if (item.configButtonLeft) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonLeft.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonLeft.classInclude || ''\"\n [classIconLeft]=\"item.configButtonLeft.classIconLeft ||''\"\n [classLabel]=\"item.configButtonLeft.classLabel || ''\"\n [classIconRight]=\"item.configButtonLeft.classIconRight ||''\"\n [label]=\"item.configButtonLeft.label ||''\"\n [popover]=\"item.configButtonLeft.popover || {}\"\n (outClick)=\"handlerClickButton($event, 'configButtonLeft')\" />\n }\n @if (item[fieldLabel()]) {\n <div class=\"relative flex\"\n [style.maxWidth.px]=\"tabs().maxWidthTextLabelItem || 160\">\n <span LibsUiComponentsPopoverDirective\n [type]=\"'text'\"\n [config]=\"{position: {mode: step() === 1 ? 'start' : 'center', distance: 0}, zIndex: zIndex()}\"\n [attr.size]=\"size()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.!text-[#f15767]]=\"item.invalid\"\n [ignoreStopPropagationEvent]=\"true\"\n [classInclude]=\"'w-full libs-ui-tab-header-center-item-label '+ (item.classLabel || 'libs-ui-font-h6m') + \n (disableLabel() && (disable()) ? ' libs-ui-disable' : '') \n + (tabs().stepHasBackGround && (disable()) ? ' text-[#cdd0d6]' : '')\"\n [innerHTML]=\"labelComputed()\"></span>\n @if (item.hasRedDot) {\n <div class=\"absolute right-[-6px] top-[-2px] w-[6px] h-[6px] bg-[#ee2d41] rounded-[6px]\">\n </div>\n }\n </div>\n }\n @if (item.popover) {\n <i class=\"libs-ui-tab-header-center-item-icon ml-[8px] libs-ui-icon-tooltip-outline\"\n LibsUiComponentsPopoverDirective\n [config]=\"item.popover\"\n [ignoreStopPropagationEvent]=\"true\"\n [class.libs-ui-disable]=\"disable()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\">\n </i>\n }\n @if (item.iconRight) {\n <i class=\"libs-ui-tab-header-center-item-icon {{ item.iconRight }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconRight\"\n [config]=\"item.popoverIconRight\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n </i>\n }\n @if (item.count !== undefined) {\n <libs_ui-components-badge [mode]=\"item.modeCount || 'x+'\"\n [count]=\"item.count\"\n [maxCount]=\"item.maxCount || 99\"\n [classCircle]=\"(item.classCircle || 'libs-ui-font-h5r') + (item.invalid ? ' !text-[#f15767] !bg-[#fdeaec]' : '')\"\n [active]=\"item[fieldKey()] === keySelected()\"\n [class.libs-ui-disable]=\"disable()\" />\n }\n @if (item.configButtonRight) {\n <libs_ui-components-buttons-button [type]=\"item.configButtonRight.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonRight.classInclude || ''\"\n [classIconLeft]=\"item.configButtonRight.classIconLeft ||''\"\n [classLabel]=\"item.configButtonRight.classLabel || ''\"\n [classIconRight]=\"item.configButtonRight.classIconRight ||''\"\n [popover]=\"item.configButtonRight.popover || {}\"\n [label]=\"item.configButtonRight.label ||''\"\n (outClick)=\"handlerClickButton($event, 'configButtonRight')\" />\n }\n @if (tabs().actionRightConfig?.(); as right) {\n <libs_ui-components-popover [class]=\"right.classInclude || 'ml-[8px]'\"\n [class.libs-ui-tab-header-center-item-action]=\"right.onlyShowWhenHoverItemActive\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [mode]=\"'click-toggle'\"\n [ignoreStopPropagationEvent]=\"true\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [elementRefCustom]=\"right.onlyShowWhenHoverItemActive ? undefined : itemEl \"\n [config]=\"{\n zIndex: right.config?.()?.zIndex || 1000,\n maxHeight: right.config?.()?.maxHeight || 287,\n maxWidth: right.config?.()?.maxWidth || 2048,\n width: right.config?.()?.width || 220, \n direction: right.config?.()?.direction || 'bottom',\n template: right.config?.()?.template || actionEl,\n classInclude: (right.config?.()?.classInclude || '')+ ' !rounded-[4px] overflow-hidden',\n whiteTheme: true,\n ignoreArrow: true,\n position: right.config?.()?.position || { mode: 'start', distance: 0 }\n }\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outFunctionsControl)=\"handlerPopoverFunctionControlEvent($event)\">\n @if (right.customView) {\n <div [innerHtml]=\"item[fieldKey()] | LibsUiPipesCallFunctionInTemplatePipe:right.customView:item\"></div>\n } @else {\n <i [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.invalid]=\"item.invalid\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class]=\"right.onlyShowWhenHoverItemActive ? 'libs-ui-icon-more-vertical rotate-90 libs-ui-tab-header-center-item-icon' : 'libs-ui-icon-chevron-right rotate-90 libs-ui-tab-header-center-item-icon'\">\n </i>\n }\n </libs_ui-components-popover>\n <ng-template #actionEl>\n @if ((0 | LibsUiPipesCallFunctionInTemplatePipe:right.getListViewConfig:item: item[fieldKey()]: {valueIs0: 0} |async) ; as config) {\n <libs_ui-components-list [config]=\"config()\"\n [maxItemShow]=\"5\"\n [hiddenInputSearch]=\"true\"\n [paddingLeftItem]=\"true\"\n (outSelectKey)=\"handlerSelectedKey($event)\" />\n }\n </ng-template>\n }\n @if (tabs().allowRemove && tabs().items().length > 1) {\n <libs_ui-components-buttons-button [type]=\"tabs().configButtonRemove?.type || 'button-link-custom'\"\n [iconOnlyType]=\"tabs().configButtonRemove?.iconOnlyType || true\"\n [classInclude]=\"tabs().configButtonRemove?.classInclude || 'ml-[8px] !p-0'\"\n [classIconLeft]=\"tabs().configButtonRemove?.classIconLeft || 'libs-ui-icon-close'\"\n [classLabel]=\"tabs().configButtonRemove?.classLabel || ''\"\n [classIconRight]=\"tabs().configButtonRemove?.classIconRight ||''\"\n [popover]=\"tabs().configButtonRemove?.popover || {config: {content: 'i18n_delete'}}\"\n [label]=\"tabs().configButtonRemove?.label ||''\"\n [buttonCustom]=\"{\n configStepColor: {\n text: '#6a7383',\n text_hover: '#f15767',\n text_active: '#f15767',\n text_disable: '#cdd0d6'\n },\n rootColor: '#f15767'\n }\"\n (outClick)=\"handlerClickButton($event, 'remove')\" />\n }\n </div>\n }\n","import { IDataFunctionCallInConfig, IListConfigItem } from \"@libs-ui/components-list\";\nimport { convertObjectToSignal, escapeHtml, isNil } from \"@libs-ui/utils\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { of } from \"rxjs\";\nimport { ITabs, ITabsItem } from \"../interfaces/tab.interface\";\nimport { returnListObject } from \"@libs-ui/services-http-request\";\nimport { signal } from \"@angular/core\";\n\nexport const tabMoreListConfig = (translate: TranslateService, fieldKey: string, fieldLabel: string, tabs: ITabs, disable: boolean | undefined): IListConfigItem => {\n return {\n type: 'text',\n httpRequestData: signal({\n serviceOther: returnListObject(tabs.items().filter(item => !item().specificDisplay).map(item => item())),\n functionName: 'listObservable',\n argumentsValue: []\n }),\n configTemplateText: signal({\n fieldKey: fieldKey || 'key',\n getClassItem: () => '!py-[12px]',\n classRows: 'w-full',\n notUseVirtualScroll: true,\n rows: convertObjectToSignal([{\n classCols: 'flex items-center',\n cols: [\n {\n getPopover: (item: ITabsItem) => {\n if (!tabs.hasStep) {\n return;\n }\n const step = (item.order || 0) + 1;\n let classStep = 'bg-[#f8f9fa] text-[#9ca2ad]';\n if (item.invalid) {\n classStep = '!text-[#f15767] !bg-[#fdeaec]';\n }\n if (item.disable || disable) {\n classStep = 'bg-[#f8f9fa] text-[#cdd0d6]';\n }\n return {\n classInclude: 'flex',\n dataView: `\n <div class=\"libs-ui-font-h6m rounded-full min-w-[24px] min-h-[24px] flex items-center justify-center mr-[8px] ${classStep}\">\n ${(step <= (tabs.stepCompleted || -1)) ? `<i class=\"libs-ui-icon-check text-[#ffffff]\"></i>` : `${step}`}\n </div>\n `\n }\n }\n },\n {\n getPopover: (item: ITabsItem) => item.iconLeft ? { classInclude: 'flex', dataView: `<i class=\"${item.iconLeft} text-[16px] mr-[8px]\"></i>` } : undefined\n },\n {\n getClassCol: (item: ITabsItem) => `libs-ui-font-h6m ${item.invalid ? '!text-[#f15767]' : 'text-[#6a7383]'}`,\n getValue: (data: IDataFunctionCallInConfig) => of(escapeHtml(translate.instant(data.item[fieldLabel] || ' ')))\n },\n {\n getPopover: (item: ITabsItem) => item.popover ? { config: item.popover } : undefined\n },\n {\n getPopover: (item: ITabsItem) => item.iconRight ? { classInclude: 'flex', dataView: `<i class=\"${item.iconRight} text-[16px] ml-[8px]\"></i>` } : undefined\n },\n {\n getConfigBadge: (item: ITabsItem) => {\n if (isNil(item.count)) {\n return;\n }\n return {\n mode: item.modeCount || 'x+',\n count: item.count,\n maxCount: item.maxCount || 99,\n classCircle: (item.classCircle || 'libs-ui-font-h5r') + (item.invalid ? ' !text-[#f15767] !bg-[#fdeaec]' : '')\n };\n }\n }\n ]\n }])\n })\n };\n}","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input, model, OnDestroy, OnInit, output, signal, viewChild, WritableSignal } from '@angular/core';\nimport { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';\nimport { IDrop, LibsUiComponentsDragContainerDirective, LibsUiDragItemDirective } from '@libs-ui/components-drag-drop';\nimport { IListDataEmitKey, LibsUiComponentsListComponent } from '@libs-ui/components-list';\nimport { IPopover, IPopoverFunctionControlEvent, LibsUiComponentsPopoverComponent } from '@libs-ui/components-popover';\nimport { convertObjectToSignal, isNil, uuid } from '@libs-ui/utils';\nimport { TranslateService } from '@ngx-translate/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { ITabCssConfig, ITabs, ITabsFunctionControlEvent, ITabsItem, ITabsItemEvent, TYPE_TAB_MODE } from './interfaces/tab.interface';\nimport { LibsUiComponentsTabsItemComponent } from './item/item.component';\nimport { tabMoreListConfig } from './utils/tabs';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-tabs',\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n LibsUiComponentsDragContainerDirective,\n LibsUiDragItemDirective,\n LibsUiComponentsPopoverComponent,\n LibsUiComponentsButtonsButtonComponent,\n LibsUiComponentsTabsItemComponent,\n LibsUiComponentsListComponent\n ]\n})\nexport class LibsUiComponentsTabsComponent implements OnInit, OnDestroy {\n\n // #region PROPERTY\n protected itemsDisplay = signal<Array<WritableSignal<ITabsItem>>>([]);\n protected displayMoreItem = signal<boolean>(false);\n protected tabMoreListConfig = computed(() => tabMoreListConfig(this.translate, this.fieldKey(), this.fieldLabel(), this.tabs(), this.disable()));\n protected changeViewTab = new Subject<void>();\n protected groupName = signal<string>(uuid());\n protected stylesDragDropOverrideComputed = computed(() => this.updateStylesDragDropOverride());\n\n private popoverFunctionControlEvent = signal<IPopoverFunctionControlEvent | undefined>(undefined);\n private onDestroy = new Subject<void>();\n\n // #region INPUT\n readonly tabs = input.required<ITabs>();\n readonly keySelected = model.required<string>();\n readonly mode = input<TYPE_TAB_MODE>('left');\n readonly fieldKey = input<string>('key');\n readonly fieldLabel = input<string>('label');\n readonly disable = input<boolean>();\n readonly disableLabel = input<boolean>();\n readonly heightTabItem = input<number>(40);\n readonly ignoreCalculatorTab = input<boolean>(false);\n readonly size = input<'langer' | 'medium'>('medium');\n readonly allowDragDropPosition = input<boolean>();\n readonly zIndex = input<number>();\n readonly configCss = model<ITabCssConfig>();\n readonly popoverShowMoreTabItem = input<IPopover>();\n readonly checkCanChangeTabSelected = input<() => boolean | Promise<boolean>>();\n\n // #region OUTPUT\n readonly outKeySelected = output<string>();\n readonly outFunctionsControl = output<ITabsFunctionControlEvent>();\n readonly outDragTabChange = output<void>();\n readonly outDisplayMoreItem = output<boolean>();\n readonly outAction = output<ITabsItemEvent>();\n\n /* VIEW CHILD */\n private readonly headerEl = viewChild.required<ElementRef>('headerEl');\n private readonly headerLeftEl = viewChild.required<ElementRef>('headerLeftEl');\n private readonly headerRightEl = viewChild.required<ElementRef>('headerRightEl');\n\n /* INJECT*/\n private translate = inject(TranslateService);\n\n ngOnInit() {\n this.updateTabsCssConfig();\n this.outFunctionsControl.emit({\n addTabsItem: this.addTabsItem.bind(this),\n calculatorTabsItemsDisplay: this.calculatorTabsItemDisplay.bind(this),\n selectedTabsItem: this.handlerSelectedTabsItem.bind(this)\n });\n if (this.mode() !== 'left' || this.ignoreCalculatorTab()) {\n this.tabs().items().map(item => item.update(data => ({ ...data, specificDisplay: true })));\n this.itemsDisplay.set(this.tabs().items().filter(item => item().specificDisplay));\n return;\n }\n fromEvent(window, 'resize').pipe(debounceTime(250), takeUntil(this.onDestroy)).subscribe(() => {\n if (!this.tabs().items().length) {\n return;\n }\n this.displayMoreItem.set(false);\n this.calculatorTabsItemDisplay();\n });\n this.changeViewTab.pipe(debounceTime(20), takeUntil(this.onDestroy)).subscribe(() => this.calculatorTabsItemDisplay());\n }\n\n /* FUNCTIONS */\n private updateTabsCssConfig() {\n if (this.configCss()) {\n return;\n }\n switch (this.mode()) {\n case 'left':\n this.configCss.set({\n first: 'ml-[20px] mr-[16px]',\n other: 'ml-[20px] mr-[16px]'\n });\n break;\n case 'center':\n this.configCss.set({\n first: 'px-[12px] ml-[18px] mr-[18px]',\n other: 'px-[12px] mx-[18px]',\n header: 'flex justify-center'\n });\n break;\n case 'center-has-line':\n this.configCss.set({\n first: 'px-[16px]',\n other: 'px-[16px]',\n headerCenter: 'items-center'\n });\n break;\n case 'space-between':\n this.configCss.set({\n first: 'mx-auto',\n other: 'mx-auto',\n headerCenter: 'w-full'\n });\n break;\n }\n }\n\n private updateStylesDragDropOverride() {\n if (this.allowDragDropPosition()) {\n return [\n {\n className: 'libs-ui-drag-drop-item-placeholder',\n styles: ''\n },\n {\n className: 'libs-ui-drag-drop-item',\n styles: 'cursor: move;'\n },\n {\n className: 'libs-ui-drag-drop-item-dragging',\n styles: 'cursor: move; background: #dddddd;'\n }\n ];\n }\n return [\n {\n className: 'libs-ui-drag-drop-item',\n styles: ''\n },\n {\n className: 'libs-ui-drag-drop-item-disable',\n styles: ''\n }\n ]\n }\n\n protected handlerDropContainer(event: IDrop) {\n const { itemDragInfo } = event;\n if (!itemDragInfo) {\n return;\n }\n const items = this.tabs().items;\n const { indexDrag, indexDrop } = itemDragInfo;\n if (isNil(indexDrag) || isNil(indexDrop) || indexDrop === indexDrag) {\n return;\n }\n const itemDrag = items()[indexDrag as number];\n items.update(items => {\n items.splice(indexDrag as number, 1);\n items.splice(indexDrop as number, 0, itemDrag);\n return [...items];\n });\n this.outDragTabChange.emit();\n }\n\n protected handlerPopoverFunctionControlEvent(event: IPopoverFunctionControlEvent) {\n this.popoverFunctionControlEvent.set(event);\n }\n\n private async handlerSelectedTabsItem(key: string, resetDisable = true) {\n const itemSelected = this.tabs().items().find(item => item()[this.fieldKey()] === key);\n if (!itemSelected) {\n return;\n }\n if (resetDisable) {\n itemSelected.update(item => ({ ...item, disable: false }));\n }\n this.handlerClickItem(itemSelected);\n }\n\n protected handlerSelectedKey(event: IListDataEmitKey | undefined) {\n if (!event) {\n return;\n }\n this.handlerClickItem(convertObjectToSignal(event.item));\n this.outDragTabChange.emit();\n }\n\n protected async handlerClickItem(item: WritableSignal<ITabsItem>) {\n if (item().disable || this.disable()) {\n return;\n }\n const checkCanChangeTabSelected = this.checkCanChangeTabSelected();\n if (checkCanChangeTabSelected) {\n const state = await checkCanChangeTabSelected();\n if (state) {\n this.changeItemSelected(item);\n }\n return;\n }\n this.changeItemSelected(item);\n }\n\n private changeItemSelected(item: WritableSignal<ITabsItem>) {\n this.keySelected.set(item()[this.fieldKey()]);\n this.outKeySelected.emit(this.keySelected());\n this.popoverFunctionControlEvent()?.removePopoverOverlay();\n this.calculatorTabsItemDisplay();\n }\n\n protected async handlerAction(event: ITabsItemEvent) {\n this.outAction.emit(event);\n }\n\n private async addTabsItem(item: WritableSignal<ITabsItem>, selected = true, addFirst?: boolean) {\n const items = this.tabs().items;\n items.update(items => {\n if (addFirst) {\n return [item, ...items];\n }\n return [...items, item];\n });\n if (selected) {\n this.handlerClickItem(item);\n }\n }\n\n protected async calculatorTabsItemDisplay() {\n let items = this.tabs().items();\n const indexItemSelected = items.findIndex(item => item()[this.fieldKey()] === this.keySelected());\n if (indexItemSelected < 0) {\n return;\n }\n this.displayMoreItem.set(false);\n let displayMoreItem = false;\n const headerWidth = this.headerEl().nativeElement.clientWidth || 0;\n const itemSelected = items[indexItemSelected];\n const itemSelectedWidth = itemSelected().specificWidth;\n let totalWidthItemsDisplay = (this.headerLeftEl().nativeElement.clientWidth || 0) + (this.headerRightEl().nativeElement.clientWidth || 0) + 32;\n items.forEach((item, index) => {\n if (!item().specificWidth) {\n return;\n }\n item.update(data => ({ ...data, specificDisplay: false }));\n const itemWidth = item().specificWidth || 0;\n const width = totalWidthItemsDisplay + itemWidth + (index < indexItemSelected ? itemSelectedWidth : 0);\n totalWidthItemsDisplay += itemWidth;\n if (width > headerWidth) {\n displayMoreItem = true;\n return;\n }\n item.update(data => ({ ...data, specificDisplay: true }));\n });\n itemSelected.update(data => ({ ...data, specificDisplay: true }));\n const display = items.filter(item => item().specificDisplay === true);\n const notDisplay = items.filter(item => item().specificDisplay === false);\n items = display.concat(notDisplay);\n items.forEach((item, index) => item.update(data => ({ ...data, order: index })));\n this.tabs().items.set(items.sort((prev, next) => (prev().order || 0) - (next().order || 0)));\n this.displayMoreItem.set(displayMoreItem);\n this.outDisplayMoreItem.emit(this.displayMoreItem());\n this.itemsDisplay.set(this.tabs().items().filter(item => item().specificDisplay));\n }\n\n ngOnDestroy() {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n\n}","<div class=\"libs-ui-tab\">\n <div #headerEl\n class=\"libs-ui-tab-header z-[1] {{ configCss()?.header || '' }} {{ tabs().classIncludeHeader || '' }}\"\n [style.minHeight.px]=\"heightTabItem()\">\n <div #headerLeftEl\n class='libs-ui-tab-header-left'>\n <ng-content select=\"div.libs-ui-tab-header-left\"></ng-content>\n </div>\n <div\n class=\"libs-ui-tab-header-center {{ configCss()?.headerCenter || '' }} {{ tabs().classIncludeHeaderCenter || '' }}\">\n <div class=\"!flex w-full\"\n #elementContainerEl\n LibsUiComponentsDragContainerDirective\n [stylesOverride]=\"stylesDragDropOverrideComputed()\"\n [groupName]=\"groupName()\"\n [(items)]=\"itemsDisplay\"\n [directionDrag]=\"'horizontal'\"\n [disableDragContainer]=\"!allowDragDropPosition()\"\n [acceptDragSameGroup]=\"allowDragDropPosition()\"\n (outDroppedContainer)=\"handlerDropContainer($event)\">\n @for (item of itemsDisplay(); track item) {\n <div LibsUiDragItemDirective\n [disable]=\"disable() || !allowDragDropPosition()\"\n [elementContainer]=\"elementContainerEl\"\n [dragBoundary]=\"true\"\n [dragBoundaryAcceptMouseLeaveContainer]=\"true\"\n class=\"relative libs-ui-tab-item-container\"\n [style.width.px]=\"mode() === 'space-between' ? (elementContainerEl.clientWidth/(itemsDisplay().length || 1)) : undefined\"\n [class.flex]=\"mode() === 'center-has-line'\"\n [class.items-center]=\"mode() === 'center-has-line'\">\n @if (allowDragDropPosition() && !disable()) {\n <span class=\"libs-ui-icon-arrange text-[#9ca2ad] absolute top-[14px] left-[4px]\"></span>\n }\n <libs_ui-components-tabs-item class=\"h-full w-full {{ tabs().classIncludeItem || '' }}\"\n [tabs]=\"tabs()\"\n [size]=\"size()\"\n [(item)]=\"item\"\n [step]=\"$index+1\"\n [class.!pointer-events-none]=\"item().disable || disable()\"\n [disable]=\"item().disable || disable()\"\n [disableLabel]=\"disableLabel()\"\n [keySelected]=\"keySelected()\"\n [fieldLabel]=\"fieldLabel()\"\n [fieldKey]=\"fieldKey()\"\n [cssDefault]=\"($first ? configCss()?.first : configCss()?.other) || ''\"\n [zIndex]=\"zIndex()\"\n [mode]=\"mode()\"\n [ignoreCalculatorTab]=\"true\"\n [changeViewTab]=\"changeViewTab\"\n (click)=\"handlerClickItem(item)\"\n (outAction)=\"handlerAction($event)\" />\n @if (mode() === 'center-has-line' && !$last) {\n <div class=\"w-[40px] h-[1px] bg-[#e6e7ea]\"></div>\n }\n </div>\n }\n </div>\n </div>\n <div class=\"flex items-center\"\n [class.ml-auto]=\"displayMoreItem() && !tabs().viewMoreIgnoreMarginLeft\">\n @if (displayMoreItem()) {\n <libs_ui-components-popover class=\"w-full h-full flex items-center\"\n [mode]=\"'click-toggle'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [config]=\"{\n zIndex: popoverShowMoreTabItem()?.config?.zIndex || 1000,\n maxHeight: popoverShowMoreTabItem()?.config?.maxHeight || 287,\n maxWidth: popoverShowMoreTabItem()?.config?.maxWidth || 2048,\n width: popoverShowMoreTabItem()?.config?.width || 277, \n direction: popoverShowMoreTabItem()?.config?.direction || 'bottom',\n template: popoverShowMoreTabItem()?.config?.template || menuEl,\n whiteTheme: true,\n ignoreArrow: true,\n position: popoverShowMoreTabItem()?.config?.position || { mode: 'end', distance: 0 }\n }\"\n (outFunctionsControl)=\"handlerPopoverFunctionControlEvent($event)\">\n <libs_ui-components-buttons-button [type]=\"'button-link-third'\"\n [classInclude]=\"'!p-[8px]'\"\n [iconOnlyType]=\"true\"\n [classIconLeft]=\"'libs-ui-icon-more-vertical rotate-90 text-[16px] mr-0'\"\n [popover]=\"{config: {content: popoverShowMoreTabItem()?.config?.content || 'i18n_view_more'}}\"\n [ignoreStopPropagationEvent]=\"true\" />\n </libs_ui-components-popover>\n }\n </div>\n <div #headerRightEl\n class=\"libs-ui-tab-header-right {{ tabs().classIncludeHeaderRight || '' }}\">\n <ng-content select=\"div.libs-ui-tab-header-right\"></ng-content>\n </div>\n </div>\n <div class=\"absolute top-0 z-0 w-full\">\n <div class=\"libs-ui-tab-header {{ configCss()?.header || '' }} {{ tabs().classIncludeHeader || '' }}\"\n [style.minHeight.px]=\"heightTabItem()\">\n <div\n class=\"libs-ui-tab-header-center {{ configCss()?.headerCenter || '' }} {{ tabs().classIncludeHeaderCenter || '' }}\">\n @for (item of tabs().items(); track item) {\n <libs_ui-components-tabs-item class=\"h-full w-full {{ tabs().classIncludeItem || '' }}\"\n [tabs]=\"tabs()\"\n [size]=\"size()\"\n [(item)]=\"item\"\n [step]=\"$index+1\"\n [disable]=\"disable()\"\n [disableLabel]=\"disableLabel()\"\n [keySelected]=\"keySelected()\"\n [fieldLabel]=\"fieldLabel()\"\n [fieldKey]=\"fieldKey()\"\n [cssDefault]=\"($first ? configCss()?.first : configCss()?.other) || ''\"\n [zIndex]=\"zIndex()\"\n [mode]=\"mode()\"\n [changeViewTab]=\"changeViewTab\"\n [ignoreCalculatorTab]=\"ignoreCalculatorTab()\" />\n }\n </div>\n </div>\n </div>\n</div>\n<ng-template #menuEl>\n <libs_ui-components-list [config]=\"tabMoreListConfig()\"\n [maxItemShow]=\"5\"\n [hiddenInputSearch]=\"true\"\n [paddingLeftItem]=\"true\"\n (outSelectKey)=\"handlerSelectedKey($event)\" />\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["debounceTime"],"mappings":"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"}
package/package.json CHANGED
@@ -1,19 +1,19 @@
1
1
  {
2
2
  "name": "@libs-ui/components-tabs",
3
- "version": "0.2.284",
3
+ "version": "0.2.285",
4
4
  "peerDependencies": {
5
5
  "@angular/core": "^18.2.0",
6
- "@libs-ui/components-badge": "0.2.284",
7
- "@libs-ui/components-buttons-button": "0.2.284",
8
- "@libs-ui/components-list": "0.2.284",
9
- "@libs-ui/components-popover": "0.2.284",
6
+ "@libs-ui/components-badge": "0.2.285",
7
+ "@libs-ui/components-buttons-button": "0.2.285",
8
+ "@libs-ui/components-list": "0.2.285",
9
+ "@libs-ui/components-popover": "0.2.285",
10
10
  "rxjs": "~7.8.0",
11
- "@libs-ui/interfaces-types": "0.2.284",
12
- "@libs-ui/utils": "0.2.284",
11
+ "@libs-ui/interfaces-types": "0.2.285",
12
+ "@libs-ui/utils": "0.2.285",
13
13
  "@ngx-translate/core": "^15.0.0",
14
- "@libs-ui/pipes-call-function-in-template": "0.2.284",
15
- "@libs-ui/components-drag-drop": "0.2.284",
16
- "@libs-ui/services-http-request": "0.2.284"
14
+ "@libs-ui/pipes-call-function-in-template": "0.2.285",
15
+ "@libs-ui/components-drag-drop": "0.2.285",
16
+ "@libs-ui/services-http-request": "0.2.285"
17
17
  },
18
18
  "sideEffects": false,
19
19
  "module": "fesm2022/libs-ui-components-tabs.mjs",