{"version":3,"sources":["./src/utils/SVGDom.ts","./src/ui/ResultLayoutSelector/ResultLayoutSelector.ts","./src/utils/AccessibleButton.ts","./sass/_AccessibleButton.scss","./sass/_ResultLayoutSelector.scss","./src/ui/ResponsiveComponents/ResponsiveResultLayout.ts","./src/ui/ResponsiveComponents/ResponsiveComponentsManager.ts"],"names":[],"mappings":"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","file":"ResultLayoutSelector__a32fd127c77e29c02637.js","sourcesContent":["import { IStringMap } from '../rest/GenericParam';\nimport * as _ from 'underscore';\n\nexport class SVGDom {\n  public static addClassToSVGInContainer(svgContainer: HTMLElement, classToAdd: string) {\n    const svgElement = svgContainer.querySelector('svg');\n    svgElement.setAttribute('class', `${SVGDom.getClass(svgElement)}${classToAdd}`);\n  }\n\n  public static removeClassFromSVGInContainer(svgContainer: HTMLElement, classToRemove: string) {\n    const svgElement = svgContainer.querySelector('svg');\n    svgElement.setAttribute('class', SVGDom.getClass(svgElement).replace(classToRemove, ''));\n  }\n\n  public static addStyleToSVGInContainer(svgContainer: HTMLElement, styleToAdd: IStringMap<any>) {\n    const svgElement = svgContainer.querySelector('svg');\n    _.each(styleToAdd, (styleValue, styleKey) => {\n      svgElement.style[styleKey] = styleValue;\n    });\n  }\n\n  private static getClass(svgElement: SVGElement) {\n    const className = svgElement.getAttribute('class');\n    return className ? className + ' ' : '';\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/SVGDom.ts","import 'styling/_ResultLayoutSelector';\nimport { contains, difference, each, filter, find, isEmpty, keys, uniq } from 'underscore';\nimport { InitializationEvents } from '../../events/InitializationEvents';\nimport { IQueryErrorEventArgs, IQuerySuccessEventArgs, QueryEvents } from '../../events/QueryEvents';\nimport { IResultLayoutPopulateArgs, ResultLayoutEvents } from '../../events/ResultLayoutEvents';\nimport { IChangeLayoutEventArgs, ResultListEvents } from '../../events/ResultListEvents';\nimport { Assert } from '../../misc/Assert';\nimport { IAttributesChangedEventArg, MODEL_EVENTS } from '../../models/Model';\nimport { QueryStateModel, QUERY_STATE_ATTRIBUTES } from '../../models/QueryStateModel';\nimport { IQueryResults } from '../../rest/QueryResults';\nimport { exportGlobally } from '../../GlobalExports';\nimport { l } from '../../strings/Strings';\nimport { $$ } from '../../utils/Dom';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { Utils } from '../../utils/Utils';\nimport { analyticsActionCauseList, IAnalyticsResultsLayoutChange } from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { ResponsiveResultLayout } from '../ResponsiveComponents/ResponsiveResultLayout';\nimport { ValidLayout } from './ValidLayout';\nimport ResultListModule = require('../ResultList/ResultList');\nimport { AccessibleButton } from '../../utils/AccessibleButton';\n\nexport interface IActiveLayouts {\n  button: {\n    el: HTMLElement;\n    visible: boolean;\n  };\n  enabled: boolean;\n}\n\nexport interface IResultLayoutOptions {\n  mobileLayouts: string[];\n  tabletLayouts: string[];\n  desktopLayouts: string[];\n}\n\nexport const defaultLayout: ValidLayout = 'list';\n\n/**\n * The ResultLayoutSelector component allows the end user to switch between multiple {@link ResultList} components that have\n * different {@link ResultList.options.layout} values.\n *\n * This component automatically populates itself with buttons to switch between the ResultList components that have a\n * valid layout value (see the {@link ValidLayout} type).\n *\n * See also the [Result Layouts](https://developers.coveo.com/x/yQUvAg) documentation.\n */\nexport class ResultLayoutSelector extends Component {\n  static ID = 'ResultLayoutSelector';\n  static aliases = ['ResultLayout'];\n\n  static doExport = () => {\n    exportGlobally({\n      ResultLayoutSelector: ResultLayoutSelector,\n      ResultLayout: ResultLayoutSelector\n    });\n  };\n\n  public static validLayouts: ValidLayout[] = ['list', 'card', 'table'];\n\n  public currentLayout: string;\n\n  private currentActiveLayouts: { [key: string]: IActiveLayouts };\n\n  private resultLayoutSection: HTMLElement;\n  private hasNoResults: boolean;\n\n  static options: IResultLayoutOptions = {\n    /**\n     * Specifies the layouts that should be available when the search page is displayed in mobile mode.\n     *\n     * By default, the mobile mode breakpoint is at 480 px screen width.\n     *\n     * To change this default value, use the [responsiveSmallBreakpoint]{@link SearchInterface.options.responsiveSmallBreakpoint} option.\n     *\n     * When the breakpoint is reached, layouts that are not specified becomes inactive and the linked result list will be disabled.\n     *\n     * The possible values for layouts are `list`, `card`, `table`.\n     *\n     * The default value is `card`, `table`.\n     */\n    mobileLayouts: ComponentOptions.buildListOption<ValidLayout>({ defaultValue: ['card', 'table'] }),\n    /**\n     * Specifies the layouts that should be available when the search page is displayed in tablet mode.\n     *\n     * By default, the tablet mode breakpoint is at 800 px screen width.\n     *\n     * To change this default value, use the [responsiveMediumBreakpoint]{@link SearchInterface.options.responsiveMediumBreakpoint} option.\n     *\n     *  When the breakpoint is reached, layouts that are not specified becomes inactive and the linked result list will be disabled.\n     *\n     * The possible values for layouts are `list`, `card`, `table`.\n     *\n     * The default value is `list`, `card`, `table`.\n     */\n    tabletLayouts: ComponentOptions.buildListOption<ValidLayout>({ defaultValue: ['list', 'card', 'table'] }),\n    /**\n     * Specifies the layouts that should be available when the search page is displayed in desktop mode.\n     *\n     * By default, the desktop mode breakpoint is any screen size over 800 px.\n     *\n     * To change this default value, use the [responsiveMediumBreakpoint]{@link SearchInterface.options.responsiveMediumBreakpoint} option.\n     *\n     *  When the breakpoint is reached, layouts that are not specified becomes inactive and the linked result list will be disabled.\n     *\n     * The possible values for layouts are `list`, `card`, `table`.\n     *\n     * The default value is `list`, `card`, `table`.\n     */\n    desktopLayouts: ComponentOptions.buildListOption<ValidLayout>({ defaultValue: ['list', 'card', 'table'] })\n  };\n\n  /**\n   * Creates a new ResultLayoutSelector component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the ResultLayout 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?: IResultLayoutOptions, bindings?: IComponentBindings) {\n    super(element, ResultLayoutSelector.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, ResultLayoutSelector, options);\n\n    this.currentActiveLayouts = {};\n\n    this.bind.onQueryState(MODEL_EVENTS.CHANGE_ONE, QUERY_STATE_ATTRIBUTES.LAYOUT, this.handleQueryStateChanged.bind(this));\n    this.bind.onRootElement(QueryEvents.querySuccess, (args: IQuerySuccessEventArgs) => this.handleQuerySuccess(args));\n    this.bind.onRootElement(QueryEvents.queryError, (args: IQueryErrorEventArgs) => this.handleQueryError(args));\n\n    this.resultLayoutSection = $$(this.element).closest('.coveo-result-layout-section');\n\n    this.bind.oneRootElement(InitializationEvents.afterComponentsInitialization, () => this.populate());\n    this.bind.oneRootElement(InitializationEvents.afterInitialization, () => this.handleQueryStateChanged());\n\n    ResponsiveResultLayout.init(this.root, this, {});\n  }\n\n  public get activeLayouts(): { [key: string]: IActiveLayouts } {\n    return this.currentActiveLayouts;\n  }\n\n  /**\n   * Changes the current layout.\n   *\n   * Also logs a `resultLayoutChange` event in the usage analytics with the new layout as metadeta.\n   *\n   * Triggers a new query.\n   *\n   * @param layout The new layout. The page must contain a valid {@link ResultList} component with a matching\n   * {@link ResultList.options.layout} value for this method to work.\n   */\n  public changeLayout(layout: ValidLayout) {\n    Assert.check(this.isLayoutDisplayedByButton(layout), 'Layout not available or invalid');\n\n    if (layout !== this.currentLayout || this.getModelValue() === '') {\n      this.setModelValue(layout);\n      const lastResults = this.queryController.getLastResults();\n      this.setLayout(layout, lastResults);\n      if (lastResults) {\n        this.usageAnalytics.logCustomEvent<IAnalyticsResultsLayoutChange>(\n          analyticsActionCauseList.resultsLayoutChange,\n          {\n            resultsLayoutChangeTo: layout\n          },\n          this.element\n        );\n      } else {\n        this.usageAnalytics.logSearchEvent<IAnalyticsResultsLayoutChange>(analyticsActionCauseList.resultsLayoutChange, {\n          resultsLayoutChangeTo: layout\n        });\n        if (!this.queryController.firstQuery) {\n          this.queryController.executeQuery();\n        }\n      }\n    }\n  }\n\n  /**\n   * Gets the current layout (`list`, `card` or `table`).\n   * @returns {string} The current current layout.\n   */\n  public getCurrentLayout() {\n    return this.currentLayout;\n  }\n\n  public disableLayouts(layouts: ValidLayout[]) {\n    if (Utils.isNonEmptyArray(layouts)) {\n      each(layouts, layout => this.disableLayout(layout));\n\n      let remainingValidLayouts = difference(keys(this.currentActiveLayouts), layouts);\n      if (!isEmpty(remainingValidLayouts)) {\n        const newLayout = contains(remainingValidLayouts, this.currentLayout) ? this.currentLayout : remainingValidLayouts[0];\n        this.changeLayout(<ValidLayout>newLayout);\n      } else {\n        this.logger.error('Cannot disable the last valid layout ... Re-enabling the first one possible');\n        let firstPossibleValidLayout = <ValidLayout>keys(this.currentActiveLayouts)[0];\n        this.enableLayout(firstPossibleValidLayout);\n        this.setLayout(firstPossibleValidLayout);\n      }\n    }\n  }\n\n  public enableLayouts(layouts: ValidLayout[]) {\n    each(layouts, layout => {\n      this.enableLayout(layout);\n    });\n  }\n\n  private disableLayout(layout: ValidLayout) {\n    if (this.isLayoutDisplayedByButton(layout)) {\n      this.hideButton(layout);\n    }\n  }\n\n  private enableLayout(layout: ValidLayout) {\n    const allResultLists = this.resultLists;\n    const atLeastOneResultListCanShowLayout = find(allResultLists, resultList => resultList.options.layout == layout);\n    if (atLeastOneResultListCanShowLayout && this.isLayoutDisplayedByButton(layout)) {\n      this.showButton(layout);\n      this.updateSelectorAppearance();\n    }\n  }\n\n  private get resultLists(): ResultListModule.ResultList[] {\n    return this.searchInterface.getComponents('ResultList');\n  }\n\n  private hideButton(layout: ValidLayout) {\n    if (this.isLayoutDisplayedByButton(layout)) {\n      let btn = this.currentActiveLayouts[<string>layout].button;\n      $$(btn.el).addClass('coveo-hidden');\n      btn.visible = false;\n      this.updateSelectorAppearance();\n    }\n  }\n\n  private showButton(layout: ValidLayout) {\n    if (this.isLayoutDisplayedByButton(layout)) {\n      let btn = this.currentActiveLayouts[<string>layout].button;\n      $$(btn.el).removeClass('coveo-hidden');\n      btn.visible = true;\n    }\n  }\n\n  private setLayout(layout: ValidLayout, results?: IQueryResults) {\n    if (layout) {\n      if (this.currentLayout) {\n        $$(this.currentActiveLayouts[this.currentLayout].button.el).removeClass('coveo-selected');\n      }\n      $$(this.currentActiveLayouts[layout].button.el).addClass('coveo-selected');\n      this.currentLayout = layout;\n      $$(this.element).trigger(ResultListEvents.changeLayout, <IChangeLayoutEventArgs>{\n        layout: layout,\n        results: results\n      });\n    }\n  }\n\n  private handleQuerySuccess(args: IQuerySuccessEventArgs) {\n    this.hasNoResults = args.results.results.length == 0;\n    if (this.shouldShowSelector()) {\n      this.show();\n    } else {\n      this.hide();\n    }\n  }\n\n  private handleQueryStateChanged(args?: IAttributesChangedEventArg) {\n    const modelLayout = this.getModelValue();\n    const newLayout = find(keys(this.currentActiveLayouts), l => l === modelLayout);\n    if (newLayout !== undefined) {\n      this.setLayout(<ValidLayout>newLayout);\n    } else {\n      this.setLayout(<ValidLayout>keys(this.currentActiveLayouts)[0]);\n    }\n  }\n\n  private handleQueryError(args: IQueryErrorEventArgs) {\n    this.hasNoResults = true;\n    this.hide();\n  }\n\n  private updateSelectorAppearance() {\n    if (this.shouldShowSelector()) {\n      this.show();\n    } else {\n      this.hide();\n    }\n  }\n\n  private populate() {\n    let populateArgs: IResultLayoutPopulateArgs = { layouts: [] };\n    $$(this.root).trigger(ResultLayoutEvents.populateResultLayout, populateArgs);\n    const layouts = uniq(populateArgs.layouts.map(layout => layout.toLowerCase()));\n\n    each(layouts, layout => Assert.check(contains(ResultLayoutSelector.validLayouts, layout), 'Invalid layout'));\n    if (!isEmpty(layouts)) {\n      each(layouts, layout => this.addButton(layout));\n      if (!this.shouldShowSelector()) {\n        this.hide();\n      }\n    }\n  }\n\n  private addButton(layout: string) {\n    const btn = $$('span', {\n      className: 'coveo-result-layout-selector'\n    });\n    const caption = $$('span', { className: 'coveo-result-layout-selector-caption' }, l(layout));\n    btn.append(caption.el);\n\n    const icon = $$('span', { className: `coveo-icon coveo-${layout}-layout-icon` }, SVGIcons.icons[`${layout}Layout`]);\n    SVGDom.addClassToSVGInContainer(icon.el, `coveo-${layout}-svg`);\n    btn.prepend(icon.el);\n\n    const selectAction = () => this.changeLayout(<ValidLayout>layout);\n\n    new AccessibleButton()\n      .withElement(btn)\n      .withLabel(l('DisplayResultsAs', l(layout)))\n      .withSelectAction(selectAction)\n      .withOwner(this.bind)\n      .build();\n\n    if (layout === this.currentLayout) {\n      btn.addClass('coveo-selected');\n    }\n\n    $$(this.element).append(btn.el);\n    this.currentActiveLayouts[layout] = {\n      button: {\n        visible: true,\n        el: btn.el\n      },\n      enabled: true\n    };\n  }\n\n  private hide() {\n    const elem = this.resultLayoutSection || this.element;\n    $$(elem).addClass('coveo-result-layout-hidden');\n  }\n\n  private show() {\n    const elem = this.resultLayoutSection || this.element;\n    $$(elem).removeClass('coveo-result-layout-hidden');\n  }\n\n  private getModelValue(): string {\n    return this.queryStateModel.get(QueryStateModel.attributesEnum.layout);\n  }\n\n  private setModelValue(val: string) {\n    this.queryStateModel.set(QueryStateModel.attributesEnum.layout, val);\n  }\n\n  private shouldShowSelector() {\n    return (\n      keys(this.currentActiveLayouts).length > 1 &&\n      filter(this.currentActiveLayouts, (activeLayout: IActiveLayouts) => activeLayout.button.visible).length > 1 &&\n      !this.hasNoResults\n    );\n  }\n\n  private isLayoutDisplayedByButton(layout: ValidLayout) {\n    return contains(keys(this.currentActiveLayouts), layout);\n  }\n}\n\nInitialization.registerAutoCreateComponent(ResultLayoutSelector);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResultLayoutSelector/ResultLayoutSelector.ts","import { Logger } from '../misc/Logger';\nimport { ComponentEvents } from '../ui/Base/Component';\nimport { KEYBOARD, KeyboardUtils } from '../utils/KeyboardUtils';\nimport { $$, Dom } from './Dom';\nimport 'styling/_AccessibleButton';\n\nexport class AccessibleButton {\n  private element: Dom;\n  private label: string;\n  private title: string;\n\n  private clickAction: (e: Event) => void;\n  private enterKeyboardAction: (e: Event) => void;\n  private blurAction: (e: Event) => void;\n  private mouseleaveAction: (e: Event) => void;\n  private focusAction: (e: Event) => void;\n  private mouseenterAction: (e: Event) => void;\n\n  private logger: Logger;\n  private eventOwner: ComponentEvents;\n\n  public constructor() {\n    this.logger = new Logger(this);\n  }\n\n  public withOwner(owner: ComponentEvents) {\n    this.eventOwner = owner;\n    return this;\n  }\n\n  public withElement(element: Dom | HTMLElement) {\n    if (element instanceof HTMLElement) {\n      this.element = $$(element);\n    } else {\n      this.element = element;\n    }\n    return this;\n  }\n\n  public withLabel(label: string) {\n    this.label = label;\n    return this;\n  }\n\n  public withTitle(title: string) {\n    this.title = title;\n    return this;\n  }\n\n  public withSelectAction(action: (e: Event) => void) {\n    this.clickAction = action;\n    this.enterKeyboardAction = action;\n    return this;\n  }\n\n  public withClickAction(clickAction: (e: Event) => void) {\n    this.clickAction = clickAction;\n    return this;\n  }\n\n  public withEnterKeyboardAction(enterAction: (e: Event) => void) {\n    this.enterKeyboardAction = enterAction;\n    return this;\n  }\n\n  public withFocusAndMouseEnterAction(action: (e: Event) => void) {\n    this.focusAction = action;\n    this.mouseenterAction = action;\n    return this;\n  }\n\n  public withFocusAction(action: (e: Event) => void) {\n    this.focusAction = action;\n    return this;\n  }\n\n  public withMouseEnterAction(action: (e: Event) => void) {\n    this.mouseenterAction = action;\n    return this;\n  }\n\n  public withBlurAndMouseLeaveAction(action: (e: Event) => void) {\n    this.mouseleaveAction = action;\n    this.blurAction = action;\n    return this;\n  }\n\n  public withMouseLeaveAction(action: (e: Event) => void) {\n    this.mouseleaveAction = action;\n    return this;\n  }\n\n  public withBlurAction(action: (e: Event) => void) {\n    this.blurAction = action;\n    return this;\n  }\n\n  public build() {\n    if (!this.element) {\n      this.element = $$('div');\n    }\n\n    this.ensureCorrectRole();\n    this.ensureCorrectLabel();\n    this.ensureTitle();\n    this.ensureSelectAction();\n    this.ensureUnselectAction();\n    this.ensureMouseenterAndFocusAction();\n    this.ensureMouseleaveAndBlurAction();\n    this.ensureDifferentiationBetweenKeyboardAndMouseFocus();\n\n    return this;\n  }\n\n  private ensureDifferentiationBetweenKeyboardAndMouseFocus() {\n    const classOnPress = 'coveo-accessible-button-pressed';\n    const classOnFocus = 'coveo-accessible-button-focused';\n    $$(this.element).addClass('coveo-accessible-button');\n\n    $$(this.element).on('mousedown', () => {\n      $$(this.element).addClass(classOnPress);\n      $$(this.element).removeClass(classOnFocus);\n    });\n\n    $$(this.element).on('mouseup', () => $$(this.element).removeClass(classOnPress));\n    $$(this.element).on('focus', () => {\n      if (!$$(this.element).hasClass(classOnPress)) {\n        $$(this.element).addClass(classOnFocus);\n      }\n    });\n\n    $$(this.element).on('blur', () => $$(this.element).removeClass(classOnFocus));\n  }\n\n  private ensureCorrectRole() {\n    if (!this.element.getAttribute('role')) {\n      this.element.setAttribute('role', 'button');\n    }\n  }\n\n  private ensureCorrectLabel() {\n    if (!this.label) {\n      this.logger.error(`Missing label to create an accessible button !`);\n      return;\n    }\n    this.element.setAttribute('aria-label', this.label);\n  }\n\n  private ensureTitle() {\n    this.title && this.element.setAttribute('title', this.title);\n  }\n\n  private ensureTabIndex() {\n    this.element.setAttribute('tabindex', '0');\n  }\n\n  private ensureSelectAction() {\n    if (this.enterKeyboardAction) {\n      this.ensureTabIndex();\n      this.bindEvent('keyup', KeyboardUtils.keypressAction(KEYBOARD.ENTER, (e: Event) => this.enterKeyboardAction(e)));\n    }\n\n    if (this.clickAction) {\n      this.bindEvent('click', this.clickAction);\n    }\n  }\n\n  private ensureUnselectAction() {\n    if (this.blurAction) {\n      this.bindEvent('blur', this.blurAction);\n    }\n\n    if (this.mouseleaveAction) {\n      this.bindEvent('mouseleave', this.mouseleaveAction);\n    }\n  }\n\n  private ensureMouseenterAndFocusAction() {\n    if (this.mouseenterAction) {\n      this.bindEvent('mouseenter', this.mouseenterAction);\n    }\n    if (this.focusAction) {\n      this.bindEvent('focus', this.focusAction);\n    }\n  }\n\n  private ensureMouseleaveAndBlurAction() {\n    if (this.mouseleaveAction) {\n      this.bindEvent('mouseleave', this.mouseleaveAction);\n    }\n    if (this.blurAction) {\n      this.bindEvent('blur', this.blurAction);\n    }\n  }\n\n  private bindEvent(event: string, action: (...args: any[]) => void) {\n    if (this.eventOwner) {\n      this.eventOwner.on(this.element, event, action);\n    } else {\n      $$(this.element).on(event, action);\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/AccessibleButton.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_AccessibleButton.scss\n// module id = 372\n// module chunks = 0 1 2 3 4 5 6 7 8 9 10 11 12 14 16 17 18 19 20 21 23 24 25 26 27 29 30 31 37 38 39 40 41 77","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_ResultLayoutSelector.scss\n// module id = 487\n// module chunks = 20 77","import { difference, intersection } from 'underscore';\nimport { Logger } from '../../misc/Logger';\nimport { $$, Dom } from '../../utils/Dom';\nimport { Component } from '../Base/Component';\nimport { ResultLayoutSelector } from '../ResultLayoutSelector/ResultLayoutSelector';\nimport { ValidLayout } from '../ResultLayoutSelector/ValidLayout';\nimport { SearchInterface } from '../SearchInterface/SearchInterface';\nimport { IResponsiveComponent, IResponsiveComponentOptions, ResponsiveComponentsManager } from './ResponsiveComponentsManager';\nimport { ResponsiveDropdown } from './ResponsiveDropdown/ResponsiveDropdown';\n\nexport class ResponsiveResultLayout implements IResponsiveComponent {\n  private searchInterface: SearchInterface;\n  private resultLayout: ResultLayoutSelector;\n\n  public static init(root: HTMLElement, component: ResultLayoutSelector, options: IResponsiveComponentOptions) {\n    if (!$$(root).find(`.${Component.computeCssClassName(ResultLayoutSelector)}`)) {\n      let logger = new Logger('ResponsiveResultLayout');\n      logger.trace('No ResultLayout component found : Cannot instantiate ResponsiveResultLayout');\n      return;\n    }\n    ResponsiveComponentsManager.register(ResponsiveResultLayout, $$(root), ResultLayoutSelector.ID, component, options);\n  }\n\n  constructor(public coveoRoot: Dom, public ID: string, options: IResponsiveComponentOptions, responsiveDropdown?: ResponsiveDropdown) {\n    this.searchInterface = <SearchInterface>Component.get(this.coveoRoot.el, SearchInterface, false);\n  }\n\n  public registerComponent(accept: Component) {\n    if (accept instanceof ResultLayoutSelector) {\n      this.resultLayout = accept;\n      return true;\n    }\n    return false;\n  }\n\n  public handleResizeEvent() {\n    if (this.needSmallMode()) {\n      this.enableAndDisableLayouts(<ValidLayout[]>this.resultLayout.options.mobileLayouts);\n    } else if (this.needMediumMode()) {\n      this.enableAndDisableLayouts(<ValidLayout[]>this.resultLayout.options.tabletLayouts);\n    } else {\n      this.enableAndDisableLayouts(<ValidLayout[]>this.resultLayout.options.desktopLayouts);\n    }\n  }\n\n  private enableAndDisableLayouts(validLayouts: ValidLayout[]) {\n    const layoutsToDisable = difference<any>(ResultLayoutSelector.validLayouts, validLayouts);\n    const layoutsToEnable = intersection<any>(ResultLayoutSelector.validLayouts, validLayouts);\n    this.resultLayout.disableLayouts(layoutsToDisable);\n    this.resultLayout.enableLayouts(layoutsToEnable);\n  }\n\n  private needSmallMode(): boolean {\n    switch (this.searchInterface.responsiveComponents.getResponsiveMode()) {\n      case 'small':\n        return true;\n      case 'auto':\n        return this.coveoRoot.width() <= this.searchInterface.responsiveComponents.getSmallScreenWidth();\n      default:\n        return false;\n    }\n  }\n\n  private needMediumMode(): boolean {\n    switch (this.searchInterface.responsiveComponents.getResponsiveMode()) {\n      case 'medium':\n        return true;\n      case 'auto':\n        return this.coveoRoot.width() <= this.searchInterface.responsiveComponents.getMediumScreenWidth();\n      default:\n        return false;\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveResultLayout.ts","import { $$, Dom } from '../../utils/Dom';\nimport { InitializationEvents } from '../../events/InitializationEvents';\nimport { Component } from '../Base/Component';\nimport { SearchInterface } from '../SearchInterface/SearchInterface';\nimport { Utils } from '../../utils/Utils';\nimport * as _ from 'underscore';\nimport { QueryEvents } from '../../events/QueryEvents';\nimport { Logger } from '../../misc/Logger';\nimport { DeviceUtils } from '../../utils/DeviceUtils';\nimport { debounce } from 'underscore';\n\nexport interface IResponsiveComponentOptions {\n  enableResponsiveMode?: boolean;\n  responsiveBreakpoint?: number;\n  dropdownHeaderLabel?: string;\n  initializationEventRoot?: Dom;\n}\n\nexport interface IResponsiveComponentConstructor {\n  new (root: Dom, ID: string, options: IResponsiveComponentOptions): IResponsiveComponent;\n}\n\nexport interface IResponsiveComponent {\n  ID: string;\n  handleResizeEvent(): void;\n  needDropdownWrapper?(): boolean;\n  registerComponent?(accept: Component): boolean;\n}\n\ninterface IComponentInitialization {\n  responsiveComponentsManager: ResponsiveComponentsManager;\n  arguments: [IResponsiveComponentConstructor, Dom, string, Component, IResponsiveComponentOptions];\n}\n\nexport class ResponsiveComponentsManager {\n  public static DROPDOWN_HEADER_WRAPPER_CSS_CLASS = 'coveo-dropdown-header-wrapper';\n\n  private static componentManagers: ResponsiveComponentsManager[] = [];\n  private static remainingComponentInitializations: number = 0;\n  private static componentInitializations: IComponentInitialization[] = [];\n\n  public resizeListener;\n\n  private disabledComponents: string[] = [];\n  private coveoRoot: Dom;\n  private responsiveComponents: IResponsiveComponent[] = [];\n  private searchBoxElement: HTMLElement;\n  private dropdownHeadersWrapper: Dom;\n  private searchInterface: SearchInterface;\n  private logger: Logger;\n\n  // Register takes a class and will instantiate it after framework initialization has completed.\n  public static register(\n    responsiveComponentConstructor: IResponsiveComponentConstructor,\n    root: Dom,\n    ID: string,\n    component: Component,\n    options: IResponsiveComponentOptions\n  ): void {\n    // options.initializationEventRoot can be set in some instance (like recommendation) where the root of the interface triggering the init event\n    // is different from the one that will be used for calculation size.\n    const initEventRoot = options.initializationEventRoot || root;\n    initEventRoot.on(InitializationEvents.afterInitialization, () => {\n      if (this.shouldEnableResponsiveMode(root)) {\n        let responsiveComponentsManager = _.find(this.componentManagers, componentManager => root.el == componentManager.coveoRoot.el);\n        if (!responsiveComponentsManager) {\n          responsiveComponentsManager = new ResponsiveComponentsManager(root);\n          this.componentManagers.push(responsiveComponentsManager);\n        }\n\n        if (!Utils.isNullOrUndefined(options.enableResponsiveMode) && !options.enableResponsiveMode) {\n          responsiveComponentsManager.disableComponent(ID);\n          return;\n        }\n\n        this.componentInitializations.push({\n          responsiveComponentsManager: responsiveComponentsManager,\n          arguments: [responsiveComponentConstructor, root, ID, component, options]\n        });\n      }\n\n      this.remainingComponentInitializations--;\n      if (this.remainingComponentInitializations == 0) {\n        this.instantiateResponsiveComponents(); // necessary to verify if all components are disabled before they are initialized.\n        if (root.width() == 0) {\n          let logger = new Logger('ResponsiveComponentsManager');\n          logger.info(`Search interface width is 0, cannot dispatch resize events to responsive components. Will try again after first\n          query success.`);\n          root.one(QueryEvents.querySuccess, () => {\n            this.resizeAllComponentsManager();\n          });\n        } else {\n          this.resizeAllComponentsManager();\n        }\n      }\n    });\n    this.remainingComponentInitializations++;\n  }\n\n  private static shouldEnableResponsiveMode(root: Dom): boolean {\n    let searchInterface = <SearchInterface>Component.get(root.el, SearchInterface, true);\n    return searchInterface instanceof SearchInterface && searchInterface.options.enableAutomaticResponsiveMode;\n  }\n\n  private static instantiateResponsiveComponents() {\n    _.each(this.componentInitializations, componentInitialization => {\n      let responsiveComponentsManager = componentInitialization.responsiveComponentsManager;\n      responsiveComponentsManager.register.apply(responsiveComponentsManager, componentInitialization.arguments);\n    });\n  }\n\n  private static resizeAllComponentsManager(): void {\n    _.each(this.componentManagers, componentManager => {\n      componentManager.resizeListener();\n    });\n  }\n\n  constructor(root: Dom) {\n    this.coveoRoot = root;\n    this.searchInterface = <SearchInterface>Component.get(this.coveoRoot.el, SearchInterface, false);\n    this.dropdownHeadersWrapper = $$('div', {\n      className: ResponsiveComponentsManager.DROPDOWN_HEADER_WRAPPER_CSS_CLASS\n    });\n    this.searchBoxElement = this.getSearchBoxElement();\n    this.logger = new Logger(this);\n    this.resizeListener = debounce(() => {\n      if (this.isAbleToDetermineMode()) {\n        this.addDropdownHeaderWrapperIfNeeded();\n        if (this.shouldSwitchToSmallMode()) {\n          this.coveoRoot.addClass('coveo-small-interface');\n        } else if (!this.shouldSwitchToSmallMode()) {\n          this.coveoRoot.removeClass('coveo-small-interface');\n        }\n        _.each(this.responsiveComponents, responsiveComponent => {\n          responsiveComponent.handleResizeEvent();\n        });\n      } else {\n        this.logger\n          .warn(`The width of the search interface is 0, cannot dispatch resize events to responsive components. This means that the tabs will not\n        automatically fit in the tab section. Also, the facet and recommendation component will not hide in a menu. Could the search\n        interface display property be none? Could its visibility property be set to hidden? Also, if either of these scenarios happen during\n        loading, it could be the cause of this issue.`);\n      }\n    }, 250);\n    // On many android devices, focusing on an input (eg: facet search input) causes the device to \"zoom in\"\n    // and this triggers the window resize event. Since this class modify HTML nodes, Android has the quirks of removing the focus on the input.\n    // As a net result, users focus on the text input, the keyboard appears for a few milliseconds, then dissapears instantly when the DOM is modified.\n    // Since on a mobile device resizing the page is not something that should really happen, we disable it here.\n    if (!DeviceUtils.isMobileDevice()) {\n      window.addEventListener('resize', this.resizeListener);\n    }\n\n    this.bindNukeEvents();\n  }\n\n  public register(\n    responsiveComponentConstructor: IResponsiveComponentConstructor,\n    root: Dom,\n    ID: string,\n    component: Component,\n    options: IResponsiveComponentOptions\n  ): void {\n    if (this.isDisabled(ID)) {\n      return;\n    }\n\n    if (!this.isActivated(ID)) {\n      let responsiveComponent = new responsiveComponentConstructor(root, ID, options);\n\n      if (this.isTabs(ID)) {\n        this.responsiveComponents.push(responsiveComponent);\n      } else {\n        // Tabs need to be rendered last, so any dropdown header(eg: facet) is already there when the responsive tabs check for overflow.\n        this.responsiveComponents.unshift(responsiveComponent);\n      }\n    }\n    _.each(this.responsiveComponents, (responsiveComponent: IResponsiveComponent) => {\n      if (responsiveComponent.registerComponent != null) {\n        responsiveComponent.registerComponent(component);\n      }\n    });\n  }\n\n  public disableComponent(ID: string) {\n    this.disabledComponents.push(ID);\n  }\n\n  private isDisabled(ID: string) {\n    return _.indexOf(this.disabledComponents, ID) != -1;\n  }\n\n  private shouldSwitchToSmallMode(): boolean {\n    let aComponentNeedsTabSection = this.needDropdownWrapper();\n    let reachedBreakpoint = this.coveoRoot.width() <= this.searchInterface.responsiveComponents.getMediumScreenWidth();\n    return aComponentNeedsTabSection || reachedBreakpoint;\n  }\n\n  private needDropdownWrapper(): boolean {\n    for (let i = 0; i < this.responsiveComponents.length; i++) {\n      let responsiveComponent = this.responsiveComponents[i];\n      if (responsiveComponent.needDropdownWrapper && responsiveComponent.needDropdownWrapper()) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  private addDropdownHeaderWrapperIfNeeded(): void {\n    if (this.needDropdownWrapper()) {\n      let tabSection = $$(this.coveoRoot).find('.coveo-tab-section');\n      if (this.searchBoxElement) {\n        this.dropdownHeadersWrapper.insertAfter(this.searchBoxElement);\n      } else if (tabSection) {\n        this.dropdownHeadersWrapper.insertAfter(tabSection);\n      } else {\n        this.coveoRoot.prepend(this.dropdownHeadersWrapper.el);\n      }\n    }\n  }\n\n  private isTabs(ID: string): boolean {\n    return ID == 'Tab';\n  }\n\n  private isActivated(ID: string): boolean {\n    return _.find(this.responsiveComponents, current => current.ID == ID) != undefined;\n  }\n\n  private getSearchBoxElement(): HTMLElement {\n    let searchBoxElement = this.coveoRoot.find('.coveo-search-section');\n    if (searchBoxElement) {\n      return <HTMLElement>searchBoxElement;\n    } else {\n      return <HTMLElement>this.coveoRoot.find('.CoveoSearchbox');\n    }\n  }\n\n  private bindNukeEvents(): void {\n    $$(this.coveoRoot).on(InitializationEvents.nuke, () => {\n      window.removeEventListener('resize', this.resizeListener);\n\n      // If the interface gets nuked, we need to remove all reference to componentManagers stored which match the current search interface\n      ResponsiveComponentsManager.componentManagers = _.filter(\n        ResponsiveComponentsManager.componentManagers,\n        manager => manager.coveoRoot.el != this.coveoRoot.el\n      );\n    });\n  }\n\n  private isAbleToDetermineMode() {\n    return this.coveoRoot.width() != 0 || this.searchInterface.options.responsiveMode !== 'auto';\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveComponentsManager.ts"],"sourceRoot":""}