{"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 * >
\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(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(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 = 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(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(value, id, grammar);\n }\n if (_.isArray(value)) {\n return new ExpressionOptions(_.map(value, (v: string, i) => new ExpressionRef(v, null, id + '_' + i, grammar)), id);\n }\n if (_.isRegExp(value)) {\n return new ExpressionRegExp(value, id, grammar);\n }\n if (_.isFunction(value)) {\n return new ExpressionFunction(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) {\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","///\n///\n///\n///\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 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 (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(\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(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(\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(\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(\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 (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 = 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 = 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 (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(\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(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 | 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 `${_.escape(text)}`;\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 *
\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 *
\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(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) ? 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 ((this.input).createTextRange) {\n var range = (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;\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, {\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 = $$(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 = $$(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 = $$(e.relatedTarget).parents(this.options.selectableClass);\n if (target.hasClass(this.options.selectedClass) && !$$(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 | 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((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) => {\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 = 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(expressionDef, (value: string) => {\n (grammars[id]).push(value);\n });\n } else {\n _.each(expressionDef, (value: string) => {\n (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 {\n private cache: { [hash: string]: Promise } = {};\n\n getSuggestions(hash: string, suggestionsFetcher: () => Promise): Promise {\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 = value;\n } else if (_.isArray(value)) {\n this.subResults = 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 = 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((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","///\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 } = {};\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 {\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;\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): Promise {\n return promise.then(values => {\n const suggestions = _.map(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;\n\n private getFields(): Promise {\n if (this.fields == null) {\n this.fields = new Promise((resolve, reject) => {\n if (this.omnibox.options.listOfFields != null) {\n resolve(this.omnibox.options.listOfFields);\n } else {\n const promise: Promise = 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 {\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 {\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 {\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","///\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[] {\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[] {\n return _.map(rows, (row: IPopulateOmniboxEventRow) => {\n if (!Utils.isNullOrUndefined(row.element)) {\n return new Promise(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(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","///\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 } = {};\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 {\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): Promise {\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;\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 {\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 {\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","///\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;\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 = 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 {\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 {\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, {\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, {\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 {\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":""}