Repository URL to install this package:
|
Version:
1.0.0-rc.2 ▾
|
import { handleTrack, handleIdentify } from '../handlers.js';
import { initTracking } from '../init.js';
class API extends Object {
constructor(options) {
super();
this.options = options;
}
/**
* Static factory method for initializing @doodle/tracking library
*
* This instantiates the API client and attaches it automatically to the global namespace for access on components
*
* @public
* @param {Object} options This contains fields for either imperative or declarative (data attributes based) tracking
* @param {string} options.amplitudeKey A tracking intent
* @param {Object} [options.services] An HTML element with tracking data attributes
* @return {API} An instance of API class, to be used as window.analytics.track(trackingIntent) in consuming projects
*/
static init(options) {
initTracking(options);
const analytics = new API(options);
window.analytics = analytics;
return analytics;
}
/**
* Client method for tracking
*
* It may be called either with a trackingIntent or with a trackingEl, which carries tracking data attributes
* In case both are passed: trackingIntent is preferred
*
* @public
* @param {Object} payload This contains fields for either imperative or declarative (data attributes based) tracking
* @param {TrackingIntent} [payload.trackingIntent] A tracking intent
* @param {HTMLElement} [payload.trackingEl] An HTML element with tracking data attributes
* @param {MouseEvent} [payload.event] A click event to be cancelled in case of same tab links
* @return {undefined}
*/
// eslint-disable-next-line class-methods-use-this
track({
trackingIntent,
trackingEl,
event
} = {}) {
handleTrack({
trackingIntent,
trackingEl,
event
});
}
/**
* Client method user identification
*
* @public
* @param {Object} [payload]
* @param {TrackingIntent} [payload.trackingIntent] An object with same interface accepted by getTrackingDataAttrs, useful for
* imperative tracking
* @param {HTMLElement} [payload.trackingEl] An HTML element to inspect
* @return {undefined}
*/
// eslint-disable-next-line class-methods-use-this
identify({
trackingIntent,
trackingEl
} = {}) {
handleIdentify({
trackingIntent,
trackingEl
});
}
}
export default API;
//# sourceMappingURL=api.js.map