{"version":3,"sources":["./src/ui/Querybox/Querybox.ts","./src/magicbox/Grammar.ts","./src/utils/SVGDom.ts","./src/ui/Omnibox/Omnibox.ts","./src/ui/SearchButton/SearchButton.ts","./src/magicbox/Expression/ExpressionConstant.ts","./src/magicbox/Expression/ExpressionEndOfInput.ts","./src/magicbox/Grammars/Field.ts","./src/magicbox/MagicBox.ts","./src/magicbox/MagicBoxUtils.ts","./src/utils/AccessibleButton.ts","./src/ui/Searchbox/Searchbox.ts","./src/magicbox/Expression/ExpressionFunction.ts","./src/magicbox/Expression/ExpressionList.ts","./src/magicbox/Expression/ExpressionOptions.ts","./src/magicbox/Result/OptionResult.ts","./src/magicbox/Expression/ExpressionRef.ts","./src/magicbox/Result/RefResult.ts","./src/magicbox/Expression/ExpressionRegExp.ts","./src/magicbox/Grammars/NestedQuery.ts","./src/magicbox/Grammars/Date.ts","./src/magicbox/Grammars/QueryExtension.ts","./src/magicbox/Grammars/SubExpression.ts","./src/magicbox/InputManager.ts","./src/magicbox/SuggestionsManager.ts","./src/ui/Querybox/QueryboxQueryParameters.ts","./src/magicbox/Grammars/Complete.ts","./src/magicbox/Grammars/Expressions.ts","./src/ui/Querybox/QueryboxOptionsProcessing.ts","./src/misc/SuggestionsCache.ts","./sass/_AccessibleButton.scss","./src/magicbox/Result/Result.ts","./src/magicbox/doMagicBoxExport.ts","./src/magicbox/Grammars/Grammars.ts","./src/magicbox/MagicBoxClear.ts","./sass/_Omnibox.scss","./src/ui/Omnibox/FieldAddon.ts","./src/ui/Omnibox/OldOmniboxAddon.ts","./src/ui/Omnibox/QueryExtensionAddon.ts","./src/ui/Omnibox/QuerySuggestAddon.ts","./sass/_Searchbox.scss","./src/magicbox/Grammars/Basic.ts"],"names":[],"mappings":"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","file":"Searchbox__a32fd127c77e29c02637.js","sourcesContent":["import { exportGlobally } from '../../GlobalExports';\nimport { IBuildingQueryEventArgs, QueryEvents } from '../../events/QueryEvents';\nimport { StandaloneSearchInterfaceEvents } from '../../events/StandaloneSearchInterfaceEvents';\nimport { Assert } from '../../misc/Assert';\nimport { IAttributeChangedEventArg, MODEL_EVENTS } from '../../models/Model';\nimport { QUERY_STATE_ATTRIBUTES, QueryStateModel } from '../../models/QueryStateModel';\nimport { l } from '../../strings/Strings';\nimport { $$ } from '../../utils/Dom';\nimport { IAnalyticsNoMeta, analyticsActionCauseList } from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { QueryboxQueryParameters } from './QueryboxQueryParameters';\nimport { Result } from '../../magicbox/Result/Result';\nimport { MagicBoxInstance, createMagicBox } from '../../magicbox/MagicBox';\nimport { Grammar } from '../../magicbox/Grammar';\nimport { QueryboxOptionsProcessing } from './QueryboxOptionsProcessing';\n\nexport interface IQueryboxOptions {\n  enableSearchAsYouType?: boolean;\n  searchAsYouTypeDelay?: number;\n  enableQuerySyntax?: boolean;\n  enableWildcards?: boolean;\n  enableQuestionMarks?: boolean;\n  enableLowercaseOperators?: boolean;\n  enablePartialMatch?: boolean;\n  partialMatchKeywords?: number;\n  partialMatchThreshold?: string;\n  placeholder?: string;\n  triggerQueryOnClear?: boolean;\n}\n\n/**\n * The `Querybox` component renders an input which the end user can interact with to enter and submit queries.\n *\n * When the end user submits a search request, the `Querybox` component triggers a query and logs the corresponding\n * usage analytics data.\n *\n * For technical reasons, it is necessary to instantiate this component on a `div` element rather than on an `input`\n * element.\n *\n * See also the [`Searchbox`]{@link Searchbox} component, which can automatically instantiate a `Querybox` along with an\n * optional [`SearchButton`]{@link SearchButton} component.\n */\nexport class Querybox extends Component {\n  static ID = 'Querybox';\n\n  static doExport = () => {\n    exportGlobally({\n      Querybox: Querybox,\n      QueryboxQueryParameters: QueryboxQueryParameters\n    });\n  };\n\n  /**\n   * The options for the Querybox.\n   * @componentOptions\n   */\n  public static options: IQueryboxOptions = {\n    /**\n     * Specifies whether to enable the search-as-you-type feature.\n     *\n     * Default value is `false`.\n     */\n    enableSearchAsYouType: ComponentOptions.buildBooleanOption({ defaultValue: false, section: 'SearchAsYouType' }),\n\n    /**\n     * If the [`enableSearchAsYouType`]{@link Querybox.options.enableSearchAsYouType} option is `true`, specifies how\n     * long to wait (in milliseconds) between each key press before triggering a new query.\n     *\n     * Default value is `50`. Minimum value is `0`\n     */\n    searchAsYouTypeDelay: ComponentOptions.buildNumberOption({ defaultValue: 50, min: 0, section: 'SearchAsYouType' }),\n\n    /**\n     * Specifies whether to interpret special query syntax (e.g., `@objecttype=message`) when the end user types\n     * a query in the `Querybox` (see\n     * [Coveo Query Syntax Reference](http://www.coveo.com/go?dest=adminhelp70&lcid=9&context=10005)). Setting this\n     * option to `true` also causes the `Querybox` to highlight any query syntax.\n     *\n     * Regardless of the value of this option, the Coveo Cloud REST Search API always interprets expressions surrounded\n     * by double quotes (`\"`) as exact phrase match requests.\n     *\n     * See also [`enableLowercaseOperators`]{@link Querybox.options.enableLowercaseOperators}.\n     *\n     * **Notes:**\n     * > * End user preferences can override the value you specify for this option.\n     * >\n     * > If the end user selects a value other than **Automatic** for the **Enable query syntax** setting (see\n     * > the [`enableQuerySyntax`]{@link ResultsPreferences.options.enableQuerySyntax} option of the\n     * > [`ResultsPreferences`]{@link ResultsPreferences} component), the end user preference takes precedence over this\n     * > option.\n     * >\n     * > * On-premises versions of the Coveo Search API require this option to be set to `true` in order to interpret\n     * > expressions surrounded by double quotes (`\"`) as exact phrase match requests.\n     *\n     * Default value is `false`.\n     */\n    enableQuerySyntax: ComponentOptions.buildBooleanOption({ defaultValue: false, section: 'QuerySyntax' }),\n\n    /**\n     * Specifies whether to expand basic expression keywords containing wildcards characters (`*`) to the possible\n     * matching keywords in order to broaden the query (see\n     * [Using Wildcards in Queries](http://www.coveo.com/go?dest=cloudhelp&lcid=9&context=359)).\n     *\n     * See also [`enableQuestionMarks`]{@link Querybox.options.enableQuestionMarks}.\n     *\n     *  **Note:**\n     * > If you are using an on-premises version of the Coveo Search API, you need to set the\n     * > [`enableQuerySyntax`]{@link Querybox.options.enableQuerySyntax} option to `true` to be able to set\n     * > `enableWildcards` to `true`.\n     *\n     * Default value is `false`.\n     */\n    enableWildcards: ComponentOptions.buildBooleanOption({ defaultValue: false, section: 'QuerySyntax' }),\n\n    /**\n     * If [`enableWildcards`]{@link Querybox.options.enableWildcards} is `true`, specifies whether to expand basic\n     * expression keywords containing question mark characters (`?`) to the possible matching keywords in order to\n     * broaden the query (see\n     * [Using Wildcards in Queries](http://www.coveo.com/go?dest=cloudhelp&lcid=9&context=359)).\n     *\n     * **Note:**\n     * > If you are using an on-premises version of the Coveo Search API, you also need to set the\n     * > [`enableQuerySyntax`]{@link Querybox.options.enableQuerySyntax} option to `true` in order to be able to set\n     * > `enableQuestionMarks` to `true`.\n     *\n     * Default value is `false`.\n     */\n    enableQuestionMarks: ComponentOptions.buildBooleanOption({ defaultValue: false, depend: 'enableWildcards' }),\n\n    /**\n     * If the [`enableQuerySyntax`]{@link Querybox.options.enableQuerySyntax} option is `true`, specifies whether to\n     * interpret the `AND`, `NOT`, `OR`, and `NEAR` keywords in the `Querybox` as query operators in the query, even if\n     * the end user types those keywords in lowercase.\n     *\n     * This option applies to all query operators (see\n     * [Coveo Query Syntax Reference](http://www.coveo.com/go?dest=adminhelp70&lcid=9&context=10005)).\n     *\n     * **Example:**\n     * > If this option and the `enableQuerySyntax` option are both `true`, the Coveo Platform interprets the `near`\n     * > keyword in a query such as `service center near me` as the `NEAR` query operator (not as a query term).\n     *\n     * > Otherwise, if the `enableQuerySyntax` option is `true` and this option is `false`, the end user has to type the\n     * > `NEAR` keyword in uppercase for the Coveo Platform to interpret it as a query operator.\n     *\n     * Default value is `false`.\n     */\n    enableLowercaseOperators: ComponentOptions.buildBooleanOption({ defaultValue: false, depend: 'enableQuerySyntax' }),\n\n    /**\n     * Whether to convert a basic expression containing at least a certain number of keywords (see the\n     * [`partialMatchKeywords`]{@link Querybox.options.partialMatchKeywords} option) to a *partial match expression*, so\n     * that items containing at least a certain number of those keywords (see the\n     * [`partialMatchThreshold`]{@link Querybox.options.partialMatchThreshold} option) will match the expression.\n     *\n     * **Notes:**\n     *\n     * > - Only the basic expression of the query (see [`q`]{@link q}) can be converted to a partial match expression.\n     * > - When the [`enableQuerySyntax`]{@link Querybox.options.enableQuerySyntax} option is set to `true`, this\n     * > feature has no effect on a basic expression containing query syntax (field expressions, operators, etc.).\n     *\n     * **Example:**\n     *\n     * > With the following markup configuration, if a basic expression contains at least 4 keywords, items containing\n     * > at least 75% of those keywords (round up) will match the query.\n     * > ```html\n     * > <div class='CoveoQuerybox' data-enable-partial-match='true' data-partial-match-keywords='4' data-partial-match-threshold='75%'></div>\n     * > ```\n     * > For instance, if the basic expression is `Coveo custom component configuration help`, items containing\n     * > all 5 of those keywords, or 4 of them (75% of 5 rounded up) will match the query.\n     *\n     * Default value is `false`, which implies that an item must contain all of the basic expression keywords to match\n     * the query.\n     * @notSupportedIn salesforcefree\n     */\n    enablePartialMatch: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n    /**\n     * The minimum number of keywords that need to be present in a basic expression to convert it to a partial match\n     * expression.\n     *\n     * See also the [`partialMatchThreshold`]{@link Querybox.options.partialMatchThreshold} option.\n     *\n     * **Notes:**\n     * > - This option has no meaning unless the [`enablePartialMatch`]{@link Querybox.options.enablePartialMatch}\n     * > option is set to `true`.\n     * > - Repeated keywords in a basic expression count as a single keyword.\n     * > - Thesaurus expansions in a basic expression count towards the `partialMatchKeywords` count.\n     * > - Stemming expansions **do not** count towards the `partialMatchKeywords` count.\n     *\n     * **Example:**\n     * > If the `partialMatchKeywords` value is `7`, the basic expression will have to contain at least 7 keywords\n     * > to be converted to a partial match expression.\n     *\n     * Default value is `5`.\n     * @notSupportedIn salesforcefree\n     */\n    partialMatchKeywords: ComponentOptions.buildNumberOption({ defaultValue: 5, min: 1, depend: 'enablePartialMatch' }),\n\n    /**\n     * An absolute or relative value indicating the minimum number (rounded up) of partial match expression keywords an\n     * item must contain to match the expression.\n     *\n     * See also the [`partialMatchKeywords`]{@link Querybox.options.partialMatchKeywords} option.\n     *\n     * **Notes:**\n     * > - This option has no meaning unless the [`enablePartialMatch`]{@link Querybox.options.enablePartialMatch}\n     * > option is set to `true`.\n     * > - A keyword and its stemming expansions count as a single keyword when evaluating whether an item meets the\n     * > `partialMatchThreshold`.\n     *\n     * **Examples:**\n     * > If the `partialMatchThreshold` value is `50%` and the partial match expression contains exactly 9 keywords,\n     * > items will have to contain at least 5 of those keywords to match the query (50% of 9, rounded up).\n     *\n     * > With the same configuration, if the partial match expression contains exactly 12 keywords, items will have to\n     * > contain at least 6 of those keywords to match the query (50% of 12).\n     *\n     * > If the `partialMatchThreshold` value is `2`, items will always have to contain at least 2 of the partial match\n     * > expression keywords to match the query, no matter how many keywords the partial match expression actually\n     * > contains.\n     *\n     * Default value is `50%`.\n     * @notSupportedIn salesforcefree\n     */\n    partialMatchThreshold: ComponentOptions.buildStringOption({ defaultValue: '50%', depend: 'enablePartialMatch' }),\n\n    /**\n     * Specifies whether to trigger a query when clearing the `Querybox`.\n     *\n     * Default value is `false`.\n     */\n    triggerQueryOnClear: ComponentOptions.buildBooleanOption({ defaultValue: false })\n  };\n  MagicBoxImpl;\n\n  public magicBox: MagicBoxInstance;\n  private lastQuery: string;\n  private searchAsYouTypeTimeout: number;\n\n  /**\n   * Creates a new `Querybox component`. Creates a new `Coveo.Magicbox` instance and wraps the Magicbox methods\n   * (`onblur`, `onsubmit` etc.). Binds event on `buildingQuery` and before redirection (for standalone box).\n   * @param element The HTMLElement on which to instantiate the component. This cannot be an HTMLInputElement for\n   * technical reasons.\n   * @param options The options for the `Querybox` 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?: IQueryboxOptions, public bindings?: IComponentBindings) {\n    super(element, Querybox.ID, bindings);\n\n    if (element instanceof HTMLInputElement) {\n      this.logger.error('Querybox cannot be used on an HTMLInputElement');\n    }\n\n    this.options = ComponentOptions.initComponentOptions(element, Querybox, options);\n    new QueryboxOptionsProcessing(this).postProcess();\n\n    $$(this.element).toggleClass('coveo-query-syntax-disabled', this.options.enableQuerySyntax == false);\n    this.magicBox = createMagicBox(\n      element,\n      new Grammar('Query', {\n        Query: '[Term*][Spaces?]',\n        Term: '[Spaces?][Word]',\n        Spaces: / +/,\n        Word: /[^ ]+/\n      }),\n      {\n        inline: true\n      }\n    );\n\n    const input = $$(this.magicBox.element).find('input');\n    if (input) {\n      $$(input).setAttribute('aria-label', this.options.placeholder || l('Search'));\n    }\n\n    this.bind.onRootElement(QueryEvents.buildingQuery, (args: IBuildingQueryEventArgs) => this.handleBuildingQuery(args));\n    this.bind.onRootElement(StandaloneSearchInterfaceEvents.beforeRedirect, () => this.updateQueryState());\n    this.bind.onQueryState(MODEL_EVENTS.CHANGE_ONE, QUERY_STATE_ATTRIBUTES.Q, (args: IAttributeChangedEventArg) =>\n      this.handleQueryStateChanged(args)\n    );\n\n    if (this.options.enableSearchAsYouType) {\n      $$(this.element).addClass('coveo-search-as-you-type');\n      this.magicBox.onchange = () => {\n        this.searchAsYouType();\n      };\n    }\n\n    this.magicBox.onsubmit = () => {\n      this.submit();\n    };\n\n    this.magicBox.onblur = () => {\n      this.updateQueryState();\n    };\n\n    this.magicBox.onclear = () => {\n      this.updateQueryState();\n      if (this.options.triggerQueryOnClear) {\n        this.usageAnalytics.logSearchEvent<IAnalyticsNoMeta>(analyticsActionCauseList.searchboxClear, {});\n        this.triggerNewQuery(false);\n      }\n    };\n  }\n\n  /**\n   * Adds the current content of the input to the query and triggers a query if the current content of the input has\n   * changed since last submit.\n   *\n   * Also logs the `serachboxSubmit` event in the usage analytics.\n   */\n  public submit(): void {\n    this.magicBox.clearSuggestion();\n    this.updateQueryState();\n    this.usageAnalytics.logSearchEvent<IAnalyticsNoMeta>(analyticsActionCauseList.searchboxSubmit, {});\n    this.triggerNewQuery(false);\n  }\n\n  /**\n   * Sets the content of the input.\n   *\n   * @param text The string to set in the input.\n   */\n  public setText(text: string): void {\n    this.magicBox.setText(text);\n    this.updateQueryState();\n  }\n\n  /**\n   * Clears the content of the input.\n   *\n   * See also the [`triggerQueryOnClear`]{@link Querybox.options.triggerQueryOnClear} option.\n   */\n  public clear(): void {\n    this.magicBox.clear();\n  }\n\n  /**\n   * Gets the content of the input.\n   *\n   * @returns {string} The content of the input.\n   */\n  public getText(): string {\n    return this.magicBox.getText();\n  }\n\n  /**\n   * Gets the result from the input.\n   *\n   * @returns {Result} The result.\n   */\n  public getResult() {\n    return this.magicBox.getResult();\n  }\n\n  /**\n   * Gets the displayed result from the input.\n   *\n   * @returns {Result} The displayed result.\n   */\n  public getDisplayedResult(): Result {\n    return this.magicBox.getDisplayedResult();\n  }\n\n  /**\n   * Gets the current cursor position in the input.\n   *\n   * @returns {number} The cursor position (index starts at 0).\n   */\n  public getCursor(): number {\n    return this.magicBox.getCursor();\n  }\n\n  /**\n   * Gets the result at cursor position.\n   *\n   * @param match {string | { (result): boolean }} The match condition.\n   *\n   * @returns {Result[]} The result.\n   */\n  public resultAtCursor(match?: string | { (result): boolean }) {\n    return this.magicBox.resultAtCursor(match);\n  }\n\n  private handleBuildingQuery(args: IBuildingQueryEventArgs): void {\n    Assert.exists(args);\n    Assert.exists(args.queryBuilder);\n\n    this.updateQueryState();\n    this.lastQuery = this.magicBox.getText();\n    new QueryboxQueryParameters(this.options).addParameters(args.queryBuilder, this.lastQuery);\n  }\n\n  private triggerNewQuery(searchAsYouType: boolean): void {\n    clearTimeout(this.searchAsYouTypeTimeout);\n    let text = this.magicBox.getText();\n    if (this.lastQuery != text && text != null) {\n      this.lastQuery = text;\n      this.queryController.executeQuery({\n        searchAsYouType: searchAsYouType,\n        logInActionsHistory: true\n      });\n    }\n  }\n\n  private updateQueryState(): void {\n    this.queryStateModel.set(QueryStateModel.attributesEnum.q, this.magicBox.getText());\n  }\n\n  private handleQueryStateChanged(args: IAttributeChangedEventArg): void {\n    Assert.exists(args);\n    let q = <string>args.value;\n    if (q != this.magicBox.getText()) {\n      this.magicBox.setText(q);\n    }\n  }\n\n  private searchAsYouType(): void {\n    clearTimeout(this.searchAsYouTypeTimeout);\n    this.searchAsYouTypeTimeout = window.setTimeout(() => {\n      this.usageAnalytics.logSearchAsYouType<IAnalyticsNoMeta>(analyticsActionCauseList.searchboxAsYouType, {});\n      this.triggerNewQuery(true);\n    }, this.options.searchAsYouTypeDelay);\n  }\n}\nInitialization.registerAutoCreateComponent(Querybox);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Querybox/Querybox.ts","import { ExpressionRef } from './Expression/ExpressionRef';\nimport { Expression, ExpressionDef } from './Expression/Expression';\nimport { ExpressionOptions } from './Expression/ExpressionOptions';\nimport { ExpressionRegExp } from './Expression/ExpressionRegExp';\nimport _ = require('underscore');\nimport { ExpressionFunction, ExpressionFunctionArgument } from './Expression/ExpressionFunction';\nimport { ExpressionConstant } from './Expression/ExpressionConstant';\nimport { ExpressionList } from './Expression/ExpressionList';\nimport { Result } from './Result/Result';\n\nexport class Grammar {\n  public start: ExpressionRef;\n  public expressions: { [id: string]: Expression } = {};\n\n  constructor(start: string, expressions: { [id: string]: ExpressionDef } = {}) {\n    this.start = new ExpressionRef(start, null, 'start', this);\n    this.addExpressions(expressions);\n  }\n\n  public addExpressions(expressions: { [id: string]: ExpressionDef }) {\n    _.each(expressions, (basicExpression: ExpressionDef, id: string) => {\n      this.addExpression(id, basicExpression);\n    });\n  }\n\n  public addExpression(id: string, basicExpression: ExpressionDef) {\n    if (id in this.expressions) {\n      throw new Error('Grammar already contain the id:' + id);\n    }\n    this.expressions[id] = Grammar.buildExpression(basicExpression, id, this);\n  }\n\n  public getExpression(id: string) {\n    return this.expressions[id];\n  }\n\n  public parse(value: string): Result {\n    return this.start.parse(value, true);\n  }\n\n  public static buildExpression(value: ExpressionDef, id: string, grammar: Grammar): Expression {\n    const type = typeof value;\n    if (type == 'undefined') {\n      throw new Error('Invalid Expression: ' + value);\n    }\n    if (_.isString(value)) {\n      return this.buildStringExpression(<string>value, id, grammar);\n    }\n    if (_.isArray(value)) {\n      return new ExpressionOptions(_.map(<string[]>value, (v: string, i) => new ExpressionRef(v, null, id + '_' + i, grammar)), id);\n    }\n    if (_.isRegExp(value)) {\n      return new ExpressionRegExp(<RegExp>value, id, grammar);\n    }\n    if (_.isFunction(value)) {\n      return new ExpressionFunction(<ExpressionFunctionArgument>value, id, grammar);\n    }\n    throw new Error('Invalid Expression: ' + value);\n  }\n\n  public static buildStringExpression(value: string, id: string, grammar: Grammar): Expression {\n    const matchs = Grammar.stringMatch(value, Grammar.spliter);\n    const expressions = _.map(matchs, (match: string[], i: number): Expression => {\n      if (match[1]) {\n        // Ref\n        const ref = match[1];\n        const occurrence = match[3] ? Number(match[3]) : match[2] || null;\n        return new ExpressionRef(ref, occurrence, id + '_' + i, grammar);\n      } else {\n        // Constant\n        return new ExpressionConstant(match[4], id + '_' + i);\n      }\n    });\n    if (expressions.length == 1) {\n      const expression = expressions[0];\n      expression.id = id;\n      return expression;\n    } else {\n      return new ExpressionList(expressions, id);\n    }\n  }\n\n  public static stringMatch(str: string, re: RegExp) {\n    const groups: string[][] = [];\n    const cloneRegExp = new RegExp(re.source, 'g');\n    let group: RegExpExecArray = cloneRegExp.exec(str);\n\n    while (group !== null) {\n      groups.push(group);\n      group = cloneRegExp.exec(str);\n    }\n    return groups;\n  }\n\n  static spliter = /\\[(\\w+)(\\*|\\+|\\?|\\{([1-9][0-9]*)\\})?\\]|(.[^\\[]*)/;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Grammar.ts","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","///<reference path=\"FieldAddon.ts\" />\n///<reference path=\"QueryExtensionAddon.ts\" />\n///<reference path=\"QuerySuggestAddon.ts\" />\n///<reference path=\"OldOmniboxAddon.ts\" />\n\nimport 'styling/_Omnibox';\nimport * as _ from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\nimport { IOmniboxPreprocessResultForQueryEventArgs, IPopulateOmniboxSuggestionsEventArgs, OmniboxEvents } from '../../events/OmniboxEvents';\nimport { IBuildingQueryEventArgs, IDuringQueryEventArgs, QueryEvents } from '../../events/QueryEvents';\nimport { StandaloneSearchInterfaceEvents } from '../../events/StandaloneSearchInterfaceEvents';\nimport { Assert } from '../../misc/Assert';\nimport { COMPONENT_OPTIONS_ATTRIBUTES } from '../../models/ComponentOptionsModel';\nimport { IAttributeChangedEventArg, MODEL_EVENTS } from '../../models/Model';\nimport { QUERY_STATE_ATTRIBUTES, QueryStateModel } from '../../models/QueryStateModel';\nimport { l } from '../../strings/Strings';\nimport { $$, Dom } from '../../utils/Dom';\nimport { Utils } from '../../utils/Utils';\nimport {\n  IAnalyticsActionCause,\n  IAnalyticsNoMeta,\n  IAnalyticsOmniboxSuggestionMeta,\n  analyticsActionCauseList\n} from '../Analytics/AnalyticsActionListMeta';\nimport { PendingSearchAsYouTypeSearchEvent } from '../Analytics/PendingSearchAsYouTypeSearchEvent';\nimport { logSearchBoxSubmitEvent } from '../Analytics/SharedAnalyticsCalls';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions, IFieldOption } from '../Base/ComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { IQueryboxOptions, Querybox } from '../Querybox/Querybox';\nimport { QueryboxQueryParameters } from '../Querybox/QueryboxQueryParameters';\nimport { StandaloneSearchInterface } from '../SearchInterface/SearchInterface';\nimport { FieldAddon } from './FieldAddon';\nimport { OldOmniboxAddon } from './OldOmniboxAddon';\nimport { QueryExtensionAddon } from './QueryExtensionAddon';\nimport { IQuerySuggestAddon, QuerySuggestAddon, VoidQuerySuggestAddon } from './QuerySuggestAddon';\nimport { Grammar } from '../../magicbox/Grammar';\nimport { Complete } from '../../magicbox/Grammars/Complete';\nimport { Expressions } from '../../magicbox/Grammars/Expressions';\nimport { Suggestion } from '../../magicbox/SuggestionsManager';\nimport { ExpressionDef } from '../../magicbox/Expression/Expression';\nimport { Result } from '../../magicbox/Result/Result';\nimport { MagicBoxInstance, createMagicBox } from '../../magicbox/MagicBox';\nimport { QueryboxOptionsProcessing } from '../Querybox/QueryboxOptionsProcessing';\n\nexport interface IOmniboxSuggestion extends Suggestion {\n  executableConfidence?: number;\n}\n\nexport interface IOmniboxOptions extends IQueryboxOptions {\n  inline?: boolean;\n  enableFieldAddon?: boolean;\n  enableSimpleFieldAddon?: boolean;\n  listOfFields?: IFieldOption[];\n  fieldAlias?: { [alias: string]: IFieldOption };\n  enableQuerySuggestAddon?: boolean;\n  enableQueryExtensionAddon?: boolean;\n  omniboxTimeout?: number;\n  placeholder?: string;\n  numberOfSuggestions?: number;\n  grammar?: (\n    grammar: { start: string; expressions: { [id: string]: ExpressionDef } }\n  ) => { start: string; expressions: { [id: string]: ExpressionDef } };\n}\n\nconst MINIMUM_EXECUTABLE_CONFIDENCE = 0.8;\n\n/**\n * The `Omnibox` component extends the [`Querybox`]{@link Querybox}, and thus provides the same basic options and\n * behaviors. Furthermore, the `Omnibox` adds a type-ahead capability to the search input.\n *\n * You can configure the type-ahead feature by enabling or disabling certain addons, which the Coveo JavaScript Search\n * Framework provides out-of-the-box (see the [`enableFieldAddon`]{@link Omnibox.options.enableFieldAddon},\n * [`enableQueryExtension`]{@link Omnibox.options.enableQueryExtensionAddon}, and\n * [`enableQuerySuggestAddon`]{@link Omnibox.options.enableQuerySuggestAddon} options).\n *\n * Custom components and external code can also extend or customize the type-ahead feature and the query completion\n * suggestions it provides by attaching their own handlers to the\n * [`populateOmniboxSuggestions`]{@link OmniboxEvents.populateOmniboxSuggestions`] event.\n *\n * See also the [`Searchbox`]{@link Searchbox} component, which can automatically instantiate an `Omnibox` along with an\n * optional {@link SearchButton}.\n */\nexport class Omnibox extends Component {\n  public static ID = 'Omnibox';\n\n  static doExport = () => {\n    exportGlobally({\n      Omnibox: Omnibox,\n      QueryboxQueryParameters: QueryboxQueryParameters\n    });\n  };\n\n  /**\n   * The options for the omnibox\n   * @componentOptions\n   */\n  static options: IOmniboxOptions = {\n    /**\n     * Specifies whether query completion suggestions appearing in the `Omnibox` should push the result list and facets\n     * down, rather than rendering themselves over them (and partially hiding them).\n     *\n     * Set this option as well as {@link Omnibox.options.enableSearchAsYouType} and\n     * {@link Omnibox.options.enableQuerySuggestAddon} to `true` for a cool effect!\n     *\n     * Default value is `false`.\n     */\n    inline: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n    /**\n     * Whether to automatically trigger a new query whenever the end user types additional text in the search box input.\n     *\n     * See also the [`searchAsYouTypeDelay`]{@link Omnibox.options.searchAsYouTypeDelay} option.\n     *\n     * **Note:**\n     * > If you set this option and the [`enableQuerySuggestAddon`]{@link Omnibox.options.enableQuerySuggestAddon}\n     * > option to `true`, the query suggestion feature returns the auto-completion of the currently typed keyword as\n     * > its first suggestion.\n     *\n     * Default value is `false`.\n     */\n    enableSearchAsYouType: ComponentOptions.buildBooleanOption({ defaultValue: false, section: 'SearchAsYouType' }),\n\n    /**\n     * If {@link Omnibox.options.enableSearchAsYouType} is `true`, specifies the delay (in milliseconds) before\n     * triggering a new query when the end user types in the `Omnibox`.\n     *\n     * Default value is `2000`. Minimum value is `0`.\n     */\n    searchAsYouTypeDelay: ComponentOptions.buildNumberOption({\n      defaultValue: 2000,\n      min: 0,\n      depend: 'enableSearchAsYouType',\n      section: 'SearchAsYouType'\n    }),\n\n    /**\n     * The `field` addon makes the `Omnibox` highlight and complete field syntax. Setting this option to `true` automatically sets\n     * the [enableQuerySyntax]{@link Querybox.options.enableQuerySyntax} option to `true` as a side effect.\n     *\n     * **Example:**\n     * > Suppose you want to search for PDF files. You start typing `@f` in the search box. The `Omnibox` provides\n     * > you with several matching fields. You select the `@filetype` field. Then, you start typing `=p` in the input.\n     * > This time, the `Omnibox` provides you with several matching values for the `@filetype` field. You select the\n     * > `pdf` suggestion, and submit your search request. Since the `enableQuerySyntax` option is set to `true`, the\n     * > Coveo Search API interprets the basic expression as query syntax and returns the items whose `@filetype` field\n     * > matches the `pdf` value.\n     *\n     * Default value is `false`.\n     */\n    enableFieldAddon: ComponentOptions.buildBooleanOption({\n      defaultValue: false,\n      depend: 'enableQuerySyntax',\n      postProcessing: (value, options: IOmniboxOptions) => {\n        if (value) {\n          options.enableQuerySyntax = true;\n        }\n        return value;\n      },\n      section: 'QuerySyntax'\n    }),\n    enableSimpleFieldAddon: ComponentOptions.buildBooleanOption({ defaultValue: false, depend: 'enableFieldAddon' }),\n    listOfFields: ComponentOptions.buildFieldsOption({ depend: 'enableFieldAddon' }),\n\n    /**\n     * Whether to display Coveo Machine Learning (Coveo ML) query suggestions in the `Omnibox`.\n     *\n     * The corresponding Coveo ML model must be properly configured in your Coveo Cloud organization, otherwise this\n     * option has no effect (see\n     * [Managing Machine Learning Query Suggestions in a Query Pipeline](http://www.coveo.com/go?dest=cloudhelp&lcid=9&context=168)).\n     *\n     * **Note:**\n     * > When you set this option and the [`enableSearchAsYouType`]{@link Omnibox.options.enableSearchAsYouType} option\n     * > to `true`, the query suggestion feature returns the auto-completion of the currently typed keyword as its first\n     * > query suggestion.\n     *\n     * Default value is `true`.\n     */\n    enableQuerySuggestAddon: ComponentOptions.buildBooleanOption({\n      defaultValue: true,\n      alias: ['enableTopQueryAddon', 'enableRevealQuerySuggestAddon']\n    }),\n\n    /**\n     * If {@link Querybox.options.enableQuerySyntax} is `true`, specifies whether to enable the `query extension` addon.\n     *\n     * The `query extension` addon allows the Omnibox to complete the syntax for query extensions.\n     *\n     * Default value is `false`.\n     */\n    enableQueryExtensionAddon: ComponentOptions.buildBooleanOption({\n      defaultValue: false,\n      depend: 'enableQuerySyntax',\n      postProcessing: (value, options: IOmniboxOptions) => {\n        if (value) {\n          options.enableQuerySyntax = true;\n        }\n        return value;\n      },\n      section: 'QuerySyntax'\n    }),\n\n    /**\n     * Specifies a placeholder for the input.\n     */\n    placeholder: ComponentOptions.buildLocalizedStringOption(),\n\n    /**\n     * Specifies a timeout (in milliseconds) before rejecting suggestions in the Omnibox.\n     *\n     * Default value is `2000`. Minimum value is `0`.\n     */\n    omniboxTimeout: ComponentOptions.buildNumberOption({ defaultValue: 2000, min: 0 }),\n    /**\n     * Specifies whether the Coveo Platform should try to interpret special query syntax such as field references in the\n     * query that the user enters in the Querybox (see\n     * [Coveo Query Syntax Reference](http://www.coveo.com/go?dest=adminhelp70&lcid=9&context=10005)).\n     *\n     * Setting this option to `true` also causes the query syntax in the Querybox to highlight.\n     *\n     * Default value is `false`.\n     */\n    enableQuerySyntax: ComponentOptions.buildBooleanOption({\n      defaultValue: false,\n      section: 'QuerySyntax'\n    }),\n    /**\n     * Specifies the number of suggestions that should appear in standard ML-powered query suggestions.\n     *\n     * This option only affects the number of suggestions that appear with the {@link Omnibox.options.enableQuerySuggestAddon} option.\n     *\n     * This options does not affect the {@link AnalyticsSuggestions} or the {@link FieldSuggestions} component, which expose their own dedicated options for this parameter.\n     *\n     * Default value is `5`.\n     *\n     * Minimum value is `1`.\n     */\n    numberOfSuggestions: ComponentOptions.buildNumberOption({\n      defaultValue: 5,\n      min: 1\n    })\n  };\n\n  public magicBox: MagicBoxInstance;\n  private partialQueries: string[] = [];\n  private lastSuggestions: IOmniboxSuggestion[] = [];\n  private lastQuery: string;\n  private modifyEventTo: IAnalyticsActionCause;\n  private movedOnce = false;\n  private searchAsYouTypeTimeout: number;\n  private skipAutoSuggest = false;\n\n  public suggestionAddon: IQuerySuggestAddon;\n\n  /**\n   * Creates a new Omnibox component. Also enables necessary addons and binds events on various query events.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the Omnibox 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?: IOmniboxOptions, bindings?: IComponentBindings) {\n    super(element, Omnibox.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(element, Omnibox, options);\n    const originalValueForQuerySyntax = this.options.enableQuerySyntax;\n    new QueryboxOptionsProcessing(this).postProcess();\n\n    $$(this.element).toggleClass('coveo-query-syntax-disabled', this.options.enableQuerySyntax == false);\n\n    this.suggestionAddon = this.options.enableQuerySuggestAddon ? new QuerySuggestAddon(this) : new VoidQuerySuggestAddon();\n    new OldOmniboxAddon(this);\n    this.createMagicBox();\n\n    this.bind.onRootElement(QueryEvents.buildingQuery, (args: IBuildingQueryEventArgs) => this.handleBuildingQuery(args));\n    this.bind.onRootElement(StandaloneSearchInterfaceEvents.beforeRedirect, () => this.handleBeforeRedirect());\n    this.bind.onRootElement(QueryEvents.querySuccess, () => this.handleQuerySuccess());\n    this.bind.onQueryState(MODEL_EVENTS.CHANGE_ONE, QUERY_STATE_ATTRIBUTES.Q, (args: IAttributeChangedEventArg) =>\n      this.handleQueryStateChanged(args)\n    );\n    if (this.isAutoSuggestion()) {\n      this.bind.onRootElement(QueryEvents.duringQuery, (args: IDuringQueryEventArgs) => this.handleDuringQuery(args));\n    }\n    this.bind.onComponentOptions(MODEL_EVENTS.CHANGE_ONE, COMPONENT_OPTIONS_ATTRIBUTES.SEARCH_BOX, (args: IAttributeChangedEventArg) => {\n      if (args.value.enableQuerySyntax != null) {\n        this.options.enableQuerySyntax = args.value.enableQuerySyntax;\n      } else {\n        this.options.enableQuerySyntax = originalValueForQuerySyntax;\n      }\n      this.updateGrammar();\n    });\n  }\n\n  /**\n   * Adds the current content of the input to the query and triggers a query if the current content of the input has\n   * changed since last submit.\n   *\n   * Also logs a `searchboxSubmit` event in the usage analytics.\n   */\n  public submit() {\n    this.magicBox.clearSuggestion();\n    this.updateQueryState();\n    this.triggerNewQuery(false, () => {\n      logSearchBoxSubmitEvent(this.usageAnalytics);\n    });\n    this.magicBox.blur();\n  }\n\n  /**\n   * Gets the current content of the input.\n   * @returns {string} The current content of the input.\n   */\n  public getText() {\n    return this.magicBox.getText();\n  }\n\n  /**\n   * Sets the content of the input\n   * @param text The string to set in the input.\n   */\n  public setText(text: string) {\n    this.magicBox.setText(text);\n    this.updateQueryState();\n  }\n\n  /**\n   * Clears the content of the input.\n   */\n  public clear() {\n    this.magicBox.clear();\n  }\n\n  /**\n   * Gets the `HTMLInputElement` of the Omnibox.\n   */\n  public getInput() {\n    return <HTMLInputElement>this.magicBox.element.querySelector('input');\n  }\n\n  public getResult() {\n    return this.magicBox.getResult();\n  }\n\n  public getDisplayedResult() {\n    return this.magicBox.getDisplayedResult();\n  }\n\n  public getCursor() {\n    return this.magicBox.getCursor();\n  }\n\n  public resultAtCursor(match?: string | { (result: Result): boolean }) {\n    return this.magicBox.resultAtCursor(match);\n  }\n\n  private createGrammar() {\n    let grammar = null;\n\n    if (this.options.enableQuerySyntax) {\n      grammar = Expressions(Complete);\n      if (this.options.enableFieldAddon) {\n        new FieldAddon(this);\n      }\n      if (this.options.fieldAlias != null) {\n        this.options.listOfFields = this.options.listOfFields || [];\n        this.options.listOfFields = this.options.listOfFields.concat(_.keys(this.options.fieldAlias));\n      }\n      if (this.options.enableQueryExtensionAddon) {\n        new QueryExtensionAddon(this);\n      }\n    } else {\n      grammar = { start: 'Any', expressions: { Any: /.*/ } };\n    }\n\n    if (this.options.grammar != null) {\n      grammar = this.options.grammar(grammar);\n    }\n\n    return grammar;\n  }\n\n  private updateGrammar() {\n    const grammar = this.createGrammar();\n    this.magicBox.grammar = new Grammar(grammar.start, grammar.expressions);\n    this.magicBox.setText(this.magicBox.getText());\n  }\n\n  private createMagicBox() {\n    const grammar = this.createGrammar();\n    this.magicBox = createMagicBox(this.element, new Grammar(grammar.start, grammar.expressions), {\n      inline: this.options.inline,\n      selectableSuggestionClass: 'coveo-omnibox-selectable',\n      selectedSuggestionClass: 'coveo-omnibox-selected',\n      suggestionTimeout: this.options.omniboxTimeout\n    });\n\n    const input = $$(this.magicBox.element).find('input');\n\n    if (input) {\n      $$(input).setAttribute('aria-label', this.options.placeholder || l('Search'));\n    }\n\n    this.setupMagicBox();\n  }\n\n  private setupMagicBox() {\n    this.magicBox.onmove = () => {\n      // We assume that once the user has moved its selection, it becomes an explicit omnibox analytics event\n      if (this.isAutoSuggestion()) {\n        this.modifyEventTo = this.getOmniboxAnalyticsEventCause();\n      }\n      this.movedOnce = true;\n    };\n\n    this.magicBox.onfocus = () => {\n      if (this.isAutoSuggestion()) {\n        // This flag is used to block the automatic query when the UI is loaded with a query (#q=foo)\n        // and then the input is focused. We want to block that query, even if it match the suggestion\n        // Only when there is an actual change in the input (user typing something) is when we want the automatic query to kick in\n        this.skipAutoSuggest = true;\n      }\n    };\n\n    this.magicBox.onsuggestions = (suggestions: IOmniboxSuggestion[]) => {\n      // If text is empty, this can mean that user selected text from the search box\n      // and hit \"delete\" : Reset the partial queries in this case\n      if (Utils.isEmptyString(this.getText())) {\n        this.partialQueries = [];\n      }\n      this.movedOnce = false;\n      this.lastSuggestions = suggestions;\n      if (this.isAutoSuggestion() && !this.skipAutoSuggest) {\n        this.searchAsYouType();\n      }\n    };\n\n    if (this.options.enableSearchAsYouType) {\n      $$(this.element).addClass('coveo-magicbox-search-as-you-type');\n    }\n\n    this.magicBox.onchange = () => {\n      this.skipAutoSuggest = false;\n      const text = this.getText();\n      if (text != undefined && text != '') {\n        if (this.isAutoSuggestion()) {\n          if (this.movedOnce) {\n            this.searchAsYouType(true);\n          }\n        } else if (this.options.enableSearchAsYouType) {\n          this.searchAsYouType(true);\n        }\n      } else {\n        this.clear();\n      }\n    };\n\n    if (this.options.placeholder) {\n      (<HTMLInputElement>this.magicBox.element.querySelector('input')).placeholder = this.options.placeholder;\n    }\n    this.magicBox.onsubmit = () => this.submit();\n\n    this.magicBox.onselect = (suggestion: IOmniboxSuggestion) => {\n      const index = _.indexOf(this.lastSuggestions, suggestion);\n      const suggestions = _.compact(_.map(this.lastSuggestions, suggestion => suggestion.text));\n      this.magicBox.clearSuggestion();\n      this.updateQueryState();\n      // A bit tricky here : When it's machine learning auto suggestions\n      // the mouse selection and keyboard selection acts differently :\n      // keyboard selection will automatically do the query (which will log a search as you type event -> further modified by this.modifyEventTo if needed)\n      // mouse selection will not \"auto\" send the query.\n      // the movedOnce variable detect the keyboard movement, and is used to differentiate mouse vs keyboard\n      if (!this.isAutoSuggestion()) {\n        this.usageAnalytics.cancelAllPendingEvents();\n        this.triggerNewQuery(false, () => {\n          this.usageAnalytics.logSearchEvent<IAnalyticsOmniboxSuggestionMeta>(\n            this.getOmniboxAnalyticsEventCause(),\n            this.buildCustomDataForPartialQueries(index, suggestions)\n          );\n        });\n      } else if (this.isAutoSuggestion() && this.movedOnce) {\n        this.handleAutoSuggestionWithKeyboard(index, suggestions);\n      } else if (this.isAutoSuggestion() && !this.movedOnce) {\n        this.handleAutoSuggestionsWithMouse(index, suggestions);\n      }\n\n      // Consider a selection like a reset of the partial queries (it's the end of a suggestion pattern)\n      if (this.isAutoSuggestion()) {\n        this.partialQueries = [];\n      }\n    };\n\n    this.magicBox.onblur = () => {\n      if (this.isAutoSuggestion()) {\n        this.setText(this.getQuery(true));\n        this.usageAnalytics.sendAllPendingEvents();\n      }\n    };\n\n    this.magicBox.onclear = () => {\n      this.updateQueryState();\n      if (this.options.triggerQueryOnClear || this.options.enableSearchAsYouType) {\n        this.triggerNewQuery(false, () => {\n          this.usageAnalytics.logSearchEvent<IAnalyticsNoMeta>(analyticsActionCauseList.searchboxClear, {});\n        });\n      }\n    };\n\n    this.magicBox.ontabpress = () => {\n      this.handleTabPress();\n    };\n\n    this.magicBox.getSuggestions = () => this.handleSuggestions();\n  }\n\n  private handleAutoSuggestionWithKeyboard(index: number, suggestions: string[]) {\n    if (this.searchAsYouTypeTimeout) {\n      // Here, there is currently a search as you typed queued up :\n      // Think : user typed very quickly, then very quickly selected a suggestion (without waiting for the search as you type)\n      // Cancel the search as you type query, then immediately do the query with the selection (+analytics event with the selection)\n      this.usageAnalytics.cancelAllPendingEvents();\n      clearTimeout(this.searchAsYouTypeTimeout);\n      this.searchAsYouTypeTimeout = undefined;\n      this.triggerNewQuery(false, () => {\n        this.usageAnalytics.logSearchEvent<IAnalyticsOmniboxSuggestionMeta>(\n          this.getOmniboxAnalyticsEventCause(),\n          this.buildCustomDataForPartialQueries(index, suggestions)\n        );\n      });\n    } else {\n      // Here, the search as you type query has returned, but the analytics event has not ye been sent.\n      // Think : user typed slowly, the query returned, and then the user selected a suggestion.\n      // Since the analytics event has not yet been sent (search as you type event have a 5 sec delay)\n      // modify the pending event, then send the newly modified analytics event immediately.\n      this.modifyEventTo = this.getOmniboxAnalyticsEventCause();\n      this.modifyCustomDataOnPending(index, suggestions);\n      this.modifyQueryContentOnPending();\n      this.usageAnalytics.sendAllPendingEvents();\n    }\n  }\n\n  private handleAutoSuggestionsWithMouse(index: number, suggestions: string[]) {\n    if (this.searchAsYouTypeTimeout || index != 0) {\n      // Here : the user either very quickly chose the first suggestion, and the search as you type is still queued up.\n      // OR\n      // the user chose something different then the first suggestion.\n      // Remove the search as you type if it's there, and do the query with the suggestion directly.\n      this.clearSearchAsYouType();\n      this.usageAnalytics.cancelAllPendingEvents();\n      this.triggerNewQuery(false, () => {\n        this.usageAnalytics.logSearchEvent<IAnalyticsOmniboxSuggestionMeta>(\n          this.getOmniboxAnalyticsEventCause(),\n          this.buildCustomDataForPartialQueries(index, suggestions)\n        );\n      });\n    } else {\n      // Here : the user either very slowly chose a suggestion, and there is no search as you typed queued up\n      // AND\n      // the user chose the first suggestion.\n      // this means the query is already returned, but the analytics event is still queued up.\n      // modify the analytics event, and send it.\n      this.modifyEventTo = this.getOmniboxAnalyticsEventCause();\n      this.modifyCustomDataOnPending(index, suggestions);\n      this.modifyQueryContentOnPending();\n      this.usageAnalytics.sendAllPendingEvents();\n\n      // This should happen if :\n      // users did a (short) query first, which does not match the first suggestion. (eg: typed \"t\", then search)\n      // then, refocus the search box. The same suggestion(s) will re-appear.\n      // By selecting the first one with the mouse, we need to retrigger a query because this means the search as you type could not\n      // kick in and do the query automatically.\n      if (this.lastQuery != this.getText()) {\n        this.triggerNewQuery(false, () => {\n          this.usageAnalytics.logSearchEvent<IAnalyticsOmniboxSuggestionMeta>(\n            this.getOmniboxAnalyticsEventCause(),\n            this.buildCustomDataForPartialQueries(index, suggestions)\n          );\n        });\n      }\n    }\n  }\n\n  private modifyCustomDataOnPending(index: number, suggestions: string[]) {\n    const pendingEvt = this.usageAnalytics.getPendingSearchEvent();\n    if (pendingEvt instanceof PendingSearchAsYouTypeSearchEvent) {\n      const newCustomData = this.buildCustomDataForPartialQueries(index, suggestions);\n      _.each(_.keys(newCustomData), (k: string) => {\n        (<PendingSearchAsYouTypeSearchEvent>pendingEvt).modifyCustomData(k, newCustomData[k]);\n      });\n    }\n  }\n\n  private modifyQueryContentOnPending() {\n    const pendingEvt = this.usageAnalytics.getPendingSearchEvent();\n    if (pendingEvt instanceof PendingSearchAsYouTypeSearchEvent) {\n      const queryContent = this.getQuery(this.options.enableSearchAsYouType);\n      pendingEvt.modifyQueryContent(queryContent);\n    }\n  }\n\n  private buildCustomDataForPartialQueries(index: number, suggestions: string[]): IAnalyticsOmniboxSuggestionMeta {\n    return {\n      partialQueries: this.cleanCustomData(this.partialQueries),\n      suggestionRanking: index,\n      suggestions: this.cleanCustomData(suggestions),\n      partialQuery: _.last(this.partialQueries)\n    };\n  }\n\n  private cleanCustomData(toClean: string[], rejectLength = 256) {\n    // Filter out only consecutive values that are the identical\n    toClean = _.compact(\n      _.filter(toClean, (partial: string, pos?: number, array?: string[]) => {\n        return pos === 0 || partial !== array[pos - 1];\n      })\n    );\n\n    // Custom dimensions cannot be an array in analytics service: Send a string joined by ; instead.\n    // Need to replace ;\n    toClean = _.map(toClean, partial => {\n      return partial.replace(/;/g, '');\n    });\n\n    // Reduce right to get the last X words that adds to less then rejectLength\n    const reducedToRejectLengthOrLess = [];\n    _.reduceRight(\n      toClean,\n      (memo: number, partial: string) => {\n        const totalSoFar = memo + partial.length;\n        if (totalSoFar <= rejectLength) {\n          reducedToRejectLengthOrLess.push(partial);\n        }\n        return totalSoFar;\n      },\n      0\n    );\n    toClean = reducedToRejectLengthOrLess.reverse();\n    const ret = toClean.join(';');\n\n    // analytics service can store max 256 char in a custom event\n    // if we're over that, call cleanup again with an arbitrary 10 less char accepted\n    if (ret.length >= 256) {\n      return this.cleanCustomData(toClean, rejectLength - 10);\n    }\n\n    return toClean.join(';');\n  }\n\n  private handleSuggestions() {\n    const suggestionsEventArgs: IPopulateOmniboxSuggestionsEventArgs = {\n      suggestions: [],\n      omnibox: this\n    };\n    this.bind.trigger(this.element, OmniboxEvents.populateOmniboxSuggestions, suggestionsEventArgs);\n    const text = this.getText();\n    if (!Utils.isNullOrEmptyString(text)) {\n      this.partialQueries.push(text);\n    }\n    return _.compact(suggestionsEventArgs.suggestions);\n  }\n\n  private handleBeforeRedirect() {\n    this.updateQueryState();\n  }\n\n  private handleBuildingQuery(data: IBuildingQueryEventArgs) {\n    Assert.exists(data);\n    Assert.exists(data.queryBuilder);\n    this.updateQueryState();\n    this.lastQuery = this.getQuery(data.searchAsYouType);\n\n    const result: Result =\n      this.lastQuery == this.magicBox.getDisplayedResult().input\n        ? this.magicBox.getDisplayedResult().clone()\n        : this.magicBox.grammar.parse(this.lastQuery).clean();\n    const preprocessResultForQueryArgs: IOmniboxPreprocessResultForQueryEventArgs = {\n      result: result\n    };\n\n    if (this.options.enableQuerySyntax) {\n      const notQuotedValues = preprocessResultForQueryArgs.result.findAll('FieldValueNotQuoted');\n      _.each(notQuotedValues, (value: Result) => (value.value = '\"' + value.value.replace(/\"|\\u00A0/g, ' ') + '\"'));\n      if (this.options.fieldAlias) {\n        const fieldNames = preprocessResultForQueryArgs.result.findAll(\n          (result: Result) => result.expression.id == 'FieldName' && result.isSuccess()\n        );\n        _.each(fieldNames, (result: Result) => {\n          const alias = _.find(_.keys(this.options.fieldAlias), (alias: string) => alias.toLowerCase() == result.value.toLowerCase());\n          if (alias != null) {\n            result.value = <string>this.options.fieldAlias[alias];\n          }\n        });\n      }\n    }\n\n    this.bind.trigger(this.element, OmniboxEvents.omniboxPreprocessResultForQuery, preprocessResultForQueryArgs);\n    const query = preprocessResultForQueryArgs.result.toString();\n    new QueryboxQueryParameters(this.options).addParameters(data.queryBuilder, query);\n  }\n\n  private handleTabPress() {\n    if (this.options.enableQuerySuggestAddon) {\n      this.handleTabPressForSuggestions();\n    }\n    this.handleTabPressForOldOmniboxAddon();\n  }\n\n  private handleTabPressForSuggestions() {\n    if (!this.options.enableSearchAsYouType) {\n      const suggestions = _.compact(_.map(this.lastSuggestions, suggestion => suggestion.text));\n      this.usageAnalytics.logCustomEvent(\n        this.getOmniboxAnalyticsEventCause(),\n        this.buildCustomDataForPartialQueries(0, suggestions),\n        this.element\n      );\n    } else {\n      this.setText(this.getQuery(true));\n    }\n  }\n\n  private handleTabPressForOldOmniboxAddon() {\n    const domSuggestions = this.lastSuggestions.filter(suggestions => suggestions.dom).map(suggestions => $$(suggestions.dom));\n    const selected = this.findAllElementsWithClass(domSuggestions, '.coveo-omnibox-selected');\n    if (selected.length > 0) {\n      $$(selected[0]).trigger('tabSelect');\n    } else if (!this.options.enableQuerySuggestAddon) {\n      const selectable = this.findAllElementsWithClass(domSuggestions, '.coveo-omnibox-selectable');\n      if (selectable.length > 0) {\n        $$(selectable[0]).trigger('tabSelect');\n      }\n    }\n  }\n\n  private findAllElementsWithClass(elements: Dom[], className: string): Dom[] {\n    return elements\n      .map(element => element.find(className))\n      .filter(s => s)\n      .reduce((total, s) => total.concat(s), []);\n  }\n\n  private triggerNewQuery(searchAsYouType: boolean, analyticsEvent: () => void) {\n    clearTimeout(this.searchAsYouTypeTimeout);\n    const shouldExecuteQuery = this.shouldExecuteQuery(searchAsYouType);\n    this.lastQuery = this.getQuery(searchAsYouType);\n    shouldExecuteQuery && analyticsEvent();\n\n    this.queryController.executeQuery({\n      searchAsYouType: searchAsYouType,\n      logInActionsHistory: true,\n      cancel: !shouldExecuteQuery\n    });\n  }\n\n  private getQuery(searchAsYouType: boolean) {\n    if (this.lastQuery == this.magicBox.getText()) {\n      return this.lastQuery;\n    }\n\n    if (!searchAsYouType) {\n      return this.magicBox.getText();\n    }\n\n    const wordCompletion = this.magicBox.getWordCompletion();\n\n    if (wordCompletion != null) {\n      return wordCompletion;\n    }\n\n    const currentOmniboxSuggestion = this.magicBox.getWordCompletion() || this.getFirstSuggestion();\n    if (currentOmniboxSuggestion) {\n      return currentOmniboxSuggestion;\n    }\n\n    if (this.isAutoSuggestion()) {\n      return this.lastQuery || this.magicBox.getText();\n    }\n\n    return this.magicBox.getText();\n  }\n\n  private getFirstSuggestion() {\n    if (this.lastSuggestions == null) {\n      return '';\n    }\n\n    if (this.lastSuggestions.length <= 0) {\n      return '';\n    }\n\n    const textSuggestion = _.find(this.lastSuggestions, (suggestion: IOmniboxSuggestion) => suggestion.text != null);\n\n    if (textSuggestion == null) {\n      return '';\n    }\n\n    return textSuggestion.text;\n  }\n\n  public updateQueryState() {\n    this.queryStateModel.set(QueryStateModel.attributesEnum.q, this.magicBox.getText());\n  }\n\n  private handleQueryStateChanged(args: IAttributeChangedEventArg) {\n    Assert.exists(args);\n    const q = <string>args.value;\n    if (q != this.magicBox.getText()) {\n      this.magicBox.setText(q);\n    }\n  }\n\n  private handleQuerySuccess() {\n    if (!this.isAutoSuggestion()) {\n      this.partialQueries = [];\n    }\n  }\n\n  private handleDuringQuery(args: IDuringQueryEventArgs) {\n    // When the query results returns ... (args.promise)\n    args.promise.then(() => {\n      // Get a handle on a pending search as you type (those events are delayed, not sent instantly)\n      const pendingEvent = this.usageAnalytics.getPendingSearchEvent();\n      if (pendingEvent instanceof PendingSearchAsYouTypeSearchEvent) {\n        (<PendingSearchAsYouTypeSearchEvent>pendingEvent).beforeResolve.then(evt => {\n          // Check if we need to modify the event type beforeResolving it\n          args.promise.then(() => {\n            if (this.modifyEventTo) {\n              evt.modifyEventCause(this.modifyEventTo);\n              this.modifyEventTo = null;\n            }\n          });\n        });\n      }\n    });\n  }\n\n  private searchAsYouType(forceExecuteQuery = false) {\n    this.clearSearchAsYouType();\n    if (this.shouldExecuteQuery(true)) {\n      this.searchAsYouTypeTimeout = window.setTimeout(() => {\n        if (this.suggestionShouldTriggerQuery() || forceExecuteQuery) {\n          const suggestions = _.map(this.lastSuggestions, suggestion => suggestion.text);\n          const index = _.indexOf(suggestions, this.magicBox.getWordCompletion());\n          this.triggerNewQuery(true, () => {\n            this.usageAnalytics.logSearchAsYouType<IAnalyticsOmniboxSuggestionMeta>(\n              analyticsActionCauseList.searchboxAsYouType,\n              this.buildCustomDataForPartialQueries(index, suggestions)\n            );\n          });\n          this.clearSearchAsYouType();\n        }\n      }, this.options.searchAsYouTypeDelay);\n    }\n  }\n\n  private isAutoSuggestion() {\n    return this.options.enableSearchAsYouType && this.options.enableQuerySuggestAddon;\n  }\n\n  private shouldExecuteQuery(searchAsYouType: boolean) {\n    const text = this.getQuery(searchAsYouType);\n    if (this.searchInterface.options.allowQueriesWithoutKeywords === false) {\n      return this.lastQuery != text && Utils.isNonEmptyString(text);\n    }\n    return this.lastQuery != text && text != null;\n  }\n\n  private suggestionShouldTriggerQuery(suggestions = this.lastSuggestions) {\n    if (this.shouldExecuteQuery(true)) {\n      if (suggestions && suggestions[0]) {\n        const suggestion = suggestions[0];\n        // If we have access to a confidence level, return true if we are equal or above the minimum confidence level.\n        if (suggestion && suggestion.executableConfidence != undefined) {\n          return suggestion.executableConfidence >= MINIMUM_EXECUTABLE_CONFIDENCE;\n        }\n        // If we don't have access to a confidence level, return true only if it \"starts with\" the content of the search box\n        if (suggestion.text && suggestion.text.indexOf(this.magicBox.getText()) == 0) {\n          return true;\n        }\n      }\n    }\n    return false;\n  }\n\n  private clearSearchAsYouType() {\n    clearTimeout(this.searchAsYouTypeTimeout);\n    this.searchAsYouTypeTimeout = undefined;\n  }\n\n  private getOmniboxAnalyticsEventCause() {\n    if (this.searchInterface instanceof StandaloneSearchInterface) {\n      return analyticsActionCauseList.omniboxFromLink;\n    }\n    return analyticsActionCauseList.omniboxAnalytics;\n  }\n}\n\nOmnibox.options = { ...Omnibox.options, ...Querybox.options };\nInitialization.registerAutoCreateComponent(Omnibox);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Omnibox/Omnibox.ts","import { exportGlobally } from '../../GlobalExports';\nimport { l } from '../../strings/Strings';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { $$ } from '../../utils/Dom';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { Utils } from '../../utils/Utils';\nimport { IAnalyticsNoMeta, analyticsActionCauseList } from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { Initialization } from '../Base/Initialization';\n\nexport interface ISearchButtonOptions {}\n\n/**\n * The SearchButton component renders a search icon that the end user can click to trigger a new query.\n *\n * See also the {@link Searchbox} component, which can automatically instantiate a SearchButton component along with a\n * {@link Querybox} component or an {@link Omnibox} component.\n */\nexport class SearchButton extends Component {\n  static ID = 'SearchButton';\n\n  static doExport = () => {\n    exportGlobally({\n      SearchButton: SearchButton\n    });\n  };\n\n  static options: ISearchButtonOptions = {};\n\n  /**\n   * Creates a new SearchButton. Binds a `click` event on the element. Adds a search icon on the element.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the SearchButton 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?: ISearchButtonOptions, bindings?: IComponentBindings) {\n    super(element, SearchButton.ID, bindings);\n\n    new AccessibleButton()\n      .withElement(element)\n      .withOwner(this.bind)\n      .withLabel(l('Search'))\n      .withSelectAction(() => this.handleClick())\n      .build();\n\n    // Provide a magnifier icon if element contains nothing\n    if (Utils.trim($$(this.element).text()) == '') {\n      const svgMagnifierContainer = $$('span', { className: 'coveo-search-button' }, SVGIcons.icons.search).el;\n      SVGDom.addClassToSVGInContainer(svgMagnifierContainer, 'coveo-search-button-svg');\n      const svgLoadingAnimationContainer = $$('span', { className: 'coveo-search-button-loading' }, SVGIcons.icons.loading).el;\n      SVGDom.addClassToSVGInContainer(svgLoadingAnimationContainer, 'coveo-search-button-loading-svg');\n      element.appendChild(svgMagnifierContainer);\n      element.appendChild(svgLoadingAnimationContainer);\n    }\n  }\n\n  /**\n   * Triggers the `click` event handler, which logs a `searchboxSubmit` event in the usage analytics and executes a\n   * query.\n   */\n  public click() {\n    this.handleClick();\n  }\n\n  private handleClick() {\n    this.logger.debug('Performing query following button click');\n    this.usageAnalytics.logSearchEvent<IAnalyticsNoMeta>(analyticsActionCauseList.searchboxSubmit, {});\n    this.queryController.executeQuery();\n  }\n}\n\nInitialization.registerAutoCreateComponent(SearchButton);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/SearchButton/SearchButton.ts","import { Expression } from './Expression';\nimport { Result } from '../Result/Result';\nimport { EndOfInputResult } from '../Result/Result';\n\nexport class ExpressionConstant implements Expression {\n  constructor(public value: string, public id: string) {}\n\n  public parse(input: string, end: boolean): Result {\n    // the value must be at the start of the input\n    var success = input.indexOf(this.value) == 0;\n    var result = new Result(success ? this.value : null, this, input);\n    // if is successful and we require the end but the length of parsed is\n    // lower than the input length, return a EndOfInputExpected Result\n    if (success && end && input.length > this.value.length) {\n      return new EndOfInputResult(result);\n    }\n    return result;\n  }\n\n  public toString() {\n    return this.value;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Expression/ExpressionConstant.ts","import { Expression } from './Expression';\n\nexport const ExpressionEndOfInput: Expression = {\n  id: 'end of input',\n  parse: null\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Expression/ExpressionEndOfInput.ts","import { Basic } from './Basic';\nimport { SubGrammar } from './Expressions';\nimport { Date } from './Date';\nexport const Field: SubGrammar = {\n  basicExpressions: ['FieldSimpleQuery', 'FieldQuery', 'Field'],\n  grammars: {\n    FieldQuery: '[Field][OptionalSpaces][FieldQueryOperation]',\n    FieldQueryOperation: ['FieldQueryValue', 'FieldQueryNumeric'],\n    FieldQueryValue: '[FieldOperator][OptionalSpaces][FieldValue]',\n    FieldQueryNumeric: '[FieldOperatorNumeric][OptionalSpaces][FieldValueNumeric]',\n    FieldSimpleQuery: '[FieldName]:[OptionalSpaces][FieldValue]',\n    Field: '@[FieldName]',\n    FieldName: /[a-zA-Z][a-zA-Z0-9\\.\\_]*/,\n    FieldOperator: /==|=|<>/,\n    FieldOperatorNumeric: /<=|>=|<|>/,\n    FieldValue: ['DateRange', 'NumberRange', 'DateRelative', 'Date', 'Number', 'FieldValueList', 'FieldValueString'],\n    FieldValueNumeric: ['DateRelative', 'Date', 'Number'],\n    FieldValueString: ['DoubleQuoted', 'FieldValueNotQuoted'],\n    FieldValueList: '([FieldValueString][FieldValueStringList*])',\n    FieldValueStringList: '[FieldValueSeparator][FieldValueString]',\n    FieldValueSeparator: / *, */,\n    FieldValueNotQuoted: /[^ \\(\\),]+/,\n    NumberRange: '[Number][Spaces?]..[Spaces?][Number]'\n  },\n  include: [Date, Basic]\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Grammars/Field.ts","import { $$ } from '../utils/Dom';\nimport { Result } from './Result/Result';\nimport { Grammar } from './Grammar';\nimport { doMagicBoxExport } from './doMagicBoxExport';\nimport { Suggestion, SuggestionsManager } from './SuggestionsManager';\nimport { InputManager } from './InputManager';\nimport { isUndefined, each, find } from 'underscore';\nimport { MagicBoxClear } from './MagicBoxClear';\n\nexport interface Options {\n  inline?: boolean;\n  selectableSuggestionClass?: string;\n  selectedSuggestionClass?: string;\n  suggestionTimeout?: number;\n}\n\nexport class MagicBoxInstance {\n  public onblur: () => void;\n  public onfocus: () => void;\n  public onchange: () => void;\n  public onsuggestions: (suggestions: Suggestion[]) => void;\n  public onsubmit: () => void;\n  public onselect: (suggestion: Suggestion) => void;\n  public onclear: () => void;\n  public onmove: () => void;\n  public ontabpress: () => void;\n\n  public getSuggestions: () => Array<Promise<Suggestion[]> | Suggestion[]>;\n\n  private inputManager: InputManager;\n  private suggestionsManager: SuggestionsManager;\n  private magicBoxClear: MagicBoxClear;\n\n  private lastSuggestions: Suggestion[] = [];\n\n  private result: Result;\n  private displayedResult: Result;\n\n  constructor(public element: HTMLElement, public grammar: Grammar, public options: Options = {}) {\n    if (isUndefined(this.options.inline)) {\n      this.options.inline = false;\n    }\n    $$(element).addClass('magic-box');\n    if (this.options.inline) {\n      $$(element).addClass('magic-box-inline');\n    }\n    $$(this.element).setAttribute('role', 'combobox');\n\n    this.result = this.grammar.parse('');\n    this.displayedResult = this.result.clean();\n\n    let inputContainer = $$(element).find('.magic-box-input');\n    if (!inputContainer) {\n      inputContainer = document.createElement('div');\n      inputContainer.className = 'magic-box-input';\n      element.appendChild(inputContainer);\n    }\n\n    this.inputManager = new InputManager(\n      inputContainer,\n      (text, wordCompletion) => {\n        if (!wordCompletion) {\n          this.setText(text);\n          this.showSuggestion();\n          this.onchange && this.onchange();\n        } else {\n          this.setText(text);\n          this.onselect && this.onselect(this.getFirstSuggestionText());\n        }\n      },\n      this\n    );\n\n    this.inputManager.ontabpress = () => {\n      this.ontabpress && this.ontabpress();\n    };\n\n    const existingValue = this.inputManager.getValue();\n    if (existingValue) {\n      this.displayedResult.input = existingValue;\n    }\n\n    this.inputManager.setResult(this.displayedResult);\n\n    const suggestionsContainer = document.createElement('div');\n    suggestionsContainer.className = 'magic-box-suggestions';\n    this.element.appendChild(suggestionsContainer);\n\n    this.suggestionsManager = new SuggestionsManager(suggestionsContainer, this.element, this.inputManager, {\n      selectableClass: this.options.selectableSuggestionClass,\n      selectedClass: this.options.selectedSuggestionClass,\n      timeout: this.options.suggestionTimeout\n    });\n\n    this.magicBoxClear = new MagicBoxClear(this);\n    this.setupHandler();\n  }\n\n  public getResult() {\n    return this.result;\n  }\n\n  public getDisplayedResult() {\n    return this.displayedResult;\n  }\n\n  public setText(text: string) {\n    $$(this.element).toggleClass('magic-box-notEmpty', text.length > 0);\n    this.magicBoxClear.toggleTabindex(text.length > 0);\n\n    this.result = this.grammar.parse(text);\n    this.displayedResult = this.result.clean();\n\n    this.inputManager.setResult(this.displayedResult);\n  }\n\n  public setCursor(index: number) {\n    this.inputManager.setCursor(index);\n  }\n\n  public getCursor() {\n    return this.inputManager.getCursor();\n  }\n\n  public resultAtCursor(match?: string | { (result: Result): boolean }): Result[] {\n    return this.displayedResult.resultAt(this.getCursor(), match);\n  }\n\n  private setupHandler() {\n    this.inputManager.onblur = () => {\n      $$(this.element).removeClass('magic-box-hasFocus');\n      this.onblur && this.onblur();\n      if (!this.options.inline) {\n        this.clearSuggestion();\n      }\n    };\n\n    this.inputManager.onfocus = () => {\n      $$(this.element).addClass('magic-box-hasFocus');\n      this.showSuggestion();\n      this.onfocus && this.onfocus();\n    };\n\n    this.inputManager.onkeydown = (key: number) => {\n      if (key == 38 || key == 40) {\n        // Up, Down\n        return false;\n      }\n      if (key == 13) {\n        // Enter\n        const suggestion = this.suggestionsManager.selectAndReturnKeyboardFocusedElement();\n        if (suggestion == null) {\n          this.onsubmit && this.onsubmit();\n        }\n        return false;\n      } else if (key == 27) {\n        // ESC\n        this.clearSuggestion();\n        this.blur();\n      }\n      return true;\n    };\n\n    this.inputManager.onchangecursor = () => {\n      this.showSuggestion();\n    };\n\n    this.inputManager.onkeyup = (key: number) => {\n      if (key == 38) {\n        // Up\n        this.onmove && this.onmove();\n        this.focusOnSuggestion(this.suggestionsManager.moveUp());\n        this.onchange && this.onchange();\n      } else if (key == 40) {\n        // Down\n        this.onmove && this.onmove();\n        this.focusOnSuggestion(this.suggestionsManager.moveDown());\n        this.onchange && this.onchange();\n      } else {\n        return true;\n      }\n      return false;\n    };\n  }\n\n  public showSuggestion() {\n    this.suggestionsManager.mergeSuggestions(this.getSuggestions != null ? this.getSuggestions() : [], suggestions => {\n      this.updateSuggestion(suggestions);\n    });\n  }\n\n  private updateSuggestion(suggestions: Suggestion[]) {\n    this.lastSuggestions = suggestions;\n    const firstSuggestion = this.getFirstSuggestionText();\n    this.inputManager.setWordCompletion(firstSuggestion && firstSuggestion.text);\n    this.onsuggestions && this.onsuggestions(suggestions);\n    each(suggestions, (suggestion: Suggestion) => {\n      if (suggestion.onSelect == null && suggestion.text != null) {\n        suggestion.onSelect = () => {\n          this.setText(suggestion.text);\n          this.onselect && this.onselect(suggestion);\n        };\n      }\n    });\n  }\n\n  public focus() {\n    $$(this.element).addClass('magic-box-hasFocus');\n    this.inputManager.focus();\n  }\n\n  public blur() {\n    this.inputManager.blur();\n  }\n\n  public clearSuggestion() {\n    this.suggestionsManager.mergeSuggestions([], suggestions => {\n      this.updateSuggestion(suggestions);\n    });\n    this.inputManager.setWordCompletion(null);\n  }\n\n  private focusOnSuggestion(suggestion: Suggestion) {\n    if (suggestion == null || suggestion.text == null) {\n      suggestion = this.getFirstSuggestionText();\n      this.inputManager.setResult(this.displayedResult, suggestion && suggestion.text);\n    } else {\n      this.inputManager.setResult(this.grammar.parse(suggestion.text).clean(), suggestion.text);\n    }\n  }\n\n  private getFirstSuggestionText(): Suggestion {\n    return find(this.lastSuggestions, suggestion => suggestion.text != null);\n  }\n\n  public getText() {\n    return this.inputManager.getValue();\n  }\n\n  public getWordCompletion() {\n    return this.inputManager.getWordCompletion();\n  }\n\n  public clear() {\n    this.setText('');\n    this.showSuggestion();\n    this.focus();\n    this.onclear && this.onclear();\n  }\n\n  public hasSuggestions() {\n    return this.suggestionsManager.hasSuggestions;\n  }\n}\n\nexport function createMagicBox(element: HTMLElement, grammar: Grammar, options?: Options) {\n  return new MagicBoxInstance(element, grammar, options);\n}\n\nexport function requestAnimationFrame(callback: () => void) {\n  if ('requestAnimationFrame' in window) {\n    return window.requestAnimationFrame(callback);\n  }\n  return setTimeout(callback);\n}\n\ndoMagicBoxExport();\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/MagicBox.ts","import _ = require('underscore');\n\nexport class MagicBoxUtils {\n  static escapeRegExp(str) {\n    return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n  }\n\n  static highlightText(\n    text: string,\n    highligth: string,\n    ignoreCase = false,\n    matchClass: string = 'magic-box-hightlight',\n    doNotMatchClass: string = ''\n  ) {\n    if (highligth.length == 0) {\n      return text;\n    }\n    const escaped = this.escapeRegExp(highligth);\n    const stringRegex = '(' + escaped + ')|(.*?(?=' + escaped + ')|.+)';\n    const regex = new RegExp(stringRegex, ignoreCase ? 'gi' : 'g');\n    return text.replace(regex, (text, match, notmatch) => this.escapeText(match != null ? matchClass : doNotMatchClass, text));\n  }\n\n  private static escapeText = (classname: string, text: string) => {\n    return `<span class=\"${classname}\">${_.escape(text)}</span>`;\n  };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/MagicBoxUtils.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","import 'styling/_Searchbox';\nimport { exportGlobally } from '../../GlobalExports';\nimport { $$ } from '../../utils/Dom';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { IOmniboxOptions, Omnibox } from '../Omnibox/Omnibox';\nimport { Querybox } from '../Querybox/Querybox';\nimport { SearchButton } from '../SearchButton/SearchButton';\nimport { each, extend } from 'underscore';\n\nexport interface ISearchboxOptions extends IOmniboxOptions {\n  addSearchButton?: boolean;\n  enableOmnibox?: boolean;\n}\n\n/**\n * The `Searchbox` component allows you to conveniently instantiate two components which end users frequently use to\n * enter and submit queries.\n *\n * This component attaches itself to a `div` element and takes care of instantiating either a\n * [`Querybox`]{@link Querybox} or an [`Omnibox`]{@link Omnibox} component (see the\n * [`enableOmnibox`]{@link Searchbox.options.enableOmnibox} option). Optionally, the `Searchbox` can also instantiate a\n * [`SearchButton`]{@link SearchButton} component, and append it inside the same `div` (see the\n * [`addSearchButton`]{@link Searchbox.options.addSearchButton} option).\n */\nexport class Searchbox extends Component {\n  static ID = 'Searchbox';\n  static parent = Omnibox;\n\n  static doExport = () => {\n    exportGlobally({\n      Searchbox: Searchbox,\n      SearchButton: SearchButton,\n      Omnibox: Omnibox,\n      Querybox: Querybox\n    });\n  };\n\n  /**\n   * Possible options for the {@link Searchbox}\n   * @componentOptions\n   */\n  static options: ISearchboxOptions = {\n    /**\n     * Specifies whether to instantiate a [`SearchButton`]{@link SearchButton} component.\n     *\n     * Default value is `true`.\n     */\n    addSearchButton: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\n    /**\n     * Specifies whether to instantiate an [`Omnibox`]{@link Omnibox} component.\n     *\n     * When this option is `false`, the `Searchbox` instantiates a [`Querybox`]{@link Querybox} component instead.\n     *\n     * **Note:**\n     * > You can use configuration options specific to the component you choose to instantiate with the `Searchbox`.\n     *\n     * **Examples:**\n     *\n     * In this first case, the `Searchbox` instantiates a `Querybox` component. You can configure this `Querybox`\n     * instance using any of the `Querybox` component options, such as\n     * [`triggerQueryOnClear`]{@link Querybox.options.triggerQueryOnClear}.\n     * ```html\n     * <div class='CoveoSearchbox' data-trigger-query-on-clear='true'></div>\n     * ```\n     *\n     * In this second case, the `Searchbox` instantiates an `Omnibox` component. You can configure this `Omnibox`\n     * instance using any of the `Omnibox` component options, such as\n     * [`placeholder`]{@link Omnibox.options.placeholder}.\n     * Moreover, since the `Omnibox` component inherits all of the `Querybox` component options, the\n     * `data-trigger-query-on-clear` option from the previous example would also work on this `Omnibox` instance.\n     * ```html\n     * <div class='CoveoSearchbox' data-enable-omnibox='true' data-placeholder='Please enter a query'></div>\n     * ```\n     *\n     * Default value is `true`.\n     */\n    enableOmnibox: ComponentOptions.buildBooleanOption({ defaultValue: true })\n  };\n\n  /**\n   * The [`SearchButton`]{@link SearchButton} component instance.\n   */\n  public searchButton: SearchButton;\n\n  /**\n   * The component instance which allows end users to input queries.\n   *\n   * Can be either a [`Querybox`]{@link Querybox} or an [`Omnibox`]{@link Omnibox} component, depending on the value of\n   * [`enableOmnibox`]{@link Searchbox.options.enableOmnibox}.\n   */\n  public searchbox: Querybox | Omnibox;\n\n  /**\n   * Creates a new `Searchbox` component. Creates a new `Coveo.Magicbox` instance and wraps magic box methods (`onblur`,\n   * `onsubmit`, etc.). Binds event on `buildingQuery` and on redirection (for standalone box).\n   * @param element The HTMLElement on which to instantiate the component. This cannot be an HTMLInputElement for\n   * technical reasons.\n   * @param options The options for the `Searchbox component`. These will merge with the options from the component set\n   * directly on the `HTMLElement`.\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?: ISearchboxOptions, bindings?: IComponentBindings) {\n    super(element, Searchbox.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(element, Searchbox, options);\n\n    if (this.options.inline) {\n      $$(element).addClass('coveo-inline');\n    }\n\n    const div = document.createElement('div');\n    this.element.appendChild(div);\n\n    if (this.options.addSearchButton) {\n      const anchor = $$('a');\n      this.element.appendChild(anchor.el);\n      this.searchButton = new SearchButton(anchor.el, undefined, bindings);\n    }\n\n    if (this.options.enableOmnibox) {\n      this.searchbox = new Omnibox(div, this.options, bindings);\n    } else {\n      this.searchbox = new Querybox(div, this.options, bindings);\n    }\n\n    const magicBoxIcon = $$(this.element).find('.magic-box-icon');\n    magicBoxIcon.innerHTML = SVGIcons.icons.mainClear;\n    SVGDom.addClassToSVGInContainer(magicBoxIcon, 'magic-box-clear-svg');\n  }\n}\n\nSearchbox.options = { ...Searchbox.options, ...Omnibox.options, ...Querybox.options };\n\n// Only parse omnibox option if omnibox is enabled\neach(<any>Searchbox.options, (value, key: string) => {\n  if (key in Omnibox.options && !(key in Querybox.options)) {\n    Searchbox.options[key] = extend({ depend: 'enableOmnibox' }, value);\n  }\n});\n\nInitialization.registerAutoCreateComponent(Searchbox);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Searchbox/Searchbox.ts","import { Expression } from './Expression';\nimport { Result } from '../Result/Result';\nimport { Grammar } from '../Grammar';\n\nexport interface ExpressionFunctionArgument {\n  (input: string, end: boolean, expression: Expression): Result;\n}\n\nexport class ExpressionFunction implements Expression {\n  constructor(public func: ExpressionFunctionArgument, public id: string, public grammar: Grammar) {}\n\n  public parse(input: string, end: boolean): Result {\n    return this.func(input, end, this);\n  }\n\n  public toString() {\n    return this.id;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Expression/ExpressionFunction.ts","import { Result } from '../Result/Result';\nimport { Expression } from './Expression';\n\nexport class ExpressionList implements Expression {\n  constructor(private parts: Expression[], public id: string) {\n    if (parts.length == 0) {\n      throw new Error(JSON.stringify(id) + ' should have at least 1 parts');\n    }\n  }\n\n  parse(input: string, end: boolean): Result {\n    var subResults: Result[] = [];\n    var subResult: Result;\n    var subInput = input;\n\n    for (var i = 0; i < this.parts.length; i++) {\n      var part = this.parts[i];\n      subResult = part.parse(subInput, end && i == this.parts.length - 1);\n      subResults.push(subResult);\n      // if the subResult do not succeed, stop the parsing\n      if (!subResult.isSuccess()) {\n        break;\n      } else {\n        subInput = subInput.substr(subResult.getLength());\n      }\n    }\n    return new Result(subResults, this, input);\n  }\n\n  public toString() {\n    return this.id;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Expression/ExpressionList.ts","import { Expression } from './Expression';\nimport { ExpressionRef } from './ExpressionRef';\nimport { Result } from '../Result/Result';\nimport { OptionResult } from '../Result/OptionResult';\n\nexport class ExpressionOptions implements Expression {\n  constructor(public parts: ExpressionRef[], public id: string) {}\n\n  parse(input: string, end: boolean): Result {\n    var failAttempt: Result[] = [];\n    for (var i = 0; i < this.parts.length; i++) {\n      var subResult = this.parts[i].parse(input, end);\n      if (subResult.isSuccess()) {\n        return new OptionResult(subResult, this, input, failAttempt);\n      }\n      failAttempt.push(subResult);\n    }\n    return new OptionResult(null, this, input, failAttempt);\n  }\n\n  public toString() {\n    return this.id;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Expression/ExpressionOptions.ts","import { Result } from './Result';\nimport _ = require('underscore');\nimport { Expression } from '../Expression/Expression';\n\nexport class OptionResult extends Result {\n  constructor(private result: Result, public expression: Expression, public input: string, public failAttempt: Result[]) {\n    super(result != null ? [result] : null, expression, input);\n    _.forEach(this.failAttempt, subResult => {\n      subResult.parent = this;\n    });\n  }\n\n  /**\n   * Return all fail result.\n   */\n  public getExpect(): Result[] {\n    var expect = [];\n    if (this.result != null) {\n      expect = this.result.getExpect();\n    }\n    expect = _.reduce(this.failAttempt, (expect: Result[], result: Result) => expect.concat(result.getExpect()), expect);\n    if (expect.length > 0 && _.all(expect, result => result.input == this.input)) {\n      return [this];\n    }\n    return expect;\n  }\n\n  /**\n   * Clean the result to have the most relevant result. If the result is successful just return a clone of it.\n   */\n  public clean(path?: Result[]): Result {\n    if (path != null || !this.isSuccess()) {\n      // Result will be a ref. We skip it for cleaner tree.\n      path = _.rest(path || _.last(this.getBestExpect()).path(this));\n      // next can be Result or one of the failAttempt. In both case we have only one child\n      var next = _.first(path);\n      if (next == null) {\n        return new Result(null, this.expression, this.input);\n      }\n      return new Result([next.clean(_.rest(path))], this.expression, this.input);\n    }\n    // Result will be a ref. We skip it for cleaner tree.\n    return new Result(_.map(this.result.subResults, subResult => subResult.clean()), this.expression, this.input);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Result/OptionResult.ts","import { Expression } from './Expression';\nimport { Result } from '../Result/Result';\nimport { Grammar } from '../Grammar';\nimport { RefResult } from '../Result/RefResult';\nimport { ExpressionEndOfInput } from './ExpressionEndOfInput';\nimport _ = require('underscore');\n\nexport class ExpressionRef implements Expression {\n  constructor(public ref: string, public occurrence: string | number, public id: string, public grammar: Grammar) {}\n\n  parse(input: string, end: boolean): Result {\n    var ref = this.grammar.getExpression(this.ref);\n    if (ref == null) {\n      throw new Error('Expression not found:' + this.ref);\n    }\n    if (this.occurrence == '?' || this.occurrence == null) {\n      return this.parseOnce(input, end, ref);\n    } else {\n      return this.parseMany(input, end, ref);\n    }\n  }\n\n  parseOnce(input: string, end: boolean, ref: Expression): Result {\n    var refResult = ref.parse(input, end);\n    var success = refResult.isSuccess();\n    if (!success && this.occurrence == '?') {\n      if (end) {\n        // if end was found\n        if (input.length == 0) {\n          return new RefResult([], this, input, refResult);\n        }\n        // if end was not found and all error expression are EndOfInput, reparse with end = false.\n        if (_.all(refResult.getBestExpect(), expect => expect.expression == ExpressionEndOfInput)) {\n          return new RefResult([new Result(null, ExpressionEndOfInput, input)], this, input, refResult);\n        }\n        return refResult;\n      }\n      // the ref is not required and it do not need to end the input\n      return new RefResult([], this, input, null);\n    }\n    return new RefResult([refResult], this, input, success ? null : refResult);\n  }\n\n  parseMany(input: string, end: boolean, ref: Expression) {\n    var subResults: Result[] = [];\n    var subResult: Result;\n    var subInput = input;\n    var success: boolean;\n\n    // try to parse until it do not match, do not manage the end yet\n    do {\n      subResult = ref.parse(subInput, false);\n      success = subResult.isSuccess();\n      if (success) {\n        subResults.push(subResult);\n        subInput = subInput.substr(subResult.getLength());\n      }\n    } while (success && subResult.input != subInput);\n\n    // minimal occurance of a ref\n    var requiredOccurance = _.isNumber(this.occurrence) ? <number>this.occurrence : this.occurrence == '+' ? 1 : 0;\n\n    // if the minimal occurance is not reached add the fail result to the list\n    if (subResults.length < requiredOccurance) {\n      subResults.push(subResult);\n    } else if (end) {\n      // if there is at least one match, check if the last match is at the end\n      if (subResults.length > 0) {\n        var last = _.last(subResults);\n        subResult = ref.parse(last.input, true);\n        if (subResult.isSuccess()) {\n          // if successful, replace the last subResult by the one with end\n          subResults[subResults.length - 1] = subResult;\n        } else {\n          // if not successful, we keep the last successful result and we add a endOfInputExpected Result after it\n          subResults.push(new Result(null, ExpressionEndOfInput, last.input.substr(last.getLength())));\n          // we parse back the last with the length of the successful Result (at the same place we put the endOfInputExpected) and put it in failAttempt\n          subResult = ref.parse(last.input.substr(last.getLength()), true);\n        }\n      } else if (input.length != 0) {\n        // if there is no result at all and we are not at the end, return a endOfInputExpected Result\n        var endOfInput = new Result(null, ExpressionEndOfInput, input);\n        return new RefResult([endOfInput], this, input, subResult);\n      }\n    }\n    return new RefResult(subResults, this, input, subResult);\n  }\n\n  public toString() {\n    return this.id;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Expression/ExpressionRef.ts","import { Result } from './Result';\nimport { Expression } from '../Expression/Expression';\nimport _ = require('underscore');\n\nexport class RefResult extends Result {\n  public failAttempt: Result;\n  constructor(results: Result[], public expression: Expression, public input: string, lastResult: Result) {\n    super(results, expression, input);\n    if (_.last(results) != lastResult) {\n      this.failAttempt = lastResult;\n      if (this.failAttempt != null) {\n        this.failAttempt.parent = this;\n      }\n    }\n  }\n\n  /**\n   * Return all fail result.\n   */\n  public getExpect(): Result[] {\n    var expect = super.getExpect();\n    // add the failAttempt to the expect\n    if (this.failAttempt != null) {\n      return expect.concat(this.failAttempt.getExpect());\n    }\n    return expect;\n  }\n\n  /**\n   * Clean the result to have the most relevant result. If the result is successful just return a clone of it.\n   */\n  public clean(path?: Result[]): Result {\n    // if there is no failAttempt, we will use the default clean\n    if (this.failAttempt != null && (path != null || !this.isSuccess())) {\n      path = path || _.last(this.getBestExpect()).path(this);\n      var next = _.first(path);\n      // if the next is in the subResults, not the failAttempt, do the default clean;\n      if (next != null && next == this.failAttempt) {\n        var last = _.last(this.subResults);\n        // if the last is not successful, remove it because we want the failAttempt path\n        var subResults: Result[] = _.map(last != null && last.isSuccess() ? this.subResults : _.initial(this.subResults), subResult =>\n          subResult.clean()\n        );\n        subResults.push(next.clean(_.rest(path)));\n        return new Result(subResults, this.expression, this.input);\n      }\n    }\n    return super.clean(path);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Result/RefResult.ts","import { Expression } from './Expression';\nimport { Grammar } from '../Grammar';\nimport { Result } from '../Result/Result';\nimport { EndOfInputResult } from '../Result/Result';\n\nexport class ExpressionRegExp implements Expression {\n  constructor(public value: RegExp, public id: string, grammar: Grammar) {}\n\n  parse(input: string, end: boolean): Result {\n    var groups = input.match(this.value);\n    // if the RegExp do not match at the start, ignore it\n    if (groups != null && groups.index != 0) {\n      groups = null;\n    }\n    var result = new Result(groups != null ? groups[0] : null, this, input);\n    // if is successful and we require the end but the length of parsed is\n    // lower than the input length, return a EndOfInputExpected Result\n    if (result.isSuccess() && end && input.length > result.value.length) {\n      return new EndOfInputResult(result);\n    }\n    return result;\n  }\n\n  public toString() {\n    return this.id;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Expression/ExpressionRegExp.ts","import { SubGrammar } from './Expressions';\nimport { Field } from './Field';\n\nexport var NestedQuery: SubGrammar = {\n  basicExpressions: ['NestedQuery'],\n  grammars: {\n    NestedQuery: '[[NestedField][OptionalSpaces][Expressions]]',\n    NestedField: '[[Field]]',\n    FieldValue: ['NestedQuery']\n  },\n  include: [Field]\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Grammars/NestedQuery.ts","import { SubGrammar } from './Expressions';\nimport { Basic } from './Basic';\n\nexport const Date: SubGrammar = {\n  grammars: {\n    Date: '[DateYear]/[DateMonth]/[DateDay]',\n    DateYear: /([0-9]{4})/,\n    DateMonth: /(1[0-2]|0?[1-9])/,\n    DateDay: /([1-2][0-9]|3[0-1]|0?[1-9])/,\n    DateRange: '[Date][Spaces?]..[Spaces?][Date]',\n    DateRelative: ['DateRelativeNegative', 'DateRelativeTerm'],\n    DateRelativeTerm: /now|today|yesterday/,\n    DateRelativeNegative: '[DateRelativeTerm][DateRelativeNegativeRef]',\n    DateRelativeNegativeRef: /([\\-\\+][0-9]+(s|m|h|d|mo|y))/\n  },\n  include: [Basic]\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Grammars/Date.ts","import { Basic } from './Basic';\nimport { SubGrammar } from './Expressions';\nexport const QueryExtension: SubGrammar = {\n  basicExpressions: ['QueryExtension'],\n  grammars: {\n    QueryExtension: '$[QueryExtensionName]([QueryExtensionArguments])',\n    QueryExtensionName: /\\w+/,\n    QueryExtensionArguments: '[QueryExtensionArgumentList*][QueryExtensionArgument]',\n    QueryExtensionArgumentList: '[QueryExtensionArgument][Spaces?],[Spaces?]',\n    QueryExtensionArgument: '[QueryExtensionArgumentName]:[Spaces?][QueryExtensionArgumentValue]',\n    QueryExtensionArgumentName: /\\w+/,\n    QueryExtensionArgumentValue: ['SingleQuoted', 'Expressions']\n  },\n  include: [Basic]\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Grammars/QueryExtension.ts","import { SubGrammar } from './Expressions';\n\nexport const SubExpression: SubGrammar = {\n  basicExpressions: ['SubExpression'],\n  grammars: {\n    SubExpression: '([Expressions])'\n  }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Grammars/SubExpression.ts","import { Result } from './Result/Result';\nimport { $$ } from '../utils/Dom';\nimport _ = require('underscore');\nimport { MagicBoxInstance } from './MagicBox';\nimport { KEYBOARD } from '../utils/KeyboardUtils';\nimport { l } from '../strings/Strings';\n\nexport class InputManager {\n  public input: HTMLInputElement;\n  private underlay: HTMLElement;\n  private highlightContainer: HTMLElement;\n  private ghostTextContainer: HTMLElement;\n\n  private result: Result;\n  private wordCompletion: string;\n\n  private hasFocus: boolean = false;\n\n  /**\n   * Binding event\n   */\n  public onblur: () => void;\n  public onfocus: () => void;\n  public onkeyup: (key: number) => boolean;\n  public onkeydown: (key: number) => boolean;\n  public onchangecursor: () => void;\n  public ontabpress: () => void;\n\n  constructor(element: HTMLElement, private onchange: (text: string, wordCompletion: boolean) => void, private magicBox: MagicBoxInstance) {\n    this.underlay = document.createElement('div');\n    this.underlay.className = 'magic-box-underlay';\n\n    this.highlightContainer = document.createElement('span');\n    this.highlightContainer.className = 'magic-box-highlight-container';\n    this.underlay.appendChild(this.highlightContainer);\n\n    this.ghostTextContainer = document.createElement('span');\n    this.ghostTextContainer.className = 'magic-box-ghost-text';\n    this.underlay.appendChild(this.ghostTextContainer);\n\n    this.input = $$(element).find('input') as HTMLInputElement;\n    if (!this.input) {\n      this.input = document.createElement('input');\n      element.appendChild(this.underlay);\n      element.appendChild(this.input);\n    } else {\n      element.insertBefore(this.underlay, this.input);\n    }\n\n    this.setupHandler();\n    this.addAccessibilitiesProperties();\n  }\n\n  /**\n   * Update the input with the result value\n   */\n  private updateInput() {\n    if (this.input.value != this.result.input) {\n      this.input.value = this.result.input;\n      if (this.hasFocus) {\n        this.setCursor(this.getValue().length);\n      }\n    }\n  }\n\n  /**\n   * Update the highlight with the result value\n   */\n  private updateHighlight() {\n    $$(this.highlightContainer).empty();\n    this.highlightContainer.appendChild(this.result.toHtmlElement());\n  }\n\n  /**\n   * Update the ghostText with the wordCompletion\n   */\n  private updateWordCompletion() {\n    $$(this.ghostTextContainer).empty();\n    this.ghostTextContainer.innerHTML = '';\n    if (this.wordCompletion != null) {\n      this.ghostTextContainer.appendChild(document.createTextNode(this.wordCompletion.substr(this.result.input.length)));\n    }\n  }\n\n  /**\n   * Update the scroll of the underlay this allowed the highlight to match the text\n   */\n  private updateScrollDefer: number;\n  private updateScroll(defer = true) {\n    var callback = () => {\n      // this is the cheapest call we can do before update scroll\n      if (this.underlay.clientWidth < this.underlay.scrollWidth) {\n        this.underlay.style.visibility = 'hidden';\n        this.underlay.scrollLeft = this.input.scrollLeft;\n        this.underlay.scrollTop = this.input.scrollTop;\n        this.underlay.style.visibility = 'visible';\n      }\n      this.updateScrollDefer = null;\n      // one day we will have to remove this\n      if (this.hasFocus) {\n        this.updateScroll();\n      }\n    };\n    // sometime we want it to be updated as soon as posible to have no flickering\n    if (!defer) {\n      callback();\n    } else if (this.updateScrollDefer == null) {\n      this.updateScrollDefer = requestAnimationFrame(callback);\n    }\n  }\n\n  /**\n   * Set the result and update visual if needed\n   */\n  public setResult(result: Result, wordCompletion?: string) {\n    this.result = result;\n\n    this.updateInput();\n\n    this.updateHighlight();\n\n    // reuse last wordCompletion for a better visual\n    if (_.isUndefined(wordCompletion) && this.wordCompletion != null && this.wordCompletion.indexOf(this.result.input) == 0) {\n      this.updateWordCompletion();\n    } else {\n      this.setWordCompletion(wordCompletion);\n    }\n\n    this.updateScroll();\n  }\n\n  /**\n   * Set the word completion. will be ignore if the word completion do not start with the result input\n   */\n  public setWordCompletion(wordCompletion: string) {\n    if (wordCompletion != null && wordCompletion.toLowerCase().indexOf(this.result.input.toLowerCase()) != 0) {\n      wordCompletion = null;\n    }\n    this.wordCompletion = wordCompletion;\n    this.updateWordCompletion();\n    this.updateScroll();\n  }\n\n  /**\n   * Set cursor position\n   */\n  public setCursor(index: number) {\n    this.input.focus();\n    if ((<any>this.input).createTextRange) {\n      var range = (<any>this.input).createTextRange();\n      range.move('character', index);\n      range.select();\n    } else if (this.input.selectionStart != null) {\n      this.input.focus();\n      this.input.setSelectionRange(index, index);\n    }\n  }\n\n  public getCursor() {\n    return this.input.selectionStart;\n  }\n\n  private setupHandler() {\n    this.input.onblur = () => {\n      this.hasFocus = false;\n      setTimeout(() => {\n        if (!this.hasFocus) {\n          this.onblur && this.onblur();\n        }\n      }, 300);\n      this.updateScroll();\n    };\n    this.input.onfocus = () => {\n      if (!this.hasFocus) {\n        this.hasFocus = true;\n        this.updateScroll();\n        this.onfocus && this.onfocus();\n      }\n    };\n    this.input.onkeydown = e => {\n      this.keydown(e);\n    };\n    this.input.onkeyup = e => {\n      this.keyup(e);\n    };\n    this.input.onclick = () => {\n      this.onchangecursor();\n    };\n    this.input.oncut = () => {\n      setTimeout(() => {\n        this.onInputChange();\n      });\n    };\n    this.input.onpaste = () => {\n      setTimeout(() => {\n        this.onInputChange();\n      });\n    };\n  }\n\n  private addAccessibilitiesProperties() {\n    this.input.spellcheck = false;\n    this.input.setAttribute('form', 'coveo-dummy-form');\n    this.input.setAttribute('role', 'combobox');\n    this.input.setAttribute('autocomplete', 'off');\n    this.input.setAttribute('aria-autocomplete', 'list');\n    this.input.setAttribute('title', `${l('InsertAQuery')}. ${l('PressEnterToSend')}`);\n  }\n\n  public focus() {\n    this.hasFocus = true;\n    // neet a timeout for IE8-9\n    setTimeout(() => {\n      this.input.focus();\n      this.setCursor(this.getValue().length);\n    });\n  }\n\n  public blur() {\n    if (this.hasFocus) {\n      this.input.blur();\n    }\n  }\n\n  private keydown(e: KeyboardEvent) {\n    switch (e.keyCode || e.which) {\n      case KEYBOARD.TAB:\n        // Take care of not \"preventing\" the default event behaviour : For accessibility reasons, it is much simpler\n        // to simply let the browser do it's standard action (which is to focus out of the input).\n        // Instead, handle \"tabPress\" immediately instead of \"keyup\".\n        // The focus will be on the next element in the page when the key is released, so keyup on the input will never be triggered.\n        this.tabPress();\n        this.magicBox.clearSuggestion();\n        break;\n      default:\n        e.stopPropagation();\n        if (this.onkeydown == null || this.onkeydown(e.keyCode || e.which)) {\n          requestAnimationFrame(() => {\n            this.onInputChange();\n          });\n        } else {\n          e.preventDefault();\n        }\n        break;\n    }\n  }\n\n  private keyup(e: KeyboardEvent) {\n    switch (e.keyCode || e.which) {\n      case 37: // Left\n      case 39: // Right\n        this.onchangecursor();\n        break;\n      default:\n        if (this.onkeydown == null || this.onkeyup(e.keyCode || e.which)) {\n          this.onInputChange();\n        } else {\n          e.preventDefault();\n        }\n        break;\n    }\n  }\n\n  private tabPress() {\n    this.ontabpress && this.ontabpress();\n    this.onblur && this.onblur();\n  }\n\n  private onInputChange() {\n    if (this.result.input != this.input.value) {\n      this.onchange(this.input.value, false);\n    }\n  }\n\n  public getValue() {\n    return this.input.value;\n  }\n\n  public getWordCompletion() {\n    return this.wordCompletion;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/InputManager.ts","import { $$ } from '../utils/Dom';\nimport { InputManager } from './InputManager';\nimport { each, defaults, indexOf, compact } from 'underscore';\n\nexport interface Suggestion {\n  text?: string;\n  index?: number;\n  html?: string;\n  dom?: HTMLElement;\n  separator?: string;\n  onSelect?: () => void;\n}\n\nexport interface SuggestionsManagerOptions {\n  selectableClass?: string;\n  selectedClass?: string;\n  timeout?: number;\n}\n\nexport class SuggestionsManager {\n  public hasSuggestions: boolean;\n  private pendingSuggestion: Promise<Suggestion[]>;\n  private options: SuggestionsManagerOptions;\n  private keyboardFocusedSuggestion: HTMLElement;\n\n  constructor(\n    private element: HTMLElement,\n    private magicBoxContainer: HTMLElement,\n    private inputManager: InputManager,\n    options?: SuggestionsManagerOptions\n  ) {\n    this.options = defaults(options, <SuggestionsManagerOptions>{\n      selectableClass: 'magic-box-suggestion',\n      selectedClass: 'magic-box-selected'\n    });\n    // Put in a sane default, so as to not reject every suggestions if not set on initialization\n    if (this.options.timeout == undefined) {\n      this.options.timeout = 500;\n    }\n\n    this.hasSuggestions = false;\n\n    $$(this.element).on('mouseover', e => {\n      this.handleMouseOver(e);\n    });\n\n    $$(this.element).on('mouseout', e => {\n      this.handleMouseOut(e);\n    });\n\n    this.addAccessibilityProperties();\n  }\n\n  public handleMouseOver(e) {\n    let target = $$(<HTMLElement>e.target);\n    let parents = target.parents(this.options.selectableClass);\n    if (target.hasClass(this.options.selectableClass)) {\n      this.processMouseSelection(target.el);\n    } else if (parents.length > 0 && this.element.contains(parents[0])) {\n      this.processMouseSelection(parents[0]);\n    }\n  }\n\n  public handleMouseOut(e) {\n    let target = $$(<HTMLElement>e.target);\n    let targetParents = target.parents(this.options.selectableClass);\n\n    //e.relatedTarget is not available if moving off the browser window or is an empty object `{}` when moving out of namespace in LockerService.\n    if (e.relatedTarget && $$(e.relatedTarget).isValid()) {\n      let relatedTargetParents = $$(<HTMLElement>e.relatedTarget).parents(this.options.selectableClass);\n      if (target.hasClass(this.options.selectedClass) && !$$(<HTMLElement>e.relatedTarget).hasClass(this.options.selectableClass)) {\n        this.removeSelectedStatus(target.el);\n      } else if (relatedTargetParents.length == 0 && targetParents.length > 0) {\n        this.removeSelectedStatus(targetParents[0]);\n      }\n    } else {\n      if (target.hasClass(this.options.selectedClass)) {\n        this.removeSelectedStatus(target.el);\n      } else if (targetParents.length > 0) {\n        this.removeSelectedStatus(targetParents[0]);\n      }\n    }\n  }\n\n  public moveDown(): Suggestion {\n    return this.returnMoved(this.move('down'));\n  }\n\n  public moveUp(): Suggestion {\n    return this.returnMoved(this.move('up'));\n  }\n\n  public selectAndReturnKeyboardFocusedElement(): HTMLElement {\n    const selected = this.keyboardFocusedSuggestion;\n    if (selected != null) {\n      $$(selected).trigger('keyboardSelect');\n      // By definition, once an element has been \"selected\" with the keyboard,\n      // it is not longer \"active\" since the event has been processed.\n      this.keyboardFocusedSuggestion = null;\n    }\n    return selected;\n  }\n\n  public mergeSuggestions(suggestions: Array<Promise<Suggestion[]> | Suggestion[]>, callback?: (suggestions: Suggestion[]) => void) {\n    let results: Suggestion[] = [];\n    let timeout;\n    let stillNeedToResolve = true;\n    // clean empty / null values in the array of suggestions\n    suggestions = compact(suggestions);\n    const promise = (this.pendingSuggestion = new Promise<Suggestion[]>((resolve, reject) => {\n      // Concat all promises results together in one flat array.\n      // If one promise take too long to resolve, simply skip it\n      each(suggestions, (suggestion: Promise<Suggestion[]>) => {\n        let shouldRejectPart = false;\n        setTimeout(function() {\n          shouldRejectPart = true;\n          stillNeedToResolve = false;\n        }, this.options.timeout);\n        suggestion.then((item: Suggestion[]) => {\n          if (!shouldRejectPart && item) {\n            results = results.concat(item);\n          }\n        });\n      });\n\n      // Resolve the promise when one of those conditions is met first :\n      // - All suggestions resolved\n      // - Timeout is reached before all promises have processed -> resolve with what we have so far\n      // - No suggestions given (length 0 or undefined)\n      const onResolve = () => {\n        if (stillNeedToResolve) {\n          if (timeout) {\n            clearTimeout(timeout);\n          }\n          if (results.length == 0) {\n            resolve([]);\n          } else if (promise == this.pendingSuggestion || this.pendingSuggestion == null) {\n            resolve(results.sort((a, b) => b.index - a.index));\n          } else {\n            reject('new request queued');\n          }\n        }\n        stillNeedToResolve = false;\n      };\n\n      if (suggestions.length == 0) {\n        onResolve();\n      }\n      if (suggestions == undefined) {\n        onResolve();\n      }\n\n      timeout = setTimeout(function() {\n        onResolve();\n      }, this.options.timeout);\n\n      Promise.all(suggestions).then(() => onResolve());\n    }));\n\n    promise\n      .then((suggestions: Suggestion[]) => {\n        if (callback) {\n          callback(suggestions);\n        }\n        this.updateSuggestions(suggestions);\n        return suggestions;\n      })\n      .catch(() => {\n        return null;\n      });\n  }\n\n  public updateSuggestions(suggestions: Suggestion[]) {\n    $$(this.element).empty();\n    this.element.className = 'magic-box-suggestions';\n\n    this.hasSuggestions = suggestions.length > 0;\n\n    $$(this.element).toggleClass('magic-box-hasSuggestion', this.hasSuggestions);\n    $$(this.magicBoxContainer).setAttribute('aria-expanded', this.hasSuggestions.toString());\n\n    if (!this.hasSuggestions) {\n      return;\n    }\n\n    const suggestionsContainer = this.buildSuggestionsContainer();\n    $$(this.element).append(suggestionsContainer.el);\n\n    each(suggestions, (suggestion: Suggestion) => {\n      const dom = suggestion.dom ? this.modifyDomFromExistingSuggestion(suggestion.dom) : this.createDomFromSuggestion(suggestion);\n\n      dom.setAttribute('id', `magic-box-suggestion-${indexOf(suggestions, suggestion)}`);\n      dom.setAttribute('role', 'option');\n      dom.setAttribute('aria-selected', 'false');\n\n      dom['suggestion'] = suggestion;\n      suggestionsContainer.append(dom.el);\n    });\n  }\n\n  private processKeyboardSelection(suggestion: HTMLElement) {\n    this.addSelectedStatus(suggestion);\n    this.keyboardFocusedSuggestion = suggestion;\n    $$(this.inputManager.input).setAttribute('aria-activedescendant', $$(suggestion).getAttribute('id'));\n  }\n\n  private processMouseSelection(suggestion: HTMLElement) {\n    this.addSelectedStatus(suggestion);\n    this.keyboardFocusedSuggestion = null;\n  }\n\n  private buildSuggestionsContainer() {\n    return $$('div', {\n      id: 'coveo-magicbox-suggestions',\n      role: 'listbox'\n    });\n  }\n\n  private createDomFromSuggestion(suggestion: Suggestion) {\n    const dom = $$('div', {\n      className: `magic-box-suggestion ${this.options.selectableClass}`\n    });\n\n    dom.on('click', () => {\n      suggestion.onSelect();\n    });\n\n    dom.on('keyboardSelect', () => {\n      suggestion.onSelect();\n    });\n\n    if (suggestion.html) {\n      dom.el.innerHTML = suggestion.html;\n      return dom;\n    }\n\n    if (suggestion.text) {\n      dom.text(suggestion.text);\n      return dom;\n    }\n\n    if (suggestion.separator) {\n      dom.addClass('magic-box-suggestion-seperator');\n      const suggestionLabel = $$(\n        'div',\n        {\n          className: 'magic-box-suggestion-seperator-label'\n        },\n        suggestion.separator\n      );\n      dom.append(suggestionLabel.el);\n      return dom;\n    }\n\n    return dom;\n  }\n\n  private modifyDomFromExistingSuggestion(dom: HTMLElement) {\n    // this need to be done if the selection is in cache and the dom is set in the suggestion\n    this.removeSelectedStatus(dom);\n    const found = $$(dom).find('.' + this.options.selectableClass);\n    this.removeSelectedStatus(found);\n    return $$(dom);\n  }\n\n  private move(direction: 'up' | 'down') {\n    const currentlySelected = $$(this.element).find(`.${this.options.selectedClass}`);\n    const selectables = $$(this.element).findAll(`.${this.options.selectableClass}`);\n    const currentIndex = indexOf(selectables, currentlySelected);\n\n    let index = direction == 'up' ? currentIndex - 1 : currentIndex + 1;\n    if (index < -1) {\n      index = selectables.length - 1;\n    }\n    if (index > selectables.length) {\n      index = 0;\n    }\n\n    const newlySelected = selectables[index];\n\n    if (newlySelected) {\n      this.processKeyboardSelection(newlySelected);\n    } else {\n      this.keyboardFocusedSuggestion = null;\n      this.inputManager.input.removeAttribute('aria-activedescendant');\n    }\n\n    return newlySelected;\n  }\n\n  private returnMoved(selected) {\n    if (selected != null) {\n      if (selected['suggestion']) {\n        return selected['suggestion'];\n      }\n      if (selected['no-text-suggestion']) {\n        return null;\n      }\n      if (selected instanceof HTMLElement) {\n        return {\n          text: $$(selected).text()\n        };\n      }\n    }\n    return null;\n  }\n\n  private addSelectedStatus(suggestion: HTMLElement): void {\n    const selected = this.element.getElementsByClassName(this.options.selectedClass);\n    for (let i = 0; i < selected.length; i++) {\n      const elem = <HTMLElement>selected.item(i);\n      this.removeSelectedStatus(elem);\n    }\n    $$(suggestion).addClass(this.options.selectedClass);\n    this.updateAreaSelectedIfDefined(suggestion, 'true');\n  }\n\n  private removeSelectedStatus(suggestion: HTMLElement): void {\n    $$(suggestion).removeClass(this.options.selectedClass);\n    this.updateAreaSelectedIfDefined(suggestion, 'false');\n  }\n\n  private updateAreaSelectedIfDefined(suggestion: HTMLElement, value: string): void {\n    if ($$(suggestion).getAttribute('aria-selected')) {\n      $$(suggestion).setAttribute('aria-selected', value);\n    }\n  }\n\n  private addAccessibilityProperties() {\n    $$(this.magicBoxContainer).setAttribute('aria-expanded', 'false');\n    $$(this.magicBoxContainer).setAttribute('aria-haspopup', 'listbox');\n    this.inputManager.input.removeAttribute('aria-activedescendant');\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/SuggestionsManager.ts","import { IQueryboxOptions } from './Querybox';\nimport { QueryBuilder } from '../Base/QueryBuilder';\nimport * as _ from 'underscore';\nimport { Defer } from '../../MiscModules';\n\nexport class QueryboxQueryParameters {\n  private static queryIsCurrentlyBlocked = false;\n\n  constructor(private options: IQueryboxOptions) {}\n\n  private static queryIsBlocked() {\n    // This code runs on some assumption :\n    // Since all \"buildingQuery\" events would have to be run in the same call stack\n    // We can add a static flag to block 2 or more query box/omnibox from trying to modify the query inside the same event.\n    // If 2 query box are activated, we get duplicate terms in the query, or duplicate term correction with did you mean.\n    // This means that only one query box/searchbox would be able to modify the query in a single search page.\n    // This also means that if there is 2 search box enabled, the first one in the markup in the page would be able to do the job correctly as far as the query is concerned.\n    // The second one is inactive as far as the query is concerned.\n\n    // The flag gets reset in \"defer\" (setTimeout 0) so that it gets reset correctly when the query event has finished executing\n    if (!QueryboxQueryParameters.queryIsCurrentlyBlocked) {\n      QueryboxQueryParameters.queryIsCurrentlyBlocked = true;\n      Defer.defer(() => QueryboxQueryParameters.allowDuplicateQuery());\n      return false;\n    }\n    return true;\n  }\n\n  public static allowDuplicateQuery() {\n    QueryboxQueryParameters.queryIsCurrentlyBlocked = false;\n  }\n\n  public addParameters(queryBuilder: QueryBuilder, lastQuery: string) {\n    if (!QueryboxQueryParameters.queryIsBlocked()) {\n      if (this.options.enableWildcards) {\n        queryBuilder.enableWildcards = true;\n      }\n\n      if (this.options.enableQuestionMarks) {\n        queryBuilder.enableQuestionMarks = true;\n      }\n\n      if (this.options.enableLowercaseOperators) {\n        queryBuilder.enableLowercaseOperators = true;\n      }\n\n      if (!_.isEmpty(lastQuery)) {\n        queryBuilder.enableQuerySyntax = this.options.enableQuerySyntax;\n        queryBuilder.expression.add(lastQuery);\n        if (this.options.enablePartialMatch) {\n          queryBuilder.enablePartialMatch = this.options.enablePartialMatch;\n          if (this.options.partialMatchKeywords) {\n            queryBuilder.partialMatchKeywords = this.options.partialMatchKeywords;\n          }\n          if (this.options.partialMatchThreshold) {\n            queryBuilder.partialMatchThreshold = this.options.partialMatchThreshold;\n          }\n        }\n      }\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Querybox/QueryboxQueryParameters.ts","import { SubGrammar } from './Expressions';\nimport { NestedQuery } from './NestedQuery';\nimport { QueryExtension } from './QueryExtension';\nimport { Basic } from './Basic';\nimport { Field } from './Field';\nimport { SubExpression } from './SubExpression';\n\nexport const Complete: SubGrammar = {\n  include: [NestedQuery, QueryExtension, SubExpression, Field, Basic]\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Grammars/Complete.ts","import { Grammar } from '../Grammar';\nimport { ExpressionDef } from '../Expression/Expression';\nimport * as _ from 'underscore';\n\nexport interface SubGrammar {\n  grammars?: { [id: string]: ExpressionDef };\n  expressions?: string[];\n  basicExpressions?: string[];\n  include?: SubGrammar[];\n}\n\nfunction loadSubGrammar(\n  expressions: string[],\n  basicExpressions: string[],\n  grammars: { [id: string]: ExpressionDef },\n  subGrammar: SubGrammar\n) {\n  _.each(subGrammar.expressions, expression => {\n    if (!_.contains(expressions, expression)) {\n      expressions.push(expression);\n    }\n  });\n  _.each(subGrammar.basicExpressions, expression => {\n    if (!_.contains(basicExpressions, expression)) {\n      basicExpressions.push(expression);\n    }\n  });\n  _.each(subGrammar.grammars, (expressionDef: ExpressionDef, id: string) => {\n    if (!(id in grammars)) {\n      grammars[id] = expressionDef;\n    } else {\n      if (_.isArray(grammars[id]) && _.isArray(expressionDef)) {\n        _.each(<string[]>expressionDef, (value: string) => {\n          (<string[]>grammars[id]).push(value);\n        });\n      } else {\n        _.each(<string[]>expressionDef, (value: string) => {\n          (<string[]>grammars[id]).push(value);\n        });\n        throw new Error('Can not merge ' + id + '(' + JSON.stringify(expressionDef) + ' => ' + JSON.stringify(grammars[id]) + ')');\n      }\n    }\n  });\n}\n\nexport function Expressions(...subGrammars: SubGrammar[]): { start: string; expressions: { [id: string]: ExpressionDef } } {\n  var expressions: string[] = [];\n  var BasicExpression: string[] = [];\n  var grammars: { [id: string]: ExpressionDef } = {\n    Start: ['Expressions', 'Empty'],\n    Expressions: '[OptionalSpaces][Expression][ExpressionsList*][OptionalSpaces]',\n    ExpressionsList: '[Spaces][Expression]',\n    Expression: expressions,\n    BasicExpression: BasicExpression,\n    OptionalSpaces: / */,\n    Spaces: / +/,\n    Empty: /(?!.)/\n  };\n  for (var i = 0; i < subGrammars.length; i++) {\n    loadSubGrammar(expressions, BasicExpression, grammars, subGrammars[i]);\n    _.each(subGrammars[i].include, subGrammar => {\n      if (!_.contains(subGrammars, subGrammar)) {\n        subGrammars.push(subGrammar);\n      }\n    });\n  }\n  expressions.push('BasicExpression');\n  return {\n    start: 'Start',\n    expressions: grammars\n  };\n}\n\nexport function ExpressionsGrammar(...subGrammars: SubGrammar[]) {\n  var grammar = Expressions.apply(this, subGrammars);\n  return new Grammar(grammar.start, grammar.expressions);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Grammars/Expressions.ts","import { Omnibox, IOmniboxOptions } from '../Omnibox/Omnibox';\nimport { Querybox, IQueryboxOptions } from './Querybox';\nimport { ComponentOptionsModel } from '../../models/ComponentOptionsModel';\n\nexport class QueryboxOptionsProcessing {\n  constructor(public owner: Omnibox | Querybox) {}\n\n  private get options() {\n    return this.owner.options;\n  }\n\n  private set options(options: IOmniboxOptions | IQueryboxOptions) {\n    this.owner.options = options;\n  }\n\n  public postProcess() {\n    this.options = { ...this.options, ...this.owner.componentOptionsModel.get(ComponentOptionsModel.attributesEnum.searchBox) };\n    this.processQueryOnClearVersusEmptyQuery();\n    this.processQueryOnClearVersusSearchAsYouType();\n  }\n\n  private processQueryOnClearVersusEmptyQuery() {\n    if (this.options.triggerQueryOnClear && this.owner.searchInterface.options.allowQueriesWithoutKeywords === false) {\n      this.owner.logger.warn(\n        'Forcing option triggerQueryOnClear to false, as it is not supported when the search interface is configured to not allow queries without keywords (data-allow-queries-without-keywords=\"false\")',\n        this.owner\n      );\n      this.options.triggerQueryOnClear = false;\n    }\n  }\n\n  private processQueryOnClearVersusSearchAsYouType() {\n    if (\n      this.owner.searchInterface.options.allowQueriesWithoutKeywords === true &&\n      this.options.triggerQueryOnClear === false &&\n      this.options.enableSearchAsYouType === true\n    ) {\n      this.owner.logger.warn('Forcing option triggerQueryOnClear to true, since search as you type is enabled', this.owner);\n      this.options.triggerQueryOnClear = true;\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Querybox/QueryboxOptionsProcessing.ts","export class SuggestionsCache<T> {\n  private cache: { [hash: string]: Promise<T> } = {};\n\n  getSuggestions(hash: string, suggestionsFetcher: () => Promise<T>): Promise<T> {\n    if (this.cache[hash] != null) {\n      return this.cache[hash];\n    }\n\n    const promise = suggestionsFetcher();\n    this.cache[hash] = promise;\n    promise.catch(() => this.clearSuggestion(hash));\n    return this.cache[hash];\n  }\n\n  clearSuggestion(hash: string): void {\n    if (!hash || hash.length === 0) {\n      return null;\n    }\n\n    delete this.cache[hash];\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/misc/SuggestionsCache.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","import { Expression } from '../Expression/Expression';\nimport { ExpressionEndOfInput } from '../Expression/ExpressionEndOfInput';\nimport { ExpressionConstant } from '../Expression/ExpressionConstant';\nimport _ = require('underscore');\n\nexport class Result {\n  public value: string;\n  public subResults: Result[];\n  public parent: Result;\n\n  constructor(value: string | Result[], public expression: Expression, public input: string) {\n    if (_.isString(value)) {\n      this.value = <string>value;\n    } else if (_.isArray(value)) {\n      this.subResults = <Result[]>value;\n      _.forEach(this.subResults, (subResult: Result) => {\n        subResult.parent = this;\n      });\n    }\n  }\n\n  public isSuccess() {\n    // if null is the value, this mean the expression could not parse this input\n    return this.value != null || (this.subResults != null && _.all(this.subResults, subResult => subResult.isSuccess()));\n  }\n\n  /**\n   * Return path to this result ([parent.parent, parent, this])\n   */\n  public path(until?: Result): Result[] {\n    var path: Result[] = this.parent != null && this.parent != until ? this.parent.path(until) : [];\n    path.push(this);\n    return path;\n  }\n\n  /**\n   * Return the closest parent that match the condition (can be it-self). If match is a string, it will search for the result expresion id\n   */\n  public findParent(match: string | { (result: Result): boolean }): Result {\n    var parent = <Result>this;\n    var iterator = _.isString(match) ? (result: Result) => match == result.expression.id : <{ (result: Result): boolean }>match;\n    while (parent != null && !iterator(parent)) {\n      parent = parent.parent;\n    }\n    return parent;\n  }\n\n  /**\n   * Return the first child that match the condition (can be it-self). If match is a string, it will search for the result expresion id\n   */\n  public find(match: string | { (result: Result): boolean }): Result {\n    var iterator = _.isString(match) ? (result: Result) => match == result.expression.id : <{ (result: Result): boolean }>match;\n    if (iterator(this)) {\n      return this;\n    }\n    if (this.subResults) {\n      for (var i = 0; i < this.subResults.length; i++) {\n        var subResultFind = this.subResults[i].find(iterator);\n        if (subResultFind) {\n          return subResultFind;\n        }\n      }\n    }\n    return null;\n  }\n\n  /**\n   * Return all children that match the condition (can be it-self). If match is a string, it will search for the result expresion id\n   */\n  public findAll(match: string | { (result: Result): boolean }): Result[] {\n    var results: Result[] = [];\n    var iterator = _.isString(match) ? (result: Result) => match == result.expression.id : <{ (result: Result): boolean }>match;\n    if (iterator(this)) {\n      results.push(this);\n    }\n    if (this.subResults) {\n      results = _.reduce(this.subResults, (results, subResult: Result) => results.concat(subResult.findAll(iterator)), results);\n    }\n    return results;\n  }\n\n  /**\n   * Return the first child that match the condition (can be it-self). If match is a string, it will search for the result expresion id\n   */\n  public resultAt(index: number, match?: string | { (result: Result): boolean }): Result[] {\n    if (index < 0 || index > this.getLength()) {\n      return [];\n    }\n    if (match != null) {\n      if (_.isString(match)) {\n        if (match == this.expression.id) {\n          return [this];\n        }\n      } else {\n        if ((<{ (result: Result): boolean }>match)(this)) {\n          return [this];\n        }\n      }\n    } else {\n      var value = this.value == null && this.subResults == null ? this.input : this.value;\n      if (value != null) {\n        return [this];\n      }\n    }\n\n    if (this.subResults != null) {\n      var results = [];\n      for (var i = 0; i < this.subResults.length; i++) {\n        var subResult = this.subResults[i];\n        results = results.concat(subResult.resultAt(index, match));\n        index -= subResult.getLength();\n        if (index < 0) {\n          break;\n        }\n      }\n      return results;\n    }\n\n    return [];\n  }\n\n  /**\n   * Return all fail result.\n   */\n  public getExpect(): Result[] {\n    if (this.value == null && this.subResults == null) {\n      return [this];\n    }\n    if (this.subResults != null) {\n      return _.reduce(this.subResults, (expect: Result[], result: Result) => expect.concat(result.getExpect()), []);\n    }\n    return [];\n  }\n\n  /**\n   * Return the best fail result (The farthest result who got parsed). We also remove duplicate and always return the simplest result of a kind\n   */\n  public getBestExpect(): Result[] {\n    var expects = this.getExpect();\n    var groups = _.groupBy(expects, expect => expect.input);\n    var key = _.last(\n      _.keys(groups).sort((a, b) => {\n        return b.length - a.length;\n      })\n    );\n    var bestResults = groups[key];\n    var groups = _.groupBy(bestResults, expect => expect.expression.id);\n    return _.map(groups, (bestResults: Result[]): Result => {\n      return _.chain(bestResults)\n        .map(result => {\n          return {\n            path: result.path().length,\n            result: result\n          };\n        })\n        .sortBy('path')\n        .pluck('result')\n        .first()\n        .value();\n    });\n  }\n\n  public getHumanReadableExpect() {\n    var expect = this.getBestExpect();\n    var input = expect.length > 0 ? _.last(expect).input : '';\n    return (\n      'Expected ' +\n      _.map(expect, (result: Result) => result.getHumanReadable()).join(' or ') +\n      ' but ' +\n      (input.length > 0 ? JSON.stringify(input[0]) : 'end of input') +\n      ' found.'\n    );\n  }\n\n  /**\n   * Return a string that represent what is before this result\n   */\n  public before(): string {\n    if (this.parent == null) {\n      return '';\n    }\n    var index = _.indexOf(this.parent.subResults, this);\n    return (\n      this.parent.before() +\n      _.chain(this.parent.subResults)\n        .first(index)\n        .map(subResult => subResult.toString())\n        .join('')\n        .value()\n    );\n  }\n\n  /**\n   * Return a string that represent what is after this result\n   */\n  public after(): string {\n    if (this.parent == null) {\n      return '';\n    }\n    var index = _.indexOf(this.parent.subResults, this);\n    return (\n      _.chain(this.parent.subResults)\n        .last(this.parent.subResults.length - index - 1)\n        .map(subResult => subResult.toString())\n        .join('')\n        .value() + this.parent.after()\n    );\n  }\n\n  /**\n   * Return the length of the result\n   */\n  public getLength() {\n    if (this.value != null) {\n      return this.value.length;\n    }\n\n    if (this.subResults != null) {\n      return _.reduce(this.subResults, (length: number, subResult: Result) => length + subResult.getLength(), 0);\n    }\n\n    return this.input.length;\n  }\n\n  public toHtmlElement(): HTMLElement {\n    var element = document.createElement('span');\n    var id = this.expression != null ? this.expression.id : null;\n\n    if (id != null) {\n      element.setAttribute('data-id', id);\n    }\n\n    element.setAttribute('data-success', this.isSuccess().toString());\n\n    if (this.value != null) {\n      element.appendChild(document.createTextNode(this.value));\n      element.setAttribute('data-value', this.value);\n    } else if (this.subResults != null) {\n      _.each(this.subResults, (subResult: Result) => {\n        element.appendChild(subResult.toHtmlElement());\n      });\n    } else {\n      element.appendChild(document.createTextNode(this.input));\n      element.setAttribute('data-input', this.input);\n      element.className = 'magic-box-error' + (this.input.length > 0 ? '' : ' magic-box-error-empty');\n    }\n\n    element['result'] = this;\n\n    return element;\n  }\n\n  /**\n   * Clean the result to have the most relevant result. If the result is successful just return a clone of it.\n   */\n  public clean(path?: Result[]): Result {\n    if (path != null || !this.isSuccess()) {\n      path = path || _.last(this.getBestExpect()).path(this);\n      var next = _.first(path);\n      if (next != null) {\n        var nextIndex = _.indexOf(this.subResults, next);\n        var subResults: Result[] = nextIndex == -1 ? [] : _.map(_.first(this.subResults, nextIndex), subResult => subResult.clean());\n        subResults.push(next.clean(_.rest(path)));\n        return new Result(subResults, this.expression, this.input);\n      } else {\n        return new Result(null, this.expression, this.input);\n      }\n    }\n    if (this.value != null) {\n      return new Result(this.value, this.expression, this.input);\n    }\n    if (this.subResults != null) {\n      return new Result(_.map(this.subResults, subResult => subResult.clean()), this.expression, this.input);\n    }\n  }\n\n  public clone(): Result {\n    if (this.value != null) {\n      return new Result(this.value, this.expression, this.input);\n    }\n    if (this.subResults != null) {\n      return new Result(_.map(this.subResults, subResult => subResult.clone()), this.expression, this.input);\n    }\n    return new Result(null, this.expression, this.input);\n  }\n\n  public toString() {\n    if (this.value != null) {\n      return this.value;\n    }\n    if (this.subResults != null) {\n      return _.map(this.subResults, subresult => subresult.toString()).join('');\n    }\n    return this.input;\n  }\n\n  public getHumanReadable() {\n    if (this.expression instanceof ExpressionConstant) {\n      return JSON.stringify((<ExpressionConstant>this.expression).value);\n    }\n    return this.expression.id;\n  }\n}\n\nexport class EndOfInputResult extends Result {\n  constructor(result: Result) {\n    super([result], ExpressionEndOfInput, result.input);\n    var endOfInput = new Result(null, ExpressionEndOfInput, result.input.substr(result.getLength()));\n    endOfInput.parent = this;\n    this.subResults.push(endOfInput);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Result/Result.ts","import { exportGlobally } from '../GlobalExports';\nimport { Expression } from './Expression/Expression';\nimport { ExpressionConstant } from './Expression/ExpressionConstant';\nimport { ExpressionEndOfInput } from './Expression/ExpressionEndOfInput';\nimport { ExpressionFunction, ExpressionFunctionArgument } from './Expression/ExpressionFunction';\nimport { ExpressionList } from './Expression/ExpressionList';\nimport { ExpressionOptions } from './Expression/ExpressionOptions';\nimport { ExpressionRef } from './Expression/ExpressionRef';\nimport { ExpressionRegExp } from './Expression/ExpressionRegExp';\nimport { Grammar } from './Grammar';\nimport { SubGrammar } from './Grammars/Expressions';\nimport { Grammars } from './Grammars/Grammars';\nimport { InputManager } from './InputManager';\nimport { createMagicBox, MagicBoxInstance, requestAnimationFrame } from './MagicBox';\nimport { MagicBoxUtils as Utils } from './MagicBoxUtils';\nimport { OptionResult } from './Result/OptionResult';\nimport { RefResult } from './Result/RefResult';\nimport { EndOfInputResult, Result } from './Result/Result';\nimport { Suggestion, SuggestionsManager } from './SuggestionsManager';\nexport type ExpressionImportedLocally = Expression;\nexport type SuggestionImportedLocally = Suggestion;\nexport type SubGrammarLocally = SubGrammar;\nexport type ExpressionFunctionArgumentLocally = ExpressionFunctionArgument;\nexport const GrammarsImportedLocally = Grammars;\n\nexport function doMagicBoxExport() {\n  exportGlobally({\n    MagicBox: {\n      EndOfInputResult,\n      ExpressionConstant,\n      ExpressionEndOfInput,\n      ExpressionFunction,\n      ExpressionList,\n      ExpressionOptions,\n      ExpressionRef,\n      ExpressionRegExp,\n      Grammar,\n      Grammars,\n      InputManager,\n      Instance: MagicBoxInstance,\n      OptionResult,\n      RefResult,\n      Result,\n      SuggestionsManager,\n      Utils,\n      create: createMagicBox,\n      requestAnimationFrame\n    }\n  });\n}\n\nexport declare namespace MagicBox {\n  export const EndOfInputResult: EndOfInputResult;\n  export const ExpressionConstant: ExpressionConstant;\n  export const ExpressionFunction: ExpressionFunction;\n  export const ExpressionList: ExpressionList;\n  export const ExpressionOptions: ExpressionOptions;\n  export const ExpressionRef: ExpressionRef;\n  export const ExpressionRegExp: ExpressionRegExp;\n  export const Grammar: Grammar;\n  export const InputManager: InputManager;\n  export const Instance: MagicBoxInstance;\n  export const OptionResult: OptionResult;\n  export const RefResult: RefResult;\n  export const Result: Result;\n  export const SuggestionsManager: SuggestionsManager;\n  export const Utils: Utils;\n  export const ExpressionEndOfInput;\n  export type Instance = MagicBoxInstance;\n  export type Suggestion = SuggestionImportedLocally;\n\n  export namespace Grammars {\n    export const Basic: typeof GrammarsImportedLocally.Basic;\n    export const notInWord: typeof GrammarsImportedLocally.notInWord;\n    export const notWordStart: typeof GrammarsImportedLocally.notWordStart;\n    export const Complete: typeof GrammarsImportedLocally.Complete;\n    export const Date: typeof GrammarsImportedLocally.Date;\n    export const Expressions: typeof GrammarsImportedLocally.Expressions;\n    export const ExpressionsGrammar: typeof GrammarsImportedLocally.ExpressionsGrammar;\n    export const Field: typeof GrammarsImportedLocally.Field;\n    export const NestedQuery: typeof GrammarsImportedLocally.NestedQuery;\n    export const QueryExtension: typeof GrammarsImportedLocally.QueryExtension;\n    export const SubExpression: typeof GrammarsImportedLocally.SubExpression;\n  }\n\n  export const createMagicBox;\n  export const create;\n  export const requestAnimationFrame;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/doMagicBoxExport.ts","import { Basic, notInWord, notWordStart } from './Basic';\nimport { Complete } from './Complete';\nimport { Date } from './Date';\nimport { Expressions, ExpressionsGrammar, SubGrammar } from './Expressions';\nimport { ExpressionFunctionArgument } from '../Expression/ExpressionFunction';\nimport { Field } from './Field';\nimport { NestedQuery } from './NestedQuery';\nimport { QueryExtension } from './QueryExtension';\nimport { SubExpression } from './SubExpression';\nexport type SubGrammarImported = SubGrammar;\nexport type ExpressionFunctionArgumentImported = ExpressionFunctionArgument;\n\nexport const Grammars = {\n  Basic,\n  notInWord,\n  notWordStart,\n  Complete,\n  Date,\n  Expressions,\n  ExpressionsGrammar,\n  Field,\n  NestedQuery,\n  QueryExtension,\n  SubExpression\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Grammars/Grammars.ts","import { $$, Dom } from '../utils/Dom';\nimport { MagicBoxInstance } from './MagicBox';\nimport { l } from '../strings/Strings';\nimport { AccessibleButton } from '../utils/AccessibleButton';\n\nexport class MagicBoxClear {\n  public element: Dom;\n\n  constructor(magicBox: MagicBoxInstance) {\n    this.element = $$('div', {\n      className: 'magic-box-clear'\n    });\n    const clearIcon = $$('div', {\n      className: 'magic-box-icon'\n    });\n    this.element.append(clearIcon.el);\n\n    this.element.insertAfter($$(magicBox.element).find('input'));\n\n    new AccessibleButton()\n      .withElement(this.element)\n      .withLabel(l('Clear'))\n      .withSelectAction(() => magicBox.clear())\n      .build();\n\n    this.toggleTabindex(false);\n  }\n\n  public toggleTabindex(hasText: boolean) {\n    const tabindex = hasText ? '0' : '-1';\n    this.element.setAttribute('tabindex', tabindex);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/MagicBoxClear.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_Omnibox.scss\n// module id = 409\n// module chunks = 5 6 77","///<reference path='Omnibox.ts'/>\nimport { Omnibox, IOmniboxSuggestion } from './Omnibox';\nimport { OmniboxEvents, IPopulateOmniboxSuggestionsEventArgs } from '../../events/OmniboxEvents';\nimport { IFieldDescription } from '../../rest/FieldDescription';\nimport { IEndpointError } from '../../rest/EndpointError';\nimport * as _ from 'underscore';\nimport { Result } from '../../magicbox/Result/Result';\nimport { MagicBoxUtils } from '../../magicbox/MagicBoxUtils';\n\ninterface IFieldAddonHash {\n  type: string;\n  before: string;\n  after: string;\n  current: string;\n  field?: string;\n}\n\nexport class FieldAddon {\n  static INDEX = 64;\n  cache: { [hash: string]: Promise<IOmniboxSuggestion[]> } = {};\n\n  constructor(public omnibox: Omnibox) {\n    this.omnibox.bind.on(this.omnibox.element, OmniboxEvents.populateOmniboxSuggestions, (args: IPopulateOmniboxSuggestionsEventArgs) => {\n      args.suggestions.push(this.getSuggestion());\n    });\n  }\n\n  public getSuggestion(): Promise<IOmniboxSuggestion[]> {\n    const hash = this.getHash();\n    if (hash == null) {\n      return null;\n    }\n    const hashString = this.hashToString(hash);\n    if (this.cache[hashString] != null) {\n      return this.hashValueToSuggestion(hash, this.cache[hashString]);\n    }\n    let values: Promise<IOmniboxSuggestion[]>;\n    if (hash.type == 'FieldName') {\n      values = this.fieldNames(hash.current);\n    }\n    if (hash.type == 'FieldValue') {\n      values = this.fieldValues(hash.field, hash.current);\n    }\n    if (hash.type == 'SimpleFieldName') {\n      values = this.simpleFieldNames(hash.current);\n    }\n    this.cache[hashString] = values;\n    values.catch(() => {\n      delete this.cache[hashString];\n    });\n    return this.hashValueToSuggestion(hash, values);\n  }\n\n  private getHash(): IFieldAddonHash {\n    let fieldName: Result = _.last(this.omnibox.resultAtCursor('FieldName'));\n    if (fieldName != null) {\n      fieldName = fieldName.findParent('Field') || fieldName;\n      const currentField = fieldName.toString();\n      const before = fieldName.before();\n      const after = fieldName.after();\n      return { type: 'FieldName', current: currentField, before: before, after: after };\n    }\n    const fieldValue: Result = _.last(this.omnibox.resultAtCursor('FieldValue'));\n    if (fieldValue) {\n      const fieldQuery =\n        fieldValue.findParent('FieldQuery') || (this.omnibox.options.enableSimpleFieldAddon && fieldValue.findParent('FieldSimpleQuery'));\n      if (fieldQuery) {\n        let field = fieldQuery.find('FieldName').toString();\n        if (this.omnibox.options.fieldAlias) {\n          if (field in this.omnibox.options.fieldAlias) {\n            field = this.omnibox.options.fieldAlias[field];\n          }\n        }\n        const value = fieldValue.toString();\n        const before = fieldValue.before();\n        const after = fieldValue.after();\n        return { type: 'FieldValue', field: field, current: value, before: before, after: after };\n      }\n    }\n    if (this.omnibox.options.enableSimpleFieldAddon) {\n      const word: Result = _.last(this.omnibox.resultAtCursor('Word'));\n      if (word != null) {\n        const current = word.toString();\n        const before = word.before();\n        const after = word.after();\n        return { type: 'SimpleFieldName', current, before, after };\n      }\n    }\n  }\n\n  private hashToString(hash: IFieldAddonHash) {\n    if (hash == null) {\n      return null;\n    }\n    return hash.type + hash.current + (hash.field || '');\n  }\n\n  private hashValueToSuggestion(hash: IFieldAddonHash, promise: Promise<IOmniboxSuggestion[]>): Promise<IOmniboxSuggestion[]> {\n    return promise.then(values => {\n      const suggestions = _.map<any, IOmniboxSuggestion>(values, (value: string, i): IOmniboxSuggestion => {\n        const suggestion: IOmniboxSuggestion = {\n          text:\n            hash.before +\n            (hash.current.toLowerCase().indexOf(value.toLowerCase()) == 0 ? hash.current + value.substr(hash.current.length) : value) +\n            hash.after,\n          html: MagicBoxUtils.highlightText(value, hash.current, true),\n          index: FieldAddon.INDEX - i / values.length\n        };\n        return suggestion;\n      });\n      return suggestions;\n    });\n  }\n\n  private fields: Promise<IOmniboxSuggestion[]>;\n\n  private getFields(): Promise<IOmniboxSuggestion[]> {\n    if (this.fields == null) {\n      this.fields = new Promise<any[]>((resolve, reject) => {\n        if (this.omnibox.options.listOfFields != null) {\n          resolve(<string[]>this.omnibox.options.listOfFields);\n        } else {\n          const promise: Promise<IFieldDescription[] | IEndpointError> = this.omnibox.queryController.getEndpoint().listFields();\n          promise\n            .then((fieldDescriptions: IFieldDescription[]) => {\n              const fieldNames = _.chain(fieldDescriptions)\n                .filter((fieldDescription: IFieldDescription) => fieldDescription.includeInQuery && fieldDescription.groupByField)\n                .map((fieldDescription: IFieldDescription) => fieldDescription.name.substr(1))\n                .value();\n\n              resolve(fieldNames);\n            })\n            .catch(() => {\n              reject();\n            });\n        }\n      });\n    }\n    return this.fields;\n  }\n\n  private fieldNames(current: string): Promise<IOmniboxSuggestion[]> {\n    const withAt = current.length > 0 && current[0] == '@';\n    const fieldName = withAt ? current.substr(1) : current;\n    const fieldNameLC = fieldName.toLowerCase();\n\n    return this.getFields().then((fields: string[] | IOmniboxSuggestion[]): any[] => {\n      let matchFields = _.chain(fields)\n        .map((fieldName: any) => {\n          const fieldNameBeginsWithAt = fieldName.length > 0 && fieldName[0] == '@';\n          return {\n            index: fieldName.toLowerCase().indexOf(fieldNameLC),\n            field: fieldNameBeginsWithAt ? fieldName : '@' + fieldName\n          };\n        })\n        .filter(field => {\n          return field.index != -1 && field.field.length > current.length;\n        })\n        .sortBy('index')\n        .map(field => field.field)\n        .value();\n      matchFields = _.first(matchFields, 5);\n      return matchFields;\n    });\n  }\n\n  private fieldValues(field: string, current: string): Promise<any[]> {\n    return this.omnibox.queryController\n      .getEndpoint()\n      .listFieldValues({\n        pattern: '.*' + current + '.*',\n        patternType: 'RegularExpression',\n        sortCriteria: 'occurrences',\n        field: '@' + field,\n        maximumNumberOfValues: 5\n      })\n      .then(values => {\n        return _.chain(values)\n          .map(value => {\n            return {\n              index: value.value.toLowerCase().indexOf(current),\n              value: value.value\n            };\n          })\n          .filter(value => {\n            return value.value.length > current.length;\n          })\n          .sortBy('index')\n          .map(value => {\n            return value.value.replace(/ /g, '\\u00A0');\n          })\n          .value();\n      });\n  }\n\n  private simpleFieldNames(current: string): Promise<IOmniboxSuggestion[]> {\n    const fieldName = current;\n    const fieldNameLC = fieldName.toLowerCase();\n\n    return this.getFields().then((fields: any[]): IOmniboxSuggestion[] => {\n      let matchFields: any = _.chain(fields)\n        .map((field: string) => {\n          return {\n            index: field.toLowerCase().indexOf(fieldNameLC),\n            field: field + ':'\n          };\n        })\n        .filter(field => {\n          return field.index != -1 && field.field.length > current.length;\n        })\n        .sortBy('index')\n        .map(field => field.field)\n        .value();\n      matchFields = _.first(matchFields, 5);\n      return matchFields;\n    });\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Omnibox/FieldAddon.ts","///<reference path=\"Omnibox.ts\"/>\nimport { Omnibox, IOmniboxSuggestion } from './Omnibox';\nimport { IOmniboxDataRow } from './OmniboxInterface';\nimport {\n  OmniboxEvents,\n  IPopulateOmniboxEventArgs,\n  IPopulateOmniboxEventRow,\n  IPopulateOmniboxSuggestionsEventArgs\n} from '../../events/OmniboxEvents';\nimport { $$ } from '../../utils/Dom';\nimport { Utils } from '../../utils/Utils';\nimport * as _ from 'underscore';\n\nexport class OldOmniboxAddon {\n  constructor(public omnibox: Omnibox) {\n    this.omnibox.bind.on(this.omnibox.element, OmniboxEvents.populateOmniboxSuggestions, (args: IPopulateOmniboxSuggestionsEventArgs) => {\n      _.each(this.getSuggestion(), suggestion => {\n        args.suggestions.push(suggestion);\n      });\n    });\n  }\n\n  public getSuggestion(): Promise<IOmniboxSuggestion[]>[] {\n    const text = this.omnibox.magicBox.getText();\n\n    if (text.length == 0) {\n      return null;\n    }\n\n    const eventArgs = this.buildPopulateOmniboxEventArgs();\n    $$(this.omnibox.root).trigger(OmniboxEvents.populateOmnibox, eventArgs);\n\n    return this.rowsToSuggestions(eventArgs.rows);\n  }\n\n  private getCurrentQueryExpression() {\n    const cursorPos = this.omnibox.getCursor();\n    const value = this.omnibox.getText();\n    const length = value.length;\n    let start = cursorPos;\n    let end = cursorPos;\n    if (value[start] == ' ') {\n      start--;\n    }\n    while (start > 0 && value[start] != ' ') {\n      start--;\n    }\n    while (end < length && value[end] != ' ') {\n      end++;\n    }\n    return value.substring(start, end);\n  }\n\n  private getRegexToSearch(strValue?: string) {\n    if (strValue == null) {\n      strValue = this.omnibox.getText();\n    }\n    return new RegExp(Utils.escapeRegexCharacter(strValue), 'i');\n  }\n\n  private getQueryExpressionBreakDown() {\n    const ret = [];\n    const queryWords = this.omnibox.getText().split(' ');\n    _.each(queryWords, word => {\n      ret.push({\n        word: word,\n        regex: this.getRegexToSearch(word)\n      });\n    });\n    return ret;\n  }\n\n  private replace(searchValue: string, newValue: string) {\n    this.omnibox.setText(this.omnibox.getText().replace(searchValue, newValue));\n  }\n\n  private clearCurrentExpression() {\n    this.replace(this.getCurrentQueryExpression(), '');\n  }\n\n  private insertAt(at: number, toInsert: string) {\n    const oldValue = this.omnibox.getText();\n    const newValue = [oldValue.slice(0, at), toInsert, oldValue.slice(at)].join('');\n    this.omnibox.setText(newValue);\n  }\n\n  private replaceCurrentExpression(newValue: string) {\n    this.replace(this.getCurrentQueryExpression(), newValue);\n  }\n\n  private buildPopulateOmniboxEventArgs() {\n    const currentQueryExpression = this.getCurrentQueryExpression();\n    const ret: IPopulateOmniboxEventArgs = {\n      rows: [],\n      completeQueryExpression: {\n        word: this.omnibox.getText(),\n        regex: this.getRegexToSearch()\n      },\n      currentQueryExpression: {\n        word: currentQueryExpression,\n        regex: this.getRegexToSearch(currentQueryExpression)\n      },\n      allQueryExpressions: this.getQueryExpressionBreakDown(),\n      cursorPosition: this.omnibox.getCursor(),\n      clear: () => {\n        this.omnibox.clear();\n      },\n      clearCurrentExpression: () => {\n        this.clearCurrentExpression();\n      },\n      replace: (searchValue: string, newValue: string) => {\n        this.replace(searchValue, newValue);\n      },\n      replaceCurrentExpression: (newValue: string) => {\n        this.replaceCurrentExpression(newValue);\n      },\n      insertAt: (at: number, toInsert: string) => {\n        this.insertAt(at, toInsert);\n      },\n      closeOmnibox: () => {\n        this.omnibox.magicBox.blur();\n      }\n    };\n    return ret;\n  }\n\n  private rowsToSuggestions(rows: IOmniboxDataRow[]): Promise<IOmniboxSuggestion[]>[] {\n    return _.map(rows, (row: IPopulateOmniboxEventRow) => {\n      if (!Utils.isNullOrUndefined(row.element)) {\n        return new Promise<IOmniboxSuggestion[]>(resolve => {\n          resolve([\n            {\n              dom: row.element,\n              index: row.zIndex\n            }\n          ]);\n        });\n      } else if (!Utils.isNullOrUndefined(row.deferred)) {\n        return new Promise<IOmniboxSuggestion[]>(resolve => {\n          row.deferred.then(row => {\n            if (row.element != null) {\n              resolve([\n                {\n                  dom: row.element,\n                  index: row.zIndex\n                }\n              ]);\n            } else {\n              resolve(null);\n            }\n          });\n        });\n      }\n      return null;\n    });\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Omnibox/OldOmniboxAddon.ts","///<reference path='Omnibox.ts'/>\nimport { OmniboxEvents, IPopulateOmniboxSuggestionsEventArgs } from '../../events/OmniboxEvents';\nimport { Omnibox, IOmniboxSuggestion } from './Omnibox';\nimport { IExtension } from '../../rest/Extension';\nimport * as _ from 'underscore';\nimport { MagicBoxInstance } from '../../magicbox/MagicBox';\nimport { MagicBoxUtils } from '../../magicbox/MagicBoxUtils';\nimport { Result } from '../../magicbox/Result/Result';\n\ninterface IQueryExtensionAddonHash {\n  type: string;\n  before: string;\n  after: string;\n  current: string;\n  name?: string;\n  used?: string[];\n}\n\nexport class QueryExtensionAddon {\n  static INDEX = 62;\n\n  cache: { [hash: string]: Promise<string[]> } = {};\n\n  constructor(public omnibox: Omnibox) {\n    this.omnibox.bind.on(this.omnibox.element, OmniboxEvents.populateOmniboxSuggestions, (args: IPopulateOmniboxSuggestionsEventArgs) => {\n      args.suggestions.push(this.getSuggestion());\n    });\n  }\n\n  public getSuggestion(): Promise<IOmniboxSuggestion[]> {\n    var hash = this.getHash(this.omnibox.magicBox);\n    if (hash == null) {\n      return null;\n    }\n    var hashString = this.hashToString(hash);\n    if (this.cache[hashString] != null) {\n      return this.hashValueToSuggestion(hash, this.cache[hashString]);\n    }\n    var values = hash.type == 'QueryExtensionName' ? this.names(hash.current) : this.attributeNames(hash.name, hash.current, hash.used);\n    this.cache[hashString] = values;\n    values.catch(() => {\n      delete this.cache[hashString];\n    });\n    return this.hashValueToSuggestion(hash, values);\n  }\n\n  private getHash(magicBox: MagicBoxInstance): IQueryExtensionAddonHash {\n    var queryExtension: Result = _.last(magicBox.resultAtCursor('QueryExtension'));\n    if (queryExtension != null) {\n      var queryExtensionArgumentResults = queryExtension.findAll('QueryExtensionArgument');\n      var current = _.last(magicBox.resultAtCursor('QueryExtensionName'));\n      if (current != null) {\n        return {\n          type: 'QueryExtensionName',\n          current: current.toString(),\n          before: current.before(),\n          after: current.after()\n        };\n      }\n\n      current = _.last(magicBox.resultAtCursor('QueryExtensionArgumentName'));\n      if (current != null) {\n        var used: string[] = _.chain(queryExtensionArgumentResults)\n          .map(result => {\n            var name = result.find('QueryExtensionArgumentName');\n            return name && name.toString();\n          })\n          .compact()\n          .value();\n\n        var name = queryExtension.find('QueryExtensionName').toString();\n\n        return {\n          type: 'QueryExtensionArgumentName',\n          current: current.toString(),\n          before: current.before(),\n          after: current.after(),\n          name: name,\n          used: used\n        };\n      }\n    }\n    return null;\n  }\n\n  private hashToString(hash: IQueryExtensionAddonHash) {\n    if (hash == null) {\n      return null;\n    }\n    return [hash.type, hash.current, hash.name || '', hash.used ? hash.used.join() : ''].join();\n  }\n\n  private hashValueToSuggestion(hash: IQueryExtensionAddonHash, promise: Promise<string[]>): Promise<IOmniboxSuggestion[]> {\n    return promise.then(values => {\n      var suggestions: IOmniboxSuggestion[] = _.map(values, (value, i) => {\n        return {\n          html: MagicBoxUtils.highlightText(value, hash.current, true),\n          text: hash.before + value + hash.after,\n          index: QueryExtensionAddon.INDEX - i / values.length\n        };\n      });\n      return suggestions;\n    });\n  }\n\n  private extensions: Promise<any>;\n\n  private getExtensions() {\n    if (this.extensions == null) {\n      this.extensions = this.omnibox.queryController.getEndpoint().extensions();\n    }\n    return this.extensions;\n  }\n\n  private names(current: string): Promise<string[]> {\n    var extensionName = current.toLowerCase();\n    return this.getExtensions().then((extensions: IExtension[]) => {\n      var matchExtensions = _.chain(extensions)\n        .map((extension: IExtension) => {\n          return {\n            index: extension.name.toLowerCase().indexOf(extensionName),\n            extension: extension.name\n          };\n        })\n        .filter(extension => {\n          return extension.index != -1 && extension.extension.length > extensionName.length;\n        })\n        .sortBy('index')\n        .pluck('extension')\n        .value();\n      matchExtensions = _.first(matchExtensions, 5);\n      return matchExtensions;\n    });\n  }\n\n  private attributeNames(name: string, current: string, used: string[]): Promise<string[]> {\n    return this.getExtensions().then((extensions: IExtension[]) => {\n      var extension = _.find(extensions, (extension: IExtension) => extension.name == name);\n      if (extension == null) {\n        return [];\n      } else {\n        return _.filter(_.difference(extension.argumentNames, used), (argumentName: string) => argumentName.indexOf(current) == 0);\n      }\n    });\n  }\n\n  public hash() {\n    return;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Omnibox/QueryExtensionAddon.ts","///<reference path=\"Omnibox.ts\"/>\nimport { Omnibox, IOmniboxSuggestion } from './Omnibox';\nimport { $$, Dom } from '../../utils/Dom';\nimport { IQuerySuggestCompletion, IQuerySuggestRequest } from '../../rest/QuerySuggest';\nimport { ComponentOptionsModel } from '../../models/ComponentOptionsModel';\nimport {\n  OmniboxEvents,\n  IPopulateOmniboxSuggestionsEventArgs,\n  IBuildingQuerySuggestArgs,\n  IQuerySuggestSuccessArgs\n} from '../../events/OmniboxEvents';\nimport { StringUtils } from '../../utils/StringUtils';\nimport { SuggestionsCache } from '../../misc/SuggestionsCache';\nimport { map, every, last, indexOf, find } from 'underscore';\nimport { QUERY_STATE_ATTRIBUTES } from '../../models/QueryStateModel';\nimport { history } from 'coveo.analytics';\nimport { Cookie } from '../../utils/CookieUtils';\nimport { Utils } from '../../utils/Utils';\n\nexport interface IQuerySuggestAddon {\n  getSuggestion(): Promise<IOmniboxSuggestion[]>;\n}\n\nexport class QuerySuggestAddon implements IQuerySuggestAddon {\n  static INDEX = 60;\n\n  private static suggestiontHtml(suggestion: IQuerySuggestCompletion) {\n    return suggestion.highlighted.replace(/\\[(.*?)\\]|\\{(.*?)\\}|\\((.*?)\\)/g, (part, notMatched, matched, corrected) => {\n      var className = '';\n      if (matched) {\n        className = 'coveo-omnibox-hightlight';\n      }\n      if (corrected) {\n        className = 'coveo-omnibox-hightlight2';\n      }\n\n      let ret: Dom;\n      if (className) {\n        ret = $$('span', {\n          className: className\n        });\n      } else {\n        ret = $$('span');\n      }\n      ret.text(notMatched || matched || corrected);\n      return ret.el.outerHTML;\n    });\n  }\n\n  private static isPartialMatch(suggestion: IQuerySuggestCompletion) {\n    // groups : 1=notMatched, 2=matched, 3=corrected\n    var parts = StringUtils.match(suggestion.highlighted, /\\[(.*?)\\]|\\{(.*?)\\}|\\((.*?)\\)/g);\n    var firstFail = find(parts, (part: string[]) => part[1] != null);\n    // if no fail found, this is a partial or a full match\n    if (firstFail == null) {\n      return true;\n    }\n    // if all right parts are notMatched, the right parts is autocomplete\n    return every(last(parts, indexOf(parts, firstFail) - parts.length), (part: string[]) => part[1] != null);\n  }\n\n  private cache: SuggestionsCache<IOmniboxSuggestion[]> = new SuggestionsCache();\n\n  constructor(public omnibox: Omnibox) {\n    $$(this.omnibox.element).on(OmniboxEvents.populateOmniboxSuggestions, (e: Event, args: IPopulateOmniboxSuggestionsEventArgs) => {\n      args.suggestions.push(this.getSuggestion());\n    });\n  }\n\n  public getSuggestion(): Promise<IOmniboxSuggestion[]> {\n    const text = this.omnibox.magicBox.getText();\n\n    return this.cache.getSuggestions(text, () => this.getQuerySuggest(text));\n  }\n\n  private async getQuerySuggest(text: string): Promise<IOmniboxSuggestion[]> {\n    const payload: IQuerySuggestRequest = {\n      q: text,\n      locale: this.locale,\n      searchHub: this.searchHub,\n      pipeline: this.pipeline,\n      enableWordCompletion: this.enableWordCompletion,\n      context: this.context,\n      count: this.count,\n      tab: this.tab,\n      referrer: document.referrer,\n      actionsHistory: this.actionsHistory,\n      timezone: this.timezone,\n      visitorId: this.visitorId,\n      isGuestUser: this.isGuestUser\n    };\n\n    $$(this.omnibox.getBindings().searchInterface.element).trigger(OmniboxEvents.buildingQuerySuggest, <IBuildingQuerySuggestArgs>{\n      payload\n    });\n\n    const results = await this.omnibox.queryController.getEndpoint().getQuerySuggest(payload);\n    const completions = results.completions;\n\n    $$(this.omnibox.getBindings().searchInterface.element).trigger(OmniboxEvents.querySuggestSuccess, <IQuerySuggestSuccessArgs>{\n      completions\n    });\n\n    return map(completions, (completion, i) => {\n      return {\n        html: QuerySuggestAddon.suggestiontHtml(completion),\n        text: completion.expression,\n        index: QuerySuggestAddon.INDEX - i / completions.length,\n        partial: QuerySuggestAddon.isPartialMatch(completion),\n        executableConfidence: completion.executableConfidence\n      };\n    });\n  }\n\n  private get tab() {\n    const tab = this.omnibox.getBindings().queryStateModel.get(QUERY_STATE_ATTRIBUTES.T) as string;\n\n    if (Utils.isNonEmptyString(tab)) {\n      return tab;\n    }\n\n    return undefined;\n  }\n\n  private get locale() {\n    return String['locale'];\n  }\n\n  private get searchHub() {\n    return this.omnibox.getBindings().componentOptionsModel.get(ComponentOptionsModel.attributesEnum.searchHub);\n  }\n\n  private get pipeline() {\n    return this.omnibox.getBindings().searchInterface.options.pipeline;\n  }\n\n  private get enableWordCompletion() {\n    return this.omnibox.options.enableSearchAsYouType;\n  }\n\n  private get context() {\n    return this.omnibox.getBindings().searchInterface.getQueryContext();\n  }\n\n  private get count() {\n    return this.omnibox.options.numberOfSuggestions;\n  }\n\n  private get actionsHistory() {\n    const historyStore = new history.HistoryStore();\n    const historyFromStore = historyStore.getHistory();\n    if (historyFromStore == null) {\n      return [];\n    }\n    return historyFromStore;\n  }\n\n  private get timezone() {\n    return this.omnibox.getBindings().searchInterface.options.timezone;\n  }\n\n  private get visitorId() {\n    return Cookie.get('visitorId');\n  }\n\n  private get isGuestUser() {\n    return this.omnibox.getBindings().queryController.getEndpoint().options.isGuestUser;\n  }\n}\n\nexport class VoidQuerySuggestAddon implements IQuerySuggestAddon {\n  getSuggestion(): Promise<IOmniboxSuggestion[]> {\n    return Promise.resolve([]);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Omnibox/QuerySuggestAddon.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_Searchbox.scss\n// module id = 495\n// module chunks = 5 77","import { SubGrammar } from './Expressions';\nimport { Expression } from '../Expression/Expression';\nimport { Result } from '../Result/Result';\nimport { EndOfInputResult } from '../Result/Result';\n\nexport const notWordStart = ' ()[],$@\\'\"';\nexport const notInWord = ' ()[],:';\n\nexport const Basic: SubGrammar = {\n  basicExpressions: ['Word', 'DoubleQuoted'],\n  grammars: {\n    DoubleQuoted: '\"[NotDoubleQuote]\"',\n    NotDoubleQuote: /[^\"]*/,\n    SingleQuoted: \"'[NotSingleQuote]'\",\n    NotSingleQuote: /[^']*/,\n    Number: /-?(0|[1-9]\\d*)(\\.\\d+)?/,\n    Word: (input: string, end: boolean, expression: Expression) => {\n      const regex = new RegExp('[^' + notWordStart.replace(/(.)/g, '\\\\$1') + '][^' + notInWord.replace(/(.)/g, '\\\\$1') + ']*');\n      let groups = input.match(regex);\n      if (groups != null && groups.index != 0) {\n        groups = null;\n      }\n      const result = new Result(groups != null ? groups[0] : null, expression, input);\n      if (result.isSuccess() && end && input.length > result.value.length) {\n        return new EndOfInputResult(result);\n      }\n      return result;\n    }\n  }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Grammars/Basic.ts"],"sourceRoot":""}