@levi-gemcommerce/analytics 1.0.0-dev.12 → 1.0.0-dev.14
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.
- package/dist/esm/components/GTimePicker/GTimePicker.d.ts +17 -0
- package/dist/esm/components/GTimePicker/components/BaseTimePicker.d.ts +10 -0
- package/dist/esm/components/GTimePicker/components/CompareTimePicker.d.ts +5 -0
- package/dist/esm/components/GTimePicker/components/DateTimeFilterAddition.d.ts +2 -0
- package/dist/esm/components/GTimePicker/components/DateTimeFilterInputs.d.ts +9 -0
- package/dist/esm/components/GTimePicker/components/DateTimeFilters.d.ts +15 -0
- package/dist/esm/components/GTimePicker/components/MainTimePicker.d.ts +3 -0
- package/dist/esm/components/GTimePicker/components/index.d.ts +2 -0
- package/dist/esm/components/GTimePicker/constants/compareDateTimePicker.d.ts +12 -0
- package/dist/esm/components/GTimePicker/constants/datePicker.d.ts +14 -0
- package/dist/esm/components/GTimePicker/constants/index.d.ts +2 -0
- package/dist/esm/components/GTimePicker/constants/mainDataTimePicker.d.ts +14 -0
- package/dist/esm/components/GTimePicker/contexts/DateTimePickerProvider.d.ts +15 -0
- package/dist/esm/components/GTimePicker/contexts/index.d.ts +1 -0
- package/dist/esm/components/GTimePicker/helpers/date-range-info.d.ts +16 -0
- package/dist/esm/components/GTimePicker/helpers/index.d.ts +4 -0
- package/dist/esm/components/GTimePicker/helpers/parse-date.d.ts +24 -0
- package/dist/esm/components/GTimePicker/helpers/time-picker.d.ts +76 -0
- package/dist/esm/components/GTimePicker/helpers/version.d.ts +2 -0
- package/dist/esm/components/GTimePicker/hooks/index.d.ts +3 -0
- package/dist/esm/components/GTimePicker/hooks/useCompareDateTimePicker.d.ts +25 -0
- package/dist/esm/components/GTimePicker/hooks/useDateTimeFilter.d.ts +18 -0
- package/dist/esm/components/GTimePicker/hooks/useDateTimePicker.d.ts +30 -0
- package/dist/esm/components/GTimePicker/hooks/useVersionDateTimeFilters.d.ts +9 -0
- package/dist/esm/components/GTimePicker/index.d.ts +7 -0
- package/dist/esm/components/GTimePicker/types/index.d.ts +38 -0
- package/dist/esm/components/index.d.ts +1 -0
- package/dist/esm/constants/breakdown-targets.d.ts +1 -1
- package/dist/esm/core/gemxql/builder/clauses/mode-query.d.ts +1 -1
- package/dist/esm/core/gemxql/helpers/getTimeDimension.d.ts +1 -1
- package/dist/esm/core/gemxql/index.d.ts +3 -6
- package/dist/esm/core/gemxql/types/date-filter.d.ts +1 -1
- package/dist/esm/core/gemxql/types/index.d.ts +0 -2
- package/dist/esm/gemxql.js +159 -204
- package/dist/esm/gemxql.mjs +159 -204
- package/dist/esm/index.d.ts +1 -3
- package/dist/esm/index.js +2041 -2080
- package/dist/esm/index.mjs +2041 -2080
- package/dist/esm/shared/charts/components/GPolarisViz/utilities/getFontSize.d.ts +1 -1
- package/dist/esm/shared/components/GTimePicker/GTimePicker.d.ts +1 -1
- package/dist/esm/shared/components/GTimePicker/helpers/parse-date.d.ts +2 -2
- package/dist/esm/shared/components/GTimePicker/hooks/useCompareDateTimePicker.d.ts +1 -2
- package/dist/esm/shared/components/GTimePicker/types/index.d.ts +1 -1
- package/dist/esm/shared/components/index.d.ts +0 -1
- package/dist/esm/types/breakdown-items.d.ts +19 -0
- package/dist/esm/types/index.d.ts +1 -0
- package/dist/esm/types.js +24 -1
- package/dist/esm/types.mjs +24 -1
- package/dist/esm/utils/analytics.d.ts +12 -0
- package/dist/esm/utils/dayjs.d.ts +10 -0
- package/dist/esm/utils/index.d.ts +2 -0
- package/dist/umd/esm/components/GTimePicker/GTimePicker.d.ts +17 -0
- package/dist/umd/esm/components/GTimePicker/components/BaseTimePicker.d.ts +10 -0
- package/dist/umd/esm/components/GTimePicker/components/CompareTimePicker.d.ts +5 -0
- package/dist/umd/esm/components/GTimePicker/components/DateTimeFilterAddition.d.ts +2 -0
- package/dist/umd/esm/components/GTimePicker/components/DateTimeFilterInputs.d.ts +9 -0
- package/dist/umd/esm/components/GTimePicker/components/DateTimeFilters.d.ts +15 -0
- package/dist/umd/esm/components/GTimePicker/components/MainTimePicker.d.ts +3 -0
- package/dist/umd/esm/components/GTimePicker/components/index.d.ts +2 -0
- package/dist/umd/esm/components/GTimePicker/constants/compareDateTimePicker.d.ts +12 -0
- package/dist/umd/esm/components/GTimePicker/constants/datePicker.d.ts +14 -0
- package/dist/umd/esm/components/GTimePicker/constants/index.d.ts +2 -0
- package/dist/umd/esm/components/GTimePicker/constants/mainDataTimePicker.d.ts +14 -0
- package/dist/umd/esm/components/GTimePicker/contexts/DateTimePickerProvider.d.ts +15 -0
- package/dist/umd/esm/components/GTimePicker/contexts/index.d.ts +1 -0
- package/dist/umd/esm/components/GTimePicker/helpers/date-range-info.d.ts +16 -0
- package/dist/umd/esm/components/GTimePicker/helpers/index.d.ts +4 -0
- package/dist/umd/esm/components/GTimePicker/helpers/parse-date.d.ts +24 -0
- package/dist/umd/esm/components/GTimePicker/helpers/time-picker.d.ts +76 -0
- package/dist/umd/esm/components/GTimePicker/helpers/version.d.ts +2 -0
- package/dist/umd/esm/components/GTimePicker/hooks/index.d.ts +3 -0
- package/dist/umd/esm/components/GTimePicker/hooks/useCompareDateTimePicker.d.ts +25 -0
- package/dist/umd/esm/components/GTimePicker/hooks/useDateTimeFilter.d.ts +18 -0
- package/dist/umd/esm/components/GTimePicker/hooks/useDateTimePicker.d.ts +30 -0
- package/dist/umd/esm/components/GTimePicker/hooks/useVersionDateTimeFilters.d.ts +9 -0
- package/dist/umd/esm/components/GTimePicker/index.d.ts +7 -0
- package/dist/umd/esm/components/GTimePicker/types/index.d.ts +38 -0
- package/dist/umd/esm/components/index.d.ts +1 -0
- package/dist/umd/esm/constants/breakdown-targets.d.ts +1 -1
- package/dist/umd/esm/core/gemxql/builder/clauses/mode-query.d.ts +1 -1
- package/dist/umd/esm/core/gemxql/helpers/getTimeDimension.d.ts +1 -1
- package/dist/umd/esm/core/gemxql/index.d.ts +3 -6
- package/dist/umd/esm/core/gemxql/types/date-filter.d.ts +1 -1
- package/dist/umd/esm/core/gemxql/types/index.d.ts +0 -2
- package/dist/umd/esm/index.d.ts +1 -3
- package/dist/umd/esm/shared/charts/components/GPolarisViz/utilities/getFontSize.d.ts +1 -1
- package/dist/umd/esm/shared/components/GTimePicker/GTimePicker.d.ts +1 -1
- package/dist/umd/esm/shared/components/GTimePicker/helpers/parse-date.d.ts +2 -2
- package/dist/umd/esm/shared/components/GTimePicker/hooks/useCompareDateTimePicker.d.ts +1 -2
- package/dist/umd/esm/shared/components/GTimePicker/types/index.d.ts +1 -1
- package/dist/umd/esm/shared/components/index.d.ts +0 -1
- package/dist/umd/esm/types/breakdown-items.d.ts +19 -0
- package/dist/umd/esm/types/index.d.ts +1 -0
- package/dist/umd/esm/utils/analytics.d.ts +12 -0
- package/dist/umd/esm/utils/dayjs.d.ts +10 -0
- package/dist/umd/esm/utils/index.d.ts +2 -0
- package/dist/umd/gemxql.js +1 -1
- package/dist/umd/index.js +1 -1
- package/dist/umd/types.js +1 -1
- package/package.json +1 -1
package/dist/umd/esm/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function getFontSize():
|
|
1
|
+
export declare function getFontSize(): 11 | 12;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { GButtonProps } from '
|
|
1
|
+
import type { GButtonProps } from '../GButton';
|
|
2
2
|
import type { ButtonProps, PopoverProps } from '@shopify/polaris';
|
|
3
3
|
import type { IDateTimeFilterAddition } from './components';
|
|
4
4
|
import type { DateTimeFilter } from './types';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Dayjs } from '
|
|
2
|
-
import { dayjs } from '
|
|
1
|
+
import type { Dayjs } from '../../../../utils';
|
|
2
|
+
import { dayjs } from '../../../../utils';
|
|
3
3
|
export declare function parseYearMonthDayDateString(input?: dayjs.ConfigType): number;
|
|
4
4
|
export declare function isDate(date: number | string | Date): boolean;
|
|
5
5
|
export declare function isValidYearMonthDayDateString(date: string): boolean;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { IDateTimePickerProps } from './useDateTimePicker';
|
|
2
|
-
|
|
3
|
-
}
|
|
2
|
+
type ICompareDateTimePickerProps = IDateTimePickerProps;
|
|
4
3
|
export declare const useCompareDateTimePicker: ({ ranges, onApply }: ICompareDateTimePickerProps) => {
|
|
5
4
|
month: number;
|
|
6
5
|
year: number;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare enum EVisitorType {
|
|
2
|
+
NEW = "new",
|
|
3
|
+
RETURNING = "returning"
|
|
4
|
+
}
|
|
5
|
+
export declare enum EDeviceType {
|
|
6
|
+
DESKTOP = "desktop",
|
|
7
|
+
MOBILE = "mobile",
|
|
8
|
+
TABLET = "tablet"
|
|
9
|
+
}
|
|
10
|
+
export declare enum ETrafficSourceType {
|
|
11
|
+
DIRECT = "direct",
|
|
12
|
+
EMAIL = "email",
|
|
13
|
+
REFERRAL = "referral",
|
|
14
|
+
ORGANIC_SOCIAL = "organic-social",
|
|
15
|
+
ORGANIC_SEARCH = "organic-search",
|
|
16
|
+
PAID_SOCIAL = "paid-social",
|
|
17
|
+
PAID_SEARCH = "paid-search",
|
|
18
|
+
SMS = "sms"
|
|
19
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare enum AnalyticInterval {
|
|
2
|
+
DAY = "DAY",
|
|
3
|
+
HOUR = "HOUR",
|
|
4
|
+
MONTH = "MONTH",
|
|
5
|
+
QUARTER = "QUARTER",
|
|
6
|
+
WEEK = "WEEK",
|
|
7
|
+
YEAR = "YEAR"
|
|
8
|
+
}
|
|
9
|
+
export declare const getTimeDurationLabel: (valueInSeconds: number) => string;
|
|
10
|
+
export declare const getFormattedByInterval: (value: string | number | null, interval?: AnalyticInterval, options?: {
|
|
11
|
+
isExpandDetail?: boolean;
|
|
12
|
+
}) => string;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ConfigType, Dayjs } from 'dayjs';
|
|
2
|
+
import dayjs from 'dayjs';
|
|
3
|
+
export declare function getInitialTimezone(): string;
|
|
4
|
+
export declare function setTz(value: string): void;
|
|
5
|
+
export declare const dayjsTz: (date?: ConfigType) => Dayjs;
|
|
6
|
+
export declare const convertDateToTz: (date?: ConfigType) => Dayjs;
|
|
7
|
+
export declare const dayjsTzToLocalTZ: (date?: ConfigType) => Dayjs;
|
|
8
|
+
export declare const dayjsTzToDate: (date?: ConfigType) => Date;
|
|
9
|
+
export { dayjs };
|
|
10
|
+
export type { Dayjs };
|
package/dist/umd/gemxql.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@tanstack/react-query"),require("dayjs"),require("dayjs/plugin/quarterOfYear.js"),require("dayjs/plugin/timezone.js"),require("dayjs/plugin/utc.js"),require("react")):"function"==typeof define&&define.amd?define(["exports","@tanstack/react-query","dayjs","dayjs/plugin/quarterOfYear.js","dayjs/plugin/timezone.js","dayjs/plugin/utc.js","react"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).GemAnalytics={},e.reactQuery,e.dayjs,e.quarterOfYear,e.timezone,e.utc,e.React)}(this,function(e,t,r,i,a,n,o){"use strict";const s="\n fragment ColumnSelect on Column {\n dataType\n displayName\n name\n}\n ",l="\n fragment TableDataSelect on TableData {\n columns {\n ...ColumnSelect\n }\n rows\n}\n ",E="\n fragment GemXQLResultSelect on GemxQLResult {\n tableData {\n ...TableDataSelect\n }\n}\n ",u=`\n query GemxQL($input: String!) {\n gemxQLQuery(query: $input) {\n ...GemXQLResultSelect\n }\n}\n ${E}\n${l}\n${s}`,c=(e,r,i)=>t.useQuery({queryKey:["GemXQlCustom",e],queryFn:r(u,e),...i});c.getKey=e=>["GemXQlCustom",e];const m=({name:e,variables:r,fetcher:i},a)=>{const n=u.replace(/query\s+GemxQL\b/,`query ${e}`);return t.useQuery({queryKey:[e,r],queryFn:i(n,r),retry:0,...a})};m.getKey=(e,t)=>[e,t];const d="None",p="___totals",A="comparison___",T="___previous_period",R=`${T}${p}`,O="is",f="is_one_of";var y,I,S,D,F,M,_,g,N,C,P,v,h,G,Y,$,L;e.EAnalyticDataType=void 0,(y=e.EAnalyticDataType||(e.EAnalyticDataType={})).DATE="DATE",y.ARRAY="ARRAY",y.OBJECT="OBJECT",y.STRING="STRING",y.INTEGER="INTEGER",y.CURRENCY="CURRENCY",y.PERCENT="PERCENT",y.DURATION="DURATION",y.MONTH="MONTH_TIMESTAMP",y.QUARTER="QUARTER_TIMESTAMP",y.DAY="DAY_TIMESTAMP",y.WEEK="WEEK_TIMESTAMP",y.YEAR="YEAR_TIMESTAMP",y.HOUR="HOUR_TIMESTAMP",e.EAnalyticColumnKey=void 0,(I=e.EAnalyticColumnKey||(e.EAnalyticColumnKey={})).CAMPAIGNS="experiments",I.VISITOR_ITEMS="visitor_items",I.DEVICE_ITEMS="device_items",I.TRAFFIC_SOURCE_ITEMS="traffic_source_items",e.EAnalyticMode=void 0,(S=e.EAnalyticMode||(e.EAnalyticMode={})).ALL_SESSION="ALL_SESSION",S.FIRST_SESSION="FIRST_SESSION",S.PAGE_ONLY="PAGE_ONLY",e.EAnalyticSource=void 0,(D=e.EAnalyticSource||(e.EAnalyticSource={})).SESSIONS="sessions",D.SALES="sales",e.EVisitorType=void 0,(F=e.EVisitorType||(e.EVisitorType={})).NEW="new",F.RETURNING="returning",e.EDeviceType=void 0,(M=e.EDeviceType||(e.EDeviceType={})).DESKTOP="desktop",M.MOBILE="mobile",M.TABLET="tablet",e.ETrafficSourceType=void 0,(_=e.ETrafficSourceType||(e.ETrafficSourceType={})).DIRECT="direct",_.EMAIL="email",_.REFERRAL="referral",_.ORGANIC_SOCIAL="organic-social",_.ORGANIC_SEARCH="organic-search",_.PAID_SOCIAL="paid-social",_.PAID_SEARCH="paid-search",_.SMS="sms",e.EComparisonOperator=void 0,(g=e.EComparisonOperator||(e.EComparisonOperator={})).EQ="=",g.IN="IN",g.LIKE="LIKE",e.EGroupOperator=void 0,(N=e.EGroupOperator||(e.EGroupOperator={})).OR="OR",N.AND="AND",e.EFilterField=void 0,(C=e.EFilterField||(e.EFilterField={})).DEVICE="device",C.DEVICES="devices",C.VISITOR="visitor_type",C.VISITORS="visitor_types",C.TRAFFIC_SOURCE="traffic_source",C.TRAFFIC_SOURCES="traffic_sources",C.VERSION="version",C.VERSIONS="versions",C.SINGLE_PAGE="page_path",C.LIST_PAGE="page_paths",C.GROUP_CAMPAIGN_ITEM="group_campaign_item",C.GROUP_CAMPAIGN_ITEMS="group_campaign_items",C.SINGLE_CAMPAIGN="experiment_id",C.GROUP_CAMPAIGN="experiment_group_id",C.CAMPAIGN_VERSION_ID="version_id",C.GROUP_CAMPAIGN_VERSION_ID="group_version_id",e.EOperatorField=void 0,(P=e.EOperatorField||(e.EOperatorField={})).DEVICE_OPERATOR="deviceOperator",P.VISITOR_OPERATOR="visitorOperator",P.TRAFFIC_SOURCE_OPERATOR="trafficSourceOperator",P.VERSION_OPERATOR="versionOperator",P.PAGE_OPERATOR="pageOperator",P.CAMPAIGN_ITEM_OPERATOR="campaignItemOperator",e.EGroupWithClause=void 0,(v=e.EGroupWithClause||(e.EGroupWithClause={})).NONE="",v.TOTALS="TOTALS",v.ALL="WITH GROUP_TOTALS, TOTALS",e.EOrderDirectionType=void 0,(h=e.EOrderDirectionType||(e.EOrderDirectionType={})).ASC="ASC",h.DESC="DESC",e.EPageMetric=void 0,(G=e.EPageMetric||(e.EPageMetric={})).PAGE_ITEMS="page_items",G.PAGE_PATHS="page_paths",e.EPageDimension=void 0,(e.EPageDimension||(e.EPageDimension={})).PAGE_PATH="page_path",e.EPageField=void 0,(Y=e.EPageField||(e.EPageField={})).SHOPIFY_PAGE_ID="shopify_page_id",Y.LOCATION_PATH="location_path",Y.PAGE_TYPE="page_type",Y.PAGE_TITLE="page_title",Y.PAGE_PATH="page_path",Y.TEMPLATE_SUFFIX="template_suffix",e.ERowReaderMode=void 0,($=e.ERowReaderMode||(e.ERowReaderMode={})).DEFAULT="DEFAULT",$.COMPARISON="COMPARISON",$.TOTALS="TOTALS",$.COMPARISON_TOTALS="COMPARISON_TOTALS",e.ETimeDimension=void 0,(L=e.ETimeDimension||(e.ETimeDimension={})).HOUR="hour",L.DAY="day",L.WEEK="week",L.MONTH="month",L.QUARTER="quarter",L.YEAR="year";const b={[e.ERowReaderMode.DEFAULT]:{prefix:"",suffix:""},[e.ERowReaderMode.COMPARISON]:{prefix:A,suffix:T},[e.ERowReaderMode.TOTALS]:{prefix:"",suffix:p},[e.ERowReaderMode.COMPARISON_TOTALS]:{prefix:A,suffix:R}},U="YYYY-MM-DDTHH:mm:ss",Q=["MODE","FROM","SHOW","GROUP BY","TIMESERIES","SINCE","DURING","TIMEZONE","WHERE","ORDER BY","LIMIT","OFFSET"],x=Q.join("|"),H=1e3,V=e.EGroupOperator.OR,j=(e,t=V)=>e.length?1===e.length?e[0]??"":`(${e.join(` ${t} `)})`:"",W=t=>{switch(t.operator){case e.EComparisonOperator.EQ:return(({fields:e,value:t,groupOperator:r})=>e.length?j(e.map(e=>`${e} = ${t}`),r):"")(t);case e.EComparisonOperator.IN:return(({fields:e,values:t,groupOperator:r})=>e.length&&t.length?j(e.map(e=>`${e} IN (${t.join(", ")})`),r):"")(t);case e.EComparisonOperator.LIKE:return(({fields:e,value:t,groupOperator:r})=>{const i=t.trim();return i&&e.length?j(e.map(e=>`${e} LIKE '%${i}%'`),r):""})(t)}},B=e=>e?.length?e.map(W).filter(Boolean):[],K=[{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:O,singleField:e.EFilterField.SINGLE_CAMPAIGN,multiField:e.EFilterField.GROUP_CAMPAIGN}],w=(e,t)=>{const r=[],i=Object.keys(e).length>0,a=!!t&&Object.keys(t).length>0;if(!i&&!a)return r;const n=(e=>e?Object.fromEntries(Object.entries(e).filter(([,e])=>void 0!==e).map(([e,t])=>[e,Array.isArray(t)?`${e} IN (${t.join(", ")})`:`${e} = ${t}`])):{})(t);return K.forEach(({operator:t,operatorVal:i,singleField:a,multiField:o,condition:s,fieldName:l})=>{if(n[a])return void r.push(n[a]);const E=t?e[t]:i;let u=e[a];const c=e[o],m=s&&e[s];if(s&&!m)return;const d=l??(u?a:o);i&&!u&&(u=e[o]);const p=(e=>{const{operatorValue:t,singleValue:r,multiValue:i,fieldName:a}=e;return t===O&&r?`${a} = ${r}`:t===f&&Array.isArray(i)&&i.length>0?`${a} IN (${i.join(", ")})`:""})({operatorValue:E,singleValue:Array.isArray(u)?void 0:u,multiValue:Array.isArray(c)?c:void 0,fieldName:d});p&&r.push(p)}),r},q=e=>{const t=[];return e?(Object.entries(e).forEach(([e,r])=>{r&&t.push(`${e} = ${r}`)}),t):t},z=(e,t)=>{if(!e||0===t.length)return[];const r=t.find(t=>e[t]);return r?[r]:[]},X=({filters:e,overrideFilters:t,versionIds:r,extraConditions:i})=>{const a=[...w(e,t),...q(r),...B(i)];return a.length>0?`WHERE ${a.join(" AND ")}`:""},k=e=>{const t=e.match(new RegExp(`\\bWHERE\\s+([\\s\\S]+?)(?=\\s+(?:${x})\\b|$)`,"i"));if(!t)return{filters:{}};const r=(t[1]??"").trim().split(/\s+AND\s+/i),i={},a={};return r.forEach(e=>{const t=e.trim(),r=t.match(/^(\S+)\s+IN\s+\((.+)\)$/i);if(r){const e=r[1]??"",t=(r[2]??"").split(",").map(e=>e.trim()),a=K.find(t=>t.fieldName===e||t.multiField===e);return void(a?.operator&&(i[a.multiField]=t,i[a.operator]=f))}const n=t.match(/^(\S+)\s+=\s+(.+)$/);if(n){const e=n[1]??"",t=n[2]??"",r=K.find(t=>t.fieldName===e||t.singleField===e);r?(i[r.singleField]=t,r.operator&&(i[r.operator]=O)):e&&(a[e]=t)}}),{filters:i,versionIds:Object.keys(a).length>0?a:void 0}},J=e=>`FROM ${e.join(", ")}`,Z=e=>{const t=e.match(new RegExp(`\\bFROM\\s+([\\s\\S]+?)(?=\\s+(?:${x})\\b)`,"i"));return t?(t[1]??"").split(",").map(e=>e.trim()).filter(Boolean):[]},ee=(t,r=e.EGroupWithClause.ALL)=>0===t.length?"":`GROUP BY ${t.join(", ")} ${r}`,te=t=>{const r=t.match(new RegExp(`\\bGROUP BY\\s+([\\s\\S]+?)(?=\\s+(?:${x})\\b)`,"i"));if(!r)return{dimensions:[]};const i=(r[1]??"").trim(),a=i.toUpperCase().indexOf(" WITH ");return-1===a?{dimensions:i.split(",").map(e=>e.trim()).filter(Boolean),groupWithClause:e.EGroupWithClause.NONE}:{dimensions:i.slice(0,a).split(",").map(e=>e.trim()).filter(Boolean),groupWithClause:i.slice(a+1).trim()}},re=e=>e?`LIMIT ${e}`:"",ie=e=>{const t=e.match(/\bLIMIT\s+(\d+)/i);return t?parseInt(t[1]??"0",10):void 0},ae=e=>`MODE ${e}`,ne=e=>{const t=e.match(/\bMODE\s+(\S+)/i);return t?.[1]},oe=e=>!e||e<0?"":`OFFSET ${e}`,se=e=>{const t=e.match(/\bOFFSET\s+(\d+)/i);return t?parseInt(t[1]??"0",10):void 0},le=(e,t)=>{if(!e)return"";const r=Object.values(e).filter(e=>t?.includes(e.field)).map(e=>`${e.field} ${e.direction}`).join(", ");return r?`ORDER BY ${r}`:""},Ee=e=>{const t=e.match(new RegExp(`\\bORDER BY\\s+([\\s\\S]+?)(?=\\s+(?:${x})\\b|$)`,"i"));if(!t)return;const r={};return(t[1]??"").split(",").forEach(e=>{const t=e.trim().split(/\s+/);if(2===t.length){const e=t[0]??"",i=t[1]??"";e&&(r[e]={field:e,direction:i})}}),Object.keys(r).length>0?r:void 0},ue=e=>`SHOW ${e.join(", ")}`,ce=e=>{const t=e.match(new RegExp(`\\bSHOW\\s+([\\s\\S]+?)(?=\\s+(?:${x})\\b)`,"i"));return t?(t[1]??"").split(",").map(e=>e.trim()).filter(Boolean):[]};r.extend(n),r.extend(a),r.extend(i);let me="UTC";const de="YYYY-MM-DD HH:mm:ss";function pe(){return me}const Ae=e=>e?r(e).tz(me):r().tz(me),Te=e=>"string"==typeof e?Ae(e):e,Re=(e,t=!1)=>t&&(e=>0===e.hour()&&0===e.minute())(e)?e.endOf("day").format(U):e.format(U),Oe=e=>{const t=Te(e.startDate),r=Te(e.endDate);return t.isSame(r)?{dateGTE:Re(t),dateLTE:(i=r,Re(i?Ae(i).endOf("day"):Ae().endOf("day")))}:{dateGTE:Re(t),dateLTE:Re(r,!0)};var i},fe=e=>{const{dateRange:t,compareDateRange:r,overrideFilters:i,timeDimension:a}=e,n=a?i?.[a]:void 0;if(a&&n)return`DURING (${n}, ${a})`;if(!t)return"";const{dateGTE:o,dateLTE:s}=Oe(t),{dateGTE:l,dateLTE:E}=r?Oe(r):{};return`SINCE ${o} UNTIL ${s} ${r?`COMPARE TO ${l} UNTIL ${E}`:""}`},ye=e=>{const t=e.match(/\bDURING\s+\(([^,]+),\s*([^)]+)\)/i);if(t){const e=t[1]??"",r=t[2]??"";return{timeDimension:r.trim(),overrideFilters:{[r.trim()]:e.trim()}}}const r=e.match(/\bSINCE\s+(\S+)\s+UNTIL\s+(\S+)/i);if(!r)return{};const i={startDate:Ae(r[1]??""),endDate:Ae(r[2]??"")},a=e.match(/\bCOMPARE TO\s+(\S+)\s+UNTIL\s+(\S+)/i);return{dateRange:i,compareDateRange:a?{startDate:Ae(a[1]??""),endDate:Ae(a[2]??"")}:void 0}},Ie=e=>e?`TIMESERIES ${e}`:"",Se=e=>{const t=e.match(/\bTIMESERIES\s+(\S+)/i);return t?.[1]},De=e=>{const t=e??pe();return t?`TIMEZONE ${t}`:""},Fe=e=>{const t=e.match(/\bTIMEZONE\s+(\S+)/i);return t?.[1]};function Me(e){if("string"!=typeof e)return!1;const t=e.trim();return/^MODE\b[\s\S]*\bFROM\b[\s\S]*\bSHOW\b[\s\S]*$/.test(t)}const _e=e=>e?.gemxQLQuery?.tableData?.columns??[],ge=/\.0+$/,Ne=(e,t=2)=>(e=>`${e}`.replace(ge,""))(e.toFixed(t)),Ce=(e,t,r=2)=>{const i=((e,t,r=2)=>{if("number"!=typeof e||!t)return;return 0===e?0:parseFloat(Ne(e/t*100,r))})(e,t,r);if("number"==typeof i)return(e=>e>0&&e<.005)(i)?"~0%":`${i}%`};var Pe;function ve(e){return e.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")}e.AnalyticInterval=void 0,(Pe=e.AnalyticInterval||(e.AnalyticInterval={})).DAY="DAY",Pe.HOUR="HOUR",Pe.MONTH="MONTH",Pe.QUARTER="QUARTER",Pe.WEEK="WEEK",Pe.YEAR="YEAR";const he=60,Ge=3600,Ye=e=>{let t=e;Number.isFinite(e)&&null!=e||(t=0);const r=Ne(t);if(t>=Ge){return`${Math.floor(t/Ge)}h ${Math.floor(t%Ge/he)}m ${Math.floor(t%he)}s`}if(t>=he){return`${Math.floor(t/he)}m ${Math.floor(t%he)}s`}return`${r}s`},$e=(t,r,i)=>{if(!t)return"";const a=i?.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 e.AnalyticInterval.HOUR:return Ae(t).format(a.formatHouse);case e.AnalyticInterval.DAY:case e.AnalyticInterval.WEEK:return Ae(t).format(a.formatDay);case e.AnalyticInterval.MONTH:return Ae(t).format(a.formatMonth);case e.AnalyticInterval.QUARTER:{const e=Ae(t);return`Q${e.quarter()} ${e.format("YYYY")}`}case e.AnalyticInterval.YEAR:return Ae(t).format(a.formatYear)}return Ae(t).format(a.formatMonth)},Le=e=>{if(!e)return"None";const t=Ae(e),r=Ae(),i=Ae().subtract(1,"day"),a=t.format("YYYY-MM-DD")===r.format("YYYY-MM-DD"),n=t.format("YYYY-MM-DD")===i.format("YYYY-MM-DD");if(a)return`Today at ${t.format("HH:mm")}`;if(n)return`Yesterday at ${t.format("HH:mm")}`;const o=r.diff(t,"day");return o>=0&&o<7?`${t.format("dddd")} at ${t.format("HH:mm")}`:`${t.format("MMM D")} at ${t.format("hh:mm a")}`},be=({value:t,formatter:r,getTextPrice:i,name:a})=>{if(null!==t&&("object"==typeof t||Array.isArray(t)))return t;switch(r){case e.EAnalyticDataType.INTEGER:return ve((t??0).toString());case e.EAnalyticDataType.CURRENCY:return i?i(t,!1):`${t??0}`;case e.EAnalyticDataType.DATE:return Le(t);case e.EAnalyticDataType.PERCENT:return"number"!=typeof t?Ce(0,1,2)??"":Ce(t/100,1,2)??"";case e.EAnalyticDataType.DURATION:return Ye(Number(t));case e.EAnalyticDataType.STRING:{const r=a===e.EAnalyticColumnKey.CAMPAIGNS?"":d;return t??r}case e.EAnalyticDataType.DAY:return $e(t,e.AnalyticInterval.DAY,{isExpandDetail:!0});case e.EAnalyticDataType.HOUR:return $e(t,e.AnalyticInterval.HOUR,{isExpandDetail:!0});case e.EAnalyticDataType.MONTH:return $e(t,e.AnalyticInterval.MONTH,{isExpandDetail:!0});case e.EAnalyticDataType.YEAR:return $e(t,e.AnalyticInterval.YEAR);case e.EAnalyticDataType.WEEK:return $e(t,e.AnalyticInterval.WEEK,{isExpandDetail:!0});case e.EAnalyticDataType.QUARTER:return $e(t,e.AnalyticInterval.QUARTER,{isExpandDetail:!0});case e.EAnalyticDataType.OBJECT:case e.EAnalyticDataType.ARRAY:return t;default:return`${t}`}},Ue=e=>{const t=e?.sessions;return"number"==typeof t&&t>0},Qe=e=>{if(e)return"string"==typeof e?JSON.parse(e):e},xe=e=>{try{const t=Qe(e);return t&&"object"==typeof t?t:null}catch{return null}},He=e=>{try{const t=Qe(e);if(!Array.isArray(t))return;return t}catch{return}},Ve=(e,t)=>{const r=e?.[t];return"number"==typeof r?r:0};var je;e.GPaginationDirection=void 0,(je=e.GPaginationDirection||(e.GPaginationDirection={})).NEXT="NEXT",je.PREV="PREV";e.CLAUSE_KEYWORDS=Q,e.CLAUSE_KEYWORD_BOUNDARY=x,e.COMPARE_PREFIX=A,e.COMPARE_SUFFIX=T,e.COMPARE_TOTALS_SUFFIX=R,e.ColumnSelectFragmentDoc=s,e.DATE_QUERY_FORMAT=U,e.DEFAULT_QUERY_LIMIT=H,e.GemXqlResultSelectFragmentDoc=E,e.GemxQlDocument=u,e.NONE_VALUE=d,e.OPERATOR_IS=O,e.OPERATOR_IS_ONE_OF=f,e.PLACEHOLDER_VALUE="-",e.ROW_READER_MODE_CONFIG=b,e.TOTALS_SUFFIX=p,e.TableDataSelectFragmentDoc=l,e.buildConditionQuery=X,e.buildExtraCondition=W,e.buildExtraConditions=B,e.buildFromQuery=J,e.buildGemXQlQuery=e=>{const{mode:t,metrics:r,dimensions:i,dateRange:a,compareDateRange:n,filters:o,overrideFilters:s,versionIds:l,extraConditions:E,orderBy:u,sources:c,timeDimension:m,groupWithClause:d,timezone:p,limit:A=H,offset:T,extraOrderByFields:R}=e,O=[...i,...z(u,r),...R??[]],f=[ae(t),J(c),ue(r),ee(i,d),Ie(m),fe({dateRange:a,compareDateRange:n,timeDimension:m,overrideFilters:s}),De(p),X({filters:o,overrideFilters:s,versionIds:l,extraConditions:E}),le(u,O),re(A),oe(T)].filter(Boolean).join(" ");return Me(f)?f:""},e.buildGroupQuery=ee,e.buildLimitQuery=re,e.buildModeQuery=ae,e.buildOffsetQuery=oe,e.buildOrderByQuery=le,e.buildShowQuery=ue,e.buildTimeQuery=fe,e.buildTimeSeriesQuery=Ie,e.buildTimezoneQuery=De,e.buildVersionIdCondition=q,e.convertDateToTz=e=>e?r.tz(r(e).format(de),me):r.tz(r().format(de),me),e.createNumericRowReader=(t,r=e.ERowReaderMode.DEFAULT)=>e=>{const{prefix:i,suffix:a}=b[r],n=t[`${i}${e}${a}`];if("number"==typeof n)return n;if("string"==typeof n){const e=parseFloat(n);return isNaN(e)?0:e}return 0},e.dayjsTz=Ae,e.dayjsTzToLocalTZ=e=>r(e?Ae(e).format(de):Ae().format(de)),e.extractColumnTypes=e=>{const t=_e(e),r={};for(const e of t)e?.name&&(r[e.name]=e.dataType);return r},e.extractQueryColumns=_e,e.extractQueryRows=e=>e?.gemxQLQuery?.tableData?.rows??[],e.filterConfigs=K,e.formatAnalyticData=be,e.formatAnalyticDate=Le,e.generateFilterConditions=w,e.getComparisonKey=e=>`${A}${e}${T}`,e.getComparisonTotalsKey=e=>`${A}${e}${T}${p}`,e.getFirstMetricInOrderBy=z,e.getFormattedByInterval=$e,e.getInitialTimezone=pe,e.getTimeDimensionByDate=(t,r)=>{const i=r.diff(t,"day");return i<=3?e.ETimeDimension.HOUR:i<=93?e.ETimeDimension.DAY:e.ETimeDimension.MONTH},e.getTimeDurationLabel=Ye,e.getTotalsKey=e=>`${e}${p}`,e.hasMetricData=Ue,e.isValidQueryInput=Me,e.numberWithCommas=ve,e.parseBreakdownItems=e=>He(e)?.map(e=>({...e,total:Number(e.total)})),e.parseConditionQuery=k,e.parseFromQuery=Z,e.parseGemXQlQuery=e=>{const{dateRange:t,compareDateRange:r,timeDimension:i,overrideFilters:a}=ye(e),n=i??Se(e),{dimensions:o,groupWithClause:s}=te(e),{filters:l,versionIds:E}=k(e);return{mode:ne(e),sources:Z(e),metrics:ce(e),dimensions:o,groupWithClause:s,timeDimension:n,dateRange:t,compareDateRange:r,overrideFilters:a,filters:l,versionIds:E,timezone:Fe(e),orderBy:Ee(e),limit:ie(e),offset:se(e)}},e.parseGroupQuery=te,e.parseJsonArray=He,e.parseJsonObject=xe,e.parseLimitQuery=ie,e.parseModeQuery=ne,e.parseOffsetQuery=se,e.parseOrderByQuery=Ee,e.parsePageItems=e=>xe(e),e.parseShowQuery=ce,e.parseTimeQuery=ye,e.parseTimeSeriesQuery=Se,e.parseTimezoneQuery=Fe,e.readNumeric=Ve,e.setTz=function(e){me=e,r.tz.setDefault(e)},e.useAnalyticData=e=>{const t=({value:t,formatter:r,name:i})=>be({value:t,formatter:r,getTextPrice:e,name:i});return{formatData:t,computeMetric:({metric:e,previousMetric:r,metricKey:i,formatter:a})=>{if(!Ue(e))return{value:0,change:"-"};const n=Ve(e,i),o=Ve(r,i),s=t({value:n,formatter:a,name:i});if(0===n&&0!==o)return{value:s,change:-100};if(0===o)return{value:s,change:"-"};return{value:s,change:(n-o)/o*100}}}},e.useCustomGemXQlQuery=c,e.useGemXQlPagination=({resetKey:t,itemsPerPage:r})=>{const[i,a]=o.useState(1),n=o.useRef(),s=i>1&&void 0!==n.current&&n.current!==t?1:i,l=(s-1)*r,E=o.useCallback(t=>r=>{a(i=>{const a=r===e.GPaginationDirection.NEXT?i+1:i-1;return Math.min(Math.max(a,1),t)})},[]);o.useEffect(()=>{n.current!==t&&(n.current=t,a(1))},[t]);const u=o.useCallback(({totalRecords:e,isLoading:t})=>{const i=Math.max(1,Math.ceil(e/r));return{currentPage:s,totalPages:i,loading:t,handlePageChange:E(i)}},[s,r,E]);return{currentPage:s,offset:l,buildPagination:u}},e.useGemxQlNamedQuery=m});
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("dayjs"),require("dayjs/plugin/quarterOfYear.js"),require("dayjs/plugin/timezone.js"),require("dayjs/plugin/utc.js"),require("@tanstack/react-query"),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"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).GemAnalytics={},e.dayjs,e.quarterOfYear,e.timezone,e.utc,e.reactQuery,e.React)}(this,function(e,t,r,i,a,n,o){"use strict";const s="None",l="___totals",E="comparison___",u="___previous_period",m=`${u}${l}`,c="is",d="is_one_of";var p,R,O,T,A,f,y,I,S,D,F,M,g;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,(R=e.EAnalyticColumnKey||(e.EAnalyticColumnKey={})).CAMPAIGNS="experiments",R.VISITOR_ITEMS="visitor_items",R.DEVICE_ITEMS="device_items",R.TRAFFIC_SOURCE_ITEMS="traffic_source_items",e.EAnalyticSource=void 0,(O=e.EAnalyticSource||(e.EAnalyticSource={})).SESSIONS="sessions",O.SALES="sales",e.EComparisonOperator=void 0,(T=e.EComparisonOperator||(e.EComparisonOperator={})).EQ="=",T.IN="IN",T.LIKE="LIKE",e.EGroupOperator=void 0,(A=e.EGroupOperator||(e.EGroupOperator={})).OR="OR",A.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,(y=e.EOperatorField||(e.EOperatorField={})).DEVICE_OPERATOR="deviceOperator",y.VISITOR_OPERATOR="visitorOperator",y.TRAFFIC_SOURCE_OPERATOR="trafficSourceOperator",y.VERSION_OPERATOR="versionOperator",y.PAGE_OPERATOR="pageOperator",y.CAMPAIGN_ITEM_OPERATOR="campaignItemOperator",e.EGroupWithClause=void 0,(I=e.EGroupWithClause||(e.EGroupWithClause={})).NONE="",I.TOTALS="TOTALS",I.ALL="WITH GROUP_TOTALS, TOTALS",e.EOrderDirectionType=void 0,(S=e.EOrderDirectionType||(e.EOrderDirectionType={})).ASC="ASC",S.DESC="DESC",e.EPageMetric=void 0,(D=e.EPageMetric||(e.EPageMetric={})).PAGE_ITEMS="page_items",D.PAGE_PATHS="page_paths",e.EPageDimension=void 0,(e.EPageDimension||(e.EPageDimension={})).PAGE_PATH="page_path",e.EPageField=void 0,(F=e.EPageField||(e.EPageField={})).SHOPIFY_PAGE_ID="shopify_page_id",F.LOCATION_PATH="location_path",F.PAGE_TYPE="page_type",F.PAGE_TITLE="page_title",F.PAGE_PATH="page_path",F.TEMPLATE_SUFFIX="template_suffix",e.ERowReaderMode=void 0,(M=e.ERowReaderMode||(e.ERowReaderMode={})).DEFAULT="DEFAULT",M.COMPARISON="COMPARISON",M.TOTALS="TOTALS",M.COMPARISON_TOTALS="COMPARISON_TOTALS",e.ETimeDimension=void 0,(g=e.ETimeDimension||(e.ETimeDimension={})).HOUR="hour",g.DAY="day",g.WEEK="week",g.MONTH="month",g.QUARTER="quarter",g.YEAR="year";const _={[e.ERowReaderMode.DEFAULT]:{prefix:"",suffix:""},[e.ERowReaderMode.COMPARISON]:{prefix:E,suffix:u},[e.ERowReaderMode.TOTALS]:{prefix:"",suffix:l},[e.ERowReaderMode.COMPARISON_TOTALS]:{prefix:E,suffix:m}},N="YYYY-MM-DDTHH:mm:ss",C=["MODE","FROM","SHOW","GROUP BY","TIMESERIES","SINCE","DURING","TIMEZONE","WHERE","ORDER BY","LIMIT","OFFSET"],P=C.join("|"),h=1e3,G=e.EGroupOperator.OR,Y=(e,t=G)=>e.length?1===e.length?e[0]??"":`(${e.join(` ${t} `)})`:"",$=t=>{switch(t.operator){case e.EComparisonOperator.EQ:return(({fields:e,value:t,groupOperator:r})=>e.length?Y(e.map(e=>`${e} = ${t}`),r):"")(t);case e.EComparisonOperator.IN:return(({fields:e,values:t,groupOperator:r})=>e.length&&t.length?Y(e.map(e=>`${e} IN (${t.join(", ")})`),r):"")(t);case e.EComparisonOperator.LIKE:return(({fields:e,value:t,groupOperator:r})=>{const i=t.trim();return i&&e.length?Y(e.map(e=>`${e} LIKE '%${i}%'`),r):""})(t)}},b=e=>e?.length?e.map($).filter(Boolean):[],v=[{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:c,singleField:e.EFilterField.SINGLE_CAMPAIGN,multiField:e.EFilterField.GROUP_CAMPAIGN}],U=(e,t)=>{const r=[],i=Object.keys(e).length>0,a=!!t&&Object.keys(t).length>0;if(!i&&!a)return r;const n=(e=>e?Object.fromEntries(Object.entries(e).filter(([,e])=>void 0!==e).map(([e,t])=>[e,Array.isArray(t)?`${e} IN (${t.join(", ")})`:`${e} = ${t}`])):{})(t);return v.forEach(({operator:t,operatorVal:i,singleField:a,multiField:o,condition:s,fieldName:l})=>{if(n[a])return void r.push(n[a]);const E=t?e[t]:i;let u=e[a];const m=e[o],p=s&&e[s];if(s&&!p)return;const R=l??(u?a:o);i&&!u&&(u=e[o]);const O=(e=>{const{operatorValue:t,singleValue:r,multiValue:i,fieldName:a}=e;return t===c&&r?`${a} = ${r}`:t===d&&Array.isArray(i)&&i.length>0?`${a} IN (${i.join(", ")})`:""})({operatorValue:E,singleValue:Array.isArray(u)?void 0:u,multiValue:Array.isArray(m)?m:void 0,fieldName:R});O&&r.push(O)}),r},L=e=>{const t=[];return e?(Object.entries(e).forEach(([e,r])=>{r&&t.push(`${e} = ${r}`)}),t):t},Q=(e,t)=>{if(!e||0===t.length)return[];const r=t.find(t=>e[t]);return r?[r]:[]},x=({filters:e,overrideFilters:t,versionIds:r,extraConditions:i})=>{const a=[...U(e,t),...L(r),...b(i)];return a.length>0?`WHERE ${a.join(" AND ")}`:""},H=e=>{const t=e.match(new RegExp(`\\bWHERE\\s+([\\s\\S]+?)(?=\\s+(?:${P})\\b|$)`,"i"));if(!t)return{filters:{}};const r=(t[1]??"").trim().split(/\s+AND\s+/i),i={},a={};return r.forEach(e=>{const t=e.trim(),r=t.match(/^(\S+)\s+IN\s+\((.+)\)$/i);if(r){const e=r[1]??"",t=(r[2]??"").split(",").map(e=>e.trim()),a=v.find(t=>t.fieldName===e||t.multiField===e);return void(a?.operator&&(i[a.multiField]=t,i[a.operator]=d))}const n=t.match(/^(\S+)\s+=\s+(.+)$/);if(n){const e=n[1]??"",t=n[2]??"",r=v.find(t=>t.fieldName===e||t.singleField===e);r?(i[r.singleField]=t,r.operator&&(i[r.operator]=c)):e&&(a[e]=t)}}),{filters:i,versionIds:Object.keys(a).length>0?a:void 0}},V=e=>`FROM ${e.join(", ")}`,j=e=>{const t=e.match(new RegExp(`\\bFROM\\s+([\\s\\S]+?)(?=\\s+(?:${P})\\b)`,"i"));return t?(t[1]??"").split(",").map(e=>e.trim()).filter(Boolean):[]},W=(t,r=e.EGroupWithClause.ALL)=>0===t.length?"":`GROUP BY ${t.join(", ")} ${r}`,K=t=>{const r=t.match(new RegExp(`\\bGROUP BY\\s+([\\s\\S]+?)(?=\\s+(?:${P})\\b)`,"i"));if(!r)return{dimensions:[]};const i=(r[1]??"").trim(),a=i.toUpperCase().indexOf(" WITH ");return-1===a?{dimensions:i.split(",").map(e=>e.trim()).filter(Boolean),groupWithClause:e.EGroupWithClause.NONE}:{dimensions:i.slice(0,a).split(",").map(e=>e.trim()).filter(Boolean),groupWithClause:i.slice(a+1).trim()}},B=e=>e?`LIMIT ${e}`:"",w=e=>{const t=e.match(/\bLIMIT\s+(\d+)/i);return t?parseInt(t[1]??"0",10):void 0},q=e=>`MODE ${e}`,X=e=>{const t=e.match(/\bMODE\s+(\S+)/i);return t?.[1]},k=e=>!e||e<0?"":`OFFSET ${e}`,z=e=>{const t=e.match(/\bOFFSET\s+(\d+)/i);return t?parseInt(t[1]??"0",10):void 0},J=(e,t)=>{if(!e)return"";const r=Object.values(e).filter(e=>t?.includes(e.field)).map(e=>`${e.field} ${e.direction}`).join(", ");return r?`ORDER BY ${r}`:""},Z=e=>{const t=e.match(new RegExp(`\\bORDER BY\\s+([\\s\\S]+?)(?=\\s+(?:${P})\\b|$)`,"i"));if(!t)return;const r={};return(t[1]??"").split(",").forEach(e=>{const t=e.trim().split(/\s+/);if(2===t.length){const e=t[0]??"",i=t[1]??"";e&&(r[e]={field:e,direction:i})}}),Object.keys(r).length>0?r:void 0},ee=e=>`SHOW ${e.join(", ")}`,te=e=>{const t=e.match(new RegExp(`\\bSHOW\\s+([\\s\\S]+?)(?=\\s+(?:${P})\\b)`,"i"));return t?(t[1]??"").split(",").map(e=>e.trim()).filter(Boolean):[]},re=/\.0+$/,ie=(e,t=2)=>(e=>`${e}`.replace(re,""))(e.toFixed(t)),ae=(e,t,r=2)=>{const i=((e,t,r=2)=>{if("number"!=typeof e||!t)return;return 0===e?0:parseFloat(ie(e/t*100,r))})(e,t,r);if("number"==typeof i)return(e=>e>0&&e<.005)(i)?"~0%":`${i}%`};t.extend(a),t.extend(i),t.extend(r);let ne="UTC";function oe(){return ne}const se=e=>e?t(e).tz(ne):t().tz(ne);var le;!function(e){e.DAY="DAY",e.HOUR="HOUR",e.MONTH="MONTH",e.QUARTER="QUARTER",e.WEEK="WEEK",e.YEAR="YEAR"}(le||(le={}));const Ee=60,ue=3600,me=(e,t,r)=>{if(!e)return"";const i=r?.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(t){case le.HOUR:return se(e).format(i.formatHouse);case le.DAY:case le.WEEK:return se(e).format(i.formatDay);case le.MONTH:return se(e).format(i.formatMonth);case le.QUARTER:{const t=se(e);return`Q${t.quarter()} ${t.format("YYYY")}`}case le.YEAR:return se(e).format(i.formatYear)}return se(e).format(i.formatMonth)},ce=e=>"string"==typeof e?se(e):e,de=(e,t=!1)=>t&&(e=>0===e.hour()&&0===e.minute())(e)?e.endOf("day").format(N):e.format(N),pe=e=>{const t=ce(e.startDate),r=ce(e.endDate);return t.isSame(r)?{dateGTE:de(t),dateLTE:(i=r,de(i?se(i).endOf("day"):se().endOf("day")))}:{dateGTE:de(t),dateLTE:de(r,!0)};var i},Re=e=>{const{dateRange:t,compareDateRange:r,overrideFilters:i,timeDimension:a}=e,n=a?i?.[a]:void 0;if(a&&n)return`DURING (${n}, ${a})`;if(!t)return"";const{dateGTE:o,dateLTE:s}=pe(t),{dateGTE:l,dateLTE:E}=r?pe(r):{};return`SINCE ${o} UNTIL ${s} ${r?`COMPARE TO ${l} UNTIL ${E}`:""}`},Oe=e=>{const t=e.match(/\bDURING\s+\(([^,]+),\s*([^)]+)\)/i);if(t){const e=t[1]??"",r=t[2]??"";return{timeDimension:r.trim(),overrideFilters:{[r.trim()]:e.trim()}}}const r=e.match(/\bSINCE\s+(\S+)\s+UNTIL\s+(\S+)/i);if(!r)return{};const i={startDate:se(r[1]??""),endDate:se(r[2]??"")},a=e.match(/\bCOMPARE TO\s+(\S+)\s+UNTIL\s+(\S+)/i);return{dateRange:i,compareDateRange:a?{startDate:se(a[1]??""),endDate:se(a[2]??"")}:void 0}},Te=e=>e?`TIMESERIES ${e}`:"",Ae=e=>{const t=e.match(/\bTIMESERIES\s+(\S+)/i);return t?.[1]},fe=e=>{const t=e??oe();return t?`TIMEZONE ${t}`:""},ye=e=>{const t=e.match(/\bTIMEZONE\s+(\S+)/i);return t?.[1]};function Ie(e){if("string"!=typeof e)return!1;const t=e.trim();return/^MODE\b[\s\S]*\bFROM\b[\s\S]*\bSHOW\b[\s\S]*$/.test(t)}const Se=e=>e?.gemxQLQuery?.tableData?.columns??[],De=e=>{if(!e)return"None";const t=se(e),r=se(),i=se().subtract(1,"day"),a=t.format("YYYY-MM-DD")===r.format("YYYY-MM-DD"),n=t.format("YYYY-MM-DD")===i.format("YYYY-MM-DD");if(a)return`Today at ${t.format("HH:mm")}`;if(n)return`Yesterday at ${t.format("HH:mm")}`;const o=r.diff(t,"day");return o>=0&&o<7?`${t.format("dddd")} at ${t.format("HH:mm")}`:`${t.format("MMM D")} at ${t.format("hh:mm a")}`},Fe=({value:t,formatter:r,getTextPrice:i,name:a})=>{if(null!==t&&("object"==typeof t||Array.isArray(t)))return t;switch(r){case e.EAnalyticDataType.INTEGER:return(t??0).toString().toString().replace(/\B(?=(\d{3})+(?!\d))/g,",");case e.EAnalyticDataType.CURRENCY:return i?i(t,!1):`${t??0}`;case e.EAnalyticDataType.DATE:return De(t);case e.EAnalyticDataType.PERCENT:return"number"!=typeof t?ae(0,1,2)??"":ae(t/100,1,2)??"";case e.EAnalyticDataType.DURATION:return(e=>{let t=e;Number.isFinite(e)&&null!=e||(t=0);const r=ie(t);if(t>=ue)return`${Math.floor(t/ue)}h ${Math.floor(t%ue/Ee)}m ${Math.floor(t%Ee)}s`;if(t>=Ee)return`${Math.floor(t/Ee)}m ${Math.floor(t%Ee)}s`;return`${r}s`})(Number(t));case e.EAnalyticDataType.STRING:{const r=a===e.EAnalyticColumnKey.CAMPAIGNS?"":s;return t??r}case e.EAnalyticDataType.DAY:return me(t,le.DAY,{isExpandDetail:!0});case e.EAnalyticDataType.HOUR:return me(t,le.HOUR,{isExpandDetail:!0});case e.EAnalyticDataType.MONTH:return me(t,le.MONTH,{isExpandDetail:!0});case e.EAnalyticDataType.YEAR:return me(t,le.YEAR);case e.EAnalyticDataType.WEEK:return me(t,le.WEEK,{isExpandDetail:!0});case e.EAnalyticDataType.QUARTER:return me(t,le.QUARTER,{isExpandDetail:!0});case e.EAnalyticDataType.OBJECT:case e.EAnalyticDataType.ARRAY:return t;default:return`${t}`}},Me=e=>{const t=e?.sessions;return"number"==typeof t&&t>0},ge=e=>{if(e)return"string"==typeof e?JSON.parse(e):e},_e=e=>{try{const t=ge(e);return t&&"object"==typeof t?t:null}catch{return null}},Ne=e=>{try{const t=ge(e);if(!Array.isArray(t))return;return t}catch{return}},Ce=(e,t)=>{const r=e?.[t];return"number"==typeof r?r:0},Pe="\n fragment ColumnSelect on Column {\n dataType\n displayName\n name\n}\n ",he="\n fragment TableDataSelect on TableData {\n columns {\n ...ColumnSelect\n }\n rows\n}\n ",Ge="\n fragment GemXQLResultSelect on GemxQLResult {\n tableData {\n ...TableDataSelect\n }\n}\n ",Ye=`\n query GemxQL($input: String!) {\n gemxQLQuery(query: $input) {\n ...GemXQLResultSelect\n }\n}\n ${Ge}\n${he}\n${Pe}`,$e=(e,t,r)=>n.useQuery({queryKey:["GemXQlCustom",e],queryFn:t(Ye,e),...r});$e.getKey=e=>["GemXQlCustom",e];const be=({name:e,variables:t,fetcher:r},i)=>{const a=Ye.replace(/query\s+GemxQL\b/,`query ${e}`);return n.useQuery({queryKey:[e,t],queryFn:r(a,t),retry:0,...i})};be.getKey=(e,t)=>[e,t];var ve;e.GPaginationDirection=void 0,(ve=e.GPaginationDirection||(e.GPaginationDirection={})).NEXT="NEXT",ve.PREV="PREV";e.CLAUSE_KEYWORDS=C,e.CLAUSE_KEYWORD_BOUNDARY=P,e.COMPARE_PREFIX=E,e.COMPARE_SUFFIX=u,e.COMPARE_TOTALS_SUFFIX=m,e.ColumnSelectFragmentDoc=Pe,e.DATE_QUERY_FORMAT=N,e.DEFAULT_QUERY_LIMIT=h,e.GemXqlResultSelectFragmentDoc=Ge,e.GemxQlDocument=Ye,e.NONE_VALUE=s,e.OPERATOR_IS=c,e.OPERATOR_IS_ONE_OF=d,e.PLACEHOLDER_VALUE="-",e.ROW_READER_MODE_CONFIG=_,e.TOTALS_SUFFIX=l,e.TableDataSelectFragmentDoc=he,e.buildConditionQuery=x,e.buildExtraCondition=$,e.buildExtraConditions=b,e.buildFromQuery=V,e.buildGemXQlQuery=e=>{const{mode:t,metrics:r,dimensions:i,dateRange:a,compareDateRange:n,filters:o,overrideFilters:s,versionIds:l,extraConditions:E,orderBy:u,sources:m,timeDimension:c,groupWithClause:d,timezone:p,limit:R=h,offset:O,extraOrderByFields:T}=e,A=[...i,...Q(u,r),...T??[]],f=[q(t),V(m),ee(r),W(i,d),Te(c),Re({dateRange:a,compareDateRange:n,timeDimension:c,overrideFilters:s}),fe(p),x({filters:o,overrideFilters:s,versionIds:l,extraConditions:E}),J(u,A),B(R),k(O)].filter(Boolean).join(" ");return Ie(f)?f:""},e.buildGroupQuery=W,e.buildLimitQuery=B,e.buildModeQuery=q,e.buildOffsetQuery=k,e.buildOrderByQuery=J,e.buildShowQuery=ee,e.buildTimeQuery=Re,e.buildTimeSeriesQuery=Te,e.buildTimezoneQuery=fe,e.buildVersionIdCondition=L,e.createNumericRowReader=(t,r=e.ERowReaderMode.DEFAULT)=>e=>{const{prefix:i,suffix:a}=_[r],n=t[`${i}${e}${a}`];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 t=Se(e),r={};for(const e of t)e?.name&&(r[e.name]=e.dataType);return r},e.extractQueryColumns=Se,e.extractQueryRows=e=>e?.gemxQLQuery?.tableData?.rows??[],e.filterConfigs=v,e.formatAnalyticData=Fe,e.formatAnalyticDate=De,e.generateFilterConditions=U,e.getComparisonKey=e=>`${E}${e}${u}`,e.getComparisonTotalsKey=e=>`${E}${e}${u}${l}`,e.getFirstMetricInOrderBy=Q,e.getTimeDimensionByDate=(t,r)=>{const i=r.diff(t,"day");return i<=3?e.ETimeDimension.HOUR:i<=93?e.ETimeDimension.DAY:e.ETimeDimension.MONTH},e.getTotalsKey=e=>`${e}${l}`,e.hasMetricData=Me,e.isValidQueryInput=Ie,e.parseBreakdownItems=e=>Ne(e)?.map(e=>({...e,total:Number(e.total)})),e.parseConditionQuery=H,e.parseFromQuery=j,e.parseGemXQlQuery=e=>{const{dateRange:t,compareDateRange:r,timeDimension:i,overrideFilters:a}=Oe(e),n=i??Ae(e),{dimensions:o,groupWithClause:s}=K(e),{filters:l,versionIds:E}=H(e);return{mode:X(e),sources:j(e),metrics:te(e),dimensions:o,groupWithClause:s,timeDimension:n,dateRange:t,compareDateRange:r,overrideFilters:a,filters:l,versionIds:E,timezone:ye(e),orderBy:Z(e),limit:w(e),offset:z(e)}},e.parseGroupQuery=K,e.parseJsonArray=Ne,e.parseJsonObject=_e,e.parseLimitQuery=w,e.parseModeQuery=X,e.parseOffsetQuery=z,e.parseOrderByQuery=Z,e.parsePageItems=e=>_e(e),e.parseShowQuery=te,e.parseTimeQuery=Oe,e.parseTimeSeriesQuery=Ae,e.parseTimezoneQuery=ye,e.readNumeric=Ce,e.useAnalyticData=e=>{const t=({value:t,formatter:r,name:i})=>Fe({value:t,formatter:r,getTextPrice:e,name:i});return{formatData:t,computeMetric:({metric:e,previousMetric:r,metricKey:i,formatter:a})=>{if(!Me(e))return{value:0,change:"-"};const n=Ce(e,i),o=Ce(r,i),s=t({value:n,formatter:a,name:i});if(0===n&&0!==o)return{value:s,change:-100};if(0===o)return{value:s,change:"-"};return{value:s,change:(n-o)/o*100}}}},e.useCustomGemXQlQuery=$e,e.useGemXQlPagination=({resetKey:t,itemsPerPage:r})=>{const[i,a]=o.useState(1),n=o.useRef(),s=i>1&&void 0!==n.current&&n.current!==t?1:i,l=(s-1)*r,E=o.useCallback(t=>r=>{a(i=>{const a=r===e.GPaginationDirection.NEXT?i+1:i-1;return Math.min(Math.max(a,1),t)})},[]);o.useEffect(()=>{n.current!==t&&(n.current=t,a(1))},[t]);const u=o.useCallback(({totalRecords:e,isLoading:t})=>{const i=Math.max(1,Math.ceil(e/r));return{currentPage:s,totalPages:i,loading:t,handlePageChange:E(i)}},[s,r,E]);return{currentPage:s,offset:l,buildPagination:u}},e.useGemxQlNamedQuery=be});
|