{"version":3,"sources":["DidYouMean.min__d957946aa95219e5e0e2.js","./src/ui/DidYouMean/DidYouMean.ts"],"names":["webpackJsonpCoveo__temporary","246","module","exports","__webpack_require__","__extends","this","extendStatics","Object","setPrototypeOf","__proto__","Array","d","b","p","hasOwnProperty","__","constructor","prototype","create","defineProperty","value","element","options","bindings","DidYouMean","ID","ComponentOptions","initComponentOptions","Assert","exists","hideNext","ignoreNextNoResults","correctedTerm","bind","onRootElement","QueryEvents","buildingQuery","handlePrepareQueryBuilder","querySuccess","handleProcessNewQueryResults","noResults","handleNoResults","newQuery","handleNewQuery","$$","hide","_this","doQueryWithCorrectedTerm","queryStateModel","set","QueryStateModel","attributesEnum","q","queryController","deferExecuteQuery","beforeExecuteQuery","usageAnalytics","logSearchEvent","analyticsActionCauseList","didyoumeanClick","empty","data","queryBuilder","enableDidYouMean","logger","warn","Utils","isNonEmptyArray","results","queryCorrections","searchAsYouType","enableAutoCorrection","originalQuery","get","correctedQuery","correctedSentence","buildCorrectedSentence","searchInterface","historyManager","replaceState","getAttributes","retryTheQuery","noResultsFor","className","el","innerHTML","l","StringUtils","htmlEncode","appendChild","automaticCorrect","show","didyoumeanAutomatic","trace","correctedWordEl","type","didYouMean","outerHTML","appendedCorrectedWordEl","find","tagName","on","correction","toReturn","currentOffset","_","each","wordCorrections","wordCorrection","push","slice","offset","length","join","doExport","exportGlobally","buildBooleanOption","defaultValue","Component","Initialization","registerAutoCreateComponent","604"],"mappings":"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","file":"DidYouMean.min__d957946aa95219e5e0e2.js","sourcesContent":["webpackJsonpCoveo__temporary([74],{\n\n/***/ 246:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__webpack_require__(604);\nvar _ = __webpack_require__(0);\nvar GlobalExports_1 = __webpack_require__(3);\nvar QueryEvents_1 = __webpack_require__(11);\nvar Assert_1 = __webpack_require__(5);\nvar QueryStateModel_1 = __webpack_require__(13);\nvar Strings_1 = __webpack_require__(6);\nvar Dom_1 = __webpack_require__(1);\nvar StringUtils_1 = __webpack_require__(22);\nvar Utils_1 = __webpack_require__(4);\nvar AnalyticsActionListMeta_1 = __webpack_require__(10);\nvar Component_1 = __webpack_require__(7);\nvar ComponentOptions_1 = __webpack_require__(8);\nvar Initialization_1 = __webpack_require__(2);\n/**\n * The DidYouMean component is responsible for displaying query corrections. If this component is in the page and the\n * query returns no result but finds a possible query correction, the component either suggests the correction or\n * automatically triggers a new query with the suggested term.\n */\nvar DidYouMean = /** @class */ (function (_super) {\n __extends(DidYouMean, _super);\n /**\n * Creates a new DidYouMean component.\n * @param element The HTMLElement on which to instantiate the component.\n * @param options The options for the DidYouMean 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 function DidYouMean(element, options, bindings) {\n var _this = _super.call(this, element, DidYouMean.ID, bindings) || this;\n _this.element = element;\n _this.options = options;\n _this.bindings = bindings;\n _this.options = ComponentOptions_1.ComponentOptions.initComponentOptions(element, DidYouMean, options);\n Assert_1.Assert.exists(element);\n Assert_1.Assert.exists(_this.options);\n _this.hideNext = true;\n _this.ignoreNextNoResults = false;\n _this.correctedTerm = null;\n _this.bind.onRootElement(QueryEvents_1.QueryEvents.buildingQuery, _this.handlePrepareQueryBuilder);\n _this.bind.onRootElement(QueryEvents_1.QueryEvents.querySuccess, _this.handleProcessNewQueryResults);\n _this.bind.onRootElement(QueryEvents_1.QueryEvents.noResults, _this.handleNoResults);\n _this.bind.onRootElement(QueryEvents_1.QueryEvents.newQuery, _this.handleNewQuery);\n Dom_1.$$(_this.element).hide();\n return _this;\n }\n /**\n * Executes a query with the corrected term.\n * Throws an exception if the corrected term has not been initialized.\n * If successful, logs a `didyoumeanClick` event in the usage analytics.\n */\n DidYouMean.prototype.doQueryWithCorrectedTerm = function () {\n var _this = this;\n Assert_1.Assert.exists(this.correctedTerm);\n this.queryStateModel.set(QueryStateModel_1.QueryStateModel.attributesEnum.q, this.correctedTerm);\n this.queryController.deferExecuteQuery({\n beforeExecuteQuery: function () { return _this.usageAnalytics.logSearchEvent(AnalyticsActionListMeta_1.analyticsActionCauseList.didyoumeanClick, {}); }\n });\n };\n DidYouMean.prototype.handleNewQuery = function () {\n if (this.hideNext) {\n Dom_1.$$(this.element).empty();\n Dom_1.$$(this.element).hide();\n this.correctedTerm = null;\n }\n else {\n this.hideNext = true;\n }\n };\n DidYouMean.prototype.handlePrepareQueryBuilder = function (data) {\n Assert_1.Assert.exists(data);\n data.queryBuilder.enableDidYouMean = true;\n };\n DidYouMean.prototype.handleNoResults = function (data) {\n if (this.ignoreNextNoResults) {\n this.logger.warn('Query is being automatically corrected twice while returning no results.');\n return;\n }\n // We do not auto-correct on search-as-you-type queries\n if (Utils_1.Utils.isNonEmptyArray(data.results.queryCorrections) && !data.searchAsYouType && this.options.enableAutoCorrection) {\n this.ignoreNextNoResults = true;\n var originalQuery = this.queryStateModel.get(QueryStateModel_1.QueryStateModel.attributesEnum.q);\n this.correctedTerm = data.results.queryCorrections[0].correctedQuery;\n var correctedSentence = this.buildCorrectedSentence(data.results.queryCorrections[0]);\n this.queryStateModel.set(QueryStateModel_1.QueryStateModel.attributesEnum.q, data.results.queryCorrections[0].correctedQuery);\n this.searchInterface.historyManager.replaceState(this.queryStateModel.getAttributes());\n data.retryTheQuery = true;\n this.hideNext = false;\n var noResultsFor = Dom_1.$$('div', { className: 'coveo-did-you-mean-no-results-for' }).el;\n noResultsFor.innerHTML = Strings_1.l('noResultFor', '' + StringUtils_1.StringUtils.htmlEncode(originalQuery) + '');\n this.element.appendChild(noResultsFor);\n var automaticCorrect = Dom_1.$$('div', { className: 'coveo-did-you-mean-automatic-correct' }).el;\n automaticCorrect.innerHTML = Strings_1.l('autoCorrectedQueryTo', '' + correctedSentence + '');\n this.element.appendChild(automaticCorrect);\n Dom_1.$$(this.element).show();\n this.usageAnalytics.logSearchEvent(AnalyticsActionListMeta_1.analyticsActionCauseList.didyoumeanAutomatic, {});\n }\n };\n DidYouMean.prototype.handleProcessNewQueryResults = function (data) {\n var _this = this;\n Assert_1.Assert.exists(data);\n Assert_1.Assert.exists(data.results);\n this.ignoreNextNoResults = false;\n var results = data.results;\n this.logger.trace('Received query results from new query', results);\n if (Utils_1.Utils.isNonEmptyArray(results.queryCorrections)) {\n var correctedSentence = this.buildCorrectedSentence(results.queryCorrections[0]);\n this.correctedTerm = results.queryCorrections[0].correctedQuery;\n var correctedWordEl = Dom_1.$$('button', { type: 'button' }, correctedSentence).el;\n var didYouMean = Dom_1.$$('div', { className: 'coveo-did-you-mean-suggestion' }, Strings_1.l('didYouMean', correctedWordEl.outerHTML));\n this.element.appendChild(didYouMean.el);\n var appendedCorrectedWordEl = didYouMean.find(correctedWordEl.tagName);\n Dom_1.$$(appendedCorrectedWordEl).on('click', function () { return _this.doQueryWithCorrectedTerm(); });\n Dom_1.$$(this.element).show();\n }\n };\n DidYouMean.prototype.buildCorrectedSentence = function (correction) {\n var toReturn = [];\n var tagStart = \"\";\n var tagEnd = '';\n var currentOffset = 0;\n _.each(correction.wordCorrections, function (wordCorrection) {\n toReturn.push(StringUtils_1.StringUtils.htmlEncode(correction.correctedQuery.slice(currentOffset, wordCorrection.offset)));\n currentOffset = wordCorrection.offset;\n toReturn.push(tagStart);\n toReturn.push(StringUtils_1.StringUtils.htmlEncode(correction.correctedQuery.slice(currentOffset, wordCorrection.length + currentOffset)));\n toReturn.push(tagEnd);\n currentOffset = wordCorrection.offset + wordCorrection.length;\n });\n toReturn.push(StringUtils_1.StringUtils.htmlEncode(correction.correctedQuery.slice(currentOffset)));\n return toReturn.join('');\n };\n DidYouMean.ID = 'DidYouMean';\n DidYouMean.doExport = function () {\n GlobalExports_1.exportGlobally({\n DidYouMean: DidYouMean\n });\n };\n /**\n * The options for the component\n * @componentOptions\n */\n DidYouMean.options = {\n /**\n * Specifies whether the DidYouMean component automatically triggers a new query when a query returns no result and\n * a possible correction is available.\n *\n * Default value is `true`.\n */\n enableAutoCorrection: ComponentOptions_1.ComponentOptions.buildBooleanOption({ defaultValue: true })\n };\n return DidYouMean;\n}(Component_1.Component));\nexports.DidYouMean = DidYouMean;\nInitialization_1.Initialization.registerAutoCreateComponent(DidYouMean);\n\n\n/***/ }),\n\n/***/ 604:\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ })\n\n});\n\n\n// WEBPACK FOOTER //\n// DidYouMean.min__d957946aa95219e5e0e2.js","import 'styling/_DidYouMean';\nimport * as _ from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\nimport { IBuildingQueryEventArgs, INoResultsEventArgs, IQuerySuccessEventArgs, QueryEvents } from '../../events/QueryEvents';\nimport { Assert } from '../../misc/Assert';\nimport { QueryStateModel } from '../../models/QueryStateModel';\nimport { IQueryCorrection } from '../../rest/QueryCorrection';\nimport { l } from '../../strings/Strings';\nimport { $$ } from '../../utils/Dom';\nimport { StringUtils } from '../../utils/StringUtils';\nimport { Utils } from '../../utils/Utils';\nimport { IAnalyticsNoMeta, analyticsActionCauseList } from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Initialization } from '../Base/Initialization';\n\nexport interface IDidYouMeanOptions {\n enableAutoCorrection?: boolean;\n}\n\n/**\n * The DidYouMean component is responsible for displaying query corrections. If this component is in the page and the\n * query returns no result but finds a possible query correction, the component either suggests the correction or\n * automatically triggers a new query with the suggested term.\n */\nexport class DidYouMean extends Component {\n static ID = 'DidYouMean';\n\n static doExport = () => {\n exportGlobally({\n DidYouMean: DidYouMean\n });\n };\n\n /**\n * The options for the component\n * @componentOptions\n */\n static options: IDidYouMeanOptions = {\n /**\n * Specifies whether the DidYouMean component automatically triggers a new query when a query returns no result and\n * a possible correction is available.\n *\n * Default value is `true`.\n */\n enableAutoCorrection: ComponentOptions.buildBooleanOption({ defaultValue: true })\n };\n\n public correctedTerm: string;\n\n private hideNext: boolean;\n\n private ignoreNextNoResults: boolean;\n\n /**\n * Creates a new DidYouMean component.\n * @param element The HTMLElement on which to instantiate the component.\n * @param options The options for the DidYouMean 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?: IDidYouMeanOptions, public bindings?: IComponentBindings) {\n super(element, DidYouMean.ID, bindings);\n\n this.options = ComponentOptions.initComponentOptions(element, DidYouMean, options);\n Assert.exists(element);\n Assert.exists(this.options);\n\n this.hideNext = true;\n\n this.ignoreNextNoResults = false;\n\n this.correctedTerm = null;\n\n this.bind.onRootElement(QueryEvents.buildingQuery, this.handlePrepareQueryBuilder);\n this.bind.onRootElement(QueryEvents.querySuccess, this.handleProcessNewQueryResults);\n this.bind.onRootElement(QueryEvents.noResults, this.handleNoResults);\n this.bind.onRootElement(QueryEvents.newQuery, this.handleNewQuery);\n $$(this.element).hide();\n }\n\n /**\n * Executes a query with the corrected term.\n * Throws an exception if the corrected term has not been initialized.\n * If successful, logs a `didyoumeanClick` event in the usage analytics.\n */\n public doQueryWithCorrectedTerm() {\n Assert.exists(this.correctedTerm);\n this.queryStateModel.set(QueryStateModel.attributesEnum.q, this.correctedTerm);\n this.queryController.deferExecuteQuery({\n beforeExecuteQuery: () => this.usageAnalytics.logSearchEvent(analyticsActionCauseList.didyoumeanClick, {})\n });\n }\n\n private handleNewQuery() {\n if (this.hideNext) {\n $$(this.element).empty();\n $$(this.element).hide();\n this.correctedTerm = null;\n } else {\n this.hideNext = true;\n }\n }\n\n private handlePrepareQueryBuilder(data: IBuildingQueryEventArgs) {\n Assert.exists(data);\n data.queryBuilder.enableDidYouMean = true;\n }\n\n private handleNoResults(data: INoResultsEventArgs) {\n if (this.ignoreNextNoResults) {\n this.logger.warn('Query is being automatically corrected twice while returning no results.');\n return;\n }\n\n // We do not auto-correct on search-as-you-type queries\n if (Utils.isNonEmptyArray(data.results.queryCorrections) && !data.searchAsYouType && this.options.enableAutoCorrection) {\n this.ignoreNextNoResults = true;\n let originalQuery = this.queryStateModel.get(QueryStateModel.attributesEnum.q);\n this.correctedTerm = data.results.queryCorrections[0].correctedQuery;\n let correctedSentence = this.buildCorrectedSentence(data.results.queryCorrections[0]);\n this.queryStateModel.set(QueryStateModel.attributesEnum.q, data.results.queryCorrections[0].correctedQuery);\n this.searchInterface.historyManager.replaceState(this.queryStateModel.getAttributes());\n data.retryTheQuery = true;\n this.hideNext = false;\n\n let noResultsFor = $$('div', { className: 'coveo-did-you-mean-no-results-for' }).el;\n noResultsFor.innerHTML = l(\n 'noResultFor',\n '' + StringUtils.htmlEncode(originalQuery) + ''\n );\n this.element.appendChild(noResultsFor);\n\n let automaticCorrect = $$('div', { className: 'coveo-did-you-mean-automatic-correct' }).el;\n automaticCorrect.innerHTML = l('autoCorrectedQueryTo', '' + correctedSentence + '');\n this.element.appendChild(automaticCorrect);\n\n $$(this.element).show();\n this.usageAnalytics.logSearchEvent(analyticsActionCauseList.didyoumeanAutomatic, {});\n }\n }\n\n private handleProcessNewQueryResults(data: IQuerySuccessEventArgs) {\n Assert.exists(data);\n Assert.exists(data.results);\n this.ignoreNextNoResults = false;\n\n let results = data.results;\n this.logger.trace('Received query results from new query', results);\n\n if (Utils.isNonEmptyArray(results.queryCorrections)) {\n const correctedSentence = this.buildCorrectedSentence(results.queryCorrections[0]);\n this.correctedTerm = results.queryCorrections[0].correctedQuery;\n\n const correctedWordEl = $$('button', { type: 'button' }, correctedSentence).el;\n const didYouMean = $$('div', { className: 'coveo-did-you-mean-suggestion' }, l('didYouMean', correctedWordEl.outerHTML));\n this.element.appendChild(didYouMean.el);\n\n const appendedCorrectedWordEl = didYouMean.find(correctedWordEl.tagName);\n $$(appendedCorrectedWordEl).on('click', () => this.doQueryWithCorrectedTerm());\n\n $$(this.element).show();\n }\n }\n\n private buildCorrectedSentence(correction: IQueryCorrection) {\n let toReturn = [];\n let tagStart = \"\";\n let tagEnd = '';\n let currentOffset = 0;\n _.each(correction.wordCorrections, wordCorrection => {\n toReturn.push(StringUtils.htmlEncode(correction.correctedQuery.slice(currentOffset, wordCorrection.offset)));\n currentOffset = wordCorrection.offset;\n toReturn.push(tagStart);\n toReturn.push(StringUtils.htmlEncode(correction.correctedQuery.slice(currentOffset, wordCorrection.length + currentOffset)));\n toReturn.push(tagEnd);\n currentOffset = wordCorrection.offset + wordCorrection.length;\n });\n toReturn.push(StringUtils.htmlEncode(correction.correctedQuery.slice(currentOffset)));\n return toReturn.join('');\n }\n}\n\nInitialization.registerAutoCreateComponent(DidYouMean);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DidYouMean/DidYouMean.ts"],"sourceRoot":""}