{"version":3,"sources":["Triggers.min__ff92a1d47dbcec2611e1.js","./src/ui/Triggers/Triggers.ts"],"names":["webpackJsonpCoveo__temporary","288","module","exports","__webpack_require__","isTriggerNotify","trigger","type","isTriggerRedirect","isTriggerQuery","isTriggerExecute","__extends","this","extendStatics","Object","setPrototypeOf","__proto__","Array","d","b","p","hasOwnProperty","__","constructor","prototype","create","defineProperty","value","element","options","bindings","_window","Triggers","ID","window","ComponentOptions","initComponentOptions","Assert","exists","notifications","bind","onRootElement","QueryEvents","querySuccess","handleProcessNewQueryResults","_this","data","results","$$","empty","Utils","isNullOrUndefined","triggers","removeClass","notifyTriggers","redirectTrigger","queryTrigger","executeTrigger","forEach","push","length","processNotifyTriggers","addClass","processRedirectTrigger","processQueryTrigger","processExecuteTrigger","query","usageAnalytics","logCustomEvent","analyticsActionCauseList","triggerNotify","map","content","appendChild","className","el","triggerRedirect","redirectedTo","location","replace","queryStateModel","set","QueryStateModel","attributesEnum","q","queryController","executeQuery","beforeExecuteQuery","triggerQuery","func","name","params","object","index","triggerExecute","executions","functionName","apply","logger","error","doExport","exportGlobally","Component","Initialization","registerAutoCreateComponent","678"],"mappings":"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","file":"Triggers.min__ff92a1d47dbcec2611e1.js","sourcesContent":["webpackJsonpCoveo__temporary([59],{\n\n/***/ 288:\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 });\nvar Component_1 = __webpack_require__(7);\nvar ComponentOptions_1 = __webpack_require__(8);\nvar Assert_1 = __webpack_require__(5);\nvar QueryEvents_1 = __webpack_require__(11);\nvar Dom_1 = __webpack_require__(1);\nvar AnalyticsActionListMeta_1 = __webpack_require__(10);\nvar QueryStateModel_1 = __webpack_require__(13);\nvar Initialization_1 = __webpack_require__(2);\nvar underscore_1 = __webpack_require__(0);\nvar GlobalExports_1 = __webpack_require__(3);\n__webpack_require__(678);\nvar UtilsModules_1 = __webpack_require__(74);\nfunction isTriggerNotify(trigger) {\n return trigger.type === 'notify';\n}\nfunction isTriggerRedirect(trigger) {\n return trigger.type === 'redirect';\n}\nfunction isTriggerQuery(trigger) {\n return trigger.type === 'query';\n}\nfunction isTriggerExecute(trigger) {\n return trigger.type === 'execute';\n}\n/**\n * The Triggers component enables the use of triggers (`notify`, `execute`, `query`, `redirect`) generated by the Coveo\n * Search API (see [Trigger](https://docs.coveo.com/en/1458/)) in the query pipeline (see\n * [Managing the Query Pipeline](https://docs.coveo.com/en/1450/)).\n *\n * Note: adding the Triggers component gives query pipeline administrators the power to influence users' search experience.\n * Bad actors will be able to perform XSS attacks, or redirect users to dangerous sites. Make sure only individuals you trust\n * have query pipeline edit privileges.\n */\nvar Triggers = /** @class */ (function (_super) {\n __extends(Triggers, _super);\n /**\n * Creates a new Triggers component.\n * @param element The HTMLElement on which to instantiate the component.\n * @param options The options for the Triggers 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 * @param _window The window on which to execute the triggers.\n */\n function Triggers(element, options, bindings, _window) {\n var _this = _super.call(this, element, Triggers.ID, bindings) || this;\n _this.element = element;\n _this.options = options;\n _this.bindings = bindings;\n _this._window = _window;\n _this._window = _this._window || window;\n _this.options = ComponentOptions_1.ComponentOptions.initComponentOptions(element, Triggers, options);\n Assert_1.Assert.exists(element);\n Assert_1.Assert.exists(_this.options);\n _this.notifications = [];\n _this.bind.onRootElement(QueryEvents_1.QueryEvents.querySuccess, _this.handleProcessNewQueryResults);\n return _this;\n }\n Triggers.prototype.handleProcessNewQueryResults = function (data) {\n Assert_1.Assert.exists(data);\n Assert_1.Assert.exists(data.results);\n Dom_1.$$(this.element).empty();\n this.notifications = [];\n if (UtilsModules_1.Utils.isNullOrUndefined(data.results.triggers)) {\n Dom_1.$$(this.element).removeClass('coveo-visible');\n return;\n }\n var notifyTriggers = [];\n var redirectTrigger = null;\n var queryTrigger = null;\n var executeTrigger = null;\n data.results.triggers.forEach(function (trigger) {\n if (isTriggerNotify(trigger)) {\n notifyTriggers.push(trigger);\n }\n else if (isTriggerRedirect(trigger)) {\n redirectTrigger = redirectTrigger || trigger;\n }\n else if (isTriggerQuery(trigger)) {\n queryTrigger = queryTrigger || trigger;\n }\n else if (isTriggerExecute(trigger)) {\n executeTrigger = executeTrigger || trigger;\n }\n });\n if (notifyTriggers.length) {\n this.processNotifyTriggers(notifyTriggers);\n Dom_1.$$(this.element).addClass('coveo-visible');\n }\n redirectTrigger && this.processRedirectTrigger(redirectTrigger);\n queryTrigger && this.processQueryTrigger(queryTrigger);\n executeTrigger && this.processExecuteTrigger(executeTrigger, data.query);\n };\n Triggers.prototype.processNotifyTriggers = function (triggers) {\n var _this = this;\n this.usageAnalytics.logCustomEvent(AnalyticsActionListMeta_1.analyticsActionCauseList.triggerNotify, {\n notifications: triggers.map(function (trigger) { return trigger.content; })\n }, this.element);\n triggers.forEach(function (trigger) {\n _this.notifications.push(trigger.content);\n _this.element.appendChild(Dom_1.$$('div', { className: 'coveo-trigger-notify' }, trigger.content).el);\n });\n };\n Triggers.prototype.processRedirectTrigger = function (trigger) {\n this.usageAnalytics.logCustomEvent(AnalyticsActionListMeta_1.analyticsActionCauseList.triggerRedirect, {\n redirectedTo: trigger.content\n }, this.element);\n this._window.location.replace(trigger.content);\n };\n Triggers.prototype.processQueryTrigger = function (trigger) {\n var _this = this;\n this.queryStateModel.set(QueryStateModel_1.QueryStateModel.attributesEnum.q, trigger.content);\n this.queryController.executeQuery({\n beforeExecuteQuery: function () {\n _this.usageAnalytics.logCustomEvent(AnalyticsActionListMeta_1.analyticsActionCauseList.triggerQuery, {\n query: trigger.content\n }, _this.element);\n }\n });\n };\n Triggers.prototype.processExecuteTrigger = function (trigger, query) {\n try {\n var func = this._window['' + trigger.content.name];\n if (typeof func === 'function') {\n var params = underscore_1.object(underscore_1.map(trigger.content.params, function (value, index) {\n return ['param' + (index + 1), value];\n }));\n params['element'] = this.element;\n this.usageAnalytics.logCustomEvent(AnalyticsActionListMeta_1.analyticsActionCauseList.triggerExecute, {\n executions: [{ functionName: trigger.content.name, params: trigger.content.params }]\n }, this.element);\n func.apply(this._window, [params]);\n }\n else {\n this.logger.error(\"A trigger tried to call the function '\" + trigger.content.name + \"', which doesn't exist.\", this, query, trigger);\n }\n }\n catch (error) {\n this.logger.error(\"A trigger called the function '\" + trigger.content.name + \"', which threw an error.\", this, query, trigger);\n }\n };\n Triggers.ID = 'Triggers';\n Triggers.options = {};\n Triggers.doExport = function () {\n GlobalExports_1.exportGlobally({\n Triggers: Triggers\n });\n };\n return Triggers;\n}(Component_1.Component));\nexports.Triggers = Triggers;\nInitialization_1.Initialization.registerAutoCreateComponent(Triggers);\n\n\n/***/ }),\n\n/***/ 678:\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ })\n\n});\n\n\n// WEBPACK FOOTER //\n// Triggers.min__ff92a1d47dbcec2611e1.js","import { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Assert } from '../../misc/Assert';\nimport { QueryEvents, IQuerySuccessEventArgs } from '../../events/QueryEvents';\nimport { ITriggerNotify, ITriggerExecute, ITriggerRedirect, ITriggerQuery, ITrigger } from '../../rest/Trigger';\nimport { $$ } from '../../utils/Dom';\nimport {\n IAnalyticsTriggerNotify,\n analyticsActionCauseList,\n IAnalyticsTriggerRedirect,\n IAnalyticsTriggerQuery,\n IAnalyticsTriggerExecute\n} from '../Analytics/AnalyticsActionListMeta';\nimport { QueryStateModel } from '../../models/QueryStateModel';\nimport { Initialization } from '../Base/Initialization';\nimport { object, map } from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\n\nimport 'styling/_Triggers';\nimport { IQuery } from '../../rest/Query';\nimport { Utils } from '../../UtilsModules';\n\nexport interface ITriggersOptions {}\n\nfunction isTriggerNotify(trigger: ITrigger): trigger is ITriggerNotify {\n return trigger.type === 'notify';\n}\n\nfunction isTriggerRedirect(trigger: ITrigger): trigger is ITriggerRedirect {\n return trigger.type === 'redirect';\n}\n\nfunction isTriggerQuery(trigger: ITrigger): trigger is ITriggerQuery {\n return trigger.type === 'query';\n}\n\nfunction isTriggerExecute(trigger: ITrigger): trigger is ITriggerExecute {\n return trigger.type === 'execute';\n}\n\n/**\n * The Triggers component enables the use of triggers (`notify`, `execute`, `query`, `redirect`) generated by the Coveo\n * Search API (see [Trigger](https://docs.coveo.com/en/1458/)) in the query pipeline (see\n * [Managing the Query Pipeline](https://docs.coveo.com/en/1450/)).\n *\n * Note: adding the Triggers component gives query pipeline administrators the power to influence users' search experience.\n * Bad actors will be able to perform XSS attacks, or redirect users to dangerous sites. Make sure only individuals you trust\n * have query pipeline edit privileges.\n */\nexport class Triggers extends Component {\n static ID = 'Triggers';\n static options: ITriggersOptions = {};\n\n static doExport = () => {\n exportGlobally({\n Triggers: Triggers\n });\n };\n\n /**\n * The list of notifications returned by the Search API for the current query (via `notify` triggers).\n *\n * The Triggers component automatically renders this list visually.\n */\n public notifications: string[];\n\n /**\n * Creates a new Triggers component.\n * @param element The HTMLElement on which to instantiate the component.\n * @param options The options for the Triggers 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 * @param _window The window on which to execute the triggers.\n */\n constructor(\n public element: HTMLElement,\n public options?: ITriggersOptions,\n public bindings?: IComponentBindings,\n public _window?: Window\n ) {\n super(element, Triggers.ID, bindings);\n\n this._window = this._window || window;\n this.options = ComponentOptions.initComponentOptions(element, Triggers, options);\n Assert.exists(element);\n Assert.exists(this.options);\n\n this.notifications = [];\n\n this.bind.onRootElement(QueryEvents.querySuccess, this.handleProcessNewQueryResults);\n }\n\n private handleProcessNewQueryResults(data: IQuerySuccessEventArgs) {\n Assert.exists(data);\n Assert.exists(data.results);\n\n $$(this.element).empty();\n this.notifications = [];\n\n if (Utils.isNullOrUndefined(data.results.triggers)) {\n $$(this.element).removeClass('coveo-visible');\n return;\n }\n\n const notifyTriggers: ITriggerNotify[] = [];\n let redirectTrigger: ITriggerRedirect | null = null;\n let queryTrigger: ITriggerQuery | null = null;\n let executeTrigger: ITriggerExecute | null = null;\n data.results.triggers.forEach(trigger => {\n if (isTriggerNotify(trigger)) {\n notifyTriggers.push(trigger);\n } else if (isTriggerRedirect(trigger)) {\n redirectTrigger = redirectTrigger || trigger;\n } else if (isTriggerQuery(trigger)) {\n queryTrigger = queryTrigger || trigger;\n } else if (isTriggerExecute(trigger)) {\n executeTrigger = executeTrigger || trigger;\n }\n });\n\n if (notifyTriggers.length) {\n this.processNotifyTriggers(notifyTriggers);\n $$(this.element).addClass('coveo-visible');\n }\n redirectTrigger && this.processRedirectTrigger(redirectTrigger);\n queryTrigger && this.processQueryTrigger(queryTrigger);\n executeTrigger && this.processExecuteTrigger(executeTrigger, data.query);\n }\n\n private processNotifyTriggers(triggers: ITriggerNotify[]) {\n this.usageAnalytics.logCustomEvent(\n analyticsActionCauseList.triggerNotify,\n {\n notifications: triggers.map(trigger => trigger.content)\n },\n this.element\n );\n\n triggers.forEach(trigger => {\n this.notifications.push(trigger.content);\n this.element.appendChild($$('div', { className: 'coveo-trigger-notify' }, trigger.content).el);\n });\n }\n\n private processRedirectTrigger(trigger: ITriggerRedirect) {\n this.usageAnalytics.logCustomEvent(\n analyticsActionCauseList.triggerRedirect,\n {\n redirectedTo: trigger.content\n },\n this.element\n );\n\n this._window.location.replace(trigger.content);\n }\n\n private processQueryTrigger(trigger: ITriggerQuery) {\n this.queryStateModel.set(QueryStateModel.attributesEnum.q, trigger.content);\n this.queryController.executeQuery({\n beforeExecuteQuery: () => {\n this.usageAnalytics.logCustomEvent(\n analyticsActionCauseList.triggerQuery,\n {\n query: trigger.content\n },\n this.element\n );\n }\n });\n }\n\n private processExecuteTrigger(trigger: ITriggerExecute, query: IQuery) {\n try {\n let func: Function = this._window['' + trigger.content.name];\n if (typeof func === 'function') {\n let params = object(\n map(trigger.content.params, (value, index) => {\n return ['param' + (index + 1), value];\n })\n );\n params['element'] = this.element;\n\n this.usageAnalytics.logCustomEvent(\n analyticsActionCauseList.triggerExecute,\n {\n executions: [{ functionName: trigger.content.name, params: trigger.content.params }]\n },\n this.element\n );\n\n func.apply(this._window, [params]);\n } else {\n this.logger.error(`A trigger tried to call the function '${trigger.content.name}', which doesn't exist.`, this, query, trigger);\n }\n } catch (error) {\n this.logger.error(`A trigger called the function '${trigger.content.name}', which threw an error.`, this, query, trigger);\n }\n }\n}\n\nInitialization.registerAutoCreateComponent(Triggers);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Triggers/Triggers.ts"],"sourceRoot":""}