{"version":3,"sources":["webpack://CoveoForSitecore/./src/ui/analytics/SendAnalyticsToSitecore.ts","webpack://CoveoForSitecore/./src/rest/EndpointCaller.ts"],"names":["element","options","bindings","SendAnalyticsToSitecore","ID","ComponentOptions","initComponentOptions","endpointCaller","EndpointCallerWrapper","bind","onRootElement","SitecoreContextEvents","onSitecoreContextInitialization","sitecoreContext","analyticsEnabled","this","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","Initialization","registerAutoCreateComponent","EndpointCaller","url","callOptions","errorsAsSuccess","method","queryString","requestData","responseType","requestDataType","call"],"mappings":"0qBAAA,YACA,OAEA,OAgBA,wCAgBI,WACWA,EACAC,EACAC,GAHX,MAKI,YAAMF,EAASG,EAAwBC,GAAIF,IAAS,K,OAJ7C,EAAAF,UACA,EAAAC,UACA,EAAAC,WAIP,EAAKD,QAAU,EAAAI,iBAAiBC,qBAAqBN,EAASG,EAAyBF,GAEvF,EAAKM,eAAiB,IAAI,EAAAC,sBAC1B,EAAKC,KAAKC,cACN,EAAAC,sBAAsBC,gCACtB,EAAKA,iC,EAyCjB,OArE6C,OAgCjC,YAAAA,gCAAR,SAAwCC,GAAxC,WACQA,EAAgBC,mBAChBC,KAAKN,KAAKC,cAAc,EAAAM,gBAAgBC,aAAa,SAACC,GAClD,EAAKC,cAAc,WAAY,eAAgBD,EAAKE,aAAcP,MAEtEE,KAAKN,KAAKC,cAAc,EAAAM,gBAAgBK,mBAAmB,SAACH,GACxD,EAAKC,cAAc,gBAAiB,qBAAsBD,EAAKG,kBAAmBR,MAEtFE,KAAKN,KAAKC,cAAc,EAAAM,gBAAgBM,aAAa,SAACJ,GAClD,EAAKC,cAAc,SAAU,eAAgBD,EAAKI,YAAaT,QAKnE,YAAAM,cAAR,SACII,EACAC,EACAC,EACAZ,GAEA,IAAIa,EAA8B,QACT,IAAdD,IACPC,EAAkBA,EAAgBC,OAAOF,IAE7CC,EACKE,QAAO,SAACC,GACL,YAAuB,IAATA,KAEjBC,SAAQ,SAACD,GACNA,EAAKE,eAAiBlB,EAAgBkB,kBAG9C,IAAMC,EAA+B,GACrCA,EAASR,GAAaS,KAAKC,UAAUR,GAErCX,KAAKR,eAAe4B,SAAS,UAAGpB,KAAKd,QAAQmC,uBAAsB,YAAIb,GAAeS,IAlEnF,EAAA5B,GAAK,0BAEL,EAAAH,QAA2C,CAC9CmC,uBAAwB,EAAA/B,iBAAiBgC,kBAAkB,CACvDC,UAAU,EACVC,eAAgB,SAACC,GACb,YAAwB,IAAVA,GAAqD,MAA5BA,EAAMA,EAAMC,OAAS,GACtDD,EAAME,MAAM,EAAGF,EAAMC,OAAS,GAC9BD,MA4DtB,EArEA,CAA6C,EAAAG,WAuE7C,EAAAC,eAAeC,4BAA4B1C,I,gHC1F3C,WAEA,aAGI,WAAYI,GACRQ,KAAKR,eAAiBA,GAAkB,IAAI,EAAAuC,eAepD,OAZW,YAAAX,SAAP,SAAgBY,EAAaf,GACzB,IAAMgB,EAAuC,CACzCC,iBAAiB,EACjBC,OAAQ,OACRC,YAAa,GACbC,YAAapB,EACbe,IAAKA,EACLM,aAAc,OACdC,gBAAiB,oBAErB,OAAOvC,KAAKR,eAAegD,KAAKP,IAExC,EAnBA,GAAa,EAAAxC","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":""}