{"version":3,"sources":["./src/ui/ResponsiveComponents/ResponsiveComponentsUtils.ts","./src/ui/Tab/Tab.ts","./sass/_Tab.scss","./src/ui/ResponsiveComponents/ResponsiveTabs.ts","./sass/_ResponsiveTabs.scss"],"names":[],"mappings":"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","file":"Tab__d2b01b0f173a0c131e66.js","sourcesContent":["import { Dom } from '../../utils/Dom';\nimport { ResponsiveDropdownContent } from './ResponsiveDropdown/ResponsiveDropdownContent';\n\nexport class ResponsiveComponentsUtils {\n  private static smallTabsClassName: string = 'coveo-small-tabs';\n  private static smallFacetClassName: string = 'coveo-small-facets';\n  private static smallRecommendationClassName: string = 'coveo-small-recommendation';\n\n  static shouldDrawFacetSlider(root: Dom, facetSliderElement: Dom): boolean {\n    return ResponsiveDropdownContent.isTargetInsideOpenedDropdown(facetSliderElement) || !this.isSmallFacetActivated(root);\n  }\n\n  static isSmallTabsActivated(root: Dom): boolean {\n    return root.hasClass(this.smallTabsClassName);\n  }\n\n  static isSmallFacetActivated(root: Dom): boolean {\n    return root.hasClass(this.smallFacetClassName);\n  }\n\n  static isSmallRecommendationActivated(root: Dom): boolean {\n    return root.hasClass(this.smallRecommendationClassName);\n  }\n\n  static activateSmallTabs(root: Dom): void {\n    root.addClass(this.smallTabsClassName);\n  }\n\n  static deactivateSmallTabs(root: Dom): void {\n    root.removeClass(this.smallTabsClassName);\n  }\n\n  static activateSmallFacet(root: Dom): void {\n    root.addClass(this.smallFacetClassName);\n  }\n\n  static deactivateSmallFacet(root: Dom): void {\n    root.removeClass(this.smallFacetClassName);\n  }\n\n  static activateSmallRecommendation(root: Dom): void {\n    root.addClass(this.smallRecommendationClassName);\n  }\n\n  static deactivateSmallRecommendation(root: Dom): void {\n    root.removeClass(this.smallRecommendationClassName);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveComponentsUtils.ts","import 'styling/_Tab';\nimport { each, indexOf, map } from 'underscore';\nimport { InitializationEvents } from '../../events/InitializationEvents';\nimport { IBuildingQueryEventArgs, QueryEvents } from '../../events/QueryEvents';\nimport { exportGlobally } from '../../GlobalExports';\nimport { Assert } from '../../misc/Assert';\nimport { IAttributeChangedEventArg, MODEL_EVENTS } from '../../models/Model';\nimport { QueryStateModel, QUERY_STATE_ATTRIBUTES } from '../../models/QueryStateModel';\nimport { SearchEndpoint } from '../../rest/SearchEndpoint';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { $$ } from '../../utils/Dom';\nimport { Utils } from '../../utils/Utils';\nimport { analyticsActionCauseList, IAnalyticsInterfaceChange } from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IQueryExpression } from '../Base/IComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { ResponsiveTabs } from '../ResponsiveComponents/ResponsiveTabs';\nimport { ValidLayout } from '../ResultLayoutSelector/ValidLayout';\n\nexport interface ITabOptions {\n  expression?: IQueryExpression;\n  constant?: boolean;\n  id?: string;\n  icon?: string;\n  caption?: string;\n  sort?: string;\n  layout?: string;\n  endpoint?: SearchEndpoint;\n  enableDuplicateFiltering?: boolean;\n  pipeline?: string;\n  maximumAge?: number;\n  enableResponsiveMode?: boolean;\n  dropdownHeaderLabel?: string;\n}\n\n/**\n * The Tab component renders a widget that allows the end user to select a specific search interface.\n *\n * This component attaches itself to a `div` element. It is in charge of adding an advanced expression to the outgoing\n * query in order to refine the results.\n *\n * The Tab component can also hide and show different parts of the UI. For each individual component in the UI, you can\n * specify whether you wish to include or exclude that component when the user selects a certain Tab (see [Using Components\n * Only on Specific Tabs](https://docs.coveo.com/en/508/javascript-search-framework/using-components-only-on-specific-tabs)).\n *\n * **Setting a New Endpoint for a Tab:**\n *\n * A Tab can use a custom endpoint when performing a query. Of course, you need to make sure that the endpoint exists in\n * the array of Coveo.SearchEndpoint.endpoints (see {@link SearchEndpoint.endpoints}).\n *\n * ```\n * Coveo.SearchEndpoint.endpoints[\"specialEndpoint\"] = new Coveo.SearchEndpoint({\n *     restUri : 'https://somewhere.com/rest/search'\n * })\n *\n * [ ... ]\n *\n * <div class='CoveoTab' data-endpoint='specialEndpoint'></div>\n *\n * ```\n */\nexport class Tab extends Component {\n  static ID = 'Tab';\n\n  static doExport = () => {\n    exportGlobally({\n      Tab: Tab\n    });\n  };\n\n  /**\n   * The options for a Tab\n   * @componentOptions\n   */\n  static options: ITabOptions = {\n    /**\n     * Specifies a unique ID for the Tab.\n     *\n     * Specifying a value for this option is necessary for this component to work.\n     */\n    id: ComponentOptions.buildStringOption({ required: true, section: 'Common Options' }),\n\n    /**\n     * Specifies the caption of the Tab.\n     *\n     * Specifying a value for this option is necessary for this component to work.\n     */\n    caption: ComponentOptions.buildLocalizedStringOption({ required: true, section: 'Common Options' }),\n\n    /**\n     * Specifies an icon to use for the Tab.\n     *\n     * @deprecated This options is mostly kept for legacy reasons. If possible, you should avoid using it.\n     */\n    icon: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies an advanced expression or filter that the Tab should add to any outgoing query.\n     *\n     * **Example:**\n     *\n     * `@objecttype==Message`\n     *\n     * Default value is `undefined` and the Tab applies no additional expression or filter to the query.\n     */\n    expression: ComponentOptions.buildQueryExpressionOption({ section: 'Common Options' }),\n\n    /**\n     * Specifies the {@link SearchEndpoint} to point to when performing queries from within the Tab.\n     *\n     * By default, the Tab uses the \"default\" endpoint.\n     */\n    endpoint: ComponentOptions.buildCustomOption(endpoint => (endpoint != null ? SearchEndpoint.endpoints[endpoint] : null)),\n\n    /**\n     * Specifies the default sort criteria to use when selecting the Tab. A {@link Sort} component with the same\n     * parameter needs to be present in the search interface in order for this option to function properly.\n     *\n     * **Examples:**\n     *\n     * - `data-sort='relevancy'`\n     * - `data-sort='date descending'`\n     *\n     * Default value is `undefined` and the normal {@link Sort} component behavior applies.\n     */\n    sort: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies the default layout to display when the user selects the Tab (see {@link ResultList.options.layout} and\n     * {@link ResultLayout}).\n     *\n     * See the {@link ValidLayout} type for the list of possible values.\n     *\n     * If not specified, it will default to 'list'.\n     *\n     * See also [Result Layouts](https://docs.coveo.com/en/360/).\n     *\n     * Default value is `undefined` and the component selects the first available layout.\n     */\n    layout: ComponentOptions.buildStringOption<ValidLayout>(),\n\n    /**\n     * Specifies whether to include the {@link Tab.options.expression} in the constant part of the query.\n     *\n     * The index specially optimizes the constant part of the query to execute faster. However, you must be careful not\n     * to include dynamic query expressions, otherwise the cache will lose its efficiency.\n     *\n     * Default value is `true`.\n     */\n    constant: ComponentOptions.buildBooleanOption({ defaultValue: true, section: 'Filtering' }),\n\n    /**\n     * Whether to filter out duplicates, so that items resembling one another only appear once in the query results.\n     *\n     * **Notes:**\n     * - Two items must be at least 85% similar to one another to be considered duplicates.\n     * - When a pair of duplicates is found, only the higher-ranked item of the two is kept in the result set.\n     * - Enabling this feature can make the total result count less precise, as only the requested page of query results is submitted to duplicate filtering.\n     * - The default value for this option can be modified through the {@link SearchInterface} component.\n     */\n    enableDuplicateFiltering: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n    /**\n     * Specifies the name of the query pipeline to use for the queries when the Tab is selected.\n     *\n     * You can specify a value for this option if your index is in a Coveo Cloud organization in which pipelines have\n     * been created (see [Adding and Managing Query Pipelines](https://docs.coveo.com/en/1791/)).\n     *\n     * Default value is `undefined`, which means that pipeline selection conditions defined in the Coveo Cloud\n     * organization apply.\n     */\n    pipeline: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies the maximum age (in milliseconds) that cached query results can have to still be usable as results\n     * instead of performing a new query on the index from within the Tab. The cache is located in the Coveo Search API\n     * (which resides between the index and the search interface).\n     *\n     * If cached results that are older than the age you specify in this option are available, a new query will be\n     * performed on the index anyhow.\n     *\n     * On high-volume public web sites, specifying a higher value for this option can greatly improve query response\n     * time at the cost of result freshness.\n     *\n     * **Note:**\n     *\n     * > It is also possible to set a maximum cache age for the entire {@link SearchInterface} rather than for a single\n     * > Tab (see {@link SearchInterface.options.maximumAge}).\n     *\n     * Default value is `undefined` and the Coveo Search API determines the maximum cache age. This is typically\n     * equivalent to 30 minutes (see [maximumAge](https://docs.coveo.com/en/1461/#RestQueryParameters-maximumAge)).\n     */\n    maximumAge: ComponentOptions.buildNumberOption(),\n\n    /**\n     * Specifies whether to enable responsive mode for tabs. Responsive mode makes overflowing tabs disappear, instead\n     * making them available using a dropdown button. Responsive tabs are enabled either when tabs overflow or when the\n     * width of the search interface becomes too small.\n     *\n     * Disabling responsive mode for one Tab also disables it for all tabs. Therefore, you only need to set this option\n     * to `false` on one Tab to disable responsive mode.\n     *\n     * Default value is `true`.\n     *\n     * @availablesince [October 2016 Release (v1.1550.5)](https://docs.coveo.com/en/309/#october-2016-release-v115505)\n     */\n    enableResponsiveMode: ComponentOptions.buildBooleanOption({ defaultValue: true, section: 'ResponsiveOptions' }),\n\n    /**\n     * Specifies the label of the button that allows to show the hidden tabs when in responsive mode.\n     *\n     * If more than one Tab in the search interface specifies a value for this option, then the framework uses the first\n     * occurrence of the option.\n     *\n     * The default value is `\"More\"`.\n     */\n    dropdownHeaderLabel: ComponentOptions.buildLocalizedStringOption({ section: 'ResponsiveOptions' })\n  };\n\n  /**\n   * Creates a new Tab. Binds on buildingQuery event as well as an event on click of the element.\n   * @param element The HTMLElement on which to instantiate the component. Normally a `div`.\n   * @param options The options for the Tab component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(public element: HTMLElement, public options?: ITabOptions, bindings?: IComponentBindings) {\n    super(element, Tab.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(element, Tab, options);\n\n    this.bind.onRootElement(QueryEvents.buildingQuery, (args: IBuildingQueryEventArgs) => this.handleBuildingQuery(args));\n    this.bind.onRootElement(InitializationEvents.afterInitialization, () => this.handleAfterInitialization());\n    this.bind.onQueryState(MODEL_EVENTS.CHANGE_ONE, QUERY_STATE_ATTRIBUTES.T, (args: IAttributeChangedEventArg) =>\n      this.handleQueryStateChanged(args)\n    );\n\n    new AccessibleButton()\n      .withElement(element)\n      .withSelectAction(() => this.select())\n      .withTitle(this.options.caption)\n      .withOwner(this.bind)\n      .build();\n\n    this.render();\n    ResponsiveTabs.init(this.root, this, this.options);\n  }\n\n  /**\n   * Selects the current Tab.\n   *\n   * Also logs the `interfaceChange` event in the usage analytics with the new current {@link Tab.options.id} as metada\n   * and triggers a new query.\n   */\n  public select() {\n    if (!this.disabled) {\n      const state = {\n        t: this.options.id,\n        sort: this.options.sort || QueryStateModel.defaultAttributes.sort\n      } as any;\n\n      if (this.options.layout) {\n        state.layout = this.options.layout;\n      }\n\n      this.queryStateModel.setMultiple(state);\n\n      this.usageAnalytics.logSearchEvent<IAnalyticsInterfaceChange>(analyticsActionCauseList.interfaceChange, {\n        interfaceChangeTo: this.options.id\n      });\n      this.queryController.executeQuery();\n    }\n  }\n\n  /**\n   * Indicates whether the HTMLElement argument is included in the Tab. *Included* elements are shown when the Tab is\n   * selected, whereas *excluded* elements are not.\n   * @param element The HTMLElement to verify.\n   * @returns {boolean} `true` if the HTMLElement is included in the Tab; `false` if it is excluded.\n   */\n  public isElementIncludedInTab(element: HTMLElement): boolean {\n    Assert.exists(element);\n\n    const includedTabs = this.splitListOfTabs(element.getAttribute('data-tab'));\n    const excludedTabs = this.splitListOfTabs(element.getAttribute('data-tab-not'));\n    Assert.check(\n      !(includedTabs.length != 0 && excludedTabs.length != 0),\n      'You cannot both explicitly include and exclude an element from tabs.'\n    );\n\n    return (\n      (includedTabs.length != 0 && indexOf(includedTabs, this.options.id) != -1) ||\n      (excludedTabs.length != 0 && indexOf(excludedTabs, this.options.id) == -1) ||\n      (includedTabs.length == 0 && excludedTabs.length == 0)\n    );\n  }\n\n  private render() {\n    const icon = this.options.icon;\n    if (Utils.isNonEmptyString(icon)) {\n      const iconSpan = $$('span').el;\n      $$(iconSpan).addClass(['coveo-icon', icon]);\n      this.element.insertBefore(iconSpan, this.element.firstChild);\n    }\n\n    const caption = this.options.caption;\n    if (Utils.isNonEmptyString(caption)) {\n      const captionP = document.createElement('p');\n      $$(captionP).text(caption);\n      this.element.appendChild(captionP);\n    }\n  }\n\n  protected handleBuildingQuery(data: IBuildingQueryEventArgs) {\n    Assert.exists(data);\n    if (!this.disabled && this.isSelected()) {\n      data.queryBuilder.tab = this.options.id;\n\n      if (Utils.isNonEmptyString(this.options.expression)) {\n        if (this.options.constant) {\n          data.queryBuilder.constantExpression.add(this.options.expression);\n        } else {\n          data.queryBuilder.advancedExpression.add(this.options.expression);\n        }\n      }\n\n      if (this.options.enableDuplicateFiltering) {\n        data.queryBuilder.enableDuplicateFiltering = true;\n      }\n\n      if (this.options.pipeline != null) {\n        data.queryBuilder.pipeline = this.options.pipeline;\n      }\n\n      if (this.options.maximumAge != null) {\n        data.queryBuilder.maximumAge = this.options.maximumAge;\n      }\n    }\n  }\n\n  private handleQueryStateChanged(data: IAttributeChangedEventArg) {\n    Assert.exists(data);\n    if (!this.disabled && this.isSelected()) {\n      $$(this.element).addClass('coveo-selected');\n      this.queryController.setEndpoint(this.options.endpoint);\n      this.showAndHideAppropriateElements();\n    } else {\n      $$(this.element).removeClass('coveo-selected');\n    }\n  }\n\n  private handleAfterInitialization() {\n    if (this.isSelected() && this.options.layout) {\n      this.queryStateModel.set(QUERY_STATE_ATTRIBUTES.LAYOUT, this.options.layout);\n    }\n  }\n\n  protected isSelected(): boolean {\n    const activeTab = this.queryStateModel.get(QueryStateModel.attributesEnum.t);\n    return activeTab == this.options.id;\n  }\n\n  private showAndHideAppropriateElements() {\n    const showElements = [];\n    const hideElements = [];\n\n    each($$(this.root).findAll('[data-tab],[data-tab-not]'), element => {\n      if (this.isElementIncludedInTab(element)) {\n        this.toggleAllComponentsUnder(element, true);\n        showElements.push(element);\n      } else {\n        this.toggleAllComponentsUnder(element, false);\n        hideElements.push(element);\n      }\n    });\n\n    $$(this.root).one(QueryEvents.querySuccess, () => {\n      each(showElements, elem => $$(elem).removeClass('coveo-tab-disabled'));\n      each(hideElements, elem => $$(elem).addClass('coveo-tab-disabled'));\n    });\n  }\n\n  private splitListOfTabs(value: string): string[] {\n    if (Utils.exists(value)) {\n      return map(value.split(','), tab => Utils.trim(tab));\n    } else {\n      return [];\n    }\n  }\n\n  private toggleAllComponentsUnder(element: HTMLElement, enable: boolean) {\n    Assert.exists(element);\n\n    const togglePossibleComponent = (possibleComponent: HTMLElement) => {\n      const possibleCmp = Component.get(possibleComponent, undefined, true);\n      if (possibleCmp) {\n        if (enable) {\n          possibleCmp.enable();\n        } else {\n          possibleCmp.disable();\n        }\n      }\n    };\n\n    togglePossibleComponent(element);\n    each($$(element).findAll('*'), el => {\n      togglePossibleComponent(el);\n    });\n  }\n\n  public enable() {\n    super.enable();\n    this.element.style.display = '';\n  }\n\n  public disable() {\n    super.disable();\n    this.element.style.display = 'none';\n  }\n}\n\nInitialization.registerAutoCreateComponent(Tab);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Tab/Tab.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_Tab.scss\n// module id = 671\n// module chunks = 28 88","import 'styling/_ResponsiveTabs';\nimport { filter, each, last } from 'underscore';\nimport { InitializationEvents } from '../../events/InitializationEvents';\nimport { Logger } from '../../misc/Logger';\nimport { l } from '../../strings/Strings';\nimport { $$, Dom } from '../../utils/Dom';\nimport { EventsUtils } from '../../utils/EventsUtils';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { Utils } from '../../utils/Utils';\nimport { Component } from '../Base/Component';\nimport { SearchInterface } from '../SearchInterface/SearchInterface';\nimport { Tab } from '../Tab/Tab';\nimport { ResponsiveComponents } from './ResponsiveComponents';\nimport { IResponsiveComponent, IResponsiveComponentOptions, ResponsiveComponentsManager } from './ResponsiveComponentsManager';\nimport { ResponsiveComponentsUtils } from './ResponsiveComponentsUtils';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport Popper from 'popper.js';\nimport { KeyboardUtils, KEYBOARD } from '../../utils/KeyboardUtils';\n\nexport class ResponsiveTabs implements IResponsiveComponent {\n  private static DROPDOWN_HEADER_LABEL_DEFAULT_VALUE = 'More';\n  private static TAB_IN_DROPDOWN_CSS_CLASS = 'coveo-tab-dropdown';\n  private static TAB_IN_DROPDOWN_HEADER_CSS_CLASS = `${ResponsiveTabs.TAB_IN_DROPDOWN_CSS_CLASS}-header`;\n  private static ACTIVE_DROPDOWN_CSS_CLASS = 'coveo-dropdown-header-active';\n  private static logger: Logger;\n  private dropdownHeader: Dom;\n  private dropdownContent: Dom;\n  private tabSection: Dom;\n  private searchInterface: SearchInterface;\n  private dropdownHeaderLabel: string;\n  private initialTabOrder: HTMLElement[];\n\n  private documentClickListener: EventListener;\n  private dropdownClickListener: EventListener;\n  private ignoreNextDocumentClick = false;\n\n  constructor(private coveoRoot: Dom, public ID: string) {\n    this.dropdownHeaderLabel = this.getDropdownHeaderLabel();\n    this.searchInterface = <SearchInterface>Component.get(this.coveoRoot.el, SearchInterface, false);\n    this.dropdownContent = this.buildDropdownContent();\n    this.dropdownHeader = this.buildDropdownHeader();\n    this.bindDropdownContentEvents();\n    this.bindDropdownHeaderEvents();\n    this.tabSection = $$(<HTMLElement>this.coveoRoot.find('.coveo-tab-section'));\n    this.manageTabSwapping();\n    this.bindNukeEvents();\n    this.initialTabOrder = [...this.tabsInTabSection];\n  }\n\n  public static init(root: HTMLElement, component: Component, options: IResponsiveComponentOptions) {\n    this.logger = new Logger('ResponsiveTabs');\n    if (!$$(root).find('.coveo-tab-section')) {\n      this.logger.info('No element with class coveo-tab-section. Responsive tabs cannot be enabled.');\n      return;\n    }\n    ResponsiveComponentsManager.register(ResponsiveTabs, $$(root), Tab.ID, component, options);\n  }\n\n  public handleResizeEvent(): void {\n    if (this.needSmallMode() && !ResponsiveComponentsUtils.isSmallTabsActivated(this.coveoRoot)) {\n      this.changeToSmallMode();\n    } else if (!this.needSmallMode() && ResponsiveComponentsUtils.isSmallTabsActivated(this.coveoRoot)) {\n      this.changeToLargeMode();\n    }\n\n    if (this.shouldAddTabsToDropdown()) {\n      this.addTabsToDropdown();\n    } else if (this.shouldRemoveTabsFromDropdown()) {\n      this.removeTabsFromDropdown();\n    }\n\n    if (this.isDropdownOpen()) {\n      this.positionPopup();\n    }\n  }\n\n  private needSmallMode(): boolean {\n    // Ignore everything if the responsiveMode is not auto.\n    if (!this.searchInterface) {\n      return this.shouldAutoModeResolveToSmall();\n    }\n    switch (this.searchInterface.responsiveComponents.getResponsiveMode()) {\n      case 'small':\n      case 'medium':\n        return true;\n      case 'auto':\n      default:\n        return this.shouldAutoModeResolveToSmall();\n    }\n  }\n\n  private shouldAutoModeResolveToSmall() {\n    const mediumWidth = this.searchInterface\n      ? this.searchInterface.responsiveComponents.getMediumScreenWidth()\n      : new ResponsiveComponents().getMediumScreenWidth();\n    if (this.coveoRoot.width() <= mediumWidth) {\n      return true;\n    } else if (!ResponsiveComponentsUtils.isSmallTabsActivated(this.coveoRoot)) {\n      return this.isOverflowing(this.tabSection.el);\n    } else {\n      return this.isLargeFormatOverflowing();\n    }\n  }\n\n  private changeToSmallMode(): void {\n    ResponsiveComponentsUtils.activateSmallTabs(this.coveoRoot);\n  }\n\n  private changeToLargeMode(): void {\n    this.emptyDropdown();\n    this.cleanUpDropdown();\n    ResponsiveComponentsUtils.deactivateSmallTabs(this.coveoRoot);\n  }\n\n  private shouldAddTabsToDropdown(): boolean {\n    return (\n      (this.isOverflowing(this.tabSection.el) || this.tabSection.el.clientWidth === 0) &&\n      ResponsiveComponentsUtils.isSmallTabsActivated(this.coveoRoot)\n    );\n  }\n\n  private addTabsToDropdown(): void {\n    let currentTab;\n    if (!this.tabSection.find(`.${ResponsiveTabs.TAB_IN_DROPDOWN_HEADER_CSS_CLASS}`)) {\n      const facetDropdownHeader = this.tabSection.find('.coveo-facet-dropdown-header');\n      if (facetDropdownHeader) {\n        this.dropdownHeader.insertBefore(facetDropdownHeader);\n      } else {\n        this.tabSection.el.appendChild(this.dropdownHeader.el);\n      }\n    }\n    for (let i = this.initialTabOrder.length - 1; i >= 0; i--) {\n      currentTab = this.initialTabOrder[i];\n\n      if (this.tabIsSelected(currentTab) && i > 0) {\n        currentTab = this.initialTabOrder[--i];\n      }\n\n      this.addToDropdownIfNeeded(currentTab);\n\n      if (!this.isOverflowing(this.tabSection.el)) {\n        break;\n      }\n    }\n  }\n\n  private shouldRemoveTabsFromDropdown(): boolean {\n    return (\n      !this.isOverflowing(this.tabSection.el) &&\n      this.tabSection.el.clientWidth !== 0 &&\n      ResponsiveComponentsUtils.isSmallTabsActivated(this.coveoRoot) &&\n      !this.isDropdownEmpty()\n    );\n  }\n\n  private removeTabsFromDropdown() {\n    const dropdownTabs = this.tabsInTabDropdown;\n\n    let current: HTMLElement;\n    while (!this.isOverflowing(this.tabSection.el) && !this.isDropdownEmpty()) {\n      current = dropdownTabs.shift();\n      this.removeFromDropdownIfNeeded(current);\n      this.fromDropdownToTabSection($$(current));\n    }\n\n    if (this.isOverflowing(this.tabSection.el)) {\n      const unselectedTabs = filter(this.tabsInTabSection, tab => !this.tabIsSelected(tab));\n      this.addToDropdownIfNeeded(unselectedTabs.pop());\n    }\n\n    if (this.isDropdownEmpty()) {\n      this.cleanUpDropdown();\n    }\n  }\n\n  private emptyDropdown(): void {\n    if (!this.isDropdownEmpty()) {\n      const dropdownTabs = this.tabsInTabDropdown;\n      while (!this.isDropdownEmpty()) {\n        const current = dropdownTabs.shift();\n        this.removeFromDropdownIfNeeded(current);\n      }\n      this.initialTabOrder.forEach(tab => this.tabSection.append(tab));\n    }\n  }\n\n  private isLargeFormatOverflowing(): boolean {\n    const virtualTabSection = $$(<HTMLElement>this.tabSection.el.cloneNode(true));\n\n    const dropdownHeader = virtualTabSection.find(`.${ResponsiveTabs.TAB_IN_DROPDOWN_HEADER_CSS_CLASS}`);\n    if (dropdownHeader) {\n      virtualTabSection.el.removeChild(dropdownHeader);\n    }\n\n    virtualTabSection.el.style.position = 'absolute';\n    virtualTabSection.el.style.visibility = 'hidden';\n\n    if (!this.isDropdownEmpty()) {\n      each(this.dropdownContent.findAll('.CoveoTab'), tab => {\n        virtualTabSection.el.appendChild(tab.cloneNode(true));\n      });\n    }\n    virtualTabSection.insertBefore(this.tabSection.el);\n\n    ResponsiveComponentsUtils.deactivateSmallTabs(this.coveoRoot);\n    const isOverflowing = this.isOverflowing(this.tabSection.el) || this.isOverflowing(virtualTabSection.el);\n    ResponsiveComponentsUtils.activateSmallTabs(this.coveoRoot);\n\n    virtualTabSection.detach();\n    return isOverflowing;\n  }\n\n  private isOverflowing(el: HTMLElement) {\n    return el.clientWidth < el.scrollWidth;\n  }\n\n  private buildDropdownHeader(): Dom {\n    const dropdownHeader = $$('a', { className: `coveo-dropdown-header ${ResponsiveTabs.TAB_IN_DROPDOWN_HEADER_CSS_CLASS}` });\n    const content = $$('p');\n    content.text(this.dropdownHeaderLabel);\n    const icon = $$('span', { className: 'coveo-more-tabs' }, SVGIcons.icons.arrowDown);\n    SVGDom.addClassToSVGInContainer(icon.el, 'coveo-more-tabs-svg');\n    content.el.appendChild(icon.el);\n    dropdownHeader.el.appendChild(content.el);\n    return dropdownHeader;\n  }\n\n  private bindDropdownHeaderEvents() {\n    const toggle = (event: Event) => {\n      if (this.isDropdownOpen()) {\n        this.closeDropdown();\n      } else {\n        this.openDropdown();\n      }\n\n      if (event.type === 'click') {\n        this.ignoreNextDocumentClick = true;\n      }\n    };\n    new AccessibleButton()\n      .withElement(this.dropdownHeader)\n      .withSelectAction(toggle)\n      .withLabel(this.getDropdownHeaderLabel())\n      .build();\n  }\n\n  private buildDropdownContent() {\n    const dropdownContent = $$('div', {\n      className: 'coveo-tab-list-container ' + SearchInterface.SMALL_INTERFACE_CLASS_NAME\n    });\n    const contentList = $$('ol', { className: 'coveo-tab-list' });\n    dropdownContent.el.appendChild(contentList.el);\n    return dropdownContent;\n  }\n\n  private bindDropdownContentEvents() {\n    this.dropdownClickListener = () => {\n      if (this.isDropdownOpen()) {\n        this.ignoreNextDocumentClick = true;\n      }\n    };\n\n    this.documentClickListener = event => {\n      if (!this.ignoreNextDocumentClick) {\n        this.closeDropdown();\n      }\n      this.ignoreNextDocumentClick = false;\n    };\n    $$(this.dropdownHeader).on('click', this.dropdownClickListener);\n    $$(this.dropdownContent).on('click', this.dropdownClickListener);\n  }\n\n  private isDropdownOpen(): boolean {\n    return this.dropdownHeader.hasClass(ResponsiveTabs.ACTIVE_DROPDOWN_CSS_CLASS);\n  }\n\n  private closeDropdown(): void {\n    $$(document.documentElement).off('click', this.documentClickListener);\n    this.dropdownContent.detach();\n    this.dropdownHeader.removeClass(ResponsiveTabs.ACTIVE_DROPDOWN_CSS_CLASS);\n  }\n\n  private openDropdown(): void {\n    $$(document.documentElement).on('click', this.documentClickListener);\n    this.positionPopup();\n    this.dropdownHeader.addClass(ResponsiveTabs.ACTIVE_DROPDOWN_CSS_CLASS);\n  }\n\n  private addToDropdownIfNeeded(tab: HTMLElement) {\n    if (!this.canAddTabToDropdown(tab)) {\n      return;\n    }\n\n    $$(tab).addClass(ResponsiveTabs.TAB_IN_DROPDOWN_CSS_CLASS);\n    const list = $$(this.dropdownContent.find('ol'));\n    const listElement = $$('li', null, tab);\n    list.prepend(listElement.el);\n  }\n\n  private removeFromDropdownIfNeeded(tab: HTMLElement) {\n    if (!this.canRemoveTabFromDropdown(tab)) {\n      return;\n    }\n\n    $$(tab as HTMLElement).removeClass(ResponsiveTabs.TAB_IN_DROPDOWN_CSS_CLASS);\n    $$(tab.parentElement).detach();\n  }\n\n  private canAddTabToDropdown(tab: HTMLElement) {\n    return tab && !this.tabIsInDropdown(tab) && this.dropdownHeader;\n  }\n\n  private canRemoveTabFromDropdown(tab: HTMLElement) {\n    return tab && this.tabIsInDropdown(tab) && this.dropdownContent;\n  }\n\n  private cleanUpDropdown() {\n    this.dropdownHeader.removeClass(ResponsiveTabs.ACTIVE_DROPDOWN_CSS_CLASS);\n    this.dropdownHeader.detach();\n    this.dropdownContent.detach();\n  }\n\n  private isDropdownEmpty(): boolean {\n    if (this.dropdownContent) {\n      const tabs = this.dropdownContent.findAll('.CoveoTab');\n      return tabs.length == 0;\n    }\n    return false;\n  }\n\n  private manageTabSwapping() {\n    each(this.coveoRoot.findAll('.' + Component.computeCssClassNameForType(this.ID)), tabElement => {\n      const tab = $$(tabElement);\n      const fadeOutFadeIn = event => {\n        const lastTabInSection = this.tabsInTabSection.pop();\n\n        if (event.propertyName == 'opacity') {\n          if (tab.el.style.opacity == '0') {\n            $$(lastTabInSection).addClass(ResponsiveTabs.TAB_IN_DROPDOWN_CSS_CLASS);\n            tab.replaceWith(lastTabInSection);\n            tab.removeClass(ResponsiveTabs.TAB_IN_DROPDOWN_CSS_CLASS);\n\n            this.fromDropdownToTabSection(tab);\n\n            // Because of the DOM manipulation, sometimes the animation will not trigger. Accessing the computed styles makes sure\n            // the animation will happen.\n            window.getComputedStyle(tab.el).opacity;\n            window.getComputedStyle(lastTabInSection).opacity;\n\n            tab.el.style.opacity = lastTabInSection.style.opacity = '1';\n          } else if (tab.el.style.opacity == '1') {\n            this.closeDropdown();\n            EventsUtils.removePrefixedEvent(tab.el, 'TransitionEnd', fadeOutFadeIn);\n            this.handleResizeEvent();\n          }\n        }\n      };\n\n      const swapOnSelect = () => {\n        if (this.tabIsInDropdown(tab)) {\n          let lastTabInSection = this.tabsInTabSection.pop();\n          if (lastTabInSection) {\n            EventsUtils.addPrefixedEvent(tab.el, 'TransitionEnd', fadeOutFadeIn);\n            tab.el.style.opacity = lastTabInSection.style.opacity = '0';\n          }\n        }\n      };\n\n      tab.on('click', () => swapOnSelect());\n      tab.on('keyup', KeyboardUtils.keypressAction(KEYBOARD.ENTER, swapOnSelect));\n      tab.on('blur', (e: FocusEvent) => {\n        if (e.relatedTarget && !this.tabIsInDropdown(e.relatedTarget as HTMLElement)) {\n          this.closeDropdown();\n        }\n      });\n    });\n  }\n\n  private bindNukeEvents() {\n    $$(this.coveoRoot).on(InitializationEvents.nuke, () => {\n      $$(document.documentElement).off('click', this.documentClickListener);\n    });\n  }\n\n  private positionPopup() {\n    this.dropdownContent.insertAfter(this.dropdownHeader.el);\n\n    new Popper(this.dropdownHeader.el, this.dropdownContent.el, {\n      modifiers: {\n        preventOverflow: {\n          boundariesElement: this.coveoRoot.el\n        }\n      }\n    });\n  }\n\n  private fromDropdownToTabSection(tab: Dom) {\n    const lastTabInTabSection = last(this.tabsInTabSection);\n    if (!lastTabInTabSection) {\n      this.tabSection.prepend(tab.el);\n      return;\n    }\n\n    const comesAfterInitialTabOrder = this.initialTabOrder.indexOf(tab.el) > this.initialTabOrder.indexOf(lastTabInTabSection);\n    if (comesAfterInitialTabOrder) {\n      tab.insertAfter(lastTabInTabSection);\n    } else {\n      tab.insertBefore(lastTabInTabSection);\n    }\n  }\n\n  private getDropdownHeaderLabel() {\n    let dropdownHeaderLabel: string;\n    each($$(this.coveoRoot.find('.coveo-tab-section')).findAll('.' + Component.computeCssClassName(Tab)), tabElement => {\n      const tab = <Tab>Component.get(tabElement, Tab);\n      if (!dropdownHeaderLabel && tab && tab.options.dropdownHeaderLabel) {\n        dropdownHeaderLabel = tab.options.dropdownHeaderLabel;\n      }\n    });\n\n    if (!dropdownHeaderLabel) {\n      dropdownHeaderLabel = l(ResponsiveTabs.DROPDOWN_HEADER_LABEL_DEFAULT_VALUE);\n    }\n\n    return dropdownHeaderLabel;\n  }\n\n  private tabIsSelected(tab: Dom | HTMLElement) {\n    return $$(tab as HTMLElement).hasClass('coveo-selected');\n  }\n\n  private tabIsInDropdown(tab: Dom | HTMLElement) {\n    return $$(tab as HTMLElement).hasClass(ResponsiveTabs.TAB_IN_DROPDOWN_CSS_CLASS);\n  }\n\n  private get tabsInTabSection(): HTMLElement[] {\n    const tabsInSection = [];\n    each(this.tabSection.children(), childElement => {\n      if (Utils.isHtmlElement(childElement)) {\n        const child = $$(childElement);\n        const childHasTabCssClassName = child.hasClass(Component.computeCssClassNameForType(this.ID));\n        if (!this.tabIsInDropdown(child) && childHasTabCssClassName) {\n          tabsInSection.push(child.el);\n        }\n      }\n    });\n    return tabsInSection;\n  }\n\n  private get tabsInTabDropdown(): HTMLElement[] {\n    if (!this.dropdownContent) {\n      return [];\n    }\n    return this.dropdownContent.findAll(`.${ResponsiveTabs.TAB_IN_DROPDOWN_CSS_CLASS}`);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveTabs.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_ResponsiveTabs.scss\n// module id = 673\n// module chunks = 28 88"],"sourceRoot":""}