{"version":3,"sources":["./src/ui/Breadcrumb/Breadcrumb.ts","./sass/_Breadcrumb.scss"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,yBAA6B;AAC7B,0CAAiD;AACjD,iDAA2I;AAC3I,qDAAyE;AACzE,4CAAuD;AACvD,6CAAqD;AACrD,uCAA0C;AAC1C,iDAAgE;AAChE,mCAAqC;AACrC,wDAAkG;AAClG,yCAA8C;AAE9C,gDAA4D;AAC5D,8CAAwD;AAIxD;;;;;;;;;;;;;;GAcG;AACH;IAAgC,8BAAS;IAYvC;;;;;;;OAOG;IACH,oBAAmB,OAAoB,EAAS,OAA4B,EAAE,QAA6B;QAA3G,YACE,kBAAM,OAAO,EAAE,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,SASxC;QAVkB,aAAO,GAAP,OAAO,CAAa;QAAS,aAAO,GAAP,OAAO,CAAqB;QAG1E,KAAI,CAAC,OAAO,GAAG,mCAAgB,CAAC,oBAAoB,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAEnF,KAAI,CAAC,IAAI,CAAC,cAAc,CAAC,2CAAoB,CAAC,mBAAmB,EAAE,cAAM,YAAI,CAAC,yBAAyB,EAAE,EAAhC,CAAgC,CAAC,CAAC;QAC3G,KAAI,CAAC,IAAI,CAAC,aAAa,CAAC,mCAAgB,CAAC,gBAAgB,EAAE,cAAM,YAAI,CAAC,gBAAgB,EAAE,EAAvB,CAAuB,CAAC,CAAC;QAC1F,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACpC,KAAI,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC5C,KAAI,CAAC,iCAAiC,EAAE,CAAC;;IAC3C,CAAC;IAED;;;;;;OAMG;IACI,mCAAc,GAArB;QACE,IAAM,IAAI,GAAiC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QAC/D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,mCAAgB,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QACxE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAE7D,0EAA0E;QAC1E,+CAA+C;QAC/C,8GAA8G;QAC9G,iDAAiD;QACjD,IAAI,oBAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;YAC/D,IAAI,CAAC,2BAA2B,EAAE,CAAC;SACpC;QACD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC;QACxC,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACI,qCAAgB,GAAvB;QACE,IAAM,IAAI,GAA8B,EAAE,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,mCAAgB,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QACrE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,IAAI,CAAC,cAAc,CAAC,cAAc,CAAmB,kDAAwB,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;QACtG,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;IACtC,CAAC;IAED;;;OAGG;IACI,mCAAc,GAArB,UAAsB,WAA8B;QAApD,iBAkCC;QAjCC,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE;YAC3B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;SACjC;aAAM;YACL,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;SACrC;QAED,IAAM,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACtD,QAAE,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC;QACvD,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QAC1C,iBAAI,CAAC,WAAW,EAAE,UAAC,MAAuB;YACxC,IAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC;YAC5B,QAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;YAC3C,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,IAAM,SAAS,GAAG,QAAE,CAAC,KAAK,EAAE,SAAS,EAAE,WAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,IAAM,KAAK,GAAG,QAAE,CACd,KAAK,EACL;YACE,SAAS,EAAE,4BAA4B;SACxC,EACD,SAAS,CACV,CAAC,EAAE,CAAC;QAEL,IAAI,mCAAgB,EAAE;aACnB,WAAW,CAAC,KAAK,CAAC;aAClB,gBAAgB,CAAC,cAAM,YAAI,CAAC,gBAAgB,EAAE,EAAvB,CAAuB,CAAC;aAC/C,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;aACpB,mBAAmB,EAAE;aACrB,KAAK,EAAE,CAAC;QAEX,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAEO,qCAAgB,GAAxB;QACE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IAChH,CAAC;IAEO,+CAA0B,GAAlC;QACE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IAC7C,CAAC;IAEO,qCAAgB,GAAxB;QACE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IAC7C,CAAC;IAEO,8CAAyB,GAAjC;QAAA,iBAKC;QAJC,+FAA+F;QAC/F,gEAAgE;QAChE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,yBAAW,CAAC,oBAAoB,EAAE,cAAM,YAAI,CAAC,0BAA0B,EAAE,EAAjC,CAAiC,CAAC,CAAC;QACnG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,yBAAW,CAAC,UAAU,EAAE,cAAM,YAAI,CAAC,gBAAgB,EAAE,EAAvB,CAAuB,CAAC,CAAC;IACjF,CAAC;IAEO,gDAA2B,GAAnC;QACE,IAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAY,YAAY,CAAC,CAAC;QAChF,IAAM,sBAAsB,GAAG,iBAAI,CAAC,WAAW,EAAE,oBAAU,IAAI,iBAAU,CAAC,QAAQ,KAAK,KAAK,EAA7B,CAA6B,CAAC,CAAC;QAC9F,IAAI,sBAAsB,EAAE;YAC1B,QAAE,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAChD;IACH,CAAC;IAEO,sDAAiC,GAAzC;QACE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;YACtC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;SACjD;QACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE;YAC5C,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,WAAC,CAAC,YAAY,CAAC,CAAC,CAAC;SAC1D;IACH,CAAC;IA7IM,aAAE,GAAG,YAAY,CAAC;IAClB,kBAAO,GAAuB,EAAE,CAAC;IAEjC,mBAAQ,GAAG;QAChB,8BAAc,CAAC;YACb,UAAU,EAAE,UAAU;SACvB,CAAC,CAAC;IACL,CAAC,CAAC;IAuIJ,iBAAC;CAAA,CA/I+B,qBAAS,GA+IxC;AA/IY,gCAAU;AAiJvB,+BAAc,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAC;;;;;;;;ACjLvD,yC","file":"Breadcrumb__d2b01b0f173a0c131e66.js","sourcesContent":["import 'styling/_Breadcrumb';\nimport { each, find, isEmpty } from 'underscore';\nimport { BreadcrumbEvents, IBreadcrumbItem, IClearBreadcrumbEventArgs, IPopulateBreadcrumbEventArgs } from '../../events/BreadcrumbEvents';\nimport { InitializationEvents } from '../../events/InitializationEvents';\nimport { QueryEvents } from '../../events/QueryEvents';\nimport { exportGlobally } from '../../GlobalExports';\nimport { l } from '../../strings/Strings';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { $$ } from '../../utils/Dom';\nimport { analyticsActionCauseList, IAnalyticsNoMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Initialization } from '../Base/Initialization';\n\nexport interface IBreadcrumbOptions {}\n\n/**\n * The Breadcrumb component displays a summary of the currently active query filters.\n *\n * For example, when the user selects a {@link Facet} value, the breadcrumbs display this value.\n *\n * The active filters are obtained by the component by firing an event in the Breadcrumb component.\n *\n * All other components having an active state can react to this event by providing custom bits of HTML to display\n * inside the breadcrumbs.\n *\n * Thus, it is possible to easily extend the Breadcrumb component using custom code to display information about custom\n * states and filters.\n *\n * See {@link BreadcrumbEvents} for the list of events and parameters sent when a Breadcrumb component is populated.\n */\nexport class Breadcrumb extends Component {\n  static ID = 'Breadcrumb';\n  static options: IBreadcrumbOptions = {};\n\n  static doExport = () => {\n    exportGlobally({\n      Breadcrumb: Breadcrumb\n    });\n  };\n\n  private lastBreadcrumbs: IBreadcrumbItem[];\n\n  /**\n   * Creates a new Breadcrumb component. Binds event on {@link QueryEvents.deferredQuerySuccess} to draw the\n   * breadcrumbs.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the Breadcrumb 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?: IBreadcrumbOptions, bindings?: IComponentBindings) {\n    super(element, Breadcrumb.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(element, Breadcrumb, options);\n\n    this.bind.oneRootElement(InitializationEvents.afterInitialization, () => this.handleAfterInitialization());\n    this.bind.onRootElement(BreadcrumbEvents.redrawBreadcrumb, () => this.redrawBreadcrumb());\n    this.element.style.display = 'none';\n    this.element.setAttribute('tabindex', '-1');\n    this.addDefaultAccessibilityAttributes();\n  }\n\n  /**\n   * Triggers the event to populate the breadcrumbs. Components such as {@link Facet} can populate the breadcrumbs.\n   *\n   * This method triggers a {@link BreadcrumbEvents.populateBreadcrumb} event with an\n   * {@link IPopulateBreadcrumbEventArgs} object (an array) that other components or code can populate.\n   * @returns {IBreadcrumbItem[]} A populated breadcrumb item list.\n   */\n  public getBreadcrumbs(): IBreadcrumbItem[] {\n    const args = <IPopulateBreadcrumbEventArgs>{ breadcrumbs: [] };\n    this.bind.trigger(this.root, BreadcrumbEvents.populateBreadcrumb, args);\n    this.logger.debug('Retrieved breadcrumbs', args.breadcrumbs);\n\n    // If newly received breadcrumbs are empty, and last breadcrumbs were not.\n    // this means end user removed the last filter:\n    // We want to shift keyboard focus to the result list container in that case, for ease of use of the interface\n    // https://coveord.atlassian.net/browse/JSUI-3078\n    if (isEmpty(args.breadcrumbs) && !isEmpty(this.lastBreadcrumbs)) {\n      this.focusFirstEnabledResultList();\n    }\n    this.lastBreadcrumbs = args.breadcrumbs;\n    return args.breadcrumbs;\n  }\n\n  /**\n   * Triggers the event to clear the current breadcrumbs that components such as {@link Facet} can populate.\n   *\n   * Also triggers a new query and logs the `breadcrumbResetAll` event in the usage analytics.\n   */\n  public clearBreadcrumbs() {\n    const args = <IClearBreadcrumbEventArgs>{};\n    this.bind.trigger(this.root, BreadcrumbEvents.clearBreadcrumb, args);\n    this.logger.debug('Clearing breadcrumbs');\n    this.usageAnalytics.logSearchEvent<IAnalyticsNoMeta>(analyticsActionCauseList.breadcrumbResetAll, {});\n    this.queryController.executeQuery();\n  }\n\n  /**\n   * Draws the specified breadcrumb items.\n   * @param breadcrumbs The breadcrumb items to draw.\n   */\n  public drawBreadcrumb(breadcrumbs: IBreadcrumbItem[]) {\n    $$(this.element).empty();\n    if (breadcrumbs.length != 0) {\n      this.element.style.display = '';\n    } else {\n      this.element.style.display = 'none';\n    }\n\n    const breadcrumbItems = document.createElement('div');\n    $$(breadcrumbItems).addClass('coveo-breadcrumb-items');\n    this.element.appendChild(breadcrumbItems);\n    each(breadcrumbs, (bcrumb: IBreadcrumbItem) => {\n      const elem = bcrumb.element;\n      $$(elem).addClass('coveo-breadcrumb-item');\n      breadcrumbItems.appendChild(elem);\n    });\n\n    const clearText = $$('div', undefined, l('ClearAllFilters')).el;\n    const clear = $$(\n      'div',\n      {\n        className: 'coveo-breadcrumb-clear-all'\n      },\n      clearText\n    ).el;\n\n    new AccessibleButton()\n      .withElement(clear)\n      .withSelectAction(() => this.clearBreadcrumbs())\n      .withOwner(this.bind)\n      .withoutLabelOrTitle()\n      .build();\n\n    this.element.appendChild(clear);\n  }\n\n  private redrawBreadcrumb() {\n    this.lastBreadcrumbs ? this.drawBreadcrumb(this.lastBreadcrumbs) : this.drawBreadcrumb(this.getBreadcrumbs());\n  }\n\n  private handleDeferredQuerySuccess() {\n    this.drawBreadcrumb(this.getBreadcrumbs());\n  }\n\n  private handleQueryError() {\n    this.drawBreadcrumb(this.getBreadcrumbs());\n  }\n\n  private handleAfterInitialization() {\n    // We must bind to these events after the initialization to make sure the breadcrumb generation\n    // is made with updated components. (E.G facet, facetrange, ...)\n    this.bind.onRootElement(QueryEvents.deferredQuerySuccess, () => this.handleDeferredQuerySuccess());\n    this.bind.onRootElement(QueryEvents.queryError, () => this.handleQueryError());\n  }\n\n  private focusFirstEnabledResultList() {\n    const resultLists = this.searchInterface.getComponents<Component>('ResultList');\n    const firstEnabledResultList = find(resultLists, resultList => resultList.disabled === false);\n    if (firstEnabledResultList) {\n      $$(firstEnabledResultList.element).focus(true);\n    }\n  }\n\n  private addDefaultAccessibilityAttributes() {\n    if (!this.element.getAttribute('role')) {\n      this.element.setAttribute('role', 'navigation');\n    }\n    if (!this.element.getAttribute('aria-label')) {\n      this.element.setAttribute('aria-label', l('Breadcrumb'));\n    }\n  }\n}\n\nInitialization.registerAutoCreateComponent(Breadcrumb);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Breadcrumb/Breadcrumb.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_Breadcrumb.scss\n// module id = 600\n// module chunks = 76 88"],"sourceRoot":""}