@levi-gemcommerce/analytics 1.0.0-dev.39 → 1.0.0-dev.40

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.
Files changed (31) hide show
  1. package/dist/esm/components/CardPathAnalysis/helpers/pathAnalysis.d.ts +1 -1
  2. package/dist/esm/gemxql.js +1 -1
  3. package/dist/esm/gemxql.mjs +1 -1
  4. package/dist/esm/index.js +337 -104
  5. package/dist/esm/index.mjs +337 -104
  6. package/dist/esm/modules/analytics/constants/index.d.ts +15 -0
  7. package/dist/esm/modules/analytics/index.d.ts +2 -13
  8. package/dist/esm/modules/analytics/metric.d.ts +26 -0
  9. package/dist/esm/modules/analytics/types/index.d.ts +41 -0
  10. package/dist/esm/modules/analytics/types.d.ts +18 -0
  11. package/dist/esm/modules/analytics/utils/formatMetric.d.ts +8 -0
  12. package/dist/esm/modules/analytics/utils/getPAMetricValue.d.ts +3 -0
  13. package/dist/esm/modules/analytics/utils/index.d.ts +3 -0
  14. package/dist/esm/modules/analytics/utils/metric.d.ts +26 -0
  15. package/dist/esm/modules/page-analytic/index.d.ts +6 -4
  16. package/dist/esm/modules/page-analytic/modules/analytic/index.d.ts +3 -5
  17. package/dist/esm/providers/ConvertMoneyProvider.d.ts +1 -1
  18. package/dist/esm/types/metric.d.ts +3 -0
  19. package/dist/umd/esm/components/CardPathAnalysis/helpers/pathAnalysis.d.ts +1 -1
  20. package/dist/umd/esm/modules/analytics/constants/index.d.ts +15 -0
  21. package/dist/umd/esm/modules/analytics/index.d.ts +2 -13
  22. package/dist/umd/esm/modules/analytics/types/index.d.ts +41 -0
  23. package/dist/umd/esm/modules/analytics/utils/formatMetric.d.ts +8 -0
  24. package/dist/umd/esm/modules/analytics/utils/getPAMetricValue.d.ts +3 -0
  25. package/dist/umd/esm/modules/analytics/utils/index.d.ts +3 -0
  26. package/dist/umd/esm/modules/analytics/utils/metric.d.ts +26 -0
  27. package/dist/umd/esm/providers/ConvertMoneyProvider.d.ts +1 -1
  28. package/dist/umd/esm/types/metric.d.ts +3 -0
  29. package/dist/umd/gemxql.js +1 -1
  30. package/dist/umd/index.js +1 -1
  31. package/package.json +1 -1
@@ -1,12 +1,14 @@
1
+ import type { IFunctionGetMetric } from '../analytics/types';
1
2
  import { IPAMetricKey } from '../analytics/types';
2
3
  export declare const SHOPIFY_PAGE_TYPE_KEY = "shopify_page_type";
3
4
  export declare const METRICS_COLUMNS: Record<IPAMetricKey, {
4
5
  label: string;
5
6
  }>;
6
- export declare const PAGE_ANALYTIC_MAPPING: Record<IPAMetricKey, {
7
+ interface IPageAnalyticMappingItem {
7
8
  heading: {
8
9
  title: string;
9
- [key: string]: unknown;
10
10
  };
11
- [key: string]: unknown;
12
- }>;
11
+ getMetricValue: IFunctionGetMetric;
12
+ }
13
+ export declare const PAGE_ANALYTIC_MAPPING: Record<IPAMetricKey, IPageAnalyticMappingItem>;
14
+ export {};
@@ -1,5 +1,3 @@
1
- import type { IPAMetricKey } from '../../../analytics/types';
2
- export declare const getPAMetricValueV2: (_metric?: unknown, _key?: IPAMetricKey) => {
3
- value: number | undefined;
4
- formatter: string;
5
- };
1
+ import type { IBasePageAnalyticMetric } from '../../../../types/metric';
2
+ import type { IDetectMetricResult, IPAMetricKey } from '../../../analytics/types';
3
+ export declare const getPAMetricValueV2: (metric?: IBasePageAnalyticMetric, key?: IPAMetricKey) => IDetectMetricResult;
@@ -1,5 +1,5 @@
1
1
  import type { ReactNode } from 'react';
2
- import type { IGetTextPrice } from '@/core/gemxql/helpers/formatAnalyticData';
2
+ import type { IGetTextPrice } from '@/core/gemxql';
3
3
  interface IConvertMoneyContext {
4
4
  getTextPrice: IGetTextPrice;
5
5
  }
@@ -70,4 +70,7 @@ export interface IBasePageAnalyticMetric {
70
70
  totalClickedHasHref?: number | null;
71
71
  totalSessionsWithoutAction?: number | null;
72
72
  totalContinuationSession?: number | null;
73
+ totalRevenue?: number | null;
74
+ totalTimeOnPage?: number | null;
75
+ totalPageViewedHaveTimeOnPage?: number | null;
73
76
  }
@@ -1,4 +1,4 @@
1
- import type { IGetTextPrice } from '@/modules/shopify';
1
+ import type { IGetTextPrice } from '@/core/gemxql';
2
2
  import type { IBasePathAnalyticPageWithChild, IBasePathAnalyticPageWithParent } from '../types';
3
3
  export declare const processPathAnalytics: (analyticsData: IBasePathAnalyticPageWithParent[] | undefined, locationPath: string) => IBasePathAnalyticPageWithChild | undefined;
4
4
  export declare const processPathAnalyticsTree: (analyticsData: IBasePathAnalyticPageWithParent[] | undefined) => IBasePathAnalyticPageWithChild[] | undefined;
@@ -0,0 +1,15 @@
1
+ import type { IFunctionGetMetric } from '../types';
2
+ import { IPAMetricKey } from '../types';
3
+ interface IPageAnalyticMappingItem {
4
+ heading: {
5
+ title: string;
6
+ };
7
+ getMetricValue: IFunctionGetMetric;
8
+ }
9
+ export declare const PA_METRIC_TOOLTIP: Record<IPAMetricKey, unknown>;
10
+ export declare const SHOPIFY_PAGE_TYPE_KEY = "shopify_page_type";
11
+ export declare const METRICS_COLUMNS: Record<IPAMetricKey, {
12
+ label: string;
13
+ }>;
14
+ export declare const PAGE_ANALYTIC_MAPPING: Record<IPAMetricKey, IPageAnalyticMappingItem>;
15
+ export {};
@@ -1,14 +1,3 @@
1
- import type { IGetTextPrice } from '../shopify';
2
- import type { IPAMetricKey } from './types';
1
+ export * from './constants';
3
2
  export * from './types';
4
- export type IFormatMetricParams = {
5
- value: number | string | undefined;
6
- formatter: string;
7
- getTextPrice: IGetTextPrice;
8
- };
9
- export declare const formatMetricByFormatter: (_params: IFormatMetricParams) => string;
10
- export declare const PA_METRIC_TOOLTIP: Record<IPAMetricKey, unknown>;
11
- export declare const useMetricsTimeFilter: () => {
12
- dateTimePicked: unknown;
13
- compareDateTimePicked: unknown;
14
- };
3
+ export * from './utils';
@@ -0,0 +1,41 @@
1
+ import type { IBasePageAnalyticMetric } from '@/types/metric';
2
+ export declare enum IPAMetricKey {
3
+ PAGE_SESSIONS = "PAGE_SESSIONS",
4
+ PAGE_BR = "PAGE_BOUNCE_RATE",
5
+ PAGE_CTR = "PAGE_CLICK_THROUGH_RATE",
6
+ PAGE_AVG_TIME = "PAGE_AVG_TIME",
7
+ PAGE_VIEWS = "PAGE_VIEWS",
8
+ PAGE_RPV = "PAGE_REVENUE_PER_VISITOR",
9
+ PAGE_REVENUE = "PAGE_REVENUE",
10
+ PAGE_NEW_RETURNING_CUSTOMER = "PAGE_NEW_RETURNING_CUSTOMER",
11
+ PAGE_SESSIONS_BY_VISITOR = "PAGE_SESSIONS_BY_VISITOR",
12
+ PAGE_SESSIONS_BY_DEVICE = "PAGE_SESSIONS_BY_DEVICE",
13
+ PAGE_SESSIONS_BY_TRAFFIC = "PAGE_SESSIONS_BY_TRAFFIC",
14
+ PAGE_PATH_ANALYSIS = "PAGE_PATH_ANALYSIS",
15
+ PAGE_CART_ADDITION = "PAGE_SESSION_WITH_CART_ADDITION",
16
+ PAGE_ADDED_TO_CART = "PAGE_ADDED_TO_CART",
17
+ PAGE_ADD_TO_CART_RATE = "ADD_TO_CART_RATE",
18
+ PAGE_REACHED_CHECKOUT = "PAGE_REACHED_CHECKOUT",
19
+ PAGE_COMPLETE_CHECKOUT = "PAGE_COMPLETE_CHECKOUT",
20
+ PAGE_ORDERS = "PAGE_ORDERS",
21
+ PAGE_CR = "PAGE_CONVERSION_RATE",
22
+ PAGE_AOV = "PAGE_AVERAGE_ORDER_VALUE",
23
+ PAGE_VISITORS = "PAGE_VISITORS"
24
+ }
25
+ export declare enum IMetricFormatter {
26
+ PERCENTAGE_STRING = "PERCENTAGE_STRING",
27
+ CURRENCY = "CURRENCY",
28
+ DURATION = "DURATION",
29
+ DURATION_MS = "DURATION_MS",
30
+ MILLISECONDS = "MILLISECONDS",
31
+ NORMAL = "NORMAL",
32
+ NUMBER_COMMAS = "NUMBER_COMMAS",
33
+ NUMBER_COMMAS_LEAN = "NUMBER_COMMAS_LEAN"
34
+ }
35
+ export interface IDetectMetricResult<K = number | undefined> {
36
+ formatter: IMetricFormatter;
37
+ value: K;
38
+ }
39
+ export type IFunctionGetMetric<T = IBasePageAnalyticMetric> = (props: {
40
+ metric?: T;
41
+ }) => IDetectMetricResult;
@@ -0,0 +1,8 @@
1
+ import type { IGetTextPrice } from '@/core/gemxql';
2
+ export type IFormatMetricParams = {
3
+ value: number | string | undefined;
4
+ formatter: string;
5
+ getTextPrice: IGetTextPrice;
6
+ compact?: boolean;
7
+ };
8
+ export declare const formatMetricByFormatter: ({ value, formatter, getTextPrice, compact }: IFormatMetricParams) => string;
@@ -0,0 +1,3 @@
1
+ import type { IBasePageAnalyticMetric } from '@/types/metric';
2
+ import type { IDetectMetricResult, IPAMetricKey } from '../types';
3
+ export declare const getPAMetricValueV2: (metric?: IBasePageAnalyticMetric, key?: IPAMetricKey) => IDetectMetricResult;
@@ -0,0 +1,3 @@
1
+ export * from './formatMetric';
2
+ export * from './getPAMetricValue';
3
+ export * from './metric';
@@ -0,0 +1,26 @@
1
+ import type { IDetectMetricResult, IFunctionGetMetric } from '../types';
2
+ import { IMetricFormatter } from '../types';
3
+ export declare const detectDataV2By: <T>({ data, formatter, extractValue, }: {
4
+ data: T | undefined;
5
+ formatter: IMetricFormatter;
6
+ extractValue: (value: T | undefined) => number | undefined;
7
+ }) => IDetectMetricResult;
8
+ export declare const getTotalSessionMetric: IFunctionGetMetric;
9
+ export declare const getTotalVisitorMetric: IFunctionGetMetric;
10
+ export declare const getTotalOrderMetric: IFunctionGetMetric;
11
+ export declare const getTotalPageViewMetric: IFunctionGetMetric;
12
+ export declare const getTotalRevenueMetric: IFunctionGetMetric;
13
+ export declare const getBounceRateMetric: IFunctionGetMetric;
14
+ export declare const getLinkCtrMetric: IFunctionGetMetric;
15
+ export declare const getConversionRateMetric: IFunctionGetMetric;
16
+ export declare const getAddToCartRateMetric: IFunctionGetMetric;
17
+ export declare const getAverageTimeOnPageMetric: IFunctionGetMetric;
18
+ export declare const getRevenuePerVisitorMetric: IFunctionGetMetric;
19
+ export declare const getAverageOrderValueMetric: IFunctionGetMetric;
20
+ export declare const getTotalATCMetric: IFunctionGetMetric;
21
+ export declare const getTotalSessionWithCartAdditionMetric: IFunctionGetMetric;
22
+ export declare const getTotalSessionReachedCheckoutMetric: IFunctionGetMetric;
23
+ export declare const getTotalSessionCompletedCheckoutMetric: IFunctionGetMetric;
24
+ export declare const getPathAnalysisMetric: IFunctionGetMetric;
25
+ export declare const getTotalSessionByDeviceMetric: IFunctionGetMetric;
26
+ export declare const getNewReturningCustomerMetric: IFunctionGetMetric;
@@ -1,5 +1,5 @@
1
1
  import type { ReactNode } from 'react';
