{"version":3,"sources":["./src/ui/Triggers/Triggers.ts","./sass/_Triggers.scss"],"names":[],"mappings":"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","file":"Triggers__d2b01b0f173a0c131e66.js","sourcesContent":["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, filter, each, take } from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\n\nimport 'styling/_Triggers';\n\nexport interface ITriggersOptions {}\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.length = 0;\n let showElement = false;\n\n if (data.results.triggers === undefined) {\n $$(this.element).toggleClass('coveo-visible', showElement);\n return;\n }\n\n this.executeTriggers(data.results.triggers, 'notify', (trigger: ITriggerNotify) => {\n this.usageAnalytics.logCustomEvent<IAnalyticsTriggerNotify>(\n analyticsActionCauseList.triggerNotify,\n {\n notification: trigger.content\n },\n this.element\n );\n\n this.notifications.push(trigger.content);\n this.element.appendChild($$('div', { className: 'coveo-trigger-notify' }, trigger.content).el);\n\n showElement = true;\n });\n\n this.executeTriggers(\n data.results.triggers,\n 'redirect',\n (trigger: ITriggerRedirect) => {\n this.usageAnalytics.logCustomEvent<IAnalyticsTriggerRedirect>(\n analyticsActionCauseList.triggerRedirect,\n {\n redirectedTo: trigger.content\n },\n this.element\n );\n\n this._window.location.replace(trigger.content);\n },\n true\n );\n\n this.executeTriggers(\n data.results.triggers,\n 'query',\n (trigger: ITriggerQuery) => {\n this.queryStateModel.set(QueryStateModel.attributesEnum.q, trigger.content);\n this.queryController.executeQuery({\n beforeExecuteQuery: () => {\n this.usageAnalytics.logCustomEvent<IAnalyticsTriggerQuery>(\n analyticsActionCauseList.triggerQuery,\n {\n query: trigger.content\n },\n this.element\n );\n }\n });\n },\n true\n );\n\n this.executeTriggers(data.results.triggers, 'execute', (trigger: ITriggerExecute) => {\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<IAnalyticsTriggerExecute>(\n analyticsActionCauseList.triggerExecute,\n {\n executed: trigger.content.name\n },\n this.element\n );\n\n func.apply(this._window, [params]);\n } else {\n this.logger.error(\n `A trigger tried to call the function '${trigger.content.name}', which doesn't exist.`,\n this,\n data.query,\n trigger\n );\n }\n } catch (error) {\n this.logger.error(`A trigger called the function '${trigger.content.name}', which threw an error.`, this, data.query, trigger);\n }\n });\n\n $$(this.element).toggleClass('coveo-visible', showElement);\n }\n\n private executeTriggers(trigger: ITrigger<any>[], type: string, func: (trigger: ITrigger<any>) => any, single: boolean = false) {\n let triggersOfType = filter(trigger, (trigger: ITrigger<any>) => {\n return trigger.type == type;\n });\n let oneOrAllTriggers = take(triggersOfType, single ? 1 : Number.MAX_VALUE);\n\n each(oneOrAllTriggers, func);\n }\n}\n\nInitialization.registerAutoCreateComponent(Triggers);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Triggers/Triggers.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_Triggers.scss\n// module id = 675\n// module chunks = 58 88"],"sourceRoot":""}