{"version":3,"sources":["./src/ui/SearchButton/SearchButton.ts","./src/utils/SVGDom.ts","./src/ui/Searchbox/Searchbox.ts","./node_modules/coveomagicbox/bin/MagicBox.min.js","./src/ui/Querybox/QueryboxQueryParameters.ts","./src/misc/SuggestionsCache.ts","./src/ui/Omnibox/FieldAddon.ts","./src/ui/Omnibox/QueryExtensionAddon.ts","./src/ui/Omnibox/QuerySuggestAddon.ts","./src/ui/Omnibox/OldOmniboxAddon.ts","./sass/_Omnibox.scss","./sass/_Searchbox.scss","./src/ui/Omnibox/Omnibox.ts","./src/ui/Querybox/Querybox.ts"],"names":[],"mappings":"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","file":"Searchbox__3666dadfe7be2cf1b66b.js","sourcesContent":["import { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { Utils } from '../../utils/Utils';\nimport { $$ } from '../../utils/Dom';\nimport { l } from '../../strings/Strings';\nimport { IAnalyticsNoMeta, analyticsActionCauseList } from '../Analytics/AnalyticsActionListMeta';\nimport { Initialization } from '../Base/Initialization';\nimport { exportGlobally } from '../../GlobalExports';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { SVGDom } from '../../utils/SVGDom';\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 $$(element).setAttribute('aria-label', l('Search'));\n this.bind.on(element, 'click', () => this.handleClick());\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 { 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","import { IOmniboxOptions } from '../Omnibox/Omnibox';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { Omnibox } from '../Omnibox/Omnibox';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { SearchButton } from '../SearchButton/SearchButton';\nimport { Querybox } from '../Querybox/Querybox';\nimport { $$ } from '../../utils/Dom';\nimport { Initialization } from '../Base/Initialization';\nimport * as _ from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\n\nimport 'styling/_Searchbox';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { SVGDom } from '../../utils/SVGDom';\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 if (this.options.addSearchButton) {\n var anchor = document.createElement('a');\n this.element.appendChild(anchor);\n this.searchButton = new SearchButton(anchor, undefined, bindings);\n }\n\n var div = document.createElement('div');\n this.element.appendChild(div);\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 = _.extend({}, Searchbox.options, Omnibox.options, Querybox.options);\n\n// Only parse omnibox option if omnibox is enabled\n_.each(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","var Coveo,__extends=this&&this.__extends||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);function s(){this.constructor=t}t.prototype=null===e?Object.create(e):(s.prototype=e.prototype,new s)};!function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),n=function(){function t(t,e,n){var s=this;this.expression=e,this.input=n,_.isString(t)?this.value=t:_.isArray(t)&&(this.subResults=t,_.forEach(this.subResults,function(t){t.parent=s}))}return t.prototype.isSuccess=function(){return null!=this.value||null!=this.subResults&&_.all(this.subResults,function(t){return t.isSuccess()})},t.prototype.path=function(t){var e=null!=this.parent&&this.parent!=t?this.parent.path(t):[];return e.push(this),e},t.prototype.findParent=function(t){for(var e=this,n=_.isString(t)?function(e){return t==e.expression.id}:t;null!=e&&!n(e);)e=e.parent;return e},t.prototype.find=function(t){var e=_.isString(t)?function(e){return t==e.expression.id}:t;if(e(this))return this;if(this.subResults)for(var n=0;nthis.getLength())return[];if(null!=e){if(_.isString(e)){if(e==this.expression.id)return[this]}else if(e(this))return[this]}else if(null!=(null==this.value&&null==this.subResults?this.input:this.value))return[this];if(null!=this.subResults){for(var n=[],s=0;s0?_.last(t).input:\"\";return\"Expected \"+_.map(t,function(t){return t.getHumanReadable()}).join(\" or \")+\" but \"+(e.length>0?JSON.stringify(e[0]):\"end of input\")+\" found.\"},t.prototype.before=function(){if(null==this.parent)return\"\";var t=_.indexOf(this.parent.subResults,this);return this.parent.before()+_.chain(this.parent.subResults).first(t).map(function(t){return t.toString()}).join(\"\").value()},t.prototype.after=function(){if(null==this.parent)return\"\";var t=_.indexOf(this.parent.subResults,this);return _.chain(this.parent.subResults).last(this.parent.subResults.length-t-1).map(function(t){return t.toString()}).join(\"\").value()+this.parent.after()},t.prototype.getLength=function(){return null!=this.value?this.value.length:null!=this.subResults?_.reduce(this.subResults,function(t,e){return t+e.getLength()},0):this.input.length},t.prototype.toHtmlElement=function(){var t=document.createElement(\"span\"),e=null!=this.expression?this.expression.id:null;return null!=e&&t.setAttribute(\"data-id\",e),t.setAttribute(\"data-success\",this.isSuccess().toString()),null!=this.value?(t.appendChild(document.createTextNode(this.value)),t.setAttribute(\"data-value\",this.value)):null!=this.subResults?_.each(this.subResults,function(e){t.appendChild(e.toHtmlElement())}):(t.appendChild(document.createTextNode(this.input)),t.setAttribute(\"data-input\",this.input),t.className=\"magic-box-error\"+(this.input.length>0?\"\":\" magic-box-error-empty\")),t.result=this,t},t.prototype.clean=function(e){if(null!=e||!this.isSuccess()){e=e||_.last(this.getBestExpect()).path(this);var n=_.first(e);if(null!=n){var s=_.indexOf(this.subResults,n),i=-1==s?[]:_.map(_.first(this.subResults,s),function(t){return t.clean()});return i.push(n.clean(_.rest(e))),new t(i,this.expression,this.input)}return new t(null,this.expression,this.input)}return null!=this.value?new t(this.value,this.expression,this.input):null!=this.subResults?new t(_.map(this.subResults,function(t){return t.clean()}),this.expression,this.input):void 0},t.prototype.clone=function(){return null!=this.value?new t(this.value,this.expression,this.input):null!=this.subResults?new t(_.map(this.subResults,function(t){return t.clone()}),this.expression,this.input):new t(null,this.expression,this.input)},t.prototype.toString=function(){return null!=this.value?this.value:null!=this.subResults?_.map(this.subResults,function(t){return t.toString()}).join(\"\"):this.input},t.prototype.getHumanReadable=function(){return this.expression instanceof e.ExpressionConstant?JSON.stringify(this.expression.value):this.expression.id},t}(),e.Result=n}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),n=function(t){function n(n){t.call(this,[n],e.ExpressionEndOfInput,n.input);var s=new e.Result(null,e.ExpressionEndOfInput,n.input.substr(n.getLength()));s.parent=this,this.subResults.push(s)}return __extends(n,t),n}(e.Result),e.EndOfInputResult=n}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),n=function(t){function n(e,n,s,i){var o=this;t.call(this,null!=e?[e]:null,n,s),this.result=e,this.expression=n,this.input=s,this.failAttempt=i,_.forEach(this.failAttempt,function(t){t.parent=o})}return __extends(n,t),n.prototype.getExpect=function(){var t=this,e=[];return null!=this.result&&(e=this.result.getExpect()),(e=_.reduce(this.failAttempt,function(t,e){return t.concat(e.getExpect())},e)).length>0&&_.all(e,function(e){return e.input==t.input})?[this]:e},n.prototype.clean=function(t){if(null!=t||!this.isSuccess()){t=_.rest(t||_.last(this.getBestExpect()).path(this));var n=_.first(t);return null==n?new e.Result(null,this.expression,this.input):new e.Result([n.clean(_.rest(t))],this.expression,this.input)}return new e.Result(_.map(this.result.subResults,function(t){return t.clean()}),this.expression,this.input)},n}(e.Result),e.OptionResult=n}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),n=function(t){function n(e,n,s,i){t.call(this,e,n,s),this.results=e,this.expression=n,this.input=s,_.last(e)!=i&&(this.failAttempt=i,null!=this.failAttempt&&(this.failAttempt.parent=this))}return __extends(n,t),n.prototype.getExpect=function(){var e=t.prototype.getExpect.call(this);return null!=this.failAttempt?e.concat(this.failAttempt.getExpect()):e},n.prototype.clean=function(n){if(null!=this.failAttempt&&(null!=n||!this.isSuccess())){n=n||_.last(this.getBestExpect()).path(this);var s=_.first(n);if(null!=s&&s==this.failAttempt){var i=_.last(this.subResults),o=_.map(null!=i&&i.isSuccess()?this.subResults:_.initial(this.subResults),function(t){return t.clean()});return o.push(s.clean(_.rest(n))),new e.Result(o,this.expression,this.input)}}return t.prototype.clean.call(this,n)},n}(e.Result),e.RefResult=n}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),n=function(){function t(t,e){this.value=t,this.id=e}return t.prototype.parse=function(t,n){var s=0==t.indexOf(this.value),i=new e.Result(s?this.value:null,this,t);return s&&n&&t.length>this.value.length?new e.EndOfInputResult(i):i},t.prototype.toString=function(){return this.value},t}(),e.ExpressionConstant=n}(Coveo||(Coveo={})),function(t){(t.MagicBox||(t.MagicBox={})).ExpressionEndOfInput={id:\"end of input\",parse:null}}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),n=function(){function t(t,e,n){this.func=t,this.id=e,this.grammar=n}return t.prototype.parse=function(t,e){return this.func(t,e,this)},t.prototype.toString=function(){return this.id},t}(),e.ExpressionFunction=n}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),n=function(){function t(t,e){if(this.parts=t,this.id=e,0==t.length)throw JSON.stringify(e)+\" should have at least 1 parts\"}return t.prototype.parse=function(t,n){for(var s,i=[],o=t,r=0;r0){var l=_.last(r);(i=s.parse(l.input,!0)).isSuccess()?r[r.length-1]=i:(r.push(new e.Result(null,e.ExpressionEndOfInput,l.input.substr(l.getLength()))),i=s.parse(l.input.substr(l.getLength()),!0))}else if(0!=t.length){var p=new e.Result(null,e.ExpressionEndOfInput,t);return new e.RefResult([p],this,t,i)}return new e.RefResult(r,this,t,i)},t.prototype.toString=function(){return this.id},t}(),e.ExpressionRef=n}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),n=function(){function t(t,e,n){this.value=t,this.id=e}return t.prototype.parse=function(t,n){var s=t.match(this.value);null!=s&&0!=s.index&&(s=null);var i=new e.Result(null!=s?s[0]:null,this,t);return i.isSuccess()&&n&&t.length>i.value.length?new e.EndOfInputResult(i):i},t.prototype.toString=function(){return this.id},t}(),e.ExpressionRegExp=n}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),n=function(){function t(t,n){void 0===n&&(n={}),this.expressions={},this.start=new e.ExpressionRef(t,null,\"start\",this),this.addExpressions(n)}return t.prototype.addExpressions=function(t){var e=this;_.each(t,function(t,n){e.addExpression(n,t)})},t.prototype.addExpression=function(e,n){if(e in this.expressions)throw\"Grammar already contain the id:\"+e;this.expressions[e]=t.buildExpression(n,e,this)},t.prototype.getExpression=function(t){return this.expressions[t]},t.prototype.parse=function(t){return this.start.parse(t,!0)},t.buildExpression=function(t,n,s){if(\"undefined\"==typeof t)throw\"Invalid Expression: \"+t;if(_.isString(t))return this.buildStringExpression(t,n,s);if(_.isArray(t))return new e.ExpressionOptions(_.map(t,function(t,i){return new e.ExpressionRef(t,null,n+\"_\"+i,s)}),n);if(_.isRegExp(t))return new e.ExpressionRegExp(t,n,s);if(_.isFunction(t))return new e.ExpressionFunction(t,n,s);throw\"Invalid Expression: \"+t},t.buildStringExpression=function(n,s,i){var o=t.stringMatch(n,t.spliter),r=_.map(o,function(t,n){if(t[1]){var o=t[1],r=t[3]?Number(t[3]):t[2]||null;return new e.ExpressionRef(o,r,s+\"_\"+n,i)}return new e.ExpressionConstant(t[4],s+\"_\"+n)});if(1==r.length){var u=r[0];return u.id=s,u}return new e.ExpressionList(r,s)},t.stringMatch=function(t,e){for(var n,s=[],i=new RegExp(e.source,\"g\");null!==(n=i.exec(t));)s.push(n);return s},t.spliter=/\\[(\\w+)(\\*|\\+|\\?|\\{([1-9][0-9]*)\\})?\\]|(.[^\\[]*)/,t}(),e.Grammar=n}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),n=function(){function t(t,n,s){this.element=t,this.onchange=n,this.magicBox=s,this.hasFocus=!1,this.justPressedTab=!1,this.underlay=document.createElement(\"div\"),this.underlay.className=\"magic-box-underlay\",this.highlightContainer=document.createElement(\"span\"),this.highlightContainer.className=\"magic-box-highlight-container\",this.underlay.appendChild(this.highlightContainer),this.ghostTextContainer=document.createElement(\"span\"),this.ghostTextContainer.className=\"magic-box-ghost-text\",this.underlay.appendChild(this.ghostTextContainer),this.input=e.$$(t).find(\"input\"),this.input?t.insertBefore(this.underlay,this.input):(this.input=document.createElement(\"input\"),t.appendChild(this.underlay),t.appendChild(this.input)),this.input.spellcheck=!1,this.input.setAttribute(\"form\",\"coveo-dummy-form\"),this.input.setAttribute(\"autocomplete\",\"off\"),this.setupHandler()}return t.prototype.updateInput=function(){this.input.value!=this.result.input&&(this.input.value=this.result.input,this.hasFocus&&this.setCursor(this.getValue().length))},t.prototype.updateHighlight=function(){e.$$(this.highlightContainer).empty(),this.highlightContainer.appendChild(this.result.toHtmlElement())},t.prototype.updateWordCompletion=function(){e.$$(this.ghostTextContainer).empty(),null!=this.wordCompletion&&this.ghostTextContainer.appendChild(document.createTextNode(this.wordCompletion.substr(this.result.input.length)))},t.prototype.updateScroll=function(t){var n=this;void 0===t&&(t=!0);var s=function(){n.underlay.clientWidth0&&this.element.contains(s[0])&&this.addSelectedClass(s[0])},t.prototype.handleMouseOut=function(t){var n=e.$$(t.target),s=n.parents(this.options.selectableClass);if(t.relatedTarget){var i=e.$$(t.relatedTarget).parents(this.options.selectableClass);n.hasClass(this.options.selectedClass)&&!e.$$(t.relatedTarget).hasClass(this.options.selectableClass)?n.removeClass(this.options.selectedClass):0==i.length&&s.length>0&&e.$$(s[0]).removeClass(this.options.selectedClass)}else n.hasClass(this.options.selectedClass)?n.removeClass(this.options.selectedClass):s.length>0&&e.$$(s[0]).removeClass(this.options.selectedClass)},t.prototype.moveDown=function(){var t=this.element.getElementsByClassName(this.options.selectedClass).item(0),n=this.element.getElementsByClassName(this.options.selectableClass),s=-1;if(null!=t){e.$$(t).removeClass(this.options.selectedClass);for(var i=0;i0?(e.$$(this.element).addClass(\"magic-box-hasSuggestion\"),this.hasSuggestions=!0):(e.$$(this.element).removeClass(\"magic-box-hasSuggestion\"),this.hasSuggestions=!1)},t.prototype.returnMoved=function(t){if(null!=t){if(t.suggestion)return t.suggestion;if(t[\"no-text-suggestion\"])return null;if(t instanceof HTMLElement)return{text:e.$$(t).text()}}return null},t.prototype.addSelectedClass=function(t){for(var n=this.element.getElementsByClassName(this.options.selectedClass),s=0;s'+_.escape(e)+\"\"};t.highlightText=function(t,e,s,i,o){if(void 0===s&&(s=!1),void 0===i&&(i=\"magic-box-hightlight\"),void 0===o&&(o=\"\"),0==e.length)return t;var r=e.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g,\"\\\\$&\"),u=new RegExp(\"(\"+r+\")|(.*?(?=\"+r+\")|.+)\",s?\"gi\":\"g\");return t.replace(u,function(t,e,s){return n(null!=e?i:o,t)})};var s=function(){function t(t){this.el=t}return t.prototype.text=function(t){if(!t)return this.el.innerText||this.el.textContent;void 0!=this.el.innerText?this.el.innerText=t:void 0!=this.el.textContent&&(this.el.textContent=t)},t.prototype.nodeListToArray=function(t){for(var e=t.length,n=new Array(e);e--;)n[e]=t.item(e);return n},t.prototype.empty=function(){for(;this.el.firstChild;)this.el.removeChild(this.el.firstChild)},t.prototype.show=function(){this.el.style.display=\"visible\"},t.prototype.hide=function(){this.el.style.display=\"none\"},t.prototype.toggle=function(t){void 0===t?\"visible\"==this.el.style.display?this.hide():this.show():t?this.show():this.hide()},t.prototype.find=function(t){return this.el.querySelector(t)},t.prototype.is=function(t){return this.el.tagName.toLowerCase()==t.toLowerCase()||!(\".\"!=t[0]||!this.hasClass(t.substr(1)))||\"#\"==t[0]&&this.el.getAttribute(\"id\")==t.substr(1)},t.prototype.closest=function(t){for(var n=this.el,s=!1;!s&&(e.$$(n).hasClass(t)&&(s=!0),\"body\"!=n.tagName.toLowerCase())&&null!=n.parentElement;)s||(n=n.parentElement);if(s)return n},t.prototype.parent=function(t){if(void 0!=this.el.parentElement)return this.traverseAncestorForClass(this.el.parentElement,t)},t.prototype.parents=function(e){for(var n=[],s=this.parent(e);s;)n.push(s),s=new t(s).parent(e);return n},t.prototype.findAll=function(t){return this.nodeListToArray(this.el.querySelectorAll(t))},t.prototype.findClass=function(t){return\"getElementsByClassName\"in this.el?this.nodeListToArray(this.el.getElementsByClassName(t)):this.nodeListToArray(this.el.querySelectorAll(\".\"+t))},t.prototype.findId=function(t){return document.getElementById(t)},t.prototype.addClass=function(t){this.hasClass(t)||(this.el.className?this.el.className+=\" \"+t:this.el.className=t)},t.prototype.removeClass=function(t){this.el.className=this.el.className.replace(new RegExp(\"(^|\\\\s)\"+t+\"(\\\\s|\\\\b)\",\"g\"),\"$1\")},t.prototype.toggleClass=function(t,e){e?this.addClass(t):this.removeClass(t)},t.prototype.getClass=function(){return this.el.className.match(t.CLASS_NAME_REGEX)||[]},t.prototype.hasClass=function(t){return _.contains(this.getClass(),t)},t.prototype.detach=function(){this.el.parentElement&&this.el.parentElement.removeChild(this.el)},t.prototype.on=function(e,n){var s=this;if(_.isArray(e))_.each(e,function(t){s.on(t,n)});else{var i=this.getJQuery();if(i)i(this.el).on(e,n);else if(this.el.addEventListener){var o=function(t){n(t,t.detail)};t.handlers.push({eventHandle:n,fn:o}),this.el.addEventListener(e,o,!1)}else this.el.on&&this.el.on(\"on\"+e,n)}},t.prototype.one=function(t,e){var n=this;if(_.isArray(t))_.each(t,function(t){n.one(t,e)});else{var s=function(i){return n.off(t,s),e(i)};this.on(t,s)}},t.prototype.off=function(e,n){var s=this;if(_.isArray(e))_.each(e,function(t){s.off(t,n)});else{var i=this.getJQuery();if(i)i(this.el).off(e,n);else if(this.el.removeEventListener){var o=0,r=_.find(t.handlers,function(t,e){if(t.eventHandle==n)return o=e,!0});r&&(this.el.removeEventListener(e,r.fn,!1),t.handlers.splice(o,1))}else this.el.off&&this.el.off(\"on\"+e,n)}},t.prototype.trigger=function(t,e){var n=this.getJQuery();if(n)n(this.el).trigger(t,e);else if(void 0!==CustomEvent){var s=new CustomEvent(t,{detail:e,bubbles:!0});this.el.dispatchEvent(s)}},t.prototype.isEmpty=function(){return t.ONLY_WHITE_SPACE_REGEX.test(this.el.innerHTML)},t.prototype.isDescendant=function(t){for(var e=this.el.parentNode;null!=e;){if(e==t)return!0;e=e.parentNode}return!1},t.prototype.traverseAncestorForClass=function(t,n){void 0===t&&(t=this.el),0==n.indexOf(\".\")&&(n=n.substr(1));for(var s=!1;!s&&(e.$$(t).hasClass(n)&&(s=!0),\"body\"!=t.tagName.toLowerCase())&&null!=t.parentElement;)s||(t=t.parentElement);if(s)return t},t.prototype.getJQuery=function(){return void 0!=window.jQuery&&window.jQuery},t.CLASS_NAME_REGEX=/-?[_a-zA-Z]+[_a-zA-Z0-9-]*/g,t.ONLY_WHITE_SPACE_REGEX=/^\\s*$/,t.handlers=[],t}();t.Dom=s})((e=t.MagicBox||(t.MagicBox={})).Utils||(e.Utils={}))}(Coveo||(Coveo={})),function(t){var e;(e=t.MagicBox||(t.MagicBox={})).$$=function(t){return window.Coveo&&window.Coveo.$$?window.Coveo.$$(t):new e.Utils.Dom(t)}}(Coveo||(Coveo={})),function(t){var e;(function(t){function n(t,e,n,s){_.each(s.expressions,function(e){_.contains(t,e)||t.push(e)}),_.each(s.basicExpressions,function(t){_.contains(e,t)||e.push(t)}),_.each(s.grammars,function(t,e){if(e in n){if(!_.isArray(n[e])||!_.isArray(t))throw _.each(t,function(t){n[e].push(t)}),\"Can not merge \"+e+\"(\"+new String(t)+\" => \"+new String(n[e])+\")\";_.each(t,function(t){n[e].push(t)})}else n[e]=t})}function s(){for(var t=[],e=0;eu.value.length?new e.EndOfInputResult(u):u}}}}(Coveo||(Coveo={})),function(t){var e;((e=t.MagicBox||(t.MagicBox={})).Grammars||(e.Grammars={})).SubExpression={basicExpressions:[\"SubExpression\"],grammars:{SubExpression:\"([Expressions])\"}}}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),(n=e.Grammars||(e.Grammars={})).Date={grammars:{Date:\"[DateYear]/[DateMonth]/[DateDay]\",DateYear:/([0-9]{4})/,DateMonth:/(1[0-2]|0?[1-9])/,DateDay:/([1-2][0-9]|3[0-1]|0?[1-9])/,DateRange:\"[Date][Spaces?]..[Spaces?][Date]\",DateRelative:[\"DateRelativeNegative\",\"DateRelativeTerm\"],DateRelativeTerm:/now|today|yesterday/,DateRelativeNegative:\"[DateRelativeTerm][DateRelativeNegativeRef]\",DateRelativeNegativeRef:/([\\-\\+][0-9]+(s|m|h|d|mo|y))/},include:[n.Basic]}}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),(n=e.Grammars||(e.Grammars={})).Field={basicExpressions:[\"FieldSimpleQuery\",\"FieldQuery\",\"Field\"],grammars:{FieldQuery:\"[Field][OptionalSpaces][FieldQueryOperation]\",FieldQueryOperation:[\"FieldQueryValue\",\"FieldQueryNumeric\"],FieldQueryValue:\"[FieldOperator][OptionalSpaces][FieldValue]\",FieldQueryNumeric:\"[FieldOperatorNumeric][OptionalSpaces][FieldValueNumeric]\",FieldSimpleQuery:\"[FieldName]:[OptionalSpaces][FieldValue]\",Field:\"@[FieldName]\",FieldName:/[a-zA-Z][a-zA-Z0-9\\.\\_]*/,FieldOperator:/==|=|<>/,FieldOperatorNumeric:/<=|>=|<|>/,FieldValue:[\"DateRange\",\"NumberRange\",\"DateRelative\",\"Date\",\"Number\",\"FieldValueList\",\"FieldValueString\"],FieldValueNumeric:[\"DateRelative\",\"Date\",\"Number\"],FieldValueString:[\"DoubleQuoted\",\"FieldValueNotQuoted\"],FieldValueList:\"([FieldValueString][FieldValueStringList*])\",FieldValueStringList:\"[FieldValueSeparator][FieldValueString]\",FieldValueSeparator:/ *, */,FieldValueNotQuoted:/[^ \\(\\),]+/,NumberRange:\"[Number][Spaces?]..[Spaces?][Number]\"},include:[n.Date,n.Basic]}}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),(n=e.Grammars||(e.Grammars={})).QueryExtension={basicExpressions:[\"QueryExtension\"],grammars:{QueryExtension:\"$[QueryExtensionName]([QueryExtensionArguments])\",QueryExtensionName:/\\w+/,QueryExtensionArguments:\"[QueryExtensionArgumentList*][QueryExtensionArgument]\",QueryExtensionArgumentList:\"[QueryExtensionArgument][Spaces?],[Spaces?]\",QueryExtensionArgument:\"[QueryExtensionArgumentName]:[Spaces?][QueryExtensionArgumentValue]\",QueryExtensionArgumentName:/\\w+/,QueryExtensionArgumentValue:[\"SingleQuoted\",\"Expressions\"]},include:[n.Basic]}}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),(n=e.Grammars||(e.Grammars={})).NestedQuery={basicExpressions:[\"NestedQuery\"],grammars:{NestedQuery:\"[[NestedField][OptionalSpaces][Expressions]]\",NestedField:\"[[Field]]\",FieldValue:[\"NestedQuery\"]},include:[n.Field]}}(Coveo||(Coveo={})),function(t){var e,n;e=t.MagicBox||(t.MagicBox={}),(n=e.Grammars||(e.Grammars={})).Complete={include:[n.NestedQuery,n.QueryExtension,n.SubExpression,n.Field,n.Basic]}}(Coveo||(Coveo={})),function(t){!function(t){var e=function(){function e(e,n,s){var i=this;void 0===s&&(s={}),this.element=e,this.grammar=n,this.options=s,this.lastSuggestions=[],_.isUndefined(this.options.inline)&&(this.options.inline=!1),t.$$(e).addClass(\"magic-box\"),this.options.inline&&t.$$(e).addClass(\"magic-box-inline\"),this.result=this.grammar.parse(\"\"),this.displayedResult=this.result.clean(),this.clearDom=document.createElement(\"div\"),this.clearDom.className=\"magic-box-clear\";var o=document.createElement(\"div\");o.className=\"magic-box-icon\",this.clearDom.appendChild(o);var r=t.$$(e).find(\".magic-box-input\");r?e.insertBefore(this.clearDom,r):((r=document.createElement(\"div\")).className=\"magic-box-input\",e.appendChild(this.clearDom),e.appendChild(r)),this.inputManager=new t.InputManager(r,function(t,e){e?(i.setText(t),i.onselect&&i.onselect(i.getFirstSuggestionText())):(i.setText(t),i.showSuggestion(),i.onchange&&i.onchange())},this),this.inputManager.ontabpress=function(){i.ontabpress&&i.ontabpress()};var u=this.inputManager.getValue();u&&(this.displayedResult.input=u),this.inputManager.setResult(this.displayedResult);var a=document.createElement(\"div\");a.className=\"magic-box-suggestions\",this.element.appendChild(a),this.suggestionsManager=new t.SuggestionsManager(a,{selectableClass:this.options.selectableSuggestionClass,selectedClass:this.options.selectedSuggestionClass,timeout:this.options.suggestionTimeout}),this.setupHandler()}return e.prototype.getResult=function(){return this.result},e.prototype.getDisplayedResult=function(){return this.displayedResult},e.prototype.setText=function(e){t.$$(this.element).toggleClass(\"magic-box-notEmpty\",e.length>0),this.result=this.grammar.parse(e),this.displayedResult=this.result.clean(),this.inputManager.setResult(this.displayedResult)},e.prototype.setCursor=function(t){this.inputManager.setCursor(t)},e.prototype.getCursor=function(){return this.inputManager.getCursor()},e.prototype.resultAtCursor=function(t){return this.displayedResult.resultAt(this.getCursor(),t)},e.prototype.setupHandler=function(){var e=this;this.inputManager.onblur=function(){t.$$(e.element).removeClass(\"magic-box-hasFocus\"),e.onblur&&e.onblur(),e.options.inline||e.clearSuggestion()},this.inputManager.onfocus=function(){t.$$(e.element).addClass(\"magic-box-hasFocus\"),e.showSuggestion(),e.onfocus&&e.onfocus()},this.inputManager.onkeydown=function(t){return 38!=t&&40!=t&&(13==t?(null==e.suggestionsManager.select()&&e.onsubmit&&e.onsubmit(),!1):(27==t&&(e.clearSuggestion(),e.blur()),!0))},this.inputManager.onchangecursor=function(){e.showSuggestion()},this.inputManager.onkeyup=function(t){if(38==t)e.onmove&&e.onmove(),e.focusOnSuggestion(e.suggestionsManager.moveUp()),e.onchange&&e.onchange();else{if(40!=t)return!0;e.onmove&&e.onmove(),e.focusOnSuggestion(e.suggestionsManager.moveDown()),e.onchange&&e.onchange()}return!1},this.clearDom.onclick=function(){e.clear()}},e.prototype.showSuggestion=function(){var t=this;this.suggestionsManager.mergeSuggestions(null!=this.getSuggestions?this.getSuggestions():[],function(e){t.updateSuggestion(e)})},e.prototype.updateSuggestion=function(t){var e=this;this.lastSuggestions=t;var n=this.getFirstSuggestionText();this.inputManager.setWordCompletion(n&&n.text),this.onsuggestions&&this.onsuggestions(t),_.each(t,function(t){null==t.onSelect&&null!=t.text&&(t.onSelect=function(){e.setText(t.text),e.onselect&&e.onselect(t)})})},e.prototype.focus=function(){t.$$(this.element).addClass(\"magic-box-hasFocus\"),this.inputManager.focus()},e.prototype.blur=function(){this.inputManager.blur()},e.prototype.clearSuggestion=function(){var t=this;this.suggestionsManager.mergeSuggestions([],function(e){t.updateSuggestion(e)}),this.inputManager.setWordCompletion(null)},e.prototype.focusOnSuggestion=function(t){null==t||null==t.text?(t=this.getFirstSuggestionText(),this.inputManager.setResult(this.displayedResult,t&&t.text)):this.inputManager.setResult(this.grammar.parse(t.text).clean(),t.text)},e.prototype.getFirstSuggestionText=function(){return _.find(this.lastSuggestions,function(t){return null!=t.text})},e.prototype.getText=function(){return this.inputManager.getValue()},e.prototype.getWordCompletion=function(){return this.inputManager.getWordCompletion()},e.prototype.clear=function(){this.setText(\"\"),this.showSuggestion(),this.focus(),this.onclear&&this.onclear()},e.prototype.hasSuggestions=function(){return this.suggestionsManager.hasSuggestions},e}();t.Instance=e,t.create=function(t,n,s){return new e(t,n,s)},t.requestAnimationFrame=function(t){return\"requestAnimationFrame\"in window?window.requestAnimationFrame(t):setTimeout(t)}}(t.MagicBox||(t.MagicBox={}))}(Coveo||(Coveo={}));\n\n/*** EXPORTS FROM exports-loader ***/\nmodule.exports = Coveo.MagicBox;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/exports-loader?Coveo.MagicBox!./node_modules/coveomagicbox/bin/MagicBox.min.js\n// module id = 317\n// module chunks = 9 11 43 75","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","export class SuggestionsCache {\n private cache: { [hash: string]: Promise } = {};\n\n getSuggestions(hash: string, suggestionsFetcher: () => Promise): Promise {\n if (!hash || hash.length === 0) {\n return null;\n }\n\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","///\nimport { Omnibox, IOmniboxSuggestion, MagicBox } from './Omnibox';\nimport { OmniboxEvents, IPopulateOmniboxSuggestionsEventArgs } from '../../events/OmniboxEvents';\nimport { IFieldDescription } from '../../rest/FieldDescription';\nimport { IEndpointError } from '../../rest/EndpointError';\nimport * as _ from 'underscore';\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: Coveo.MagicBox.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: Coveo.MagicBox.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: Coveo.MagicBox.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: MagicBox.Utils.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 { OmniboxEvents, IPopulateOmniboxSuggestionsEventArgs } from '../../events/OmniboxEvents';\nimport { Omnibox, IOmniboxSuggestion, MagicBox } from './Omnibox';\nimport { IExtension } from '../../rest/Extension';\nimport * as _ from 'underscore';\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: Coveo.MagicBox.Instance): IQueryExtensionAddonHash {\n var queryExtension: Coveo.MagicBox.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: MagicBox.Utils.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, IQuerySuggestResponse } from '../../rest/QuerySuggest';\nimport { ComponentOptionsModel } from '../../models/ComponentOptionsModel';\nimport { OmniboxEvents, IPopulateOmniboxSuggestionsEventArgs } from '../../events/OmniboxEvents';\nimport { StringUtils } from '../../utils/StringUtils';\nimport { SuggestionsCache } from '../../misc/SuggestionsCache';\nimport * as _ from 'underscore';\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 getQuerySuggest(text: string): Promise {\n let payload = { q: text };\n let locale = String['locale'];\n let searchHub = this.omnibox.getBindings().componentOptionsModel.get(ComponentOptionsModel.attributesEnum.searchHub);\n let pipeline = this.omnibox.getBindings().searchInterface.options.pipeline;\n let enableWordCompletion = this.omnibox.options.enableSearchAsYouType;\n let context = this.omnibox.getBindings().searchInterface.getQueryContext();\n\n if (locale) {\n payload.locale = locale;\n }\n\n if (searchHub) {\n payload.searchHub = searchHub;\n }\n\n if (pipeline) {\n payload.pipeline = pipeline;\n }\n\n if (context) {\n payload.context = context;\n }\n\n payload.enableWordCompletion = enableWordCompletion;\n\n return this.omnibox.queryController\n .getEndpoint()\n .getQuerySuggest(payload)\n .then((result: IQuerySuggestResponse) => {\n var completions = result.completions;\n var results: IOmniboxSuggestion[] = _.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 return results;\n });\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","///\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","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_Omnibox.scss\n// module id = 347\n// module chunks = 9 11 75","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_Searchbox.scss\n// module id = 428\n// module chunks = 9 75","///\n///\n///\n///\n\nimport { ComponentOptionsModel, COMPONENT_OPTIONS_ATTRIBUTES } from '../../models/ComponentOptionsModel';\nexport const MagicBox: any = require('exports-loader?Coveo.MagicBox!magic-box');\nimport { IQueryboxOptions } from '../Querybox/Querybox';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions, IFieldOption } from '../Base/ComponentOptions';\nimport { QueryEvents, IBuildingQueryEventArgs } from '../../events/QueryEvents';\nimport { StandaloneSearchInterfaceEvents } from '../../events/StandaloneSearchInterfaceEvents';\nimport { MODEL_EVENTS, IAttributeChangedEventArg } from '../../models/Model';\nimport { QUERY_STATE_ATTRIBUTES } from '../../models/QueryStateModel';\nimport { IAnalyticsNoMeta, analyticsActionCauseList, IAnalyticsOmniboxSuggestionMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { OmniboxEvents, IOmniboxPreprocessResultForQueryEventArgs, IPopulateOmniboxSuggestionsEventArgs } from '../../events/OmniboxEvents';\nimport { $$ } from '../../utils/Dom';\nimport { Assert } from '../../misc/Assert';\nimport { QueryStateModel } from '../../models/QueryStateModel';\nimport { Initialization } from '../Base/Initialization';\nimport { Querybox } from '../Querybox/Querybox';\nimport { FieldAddon } from './FieldAddon';\nimport { QueryExtensionAddon } from './QueryExtensionAddon';\nimport { QuerySuggestAddon, IQuerySuggestAddon, VoidQuerySuggestAddon } from './QuerySuggestAddon';\nimport { OldOmniboxAddon } from './OldOmniboxAddon';\nimport { QueryboxQueryParameters } from '../Querybox/QueryboxQueryParameters';\nimport { IAnalyticsActionCause } from '../Analytics/AnalyticsActionListMeta';\nimport { IDuringQueryEventArgs } from '../../events/QueryEvents';\nimport { PendingSearchAsYouTypeSearchEvent } from '../Analytics/PendingSearchAsYouTypeSearchEvent';\nimport { Utils } from '../../utils/Utils';\nimport { StandaloneSearchInterface } from '../SearchInterface/SearchInterface';\nimport * as _ from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\nimport 'styling/_Omnibox';\nimport { logSearchBoxSubmitEvent } from '../Analytics/SharedAnalyticsCalls';\nimport { Dom } from '../../Core';\n\nexport interface IOmniboxSuggestion extends Coveo.MagicBox.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 grammar?: (\n grammar: { start: string; expressions: { [id: string]: Coveo.MagicBox.ExpressionDef } }\n ) => { start: string; expressions: { [id: string]: Coveo.MagicBox.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 MagicBox: MagicBox,\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\n public magicBox: Coveo.MagicBox.Instance;\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\n const originalValueForQuerySyntax = this.options.enableQuerySyntax;\n this.options = _.extend({}, this.options, this.componentOptionsModel.get(ComponentOptionsModel.attributesEnum.searchBox));\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: Coveo.MagicBox.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 = MagicBox.Grammars.Expressions(MagicBox.Grammars.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 MagicBox.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 = MagicBox.create(this.element, new MagicBox.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 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: Coveo.MagicBox.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: Coveo.MagicBox.Result) => (value.value = '\"' + value.value.replace(/\"|\\u00A0/g, ' ') + '\"'));\n if (this.options.fieldAlias) {\n const fieldNames = preprocessResultForQueryArgs.result.findAll(\n (result: Coveo.MagicBox.Result) => result.expression.id == 'FieldName' && result.isSuccess()\n );\n _.each(fieldNames, (result: Coveo.MagicBox.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 }\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 text = this.getQuery(searchAsYouType);\n if (this.shouldExecuteQuery(searchAsYouType)) {\n this.lastQuery = text;\n analyticsEvent();\n this.queryController.executeQuery({\n searchAsYouType: searchAsYouType,\n logInActionsHistory: true\n });\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 return this.magicBox.getWordCompletion() || this.getFirstSuggestion() || 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 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 = _.extend({}, Omnibox.options, Querybox.options);\nInitialization.registerAutoCreateComponent(Omnibox);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Omnibox/Omnibox.ts","import { ComponentOptionsModel } from '../../models/ComponentOptionsModel';\nexport const MagicBox: any = require('exports-loader?Coveo.MagicBox!magic-box');\nimport { Initialization } from '../Base/Initialization';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { QueryEvents, IBuildingQueryEventArgs } from '../../events/QueryEvents';\nimport { MODEL_EVENTS, IAttributeChangedEventArg } from '../../models/Model';\nimport { QUERY_STATE_ATTRIBUTES, QueryStateModel } from '../../models/QueryStateModel';\nimport { StandaloneSearchInterfaceEvents } from '../../events/StandaloneSearchInterfaceEvents';\nimport { IAnalyticsNoMeta, analyticsActionCauseList } from '../Analytics/AnalyticsActionListMeta';\nimport { $$ } from '../../utils/Dom';\nimport { Assert } from '../../misc/Assert';\nimport { QueryboxQueryParameters } from './QueryboxQueryParameters';\nimport * as _ from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\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 MagicBox: MagicBox,\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\n public magicBox: Coveo.MagicBox.Instance;\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 this.options = _.extend({}, this.options, this.componentOptionsModel.get(ComponentOptionsModel.attributesEnum.searchBox));\n\n this.magicBox = MagicBox.create(\n element,\n new MagicBox.Grammar('Query', {\n Query: '[Term*][Spaces?]',\n Term: '[Spaces?][Word]',\n Spaces: / +/,\n Word: /[^ ]+/\n }),\n {\n inline: true\n }\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() {\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"],"sourceRoot":""}