{"version":3,"sources":["./src/ui/HiddenQuery/HiddenQuery.ts","./sass/_HiddenQuery.scss"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,yCAA8C;AAC9C,gDAA4D;AAE5D,uCAA0C;AAC1C,4CAAgF;AAChF,iDAA+F;AAC/F,wDAA6G;AAC7G,gDAAuF;AACvF,mCAAqC;AACrC,qCAA0C;AAC1C,8CAAwD;AACxD,sCAA2C;AAC3C,+BAAgC;AAChC,6CAAqD;AACrD,yBAA8B;AAC9B,yCAAgD;AAOhD;;;;;;GAMG;AACH;IAAiC,+BAAS;IAmCxC;;;;;;;OAOG;IACH,qBAAmB,OAAoB,EAAS,OAA6B,EAAE,QAA6B;QAA5G,YACE,kBAAM,OAAO,EAAE,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,SAQzC;QATkB,aAAO,GAAP,OAAO,CAAa;QAAS,aAAO,GAAP,OAAO,CAAsB;QAE3E,KAAI,CAAC,OAAO,GAAG,mCAAgB,CAAC,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QAEpF,KAAI,CAAC,IAAI,CAAC,aAAa,CAAC,yBAAW,CAAC,aAAa,EAAE,UAAC,IAA6B,IAAK,YAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAA9B,CAA8B,CAAC,CAAC;QACtH,KAAI,CAAC,IAAI,CAAC,aAAa,CAAC,mCAAgB,CAAC,kBAAkB,EAAE,UAAC,IAAkC;YAC9F,YAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC;QAAnC,CAAmC,CACpC,CAAC;QACF,KAAI,CAAC,IAAI,CAAC,aAAa,CAAC,mCAAgB,CAAC,eAAe,EAAE,cAAM,YAAI,CAAC,aAAa,EAAE,EAApB,CAAoB,CAAC,CAAC;;IACxF,CAAC;IAED;;;OAGG;IACI,2BAAK,GAAZ;QACE,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAM,wBAAwB,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACvD,IAAI,CAAC,cAAc,CAAC,cAAc,CAA8B,kDAAwB,CAAC,aAAa,EAAE;YACtG,WAAW,EAAE,wBAAwB;SACtC,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;IACtC,CAAC;IAEO,mCAAa,GAArB;QACE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,wCAAsB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,wCAAsB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1D,CAAC;IAEO,yCAAmB,GAA3B,UAA4B,IAA6B;QACvD,eAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpB,IAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,wCAAsB,CAAC,EAAE,CAAC,CAAC;QACxE,IAAI,aAAK,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE;YACvC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;SACvD;IACH,CAAC;IAEO,8CAAwB,GAAhC,UAAiC,IAAkC;QAAnE,iBAuBC;QAtBC,IAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,wCAAsB,CAAC,EAAE,CAAC,CAAC,EAAE;YAC9F,IAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC3C,QAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC,CAAC;YAEnD,IAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC7C,QAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,qCAAqC,CAAC,CAAC;YAC1D,QAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAExB,IAAM,KAAK,GAAG,QAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,qCAAqC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YACzG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAExB,IAAM,KAAK,GAAG,QAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,qCAAqC,EAAE,EAAE,mBAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACzG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAE5B,QAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,cAAM,YAAI,CAAC,KAAK,EAAE,EAAZ,CAAY,CAAC,CAAC;YAE1C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBACpB,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;SACJ;IACH,CAAC;IAEO,oCAAc,GAAtB;QACE,IAAI,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,iCAAe,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAC9E,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;YAC1B,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,iCAAe,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;SAC3E;QACD,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;YAC3B,IAAI,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE;gBAC9D,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,GAAG,MAAM,CAAC;aACpF;SACF;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAnHM,cAAE,GAAG,aAAa,CAAC;IAEnB,oBAAQ,GAAG;QAChB,8BAAc,CAAC;YACb,WAAW,EAAE,WAAW;SACzB,CAAC,CAAC;IACL,CAAC,CAAC;IAEF;;;OAGG;IACI,mBAAO,GAAwB;QACpC;;;;;;;WAOG;QACH,wBAAwB,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;QAE3F;;;;;WAKG;QACH,KAAK,EAAE,mCAAgB,CAAC,0BAA0B,CAAC;YACjD,eAAe,EAAE,cAAM,kBAAC,CAAC,mBAAmB,CAAC,GAAG,GAAG,EAA5B,CAA4B;SACpD,CAAC;KACH,CAAC;IAoFJ,kBAAC;CAAA,CArHgC,qBAAS,GAqHzC;AArHY,kCAAW;AAsHxB,+BAAc,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC;;;;;;;;ACnJxD,yC","file":"HiddenQuery__d2b01b0f173a0c131e66.js","sourcesContent":["import { Component } from '../Base/Component';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { l } from '../../strings/Strings';\nimport { QueryEvents, IBuildingQueryEventArgs } from '../../events/QueryEvents';\nimport { BreadcrumbEvents, IPopulateBreadcrumbEventArgs } from '../../events/BreadcrumbEvents';\nimport { analyticsActionCauseList, IAnalyticsContextRemoveMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { QUERY_STATE_ATTRIBUTES, QueryStateModel } from '../../models/QueryStateModel';\nimport { $$ } from '../../utils/Dom';\nimport { Utils } from '../../utils/Utils';\nimport { Initialization } from '../Base/Initialization';\nimport { Assert } from '../../misc/Assert';\nimport * as _ from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\nimport 'styling/_HiddenQuery';\nimport { SVGIcons } from '../../utils/SVGIcons';\n\nexport interface IHiddenQueryOptions {\n  maximumDescriptionLength: number;\n  title: string;\n}\n\n/**\n * The HiddenQuery component handles a \"hidden\" query parameter (`hq`) and its description (`hd`).\n *\n * Concretely, this means that if a HiddenQuery component is present in your page and you load your search interface\n * with `hq=foo&hd=bar` in the URL hash, the component adds `foo` as an expression to the query (`hq` is the hidden\n * query) and renders `bar` in the {@link Breadcrumb} (`hd` is the hidden query description).\n */\nexport class HiddenQuery extends Component {\n  static ID = 'HiddenQuery';\n\n  static doExport = () => {\n    exportGlobally({\n      HiddenQuery: HiddenQuery\n    });\n  };\n\n  /**\n   * Possible options for the `HiddenQuery` component\n   * @componentOptions\n   */\n  static options: IHiddenQueryOptions = {\n    /**\n     * Specifies the maximum number of characters from the hidden query description (`hd`) to display in the\n     * {@link Breadcrumb}.\n     *\n     * Beyond this length, the HiddenQuery component slices the rest of the description and replaces it by `...`.\n     *\n     * Default value is `100`. Minimum value is `0`.\n     */\n    maximumDescriptionLength: ComponentOptions.buildNumberOption({ min: 0, defaultValue: 100 }),\n\n    /**\n     * Specifies the title that should appear in the {@link Breadcrumb} when the HiddenQuery populates it.\n     *\n     * Default value is the localized string f\n     * or `\"Additional filters:\"`\n     */\n    title: ComponentOptions.buildLocalizedStringOption({\n      localizedString: () => l('AdditionalFilters') + ':'\n    })\n  };\n\n  /**\n   * Creates a new HiddenQuery component, which binds multiple events ({@link QueryEvents.buildingQuery},\n   * {@link BreadcrumbEvents.populateBreadcrumb} and {@link BreadcrumbEvents.clearBreadcrumb}).\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the HiddenQuery 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?: IHiddenQueryOptions, bindings?: IComponentBindings) {\n    super(element, HiddenQuery.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, HiddenQuery, options);\n\n    this.bind.onRootElement(QueryEvents.buildingQuery, (args: IBuildingQueryEventArgs) => this.handleBuildingQuery(args));\n    this.bind.onRootElement(BreadcrumbEvents.populateBreadcrumb, (args: IPopulateBreadcrumbEventArgs) =>\n      this.handlePopulateBreadcrumb(args)\n    );\n    this.bind.onRootElement(BreadcrumbEvents.clearBreadcrumb, () => this.setStateEmpty());\n  }\n\n  /**\n   * Clears any `hd` or `hq` set in the {@link QueryStateModel}.\n   * Also logs the `contextRemove` event in the usage analytics and triggers a new query.\n   */\n  public clear() {\n    this.setStateEmpty();\n    const hiddenDescriptionRemoved = this.getDescription();\n    this.usageAnalytics.logSearchEvent<IAnalyticsContextRemoveMeta>(analyticsActionCauseList.contextRemove, {\n      contextName: hiddenDescriptionRemoved\n    });\n    this.queryController.executeQuery();\n  }\n\n  private setStateEmpty() {\n    this.queryStateModel.set(QUERY_STATE_ATTRIBUTES.HD, '');\n    this.queryStateModel.set(QUERY_STATE_ATTRIBUTES.HQ, '');\n  }\n\n  private handleBuildingQuery(data: IBuildingQueryEventArgs) {\n    Assert.exists(data);\n    const hiddenQuery = this.queryStateModel.get(QUERY_STATE_ATTRIBUTES.HQ);\n    if (Utils.isNonEmptyString(hiddenQuery)) {\n      data.queryBuilder.advancedExpression.add(hiddenQuery);\n    }\n  }\n\n  private handlePopulateBreadcrumb(args: IPopulateBreadcrumbEventArgs) {\n    const description = this.getDescription();\n    if (!_.isEmpty(description) && !_.isEmpty(this.queryStateModel.get(QUERY_STATE_ATTRIBUTES.HQ))) {\n      const elem = document.createElement('div');\n      $$(elem).addClass('coveo-hidden-query-breadcrumb');\n\n      const title = document.createElement('span');\n      $$(title).addClass('coveo-hidden-query-breadcrumb-title');\n      $$(title).text(this.options.title);\n      elem.appendChild(title);\n\n      const value = $$('span', { className: 'coveo-hidden-query-breadcrumb-value' }, _.escape(description)).el;\n      elem.appendChild(value);\n\n      const clear = $$('span', { className: 'coveo-hidden-query-breadcrumb-clear' }, SVGIcons.icons.mainClear);\n      value.appendChild(clear.el);\n\n      $$(value).on('click', () => this.clear());\n\n      args.breadcrumbs.push({\n        element: elem\n      });\n    }\n  }\n\n  private getDescription() {\n    let description = this.queryStateModel.get(QueryStateModel.attributesEnum.hd);\n    if (_.isEmpty(description)) {\n      description = this.queryStateModel.get(QueryStateModel.attributesEnum.hq);\n    }\n    if (!_.isEmpty(description)) {\n      if (description.length > this.options.maximumDescriptionLength) {\n        description = description.slice(0, this.options.maximumDescriptionLength) + ' ...';\n      }\n    }\n    return description;\n  }\n}\nInitialization.registerAutoCreateComponent(HiddenQuery);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/HiddenQuery/HiddenQuery.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_HiddenQuery.scss\n// module id = 618\n// module chunks = 70 88"],"sourceRoot":""}