2
- import type { IGetTextPrice } from '@/core/gemxql/helpers/formatAnalyticData';
2
+ import type { IGetTextPrice } from '@/core/gemxql';
3
3
  interface IConvertMoneyContext {
4
4
  getTextPrice: IGetTextPrice;
5
5
  }
@@ -70,4 +70,7 @@ export interface IBasePageAnalyticMetric {
70
70
  totalClickedHasHref?: number | null;
71
71
  totalSessionsWithoutAction?: number | null;
72
72
  totalContinuationSession?: number | null;
73
+ totalRevenue?: number | null;
74
+ totalTimeOnPage?: number | null;
75
+ totalPageViewedHaveTimeOnPage?: number | null;
73
76
  }
@@ -1 +1 @@
1
- !function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("dayjs"),require("dayjs/plugin/quarterOfYear.js"),require("dayjs/plugin/timezone.js"),require("dayjs/plugin/utc.js"),require("@tanstack/react-query"),require("react/jsx-runtime"),require("zustand"),require("react")):"function"==typeof define&&define.amd?define(["exports","dayjs","dayjs/plugin/quarterOfYear.js","dayjs/plugin/timezone.js","dayjs/plugin/utc.js","@tanstack/react-query","react/jsx-runtime","zustand","react"],r):r((e="undefined"!=typeof globalThis?globalThis:e||self).GemAnalytics={},e.dayjs,e.quarterOfYear,e.timezone,e.utc,e.reactQuery,e.jsxRuntime,e.zustand,e.React)}(this,function(e,r,t,a,i,n,s,o,l){"use strict";const E="None",c="___totals",u="comparison___",m="___previous_period",d=`${m}${c}`,T="is",A="is_one_of";var p,O,R,_,I,f,N,S,C,P,D,y,F;e.EAnalyticDataType=void 0,(p=e.EAnalyticDataType||(e.EAnalyticDataType={})).DATE="DATE",p.ARRAY="ARRAY",p.OBJECT="OBJECT",p.STRING="STRING",p.INTEGER="INTEGER",p.CURRENCY="CURRENCY",p.PERCENT="PERCENT",p.DURATION="DURATION",p.MONTH="MONTH_TIMESTAMP",p.QUARTER="QUARTER_TIMESTAMP",p.DAY="DAY_TIMESTAMP",p.WEEK="WEEK_TIMESTAMP",p.YEAR="YEAR_TIMESTAMP",p.HOUR="HOUR_TIMESTAMP",e.EAnalyticColumnKey=void 0,(O=e.EAnalyticColumnKey||(e.EAnalyticColumnKey={})).CAMPAIGNS="experiments",O.VISITOR_ITEMS="visitor_items",O.DEVICE_ITEMS="device_items",O.TRAFFIC_SOURCE_ITEMS="traffic_source_items",e.EAnalyticSource=void 0,(R=e.EAnalyticSource||(e.EAnalyticSource={})).SESSIONS="sessions",R.SALES="sales",e.EComparisonOperator=void 0,(_=e.EComparisonOperator||(e.EComparisonOperator={})).EQ="=",_.IN="IN",_.LIKE="LIKE",e.EGroupOperator=void 0,(I=e.EGroupOperator||(e.EGroupOperator={})).OR="OR",I.AND="AND",e.EFilterField=void 0,(f=e.EFilterField||(e.EFilterField={})).DEVICE="device",f.DEVICES="devices",f.VISITOR="visitor_type",f.VISITORS="visitor_types",f.TRAFFIC_SOURCE="traffic_source",f.TRAFFIC_SOURCES="traffic_sources",f.VERSION="version",f.VERSIONS="versions",f.SINGLE_PAGE="page_path",f.LIST_PAGE="page_paths",f.GROUP_CAMPAIGN_ITEM="group_campaign_item",f.GROUP_CAMPAIGN_ITEMS="group_campaign_items",f.SINGLE_CAMPAIGN="experiment_id",f.GROUP_CAMPAIGN="experiment_group_id",f.CAMPAIGN_VERSION_ID="version_id",f.GROUP_CAMPAIGN_VERSION_ID="group_version_id",e.EOperatorField=void 0,(N=e.EOperatorField||(e.EOperatorField={})).DEVICE_OPERATOR="deviceOperator",N.VISITOR_OPERATOR="visitorOperator",N.TRAFFIC_SOURCE_OPERATOR="trafficSourceOperator",N.VERSION_OPERATOR="versionOperator",N.PAGE_OPERATOR="pageOperator",N.CAMPAIGN_ITEM_OPERATOR="campaignItemOperator",e.EGroupWithClause=void 0,(S=e.EGroupWithClause||(e.EGroupWithClause={})).NONE="",S.TOTALS="TOTALS",S.ALL="WITH GROUP_TOTALS, TOTALS",e.EOrderDirectionType=void 0,(C=e.EOrderDirectionType||(e.EOrderDirectionType={})).ASC="ASC",C.DESC="DESC",e.EPageMetric=void 0,(P=e.EPageMetric||(e.EPageMetric={})).PAGE_ITEMS="page_items",P.PAGE_PATHS="page_paths",e.EPageDimension=void 0,(e.EPageDimension||(e.EPageDimension={})).PAGE_PATH="page_path",e.EPageField=void 0,(D=e.EPageField||(e.EPageField={})).SHOPIFY_PAGE_ID="shopify_page_id",D.LOCATION_PATH="location_path",D.PAGE_TYPE="page_type",D.PAGE_TITLE="page_title",D.PAGE_PATH="page_path",D.TEMPLATE_SUFFIX="template_suffix",e.ERowReaderMode=void 0,(y=e.ERowReaderMode||(e.ERowReaderMode={})).DEFAULT="DEFAULT",y.COMPARISON="COMPARISON",y.TOTALS="TOTALS",y.COMPARISON_TOTALS="COMPARISON_TOTALS",e.ETimeDimension=void 0,(F=e.ETimeDimension||(e.ETimeDimension={})).HOUR="hour",F.DAY="day",F.WEEK="week",F.MONTH="month",F.QUARTER="quarter",F.YEAR="year";const g={[e.ERowReaderMode.DEFAULT]:{prefix:"",suffix:""},[e.ERowReaderMode.COMPARISON]:{prefix:u,suffix:m},[e.ERowReaderMode.TOTALS]:{prefix:"",suffix:c},[e.ERowReaderMode.COMPARISON_TOTALS]:{prefix:u,suffix:d}},h="YYYY-MM-DDTHH:mm:ss",M=["MODE","FROM","SHOW","GROUP BY","TIMESERIES","SINCE","DURING","TIMEZONE","WHERE","ORDER BY","LIMIT","OFFSET"],L=M.join("|"),G=1e3,x=e.EGroupOperator.OR,v=(e,r=x)=>e.length?1===e.length?e[0]??"":`(${e.join(` ${r} `)})`:"",U=r=>{switch(r.operator){case e.EComparisonOperator.EQ:return(({fields:e,value:r,groupOperator:t})=>e.length?v(e.map(e=>`${e} = ${r}`),t):"")(r);case e.EComparisonOperator.IN:return(({fields:e,values:r,groupOperator:t})=>e.length&&r.length?v(e.map(e=>`${e} IN (${r.join(", ")})`),t):"")(r);case e.EComparisonOperator.LIKE:return(({fields:e,value:r,groupOperator:t})=>{const a=r.trim();return a&&e.length?v(e.map(e=>`${e} LIKE '%${a}%'`),t):""})(r)}},Y=e=>e?.length?e.map(U).filter(Boolean):[],j=[{operator:e.EOperatorField.DEVICE_OPERATOR,singleField:e.EFilterField.DEVICE,multiField:e.EFilterField.DEVICES,fieldName:e.EFilterField.DEVICE},{operator:e.EOperatorField.VISITOR_OPERATOR,singleField:e.EFilterField.VISITOR,multiField:e.EFilterField.VISITORS,fieldName:e.EFilterField.VISITOR},{operator:e.EOperatorField.TRAFFIC_SOURCE_OPERATOR,singleField:e.EFilterField.TRAFFIC_SOURCE,multiField:e.EFilterField.TRAFFIC_SOURCES,fieldName:e.EFilterField.TRAFFIC_SOURCE},{operator:e.EOperatorField.VERSION_OPERATOR,singleField:e.EFilterField.VERSION,multiField:e.EFilterField.VERSIONS,fieldName:e.EFilterField.VERSION},{operator:e.EOperatorField.PAGE_OPERATOR,singleField:e.EFilterField.SINGLE_PAGE,multiField:e.EFilterField.LIST_PAGE,fieldName:e.EFilterField.SINGLE_PAGE},{operator:e.EOperatorField.CAMPAIGN_ITEM_OPERATOR,singleField:e.EFilterField.GROUP_CAMPAIGN_ITEM,multiField:e.EFilterField.GROUP_CAMPAIGN_ITEMS,condition:e.EFilterField.GROUP_CAMPAIGN,fieldName:e.EFilterField.SINGLE_CAMPAIGN},{operatorVal:T,singleField:e.EFilterField.SINGLE_CAMPAIGN,multiField:e.EFilterField.GROUP_CAMPAIGN}],$=(e,r)=>{const t=[],a=Object.keys(e).length>0,i=!!r&&Object.keys(r).length>0;if(!a&&!i)return t;const n=(e=>e?Object.fromEntries(Object.entries(e).filter(([,e])=>void 0!==e).map(([e,r])=>[e,Array.isArray(r)?`${e} IN (${r.join(", ")})`:`${e} = ${r}`])):{})(r);return j.forEach(({operator:r,operatorVal:a,singleField:i,multiField:s,condition:o,fieldName:l})=>{if(n[i])return void t.push(n[i]);const E=r?e[r]:a;let c=e[i];const u=e[s],m=o&&e[o];if(o&&!m)return;const d=l??(c?i:s);a&&!c&&(c=e[s]);const p=(e=>{const{operatorValue:r,singleValue:t,multiValue:a,fieldName:i}=e;return r===T&&t?`${i} = ${t}`:r===A&&Array.isArray(a)&&a.length>0?`${i} IN (${a.join(", ")})`:""})({operatorValue:E,singleValue:Array.isArray(c)?void 0:c,multiValue:Array.isArray(u)?u:void 0,fieldName:d});p&&t.push(p)}),t},b=e=>{const r=[];return e?(Object.entries(e).forEach(([e,t])=>{t&&r.push(`${e} = ${t}`)}),r):r},V=(e,r)=>{if(!e||0===r.length)return[];const t=r.find(r=>e[r]);return t?[t]:[]},Q=({filters:e,overrideFilters:r,versionIds:t,extraConditions:a})=>{const i=[...$(e,r),...b(t),...Y(a)];return i.length>0?`WHERE ${i.join(" AND ")}`:""},H=e=>{const r=e.match(new RegExp(`\\bWHERE\\s+([\\s\\S]+?)(?=\\s+(?:${L})\\b|$)`,"i"));if(!r)return{filters:{}};const t=(r[1]??"").trim().split(/\s+AND\s+/i),a={},i={};return t.forEach(e=>{const r=e.trim(),t=r.match(/^(\S+)\s+IN\s+\((.+)\)$/i);if(t){const e=t[1]??"",r=(t[2]??"").split(",").map(e=>e.trim()),i=j.find(r=>r.fieldName===e||r.multiField===e);return void(i?.operator&&(a[i.multiField]=r,a[i.operator]=A))}const n=r.match(/^(\S+)\s+=\s+(.+)$/);if(n){const e=n[1]??"",r=n[2]??"",t=j.find(r=>r.fieldName===e||r.singleField===e);t?(a[t.singleField]=r,t.operator&&(a[t.operator]=T)):e&&(i[e]=r)}}),{filters:a,versionIds:Object.keys(i).length>0?i:void 0}},W=e=>`FROM ${e.join(", ")}`,K=e=>{const r=e.match(new RegExp(`\\bFROM\\s+([\\s\\S]+?)(?=\\s+(?:${L})\\b)`,"i"));return r?(r[1]??"").split(",").map(e=>e.trim()).filter(Boolean):[]},w=(r,t=e.EGroupWithClause.ALL)=>0===r.length?"":`GROUP BY ${r.join(", ")} ${t}`,B=r=>{const t=r.match(new RegExp(`\\bGROUP BY\\s+([\\s\\S]+?)(?=\\s+(?:${L})\\b)`,"i"));if(!t)return{dimensions:[]};const a=(t[1]??"").trim(),i=a.toUpperCase().indexOf(" WITH ");return-1===i?{dimensions:a.split(",").map(e=>e.trim()).filter(Boolean),groupWithClause:e.EGroupWithClause.NONE}:{dimensions:a.slice(0,i).split(",").map(e=>e.trim()).filter(Boolean),groupWithClause:a.slice(i+1).trim()}},q=e=>e?`LIMIT ${e}`:"",X=e=>{const r=e.match(/\bLIMIT\s+(\d+)/i);return r?parseInt(r[1]??"0",10):void 0},z=e=>`MODE ${e}`,k=e=>{const r=e.match(/\bMODE\s+(\S+)/i);return r?.[1]},J=e=>!e||e<0?"":`OFFSET ${e}`,Z=e=>{const r=e.match(/\bOFFSET\s+(\d+)/i);return r?parseInt(r[1]??"0",10):void 0},ee=(e,r)=>{if(!e)return"";const t=Object.values(e).filter(e=>r?.includes(e.field)).map(e=>`${e.field} ${e.direction}`).join(", ");return t?`ORDER BY ${t}`:""},re=e=>{const r=e.match(new RegExp(`\\bORDER BY\\s+([\\s\\S]+?)(?=\\s+(?:${L})\\b|$)`,"i"));if(!r)return;const t={};return(r[1]??"").split(",").forEach(e=>{const r=e.trim().split(/\s+/);if(2===r.length){const e=r[0]??"",a=r[1]??"";e&&(t[e]={field:e,direction:a})}}),Object.keys(t).length>0?t:void 0},te=e=>`SHOW ${e.join(", ")}`,ae=e=>{const r=e.match(new RegExp(`\\bSHOW\\s+([\\s\\S]+?)(?=\\s+(?:${L})\\b)`,"i"));return r?(r[1]??"").split(",").map(e=>e.trim()).filter(Boolean):[]},ie=/\.0+$/,ne=(e,r=2)=>(e=>`${e}`.replace(ie,""))(e.toFixed(r)),se=(e,r,t=2)=>{const a=((e,r,t=2)=>{if("number"!=typeof e||!r)return;return 0===e?0:parseFloat(ne(e/r*100,t))})(e,r,t);if("number"==typeof a)return(e=>e>0&&e<.005)(a)?"~0%":`${a}%`};r.extend(i),r.extend(a),r.extend(t);let oe="UTC";function le(){return oe}const Ee=e=>e?r(e).tz(oe):r().tz(oe);var ce;!function(e){e.DAY="DAY",e.HOUR="HOUR",e.MONTH="MONTH",e.QUARTER="QUARTER",e.WEEK="WEEK",e.YEAR="YEAR"}(ce||(ce={}));const ue=60,me=3600,de=(e,r,t)=>{if(!e)return"";const a=t?.isExpandDetail?{formatHouse:"MMM D, h:mm A",formatDay:"MMM D, YYYY",formatMonth:"MMM YYYY",formatYear:"MMM YYYY"}:{formatHouse:"h A",formatDay:"MMM D",formatMonth:"MMM YYYY",formatYear:"YYYY"};switch(r){case ce.HOUR:return Ee(e).format(a.formatHouse);case ce.DAY:case ce.WEEK:return Ee(e).format(a.formatDay);case ce.MONTH:return Ee(e).format(a.formatMonth);case ce.QUARTER:{const r=Ee(e);return`Q${r.quarter()} ${r.format("YYYY")}`}case ce.YEAR:return Ee(e).format(a.formatYear)}return Ee(e).format(a.formatMonth)};var Te;!function(e){e.ALL="all",e.HOME="index",e.COLLECTION="collection",e.COLLECTION_LIST="collection-list",e.PRODUCT="product",e.ARTICLE="article",e.PAGE="page",e.CART="cart",e.SEARCH="search",e.NOT_FOUND="404",e.BLOG="blog",e.PASSWORD="password",e.CONTACT="contact",e.GIF_CART="gif-cart",e.ACCOUNT="account",e.CHECKOUT="checkout",e.GIFT_CARD="gift-card"}(Te||(Te={}));const Ae=e=>"string"==typeof e?Ee(e):e,pe=(e,r=!1)=>r&&(e=>0===e.hour()&&0===e.minute())(e)?e.endOf("day").format(h):e.format(h),Oe=e=>{const r=Ae(e.startDate),t=Ae(e.endDate);return r.isSame(t)?{dateGTE:pe(r),dateLTE:(a=t,pe(a?Ee(a).endOf("day"):Ee().endOf("day")))}:{dateGTE:pe(r),dateLTE:pe(t,!0)};var a},Re=e=>{const{dateRange:r,compareDateRange:t,overrideFilters:a,timeDimension:i}=e,n=i?a?.[i]:void 0;if(i&&n)return`DURING (${n}, ${i})`;if(!r)return"";const{dateGTE:s,dateLTE:o}=Oe(r),{dateGTE:l,dateLTE:E}=t?Oe(t):{};return`SINCE ${s} UNTIL ${o} ${t?`COMPARE TO ${l} UNTIL ${E}`:""}`},_e=e=>{const r=e.match(/\bDURING\s+\(([^,]+),\s*([^)]+)\)/i);if(r){const e=r[1]??"",t=r[2]??"";return{timeDimension:t.trim(),overrideFilters:{[t.trim()]:e.trim()}}}const t=e.match(/\bSINCE\s+(\S+)\s+UNTIL\s+(\S+)/i);if(!t)return{};const a={startDate:Ee(t[1]??""),endDate:Ee(t[2]??"")},i=e.match(/\bCOMPARE TO\s+(\S+)\s+UNTIL\s+(\S+)/i);return{dateRange:a,compareDateRange:i?{startDate:Ee(i[1]??""),endDate:Ee(i[2]??"")}:void 0}},Ie=e=>e?`TIMESERIES ${e}`:"",fe=e=>{const r=e.match(/\bTIMESERIES\s+(\S+)/i);return r?.[1]},Ne=e=>{const r=e??le();return r?`TIMEZONE ${r}`:""},Se=e=>{const r=e.match(/\bTIMEZONE\s+(\S+)/i);return r?.[1]};function Ce(e){if("string"!=typeof e)return!1;const r=e.trim();return/^MODE\b[\s\S]*\bFROM\b[\s\S]*\bSHOW\b[\s\S]*$/.test(r)}const Pe=e=>e?.gemxQLQuery?.tableData?.columns??[],De=e=>{if(!e)return"None";const r=Ee(e),t=Ee(),a=Ee().subtract(1,"day"),i=r.format("YYYY-MM-DD")===t.format("YYYY-MM-DD"),n=r.format("YYYY-MM-DD")===a.format("YYYY-MM-DD");if(i)return`Today at ${r.format("HH:mm")}`;if(n)return`Yesterday at ${r.format("HH:mm")}`;const s=t.diff(r,"day");return s>=0&&s<7?`${r.format("dddd")} at ${r.format("HH:mm")}`:`${r.format("MMM D")} at ${r.format("hh:mm a")}`},ye=({value:r,formatter:t,getTextPrice:a,name:i})=>{if(null!==r&&("object"==typeof r||Array.isArray(r)))return r;switch(t){case e.EAnalyticDataType.INTEGER:return(r??0).toString().toString().replace(/\B(?=(\d{3})+(?!\d))/g,",");case e.EAnalyticDataType.CURRENCY:return a?a(r,!1):`${r??0}`;case e.EAnalyticDataType.DATE:return De(r);case e.EAnalyticDataType.PERCENT:return"number"!=typeof r?se(0,1,2)??"":se(r/100,1,2)??"";case e.EAnalyticDataType.DURATION:return(e=>{let r=e;Number.isFinite(e)&&null!=e||(r=0);const t=ne(r);if(r>=me)return`${Math.floor(r/me)}h ${Math.floor(r%me/ue)}m ${Math.floor(r%ue)}s`;if(r>=ue)return`${Math.floor(r/ue)}m ${Math.floor(r%ue)}s`;return`${t}s`})(Number(r));case e.EAnalyticDataType.STRING:{const t=i===e.EAnalyticColumnKey.CAMPAIGNS?"":E;return r??t}case e.EAnalyticDataType.DAY:return de(r,ce.DAY,{isExpandDetail:!0});case e.EAnalyticDataType.HOUR:return de(r,ce.HOUR,{isExpandDetail:!0});case e.EAnalyticDataType.MONTH:return de(r,ce.MONTH,{isExpandDetail:!0});case e.EAnalyticDataType.YEAR:return de(r,ce.YEAR);case e.EAnalyticDataType.WEEK:return de(r,ce.WEEK,{isExpandDetail:!0});case e.EAnalyticDataType.QUARTER:return de(r,ce.QUARTER,{isExpandDetail:!0});case e.EAnalyticDataType.OBJECT:case e.EAnalyticDataType.ARRAY:return r;default:return`${r}`}},Fe=e=>{const r=e?.sessions;return"number"==typeof r&&r>0},ge=e=>{if(e)return"string"==typeof e?JSON.parse(e):e},he=e=>{try{const r=ge(e);return r&&"object"==typeof r?r:null}catch{return null}},Me=e=>{try{const r=ge(e);if(!Array.isArray(r))return;return r}catch{return}},Le=(e,r)=>{const t=e?.[r];return"number"==typeof t?t:0},Ge="\n fragment ColumnSelect on Column {\n dataType\n displayName\n name\n}\n ",xe="\n fragment TableDataSelect on TableData {\n columns {\n ...ColumnSelect\n }\n rows\n}\n ",ve="\n fragment GemXQLResultSelect on GemxQLResult {\n tableData {\n ...TableDataSelect\n }\n}\n ",Ue=`\n query GemxQL($input: String!) {\n gemxQLQuery(query: $input) {\n ...GemXQLResultSelect\n }\n}\n ${ve}\n${xe}\n${Ge}`,Ye=(e,r,t)=>n.useQuery({queryKey:["GemXQlCustom",e],queryFn:r(Ue,e),...t});Ye.getKey=e=>["GemXQlCustom",e];const je=({name:e,variables:r,fetcher:t},a)=>{const i=Ue.replace(/query\s+GemxQL\b/,`query ${e}`);return n.useQuery({queryKey:[e,r],queryFn:t(i,r),retry:0,...a})};var $e,be,Ve,Qe,He,We,Ke;je.getKey=(e,r)=>[e,r],function(e){e.SESSION="sessions",e.ORDERS="orders",e.PAGE_VIEWS="pageviews",e.VISITORS="visitors",e.BOUNCE_RATE="bounce_rate",e.CTR="ctr",e.CONVERSION_RATE="conversion_rate",e.AVG_TIME_ON_PAGE="average_time_on_page",e.ADDED_TO_CART="added_to_cart",e.ADD_TO_CART_RATE="added_to_cart_rate",e.REACHED_CHECKOUT="sessions_that_reached_checkout",e.COMPLETE_CHECKOUT="sessions_that_completed_checkout",e.CART_ADDITION="sessions_with_cart_additions",e.AOV="aov",e.REVENUE="revenue",e.RPV="revenue_per_visitor",e.VISITOR_ITEMS="visitor_items",e.DEVICE_ITEMS="device_items",e.TRAFFIC_SOURCE_ITEMS="traffic_source_items",e.PAGE_PATH_ANALYSIS="PAGE_PATH_ANALYSIS"}($e||($e={})),$e.SESSION,$e.VISITORS,$e.BOUNCE_RATE,s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"formula-variable",children:"Bounce rate"}),s.jsx("span",{children:" = "}),s.jsx("span",{className:"formula-input",children:"sessions with a pageview"}),s.jsx("span",{className:"formula-operator",children:" / "}),s.jsx("span",{className:"formula-input",children:"total sessions"})]}),$e.CTR,s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"formula-variable",children:"Click-through rate"}),s.jsx("span",{children:" = "}),s.jsx("span",{className:"formula-input",children:"total clicks"}),s.jsx("span",{className:"formula-operator",children:" / "}),s.jsx("span",{className:"formula-input",children:"total pageviews"})]}),$e.AVG_TIME_ON_PAGE,s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"formula-variable",children:"Average time on page"}),s.jsx("span",{children:" = "}),s.jsx("span",{className:"formula-input",children:"total time on page"}),s.jsx("span",{className:"formula-operator",children:" / "}),s.jsx("span",{className:"formula-input",children:"(total pageviews - total exits)"})]}),$e.PAGE_VIEWS,$e.RPV,s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"formula-variable",children:"Revenue per visitor"}),s.jsx("span",{children:" = "}),s.jsx("span",{className:"formula-input",children:"total revenue"}),s.jsx("span",{className:"formula-operator",children:" / "}),s.jsx("span",{className:"formula-input",children:"total visitors"})]}),$e.ADDED_TO_CART,$e.REACHED_CHECKOUT,$e.COMPLETE_CHECKOUT,$e.ORDERS,$e.CONVERSION_RATE,s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"formula-variable",children:"Conversion rate"}),s.jsx("span",{children:" = "}),s.jsx("span",{className:"formula-input",children:"sessions that completed checkout"}),s.jsx("span",{className:"formula-operator",children:" / "}),s.jsx("span",{className:"formula-input",children:"total sessions"})]}),$e.AOV,s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"formula-variable",children:"Average order value"}),s.jsx("span",{children:" = "}),s.jsx("span",{className:"formula-input",children:"total revenue"}),s.jsx("span",{className:"formula-operator",children:" / "}),s.jsx("span",{className:"formula-input",children:"total orders"})]}),$e.REVENUE,s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"formula-variable",children:"Revenue"}),s.jsx("span",{children:" = "}),s.jsx("span",{className:"formula-input",children:"gross sales"}),s.jsx("span",{className:"formula-operator",children:" - "}),s.jsx("span",{className:"formula-input",children:"discounts"})]}),$e.ADD_TO_CART_RATE,s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"formula-variable",children:"Added to cart rate"}),s.jsx("span",{children:" = "}),s.jsx("span",{className:"formula-input",children:"sessions with cart additions"}),s.jsx("span",{className:"formula-operator",children:" / "}),s.jsx("span",{className:"formula-input",children:"total sessions"})]}),$e.CART_ADDITION,$e.VISITOR_ITEMS,$e.DEVICE_ITEMS,$e.TRAFFIC_SOURCE_ITEMS,$e.PAGE_PATH_ANALYSIS,function(e){e.ALL_SESSION="ALL_SESSION",e.FIRST_SESSION="FIRST_SESSION",e.PAGE_ONLY="PAGE_ONLY"}(be||(be={})),function(e){e.NEW="new",e.RETURNING="returning"}(Ve||(Ve={})),function(e){e.DESKTOP="desktop",e.MOBILE="mobile",e.TABLET="tablet"}(Qe||(Qe={})),function(e){e.DIRECT="direct",e.EMAIL="email",e.REFERRAL="referral",e.ORGANIC_SOCIAL="organic-social",e.ORGANIC_SEARCH="organic-search",e.PAID_SOCIAL="paid-social",e.PAID_SEARCH="paid-search",e.SMS="sms"}(He||(He={})),function(e){e.CONTENT_TESTING="content-testing",e.PAGE_OPT="page-optimize",e.FUNNEL_OPT="funnel-optimize",e.PROFIT_OPT="profit-optimize",e.TRIAL_PAGE_OPT="trial-page-optimize",e.TRIAL_FUNNEL_OPT="trial-funnel-optimize",e.TRIAL_PROFIT_OPT="trial-profit-optimize"}(We||(We={})),function(e){e.TRIAL_PAGE_OPT="TRIAL_PAGE_OPT",e.TRIAL_FUNNEL_OPT="TRIAL_FUNNEL_OPT",e.TRIAL_PROFIT_OPT="TRIAL_PROFIT_OPT",e.ACTIVE_PAGE_OPT="ACTIVE_PAGE_OPT",e.ACTIVE_FUNNEL_OPT="ACTIVE_FUNNEL_OPT",e.ACTIVE_PROFIT_OPT="ACTIVE_PROFIT_OPT",e.LOADING_PLAN="LOADING_PLAN",e.TRIAL_EXPIRED="TRIAL_EXPIRED",e.ACTIVE_PAGE_OPT_AND_TRIAL_PAGE_OPT="ACTIVE_PAGE_OPT_AND_TRIAL_PAGE_OPT",e.ACTIVE_PAGE_OPT_AND_TRIAL_FUNNEL_OPT="ACTIVE_PAGE_OPT_AND_TRIAL_FUNNEL_OPT",e.ACTIVE_FUNNEL_OPT_AND_TRIAL_FUNNEL_OPT="ACTIVE_FUNNEL_OPT_AND_TRIAL_FUNNEL_OPT"}(Ke||(Ke={})),Ve.NEW,Ve.RETURNING,Qe.DESKTOP,Qe.TABLET,Qe.MOBILE,He.DIRECT,He.EMAIL,He.REFERRAL,He.ORGANIC_SOCIAL,He.ORGANIC_SEARCH,He.PAID_SOCIAL,He.PAID_SEARCH,He.SMS,o.create(e=>({currencyRates:null,setCurrencyRates:r=>e({currencyRates:r})}));const we=l.createContext({getTextPrice:e=>"string"==typeof e?e:`${e??0}`});var Be;e.GPaginationDirection=void 0,(Be=e.GPaginationDirection||(e.GPaginationDirection={})).NEXT="NEXT",Be.PREV="PREV";e.CLAUSE_KEYWORDS=M,e.CLAUSE_KEYWORD_BOUNDARY=L,e.COMPARE_PREFIX=u,e.COMPARE_SUFFIX=m,e.COMPARE_TOTALS_SUFFIX=d,e.ColumnSelectFragmentDoc=Ge,e.DATE_QUERY_FORMAT=h,e.DEFAULT_QUERY_LIMIT=G,e.GemXqlResultSelectFragmentDoc=ve,e.GemxQlDocument=Ue,e.NONE_VALUE=E,e.OPERATOR_IS=T,e.OPERATOR_IS_ONE_OF=A,e.PLACEHOLDER_VALUE="-",e.ROW_READER_MODE_CONFIG=g,e.TOTALS_SUFFIX=c,e.TableDataSelectFragmentDoc=xe,e.buildConditionQuery=Q,e.buildExtraCondition=U,e.buildExtraConditions=Y,e.buildFromQuery=W,e.buildGemXQlQuery=e=>{const{mode:r,metrics:t,dimensions:a,dateRange:i,compareDateRange:n,filters:s,overrideFilters:o,versionIds:l,extraConditions:E,orderBy:c,sources:u,timeDimension:m,groupWithClause:d,timezone:T,limit:A=G,offset:p,extraOrderByFields:O}=e,R=[...a,...V(c,t),...O??[]],_=[z(r),W(u),te(t),w(a,d),Ie(m),Re({dateRange:i,compareDateRange:n,timeDimension:m,overrideFilters:o}),Ne(T),Q({filters:s,overrideFilters:o,versionIds:l,extraConditions:E}),ee(c,R),q(A),J(p)].filter(Boolean).join(" ");return Ce(_)?_:""},e.buildGroupQuery=w,e.buildLimitQuery=q,e.buildModeQuery=z,e.buildOffsetQuery=J,e.buildOrderByQuery=ee,e.buildShowQuery=te,e.buildTimeQuery=Re,e.buildTimeSeriesQuery=Ie,e.buildTimezoneQuery=Ne,e.buildVersionIdCondition=b,e.createNumericRowReader=(r,t=e.ERowReaderMode.DEFAULT)=>e=>{const{prefix:a,suffix:i}=g[t],n=r[`${a}${e}${i}`];if("number"==typeof n)return n;if("string"==typeof n){const e=parseFloat(n);return isNaN(e)?0:e}return 0},e.extractColumnTypes=e=>{const r=Pe(e),t={};for(const e of r)e?.name&&(t[e.name]=e.dataType);return t},e.extractQueryColumns=Pe,e.extractQueryRows=e=>e?.gemxQLQuery?.tableData?.rows??[],e.filterConfigs=j,e.formatAnalyticData=ye,e.formatAnalyticDate=De,e.generateFilterConditions=$,e.getComparisonKey=e=>`${u}${e}${m}`,e.getComparisonTotalsKey=e=>`${u}${e}${m}${c}`,e.getFirstMetricInOrderBy=V,e.getTimeDimensionByDate=(r,t)=>{const a=t.diff(r,"day");return a<=3?e.ETimeDimension.HOUR:a<=93?e.ETimeDimension.DAY:e.ETimeDimension.MONTH},e.getTotalsKey=e=>`${e}${c}`,e.hasMetricData=Fe,e.isValidQueryInput=Ce,e.parseBreakdownItems=e=>Me(e)?.map(e=>({...e,total:Number(e.total)})),e.parseConditionQuery=H,e.parseFromQuery=K,e.parseGemXQlQuery=e=>{const{dateRange:r,compareDateRange:t,timeDimension:a,overrideFilters:i}=_e(e),n=a??fe(e),{dimensions:s,groupWithClause:o}=B(e),{filters:l,versionIds:E}=H(e);return{mode:k(e),sources:K(e),metrics:ae(e),dimensions:s,groupWithClause:o,timeDimension:n,dateRange:r,compareDateRange:t,overrideFilters:i,filters:l,versionIds:E,timezone:Se(e),orderBy:re(e),limit:X(e),offset:Z(e)}},e.parseGroupQuery=B,e.parseJsonArray=Me,e.parseJsonObject=he,e.parseLimitQuery=X,e.parseModeQuery=k,e.parseOffsetQuery=Z,e.parseOrderByQuery=re,e.parsePageItems=e=>he(e),e.parseShowQuery=ae,e.parseTimeQuery=_e,e.parseTimeSeriesQuery=fe,e.parseTimezoneQuery=Se,e.readNumeric=Le,e.useAnalyticData=({getTextPrice:e}={})=>{const{getTextPrice:r}=l.useContext(we),t=e??r,a=({value:e,formatter:r,name:a})=>ye({value:e,formatter:r,getTextPrice:t,name:a});return{formatData:a,computeMetric:({metric:e,previousMetric:r,metricKey:t,formatter:i})=>{if(!Fe(e))return{value:0,change:"-"};const n=Le(e,t),s=Le(r,t),o=a({value:n,formatter:i,name:t});if(0===n&&0!==s)return{value:o,change:-100};if(0===s)return{value:o,change:"-"};return{value:o,change:(n-s)/s*100}}}},e.useCustomGemXQlQuery=Ye,e.useGemXQlPagination=({resetKey:r,itemsPerPage:t})=>{const[a,i]=l.useState(1),n=l.useRef(),s=a>1&&void 0!==n.current&&n.current!==r?1:a,o=(s-1)*t,E=l.useCallback(r=>t=>{i(a=>{const i=t===e.GPaginationDirection.NEXT?a+1:a-1;return Math.min(Math.max(i,1),r)})},[]);l.useEffect(()=>{n.current!==r&&(n.current=r,i(1))},[r]);const c=l.useCallback(({totalRecords:e,isLoading:r})=>{const a=Math.max(1,Math.ceil(e/t));return{currentPage:s,totalPages:a,loading:r,handlePageChange:E(a)}},[s,t,E]);return{currentPage:s,offset:o,buildPagination:c}},e.useGemxQlNamedQuery=je});
1
+ !function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("dayjs"),require("dayjs/plugin/quarterOfYear.js"),require("dayjs/plugin/timezone.js"),require("dayjs/plugin/utc.js"),require("@tanstack/react-query"),require("react/jsx-runtime"),require("react"),require("zustand")):"function"==typeof define&&define.amd?define(["exports","dayjs","dayjs/plugin/quarterOfYear.js","dayjs/plugin/timezone.js","dayjs/plugin/utc.js","@tanstack/react-query","react/jsx-runtime","react","zustand"],r):r((e="undefined"!=typeof globalThis?globalThis:e||self).GemAnalytics={},e.dayjs,e.quarterOfYear,e.timezone,e.utc,e.reactQuery,e.jsxRuntime,e.React,e.zustand)}(this,function(e,r,t,a,i,n,s,o,l){"use strict";const E="None",c="___totals",u="comparison___",m="___previous_period",d=`${m}${c}`,T="is",A="is_one_of";var p,O,R,_,I,f,N,S,C,P,D,y,F;e.EAnalyticDataType=void 0,(p=e.EAnalyticDataType||(e.EAnalyticDataType={})).DATE="DATE",p.ARRAY="ARRAY",p.OBJECT="OBJECT",p.STRING="STRING",p.INTEGER="INTEGER",p.CURRENCY="CURRENCY",p.PERCENT="PERCENT",p.DURATION="DURATION",p.MONTH="MONTH_TIMESTAMP",p.QUARTER="QUARTER_TIMESTAMP",p.DAY="DAY_TIMESTAMP",p.WEEK="WEEK_TIMESTAMP",p.YEAR="YEAR_TIMESTAMP",p.HOUR="HOUR_TIMESTAMP",e.EAnalyticColumnKey=void 0,(O=e.EAnalyticColumnKey||(e.EAnalyticColumnKey={})).CAMPAIGNS="experiments",O.VISITOR_ITEMS="visitor_items",O.DEVICE_ITEMS="device_items",O.TRAFFIC_SOURCE_ITEMS="traffic_source_items",e.EAnalyticSource=void 0,(R=e.EAnalyticSource||(e.EAnalyticSource={})).SESSIONS="sessions",R.SALES="sales",e.EComparisonOperator=void 0,(_=e.EComparisonOperator||(e.EComparisonOperator={})).EQ="=",_.IN="IN",_.LIKE="LIKE",e.EGroupOperator=void 0,(I=e.EGroupOperator||(e.EGroupOperator={})).OR="OR",I.AND="AND",e.EFilterField=void 0,(f=e.EFilterField||(e.EFilterField={})).DEVICE="device",f.DEVICES="devices",f.VISITOR="visitor_type",f.VISITORS="visitor_types",f.TRAFFIC_SOURCE="traffic_source",f.TRAFFIC_SOURCES="traffic_sources",f.VERSION="version",f.VERSIONS="versions",f.SINGLE_PAGE="page_path",f.LIST_PAGE="page_paths",f.GROUP_CAMPAIGN_ITEM="group_campaign_item",f.GROUP_CAMPAIGN_ITEMS="group_campaign_items",f.SINGLE_CAMPAIGN="experiment_id",f.GROUP_CAMPAIGN="experiment_group_id",f.CAMPAIGN_VERSION_ID="version_id",f.GROUP_CAMPAIGN_VERSION_ID="group_version_id",e.EOperatorField=void 0,(N=e.EOperatorField||(e.EOperatorField={})).DEVICE_OPERATOR="deviceOperator",N.VISITOR_OPERATOR="visitorOperator",N.TRAFFIC_SOURCE_OPERATOR="trafficSourceOperator",N.VERSION_OPERATOR="versionOperator",N.PAGE_OPERATOR="pageOperator",N.CAMPAIGN_ITEM_OPERATOR="campaignItemOperator",e.EGroupWithClause=void 0,(S=e.EGroupWithClause||(e.EGroupWithClause={})).NONE="",S.TOTALS="TOTALS",S.ALL="WITH GROUP_TOTALS, TOTALS",e.EOrderDirectionType=void 0,(C=e.EOrderDirectionType||(e.EOrderDirectionType={})).ASC="ASC",C.DESC="DESC",e.EPageMetric=void 0,(P=e.EPageMetric||(e.EPageMetric={})).PAGE_ITEMS="page_items",P.PAGE_PATHS="page_paths",e.EPageDimension=void 0,(e.EPageDimension||(e.EPageDimension={})).PAGE_PATH="page_path",e.EPageField=void 0,(D=e.EPageField||(e.EPageField={})).SHOPIFY_PAGE_ID="shopify_page_id",D.LOCATION_PATH="location_path",D.PAGE_TYPE="page_type",D.PAGE_TITLE="page_title",D.PAGE_PATH="page_path",D.TEMPLATE_SUFFIX="template_suffix",e.ERowReaderMode=void 0,(y=e.ERowReaderMode||(e.ERowReaderMode={})).DEFAULT="DEFAULT",y.COMPARISON="COMPARISON",y.TOTALS="TOTALS",y.COMPARISON_TOTALS="COMPARISON_TOTALS",e.ETimeDimension=void 0,(F=e.ETimeDimension||(e.ETimeDimension={})).HOUR="hour",F.DAY="day",F.WEEK="week",F.MONTH="month",F.QUARTER="quarter",F.YEAR="year";const g={[e.ERowReaderMode.DEFAULT]:{prefix:"",suffix:""},[e.ERowReaderMode.COMPARISON]:{prefix:u,suffix:m},[e.ERowReaderMode.TOTALS]:{prefix:"",suffix:c},[e.ERowReaderMode.COMPARISON_TOTALS]:{prefix:u,suffix:d}},h="YYYY-MM-DDTHH:mm:ss",M=["MODE","FROM","SHOW","GROUP BY","TIMESERIES","SINCE","DURING","TIMEZONE","WHERE","ORDER BY","LIMIT","OFFSET"],L=M.join("|"),G=1e3,x=e.EGroupOperator.OR,v=(e,r=x)=>e.length?1===e.length?e[0]??"":`(${e.join(` ${r} `)})`:"",U=r=>{switch(r.operator){case e.EComparisonOperator.EQ:return(({fields:e,value:r,groupOperator:t})=>e.length?v(e.map(e=>`${e} = ${r}`),t):"")(r);case e.EComparisonOperator.IN:return(({fields:e,values:r,groupOperator:t})=>e.length&&r.length?v(e.map(e=>`${e} IN (${r.join(", ")})`),t):"")(r);case e.EComparisonOperator.LIKE:return(({fields:e,value:r,groupOperator:t})=>{const a=r.trim();return a&&e.length?v(e.map(e=>`${e} LIKE '%${a}%'`),t):""})(r)}},Y=e=>e?.length?e.map(U).filter(Boolean):[],j=[{operator:e.EOperatorField.DEVICE_OPERATOR,singleField:e.EFilterField.DEVICE,multiField:e.EFilterField.DEVICES,fieldName:e.EFilterField.DEVICE},{operator:e.EOperatorField.VISITOR_OPERATOR,singleField:e.EFilterField.VISITOR,multiField:e.EFilterField.VISITORS,fieldName:e.EFilterField.VISITOR},{operator:e.EOperatorField.TRAFFIC_SOURCE_OPERATOR,singleField:e.EFilterField.TRAFFIC_SOURCE,multiField:e.EFilterField.TRAFFIC_SOURCES,fieldName:e.EFilterField.TRAFFIC_SOURCE},{operator:e.EOperatorField.VERSION_OPERATOR,singleField:e.EFilterField.VERSION,multiField:e.EFilterField.VERSIONS,fieldName:e.EFilterField.VERSION},{operator:e.EOperatorField.PAGE_OPERATOR,singleField:e.EFilterField.SINGLE_PAGE,multiField:e.EFilterField.LIST_PAGE,fieldName:e.EFilterField.SINGLE_PAGE},{operator:e.EOperatorField.CAMPAIGN_ITEM_OPERATOR,singleField:e.EFilterField.GROUP_CAMPAIGN_ITEM,multiField:e.EFilterField.GROUP_CAMPAIGN_ITEMS,condition:e.EFilterField.GROUP_CAMPAIGN,fieldName:e.EFilterField.SINGLE_CAMPAIGN},{operatorVal:T,singleField:e.EFilterField.SINGLE_CAMPAIGN,multiField:e.EFilterField.GROUP_CAMPAIGN}],$=(e,r)=>{const t=[],a=Object.keys(e).length>0,i=!!r&&Object.keys(r).length>0;if(!a&&!i)return t;const n=(e=>e?Object.fromEntries(Object.entries(e).filter(([,e])=>void 0!==e).map(([e,r])=>[e,Array.isArray(r)?`${e} IN (${r.join(", ")})`:`${e} = ${r}`])):{})(r);return j.forEach(({operator:r,operatorVal:a,singleField:i,multiField:s,condition:o,fieldName:l})=>{if(n[i])return void t.push(n[i]);const E=r?e[r]:a;let c=e[i];const u=e[s],m=o&&e[o];if(o&&!m)return;const d=l??(c?i:s);a&&!c&&(c=e[s]);const p=(e=>{const{operatorValue:r,singleValue:t,multiValue:a,fieldName:i}=e;return r===T&&t?`${i} = ${t}`:r===A&&Array.isArray(a)&&a.length>0?`${i} IN (${a.join(", ")})`:""})({operatorValue:E,singleValue:Array.isArray(c)?void 0:c,multiValue:Array.isArray(u)?u:void 0,fieldName:d});p&&t.push(p)}),t},b=e=>{const r=[];return e?(Object.entries(e).forEach(([e,t])=>{t&&r.push(`${e} = ${t}`)}),r):r},V=(e,r)=>{if(!e||0===r.length)return[];const t=r.find(r=>e[r]);return t?[t]:[]},Q=({filters:e,overrideFilters:r,versionIds:t,extraConditions:a})=>{const i=[...$(e,r),...b(t),...Y(a)];return i.length>0?`WHERE ${i.join(" AND ")}`:""},H=e=>{const r=e.match(new RegExp(`\\bWHERE\\s+([\\s\\S]+?)(?=\\s+(?:${L})\\b|$)`,"i"));if(!r)return{filters:{}};const t=(r[1]??"").trim().split(/\s+AND\s+/i),a={},i={};return t.forEach(e=>{const r=e.trim(),t=r.match(/^(\S+)\s+IN\s+\((.+)\)$/i);if(t){const e=t[1]??"",r=(t[2]??"").split(",").map(e=>e.trim()),i=j.find(r=>r.fieldName===e||r.multiField===e);return void(i?.operator&&(a[i.multiField]=r,a[i.operator]=A))}const n=r.match(/^(\S+)\s+=\s+(.+)$/);if(n){const e=n[1]??"",r=n[2]??"",t=j.find(r=>r.fieldName===e||r.singleField===e);t?(a[t.singleField]=r,t.operator&&(a[t.operator]=T)):e&&(i[e]=r)}}),{filters:a,versionIds:Object.keys(i).length>0?i:void 0}},W=e=>`FROM ${e.join(", ")}`,K=e=>{const r=e.match(new RegExp(`\\bFROM\\s+([\\s\\S]+?)(?=\\s+(?:${L})\\b)`,"i"));return r?(r[1]??"").split(",").map(e=>e.trim()).filter(Boolean):[]},w=(r,t=e.EGroupWithClause.ALL)=>0===r.length?"":`GROUP BY ${r.join(", ")} ${t}`,B=r=>{const t=r.match(new RegExp(`\\bGROUP BY\\s+([\\s\\S]+?)(?=\\s+(?:${L})\\b)`,"i"));if(!t)return{dimensions:[]};const a=(t[1]??"").trim(),i=a.toUpperCase().indexOf(" WITH ");return-1===i?{dimensions:a.split(",").map(e=>e.trim()).filter(Boolean),groupWithClause:e.EGroupWithClause.NONE}:{dimensions:a.slice(0,i).split(",").map(e=>e.trim()).filter(Boolean),groupWithClause:a.slice(i+1).trim()}},q=e=>e?`LIMIT ${e}`:"",X=e=>{const r=e.match(/\bLIMIT\s+(\d+)/i);return r?parseInt(r[1]??"0",10):void 0},z=e=>`MODE ${e}`,k=e=>{const r=e.match(/\bMODE\s+(\S+)/i);return r?.[1]},J=e=>!e||e<0?"":`OFFSET ${e}`,Z=e=>{const r=e.match(/\bOFFSET\s+(\d+)/i);return r?parseInt(r[1]??"0",10):void 0},ee=(e,r)=>{if(!e)return"";const t=Object.values(e).filter(e=>r?.includes(e.field)).map(e=>`${e.field} ${e.direction}`).join(", ");return t?`ORDER BY ${t}`:""},re=e=>{const r=e.match(new RegExp(`\\bORDER BY\\s+([\\s\\S]+?)(?=\\s+(?:${L})\\b|$)`,"i"));if(!r)return;const t={};return(r[1]??"").split(",").forEach(e=>{const r=e.trim().split(/\s+/);if(2===r.length){const e=r[0]??"",a=r[1]??"";e&&(t[e]={field:e,direction:a})}}),Object.keys(t).length>0?t:void 0},te=e=>`SHOW ${e.join(", ")}`,ae=e=>{const r=e.match(new RegExp(`\\bSHOW\\s+([\\s\\S]+?)(?=\\s+(?:${L})\\b)`,"i"));return r?(r[1]??"").split(",").map(e=>e.trim()).filter(Boolean):[]},ie=/\.0+$/,ne=(e,r=2)=>(e=>`${e}`.replace(ie,""))(e.toFixed(r)),se=(e,r,t=2)=>{const a=((e,r,t=2)=>{if("number"!=typeof e||!r)return;return 0===e?0:parseFloat(ne(e/r*100,t))})(e,r,t);if("number"==typeof a)return(e=>e>0&&e<.005)(a)?"~0%":`${a}%`};r.extend(i),r.extend(a),r.extend(t);let oe="UTC";function le(){return oe}const Ee=e=>e?r(e).tz(oe):r().tz(oe);var ce;!function(e){e.DAY="DAY",e.HOUR="HOUR",e.MONTH="MONTH",e.QUARTER="QUARTER",e.WEEK="WEEK",e.YEAR="YEAR"}(ce||(ce={}));const ue=60,me=3600,de=(e,r,t)=>{if(!e)return"";const a=t?.isExpandDetail?{formatHouse:"MMM D, h:mm A",formatDay:"MMM D, YYYY",formatMonth:"MMM YYYY",formatYear:"MMM YYYY"}:{formatHouse:"h A",formatDay:"MMM D",formatMonth:"MMM YYYY",formatYear:"YYYY"};switch(r){case ce.HOUR:return Ee(e).format(a.formatHouse);case ce.DAY:case ce.WEEK:return Ee(e).format(a.formatDay);case ce.MONTH:return Ee(e).format(a.formatMonth);case ce.QUARTER:{const r=Ee(e);return`Q${r.quarter()} ${r.format("YYYY")}`}case ce.YEAR:return Ee(e).format(a.formatYear)}return Ee(e).format(a.formatMonth)};var Te;!function(e){e.ALL="all",e.HOME="index",e.COLLECTION="collection",e.COLLECTION_LIST="collection-list",e.PRODUCT="product",e.ARTICLE="article",e.PAGE="page",e.CART="cart",e.SEARCH="search",e.NOT_FOUND="404",e.BLOG="blog",e.PASSWORD="password",e.CONTACT="contact",e.GIF_CART="gif-cart",e.ACCOUNT="account",e.CHECKOUT="checkout",e.GIFT_CARD="gift-card"}(Te||(Te={}));const Ae=e=>"string"==typeof e?Ee(e):e,pe=(e,r=!1)=>r&&(e=>0===e.hour()&&0===e.minute())(e)?e.endOf("day").format(h):e.format(h),Oe=e=>{const r=Ae(e.startDate),t=Ae(e.endDate);return r.isSame(t)?{dateGTE:pe(r),dateLTE:(a=t,pe(a?Ee(a).endOf("day"):Ee().endOf("day")))}:{dateGTE:pe(r),dateLTE:pe(t,!0)};var a},Re=e=>{const{dateRange:r,compareDateRange:t,overrideFilters:a,timeDimension:i}=e,n=i?a?.[i]:void 0;if(i&&n)return`DURING (${n}, ${i})`;if(!r)return"";const{dateGTE:s,dateLTE:o}=Oe(r),{dateGTE:l,dateLTE:E}=t?Oe(t):{};return`SINCE ${s} UNTIL ${o} ${t?`COMPARE TO ${l} UNTIL ${E}`:""}`},_e=e=>{const r=e.match(/\bDURING\s+\(([^,]+),\s*([^)]+)\)/i);if(r){const e=r[1]??"",t=r[2]??"";return{timeDimension:t.trim(),overrideFilters:{[t.trim()]:e.trim()}}}const t=e.match(/\bSINCE\s+(\S+)\s+UNTIL\s+(\S+)/i);if(!t)return{};const a={startDate:Ee(t[1]??""),endDate:Ee(t[2]??"")},i=e.match(/\bCOMPARE TO\s+(\S+)\s+UNTIL\s+(\S+)/i);return{dateRange:a,compareDateRange:i?{startDate:Ee(i[1]??""),endDate:Ee(i[2]??"")}:void 0}},Ie=e=>e?`TIMESERIES ${e}`:"",fe=e=>{const r=e.match(/\bTIMESERIES\s+(\S+)/i);return r?.[1]},Ne=e=>{const r=e??le();return r?`TIMEZONE ${r}`:""},Se=e=>{const r=e.match(/\bTIMEZONE\s+(\S+)/i);return r?.[1]};function Ce(e){if("string"!=typeof e)return!1;const r=e.trim();return/^MODE\b[\s\S]*\bFROM\b[\s\S]*\bSHOW\b[\s\S]*$/.test(r)}const Pe=e=>e?.gemxQLQuery?.tableData?.columns??[],De=e=>{if(!e)return"None";const r=Ee(e),t=Ee(),a=Ee().subtract(1,"day"),i=r.format("YYYY-MM-DD")===t.format("YYYY-MM-DD"),n=r.format("YYYY-MM-DD")===a.format("YYYY-MM-DD");if(i)return`Today at ${r.format("HH:mm")}`;if(n)return`Yesterday at ${r.format("HH:mm")}`;const s=t.diff(r,"day");return s>=0&&s<7?`${r.format("dddd")} at ${r.format("HH:mm")}`:`${r.format("MMM D")} at ${r.format("hh:mm a")}`},ye=({value:r,formatter:t,getTextPrice:a,name:i})=>{if(null!==r&&("object"==typeof r||Array.isArray(r)))return r;switch(t){case e.EAnalyticDataType.INTEGER:return(r??0).toString().toString().replace(/\B(?=(\d{3})+(?!\d))/g,",");case e.EAnalyticDataType.CURRENCY:return a?a(r,!1):`${r??0}`;case e.EAnalyticDataType.DATE:return De(r);case e.EAnalyticDataType.PERCENT:return"number"!=typeof r?se(0,1,2)??"":se(r/100,1,2)??"";case e.EAnalyticDataType.DURATION:return(e=>{let r=e;Number.isFinite(e)&&null!=e||(r=0);const t=ne(r);if(r>=me)return`${Math.floor(r/me)}h ${Math.floor(r%me/ue)}m ${Math.floor(r%ue)}s`;if(r>=ue)return`${Math.floor(r/ue)}m ${Math.floor(r%ue)}s`;return`${t}s`})(Number(r));case e.EAnalyticDataType.STRING:{const t=i===e.EAnalyticColumnKey.CAMPAIGNS?"":E;return r??t}case e.EAnalyticDataType.DAY:return de(r,ce.DAY,{isExpandDetail:!0});case e.EAnalyticDataType.HOUR:return de(r,ce.HOUR,{isExpandDetail:!0});case e.EAnalyticDataType.MONTH:return de(r,ce.MONTH,{isExpandDetail:!0});case e.EAnalyticDataType.YEAR:return de(r,ce.YEAR);case e.EAnalyticDataType.WEEK:return de(r,ce.WEEK,{isExpandDetail:!0});case e.EAnalyticDataType.QUARTER:return de(r,ce.QUARTER,{isExpandDetail:!0});case e.EAnalyticDataType.OBJECT:case e.EAnalyticDataType.ARRAY:return r;default:return`${r}`}},Fe=e=>{const r=e?.sessions;return"number"==typeof r&&r>0},ge=e=>{if(e)return"string"==typeof e?JSON.parse(e):e},he=e=>{try{const r=ge(e);return r&&"object"==typeof r?r:null}catch{return null}},Me=e=>{try{const r=ge(e);if(!Array.isArray(r))return;return r}catch{return}},Le=(e,r)=>{const t=e?.[r];return"number"==typeof t?t:0},Ge="\n fragment ColumnSelect on Column {\n dataType\n displayName\n name\n}\n ",xe="\n fragment TableDataSelect on TableData {\n columns {\n ...ColumnSelect\n }\n rows\n}\n ",ve="\n fragment GemXQLResultSelect on GemxQLResult {\n tableData {\n ...TableDataSelect\n }\n}\n ",Ue=`\n query GemxQL($input: String!) {\n gemxQLQuery(query: $input) {\n ...GemXQLResultSelect\n }\n}\n ${ve}\n${xe}\n${Ge}`,Ye=(e,r,t)=>n.useQuery({queryKey:["GemXQlCustom",e],queryFn:r(Ue,e),...t});Ye.getKey=e=>["GemXQlCustom",e];const je=({name:e,variables:r,fetcher:t},a)=>{const i=Ue.replace(/query\s+GemxQL\b/,`query ${e}`);return n.useQuery({queryKey:[e,r],queryFn:t(i,r),retry:0,...a})};var $e,be,Ve,Qe,He,We,Ke;je.getKey=(e,r)=>[e,r],function(e){e.SESSION="sessions",e.ORDERS="orders",e.PAGE_VIEWS="pageviews",e.VISITORS="visitors",e.BOUNCE_RATE="bounce_rate",e.CTR="ctr",e.CONVERSION_RATE="conversion_rate",e.AVG_TIME_ON_PAGE="average_time_on_page",e.ADDED_TO_CART="added_to_cart",e.ADD_TO_CART_RATE="added_to_cart_rate",e.REACHED_CHECKOUT="sessions_that_reached_checkout",e.COMPLETE_CHECKOUT="sessions_that_completed_checkout",e.CART_ADDITION="sessions_with_cart_additions",e.AOV="aov",e.REVENUE="revenue",e.RPV="revenue_per_visitor",e.VISITOR_ITEMS="visitor_items",e.DEVICE_ITEMS="device_items",e.TRAFFIC_SOURCE_ITEMS="traffic_source_items",e.PAGE_PATH_ANALYSIS="PAGE_PATH_ANALYSIS"}($e||($e={})),$e.SESSION,$e.VISITORS,$e.BOUNCE_RATE,s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"formula-variable",children:"Bounce rate"}),s.jsx("span",{children:" = "}),s.jsx("span",{className:"formula-input",children:"sessions with a pageview"}),s.jsx("span",{className:"formula-operator",children:" / "}),s.jsx("span",{className:"formula-input",children:"total sessions"})]}),$e.CTR,s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"formula-variable",children:"Click-through rate"}),s.jsx("span",{children:" = "}),s.jsx("span",{className:"formula-input",children:"total clicks"}),s.jsx("span",{className:"formula-operator",children:" / "}),s.jsx("span",{className:"formula-input",children:"total pageviews"})]}),$e.AVG_TIME_ON_PAGE,s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"formula-variable",children:"Average time on page"}),s.jsx("span",{children:" = "}),s.jsx("span",{className:"formula-input",children:"total time on page"}),s.jsx("span",{className:"formula-operator",children:" / "}),s.jsx("span",{className:"formula-input",children:"(total pageviews - total exits)"})]}),$e.PAGE_VIEWS,$e.RPV,s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"formula-variable",children:"Revenue per visitor"}),s.jsx("span",{children:" = "}),s.jsx("span",{className:"formula-input",children:"total revenue"}),s.jsx("span",{className:"formula-operator",children:" / "}),s.jsx("span",{className:"formula-input",children:"total visitors"})]}),$e.ADDED_TO_CART,$e.REACHED_CHECKOUT,$e.COMPLETE_CHECKOUT,$e.ORDERS,$e.CONVERSION_RATE,s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"formula-variable",children:"Conversion rate"}),s.jsx("span",{children:" = "}),s.jsx("span",{className:"formula-input",children:"sessions that completed checkout"}),s.jsx("span",{className:"formula-operator",children:" / "}),s.jsx("span",{className:"formula-input",children:"total sessions"})]}),$e.AOV,s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"formula-variable",children:"Average order value"}),s.jsx("span",{children:" = "}),s.jsx("span",{className:"formula-input",children:"total revenue"}),s.jsx("span",{className:"formula-operator",children:" / "}),s.jsx("span",{className:"formula-input",children:"total orders"})]}),$e.REVENUE,s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"formula-variable",children:"Revenue"}),s.jsx("span",{children:" = "}),s.jsx("span",{className:"formula-input",children:"gross sales"}),s.jsx("span",{className:"formula-operator",children:" - "}),s.jsx("span",{className:"formula-input",children:"discounts"})]}),$e.ADD_TO_CART_RATE,s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"formula-variable",children:"Added to cart rate"}),s.jsx("span",{children:" = "}),s.jsx("span",{className:"formula-input",children:"sessions with cart additions"}),s.jsx("span",{className:"formula-operator",children:" / "}),s.jsx("span",{className:"formula-input",children:"total sessions"})]}),$e.CART_ADDITION,$e.VISITOR_ITEMS,$e.DEVICE_ITEMS,$e.TRAFFIC_SOURCE_ITEMS,$e.PAGE_PATH_ANALYSIS,function(e){e.ALL_SESSION="ALL_SESSION",e.FIRST_SESSION="FIRST_SESSION",e.PAGE_ONLY="PAGE_ONLY"}(be||(be={})),function(e){e.NEW="new",e.RETURNING="returning"}(Ve||(Ve={})),function(e){e.DESKTOP="desktop",e.MOBILE="mobile",e.TABLET="tablet"}(Qe||(Qe={})),function(e){e.DIRECT="direct",e.EMAIL="email",e.REFERRAL="referral",e.ORGANIC_SOCIAL="organic-social",e.ORGANIC_SEARCH="organic-search",e.PAID_SOCIAL="paid-social",e.PAID_SEARCH="paid-search",e.SMS="sms"}(He||(He={})),function(e){e.CONTENT_TESTING="content-testing",e.PAGE_OPT="page-optimize",e.FUNNEL_OPT="funnel-optimize",e.PROFIT_OPT="profit-optimize",e.TRIAL_PAGE_OPT="trial-page-optimize",e.TRIAL_FUNNEL_OPT="trial-funnel-optimize",e.TRIAL_PROFIT_OPT="trial-profit-optimize"}(We||(We={})),function(e){e.TRIAL_PAGE_OPT="TRIAL_PAGE_OPT",e.TRIAL_FUNNEL_OPT="TRIAL_FUNNEL_OPT",e.TRIAL_PROFIT_OPT="TRIAL_PROFIT_OPT",e.ACTIVE_PAGE_OPT="ACTIVE_PAGE_OPT",e.ACTIVE_FUNNEL_OPT="ACTIVE_FUNNEL_OPT",e.ACTIVE_PROFIT_OPT="ACTIVE_PROFIT_OPT",e.LOADING_PLAN="LOADING_PLAN",e.TRIAL_EXPIRED="TRIAL_EXPIRED",e.ACTIVE_PAGE_OPT_AND_TRIAL_PAGE_OPT="ACTIVE_PAGE_OPT_AND_TRIAL_PAGE_OPT",e.ACTIVE_PAGE_OPT_AND_TRIAL_FUNNEL_OPT="ACTIVE_PAGE_OPT_AND_TRIAL_FUNNEL_OPT",e.ACTIVE_FUNNEL_OPT_AND_TRIAL_FUNNEL_OPT="ACTIVE_FUNNEL_OPT_AND_TRIAL_FUNNEL_OPT"}(Ke||(Ke={})),Ve.NEW,Ve.RETURNING,Qe.DESKTOP,Qe.TABLET,Qe.MOBILE,He.DIRECT,He.EMAIL,He.REFERRAL,He.ORGANIC_SOCIAL,He.ORGANIC_SEARCH,He.PAID_SOCIAL,He.PAID_SEARCH,He.SMS,l.create(e=>({currencyRates:null,setCurrencyRates:r=>e({currencyRates:r})}));const we=o.createContext({getTextPrice:e=>"string"==typeof e?e:`${e??0}`});var Be;e.GPaginationDirection=void 0,(Be=e.GPaginationDirection||(e.GPaginationDirection={})).NEXT="NEXT",Be.PREV="PREV";e.CLAUSE_KEYWORDS=M,e.CLAUSE_KEYWORD_BOUNDARY=L,e.COMPARE_PREFIX=u,e.COMPARE_SUFFIX=m,e.COMPARE_TOTALS_SUFFIX=d,e.ColumnSelectFragmentDoc=Ge,e.DATE_QUERY_FORMAT=h,e.DEFAULT_QUERY_LIMIT=G,e.GemXqlResultSelectFragmentDoc=ve,e.GemxQlDocument=Ue,e.NONE_VALUE=E,e.OPERATOR_IS=T,e.OPERATOR_IS_ONE_OF=A,e.PLACEHOLDER_VALUE="-",e.ROW_READER_MODE_CONFIG=g,e.TOTALS_SUFFIX=c,e.TableDataSelectFragmentDoc=xe,e.buildConditionQuery=Q,e.buildExtraCondition=U,e.buildExtraConditions=Y,e.buildFromQuery=W,e.buildGemXQlQuery=e=>{const{mode:r,metrics:t,dimensions:a,dateRange:i,compareDateRange:n,filters:s,overrideFilters:o,versionIds:l,extraConditions:E,orderBy:c,sources:u,timeDimension:m,groupWithClause:d,timezone:T,limit:A=G,offset:p,extraOrderByFields:O}=e,R=[...a,...V(c,t),...O??[]],_=[z(r),W(u),te(t),w(a,d),Ie(m),Re({dateRange:i,compareDateRange:n,timeDimension:m,overrideFilters:o}),Ne(T),Q({filters:s,overrideFilters:o,versionIds:l,extraConditions:E}),ee(c,R),q(A),J(p)].filter(Boolean).join(" ");return Ce(_)?_:""},e.buildGroupQuery=w,e.buildLimitQuery=q,e.buildModeQuery=z,e.buildOffsetQuery=J,e.buildOrderByQuery=ee,e.buildShowQuery=te,e.buildTimeQuery=Re,e.buildTimeSeriesQuery=Ie,e.buildTimezoneQuery=Ne,e.buildVersionIdCondition=b,e.createNumericRowReader=(r,t=e.ERowReaderMode.DEFAULT)=>e=>{const{prefix:a,suffix:i}=g[t],n=r[`${a}${e}${i}`];if("number"==typeof n)return n;if("string"==typeof n){const e=parseFloat(n);return isNaN(e)?0:e}return 0},e.extractColumnTypes=e=>{const r=Pe(e),t={};for(const e of r)e?.name&&(t[e.name]=e.dataType);return t},e.extractQueryColumns=Pe,e.extractQueryRows=e=>e?.gemxQLQuery?.tableData?.rows??[],e.filterConfigs=j,e.formatAnalyticData=ye,e.formatAnalyticDate=De,e.generateFilterConditions=$,e.getComparisonKey=e=>`${u}${e}${m}`,e.getComparisonTotalsKey=e=>`${u}${e}${m}${c}`,e.getFirstMetricInOrderBy=V,e.getTimeDimensionByDate=(r,t)=>{const a=t.diff(r,"day");return a<=3?e.ETimeDimension.HOUR:a<=93?e.ETimeDimension.DAY:e.ETimeDimension.MONTH},e.getTotalsKey=e=>`${e}${c}`,e.hasMetricData=Fe,e.isValidQueryInput=Ce,e.parseBreakdownItems=e=>Me(e)?.map(e=>({...e,total:Number(e.total)})),e.parseConditionQuery=H,e.parseFromQuery=K,e.parseGemXQlQuery=e=>{const{dateRange:r,compareDateRange:t,timeDimension:a,overrideFilters:i}=_e(e),n=a??fe(e),{dimensions:s,groupWithClause:o}=B(e),{filters:l,versionIds:E}=H(e);return{mode:k(e),sources:K(e),metrics:ae(e),dimensions:s,groupWithClause:o,timeDimension:n,dateRange:r,compareDateRange:t,overrideFilters:i,filters:l,versionIds:E,timezone:Se(e),orderBy:re(e),limit:X(e),offset:Z(e)}},e.parseGroupQuery=B,e.parseJsonArray=Me,e.parseJsonObject=he,e.parseLimitQuery=X,e.parseModeQuery=k,e.parseOffsetQuery=Z,e.parseOrderByQuery=re,e.parsePageItems=e=>he(e),e.parseShowQuery=ae,e.parseTimeQuery=_e,e.parseTimeSeriesQuery=fe,e.parseTimezoneQuery=Se,e.readNumeric=Le,e.useAnalyticData=({getTextPrice:e}={})=>{const{getTextPrice:r}=o.useContext(we),t=e??r,a=({value:e,formatter:r,name:a})=>ye({value:e,formatter:r,getTextPrice:t,name:a});return{formatData:a,computeMetric:({metric:e,previousMetric:r,metricKey:t,formatter:i})=>{if(!Fe(e))return{value:0,change:"-"};const n=Le(e,t),s=Le(r,t),o=a({value:n,formatter:i,name:t});if(0===n&&0!==s)return{value:o,change:-100};if(0===s)return{value:o,change:"-"};return{value:o,change:(n-s)/s*100}}}},e.useCustomGemXQlQuery=Ye,e.useGemXQlPagination=({resetKey:r,itemsPerPage:t})=>{const[a,i]=o.useState(1),n=o.useRef(),s=a>1&&void 0!==n.current&&n.current!==r?1:a,l=(s-1)*t,E=o.useCallback(r=>t=>{i(a=>{const i=t===e.GPaginationDirection.NEXT?a+1:a-1;return Math.min(Math.max(i,1),r)})},[]);o.useEffect(()=>{n.current!==r&&(n.current=r,i(1))},[r]);const c=o.useCallback(({totalRecords:e,isLoading:r})=>{const a=Math.max(1,Math.ceil(e/t));return{currentPage:s,totalPages:a,loading:r,handlePageChange:E(a)}},[s,t,E]);return{currentPage:s,offset:l,buildPagination:c}},e.useGemxQlNamedQuery=je});