{"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/containers/tabs/src/tabs.animator.ts","../../../../../projects/components/widgets/containers/tabs/src/tabs.props.ts","../../../../../projects/components/widgets/containers/tabs/src/tab-pane/tab-pane.props.ts","../../../../../projects/components/widgets/containers/tabs/src/tab-pane/tab-pane.component.ts","../../../../../projects/components/widgets/containers/tabs/src/tab-pane/tab-pane.component.html","../../../../../projects/components/widgets/containers/tabs/src/tabs.component.ts","../../../../../projects/components/widgets/containers/tabs/src/tabs.component.html","../../../../../projects/components/widgets/containers/tabs/src/index.ts"],"sourcesContent":["import { SwipeAnimation } from '@swipey';\n\nimport { $appDigest, addClass, setCSS, setCSSFromObj } from '@wm/core';\n\nimport { TabsComponent } from './tabs.component';\n\ndeclare const $;\n\nexport class TabsAnimator extends SwipeAnimation {\n\n    private _$el;\n\n    public constructor(private tabs: TabsComponent) {\n        super();\n        this._$el = $(this.tabs.getNativeElement()).find('>.tab-content');\n        this.init(this._$el);\n    }\n\n    public calibrate() {\n        const activeTabIndex = this.tabs.getActiveTabIndex();\n        const panes = this._$el.find('>div[wmTabPane]');//fetch tab panes that are direct children of the tab content\n        let activeTabVisibleIndex = 0;\n        let noOfVisiblePanes = 0;\n        let visiblePanes = [];\n        panes.each((i, p) => {\n            if (!$(p).prop('hidden')) {\n                noOfVisiblePanes++;\n                if (i === activeTabIndex) {\n                    activeTabVisibleIndex = noOfVisiblePanes - 1;\n                }\n                visiblePanes.push(p);\n            }\n            return true;\n        });\n        return {\n            activeTabIndex: activeTabVisibleIndex,\n            noOfTabs: noOfVisiblePanes,\n            panes: visiblePanes\n        };\n    }\n\n    public bounds() {\n        const {activeTabIndex, noOfTabs, panes} = this.calibrate(),\n            w = $(panes[0]).width(),\n            centerVal = -1 * activeTabIndex * w;\n        this.clearContentFocus();\n        return {\n            strict: false,\n            lower: activeTabIndex === noOfTabs - 1 ? 0 : -w,\n            center: centerVal,\n            upper: activeTabIndex === 0 ? centerVal : w\n        };\n    }\n\n    public context() {\n        return {\n            'w': this._$el.width()\n        };\n    }\n\n    public animation() {\n        return {\n            'transform': 'translate3d(${{ ($D + $d)/w * 100 + \\'%\\'}}, 0, 0)',\n            '-webkit-transform': 'translate3d(${{ ($D + $d)/w * 100 + \\'%\\'}}, 0, 0)'\n        };\n    }\n    /* WMS-18031 | On Tab Switch | Remove the Focus on the Existing Tab Contents */\n    private clearContentFocus() {\n        let activeTab = this._$el.find('>.tab-pane.active');\n        if(activeTab.length && activeTab.find(document.activeElement).length){\n            (document.activeElement as HTMLElement).blur();\n        }\n    }\n    public transitionTabIntoView() {\n        const {activeTabIndex, noOfTabs, panes} = this.calibrate();\n        const maxWidth = `${noOfTabs * 100}%`;\n        setCSSFromObj(this._$el[0], {maxWidth: maxWidth, width: maxWidth});\n        addClass(this.tabs.getNativeElement(), 'has-transition');\n        const width = `${100 / noOfTabs}%`;\n        panes.forEach(p => {\n            setCSS(p as any, 'width', width);\n        });\n        setCSS(this._$el[0], 'transform', `translate3d(${-1 *  activeTabIndex / noOfTabs * 100}%, 0, 0)`);\n    }\n\n    public onUpper($event?: Event) {\n        this.tabs.prev($event);\n        $appDigest();\n    }\n\n    public onLower($event?: Event) {\n        this.tabs.next($event);\n        $appDigest();\n    }\n\n    public threshold() {\n        return 5;\n    }\n}\n","import { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register} from '@wm/components/base';\n\nexport const registerProps = () => {\n    const props = new Map(\n        [\n            ['class', PROP_STRING],\n            ['dataset', PROP_ANY],\n            ['defaultpaneindex', {value: 0, ...PROP_NUMBER}],\n            ['justified', PROP_BOOLEAN],\n            ['tabsposition', {value: 'top', ...PROP_STRING}],\n            ['name', PROP_STRING],\n            ['nodatamessage', {value: 'No Data Found', ... PROP_STRING}],\n            ['show', {value: true, ...PROP_BOOLEAN}],\n            ['statehandler', {value: 'none', ...PROP_STRING}],\n            ['transition', PROP_STRING],\n            ['type', PROP_STRING],\n            ['iconposition', PROP_STRING],\n            ['autotabactivation', {value: true, ...PROP_BOOLEAN}]\n        ]\n    );\n    register('wm-tabs', props);\n};\n","import { PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n    register(\n        'wm-tabpane',\n        new Map(\n            [\n                ['active', PROP_BOOLEAN], // internal property\n                ['badgevalue', PROP_STRING],\n                ['badgetype', {value: 'default', ...PROP_STRING}],\n                ['class', PROP_STRING],\n                ['content', PROP_STRING],\n                ['disabled', PROP_BOOLEAN],\n                ['dynamicPaneIndex', PROP_NUMBER], // internal property\n                ['heading', PROP_STRING],\n                ['isdefaulttab', PROP_STRING],\n                ['isdynamic', PROP_BOOLEAN], // internal property\n                ['name', PROP_STRING],\n                ['paneicon', PROP_STRING],\n                ['show', {value: true, ...PROP_BOOLEAN}],\n                ['smoothscroll', {value: false, ...PROP_BOOLEAN}],\n                ['title', {value: 'Tab Title', ...PROP_STRING}]\n            ]\n        )\n    );\n};\n","import {\n    AfterViewInit,\n    Attribute,\n    Component,\n    ContentChildren,\n    HostBinding,\n    inject,\n    Inject,\n    Injector,\n    OnDestroy,\n    OnInit,\n    Optional\n} from '@angular/core';\n\nimport {noop, removeAttr} from '@wm/core';\n\nimport {\n    APPLY_STYLES_TYPE,\n    getCurrentWidgets,\n    IWidgetConfig,\n    provideAsWidgetRef,\n    RedrawableDirective,\n    StylableComponent,\n    styler\n} from '@wm/components/base';\nimport {registerProps} from './tab-pane.props';\nimport {TabsComponent} from '../tabs.component';\n\nconst DEFAULT_CLS = 'tab-pane';\nconst WIDGET_CONFIG: IWidgetConfig = {\n    widgetType: 'wm-tabpane',\n    hostClass: DEFAULT_CLS\n};\n\n@Component({\n    standalone: true,\n    selector: 'div[wmTabPane]',\n    templateUrl: './tab-pane.component.html',\n    providers: [\n        provideAsWidgetRef(TabPaneComponent)\n    ]\n})\nexport class TabPaneComponent extends StylableComponent implements OnInit, AfterViewInit, OnDestroy {\n    static initializeProps = registerProps();\n\n    private _isFirstLoad: boolean = true;\n    private _isOnLoadTriggered: boolean = false;\n    public $lazyLoad = noop;\n    public name: string;\n    public show: boolean;\n    public smoothscroll: any;\n    private isdynamic: boolean;\n    public content: string;\n    private _currentTabWidgets = {};\n\n    @HostBinding('class.active') isActive = false;\n    @HostBinding('class.disabled') disabled = false;\n\n    // reference to the components which needs a redraw(eg, grid, chart) when the height of this component changes\n    @ContentChildren(RedrawableDirective, {descendants: true}) reDrawableComponents;\n\n    private tabsRef = inject(TabsComponent);\n    constructor(\n        inj: Injector,\n        @Attribute('heading') public heading,\n        @Attribute('title') public title,\n        @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n    ) {\n        super(inj, WIDGET_CONFIG, explicitContext);\n\n        // title property here serves the purpose of heading.\n        // TODO: make it common for all the widget.\n        removeAttr(this.nativeElement, 'title');\n    }\n\n    // parent tabs component will call this method for the order of callbacks to be proper\n    // order of callbacks - deselect, select, change\n    public invokeOnSelectCallback($event?: Event) {\n        this.invokeEventCallback('select', {$event});\n    }\n\n    public select($event?: Event, isKeyBoardEvent?: boolean) {\n        // When called programatically $event won't be available\n        if (this.isActive || this.disabled) {\n            return;\n        }\n\n        this.isActive = true;\n        this.$lazyLoad();\n        this.redrawChildren();\n        this.notifyParent($event, isKeyBoardEvent);\n    }\n\n    tabpaneHeaderClick($event, paneIndex) {\n        this.invokeEventCallback('headerclick', {$event, paneIndex});\n    }\n\n    public deselect() {\n        if (this.isActive) {\n            this.isActive = false;\n            this.invokeEventCallback('deselect');\n        }\n    }\n\n    public remove() {\n        if (this.isActive) {\n            this === this.tabsRef.panes.last ? this.tabsRef.prev() : this.tabsRef.next();\n        }\n        const availablePanes = this.tabsRef.panes.toArray();\n        availablePanes.splice((this as any).tabsRef.getPaneIndexByRef(this), 1);\n        this.tabsRef.panes.reset([...availablePanes]);\n        this.nativeElement.remove();\n        this.tabsRef.$element.find(`.tab-header[data-paneid='${this.$element.attr('widget-id')}'] a`).remove();\n    }\n\n    private redrawChildren() {\n        setTimeout(() => {\n            if (this.reDrawableComponents) {\n                this.reDrawableComponents.forEach(c => c.redraw());\n            }\n            // Fix for [WMS-24564]: trigger  Onload event when it is inline content\n            if (!this._isOnLoadTriggered && !this.content) {\n                this.invokeEventCallback('load');\n                this._isOnLoadTriggered = true;\n            }\n        }, 100);\n    }\n\n    private notifyParent(evt?: Event, isKeyBoardEvent?: boolean) {\n        this.tabsRef.notifyChange(this, evt, isKeyBoardEvent);\n    }\n\n    // select next valid tab\n    private handleSwipeLeft() {\n        this.tabsRef.next();\n    }\n\n    // select prev valid tab\n    private handleSwipeRight() {\n        this.tabsRef.prev();\n    }\n\n    // select event is called manually\n    protected handleEvent(node: HTMLElement, eventName: string, callback: Function, locals: any) {\n        if (eventName !== 'select') {\n            super.handleEvent(this.nativeElement, eventName, callback, locals);\n        }\n    }\n    get currentTabWidgets () {\n        return getCurrentWidgets(this.nativeElement, this._currentTabWidgets);\n    }\n\n    onPropertyChange(key: string, nv: any, ov?: any) {\n        if (key === 'content') {\n            if (this.isActive) {\n                setTimeout(() => this.$lazyLoad(), 100);\n            }\n        } else if (key === 'show') {\n            // overridding the base component show propertyChangeHandler\n            this.nativeElement.hidden = !nv;\n            // setting default tab pane on pageload whenever show property is bindable\n            if (this._isFirstLoad) {\n                (this as any).tabsRef.selectDefaultPaneByIndex((this as any).tabsRef.defaultpaneindex);\n            } else if (!nv && this.isActive) {\n                (this as any).tabsRef.next();\n            } else if (nv || !this.isActive) {\n                (this as any).tabsRef.tabsAnimator?.transitionTabIntoView();\n            }\n            this._isFirstLoad = false;\n        } else {\n            super.onPropertyChange(key, nv, ov);\n        }\n    }\n\n    ngOnInit() {\n        super.ngOnInit();\n        this.title = this.title || this.heading;\n    }\n\n    ngAfterViewInit() {\n        styler(\n            this.nativeElement.querySelector('.tab-body') as HTMLElement,\n            this,\n            APPLY_STYLES_TYPE.CONTAINER\n        );\n        super.ngAfterViewInit();\n        if (this.isdynamic) {\n            this.tabsRef.registerDynamicTab(this);\n        }\n    }\n\n    ngOnDestroy() {\n        // MEMORY LEAK FIX: Clear ContentChildren QueryList reference\n        if (this.reDrawableComponents) {\n            this.reDrawableComponents = null;\n        }\n\n        // MEMORY LEAK FIX: Clear lazy load function reference\n        this.$lazyLoad = null;\n\n        super.ngOnDestroy();\n    }\n}\n","<div class=\"tab-body\" partial-container-target >\n    <ng-content></ng-content>\n</div>","import {CommonModule} from '@angular/common';\nimport {\n    APPLY_STYLES_TYPE,\n    createArrayFrom,\n    IWidgetConfig,\n    provideAsWidgetRef,\n    StylableComponent,\n    styler,\n    TextContentDirective\n} from \"@wm/components/base\";\nimport {\n    AfterContentInit,\n    AfterViewInit,\n    Attribute,\n    Component,\n    ContentChildren,\n    HostBinding,\n    Inject,\n    Injector,\n    OnDestroy,\n    OnInit,\n    Optional,\n    QueryList\n} from '@angular/core';\n\nimport {\n    addClass,\n    appendNode,\n    DynamicComponentRefProvider,\n    isDefined,\n    noop,\n    removeClass,\n    StatePersistence\n} from '@wm/core';\n\nimport {TabsAnimator} from './tabs.animator';\nimport {registerProps} from './tabs.props';\nimport {TabPaneComponent} from './tab-pane/tab-pane.component';\nimport {find, findIndex, forEach, get, indexOf, isArray, isEmpty} from \"lodash-es\";\n\ndeclare const $;\n\nconst DEFAULT_CLS = 'app-tabs clearfix';\nconst WIDGET_CONFIG: IWidgetConfig = {\n    widgetType: 'wm-tabs',\n    hostClass: DEFAULT_CLS\n};\n\n@Component({\n    standalone: true,\n    imports: [CommonModule, TextContentDirective],\n    selector: 'div[wmTabs]',\n    templateUrl: './tabs.component.html',\n    exportAs: 'wmTabs',\n    providers: [\n        provideAsWidgetRef(TabsComponent)\n    ]\n})\nexport class TabsComponent extends StylableComponent implements AfterContentInit, OnInit, AfterViewInit, OnDestroy {\n    static initializeProps = registerProps();\n\n    public defaultpaneindex: number;\n    public transition: string;\n    public tabsposition: string;\n    public statehandler: any;\n    private statePersistence: StatePersistence;\n\n    public vertical: boolean;\n    public justified: boolean;\n    private activeTab: TabPaneComponent;\n    private readonly promiseResolverFn: Function;\n    private tabsAnimator: TabsAnimator;\n    private _oldPaneIndex: number;\n    private isPageLoadCall: boolean;\n    private dynamicComponentProvider;\n    private _dynamicContext;\n    private dynamicPaneIndex;\n    public dynamicTabs;\n    public fieldDefs;\n    public type;\n    public nodatamessage;\n    public autoActivation:boolean;\n    private panesChangesSubscription: any;\n    private dynamicComponentRefs: any[] = [];\n\n    @HostBinding('attr.icon-position') iconposition: string = '';\n\n    @ContentChildren(TabPaneComponent) panes: QueryList<TabPaneComponent>;\n\n    constructor(\n        inj: Injector,\n        dynamicComponentProvider: DynamicComponentRefProvider,\n        @Attribute('transition') _transition: string,\n        @Attribute('tabsposition') _tabsPosition: string,\n        statePersistence: StatePersistence,\n        @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n    ) {\n        // handle to the promise resolver\n        let resolveFn: Function = noop;\n        super(inj, WIDGET_CONFIG, explicitContext, new Promise(res => resolveFn = res));\n\n        this.transition = _transition;\n        this.tabsposition = _tabsPosition;\n        this.statePersistence = statePersistence;\n        this.dynamicComponentProvider = dynamicComponentProvider;\n        this.dynamicTabs = [];\n        this.dynamicPaneIndex = 0;\n\n        this.promiseResolverFn = resolveFn;\n\n        styler(this.nativeElement, this, APPLY_STYLES_TYPE.CONTAINER);\n\n    }\n\n    animateIn (element: HTMLElement) {\n        const tabHeader = $(element);\n        // when the animation is not present toggle the active class.\n        tabHeader.siblings('.active').removeClass('active');\n        tabHeader.addClass('active');\n\n        const ul = this.nativeElement.querySelector('ul.nav.nav-tabs');\n\n        // move the tabheader into the viewport\n        const $prevHeaderEle = tabHeader.prev();\n        if ($prevHeaderEle.length) {\n            ul.scrollLeft = $prevHeaderEle[0].offsetLeft;\n        } else {\n            ul.scrollLeft = 0;\n        }\n    }\n\n    /**\n     * This method is used to register the dynamic panes.\n     * After all panes are initialzed, update the querylist manually based on index.\n     * @param paneRef - refrence of the tabpane\n     */\n    public registerDynamicTab(paneRef) {\n        this.dynamicTabs.push(paneRef);\n        const isLastPane =  this.dynamicTabs.length === this.dynamicPaneIndex;\n        if (isLastPane) {\n            for (let i = 0; i < this.dynamicTabs.length; i++) {\n                const newPaneRef = find(this.dynamicTabs, pane => pane.dynamicPaneIndex === i);\n                const isPaneAlreadyExist = find(this.panes.toArray(), newPaneRef);\n                if (!isPaneAlreadyExist) {\n                    this.panes.reset([...this.panes.toArray(), newPaneRef]);\n                    if (newPaneRef.active) {\n                        setTimeout(() => {\n                            newPaneRef.select();\n                        }, 20);\n                    }\n                }\n            }\n        }\n    }\n\n    /**\n     * This method is to add the tabpane dynamically\n     * @param tabpanes - list of tabpanes\n     */\n    public addPane(tabpanes) {\n        if (!isArray(tabpanes)) {\n            tabpanes = [tabpanes];\n        }\n        const paneNamesList = [];\n        forEach(tabpanes, (pane, index) => {\n            const isPaneAlreadyCreated = find(this.panes.toArray(), {name: pane.name});\n            const isPaneNameExist = indexOf(paneNamesList, pane.name);\n            // If user tries to add tabpane with the same name which is already exists then do not create the pane\n            if (isPaneAlreadyCreated || isPaneNameExist > 0) {\n                console.warn(`The tab pane with name ${pane.name} already exists`);\n                return;\n            }\n\n            let paramMarkup = '';\n            let propsTmpl = '';\n            this.dynamicPaneIndex++;\n            const name = pane.name ? pane.name : `tabpane${this.panes.toArray().length + (index + 1)}`;\n            paneNamesList.push(name);\n            const partialParams = get(pane, 'params');\n\n            forEach(pane, (value, key) => {\n                if (key !== 'params') {\n                    propsTmpl = `${propsTmpl} ${key}=\"${value}\"`;\n                }\n            });\n\n            forEach(partialParams, (value, key) => {\n                paramMarkup = `${paramMarkup} <wm-param name=\"${key}\" value=\"${value}\"></wm-param>`;\n            });\n            const markup = `<wm-tabpane dynamicPaneIndex=\"${this.dynamicPaneIndex - 1}\" isdynamic=\"true\" name=\"${name}\" ${propsTmpl}>\n                            ${paramMarkup}\n                        </wm-tabpane>`;\n\n            if (!this._dynamicContext) {\n                this._dynamicContext = Object.create(this.viewParent);\n                this._dynamicContext[this.getAttr('wmTab')] = this;\n            }\n\n            // MEMORY LEAK FIX: Store component reference for cleanup\n            this.dynamicComponentProvider.addComponent(this.getNativeElement().querySelector('.tab-content'), markup, this._dynamicContext, {inj: this.inj})\n                .then(componentRef => {\n                    if (componentRef) {\n                        this.dynamicComponentRefs.push(componentRef);\n                    }\n                });\n\n        });\n        return paneNamesList;\n    }\n\n    /**\n     * This method is to remove the tabpane\n     * @param paneIndex - index of the pane\n     */\n    public removePane(paneName) {\n        const paneRef = this.getPaneRefByName(paneName);\n        if (paneRef) {\n            paneRef.remove();\n        }\n    }\n\n    /**\n     * TabPane children components invoke this method to communicate with the parent\n     * if the evt argument is defined on-change callback will be invoked.\n     */\n    public notifyChange(paneRef: TabPaneComponent, evt: Event, isKeyBoardEvent: boolean) {\n        if (!this.isSelectableTab(paneRef)) {\n            return;\n        }\n\n        let headerElement;\n        // invoke deselect event callback on the preset active tab\n        if (!isEmpty(this.activeTab)) {\n            this.activeTab.deselect();\n        }\n\n\n        this.activeTab = paneRef.getWidget();\n        const newPaneIndex = this.getPaneIndexByRef(paneRef);\n        const mode = this.statePersistence.computeMode(this.statehandler);\n        if (!this.isPageLoadCall && mode && mode.toLowerCase() !== 'none') {\n            this.statePersistence.setWidgetState(this, this.activeTab.name);\n        } else {\n            this.defaultpaneindex = this.getPaneIndexByRef(paneRef);\n            this.isPageLoadCall = false;\n        }\n\n        // invoke select callback on the selected tab\n        paneRef.invokeOnSelectCallback(evt);\n\n        // invoke change callback if the evt is present, select a tab programmatically will not have the event\n        if (evt) {\n            this.invokeEventCallback('change', {\n                $event: evt,\n                newPaneIndex: newPaneIndex,\n                oldPaneIndex: this._oldPaneIndex || 0\n            });\n        }\n        this._oldPaneIndex = newPaneIndex;\n\n        if (evt) {\n            headerElement = $(evt.target as HTMLElement).closest('li.tab-header');\n        }\n        if (!evt || !headerElement || !headerElement.length) {\n            headerElement = this.nativeElement.querySelector(`li[data-paneid=${paneRef.widgetId}]`);\n            const insideTabs = !!$(headerElement).closest('.app-tabs')\n                .parent().closest('.app-tabs').length;\n            if (!insideTabs && isKeyBoardEvent) {\n                $(headerElement).children().focus();\n            }\n        }\n        this.animateIn(headerElement);\n\n        // this.setTabsLeftPosition(this.getPaneIndexByRef(this.activeTab), this.panes.length);\n        if (this.canSlide()) {\n            if (!this.tabsAnimator) {\n                this.tabsAnimator = new TabsAnimator(this);\n                this.tabsAnimator.setGesturesEnabled(this.canSlide());\n            }\n            this.tabsAnimator.transitionTabIntoView();\n        }\n    }\n\n    public goToTab(tabIndex) {\n        if (this.isValidPaneIndex(tabIndex - 1)) {\n            const tab = this.getPaneRefByIndex(tabIndex - 1);\n            tab.select();\n        }\n    }\n\n    private getPaneIndexByRef(paneRef: TabPaneComponent): number {\n        return this.panes.toArray().indexOf(paneRef);\n    }\n\n    // Returns the active tab index from tabs.\n    public getActiveTabIndex(): number {\n        return findIndex(this.panes.toArray(), {isActive: true});\n    }\n\n    private isValidPaneIndex(index: number): boolean {\n        return (index >= 0 && index < this.panes.length);\n    }\n\n    private getPaneRefByIndex(index: number): TabPaneComponent {\n        return this.panes.toArray()[index];\n    }\n\n    private getPaneRefByName(name: string): TabPaneComponent {\n        return find(this.panes.toArray(), {name: name});\n    }\n\n    // returns false if the pane is hidden or disabled\n    private isSelectableTab(paneRef: TabPaneComponent): boolean {\n        return paneRef.show && !paneRef.disabled;\n    }\n\n    private canSlide() {\n        return this.transition === 'slide' && !this.vertical;\n    }\n\n    private getSelectableTabAfterIndex(index: number): TabPaneComponent {\n        for (let i = index + 1; i < this.panes.length; i++) {\n            const pane = this.getPaneRefByIndex(i);\n            if (this.isSelectableTab(pane)) {\n                return pane;\n            }\n        }\n        if (index === this.panes.length - 1) {\n            const pane = this.getPaneRefByIndex(0);\n             if (this.isSelectableTab(pane)) {\n                return pane;\n             }\n        }\n    }\n\n    private getSelectableTabBeforeIndex(index: number): TabPaneComponent {\n        for (let i = index - 1; i >= 0; i--) {\n            const pane = this.getPaneRefByIndex(i);\n            if (this.isSelectableTab(pane)) {\n                return pane;\n            }\n        }\n        if (index === 0) {\n            const pane = this.getPaneRefByIndex(this.panes.length - 1);\n            if (this.isSelectableTab(pane)) {\n                return pane;\n            }\n        }\n    }\n\n    // select next tab relative to the current active tab\n    public next($event?: Event, isKeyBoardEvent?: boolean) {\n        const pane = this.getSelectableTabAfterIndex(this.getActiveTabIndex());\n        if (pane) {\n            pane.select($event, isKeyBoardEvent);\n        }\n    }\n\n    // select prev tab relative to the current active tab\n    public prev($event?: Event, isKeyBoardEvent?: boolean) {\n        const pane = this.getSelectableTabBeforeIndex(this.getActiveTabIndex());\n        if (pane) {\n            pane.select($event, isKeyBoardEvent);\n        }\n    }\n\n    /**\n     * this method will be invoked during the initialization of the component and on defaultpaneindex property change,\n     * if the provided defaultpaneindex is not valid, find the first pane index which can be shown and select it\n     */\n    private selectDefaultPaneByIndex(index: number) {\n        if (!this.isValidPaneIndex(index)) {\n            return;\n        }\n\n        let paneRef = this.getPaneRefByIndex(index);\n        if (!this.isSelectableTab(paneRef)) {\n            paneRef = this.getSelectableTabAfterIndex(0);\n        }\n        if (paneRef) {\n            paneRef.select();\n        }\n    }\n\n    // update the postion of tab header\n    private setTabsPosition() {\n        const ul = this.nativeElement.children[0];\n\n        this.vertical = (this.tabsposition === 'left' || this.tabsposition === 'right');\n\n        removeClass(this.nativeElement, 'inverted');\n        if (this.tabsposition === 'bottom' || this.tabsposition === 'right') {\n            appendNode(ul as HTMLElement, this.nativeElement);\n            addClass(this.nativeElement, 'inverted');\n        }\n    }\n\n    private onDataChange(newVal) {\n        this.fieldDefs = createArrayFrom(newVal);\n        setTimeout(() => this.selectDefaultPaneByIndex(this.defaultpaneindex || 0));\n    }\n\n    public getWidgets(widgteName: string, index?: number) {\n        let $target;\n        const retVal = [];\n\n        if (!widgteName) {\n            return;\n        }\n\n        if (!isDefined(index)) {\n            forEach(this.panes.toArray(), (el) => {\n                $target = get(el.currentTabWidgets, widgteName);\n                if ($target) {\n                    retVal.push($target);\n                }\n            });\n\n            return retVal;\n        }\n        index = +index || 0;\n\n        $target = get(this.panes.toArray(), index);\n\n        if ($target) {\n            return [get($target.currentTabWidgets, widgteName)];\n        }\n    }\n\n    get currentTabPaneIndex() {\n        return this.getActiveTabIndex();\n    }\n\n    get isFirstTabPane(): boolean {\n        return this.panes.first.widgetId === this.activeTab.widgetId;\n    }\n\n    get isLastTabPane(): boolean {\n        return this.panes.last.widgetId === this.activeTab.widgetId;\n    }\n\n    onPropertyChange(key: string, nv: any, ov) {\n\n        if (key === 'defaultpaneindex') {\n            this.defaultpaneindex = nv;\n        } else if (key === 'dataset') {\n            this.onDataChange(nv);\n        } else if (key === 'statehandler') {\n            this.isPageLoadCall = true;\n            const widgetState = this.statePersistence.getWidgetState(this);\n            if (nv !== 'none' && widgetState) {\n                const paneToSelect: any = this.panes.filter(function(pane) {\n                    return widgetState === pane.name;\n                });\n                if (!paneToSelect.length) {\n                    console.warn('Tab pane name ' + widgetState + ' in State is incorrect. Falling back to the default pane');\n                    setTimeout(() => this.selectDefaultPaneByIndex(this.defaultpaneindex || 0), 20);\n                } else {\n                    const index = this.getPaneIndexByRef(paneToSelect[0]);\n                    setTimeout(() => this.selectDefaultPaneByIndex(index), 20);\n                }\n            } else {\n                setTimeout(() => this.selectDefaultPaneByIndex(this.defaultpaneindex || 0), 20);\n            }\n        } else if (key === 'autotabactivation'){\n            this.autoActivation = nv;\n        } else {\n            super.onPropertyChange(key, nv, ov);\n        }\n    }\n\n    registerTabsScroll() {\n        setTimeout(() => {\n            const $ul = this.$element.find('> ul');\n            let $liPosition;\n\n            const  $li = $ul.children();\n            $liPosition = $li.last().position();\n            if ($liPosition && ($liPosition.left > $ul.width())) {\n                $ul.on('mousewheel', (e) => {\n                    const left = $ul[0].scrollLeft,\n                        _delta = -1 * e.originalEvent.wheelDelta;\n                    e.stopPropagation();\n                    e.preventDefault();\n                    $ul.animate({scrollLeft: left + _delta}, {'duration': 10});\n                });\n            }\n        });\n    }\n    onkeydown(event) {\n        let newPane;\n        switch (event.key) {\n            case 'ArrowLeft':\n            case 'ArrowUp':\n                newPane = this.autoActivation ? (this.prev(null, true), null) : this.getSelectableTabBeforeIndex(this.getSelectedPaneIndex());\n                break;\n\n            case 'ArrowRight':\n            case 'ArrowDown':\n                newPane = this.autoActivation ? (this.next(null, true), null) : this.getSelectableTabAfterIndex(this.getSelectedPaneIndex());\n                break;\n\n            case 'Enter': {\n                const pane = this.getSelectableTabAfterIndex(this.getSelectedPaneIndex()-1);\n                if (pane) {\n                    const enterEvent = new KeyboardEvent('keydown', {key: 'Enter', code: 'Enter', bubbles: true, cancelable: true});\n                    pane.nativeElement.dispatchEvent(enterEvent);\n                    pane.select(enterEvent, true);\n                }\n                event.preventDefault();\n                return ;\n            }\n            default:\n                return;\n        }\n        if (newPane) {\n            this.nativeElement.querySelector('li.select')?.classList.remove('select');\n            this.nativeElement.querySelector(`li[data-paneid=\"${newPane.widgetId}\"]`)?.classList.add('select');\n        }\n        event.preventDefault();\n    }\n\n    ngAfterContentInit() {\n        this.promiseResolverFn();\n        super.ngAfterContentInit();\n        this.setTabsPosition();\n        this.panesChangesSubscription = this.panes.changes.subscribe( slides => {\n            if (this.panes.length) {\n                this.selectDefaultPaneByIndex(this.defaultpaneindex || 0);\n            }\n        });\n    }\n\n    ngAfterViewInit() {\n        super.ngAfterViewInit();\n        this.registerTabsScroll();\n    }\n\n    getSelectedPaneIndex() {\n        const index = this.panes.toArray().findIndex(pane =>\n            this.nativeElement.querySelector(`li[data-paneid=\"${pane.widgetId}\"]`)?.classList.contains(\"select\"));\n        return index >= 0 ? index : this.getActiveTabIndex();\n    }\n\n    ngOnDestroy() {\n        // MEMORY LEAK FIX: Unsubscribe from panes changes\n        if (this.panesChangesSubscription) {\n            this.panesChangesSubscription.unsubscribe();\n            this.panesChangesSubscription = null;\n        }\n\n        // MEMORY LEAK FIX: Destroy all dynamically created component instances\n        if (this.dynamicComponentRefs && this.dynamicComponentRefs.length) {\n            this.dynamicComponentRefs.forEach(componentRef => {\n                if (componentRef && componentRef.destroy) {\n                    componentRef.destroy();\n                }\n            });\n            this.dynamicComponentRefs = [];\n        }\n\n        // MEMORY LEAK FIX: Clear dynamic context\n        if (this._dynamicContext) {\n            Object.keys(this._dynamicContext).forEach(key => {\n                delete this._dynamicContext[key];\n            });\n            this._dynamicContext = null;\n        }\n\n        // MEMORY LEAK FIX: Clear dynamic tabs array\n        if (this.dynamicTabs) {\n            this.dynamicTabs = [];\n        }\n\n        // MEMORY LEAK FIX: Destroy tabs animator\n        if (this.tabsAnimator) {\n            // TabsAnimator may have internal subscriptions or timers\n            this.tabsAnimator = null;\n        }\n\n        // MEMORY LEAK FIX: Clear field definitions and references\n        this.fieldDefs = null;\n        this.activeTab = null;\n\n        super.ngOnDestroy();\n    }\n}\n","<ul class=\"nav nav-tabs\" [ngClass]=\"{'nav-stacked': vertical, 'nav-justified': justified}\" role=\"tablist\">\n  @for (pane of panes; track pane; let i = $index) {\n    <li class=\"tab-header\" [attr.data-paneid]=\"pane.widgetId\" [ngClass]=\"{'active': pane.isActive, 'disabled': pane.disabled}\"\n      [hidden]=\"!pane.show\" role=\"presentation\">\n      <a [attr.aria-label]=\"pane.badgevalue ? pane.title + ' ' + pane.badgevalue : pane.title\"\n        [attr.icon-position]=\"iconposition\"\n        [attr.title]=\"pane.title\"\n        [tabindex]=\"pane.isActive ? '0' : '-1'\"\n        class=\"tab-heading\" href=\"javascript:void(0);\"\n        [attr.aria-selected]=\"pane.isActive\" role=\"tab\" (click)=\"pane.select($event); pane.tabpaneHeaderClick($event, i);\" (keydown)=\"onkeydown($event)\">\n        @if (pane.paneicon) {\n          <i [ngClass]=\"['app-icon', pane.paneicon]\"></i>\n        }\n        <span [textContent]=\"pane.title\"></span>\n        @if (pane.badgevalue) {\n          <span class=\"label label-{{pane.badgetype}}\" [textContent]=\"pane.badgevalue\"></span>\n        }\n      </a>\n    </li>\n  }\n</ul>\n@if (type !== 'dynamic') {\n  <div class=\"tab-content\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n    <ng-content ngProjectAs=\"div[wmTabPane]\"></ng-content>\n  </div>\n}\n@if (type === 'dynamic') {\n  <div class=\"tab-content\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n    @if (fieldDefs && !fieldDefs.length) {\n      <div>{{nodatamessage}}</div>\n    }\n    <ng-content select=\"div[wmRepeatTemplate]\"></ng-content>\n  </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["registerProps","DEFAULT_CLS","WIDGET_CONFIG"],"mappings":"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"}