-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathsmart.tabs.js
6 lines (4 loc) · 64.9 KB
/
smart.tabs.js
1
2
3
4
5
6
/* Smart UI v15.2.0 (2023-04-20)
Copyright (c) 2011-2023 jQWidgets.
License: https://htmlelements.com/license/ */ //
Smart("smart-tab-item",class extends Smart.ContentElement{static get properties(){return{closeButtonHidden:{value:!1,type:"boolean"},index:{value:null,type:"number?"},selected:{value:!1,type:"boolean"},label:{value:"",type:"string"},labelSize:{value:null,type:"number?"}}}get enableShadowDOM(){return!1}render(){this.setAttribute("role","tabpanel"),this.firstElementChild.setAttribute("role","presentation"),super.render()}attached(){const e=this;super.attached(),e.isCompleted&&(e.$.removeClass("right"),e.$.removeClass("left"),e.$.removeClass("top"),e.$.removeClass("bottom"),e.$.removeClass("animate"))}propertyChangedHandler(e,t,o){super.propertyChangedHandler(e,t,o);const n=this;if(n._preventPropertyChangedHandler)delete n._preventPropertyChangedHandler;else switch(e){case"closeButtonHidden":n.$.fireEvent("closeButtonVisibilityChange",{hidden:o});break;case"disabled":{const e=n.tabLabelContainer;e&&(o?e.setAttribute("disabled",""):e.removeAttribute("disabled"));break}case"index":n.$.fireEvent("indexChange",{newIndex:o,oldIndex:t,tabItem:n});break;case"label":{const e=n.closest("smart-tabs");e?e._updateTabLabel(n,o):n.setAttribute("aria-label",o);break}case"selected":n.tabLabelContainer&&n.tabLabelContainer.setAttribute("aria-selected",o);break;case"labelSize":n.$.fireEvent("labelSizeChange",{size:o})}}appendChild(e){const t=this;if(!t.isCompleted){const e=Array.prototype.slice.call(arguments,2);return HTMLElement.prototype.appendChild.apply(t,e.concat(Array.prototype.slice.call(arguments)))}t.firstElementChild.appendChild(e)}insertBefore(e,t){const o=this;if(!o.isCompleted){const e=Array.prototype.slice.call(arguments,2);return HTMLElement.prototype.insertBefore.apply(o,e.concat(Array.prototype.slice.call(arguments)))}o.firstElementChild.insertBefore(e,t)}_setIndex(e){const t=this,o=t.context;t.context=t,t.index=e,t.context=o}}),Smart("smart-tab-items-group",class extends Smart.ContentElement{static get properties(){return{label:{value:"",type:"string"},labelSize:{value:null,type:"number?"}}}get enableShadowDOM(){return!1}template(){return""}propertyChangedHandler(e,t,o){super.propertyChangedHandler(e,t,o);const n=this;if(n._preventPropertyChangedHandler)delete n._preventPropertyChangedHandler;else switch(e){case"label":{const e=n.closest("smart-tabs");if(!e)return;const a=e._groups.indexOf(t);if(a<0)break;const r=Array.from(e.$.tabStrip.querySelectorAll(".smart-tab-group-container")).find((e=>e.group===t));Array.from(n.querySelectorAll("smart-tab-item")).forEach((e=>e.group=o)),r.querySelector(".smart-tab-label-text-container").innerHTML=o,r.setAttribute("aria-label",o),r.group=o,e._groups[a]=o;break}case"labelSize":this.$.fireEvent("labelSizeChange",{size:o})}}}),Smart("smart-tabs",class extends Smart.BaseElement{static get properties(){return{addNewTab:{value:!1,type:"boolean"},addNewTabAutoCreate:{value:!0,type:"boolean"},allowToggle:{value:!1,type:"boolean"},closeButtonMode:{value:"default",allowedValues:["default","selected"],type:"string"},closeButtons:{value:!1,type:"boolean"},collapsed:{value:!1,type:"boolean"},collapsible:{value:!1,type:"boolean"},dataSource:{value:null,type:"array?",reflectToAttribute:!1},enableMouseWheelAction:{value:!1,type:"boolean"},messages:{value:{en:{ambiguousIndexes:"smart-tabs: Initially set smart-tab-item indexes are ambiguous and are ignored in favour of the HTML structure.",detailsObjectRequired:'smart-tabs: The method "insert" requires a details Object to be passed as a second argument.',invalidIndex:'smart-tabs: "{{method}}" method accepts an index of type number.',referenceNodeNotChild:"smart-tabs: Passed {{argument}} is not part of this smart-tabs element.",tabItemRequired:'smart-tabs: The method "{{method}}" requires a "smart-tab-item" element to be passed as an argument.'}},type:"object",extend:!0},name:{value:"",type:"string"},overflow:{value:"auto",allowedValues:["auto","hidden","scroll"],type:"string"},reorder:{value:!1,type:"boolean"},resize:{value:!1,type:"boolean"},scrollButtonsPosition:{value:"both",allowedValues:["near","far","both"],type:"string"},scrollMode:{value:"paging",allowedValues:["paging","continuous"],type:"string"},selectedIndex:{value:null,type:"number?"},selectionMode:{value:"click",allowedValues:["click","dblclick","mouseenter","none"],type:"string"},tabLayout:{value:"scroll",allowedValues:["scroll","dropDown","wrap","shrink"],type:"string",defaultReflectToAttribute:!0},tabPosition:{value:"top",allowedValues:["top","bottom","left","right","hidden"],type:"string"},tabTextOrientation:{value:"horizontal",allowedValues:["horizontal","vertical"],type:"string"}}}static get listeners(){return{closeButtonVisibilityChange:"_closeButtonVisibilityChangeHandler",indexChange:"_indexChangeHandler",keydown:"_keydownHandler",labelSizeChange:"_labelSizeChangeHandler",resize:"_applyTabOverflow",styleChanged:"_applyTabOverflow","container.dblclick":"_containerHandler","container.down":"_containerHandler","container.mouseout":"_containerHandler","container.mouseover":"_containerHandler","scrollButtonFar.click":"_scrollButtonClickHandler","scrollButtonNear.click":"_scrollButtonClickHandler","tabContentSection.transitionend":"_tabContentSectionTransitionendHandler","tabsHeaderItems.wheel":"_tabsHeaderItemsWheelHandler","tabStrip.mouseleave":"_tabStripMouseleaveHandler","tabStrip.move":"_tabStripMoveHandler","tabStrip.touchmove":"_tabStripTouchmoveHandler","tabStrip.touchstart":"_tabStripTouchstartHandler","document.move":"_documentMoveHandler","document.selectstart":"_selectStartHandler","document.up":"_documentUpHandler"}}static get requires(){return{"Smart.RepeatButton":"smart.button.js"}}static get styleUrls(){return["smart.tabs.css"]}template(){return'<div id="container">\n <div id="tabsHeaderSection" class="smart-header smart-tabs-header-section">\n <div id="tabsHeaderItems" class="smart-tabs-header-items">\n <smart-repeat-button id="scrollButtonNear" class="smart-tabs-scroll-button smart-nav-button smart-spin-button smart-hidden" animation="[[animation]]" unfocusable>\n <div id="arrowNear" class="smart-arrow" aria-hidden="true"></div>\n </smart-repeat-button>\n <div id="tabStrip" class="smart-tab-strip"></div>\n <smart-repeat-button id="scrollButtonFar" class="smart-tabs-scroll-button smart-nav-button smart-spin-button smart-hidden" animation="[[animation]]" unfocusable>\n <div id="arrowFar" class="smart-arrow" aria-hidden="true"></div>\n </smart-repeat-button>\n <div id="dropDownButton" class="smart-drop-down-button" role="button" aria-expanded="false" aria-label="Open tab selection popup">\n <div id="dropDownButtonArrow" class="smart-drop-down-button-arrow smart-unselectable" aria-hidden="true"></div>\n </div>\n <span id="tabSelectionBar" class="smart-tabs-selection-bar" role="presentation"></span>\n <div id="resizeToken" class="smart-tabs-resize-token smart-hidden" role="presentation"></div>\n </div>\n <div id="tabHeaderControls" class="smart-tabs-header-controls"></div>\n </div>\n <div id="tabContentSection" class="smart-tabs-content-section">\n <content></content>\n </div>\n <div id="dropDownButtonDropDown" class="smart-drop-down-button-drop-down smart-hidden"></div>\n <input id="hiddenInput" type="hidden" name="[[name]]">\n </div>'}attached(){const e=this;super.attached(),e.isCompleted&&e.isRendered&&e._applyTabOverflow()}ready(){super.ready(),this._flexWritingModeNoFullSupport=!0}render(){this._createElement(),super.render()}appendChild(e){const t=this;if(!t.isCompleted||e instanceof HTMLElement&&e.classList.contains("smart-resize-trigger-container")){const e=Array.prototype.slice.call(arguments,2);return HTMLElement.prototype.appendChild.apply(t,e.concat(Array.prototype.slice.call(arguments)))}e instanceof Smart.TabItem||t.error(t.localize("tabItemRequired",{method:"appendChild"})),t.isRendered?t.insert(t._tabs.length,{node:e}):t.whenRendered((()=>t.insert(t._tabs.length,{node:e})))}collapse(){const e=this;e.collapsible&&!e.collapsed&&(e.collapsed=!0)}ensureVisible(e){const t=this;if(null===e||"wrap"===t.tabLayout||"shrink"===t.tabLayout||"hidden"===t.tabPosition)return;t._validateIndex(e,"ensureVisible"),e=Math.max(0,Math.min(e,t._tabs.length-1));const o=t._tabs[e].group,n=t.$.tabStrip,a=n.getBoundingClientRect(),r=(null===o?t._tabLabelContainers[e]:t._groupLabels[t._groups.indexOf(o)]).getBoundingClientRect();"top"===t.tabPosition||"bottom"===t.tabPosition?(a.left>r.left?n.scrollLeft+=Math.round(r.left-a.left):n.scrollLeft+=Math.round(r.right-a.right),t.addNewTab&&e===t._tabs.length-1&&(n.scrollLeft=n.scrollWidth-n.offsetWidth)):"left"!==t.tabPosition&&"right"!==t.tabPosition||!(a.top>r.top||a.bottom<r.bottom)?(n.scrollLeft=t._getScrollLeft(0),t.$.tabStrip.scrollTop=0):n.scrollTop+=Math.round(r.bottom-n.offsetHeight-a.top),t._updateScrollButtonVisibility(),t.resize&&t._getTabCoordinates()}expand(){const e=this;e.collapsible&&e.collapsed&&(e.collapsed=!1)}getOffsetFromEdgeOfElement(e){const t=this;t._validateIndex(e,"getOffsetFromEdgeOfElement"),e=Math.max(0,Math.min(e,t._tabs.length-1));const o=t._tabs[e],n=t.tabPosition;return"hidden"!==n?Math.abs(o.getBoundingClientRect()[n]-t.getBoundingClientRect()[n]):o.getBoundingClientRect().top-t.getBoundingClientRect().top}getTabs(){const e=this,t=e._tabs;return t?t.slice(0):Array.from(e.shadowRoot?e.shadowRoot.querySelectorAll("smart-tab-item"):e.getElementsByTagName("smart-tab-item"))}insert(e,t){const o=this;let n,a;if(o._validateIndex(e,"insert"),(void 0===t||void 0===t.label&&void 0===t.content&&void 0===t.node)&&o.error(o.localize("detailsObjectRequired")),void 0===t.node)n=t.group,a=document.createElement("smart-tab-item"),a.label=void 0!==t.label?t.label:"",a.labelSize=void 0!==t.labelSize?t.labelSize:null,a.content=t.content;else if(a=t.node,void 0!==a.index&&null!==a.index){const e=a.context;a.context=a,a.index=null,a.context=e}a.$.addClass("smart-visibility-hidden"),a.group=null;const r=o._addTabLabelContainer(a),s=r.tabLabelContainer,i=r.dropDownLabelContainer;s.tab=a,a.tabLabelContainer=s;const l={index:e,tab:a,tabLabelContainer:s,dropDownLabelContainer:i};if(o._setAriaRelations(a,s,i),0===o._groups.length&&void 0===n)o._insertNoGrouping(l);else if(null!=n){l.group=n;const e=o.$.tabContentSection.querySelector('smart-tab-items-group[label="'+n+'"]');null!==e?(l.smartTabItemsGroup=e,o._insertIntoExistingGroup(l)):o._insertIntoNewGroup(l)}else o._insertNearAGroup(l);o._getReorderItems(),null===o.selectedIndex&&!o.allowToggle&&o._tabs.length&&o._select(0,!0),null!==a.group&&null!==a.labelSize&&"shrink"!==o.tabLayout&&s.style.removeProperty([o._orientationSettings.dimension]),o._applyTabOverflow()}insertBefore(e,t){const o=this;if(!o.isCompleted){const e=Array.prototype.slice.call(arguments,2);return HTMLElement.prototype.insertBefore.apply(o,e.concat(Array.prototype.slice.call(arguments)))}let n;e instanceof Smart.TabItem&&(null==t||t instanceof Smart.TabItem)||o.error(o.localize("tabItemRequired",{method:"insertBefore"})),o.contains(e)&&(e.selected&&(n=!0),o.removeAt(e.index)),null!=t?(o.contains(t)||o.error(o.localize("referenceNodeNotChild",{argument:"referenceNode"})),o.insert(t.index,{node:e})):o.insert(o._tabs.length,{node:e}),n&&o._select(e.index,!1)}refreshTabHeader(){const e=this;"scroll"===e.tabLayout&&e._checkOverflowScroll(),e._positionTabSelectionBar(e._tabLabelContainers?e._tabLabelContainers[e.selectedIndex]:void 0,!0)}removeAt(e){const t=this,o=t._tabs.length;if(0===o)return;t._validateIndex(e,"remove"),e=Math.max(0,Math.min(e,o-1));const n=t._tabs[e],a=t._tabLabelContainers[e];if(a._lazyRemove?a.classList.add("smart-hidden"):a.parentElement.removeChild(a),n.parentElement.removeChild(n),null!==n.group){const e=t.$.tabContentSection.querySelector('smart-tab-items-group[label="'+n.group+'"]');if(0===e.childElementCount){const o=t._groups.indexOf(n.group);t.$.tabStrip.removeChild(t._groupLabels[o]),t._groups.splice(o,1),t.$.container.removeChild(t._groupLabels[0].dropDown),t._groupLabels.splice(o,1),t.$.tabContentSection.removeChild(e)}}o>1?e<t.selectedIndex?t.selectedIndex--:e===t.selectedIndex&&(e===o-1?t._select(e-1,!1):(t._select(e+1,!1),t.selectedIndex--)):(t.selectedIndex=null,t.$.tabContentSection.innerHTML=""),t._tabLabelContainers.splice(e,1),t.$.dropDownButtonDropDown.removeChild(t.$.dropDownButtonDropDown.children[e]),t._tabs.splice(e,1),t._focusedItem===n&&(t._focusedItem=t._tabs[t._focusedItem.index]),t._updateTabIndexes(),t._getReorderItems(),t._applyTabOverflow(),t.ensureVisible(t.selectedIndex),t.$.hiddenInput.value=t.selectedIndex}removeChild(e){const t=this;if(!t.isCompleted||e instanceof HTMLElement&&e.classList.contains("smart-resize-trigger-container")){const e=Array.prototype.slice.call(arguments,2);return HTMLElement.prototype.removeChild.apply(t,e.concat(Array.prototype.slice.call(arguments)))}e instanceof Smart.TabItem||t.error(t.localize("tabItemRequired",{method:"removeChild"})),t.contains(e)||t.error(t.localize("referenceNodeNotChild",{argument:"node"})),t.removeAt(e.index)}select(e){const t=this;0!==t._tabs.length&&(t._validateIndex(e,"select"),e=Math.max(0,Math.min(e,t._tabs.length-1)),t.ensureVisible(e),t._select(e,!0))}_setFocusable(){const e=this;e.disabled||e.unfocusable?e.removeAttribute("tabindex"):(null===e.getAttribute("tabindex")||e.getAttribute("tabindex")<0)&&e.setAttribute("tabindex",0)}getTabContent(e){const t=this._getTabProperty(e,"content");return t&&t.innerHTML?t.innerHTML:t}getTabLabel(e){return this._getTabProperty(e,"label")}_getTabProperty(e,t){if(0===this._tabs.length)return null;const o=this._tabs[e];return o?o[t]:null}setTabLabel(e,t){const o=this;if(0===o._tabs.length)return;o._validateIndex(e,"update"),e=Math.max(0,Math.min(e,o._tabs.length-1));const n=o._tabs[e];void 0!==t&&n.label!==t&&o._updateTabLabel(n,t)}update(e,t,o){const n=this;if(0===n._tabs.length)return;n._validateIndex(e,"update"),e=Math.max(0,Math.min(e,n._tabs.length-1));const a=n._tabs[e];void 0!==t&&a.label!==t&&n._updateTabLabel(a,t),void 0!==o&&(a.content=o)}_createElement(){const e=this;e.$.dropDownButton.id||(e.$.dropDownButton.id=e.id+"DropDownButton"),e.$.dropDownButtonDropDown.id||(e.$.dropDownButtonDropDown.id=e.id+"DropDown"),e.setAttribute("role","tablist"),e.$.dropDownButton.setAttribute("role","button"),e.$.dropDownButton.setAttribute("aria-haspopup",!0),e.$.dropDownButton.setAttribute("aria-owns",e.$.dropDownButtonDropDown.id),e.$.dropDownButtonDropDown.setAttribute("role","menu"),e.disabled&&(e.$.scrollButtonNear.disabled=!0,e.$.scrollButtonFar.disabled=!0),e.rightToLeft&&(e.$.tabsHeaderItems.removeChild(e.$.dropDownButton),"top"===e.tabPosition||"bottom"===e.tabPosition?e.$.tabsHeaderItems.insertBefore(e.$.dropDownButton,e.$.scrollButtonNear):e.$.tabsHeaderItems.insertBefore(e.$.dropDownButton,e.$.tabSelectionBar)),e._handlePosition(e.tabPosition),e._handleScrollButtonsPosition(e.scrollButtonsPosition,"both"),null!==e.dataSource&&e._processDataSource(),e._setFocusable(),e.collapsed&&!e.collapsible&&(e.collapsed=!1),e.collapsible&&e.allowToggle&&(e.allowToggle=!1),e._processHTML(),null===e.selectedIndex&&e.$.tabContentSection.setAttribute("show-placeholder",""),setTimeout((()=>e.refreshTabHeader()),300),e.$.hiddenInput.value=e.selectedIndex,e.enableShadowDOM&&HTMLElement.prototype.appendChild.apply(e,[e.$.hiddenInput])}propertyChangedHandler(e,t,o){super.propertyChangedHandler(e,t,o);const n=this;switch(e){case"addNewTab":o?n._insertAddNewTab():(n.$.tabStrip.removeChild(n._addNewTab),delete n._addNewTab),n._applyTabOverflow();break;case"allowToggle":o&&n.collapsible?(n.collapsed&&n._toggleCollapsedState(),n.collapsible=!1):o||null!==n.selectedIndex||(n.ensureVisible(n.selectedIndex=0),n._select(n.selectedIndex,!0,null));break;case"closeButtonMode":if("selected"===o){for(let e=0;e<n._tabs.length;e++)n._disableCloseButton(e);n._enableCloseButton(n.selectedIndex)}else{n._disableCloseButton(n.selectedIndex);const e=n._tabLabelContainers;for(let t=0;t<e.length;t++){const o=e[t];o.closeButtonEnabled=!0!==n._tabs[t].closeButtonHidden,n._showCloseButton(o)}}n._applyTabOverflow();break;case"closeButtons":{const e=n._tabLabelContainers,t=o?n._showCloseButton:n._hideCloseButton;for(let o=0;o<e.length;o++)t(e[o]);n._applyTabOverflow();break}case"collapsed":if(!n.collapsible&&o)return void(n.collapsed=!1);break;case"collapsible":!o&&n.collapsed&&(n.collapsed=!1),n.allowToggle=!1,void 0===n.selectedIndex&&n.select(n._focusedItem.index);break;case"dataSource":n.selectedIndex=null;for(let e=0;e<n._groupLabels.length;e++)n.$.container.removeChild(n._groupLabels[e].dropDown);n.$.tabStrip.innerHTML="",n._processDataSource(),n._processHTML();break;case"disabled":n._setFocusable(),n.$.scrollButtonNear.disabled=o,n.$.scrollButtonFar.disabled=o,o||n._updateScrollButtonVisibility(),n._closeDropDownButtonDropDown();break;case"messages":case"scrollMode":case"selectionMode":case"readonly":case"reorder":break;case"overflow":if("scroll"!==n.tabLayout)return;n.$.tabStrip.scrollLeft=n._getScrollLeft(0),n.$.tabStrip.scrollTop=0,"hidden"===o?(n.$tabsHeaderSection.removeClass("scroll-buttons-shown"),n.$scrollButtonNear.addClass("smart-hidden"),n.$scrollButtonFar.addClass("smart-hidden")):n._checkOverflowScroll(),n._getTabCoordinates();break;case"tabPosition":n.$.tabSelectionBar.style.transition="none",n._tabPositionChanging=!0,n._closeGroupDropDown(),n._handlePosition(o,t),"shrink"!==n.tabLayout&&n._applyLabelSizes("tabPosition"),n.rightToLeft&&(n.$.tabsHeaderItems.removeChild(n.$.dropDownButton),"top"===n.tabPosition||"bottom"===n.tabPosition?n.$.tabsHeaderItems.insertBefore(n.$.dropDownButton,n.$.scrollButtonNear):n.$.tabsHeaderItems.insertBefore(n.$.dropDownButton,n.$.tabSelectionBar)),n._applyTabOverflow(),delete n._tabPositionChanging,requestAnimationFrame((function(){n.$.tabSelectionBar.style.transition=null}));break;case"resize":o&&n._getTabCoordinates();break;case"rightToLeft":n._positionTabSelectionBar(n._tabLabelContainers[n.selectedIndex],!0),n.$.tabsHeaderItems.removeChild(n.$.dropDownButton),!o||"top"!==n.tabPosition&&"bottom"!==n.tabPosition?n.$.tabsHeaderItems.insertBefore(n.$.dropDownButton,n.$.tabSelectionBar):n.$.tabsHeaderItems.insertBefore(n.$.dropDownButton,n.$.scrollButtonNear),n.ensureVisible(n.selectedIndex);break;case"scrollButtonsPosition":n._handleScrollButtonsPosition(o,t);break;case"selectedIndex":{if(isNaN(o)&&(n.selectedIndex=o=t),!n.allowToggle&&null===o)return void(n.selectedIndex=t);let e=o;null!==o&&(e=Math.max(0,Math.min(o,n._tabs.length-1)),n.ensureVisible(e)),n._select(e,!0,t);break}case"tabLayout":"scroll"===t&&(n.$tabsHeaderSection.removeClass("scroll-buttons-shown"),n.$scrollButtonNear.addClass("smart-hidden"),n.$scrollButtonFar.addClass("smart-hidden")),"shrink"===o?n._applyLabelSizes("shrink",!0):"shrink"===t&&n._applyLabelSizes("shrink",!1),n._applyTabOverflow(),"scroll"===o&&n.disabled&&(n.$.scrollButtonNear.disabled=!0,n.$.scrollButtonFar.disabled=!0),n.ensureVisible(n.selectedIndex);break;case"tabTextOrientation":n._applyTabOverflow(),n.ensureVisible(n.selectedIndex);break;case"unfocusable":n._setFocusable()}}_addGroupContainer(e,t){const o=this,n=document.createElement("div"),a=document.createElement("div"),r=document.createElement("div"),s=document.createElement("div"),i=document.createElement("div");return n.className="smart-tab-group-container smart-unselectable",n.$=Smart.Utilities.Extend(n),n.setAttribute("role","group"),n.setAttribute("aria-expanded",!1),n.setAttribute("aria-haspopup",!0),n.setAttribute("aria-label",e),a.className="smart-tab-label-text-wrapper",a.setAttribute("role","presentation"),a.setAttribute("aria-hidden",!0),null!==t&&"shrink"!==o.tabLayout&&(n.style[o._orientationSettings.dimension]=parseInt(t,10)+"px"),r.className="smart-tab-label-text-container",r.innerHTML=e,s.className="smart-tab-group-arrow",i.className="smart-tab-group-drop-down smart-hidden",i.$=Smart.Utilities.Extend(i),i.id=o.id+"GroupDropDown"+e,i.setAttribute("role","tablist"),i.setAttribute("aria-orientation","vertical"),n.setAttribute("aria-owns",i.id),a.appendChild(r),a.appendChild(s),n.appendChild(a),o.$.container.appendChild(i),n.group=e,n.dropDown=i,i.groupContainer=n,{label:n,dropDown:i}}_addGroupElements(e){const t=this,o=e.groups,n=e.groupLabels,a=e.group,r=o.indexOf(a),s=e.tabLabelContainer;let i;if(-1!==r)i=n[r],i.dropDown.appendChild(s);else{o.push(a);const r=t._addGroupContainer(a,e.smartTabItemsGroup.labelSize),l=r.dropDown;i=r.label,l.appendChild(s),l.groupContainer=r.label,e.documentFragment.appendChild(i),n.push(i)}t.selectedIndex===e.i&&(t._selectedGroup=i,i.$.addClass("smart-tab-group-selected"))}_addNewTabHandler(e,t,o){const n=this;n._swiping||(o?(e.removeAttribute("hover"),n.addNewTabAutoCreate&&(n.insert(n._tabs.length,{label:"New Tab",content:""}),n._select(n._tabs.length-1,!0)),n.$.fireEvent("addNewTabClick")):n._reordering||n._swiping||("mouseover"===t?e.setAttribute("hover",""):"mouseout"===t&&e.removeAttribute("hover")))}_addTabLabelContainer(e,t){const o=this,n=document.createElement("div"),a=document.createElement("div"),r=document.createElement("div"),s=document.createElement("div");let i;return e&&(e.disabled?n.setAttribute("disabled",""):n.removeAttribute("disabled")),n.className="smart-tab-label-container smart-unselectable",a.className="smart-tab-label-text-wrapper",r.className="smart-tab-label-text-container",r.setAttribute("role","presentation"),s.className="smart-tab-close-button",s.setAttribute("role","button"),s.setAttribute("aria-label","Close"),void 0===t?(o.closeButtons?"default"===o.closeButtonMode&&e.closeButtonHidden||"selected"===o.closeButtonMode&&!e.selected?(s.classList.add("smart-hidden"),n.closeButtonEnabled=!1):(r.classList.add("smart-close-button-enabled"),n.closeButtonEnabled=!0):(s.classList.add("smart-hidden"),n.closeButtonEnabled=!0),i=document.createElement("div"),i.className="smart-tab-label-container smart-unselectable",e&&null===e.group&&null!==e.labelSize&&"shrink"!==o.tabLayout&&(n.style[o._orientationSettings.dimension]=parseInt(e.labelSize,10)+"px")):(s.classList.add("smart-hidden"),n.closeButtonEnabled=!1),o._setLabel(e?e.label:"+",r,i),r.$=Smart.Utilities.Extend(r),s.$=Smart.Utilities.Extend(s),a.appendChild(r),a.appendChild(s),n.appendChild(a),n.$=Smart.Utilities.Extend(n),{tabLabelContainer:n,dropDownLabelContainer:i}}_animateSelection(e,t,o){const n=this;let a="right",r="left";if(n.rightToLeft&&(a="left",a="right"),n._animatedTab=e,n._animatedOldTab=t,n._animatedTab&&n._animatedOldTab){"left"!==n.tabPosition&&"right"!==n.tabPosition||(a="top",r="bottom");for(let e=0;e<n._tabs.length;e++)n._tabs[e].$.removeClass(a),n._tabs[e].$.removeClass(r),n._tabs[e].$.removeClass("animate");if(e===t)return e.$.hasClass("smart-visibility-hidden")?e.$.removeClass("smart-visibility-hidden"):e.$.addClass("smart-visibility-hidden"),void(n._animatedOldTab.classToRemove=a);o?(e.$.addClass(a),e.$.removeClass("smart-visibility-hidden"),t.$.addClass("smart-visibility-hidden"),requestAnimationFrame((()=>{t.$.addClass("animate"),e.$.addClass("animate"),requestAnimationFrame((()=>{t.$.addClass(r),e.$.removeClass(a)}))})),n._animatedOldTab.classToRemove=r):(e.$.addClass(r),e.$.removeClass("smart-visibility-hidden"),t.$.addClass("smart-visibility-hidden"),requestAnimationFrame((()=>{t.$.addClass("animate"),e.$.addClass("animate"),requestAnimationFrame((()=>{t.$.addClass(a),e.$.removeClass(r)}))})),n._animatedOldTab.classToRemove=a)}}_applyConditionalTabOverflow(){const e=this,t="left"===e.tabPosition||"right"===e.tabPosition,o=e.$.tabStrip;if("scroll"!==e.tabLayout){if(e._flexWritingModeNoFullSupport&&"shrink"===e.tabLayout&&t&&o.scrollHeight>o.offsetHeight){const t=o.children,n=100/t.length+"%";o.$.addClass("shrink-tabs-vertical");for(let e=0;e<t.length;e++)t[e].style.height=n,t[e].firstElementChild.firstElementChild.classList.add("smart-tab-label-text-container-full-height");e._inlineStyleTabStripChildren=!0}}else e._checkOverflowScroll()}_applyLabelSizes(e,t){const o=this,n=o._orientationSettings.dimension,a="width"===n?"height":"width";for(let r=0;r<o._reorderItems.length;r++){const s=o._reorderItems[r],i=o._getCorrespondingCustomElement(s);null!==i.labelSize&&("tabPosition"===e&&s.style.removeProperty(a),t?s.style.removeProperty(n):s.style[n]=parseInt(i.labelSize,10)+"px")}}refresh(){this._applyTabOverflow()}_applyTabOverflow(){const e=this;if(!e._tabs)return;if(e._removeInlineStyle(),0===e._tabs.length)return void e._toggleNavigationElementsVisibility();const t=e.tabLayout,o=e.tabPosition,n="left"===o||"right"===o,a=e.$.tabStrip;switch(e._closeDropDownButtonDropDown(),t){case"scroll":case"dropDown":e._flexWritingModeNoFullSupport&&"vertical"===e.tabTextOrientation&&n&&e._fixTabStripNotChrome(a);break;case"wrap":if("vertical"===e.tabTextOrientation)if(e._flexWritingModeNoFullSupport)if(n)e._fixTabStripNotChrome(a);else{const t=a.children;let o=t[0].offsetHeight;for(let e=1;e<t.length;e++)o=Math.max(o,t[e].offsetHeight);for(let e=1;e<t.length;e++)t[e].style.height=o+"px";e._inlineStyleTabStripChildren=!0}else n||a.scrollHeight>a.offsetHeight&&(a.style.height=a.scrollHeight+"px",e._inlineStyleTabStrip=!0);else n&&a.scrollWidth>a.offsetWidth&&(a.style.width=a.scrollWidth+"px","right"===o&&(a.style.flexWrap="wrap-reverse"),e._inlineStyleTabStrip=!0);break;case"shrink":if(n){if(e._flexWritingModeNoFullSupport&&"vertical"===e.tabTextOrientation){const t=a.children,o=window.getComputedStyle(t[0].firstElementChild),n=parseInt(o.paddingLeft,10)+parseInt(o.paddingRight,10);let r=0;for(let e=0;e<t.length;e++)r=Math.max(r,t[e].firstElementChild.firstElementChild.offsetWidth);a.style.width=n+r+"px",e._inlineStyleTabStrip=!0;break}}else a.scrollWidth>a.offsetWidth&&a.$.addClass("shrink-tabs")}e._applyConditionalTabOverflow(),e._getTabCoordinates(),e._fixTabStripFlex(t),e._toggleNavigationElementsVisibility(),e._positionTabSelectionBar(e._tabLabelContainers[e.selectedIndex],!0)}_checkOverflowScroll(){const e=this,t=e.$tabsHeaderSection,o=e.$.tabStrip,n=e.overflow;if("hidden"===n)return;let a,r,s;if("left"!==e.tabPosition&&"right"!==e.tabPosition){const t=Math.abs(e._getScrollLeft());a=Math.round(o.scrollWidth)>Math.round(o.offsetWidth),e.rightToLeft?(s=Math.round(t)>0,r=Math.round(o.offsetWidth+t)<Math.round(o.scrollWidth)):(r=Math.round(t)>0,s=Math.round(o.offsetWidth+t)<Math.round(o.scrollWidth))}else a=Math.round(o.scrollHeight)>Math.round(o.offsetHeight),r=Math.round(o.scrollTop)>0,s=Math.round(o.offsetHeight+o.scrollTop)<Math.round(o.scrollHeight);"scroll"===n&&(t.addClass("scroll-buttons-shown"),e.$scrollButtonNear.removeClass("smart-hidden"),e.$scrollButtonFar.removeClass("smart-hidden")),a?"auto"===n?(t.hasClass("scroll-buttons-shown")||t.addClass("scroll-buttons-shown"),r?e.$scrollButtonNear.removeClass("smart-hidden"):e.$scrollButtonNear.addClass("smart-hidden"),s?e.$scrollButtonFar.removeClass("smart-hidden"):e.$scrollButtonFar.addClass("smart-hidden"),!1===(r&&s)?t.addClass("one-button-shown"):t.removeClass("one-button-shown"),e.disabled||(e.$.scrollButtonNear.disabled=!1,e.$.scrollButtonFar.disabled=!1)):(t.removeClass("one-button-shown"),e.disabled?(e.$.scrollButtonNear.disabled=!0,e.$.scrollButtonFar.disabled=!0):(e.$.scrollButtonNear.disabled=!r,e.$.scrollButtonFar.disabled=!s)):!a&&"auto"===n&&t.hasClass("scroll-buttons-shown")?(t.removeClass("scroll-buttons-shown"),t.removeClass("one-button-shown"),e.$scrollButtonNear.addClass("smart-hidden"),e.$scrollButtonFar.addClass("smart-hidden")):a||"scroll"!==n||(e.$.scrollButtonNear.disabled=!0,e.$.scrollButtonFar.disabled=!0)}_closeButtonVisibilityChangeHandler(e){const t=this,o=(Smart.EnableShadowDOM?e.composedPath()[0]:e.target).index;"selected"!==t.closeButtonMode?e.detail.hidden?t._disableCloseButton(o):t._enableCloseButton(o):t._tabLabelContainers[o].closeButtonEnabled=e.detail.hidden}_closeDropDownButtonDropDown(){const e=this;e._dropDownButtonDropDownOpened&&(e.$.dropDownButton.setAttribute("aria-expanded",!1),e.$dropDownButtonDropDown.addClass("smart-hidden"),e._dropDownButtonDropDownOpened=!1)}_closeGroupDropDown(){const e=this;if(!e._openDropDown)return;const t=e._openDropDown.groupContainer;e._openDropDown.rippleInProgress?setTimeout((function(){e._openDropDown&&(t.setAttribute("aria-expanded",!1),e._openDropDown.$.addClass("smart-hidden"),delete e._openDropDown.rippleInProgress,e._openDropDown=void 0)}),450):(t.setAttribute("aria-expanded",!1),e._openDropDown.$.addClass("smart-hidden"),e._openDropDown=void 0)}_containerHandler(e){const t=this,o=e.type;if(t.disabled||t.readonly||t._resizing&&"mouseout"!==o||("down"===o||"up"===o)&&1!==e.which&&!Smart.Utilities.Core.isMobile)return;const n=t.shadowRoot||t.isInShadowDOM?(e.originalEvent||e).composedPath()[0]:(e.originalEvent||e).target;t.$.tabContentSection.contains(n)||(t.$.dropDownButton.contains(n)?t._dropDownButtonHandler(n,e):t.$.dropDownButtonDropDown.contains(n)?t._dropDownButtonHandler(n,e,!0):t._tabStripHandler(n,e))}_disableCloseButton(e){const t=this,o=t._tabLabelContainers[e];o.closeButtonEnabled=!1,t.closeButtons&&t._hideCloseButton(o)}_documentMoveHandler(e){const t=this,o=t._orientationSettings;if(t._reordering){t._reorderStartThrown||(t._fireDragEvent(e,"dragStart"),t._reorderStartThrown=!0);const n=e[o.coordinate],a="wrap"!==t.tabLayout?function(e){return n>=e[o.from]&&n<=e[o.to]}:function(t){return e.pageX>=t.fromX&&e.pageX<=t.toX&&e.pageY>=t.fromY&&e.pageY<=t.toY};let r=!1;for(let e=0;e<t._tabCoordinates.length;e++)if(a(t._tabCoordinates[e])){r=e;break}!0!==t._preventReorder&&!1!==r&&r!==t._draggedIndex&&(t._reorderTabs(t._draggedIndex,r),t._closeGroupDropDown(),t._draggedIndex=r,t._getReorderItems(),t._getTabCoordinates());const s=t._tabCoordinates[t._draggedIndex];"wrap"!==t.tabLayout&&(n<s[o.from]||n>s[o.to])||"wrap"===t.tabLayout&&(null!==e.originalEvent.target.closest(".smart-tab-label-container")||null!==e.originalEvent.target.closest(".smart-tab-group-container"))&&!(e.pageX>=s.fromX&&e.pageX<=s.toX&&e.pageY>=s.fromY&&e.pageY<=s.toY)?t._preventReorder=!0:t._preventReorder=!1}else t._resizing&&(t.$.resizeToken.style[o.edge]=e[o.coordinate]-t._tabsHeaderSectionCoordinate+"px",t.$resizeToken.removeClass("smart-hidden"))}_documentUpHandler(e){const t=this;let o=t.shadowRoot||t.isInShadowDOM?e.originalEvent.composedPath()[0]:e.originalEvent.target;t.$.container.contains(o)&&t._containerHandler(e),t._touchmoveInside?t._endSwiping(e,Date.now()):(delete t._dragStartDetails,delete t._swiping),delete t._touchCoords,delete t._touchmoveInside,!t._openDropDown||t._openDropDown.rippleInProgress||o!==document&&o.closest(".smart-tab-group-container")===t._openDropDown.groupContainer||"pointercancel"===e.originalEvent.type||t._closeGroupDropDown(),t.$.dropDownButton.contains(o)||"pointercancel"===e.originalEvent.type||t._closeDropDownButtonDropDown(),t._endReordering(e,o),t._resize(e),void 0!==t._tabToResize&&(t._tabToResize=void 0),delete t._downTarget}_dropDownButtonHandler(e,t,o){const n=this,a=t.type;if(o){if(e.classList.contains("smart-tab-label-container"))switch(a){case"down":n._downTarget=e;break;case"mouseout":e.removeAttribute("hover");break;case"mouseover":e.setAttribute("hover","");break;case"up":e===n._downTarget&&t.originalEvent&&"pointercancel"!==t.originalEvent.type&&(n.select(Array.from(n.$.dropDownButtonDropDown.children).indexOf(e)),n._closeDropDownButtonDropDown())}}else if("down"===a)n._downTarget=n.$.dropDownButton;else if("up"===a&&n._downTarget===n.$.dropDownButton)if(n._dropDownButtonDropDownOpened)n._closeDropDownButtonDropDown();else{const e=n.tabPosition;let t,o;switch(n.$.dropDownButton.setAttribute("aria-expanded",!0),e){case"top":t=n.$.dropDownButton.offsetLeft,o=n.$.tabsHeaderSection.offsetTop+n.$.dropDownButton.offsetHeight;break;case"bottom":t=n.$.dropDownButton.offsetLeft,o=n.$.tabsHeaderSection.offsetTop;break;case"left":t=n.$.dropDownButton.offsetWidth,o=n.$.dropDownButton.offsetTop;break;case"right":t=n.$.tabsHeaderSection.offsetLeft,o=n.$.dropDownButton.offsetTop}n.$.dropDownButtonDropDown.style.left=t+"px",n.$.dropDownButtonDropDown.style.top=o+"px",n.$dropDownButtonDropDown.removeClass("smart-hidden"),n._dropDownButtonDropDownOpened=!0}}_enableCloseButton(e){const t=this,o=t._tabLabelContainers[e];o.closeButtonEnabled=!0,t.closeButtons&&t._showCloseButton(o)}_endReordering(e,t){const o=this;o._reordering&&(o._draggedHoveredTab&&(o._draggedHoveredTab.contains(t)||o._draggedHoveredTab.removeAttribute("hover"),delete o._draggedHoveredTab),o._reorderedIndex=void 0,o._reordering=!1,o._reorderStartThrown=!1,o.removeAttribute("dragged"),e&&o._fireDragEvent(e,"dragEnd"))}_endSwiping(e,t){const o=this;if(!o._dragStartDetails)return;const n=o._orientationSettings,a=o.$.tabStrip,r=Math.abs(o._dragStartDetails.startTime-t),s=200/r,i=(o._dragStartDetails[n.startCoordinate]-e[n.coordinate])*s;let l=Math.abs(i);const d=function(){if(o.rightToLeft&&"scrollLeft"===n.scrollDirection){const e=Math.abs(o._getScrollLeft());if(i<0&&e===a[n.scrollSize]-a[n.size]||i>0&&0===e)return!1}else if(i>0&&a[n.scrollDirection]===a[n.scrollSize]-a[n.size]||i<0&&0===a[n.scrollDirection])return!1;return!0};let c=.03*Math.abs(i)*s;const b=function(){if(c>5){const e=(l-c)/Math.abs(i);e<.1?c/=1.25:e<.15?c/=1.2:e<.2?c/=1.15:e<.25?c/=1.1:e<.3&&(c/=1.05)}c=Math.round(c);const e=a[n.scrollDirection];o.rightToLeft&&"scrollLeft"===n.scrollDirection?Smart.Utilities.Core.Browser.Chrome?a[n.scrollDirection]=i>0?Math.max(e+c,0):Math.min(e-c,a[n.scrollSize]-a[n.size]):a[n.scrollDirection]=i>0?Math.min(e+c,a[n.scrollSize]-a[n.size]):Math.min(e-c,0):a[n.scrollDirection]=i>0?Math.min(e+c,a[n.scrollSize]-a[n.size]):Math.max(e-c,0),l-=c,o._updateScrollButtonVisibility(!0);const t=d();l>0&&t?o._scrollingAnimationFrame=window.requestAnimationFrame(b):o._wheelInProgress=!1};o._scrollingAnimationFrame&&cancelAnimationFrame(o._scrollingAnimationFrame),r<500&&d()?o._scrollingAnimationFrame=window.requestAnimationFrame(b):o._wheelInProgress=!1,delete o._dragStartDetails,o._swiping&&delete o._swiping}_fireDragEvent(e,t){const o=this,n=o.$.tabStrip.children[o._draggedIndex],a=n.tab;let r,s,i;a?(r=a.selected,s=a.index,i=a.label):i=n.group,o.$.fireEvent(t,{position:{left:e.pageX,top:e.pageY},left:e.pageX,top:e.pageY,target:n,selected:r,index:s,label:i})}_fixTabStripNotChrome(e){const t=this;function o(){const o=[].slice.call(e.children).filter((e=>!e._lazyRemove));let n=o[0].getBoundingClientRect(),a=n.left,r=a+o[0].offsetWidth;for(let e=1;e<o.length;e++)n=o[e].getBoundingClientRect(),a=Math.min(a,n.left),r=Math.max(r,n.left+o[e].offsetWidth);e.style.width=r-a+"px",t._inlineStyleTabStrip=!0}0!==t._tabs.length&&(o(),Smart.Utilities.Core.Browser.Safari&&setTimeout((function(){e.parentElement.classList.add("smart-hidden"),setTimeout((function(){e.parentElement.classList.remove("smart-hidden"),o()}),10)}),10),t.$.fireEvent("tabStripResize"))}_fixTabStripFlex(e){const t=this;t._flexWritingModeNoFullSupport||"vertical"!==t.tabTextOrientation||"left"!==t.tabPosition&&"right"!==t.tabPosition||setTimeout((function(){t.$tabsHeaderSection.addClass("smart-hidden"),setTimeout((function(){t.$tabsHeaderSection.removeClass("smart-hidden"),t._getTabCoordinates(),"scroll"===e&&t._checkOverflowScroll()}),10)}),10)}_getCorrespondingCustomElement(e){return e.$.hasClass("smart-tab-label-container")?e.tab:this.$.tabContentSection.querySelector('smart-tab-items-group[label="'+e.group+'"]')}_getReorderItems(){const e=this;let t;0===e._groups.length?t=e._tabLabelContainers:(t=Array.from(e.$.tabStrip.children),e.addNewTab&&t.pop()),e._reorderItems=t}_getTabCoordinates(){const e=this;if(!e.reorder&&!e.resize||"hidden"===e.tabPosition)return;const t=[],o=window.scrollX||window.pageXOffset,n=window.scrollY||window.pageYOffset;for(let a=0;a<e._reorderItems.length;a++){const r=e._reorderItems[a],s=r.getBoundingClientRect(),i=window.getComputedStyle(r),l=parseFloat(i.marginLeft),d=parseFloat(i.marginRight),c=parseFloat(i.marginTop),b=parseFloat(i.marginBottom);t.push({fromX:s.left-l+o,toX:s.right+d+o,fromY:s.top-c+n,toY:s.bottom+b+n})}e._tabCoordinates=t}_getTabs(){const e=this;let t=e.shadowRoot?e.shadowRoot.querySelectorAll("smart-tab-item"):e.getElementsByTagName("smart-tab-item");if(e.querySelector("smart-tabs")){t=e.shadowRoot?e.shadowRoot.querySelectorAll("smart-tab-item"):e.getElementsByTagName("smart-tab-item");let o=[];const n=e.querySelector(".smart-tabs-content-section");if(n){for(let e=0;e<t.length;e++)t[e].parentNode===n&&o.push(t[e]);t=o}}null!==e.selectedIndex&&(0===t.length?e.selectedIndex=null:e.selectedIndex=Math.max(0,Math.min(e.selectedIndex,t.length-1))),e._tabs=Array.from(t),e.$.hiddenInput.value=e.selectedIndex}_groupContainerHandler(e,t){const o=this,n=e.dropDown;if("down"===t)return o._downTarget=e,void(o.reorder&&o._reorderItems.length>1&&(o._getTabCoordinates(),o._reordering=!0,o.setAttribute("dragged",""),o._draggedIndex=Array.from(o.$.tabStrip.children).indexOf(e)));o._reordering||o._swiping||(n===o._openDropDown||"mouseover"!==t||e.classList.contains("smart-tab-group-selected")?"mouseout"===t&&e.removeAttribute("hover"):e.setAttribute("hover","")),"up"!==t||o._downTarget!==e||void 0!==o._reorderedIndex||o._swiping||(n===o._openDropDown?(o._closeGroupDropDown(),e.classList.contains("smart-tab-group-selected")||e.setAttribute("hover","")):o._openGroupDropDown(e))}_handlePosition(e,t){const o=this;if(-1===[void 0,"top","left","hidden"].indexOf(t)||"bottom"!==e&&"right"!==e?"bottom"!==t&&"right"!==t||-1===["top","left","hidden"].indexOf(e)||o.$.container.insertBefore(o.$.tabsHeaderSection,o.$.tabContentSection):o.$.container.insertBefore(o.$.tabContentSection,o.$.tabsHeaderSection),"hidden"===e)return o._orientationSettings={coordinate:"pageY",dimension:"height",edge:"top",from:"fromY",size:"offsetHeight",to:"toY",scrollDirection:"scrollTop",scrollSize:"scrollHeight",startCoordinate:"startY",wheelOffset:35},o.removeAttribute("horizontal"),o.removeAttribute("vertical"),void o.setAttribute("aria-orientation","horizontal");"top"===e||"bottom"===e?(o._orientationSettings={coordinate:"pageX",dimension:"width",edge:"left",from:"fromX",size:"offsetWidth",to:"toX",scrollDirection:"scrollLeft",scrollSize:"scrollWidth",startCoordinate:"startX",wheelOffset:70},o.removeAttribute("vertical"),o.setAttribute("horizontal",""),o.$arrowNear.removeClass("smart-arrow-up"),o.$arrowNear.addClass("smart-arrow-left"),o.$arrowFar.removeClass("smart-arrow-down"),o.$arrowFar.addClass("smart-arrow-right"),o.setAttribute("aria-orientation","horizontal"),o.$.scrollButtonNear.setAttribute("aria-label","Scroll left"),o.$.scrollButtonFar.setAttribute("aria-label","Scroll right")):(o._orientationSettings={coordinate:"pageY",dimension:"height",edge:"top",from:"fromY",size:"offsetHeight",to:"toY",scrollDirection:"scrollTop",scrollSize:"scrollHeight",startCoordinate:"startY",wheelOffset:35},o.removeAttribute("horizontal"),o.setAttribute("vertical",""),o.$arrowNear.removeClass("smart-arrow-left"),o.$arrowNear.addClass("smart-arrow-up"),o.$arrowFar.removeClass("smart-arrow-right"),o.$arrowFar.addClass("smart-arrow-down"),o.setAttribute("aria-orientation","vertical"),o.$.scrollButtonNear.setAttribute("aria-label","Scroll up"),o.$.scrollButtonFar.setAttribute("aria-label","Scroll down"))}_handleScrollButtonsPosition(e,t){const o=this,n=o.$.tabsHeaderItems;e!==t&&("both"===e?"near"===t?n.insertBefore(o.$.scrollButtonFar,o.$.dropDownButton):n.insertBefore(o.$.scrollButtonNear,o.$.tabStrip):"near"===e?("far"===t&&n.insertBefore(o.$.scrollButtonNear,o.$.tabStrip),n.insertBefore(o.$.scrollButtonFar,o.$.tabStrip)):("near"===t&&n.insertBefore(o.$.scrollButtonFar,o.$.dropDownButton),n.insertBefore(o.$.scrollButtonNear,o.$.scrollButtonFar)))}_hideCloseButton(e){e.firstElementChild.children[0].$.removeClass("smart-close-button-enabled"),e.firstElementChild.children[1].$.addClass("smart-hidden")}_indexChangeHandler(e){const t=this,o=e.detail.oldIndex,n=Math.max(0,Math.min(e.detail.newIndex,t._tabs.length-1));if(o!==n){if(0===t._groups.length)t._reorderTabs(o,n);else{const a=e.detail.tabItem;a._setIndex(o),t.removeAt(o),t.insert(n,{node:a}),t.selectedIndex===o&&t._select(n,!1)}t._reorderedIndex=void 0}}_insertAddNewTab(){const e=this,t=e._addTabLabelContainer(void 0,!0).tabLabelContainer;t.$.addClass("smart-add-new-tab"),e.$.tabStrip.appendChild(t),e._addNewTab=t}_insertIntoExistingGroup(e){const t=this,o=e.smartTabItemsGroup,n=e.tab,a=e.tabLabelContainer,r=e.group,s=t._groupLabels[t._groups.indexOf(r)].dropDown;let i=e.index;i=Math.max(0,Math.min(i,o.childElementCount)),s.insertBefore(a,s.children[i]);const l=o.children[i];let d;d=l?l.index:o.children[i-1].index+1,o.insertBefore(n,l),t._tabLabelContainers.splice(d,0,a),t.$.dropDownButtonDropDown.insertBefore(e.dropDownLabelContainer,t.$.dropDownButtonDropDown.children[d]||null),t._tabs.splice(d,0,n),i=d,n.group=r,t._updateIndexes(i)}_insertIntoNewGroup(e){const t=this,o=e.tab,n=e.tabLabelContainer,a=e.group,r=t._addGroupContainer(a),s=r.label;r.dropDown.appendChild(n),t._groups.push(a);let i=Math.max(0,Math.min(e.index,t.$.tabStrip.childElementCount)),l=i;t._addNewTab&&l===t.$.tabStrip.childElementCount&&l--,t.$.tabStrip.insertBefore(s,t.$.tabStrip.children[l]||null),t._groupLabels.push(s);const d=document.createElement("smart-tab-items-group");d.appendChild(o),t.$.tabContentSection.insertBefore(d,t.$.tabContentSection.children[i]),d.label=a;const c=d.previousElementSibling;let b=0;c&&(c instanceof Smart.TabItem?b=c.index+1:c&&(b=c.lastElementChild.index+1)),t._tabLabelContainers.splice(b,0,n),t.$.dropDownButtonDropDown.insertBefore(e.dropDownLabelContainer,t.$.dropDownButtonDropDown.children[b]||null),t._tabs.splice(b,0,o),i=b,o.group=a,t._updateIndexes(i)}_insertNearAGroup(e){const t=this,o=e.tab,n=e.tabLabelContainer;let a=e.index;a=Math.max(0,Math.min(a,t._tabs.length));const r=t._tabs[a-1],s=t._tabs[a],i=s?s.group:void 0;r&&null!==r.group&&s&&null!==i?(s.tabLabelContainer.parentElement.insertBefore(n,s.tabLabelContainer),s.parentElement.insertBefore(o,s),o.group=i):s?null!==i?(t.$.tabStrip.insertBefore(n,t._groupLabels[t._groups.indexOf(i)]),t.$.tabContentSection.insertBefore(o,t.$.tabContentSection.querySelector('smart-tab-items-group[label="'+i+'"]'))):(t.$.tabStrip.insertBefore(n,s.tabLabelContainer),t.$.tabContentSection.insertBefore(o,s)):(t.$.tabStrip.insertBefore(n,t._addNewTab||null),t.$.tabContentSection.appendChild(o)),t._tabLabelContainers.splice(a,0,n),t.$.dropDownButtonDropDown.insertBefore(e.dropDownLabelContainer,t.$.dropDownButtonDropDown.children[a]||null),t._tabs.splice(a,0,o),t._updateIndexes(a)}_insertNoGrouping(e){const t=this,o=Math.max(0,Math.min(e.index,t._tabs.length)),n=e.tab,a=e.tabLabelContainer;t.$.tabStrip.insertBefore(a,t._tabLabelContainers[o]||t._addNewTab||null),t.$.tabContentSection.insertBefore(n,t._tabs[o]||null),t._tabLabelContainers.splice(o,0,a),t.$.dropDownButtonDropDown.insertBefore(e.dropDownLabelContainer,t.$.dropDownButtonDropDown.children[o]||null),t._tabs.splice(o,0,n),t._updateIndexes(o)}_keydownHandler(e){const t=this,o=e.key;if((t.isInShadowDOM?t.getRootNode().activeElement:document.activeElement)!==t||-1===["ArrowLeft","ArrowDown","ArrowRight","ArrowUp","End","Home","Enter"," ","Escape"].indexOf(o)||t.disabled||t.readonly||"none"===t.selectionMode||!t.allowToggle&&null===t.selectedIndex||t._reordering||t._swiping)return;e.preventDefault();const n=t._tabs.length-1;let a,r,s,i,l=0;switch(t.rightToLeft?(s="ArrowRight",i="ArrowLeft"):(s="ArrowLeft",i="ArrowRight"),o){case s:case"ArrowUp":if(t.collapsible&&e.ctrlKey)return void(o===s?"right"===t.tabPosition?t.expand():"left"===t.tabPosition&&t.collapse():"ArrowUp"===o&&("bottom"===t.tabPosition?t.expand():"top"===t.tabPosition&&t.collapse()));if(l=-1,0===t.selectedIndex){r=!0;break}a=t.selectedIndex+l;break;case i:case"ArrowDown":if(t.collapsible&&e.ctrlKey)return void(o===i?"right"===t.tabPosition?t.collapse():"left"===t.tabPosition&&t.expand():"ArrowDown"===o&&("bottom"===t.tabPosition?t.collapse():"top"===t.tabPosition&&t.expand()));if(l=1,t.selectedIndex===n){r=!0;break}a=t.selectedIndex+l;break;case"End":if(t.selectedIndex===n){r=!0;break}a=n;break;case"Home":if(0===t.selectedIndex){r=!0;break}a=0;break;case"Enter":case" ":if(!t.allowToggle)return;if(t._focusedItem){t.select(t._focusedItem.index);const e=t._focusedItem.tabLabelContainer.closest(".smart-tab-group-drop-down");e&&t._openGroupDropDown(e.groupContainer)}return;case"Escape":return void(t._openDropDown&&t._closeGroupDropDown())}if(t.allowToggle&&t._tabs.length>0){t._focusedItem?t._focusedItem.tabLabelContainer.removeAttribute("focus"):t._focusedItem=t._focusedItem||t._tabs[t.selectedIndex]||t._tabs[0],t._focusedItem=t._tabs[Math.min(Math.max(0,t._focusedItem.index+l),n)],t._focusedItem.tabLabelContainer.setAttribute("focus",""),t.ensureVisible(t._focusedItem.index);const e=t._focusedItem.tabLabelContainer.closest(".smart-tab-group-drop-down");e&&e.groupContainer?(t._openDropDown&&t._openDropDown!==e.dropDown&&t._closeGroupDropDown(),t._openGroupDropDown(e.groupContainer)):t._openDropDown&&t._closeGroupDropDown()}else r||t.select(a)}_labelContainerHandler(e,t,o){const n=this,a="up"===o&&n._downTarget===e;if("down"===o&&(n._downTarget=e,"click"===n.selectionMode&&e!==n._addNewTab))if(Smart.Utilities.Core.isMobile&&null===e.tab.group){const o=n.$.tabStrip[n._orientationSettings.scrollDirection];setTimeout((function(){o===n.$.tabStrip[n._orientationSettings.scrollDirection]&&n._ripple(t,e)&&n._openDropDown&&n._openDropDown.contains(e)&&(n._openDropDown.rippleInProgress=!0)}),100)}else n._ripple(t,e)&&n._openDropDown&&n._openDropDown.contains(e)&&(n._openDropDown.rippleInProgress=!0);if(e===n._addNewTab)return void n._addNewTabHandler(e,o,a);const r=e.tab.index,s=!(n._reordering&&void 0!==n._reorderedIndex);a&&r===n.selectedIndex&&(n._closeGroupDropDown(),s&&null===e.tab.group&&n._toggleCollapsedState()),!n._swiping&&(s&&"click"===n.selectionMode&&a||!n._reordering&&(n.selectionMode===o||"mouseenter"===n.selectionMode&&"mouseover"===o))&&n._select(r,!0),n._reordering||n._swiping||"click"!==n.selectionMode&&"dblclick"!==n.selectionMode||("mouseover"!==o||e.hasAttribute("selected")?"mouseout"===o&&e.removeAttribute("hover"):e.setAttribute("hover","")),n.reorder&&"down"===o&&null===e.tab.group&&n._reorderItems.length>1&&(n._getTabCoordinates(),n._reordering=!0,n.setAttribute("dragged",""),e.hasAttribute("hover")&&(n._draggedHoveredTab=e),0===n._groups.length?n._draggedIndex=e.tab.index:n._draggedIndex=Array.from(n.$.tabStrip.children).indexOf(e))}_labelSizeChangeHandler(e){const t=this,o=e.detail.size;let n;"shrink"!==t.tabLayout&&(n=e.target instanceof Smart.TabItem?e.target.tabLabelContainer:t._groupLabels[t._groups.indexOf(e.target.label)],null!==o?n.style[t._orientationSettings.dimension]=parseInt(o,10)+"px":n.style.removeProperty(t._orientationSettings.dimension),t._applyTabOverflow())}_openGroupDropDown(e){const t=this;e&&(t._openDropDown&&t._openDropDown.$.addClass("smart-hidden"),e.dropDown.$.removeClass("smart-hidden"),t._positionGroupDropDown(e),t._openDropDown=e.dropDown,e.removeAttribute("hover"),e.setAttribute("aria-expanded",!0))}_orderTabs(){const e=this,t=[],o=[];let n=!0,a=!1;if(0===e.getElementsByTagName("smart-tab-items-group").length)for(let r=0;r<e._tabs.length;r++){const s=e._tabs[r],i=s.index;if(n&&null!==i&&(n=!1),-1!==t.indexOf(i||0)&&(a=!0,null!==i))break;t.push(i||0),o.push({tab:s,index:i})}if(!a){const e=t.slice(0).sort((function(e,t){return e-t}));JSON.stringify(t)===JSON.stringify(e)&&(n=!0)}if(n||a){n||e.warn(e.localize("ambiguousIndexes"));for(let t=0;t<e._tabs.length;t++)e._tabs[t]._setIndex(t)}else{o.sort((function(e,t){return e.index-t.index}));for(let t=0;t<o.length;t++){const n=o[t].tab;n._setIndex(t),e.$.tabContentSection.removeChild(n)}for(let t=0;t<o.length;t++){const n=o[t].tab;e.$.tabContentSection.appendChild(n),e._tabs[t]=n}}}_populateTabStrip(){const e=this,t=document.createDocumentFragment(),o=[],n=[],a=[];let r=null;for(let s=0;s<e._tabs.length;s++){const i=e._tabs[s],l=i.parentElement,d=l instanceof Smart.TabItemsGroup?l.label:null;i.group=d;const c=e._addTabLabelContainer(i),b=c.tabLabelContainer,p=c.dropDownLabelContainer;e.selectedIndex===s&&(b.$.addClass("smart-tab-selected"),b.setAttribute("selected",""),r=b),i.tabLabelContainer=b,b.tab=i,o.push(b),e._setAriaRelations(i,b,p),null===d?t.appendChild(b):e._addGroupElements({documentFragment:t,groups:n,groupLabels:a,i:s,group:d,tabLabelContainer:b,smartTabItemsGroup:l}),e.$.dropDownButtonDropDown.appendChild(p)}e.$.tabStrip.appendChild(t),e._tabLabelContainers=o,e._groups=n,e._groupLabels=a,e._positionTabSelectionBar(r,!0)}_setAriaRelations(e,t,o){const n=this.id;e.id||(e.id=n+"TabItem"+e.index),t.id||(t.id=n+"TabLabelContainer"+e.index),t.setAttribute("role","tab"),t.setAttribute("aria-controls",e.id),t.setAttribute("aria-label",e.label),t.setAttribute("aria-selected",e.selected),e.setAttribute("aria-label",e.label),o.setAttribute("role","menuitem"),o.setAttribute("aria-controls",e.id)}_positionTabSelectionBar(e,t){const o=this;if(!e)return;const n=o.tabPosition;let a,r,s,i;if(t&&(o.$.tabSelectionBar.style.transition="none"),e.tab.group&&(e=o._groupLabels[o._groups.indexOf(e.tab.group)]),"top"===n||"bottom"===n){if("wrap"===o.tabLayout?(r=e.offsetTop,"top"===n&&(r+=e.offsetHeight-o.$.tabSelectionBar.offsetHeight),r+="px"):r=null,i=null,o.rightToLeft&&"horizontal"===o.tabTextOrientation)if(Smart.Utilities.Core.Browser.Chrome){const t=o.$.tabStrip;a=-(t.scrollLeft-(t.scrollWidth-t.offsetWidth))+e.offsetLeft+"px"}else a=-o.$.tabStrip.scrollLeft+e.offsetLeft+"px";else a=-o.$.tabStrip.scrollLeft+e.offsetLeft+"px";s=e.offsetWidth+"px"}else"left"!==n&&"right"!==n||("wrap"===o.tabLayout?(a=e.offsetLeft,"left"===n&&(a+=e.offsetWidth-o.$.tabSelectionBar.offsetWidth),a+="px"):a=null,s=null,r=-o.$.tabStrip.scrollTop+e.offsetTop+"px",i=e.offsetHeight+"px");function l(){o.$.tabSelectionBar.style.top=r,o.$.tabSelectionBar.style.height=i,o.$.tabSelectionBar.style.left=a,o.$.tabSelectionBar.style.width=s}Smart.Utilities.Core.isMobile&&o.hasAnimation&&!t?requestAnimationFrame((function(){requestAnimationFrame(l)})):l(),t&&!o._tabPositionChanging&&requestAnimationFrame((()=>o.$.tabSelectionBar.style.transition=null))}_positionGroupDropDown(e){const t=this,o=t.tabPosition,n=e.dropDown,a=window.getComputedStyle(t.$.tabsHeaderSection),r=parseFloat(a[t.rightToLeft?"paddingRight":"paddingLeft"]),s=parseFloat(a.paddingTop);if("top"===o||"bottom"===o){const a=!1;if(t.rightToLeft?n.style.left=e.offsetLeft-t._getScrollLeft()-r-n.offsetWidth+e.offsetWidth+"px":n.style.left=e.offsetLeft-t.$.tabStrip.scrollLeft+r+"px","top"===o)a||(n.style.top=e.offsetTop+e.offsetHeight+s+"px");else{let o=e.getBoundingClientRect().top-t.$.container.getBoundingClientRect().top+s;a&&(o+=t.$.tabStrip.offsetHeight),n.style.top=o+"px"}}else n.style.top=e.offsetTop-t.$.tabStrip.scrollTop+s+"px",n.style.left="left"===o?e.offsetLeft+e.offsetWidth+r+"px":e.getBoundingClientRect().left-t.$.container.getBoundingClientRect().left+r+"px"}_processDataSource(){const e=this,t=e.dataSource;function o(e,t){let n;if(Array.isArray(e.items)&&e.items.length>0){n=document.createElement("smart-tab-items-group");for(let t=0;t<e.items.length;t++)e.items[t].items||o(e.items[t],n)}else n=document.createElement("smart-tab-item"),!0===e.closeButtonHidden&&(n.closeButtonHidden=!0),void 0!==e.content&&(n.innerHTML=e.content),void 0!==e.index&&(n.index=e.index),!0===e.selected&&(n.selected=e.selected);void 0!==e.label&&(n.label=e.label),void 0!==e.labelSize&&(n.labelSize=e.labelSize),t.appendChild(n)}if(e.$.tabContentSection.innerHTML="",null!==t)for(let n=0;n<t.length;n++)o(t[n],e.$.tabContentSection)}_processHTML(){const e=this;e._getTabs(),e._orderTabs(),e._validateInitialSelection(),e._populateTabStrip(),e.addNewTab&&e._insertAddNewTab(),e._getReorderItems(),e._applyTabOverflow(),e.ensureVisible(e.selectedIndex),e.$.hiddenInput.value=e.selectedIndex}_removeInlineStyle(){const e=this,t=e.$.tabStrip;if(e._inlineStyleTabStripChildren){const o=t.children;for(let e=0;e<o.length;e++)o[e].removeAttribute("style"),o[e].firstElementChild.firstElementChild.classList.remove("smart-tab-label-text-container-full-height");delete e._inlineStyleTabStripChildren}e._inlineStyleTabStrip&&(t.removeAttribute("style"),delete e._inlineStyleTabStrip),t.$.removeClass("shrink-tabs"),t.$.removeClass("shrink-tabs-vertical")}_reorderTabs(e,t){function o(e,t,o){const n=e[t];e.splice(t,1),e.splice(o,0,n)}const n=this,a=n.$.tabStrip[n._orientationSettings.scrollDirection];if(0===n._groups.length){const a=n._tabs,r=n._tabLabelContainers,s=e>t?t:t+1;let i;n.selectedIndex===e?n.selectedIndex=t:n.selectedIndex<=t&&n.selectedIndex>e?n.selectedIndex--:n.selectedIndex>=t&&n.selectedIndex<e&&n.selectedIndex++,i=r[s]?r[s]:n.addNewTab?n._addNewTab:null,n.$.tabStrip.insertBefore(r[e],i),n.$.dropDownButtonDropDown.insertBefore(n.$.dropDownButtonDropDown.children[e],n.$.dropDownButtonDropDown.children[s]||null),n.$.tabContentSection.insertBefore(a[e],a[s]||null),o(a,e,t),o(r,e,t),n._updateTabIndexes()}else n._reorderTabsGrouping(e,t);n.$.tabStrip[n._orientationSettings.scrollDirection]=a,n.$.fireEvent("reorder",{index:t,oldIndex:e,newIndex:t,originalIndex:e}),n._reorderedIndex=t,n._positionTabSelectionBar(n._tabLabelContainers[n.selectedIndex],!0),n.$.hiddenInput.value=n.selectedIndex}_reorderTabsGrouping(e,t){const o=this,n=o.$.tabStrip.children,a=o.$.tabContentSection.children,r=e>t?t:t+1,s=o._tabs[o.selectedIndex];o.$.tabStrip.insertBefore(n[e],n[r]||null),o.$.tabContentSection.insertBefore(a[e],a[r]||null),o._groupLabels=Array.from(o.$.tabStrip.getElementsByClassName("smart-tab-group-container")),o._groups=[];for(let e=0;e<o._groupLabels.length;e++)o._groups.push(o._groupLabels[e].group);o._tabs=Array.from(o.$.tabContentSection.getElementsByTagName("smart-tab-item"));const i=document.createDocumentFragment();let l=[];for(let e=0;e<o._tabs.length;e++)i.appendChild(o.$.dropDownButtonDropDown.children[o._tabs[e].index].cloneNode(!0));o.$.dropDownButtonDropDown.innerHTML="",o.$.dropDownButtonDropDown.appendChild(i);for(let e=0;e<o.$.tabStrip.childElementCount;e++){const t=o.$.tabStrip.children[e];t.$.hasClass("smart-tab-label-container")&&t!==o._addNewTab?l.push(t):t.$.hasClass("smart-tab-group-container")&&(l=l.concat(Array.from(t.dropDown.children)))}o._tabLabelContainers=l,o._updateTabIndexes(),s&&(o.selectedIndex=s.index)}_resize(e){const t=this;if(!t._resizing)return;const o=t._orientationSettings,n=e[o.coordinate]-t._resizeFrom,a=t._getCorrespondingCustomElement(t._tabToResize);let r;r=null===a.labelSize?t._tabToResize[o.size]:a.labelSize;const s=Math.max(10,r+n);s!==r&&(a._preventPropertyChangedHandler=!0,a.labelSize=s,t._tabToResize.style[o.dimension]=parseInt(s,10)+"px"),t.$resizeToken.addClass("smart-hidden"),t._applyTabOverflow(),t._resizing=!1,t.removeAttribute("resizing")}_ripple(e,t){if(this.hasRippleAnimation){const o=document.createElement("div");return o.className="ripple-agent",t.firstElementChild.appendChild(o),setTimeout((function(){t.firstElementChild.removeChild(o)}),1e3),Smart.Utilities.Animation.Ripple.animate(o,e.pageX,e.pageY),!0}}_scrollButtonClickHandler(e){const t=this,o=t.$.tabStrip;let n=e.target.closest("smart-repeat-button")===t.$.scrollButtonNear?-1:1;if("paging"===t.scrollMode){const a=t._orientationSettings,r={};return t._dragStartDetails={startX:0,startY:0,pageX:0,pageY:0,startTime:Date.now(),target:e.target},t._wheelInProgress=!0,r[a.coordinate]=-n*(o[a.size]/1.1428571428571428),void t._endSwiping(r,t._dragStartDetails.startTime+175)}t.hasAttribute("horizontal")?o.scrollLeft+=10*n:o.scrollTop+=10*n,t._updateScrollButtonVisibility(!0)}_getScrollLeft(e){const t=this,o=t.$.tabStrip;return void 0===e?t.rightToLeft&&Smart.Utilities.Core.Browser.Chrome?o.scrollLeft-(o.scrollWidth-o.offsetWidth):o.scrollLeft:(!t.rightToLeft||"top"!==t.tabPosition&&"bottom"!==t.tabPosition||(Smart.Utilities.Core.Browser.Chrome?e=o.scrollWidth-o.offsetWidth-e:e*=-1),e)}_select(e,t,o){const n=this,a=n.hasAnimation;void 0===o&&(o=n.selectedIndex);const r=n._tabs[e];if(!r||r.disabled||e===o&&(!n.allowToggle||n.allowToggle&&"mouseenter"===n.selectionMode))n.$.hiddenInput.value=n.selectedIndex;else{if(n._focusedItem&&n._focusedItem.tabLabelContainer.removeAttribute("focus"),null!==o){const t=n._tabs[o];a?n._animateSelection(r,t,e>o):t.$.addClass("smart-visibility-hidden"),t.selected=!1,n._tabLabelContainers[o].$.removeClass("smart-tab-selected"),n._tabLabelContainers[o].removeAttribute("selected"),n.closeButtons&&"selected"===n.closeButtonMode&&n._disableCloseButton(o)}null!==e&&(n._tabLabelContainers[e].removeAttribute("hover"),n.closeButtons&&"selected"===n.closeButtonMode&&n._enableCloseButton(e)),!n.allowToggle||null!==e&&(void 0!==arguments[2]?o:n.selectedIndex)!==e?(r.selected=!0,n.$.tabContentSection.removeAttribute("show-placeholder"),null!==o&&a||r.$.removeClass("smart-visibility-hidden"),n.selectedIndex=e,n._focusedItem=n._tabs[e],n._focusedItem.tabLabelContainer.$.addClass("smart-tab-selected"),n._focusedItem.tabLabelContainer.setAttribute("selected",""),n._positionTabSelectionBar(n._focusedItem.tabLabelContainer,null===o)):(n.selectedIndex=null,n.$.tabContentSection.setAttribute("show-placeholder",""),n.allowToggle&&(n._focusedItem=n._tabs[null===e?o:e],n._focusedItem&&n._focusedItem.tabLabelContainer.setAttribute("focus",""))),t&&(n.$.hiddenInput.value=n.selectedIndex,n.$.fireEvent("change",{index:n.selectedIndex,oldIndex:o})),n._closeGroupDropDown(),r&&null!==r.group?(n._selectedGroup&&n._selectedGroup.$.removeClass("smart-tab-group-selected"),null!==n.selectedIndex&&(n._selectedGroup=n._groupLabels[n._groups.indexOf(r.group)],n._selectedGroup.$.addClass("smart-tab-group-selected"))):n._selectedGroup&&(n._selectedGroup.$.removeClass("smart-tab-group-selected"),delete n._selectedGroup),n.$.hiddenInput.value=n.selectedIndex}}_selectStartHandler(e){(this._reordering||this._resizing)&&e.preventDefault()}_setLabel(e,t,o){const n=e?document.getElementById(e):null;if(null!==n&&"template"===n.tagName.toLowerCase()){const e=document.importNode(n.content,!0);if(t.appendChild(e),o){const e=document.importNode(n.content,!0);o.appendChild(e)}}else""===e&&(e=" "),t.innerHTML=e,o&&(o.innerHTML=e)}_showCloseButton(e){e.closeButtonEnabled&&(e.firstElementChild.children[0].$.addClass("smart-close-button-enabled"),e.firstElementChild.children[1].$.removeClass("smart-hidden"))}_tabContentSectionTransitionendHandler(e){const t=this,o=e.target;o instanceof Smart.TabItem&&(o===t._animatedOldTab?(o.$.addClass("smart-hidden"),o.$.removeClass("animate"),o.$.removeClass(t._animatedOldTab.classToRemove),o.$.removeClass("smart-hidden"),delete t._animatedOldTab):o===t._animatedTab&&(o.$.removeClass("animate"),delete t._animatedTab),o.classList.remove("left"),o.classList.remove("right"),o.classList.remove("top"),o.classList.remove("bottom"))}_tabsHeaderItemsWheelHandler(e){const t=this;if(!t.enableMouseWheelAction||t.disabled)return;const o=t.$.tabStrip,n=t._orientationSettings,a=o[n.size],r=o[n.scrollSize],s=o[n.scrollDirection],i=e.deltaY;if(a===r||0===s&&i<0||s+a===r&&i>0)return;if(e.preventDefault(),t._wheelInProgress)return;t._dragStartDetails={startX:e.pageX,startY:e.pageY,pageX:e.pageX,pageY:e.pageY,startTime:Date.now(),target:e.target},t._wheelInProgress=!0;const l={};l[n.coordinate]=e[n.coordinate]+(e.deltaY>0?-1:1)*n.wheelOffset,t._endSwiping(l,t._dragStartDetails.startTime+100)}_tabStripHandler(e,t){const o=this,n=t.type;if("down"===n&&void 0!==o._tabToResize)return o._resizing=!0,void(o._tabsHeaderSectionCoordinate=o.$.tabsHeaderSection.getBoundingClientRect()[o._orientationSettings.edge]);"down"===n&&Smart.Utilities.Core.isMobile&&(o._dragStartDetails={startX:t.pageX,startY:t.pageY,pageX:t.pageX,pageY:t.pageY,startTime:Date.now(),originalTime:Date.now(),target:t.originalEvent.target});const a=e.closest("smart-repeat-button");if("up"===n&&a)return o.focus(),void(o.resize&&o._getTabCoordinates());if(e.classList.contains("smart-tab-close-button"))if("up"===n){if(e===o._downTarget){const t=e.parentElement.parentElement.tab.index;return void(o.$.fireEvent("closing",{index:t}).defaultPrevented||(o.removeAt(t),o.$.fireEvent("close",{index:t})))}}else{if("down"===n)return void(o._downTarget=e);o._reordering||o._swiping||("mouseover"===n?e.setAttribute("hover",""):"mouseout"===n&&e.removeAttribute("hover"))}const r=e.closest(".smart-tab-label-container");if(null!==r)return void(t.originalEvent&&"pointercancel"===t.originalEvent.type?r.tab.group&&delete r.parentElement.rippleInProgress:o._labelContainerHandler(r,t,n));const s=e.closest(".smart-tab-group-container");null!==s&&o._groupContainerHandler(s,n)}_tabStripMouseleaveHandler(){const e=this;e.resize&&!e._resizing&&e.hasAttribute("resizing")&&e.removeAttribute("resizing")}_tabStripMoveHandler(e){const t=this;if(t._dragStartDetails&&!t._dragStartDetails.checked&&(Date.now()-t._dragStartDetails.originalTime<500?(t._endReordering(void 0,void 0),t._dragStartDetails.checked=!0):delete t._dragStartDetails),t._dragStartDetails&&(Math.abs(t._dragStartDetails.pageX-e.pageX)>=5||Math.abs(t._dragStartDetails.pageY-e.pageY)>=5)){const o=t._orientationSettings,n=t._dragStartDetails[o.coordinate]-e[o.coordinate],a=t.$.tabStrip[o.scrollDirection];return t.$.tabStrip[o.scrollDirection]+=n,a!==t.$.tabStrip[o.scrollDirection]&&t._updateScrollButtonVisibility(),t._dragStartDetails={startX:t._dragStartDetails.startX,startY:t._dragStartDetails.startY,pageX:e.pageX,pageY:e.pageY,startTime:t._dragStartDetails.startTime,originalTime:t._dragStartDetails.originalTime,target:e.originalEvent.target,checked:t._dragStartDetails.checked},void(t._swiping=!0)}if(!t.resize||t._resizing||t._reordering||"shrink"===t.tabLayout)return;const o=t._orientationSettings,n=e[o.coordinate],a=t._tabCoordinates;let r;for(let e=0;e<a.length;e++){const s=a[e][o.to];if(n>=s-4&&n<=s+4){r=t._reorderItems[e],t._resizeFrom=n;break}}void 0!==r?(t._tabToResize=r,t.setAttribute("resizing","")):(t._tabToResize=void 0,t.removeAttribute("resizing"))}_tabStripTouchmoveHandler(e){const t=this;if(t._touchmoveInside&&e.cancelable)return e.preventDefault(),void e.stopPropagation();const o=t.$.tabStrip,n=t._orientationSettings,a=o[n.size],r=o[n.scrollSize],s=t._touchCoords;if(a===r||!s)return;const i=e.touches[0],l=o[n.scrollDirection],d=i[n.coordinate],c=parseFloat(d.toFixed(5)),b=s["pageY"===n.coordinate?1:0],p=parseFloat(b.toFixed(5));t._touchCoords=[i.pageX,i.pageY],0===l&&c>=p||l+a===r&&c<=p||(d!==b&&(t._touchmoveInside=!0),e.cancelable&&(e.preventDefault(),e.stopPropagation()))}_tabStripTouchstartHandler(e){const t=e.touches[0];this._touchCoords=[t.pageX,t.pageY]}_toggleCollapsedState(){const e=this;e.collapsible&&(e.collapsed?e.expand():e.collapse())}_toggleNavigationElementsVisibility(){const e=this,t=e._tabs.length;let o;if(0===t)o="addClass";else{if(1!==t)return;o="removeClass"}"scroll"===e.tabLayout&&"scroll"===e.overflow?(e.$scrollButtonNear[o]("smart-hidden"),e.$scrollButtonFar[o]("smart-hidden")):"dropDown"===e.tabLayout&&e.$dropDownButton[o]("smart-hidden")}_updateIndexes(e){const t=this;null!==t.selectedIndex&&e<=t.selectedIndex&&t.selectedIndex++,t._updateTabIndexes()}_updateScrollButtonVisibility(e){const t=this;if("scroll"!==t.tabLayout||"hidden"===t.overflow)return void t._positionTabSelectionBar(t._tabLabelContainers[t.selectedIndex],e);const o=t.$tabsHeaderSection,n=t.$.tabStrip,a=t._orientationSettings;let r=!0,s=!0;if(t.rightToLeft&&"scrollLeft"===a.scrollDirection){const e=Math.abs(t._getScrollLeft());0===Math.round(e)&&(s=!1),Math.round(n[a.size]+e)>=Math.round(n[a.scrollSize])-1&&(r=!1)}else 0===Math.round(n[a.scrollDirection])&&(r=!1),Math.round(n[a.size]+n[a.scrollDirection])>=Math.round(n[a.scrollSize])-1&&(s=!1);if("auto"===t.overflow){if(r&&s)return t.$scrollButtonNear.removeClass("smart-hidden"),t.$scrollButtonFar.removeClass("smart-hidden"),o.removeClass("one-button-shown"),void(t._tabLabelContainers[t.selectedIndex]&&t._positionTabSelectionBar(t._tabLabelContainers[t.selectedIndex],e));r?t.$scrollButtonNear.removeClass("smart-hidden"):t.$scrollButtonNear.addClass("smart-hidden"),s?t.$scrollButtonFar.removeClass("smart-hidden"):t.$scrollButtonFar.addClass("smart-hidden"),o.addClass("one-button-shown"),t._getTabCoordinates()}else"scroll"!==t.overflow||t.disabled||(t.$.scrollButtonNear.disabled=!r,t.$.scrollButtonFar.disabled=!s);t._tabLabelContainers[t.selectedIndex]&&t._positionTabSelectionBar(t._tabLabelContainers[t.selectedIndex],e)}_updateTabIndexes(){const e=this;if(e._tabs.length>0)for(let t=0;t<e._tabs.length;t++)e._tabs[t]._setIndex(t);else e.selectedIndex=null;e.$.hiddenInput.value=e.selectedIndex}_updateTabLabel(e,t){const o=this,n=e.index,a=o._tabLabelContainers[n].firstElementChild.children[0],r=o.$.dropDownButtonDropDown.children[n];e.set("label",t),a.innerHTML="",r.innerHTML="",o._setLabel(t,a,r),o._applyTabOverflow(),e.setAttribute("aria-label",t),e.tabLabelContainer&&e.tabLabelContainer.setAttribute("aria-label",t)}_validateIndex(e,t){if(isNaN(parseInt(e,10))||"object"==typeof e){const e=this;e.error(e.localize("invalidIndex",{method:t}))}}_validateInitialSelection(){const e=this;let t=e.selectedIndex;for(let o=0;o<e._tabs.length;o++){const n=e._tabs[o];t===o?(n.selected=!0,n.$.removeClass("smart-visibility-hidden")):n.selected?null===t?(t=o,n.$.removeClass("smart-visibility-hidden")):(n.selected=!1,n.$.addClass("smart-visibility-hidden")):n.$.addClass("smart-visibility-hidden")}e._tabs.length>0&&null===t&&!e.allowToggle&&(t=0,e._tabs[0].selected=!0,e._tabs[0].$.removeClass("smart-visibility-hidden")),e.selectedIndex=t,null!==e.selectedIndex&&(e._focusedItem=e._tabs[e.selectedIndex])}});