{"version":3,"sources":["webpack://CoveoForSitecore/./src/ui/analytics/SendAnalyticsToSitecore.ts","webpack://CoveoForSitecore/./src/rest/EndpointCaller.ts"],"names":["EndpointCaller_1","__webpack_require__","ContextEvents_1","coveo_search_ui_1","SendAnalyticsToSitecore","_super","element","options","bindings","_this","call","this","ID","ComponentOptions","initComponentOptions","endpointCaller","EndpointCallerWrapper","bind","onRootElement","SitecoreContextEvents","onSitecoreContextInitialization","__extends","prototype","sitecoreContext","analyticsEnabled","AnalyticsEvents","searchEvent","args","postAnalytics","searchEvents","documentViewEvent","customEvent","eventAction","eventType","eventData","parsedEventData","concat","filter","data","forEach","sitecoreItemId","postData","JSON","stringify","sendPost","scAnalyticsEndpointUri","buildStringOption","required","postProcessing","value","length","slice","Component","exports","Initialization","registerAutoCreateComponent","EndpointCaller","url","callOptions","errorsAsSuccess","method","queryString","requestData","responseType","requestDataType"],"mappings":"2fAAA,IAAAA,EAAAC,EAAA,IACAC,EAAAD,EAAA,GAEAE,EAAAF,EAAA,GAgBAG,EAAA,SAAAC,GAgBI,SAAAD,EACWE,EACAC,EACAC,GAHX,IAAAC,EAKIJ,EAAAK,KAAAC,KAAML,EAASF,EAAwBQ,GAAIJ,IAASG,YAJ7CF,EAAAH,UACAG,EAAAF,UACAE,EAAAD,WAIPC,EAAKF,QAAUJ,EAAAU,iBAAiBC,qBAAqBR,EAASF,EAAyBG,GAEvFE,EAAKM,eAAiB,IAAIf,EAAAgB,sBAC1BP,EAAKQ,KAAKC,cACNhB,EAAAiB,sBAAsBC,gCACtBX,EAAKW,mCAyCjB,OArE6CC,EAAAjB,EAAAC,GAgCjCD,EAAAkB,UAAAF,gCAAR,SAAwCG,GAAxC,IAAAd,EAAAE,KACQY,EAAgBC,mBAChBb,KAAKM,KAAKC,cAAcf,EAAAsB,gBAAgBC,YAAa,SAACC,GAClDlB,EAAKmB,cAAc,WAAY,eAAgBD,EAAKE,aAAcN,KAEtEZ,KAAKM,KAAKC,cAAcf,EAAAsB,gBAAgBK,kBAAmB,SAACH,GACxDlB,EAAKmB,cAAc,gBAAiB,qBAAsBD,EAAKG,kBAAmBP,KAEtFZ,KAAKM,KAAKC,cAAcf,EAAAsB,gBAAgBM,YAAa,SAACJ,GAClDlB,EAAKmB,cAAc,SAAU,eAAgBD,EAAKI,YAAaR,OAKnEnB,EAAAkB,UAAAM,cAAR,SACII,EACAC,EACAC,EACAX,GAEA,IAAIY,EAA8B,QACT,IAAdD,IACPC,EAAkBA,EAAgBC,OAAOF,IAE7CC,EACKE,OAAO,SAACC,GACL,YAAuB,IAATA,IAEjBC,QAAQ,SAACD,GACNA,EAAKE,eAAiBjB,EAAgBiB,iBAG9C,IAAMC,EAA+B,GACrCA,EAASR,GAAaS,KAAKC,UAAUR,GAErCxB,KAAKI,eAAe6B,SAAYjC,KAAKJ,QAAQsC,uBAAsB,IAAIb,EAAeS,IAlEnFrC,EAAAQ,GAAK,0BAELR,EAAAG,QAA2C,CAC9CsC,uBAAwB1C,EAAAU,iBAAiBiC,kBAAkB,CACvDC,UAAU,EACVC,eAAgB,SAACC,GACb,YAAwB,IAAVA,GAAqD,MAA5BA,EAAMA,EAAMC,OAAS,GACtDD,EAAME,MAAM,EAAGF,EAAMC,OAAS,GAC9BD,MA4DtB7C,EArEA,CAA6CD,EAAAiD,WAAhCC,EAAAjD,0BAuEbD,EAAAmD,eAAeC,4BAA4BnD,qFC1F3C,IAAAD,EAAAF,EAAA,GAEAe,EAAA,WAGI,SAAAA,EAAYD,GACRJ,KAAKI,eAAiBA,GAAkB,IAAIZ,EAAAqD,eAepD,OAZWxC,EAAAM,UAAAsB,SAAP,SAAgBa,EAAahB,GACzB,IAAMiB,EAAuC,CACzCC,iBAAiB,EACjBC,OAAQ,OACRC,YAAa,GACbC,YAAarB,EACbgB,IAAKA,EACLM,aAAc,OACdC,gBAAiB,oBAErB,OAAOrD,KAAKI,eAAeL,KAAKgD,IAExC1C,EAnBA,GAAaqC,EAAArC","file":"SendAnalyticsToSitecore.min.js","sourcesContent":["import { IEndpointCaller, EndpointCallerWrapper } from '../../rest/EndpointCaller';\r\nimport { ISitecoreContextInitializationEventArgs, SitecoreContextEvents } from '../../events/ContextEvents';\r\n\r\nimport {\r\n AnalyticsEvents,\r\n IAnalyticsSearchEventsArgs,\r\n IAnalyticsDocumentViewEventArgs,\r\n IAnalyticsCustomEventArgs,\r\n Component,\r\n IComponentBindings,\r\n ComponentOptions,\r\n IStringMap,\r\n Initialization,\r\n} from 'coveo-search-ui';\r\n\r\nexport interface ISendAnalyticsToSitecoreOptions {\r\n scAnalyticsEndpointUri: string;\r\n}\r\n\r\nexport class SendAnalyticsToSitecore extends Component {\r\n static ID = 'SendAnalyticsToSitecore';\r\n\r\n static options: ISendAnalyticsToSitecoreOptions = {\r\n scAnalyticsEndpointUri: ComponentOptions.buildStringOption({\r\n required: true,\r\n postProcessing: (value) => {\r\n return typeof value !== 'undefined' && value[value.length - 1] === '/'\r\n ? value.slice(0, value.length - 1)\r\n : value;\r\n },\r\n }),\r\n };\r\n\r\n private endpointCaller: IEndpointCaller<any>;\r\n\r\n constructor(\r\n public element: HTMLElement,\r\n public options: ISendAnalyticsToSitecoreOptions,\r\n public bindings: IComponentBindings\r\n ) {\r\n super(element, SendAnalyticsToSitecore.ID, bindings);\r\n\r\n this.options = ComponentOptions.initComponentOptions(element, SendAnalyticsToSitecore, options);\r\n\r\n this.endpointCaller = new EndpointCallerWrapper();\r\n this.bind.onRootElement<ISitecoreContextInitializationEventArgs>(\r\n SitecoreContextEvents.onSitecoreContextInitialization,\r\n this.onSitecoreContextInitialization\r\n );\r\n }\r\n\r\n private onSitecoreContextInitialization(sitecoreContext: ISitecoreContextInitializationEventArgs): void {\r\n if (sitecoreContext.analyticsEnabled) {\r\n this.bind.onRootElement(AnalyticsEvents.searchEvent, (args: IAnalyticsSearchEventsArgs) => {\r\n this.postAnalytics('searches', 'searchEvents', args.searchEvents, sitecoreContext);\r\n });\r\n this.bind.onRootElement(AnalyticsEvents.documentViewEvent, (args: IAnalyticsDocumentViewEventArgs) => {\r\n this.postAnalytics('documentViews', 'documentViewEvents', args.documentViewEvent, sitecoreContext);\r\n });\r\n this.bind.onRootElement(AnalyticsEvents.customEvent, (args: IAnalyticsCustomEventArgs) => {\r\n this.postAnalytics('custom', 'customEvents', args.customEvent, sitecoreContext);\r\n });\r\n }\r\n }\r\n\r\n private postAnalytics(\r\n eventAction: string,\r\n eventType: string,\r\n eventData: any,\r\n sitecoreContext: ISitecoreContextInitializationEventArgs\r\n ): void {\r\n let parsedEventData: Array<any> = [];\r\n if (typeof eventData !== 'undefined') {\r\n parsedEventData = parsedEventData.concat(eventData);\r\n }\r\n parsedEventData\r\n .filter((data: any) => {\r\n return typeof data !== 'undefined';\r\n })\r\n .forEach((data: any) => {\r\n data.sitecoreItemId = sitecoreContext.sitecoreItemId;\r\n });\r\n\r\n const postData: IStringMap<string> = {};\r\n postData[eventType] = JSON.stringify(parsedEventData);\r\n\r\n this.endpointCaller.sendPost(`${this.options.scAnalyticsEndpointUri}/${eventAction}`, postData);\r\n }\r\n}\r\n\r\nInitialization.registerAutoCreateComponent(SendAnalyticsToSitecore);\r\n","import { IStringMap, IEndpointCallParameters, EndpointCaller, ISuccessResponse } from 'coveo-search-ui';\r\n\r\nexport class EndpointCallerWrapper<T> implements IEndpointCaller<T> {\r\n private endpointCaller: EndpointCaller;\r\n\r\n constructor(endpointCaller?: EndpointCaller) {\r\n this.endpointCaller = endpointCaller || new EndpointCaller();\r\n }\r\n\r\n public sendPost(url: string, postData: IStringMap<string>): Promise<ISuccessResponse<T>> {\r\n const callOptions: IEndpointCallParameters = {\r\n errorsAsSuccess: false,\r\n method: 'POST',\r\n queryString: [],\r\n requestData: postData,\r\n url: url,\r\n responseType: 'text',\r\n requestDataType: 'application/json',\r\n };\r\n return this.endpointCaller.call(callOptions);\r\n }\r\n}\r\n\r\nexport interface IEndpointCaller<T> {\r\n sendPost(url: string, postData: IStringMap<string>): Promise<ISuccessResponse<T>>;\r\n}\r\n"],"sourceRoot":""}