Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@doodle/tracking / dist / esm / src / core / api / api.js
Size: Mime:
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