react-ga
Version:
React Google Analytics Module
204 lines (189 loc) • 5.59 kB
TypeScript
// Type definitions for react-ga 2.4
// Project: https://github.com/react-ga/react-ga
// Definitions by: Tim Aldridge <https://github.com/telshin>
// Philip Karpiak <https://github.com/eswat>
// Jerry Reptak <https://github.com/jetfault>
// Definitions: https://github.com/react-ga/react-ga
import * as React from 'react';
/* tslint:disable no-any */
/**
* Events are user interactions with content that can be measured independently from
* a web page or a screen load. Downloads, mobile ad clicks, gadgets, Flash elements,
* AJAX embedded elements, and video plays are all examples of actions you might want
* to measure as Events.
* @see https://developers.google.com/analytics/devguides/collection/analyticsjs/events
*/
export interface EventArgs {
/** Typically the object that was interacted with (e.g. 'Video') */
category: string;
/** The type of interaction (e.g. 'play') */
action: string;
/** Useful for categorizing events (e.g. 'Fall Campaign') */
label?: string;
/** A numeric value associated with the event (e.g. 42) */
value?: number;
/** Specifies that a hit be considered non-interactive. */
nonInteraction?: boolean;
/**
* This specifies the transport mechanism with which hits will be sent.
* The options are 'beacon', 'xhr', or 'image'. By default, analytics.js
* will try to figure out the best method based on the hit size and browser
* capabilities. If you specify 'beacon' and the user's browser does not support
* the `navigator.sendBeacon` method, it will fall back to 'image' or 'xhr'
* depending on hit size.
*/
transport?: 'beacon' | 'xhr' | 'image';
/** Custom dimensions */
dimension1?: string;
dimension2?: string;
dimension3?: string;
dimension4?: string;
dimension5?: string;
dimension6?: string;
dimension7?: string;
dimension8?: string;
dimension9?: string;
dimension10?: string;
dimension11?: string;
dimension12?: string;
dimension13?: string;
dimension14?: string;
dimension15?: string;
dimension16?: string;
dimension17?: string;
dimension18?: string;
dimension19?: string;
dimension20?: string;
/** Custom metrics */
metric1?: number;
metric2?: number;
metric3?: number;
metric4?: number;
metric5?: number;
metric6?: number;
metric7?: number;
metric8?: number;
metric9?: number;
metric10?: number;
metric11?: number;
metric12?: number;
metric13?: number;
metric14?: number;
metric15?: number;
metric16?: number;
metric17?: number;
metric18?: number;
metric19?: number;
metric20?: number;
}
export interface GaOptions {
name?: string;
clientId?: string;
sampleRate?: number;
siteSpeedSampleRate?: number;
alwaysSendReferrer?: boolean;
allowAnchor?: boolean;
cookieName?: string;
cookieDomain?: string;
cookieExpires?: number;
cookieUpdate?: boolean;
legacyCookieDomain?: string;
legacyHistoryImport?: boolean;
allowLinker?: boolean;
userId?: string;
storage?: string;
storeGac?: boolean;
cookieFlags?: string;
}
export interface InitializeOptions {
debug?: boolean;
gaAddress?: string;
testMode?: boolean;
titleCase?: boolean;
gaOptions?: GaOptions;
alwaysSendToDefaultTracker?: boolean;
standardImplementation?: boolean;
/** Optional. Defaults to `true`. Enables redacting a email as the string that in "Event Category" and "Event Action". */
redactEmail?: boolean;
useExistingGa?: boolean;
}
export type Tracker = {
trackingId: string;
} & InitializeOptions;
export type TrackerNames = string[];
export interface FieldsObject {
[i: string]: any;
}
export interface TimingArgs {
category: string;
variable: string;
value: number;
label?: string;
}
export interface Plugin {
require(name: string, options?: any, trackerName?: string): void;
execute(
pluginName: string,
action: string,
actionTypeOrPayload: string | any,
payload?: any
): void;
}
export interface TestModeAPI {
calls: any[][];
ga: (...args: any[]) => any;
resetCalls: Function;
}
export interface OutboundLinkArgs {
label: string;
}
export interface OutboundLinkProps {
eventLabel: string;
to: string;
target?: string;
onClick?: Function;
trackerNames?: TrackerNames;
}
export function initialize(
trackingCode: string,
options?: InitializeOptions
): void;
export function initialize(
trackers: Tracker[],
options?: InitializeOptions
): void;
export function addTrackers(trackingCode: string): void;
export function addTrackers(trackers: Tracker[]): void;
export function ga(): (...args: any[]) => void;
export function ga(...args: any[]): void;
export function resetCalls(): void;
export function set(
fieldsObject: FieldsObject,
trackerNames?: TrackerNames
): void;
export function send(
fieldsObject: FieldsObject,
trackerNames?: TrackerNames
): void;
export function pageview(
path: string,
trackerNames?: TrackerNames,
title?: string
): void;
export function modalview(name: string, trackerNames?: TrackerNames): void;
export function timing(args: TimingArgs, trackerNames?: TrackerNames): void;
export function event(args: EventArgs, trackerNames?: TrackerNames): void;
export function exception(
fieldsObject: FieldsObject,
trackerNames?: TrackerNames
): void;
export const plugin: Plugin;
export const testModeAPI: TestModeAPI;
export function outboundLink(
args: OutboundLinkArgs,
hitCallback: () => void,
trackerNames?: TrackerNames
): void;
export const OutboundLink: React.ComponentClass<
OutboundLinkProps & React.HTMLProps<HTMLAnchorElement>
>;