@cakemail-org/ui-components-v2 2.2.107 → 2.2.108

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  import { BaseTextFieldProps } from "@mui/material";
2
2
  import { ChangeEventHandler } from "react";
3
3
  import { TIconName } from "../icon/types";
4
- export interface TTextField extends Omit<BaseTextFieldProps, "onMouseUp" | "FormHelperTextProps" | "fullWidth" | "select" | "margin" | "component" | "InputLabelProps" | "SelectProps" | "classes" | "size" | "color"> {
4
+ export interface TTextField extends Omit<BaseTextFieldProps, "onMouseUp" | "FormHelperTextProps" | "fullWidth" | "select" | "margin" | "component" | "InputLabelProps" | "SelectProps" | "classes" | "color"> {
5
5
  onChange?: TTextFieldChange;
6
6
  labelTooltipText?: string;
7
7
  useBareBoneInput?: boolean;
@@ -1,5 +1,32 @@
1
1
  import { Theme } from "@mui/material";
2
2
  export default function getMuiTextField(theme: Theme): {
3
+ variants: ({
4
+ props: {
5
+ size: string;
6
+ };
7
+ style: {
8
+ ".MuiInputBase-root > input, .MuiInputBase-root > textarea": {
9
+ padding: string;
10
+ fontSize: import("csstype").Property.FontSize<string | number> | undefined;
11
+ lineHeight: import("csstype").Property.LineHeight<string | number> | undefined;
12
+ };
13
+ ".MuiSvgIcon-root": {
14
+ top: string;
15
+ };
16
+ };
17
+ } | {
18
+ props: {
19
+ size: string;
20
+ };
21
+ style: {
22
+ ".MuiInputBase-root > input, .MuiInputBase-root > textarea": {
23
+ padding: string;
24
+ fontSize?: undefined;
25
+ lineHeight?: undefined;
26
+ };
27
+ ".MuiSvgIcon-root"?: undefined;
28
+ };
29
+ })[];
3
30
  styleOverrides: {
4
31
  root: {
5
32
  ".MuiInputLabel-root": {
@@ -0,0 +1,14 @@
1
+ import { EventModel } from "../../models/eventTracking";
2
+ import { TGetEventBreakdown, TGetEventFunnel, TGetEventPropertyKeys, TGetEventSummary, TGetEventTimeseries, TListEvents } from "../../services/eventTracking";
3
+ import { TEventBreakdown, TEventFunnel, TEventListResponse, TEventPropertyKeys, TEventSummary, TEventTimeseries } from "./types";
4
+ export declare class EventTrackingFactory {
5
+ static list({ ...options }: TListEvents): Promise<Omit<TEventListResponse, "items"> & {
6
+ items: EventModel[];
7
+ }>;
8
+ static getSummary({ ...options }: TGetEventSummary): Promise<TEventSummary>;
9
+ static getTimeseries({ ...options }: TGetEventTimeseries): Promise<TEventTimeseries>;
10
+ static getBreakdown({ ...options }: TGetEventBreakdown): Promise<TEventBreakdown>;
11
+ static getPropertyKeys({ ...options }: TGetEventPropertyKeys): Promise<TEventPropertyKeys>;
12
+ static getFunnel({ ...options }: TGetEventFunnel): Promise<TEventFunnel>;
13
+ }
14
+ export * from "./types";
@@ -0,0 +1,91 @@
1
+ import { ETrackedEntityType, ETrackedEventType } from "../../models/eventTracking/types";
2
+ export type TEventRow = {
3
+ event_id: string;
4
+ event_type: ETrackedEventType | string;
5
+ entity_type: ETrackedEntityType | string;
6
+ entity_id: string;
7
+ session_id?: string | null;
8
+ visitor_id?: string | null;
9
+ occurred_at: string;
10
+ device_type?: string | null;
11
+ browser?: string | null;
12
+ os?: string | null;
13
+ source?: string | null;
14
+ utm_source?: string | null;
15
+ utm_medium?: string | null;
16
+ utm_campaign?: string | null;
17
+ referrer?: string | null;
18
+ properties: Record<string, unknown>;
19
+ scroll_depth?: number | null;
20
+ element_id?: string | null;
21
+ popup_trigger?: string | null;
22
+ page_url?: string | null;
23
+ email?: string | null;
24
+ list_id?: string | null;
25
+ contact_id?: string | null;
26
+ form_id?: string | null;
27
+ ip?: string | null;
28
+ };
29
+ export type TEventListResponse = {
30
+ total: number;
31
+ limit: number;
32
+ offset: number;
33
+ items: TEventRow[];
34
+ };
35
+ export type TSummaryByEventType = {
36
+ event_type: string;
37
+ count: number;
38
+ };
39
+ export type TEventSummary = {
40
+ total: number;
41
+ by_event_type: TSummaryByEventType[];
42
+ new_visitors: number;
43
+ returning_visitors: number;
44
+ };
45
+ export type TTimeseriesPoint = {
46
+ timestamp: string;
47
+ count: number;
48
+ };
49
+ export type TTimeseriesPointBreakdown = {
50
+ timestamp: string;
51
+ values: Array<{
52
+ dimension_value?: string | null;
53
+ count: number;
54
+ }>;
55
+ };
56
+ export type TEventTimeseries = {
57
+ granularity: string;
58
+ event_type?: string | null;
59
+ breakdown?: string | null;
60
+ series: Array<TTimeseriesPoint | TTimeseriesPointBreakdown>;
61
+ };
62
+ export type TBreakdownItem = {
63
+ value?: string | null;
64
+ count: number;
65
+ percentage: number;
66
+ };
67
+ export type TEventBreakdown = {
68
+ dimension: string;
69
+ total: number;
70
+ items: TBreakdownItem[];
71
+ };
72
+ export type TPropertyKey = {
73
+ key: string;
74
+ count: number;
75
+ };
76
+ export type TEventPropertyKeys = {
77
+ keys: TPropertyKey[];
78
+ };
79
+ export type TFunnelStep = {
80
+ event_type: string;
81
+ count: number;
82
+ step_conversion_rate: number;
83
+ overall_conversion_rate: number;
84
+ };
85
+ export type TEventFunnel = {
86
+ window_hours: number;
87
+ steps: TFunnelStep[];
88
+ total_entered: number;
89
+ total_completed: number;
90
+ overall_conversion_rate: number;
91
+ };
@@ -6,6 +6,7 @@ export * from "./campaigns";
6
6
  export * from "./contacts";
7
7
  export * from "./customDomains";
8
8
  export * from "./emailAPI";
9
+ export * from "./eventTracking";
9
10
  export * from "./forms";
10
11
  export * from "./lists";
11
12
  export * from "./pages";
package/dist/cjs/index.js CHANGED
@@ -484,6 +484,8 @@ exports.EPartialInfoPool = void 0;
484
484
  EPartialInfoPool["partialLists"] = "partialLists";
485
485
  EPartialInfoPool["partialListReports"] = "partialListReports";
486
486
  EPartialInfoPool["partialCampaignReports"] = "partialCampaignReports";
487
+ EPartialInfoPool["partialPageEventSummaries"] = "partialPageEventSummaries";
488
+ EPartialInfoPool["partialPopupEventSummaries"] = "partialPopupEventSummaries";
487
489
  })(exports.EPartialInfoPool || (exports.EPartialInfoPool = {}));
488
490
 
489
491
  // Storage
@@ -5742,6 +5744,37 @@ function getMuiTableRow(theme) {
5742
5744
 
5743
5745
  function getMuiTextField(theme) {
5744
5746
  return {
5747
+ variants: [
5748
+ {
5749
+ props: { size: "small" },
5750
+ style: {
5751
+ ".MuiInputBase-root > input, .MuiInputBase-root > textarea": {
5752
+ padding: theme.spacing(3, 3.5),
5753
+ fontSize: theme.typography.body1.fontSize,
5754
+ lineHeight: theme.typography.body1.lineHeight,
5755
+ },
5756
+ ".MuiSvgIcon-root": {
5757
+ top: "1.5rem !important",
5758
+ },
5759
+ },
5760
+ },
5761
+ {
5762
+ props: { size: "medium" },
5763
+ style: {
5764
+ ".MuiInputBase-root > input, .MuiInputBase-root > textarea": {
5765
+ padding: theme.spacing(4, 3.5),
5766
+ }
5767
+ },
5768
+ },
5769
+ {
5770
+ props: { size: "large" },
5771
+ style: {
5772
+ ".MuiInputBase-root > input, .MuiInputBase-root > textarea": {
5773
+ padding: theme.spacing(5, 3.5),
5774
+ }
5775
+ },
5776
+ },
5777
+ ],
5745
5778
  styleOverrides: {
5746
5779
  root: {
5747
5780
  ".MuiInputLabel-root": __assign(__assign({}, theme.typography.body2), { color: theme.palette.body1.main, transform: "translate(14px, -9px)", ">div": {
@@ -7677,11 +7710,11 @@ function LoadingContainer(_a) {
7677
7710
  React.createElement(Container, { className: "loadingContainer-component-v2 ".concat(className), sx: { display: "flex", alignItems: "center", justifyContent: "center", width: "100%" } }, loader)));
7678
7711
  }
7679
7712
 
7680
- var css_248z$v = ".textfield-component-v2 {\n position: relative;\n}\n.textfield-component-v2.disabled {\n opacity: 0.65;\n pointer-events: none;\n}\n.textfield-component-v2 .MuiSvgIcon-root ~ .MuiFormControl-root .MuiInputBase-input {\n padding-left: 42px;\n}\n.textfield-component-v2 .MuiSvgIcon-root {\n position: absolute;\n left: 1rem;\n top: 1.65rem;\n transform: translateY(-50%);\n z-index: 1;\n}\n\n.locationTextField-component-v2 {\n position: relative;\n}\n.locationTextField-component-v2 .autocomplete-dropdown-container {\n position: absolute;\n width: 100%;\n z-index: 10000;\n}\n\n.phoneTextField-component-v2 .MuiInputAdornment-root .MuiSelect-select {\n padding-right: 1.75rem !important;\n}\n.phoneTextField-component-v2 .MuiInputAdornment-root .MuiSelect-icon {\n display: inline-block;\n right: 0.5rem;\n}\n\n.react-international-phone-flag-emoji {\n width: 1.5rem;\n height: 1.5rem;\n}\n\n.colorTextField-component-v2 {\n position: relative;\n}\n.colorTextField-component-v2 .boxedColor {\n position: absolute;\n width: 20px;\n height: 20px;\n border-radius: 20px;\n left: 1rem;\n top: 1.65rem;\n transform: translateY(-50%);\n z-index: 1;\n}\n.colorTextField-component-v2 .boxedColor .MuiSvgIcon-root {\n width: unset;\n height: unset;\n}\n.colorTextField-component-v2 .boxedColor::after {\n position: absolute;\n width: 6px;\n height: 6px;\n content: \"\";\n background-color: var(--white, #FFFFFF);\n border-radius: 20px;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n}\n.colorTextField-component-v2 .boxedColor ~ .textfield-component-v2 .MuiInputBase-input {\n padding-left: 44px;\n}\n.colorTextField-component-v2.bottom .react-colorful {\n top: 3.5rem;\n}\n.colorTextField-component-v2.top .react-colorful {\n bottom: 4rem;\n}\n.colorTextField-component-v2 .react-colorful {\n width: 100%;\n position: absolute;\n}";
7713
+ var css_248z$v = ".textfield-component-v2 {\n position: relative;\n}\n.textfield-component-v2.small .MuiSvgIcon-root {\n top: 1.4rem !important;\n}\n.textfield-component-v2.disabled {\n opacity: 0.65;\n pointer-events: none;\n}\n.textfield-component-v2 .MuiSvgIcon-root ~ .MuiFormControl-root .MuiInputBase-input {\n padding-left: 42px;\n}\n.textfield-component-v2 .MuiSvgIcon-root {\n position: absolute;\n left: 1rem;\n top: 1.65rem;\n transform: translateY(-50%);\n z-index: 1;\n}\n\n.locationTextField-component-v2 {\n position: relative;\n}\n.locationTextField-component-v2 .autocomplete-dropdown-container {\n position: absolute;\n width: 100%;\n z-index: 10000;\n}\n\n.phoneTextField-component-v2 .MuiInputAdornment-root .MuiSelect-select {\n padding-right: 1.75rem !important;\n}\n.phoneTextField-component-v2 .MuiInputAdornment-root .MuiSelect-icon {\n display: inline-block;\n right: 0.5rem;\n}\n\n.react-international-phone-flag-emoji {\n width: 1.5rem;\n height: 1.5rem;\n}\n\n.colorTextField-component-v2 {\n position: relative;\n}\n.colorTextField-component-v2 .boxedColor {\n position: absolute;\n width: 20px;\n height: 20px;\n border-radius: 20px;\n left: 1rem;\n top: 1.65rem;\n transform: translateY(-50%);\n z-index: 1;\n}\n.colorTextField-component-v2 .boxedColor .MuiSvgIcon-root {\n width: unset;\n height: unset;\n}\n.colorTextField-component-v2 .boxedColor::after {\n position: absolute;\n width: 6px;\n height: 6px;\n content: \"\";\n background-color: var(--white, #FFFFFF);\n border-radius: 20px;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n}\n.colorTextField-component-v2 .boxedColor ~ .textfield-component-v2 .MuiInputBase-input {\n padding-left: 44px;\n}\n.colorTextField-component-v2.bottom .react-colorful {\n top: 3.5rem;\n}\n.colorTextField-component-v2.top .react-colorful {\n bottom: 4rem;\n}\n.colorTextField-component-v2 .react-colorful {\n width: 100%;\n position: absolute;\n}";
7681
7714
  styleInject(css_248z$v);
7682
7715
 
7683
7716
  var TextField = React.forwardRef(function (_a, ref) {
7684
- var _b = _a.className, className = _b === void 0 ? "" : _b, label = _a.label, timeout = _a.timeout, labelTooltipText = _a.labelTooltipText, disabled = _a.disabled; _a.useBareBoneInput; var onChange = _a.onChange, multiline = _a.multiline, inputProps = _a.inputProps, iconName = _a.iconName, onKeyDown = _a.onKeyDown, props = __rest(_a, ["className", "label", "timeout", "labelTooltipText", "disabled", "useBareBoneInput", "onChange", "multiline", "inputProps", "iconName", "onKeyDown"]);
7717
+ var _b = _a.className, className = _b === void 0 ? "" : _b, label = _a.label, timeout = _a.timeout, labelTooltipText = _a.labelTooltipText, disabled = _a.disabled; _a.useBareBoneInput; var onChange = _a.onChange, multiline = _a.multiline, inputProps = _a.inputProps, iconName = _a.iconName, onKeyDown = _a.onKeyDown, size = _a.size, props = __rest(_a, ["className", "label", "timeout", "labelTooltipText", "disabled", "useBareBoneInput", "onChange", "multiline", "inputProps", "iconName", "onKeyDown", "size"]);
7685
7718
  var cLabel = label;
7686
7719
  var timeoutRef = React.useRef(undefined);
7687
7720
  function onChangeHandler(e) {
@@ -7728,9 +7761,9 @@ var TextField = React.forwardRef(function (_a, ref) {
7728
7761
  onKeyDown && onKeyDown(event);
7729
7762
  }
7730
7763
  inputProps = __assign({ maxLength: 256 }, inputProps);
7731
- return React.createElement(Box, { className: "textfield-component-v2 ".concat(className, " ").concat(disabled ? "disabled" : "", " ") },
7764
+ return React.createElement(Box, { className: "textfield-component-v2 ".concat(className, " ").concat(disabled ? "disabled" : "", " ").concat(size) },
7732
7765
  iconName && React.createElement(Icon, { name: iconName }),
7733
- React.createElement(MUITextField, __assign({}, props, { inputProps: inputProps, onChange: onChangeHandler, label: cLabel, disabled: disabled, onKeyDown: handleKeyDown, multiline: multiline, inputRef: ref })));
7766
+ React.createElement(MUITextField, __assign({}, props, { inputProps: inputProps, onChange: onChangeHandler, label: cLabel, disabled: disabled, onKeyDown: handleKeyDown, multiline: multiline, inputRef: ref, size: size })));
7734
7767
  });
7735
7768
 
7736
7769
  var css_248z$u = ".assetmanager-component-v2 {\n box-shadow: 0 0 15px 0 rgba(0, 0, 0, 0.15);\n background: var(--background-color-1, var(--white, #FFFFFF));\n min-width: 25rem;\n width: 100%;\n}\n.assetmanager-component-v2 .loadingContainer-component-v2 {\n padding: 3rem;\n}\n.assetmanager-component-v2 .container {\n padding: 0.75rem;\n}\n.assetmanager-component-v2 .container > div.textInputContainer {\n display: flex;\n border: solid 1px var(--wild-sand, #dddddd);\n border-radius: 6px;\n justify-content: flex-start;\n align-items: center;\n}\n.assetmanager-component-v2 .container > div.textInputContainer > div .MuiSvgIcon-root {\n display: block;\n cursor: pointer;\n}\n.assetmanager-component-v2 .container > div.textInputContainer > div:first-child {\n padding: 0 0.75rem 0 0.75rem;\n height: 100%;\n}\n.assetmanager-component-v2 .container > div.textInputContainer > div:last-child:not(.textfield-component-v2) {\n padding: 0 0.875rem;\n height: 100%;\n}\n.assetmanager-component-v2 .container > div.textInputContainer .textfield-component-v2 {\n width: 100%;\n}\n.assetmanager-component-v2 .container > div.textInputContainer .textfield-component-v2 fieldset {\n outline: none !important;\n border: none !important;\n}\n.assetmanager-component-v2 .container > div.textInputContainer .textfield-component-v2 input {\n padding: 0.5rem 0 !important;\n}\n.assetmanager-component-v2 .container .optionsListingContainer {\n padding: 0 1.25rem 0.5rem 1.25rem;\n margin: 1.25rem 0 0.5rem 0;\n max-height: 20rem;\n overflow-y: auto;\n}\n.assetmanager-component-v2 .container .optionsListingContainer button {\n text-transform: capitalize;\n}\n.assetmanager-component-v2 .container .optionsListingContainer::-webkit-scrollbar {\n display: block;\n}\n.assetmanager-component-v2 .container .optionsListingContainer::-webkit-scrollbar-track:horizontal {\n position: absolute;\n bottom: -20px;\n}\n.assetmanager-component-v2 .container .optionsListingContainer::-webkit-scrollbar-track:vertical {\n border-bottom-left-radius: 0 !important;\n border-bottom-right-radius: 8px !important;\n border-top-right-radius: 8px !important;\n}\n.assetmanager-component-v2 .container .optionsListingContainer::-webkit-scrollbar-track {\n height: 2.5rem;\n width: 2.5rem;\n padding: 2rem;\n background-clip: content-box;\n border-bottom-left-radius: 8px;\n}\n.assetmanager-component-v2 .container .optionsListingContainer::-webkit-scrollbar-thumb {\n background: var(--body-font-color-2, var(--silver, #9B9B9B));\n border-radius: 24px;\n border-top: 5px solid var(--background-color-1, var(--white, #FFFFFF));\n border-bottom: 5px solid var(--background-color-1, var(--white, #FFFFFF));\n border-right: 5px solid var(--background-color-1, var(--white, #FFFFFF));\n border-left: 5px solid var(--background-color-1, var(--white, #FFFFFF));\n}\n.assetmanager-component-v2 .container .optionsListingContainer > div:first-child:not(.listItem) {\n padding-bottom: 0.75rem;\n text-transform: uppercase;\n font-weight: 700;\n color: var(--body-font-color, var(--dark-matter, #2B2B2B));\n}\n.assetmanager-component-v2 .container .optionsListingContainer > p.h8 {\n margin-bottom: 1rem;\n color: var(--body-font-color, var(--dark-matter, #2B2B2B));\n}\n.assetmanager-component-v2 .container .optionsListingContainer p.h8 {\n flex: 1;\n font-family: proxima-nova, Lucida Grande, Lucida Sans Unicode, Lucida Sans, Geneva, Verdana, sans-serif;\n text-transform: uppercase;\n font-weight: 700;\n line-height: 1rem;\n font-size: 0.75rem;\n}\n.assetmanager-component-v2 .container .optionsListingContainer .listItem {\n display: flex;\n justify-content: space-between;\n align-items: center;\n min-height: 2rem;\n}\n.assetmanager-component-v2 .container .optionsListingContainer .listItem p.h8 {\n color: var(--body-font-color-2, var(--silver, #9B9B9B));\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n}\n.assetmanager-component-v2 .container .optionsListingContainer .listItem > .MuiSvgIcon-root {\n margin-right: 1rem;\n}\n.assetmanager-component-v2 .container .optionsListingContainer .listItem.selected p.h8 {\n color: var(--secondary-brand-color, var(--teal, #0ABDAE));\n padding-right: 1rem;\n max-width: 100%;\n}\n.assetmanager-component-v2 .container .optionsListingContainer .listItem.selected .MuiSvgIcon-root span svg path {\n fill: var(--secondary-brand-color, var(--teal, #0ABDAE));\n}\n.assetmanager-component-v2 .container .optionsListingContainer .listItem .buttonContainer {\n margin-left: 1rem;\n visibility: hidden;\n}\n.assetmanager-component-v2 .container .optionsListingContainer .listItem .buttonContainer button:nth-child(2) {\n margin-left: 0.5rem;\n}\n.assetmanager-component-v2 .container .optionsListingContainer .listItem:hover .buttonContainer {\n visibility: visible;\n}\n.assetmanager-component-v2 > button:last-child {\n width: 100%;\n text-transform: uppercase;\n font-family: proxima-nova, Lucida Grande, Lucida Sans Unicode, Lucida Sans, Geneva, Verdana, sans-serif;\n height: 3rem;\n border-top: 1px solid var(--wild-sand, #dddddd) !important;\n outline: none;\n border-radius: 0;\n font-weight: 700;\n}";
@@ -11275,6 +11308,128 @@ function renderEmail(_a) {
11275
11308
  });
11276
11309
  }
11277
11310
 
11311
+ exports.EEventBreakdownDimension = void 0;
11312
+ (function (EEventBreakdownDimension) {
11313
+ EEventBreakdownDimension["deviceType"] = "device_type";
11314
+ EEventBreakdownDimension["browser"] = "browser";
11315
+ EEventBreakdownDimension["os"] = "os";
11316
+ EEventBreakdownDimension["source"] = "source";
11317
+ EEventBreakdownDimension["utmSource"] = "utm_source";
11318
+ EEventBreakdownDimension["utmMedium"] = "utm_medium";
11319
+ EEventBreakdownDimension["utmCampaign"] = "utm_campaign";
11320
+ EEventBreakdownDimension["entityType"] = "entity_type";
11321
+ EEventBreakdownDimension["elementId"] = "element_id";
11322
+ EEventBreakdownDimension["popupTrigger"] = "popup_trigger";
11323
+ EEventBreakdownDimension["pageUrl"] = "page_url";
11324
+ EEventBreakdownDimension["listId"] = "list_id";
11325
+ EEventBreakdownDimension["contactId"] = "contact_id";
11326
+ EEventBreakdownDimension["formId"] = "form_id";
11327
+ })(exports.EEventBreakdownDimension || (exports.EEventBreakdownDimension = {}));
11328
+ exports.EEventTimeseriesGranularity = void 0;
11329
+ (function (EEventTimeseriesGranularity) {
11330
+ EEventTimeseriesGranularity["hour"] = "hour";
11331
+ EEventTimeseriesGranularity["day"] = "day";
11332
+ EEventTimeseriesGranularity["week"] = "week";
11333
+ EEventTimeseriesGranularity["month"] = "month";
11334
+ })(exports.EEventTimeseriesGranularity || (exports.EEventTimeseriesGranularity = {}));
11335
+ exports.EEventSortField = void 0;
11336
+ (function (EEventSortField) {
11337
+ EEventSortField["occurredAt"] = "occurred_at";
11338
+ EEventSortField["eventType"] = "event_type";
11339
+ EEventSortField["entityId"] = "entity_id";
11340
+ EEventSortField["deviceType"] = "device_type";
11341
+ EEventSortField["source"] = "source";
11342
+ })(exports.EEventSortField || (exports.EEventSortField = {}));
11343
+
11344
+ var eventsBaseUrl = uiKitConfig.GATEWAY_PROXY + "/content/events";
11345
+ function buildEventQuery(options) {
11346
+ if (options === void 0) { options = {}; }
11347
+ var query = __assign({}, options);
11348
+ if (Array.isArray(query.eventType)) {
11349
+ query.eventType = query.eventType.join(",");
11350
+ }
11351
+ if (query.properties && typeof query.properties === "object") {
11352
+ query.properties = JSON.stringify(query.properties);
11353
+ }
11354
+ return camelCase(query);
11355
+ }
11356
+ function buildEventBody(body) {
11357
+ var payload = __assign({}, body);
11358
+ if (Array.isArray(payload.steps)) {
11359
+ payload.steps = payload.steps.map(function (step) {
11360
+ var funnelStep = step;
11361
+ return camelCase(funnelStep);
11362
+ });
11363
+ }
11364
+ return camelCase(payload);
11365
+ }
11366
+ function listEvents(_a) {
11367
+ var useImpersonationTree = _a.useImpersonationTree, options = __rest(_a, ["useImpersonationTree"]);
11368
+ return callApi({
11369
+ url: eventsBaseUrl,
11370
+ query: buildEventQuery(options),
11371
+ useImpersonationTree: useImpersonationTree,
11372
+ fetchOptions: {
11373
+ method: exports.EMethods.get,
11374
+ },
11375
+ });
11376
+ }
11377
+ function getEventSummary(_a) {
11378
+ var useImpersonationTree = _a.useImpersonationTree, options = __rest(_a, ["useImpersonationTree"]);
11379
+ return callApi({
11380
+ url: eventsBaseUrl + "/summary",
11381
+ query: buildEventQuery(options),
11382
+ useImpersonationTree: useImpersonationTree,
11383
+ fetchOptions: {
11384
+ method: exports.EMethods.get,
11385
+ },
11386
+ });
11387
+ }
11388
+ function getEventTimeseries(_a) {
11389
+ var useImpersonationTree = _a.useImpersonationTree, options = __rest(_a, ["useImpersonationTree"]);
11390
+ return callApi({
11391
+ url: eventsBaseUrl + "/timeseries",
11392
+ query: buildEventQuery(options),
11393
+ useImpersonationTree: useImpersonationTree,
11394
+ fetchOptions: {
11395
+ method: exports.EMethods.get,
11396
+ },
11397
+ });
11398
+ }
11399
+ function getEventBreakdown(_a) {
11400
+ var useImpersonationTree = _a.useImpersonationTree, options = __rest(_a, ["useImpersonationTree"]);
11401
+ return callApi({
11402
+ url: eventsBaseUrl + "/breakdown",
11403
+ query: buildEventQuery(options),
11404
+ useImpersonationTree: useImpersonationTree,
11405
+ fetchOptions: {
11406
+ method: exports.EMethods.get,
11407
+ },
11408
+ });
11409
+ }
11410
+ function getEventPropertyKeys(_a) {
11411
+ var useImpersonationTree = _a.useImpersonationTree, options = __rest(_a, ["useImpersonationTree"]);
11412
+ return callApi({
11413
+ url: eventsBaseUrl + "/properties",
11414
+ query: buildEventQuery(options),
11415
+ useImpersonationTree: useImpersonationTree,
11416
+ fetchOptions: {
11417
+ method: exports.EMethods.get,
11418
+ },
11419
+ });
11420
+ }
11421
+ function getEventFunnel(_a) {
11422
+ var useImpersonationTree = _a.useImpersonationTree, options = __rest(_a, ["useImpersonationTree"]);
11423
+ return callApi({
11424
+ url: eventsBaseUrl + "/funnel",
11425
+ useImpersonationTree: useImpersonationTree,
11426
+ fetchOptions: {
11427
+ method: exports.EMethods.post,
11428
+ body: buildEventBody(options),
11429
+ },
11430
+ });
11431
+ }
11432
+
11278
11433
  function createForm(_a) {
11279
11434
  var form = _a.form, type = _a.type;
11280
11435
  return callApi({
@@ -12409,6 +12564,65 @@ var Email = /** @class */ (function () {
12409
12564
  return Email;
12410
12565
  }());
12411
12566
 
12567
+ exports.ETrackedEventType = void 0;
12568
+ (function (ETrackedEventType) {
12569
+ ETrackedEventType["pageView"] = "page_view";
12570
+ ETrackedEventType["scrollDepth"] = "scroll_depth";
12571
+ ETrackedEventType["pageConversion"] = "page_conversion";
12572
+ ETrackedEventType["pageExit"] = "page_exit";
12573
+ ETrackedEventType["popupView"] = "popup_view";
12574
+ ETrackedEventType["popupDismiss"] = "popup_dismiss";
12575
+ ETrackedEventType["popupConversion"] = "popup_conversion";
12576
+ ETrackedEventType["click"] = "click";
12577
+ ETrackedEventType["formSubmit"] = "form_submit";
12578
+ })(exports.ETrackedEventType || (exports.ETrackedEventType = {}));
12579
+ exports.ETrackedEntityType = void 0;
12580
+ (function (ETrackedEntityType) {
12581
+ ETrackedEntityType["page"] = "page";
12582
+ ETrackedEntityType["popup"] = "popup";
12583
+ })(exports.ETrackedEntityType || (exports.ETrackedEntityType = {}));
12584
+ exports.ETrackedDeviceType = void 0;
12585
+ (function (ETrackedDeviceType) {
12586
+ ETrackedDeviceType["mobile"] = "mobile";
12587
+ ETrackedDeviceType["desktop"] = "desktop";
12588
+ ETrackedDeviceType["tablet"] = "tablet";
12589
+ })(exports.ETrackedDeviceType || (exports.ETrackedDeviceType = {}));
12590
+
12591
+ var EventModel = /** @class */ (function () {
12592
+ function EventModel(params) {
12593
+ var _a;
12594
+ this.eventId = params.eventId;
12595
+ this.eventType = params.eventType;
12596
+ this.entityType = params.entityType;
12597
+ this.entityId = params.entityId;
12598
+ this.sessionId = params.sessionId;
12599
+ this.visitorId = params.visitorId;
12600
+ this.occurredAt = params.occurredAt;
12601
+ this.deviceType = params.deviceType;
12602
+ this.browser = params.browser;
12603
+ this.os = params.os;
12604
+ this.source = params.source;
12605
+ this.utmSource = params.utmSource;
12606
+ this.utmMedium = params.utmMedium;
12607
+ this.utmCampaign = params.utmCampaign;
12608
+ this.referrer = params.referrer;
12609
+ this.properties = (_a = params.properties) !== null && _a !== void 0 ? _a : {};
12610
+ this.scrollDepth = params.scrollDepth;
12611
+ this.elementId = params.elementId;
12612
+ this.popupTrigger = params.popupTrigger;
12613
+ this.pageUrl = params.pageUrl;
12614
+ this.email = params.email;
12615
+ this.listId = params.listId;
12616
+ this.contactId = params.contactId;
12617
+ this.formId = params.formId;
12618
+ this.ip = params.ip;
12619
+ }
12620
+ EventModel.prototype.toJson = function () {
12621
+ return modelToJson(this);
12622
+ };
12623
+ return EventModel;
12624
+ }());
12625
+
12412
12626
  var CommonFormModel = /** @class */ (function () {
12413
12627
  function CommonFormModel(_a) {
12414
12628
  var id = _a.id, name = _a.name, list_id = _a.list_id, double_opt_in = _a.double_opt_in;
@@ -19950,6 +20164,90 @@ var EmailAPIFactory = /** @class */ (function () {
19950
20164
  return EmailAPIFactory;
19951
20165
  }());
19952
20166
 
20167
+ function mapEventRow(row) {
20168
+ var _a;
20169
+ return new EventModel({
20170
+ eventId: row.event_id,
20171
+ eventType: row.event_type,
20172
+ entityType: row.entity_type,
20173
+ entityId: row.entity_id,
20174
+ sessionId: row.session_id,
20175
+ visitorId: row.visitor_id,
20176
+ occurredAt: row.occurred_at,
20177
+ deviceType: row.device_type,
20178
+ browser: row.browser,
20179
+ os: row.os,
20180
+ source: row.source,
20181
+ utmSource: row.utm_source,
20182
+ utmMedium: row.utm_medium,
20183
+ utmCampaign: row.utm_campaign,
20184
+ referrer: row.referrer,
20185
+ properties: (_a = row.properties) !== null && _a !== void 0 ? _a : {},
20186
+ scrollDepth: row.scroll_depth,
20187
+ elementId: row.element_id,
20188
+ popupTrigger: row.popup_trigger,
20189
+ pageUrl: row.page_url,
20190
+ email: row.email,
20191
+ listId: row.list_id,
20192
+ contactId: row.contact_id,
20193
+ formId: row.form_id,
20194
+ ip: row.ip,
20195
+ });
20196
+ }
20197
+ var EventTrackingFactory = /** @class */ (function () {
20198
+ function EventTrackingFactory() {
20199
+ }
20200
+ EventTrackingFactory.list = function (_a) {
20201
+ return __awaiter(this, void 0, void 0, function () {
20202
+ var options = __rest(_a, []);
20203
+ return __generator(this, function (_b) {
20204
+ return [2 /*return*/, listEvents(options).then(function (response) { return (__assign(__assign({}, response), { items: response.items.map(mapEventRow) })); })];
20205
+ });
20206
+ });
20207
+ };
20208
+ EventTrackingFactory.getSummary = function (_a) {
20209
+ return __awaiter(this, void 0, void 0, function () {
20210
+ var options = __rest(_a, []);
20211
+ return __generator(this, function (_b) {
20212
+ return [2 /*return*/, getEventSummary(options)];
20213
+ });
20214
+ });
20215
+ };
20216
+ EventTrackingFactory.getTimeseries = function (_a) {
20217
+ return __awaiter(this, void 0, void 0, function () {
20218
+ var options = __rest(_a, []);
20219
+ return __generator(this, function (_b) {
20220
+ return [2 /*return*/, getEventTimeseries(options)];
20221
+ });
20222
+ });
20223
+ };
20224
+ EventTrackingFactory.getBreakdown = function (_a) {
20225
+ return __awaiter(this, void 0, void 0, function () {
20226
+ var options = __rest(_a, []);
20227
+ return __generator(this, function (_b) {
20228
+ return [2 /*return*/, getEventBreakdown(options)];
20229
+ });
20230
+ });
20231
+ };
20232
+ EventTrackingFactory.getPropertyKeys = function (_a) {
20233
+ return __awaiter(this, void 0, void 0, function () {
20234
+ var options = __rest(_a, []);
20235
+ return __generator(this, function (_b) {
20236
+ return [2 /*return*/, getEventPropertyKeys(options)];
20237
+ });
20238
+ });
20239
+ };
20240
+ EventTrackingFactory.getFunnel = function (_a) {
20241
+ return __awaiter(this, void 0, void 0, function () {
20242
+ var options = __rest(_a, []);
20243
+ return __generator(this, function (_b) {
20244
+ return [2 /*return*/, getEventFunnel(options)];
20245
+ });
20246
+ });
20247
+ };
20248
+ return EventTrackingFactory;
20249
+ }());
20250
+
19953
20251
  var FormsFactory = /** @class */ (function () {
19954
20252
  function FormsFactory() {
19955
20253
  }
@@ -20626,6 +20924,8 @@ exports.Email = Email;
20626
20924
  exports.EmailAPIFactory = EmailAPIFactory;
20627
20925
  exports.EmptyContent = EmptyContent;
20628
20926
  exports.EnhancedFormModel = EnhancedFormModel;
20927
+ exports.EventModel = EventModel;
20928
+ exports.EventTrackingFactory = EventTrackingFactory;
20629
20929
  exports.FileUpload = FileUpload;
20630
20930
  exports.FilterBar = FilterBar;
20631
20931
  exports.FormModel = FormModel;
@@ -20804,6 +21104,11 @@ exports.getEmail = getEmail;
20804
21104
  exports.getEmailActivitySummary = getEmailActivitySummary;
20805
21105
  exports.getEmailReport = getEmailReport;
20806
21106
  exports.getEndOfDate = getEndOfDate;
21107
+ exports.getEventBreakdown = getEventBreakdown;
21108
+ exports.getEventFunnel = getEventFunnel;
21109
+ exports.getEventPropertyKeys = getEventPropertyKeys;
21110
+ exports.getEventSummary = getEventSummary;
21111
+ exports.getEventTimeseries = getEventTimeseries;
20807
21112
  exports.getForm = getForm;
20808
21113
  exports.getHashQueryWithoutHistory = getHashQueryWithoutHistory;
20809
21114
  exports.getIconSize = getIconSize;
@@ -20847,6 +21152,7 @@ exports.listContacts = listContacts;
20847
21152
  exports.listCustomDomains = listCustomDomains;
20848
21153
  exports.listDkimService = listDkimService;
20849
21154
  exports.listEmailLogs = listEmailLogs;
21155
+ exports.listEvents = listEvents;
20850
21156
  exports.listForms = listForms;
20851
21157
  exports.listList = listList;
20852
21158
  exports.listListAttributes = listListAttributes;
@@ -0,0 +1,31 @@
1
+ import { TEventModel } from "./types";
2
+ export declare class EventModel {
3
+ readonly eventId: string;
4
+ readonly eventType: TEventModel["eventType"];
5
+ readonly entityType: TEventModel["entityType"];
6
+ readonly entityId: string;
7
+ readonly sessionId?: string | null;
8
+ readonly visitorId?: string | null;
9
+ readonly occurredAt: string;
10
+ readonly deviceType?: TEventModel["deviceType"];
11
+ readonly browser?: string | null;
12
+ readonly os?: string | null;
13
+ readonly source?: string | null;
14
+ readonly utmSource?: string | null;
15
+ readonly utmMedium?: string | null;
16
+ readonly utmCampaign?: string | null;
17
+ readonly referrer?: string | null;
18
+ readonly properties: Record<string, unknown>;
19
+ readonly scrollDepth?: number | null;
20
+ readonly elementId?: string | null;
21
+ readonly popupTrigger?: string | null;
22
+ readonly pageUrl?: string | null;
23
+ readonly email?: string | null;
24
+ readonly listId?: string | null;
25
+ readonly contactId?: string | null;
26
+ readonly formId?: string | null;
27
+ readonly ip?: string | null;
28
+ constructor(params: TEventModel);
29
+ toJson(): any;
30
+ }
31
+ export * from "./types";
@@ -0,0 +1,47 @@
1
+ export declare enum ETrackedEventType {
2
+ pageView = "page_view",
3
+ scrollDepth = "scroll_depth",
4
+ pageConversion = "page_conversion",
5
+ pageExit = "page_exit",
6
+ popupView = "popup_view",
7
+ popupDismiss = "popup_dismiss",
8
+ popupConversion = "popup_conversion",
9
+ click = "click",
10
+ formSubmit = "form_submit"
11
+ }
12
+ export declare enum ETrackedEntityType {
13
+ page = "page",
14
+ popup = "popup"
15
+ }
16
+ export declare enum ETrackedDeviceType {
17
+ mobile = "mobile",
18
+ desktop = "desktop",
19
+ tablet = "tablet"
20
+ }
21
+ export type TEventModel = {
22
+ eventId: string;
23
+ eventType: ETrackedEventType | string;
24
+ entityType: ETrackedEntityType | string;
25
+ entityId: string;
26
+ sessionId?: string | null;
27
+ visitorId?: string | null;
28
+ occurredAt: string;
29
+ deviceType?: ETrackedDeviceType | string | null;
30
+ browser?: string | null;
31
+ os?: string | null;
32
+ source?: string | null;
33
+ utmSource?: string | null;
34
+ utmMedium?: string | null;
35
+ utmCampaign?: string | null;
36
+ referrer?: string | null;
37
+ properties: Record<string, unknown>;
38
+ scrollDepth?: number | null;
39
+ elementId?: string | null;
40
+ popupTrigger?: string | null;
41
+ pageUrl?: string | null;
42
+ email?: string | null;
43
+ listId?: string | null;
44
+ contactId?: string | null;
45
+ formId?: string | null;
46
+ ip?: string | null;
47
+ };
@@ -5,6 +5,7 @@ export * from "./contact";
5
5
  export * from "./customDomains";
6
6
  export * from "./customer";
7
7
  export * from "./emailAPI";
8
+ export * from "./eventTracking";
8
9
  export * from "./form";
9
10
  export * from "./list";
10
11
  export * from "./pages";
@@ -0,0 +1,8 @@
1
+ import { TGetEventBreakdown, TGetEventFunnel, TGetEventPropertyKeys, TGetEventSummary, TGetEventTimeseries, TListEvents } from "./types";
2
+ export declare function listEvents({ useImpersonationTree, ...options }: TListEvents): Promise<any>;
3
+ export declare function getEventSummary({ useImpersonationTree, ...options }: TGetEventSummary): Promise<any>;
4
+ export declare function getEventTimeseries({ useImpersonationTree, ...options }: TGetEventTimeseries): Promise<any>;
5
+ export declare function getEventBreakdown({ useImpersonationTree, ...options }: TGetEventBreakdown): Promise<any>;
6
+ export declare function getEventPropertyKeys({ useImpersonationTree, ...options }: TGetEventPropertyKeys): Promise<any>;
7
+ export declare function getEventFunnel({ useImpersonationTree, ...options }: TGetEventFunnel): Promise<any>;
8
+ export * from "./types";