@gem-sdk/analytics 0.1.0-staging.2 → 0.1.0-staging.3

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.
@@ -533,11 +533,15 @@ const calcPercentageString = (part, total, decimals = 2) => {
533
533
  dayjs.extend(utc);
534
534
  dayjs.extend(timezone);
535
535
  dayjs.extend(quarterOfYear);
536
- let tz = 'UTC';
536
+ // Stored on `globalThis` (not a module-local `let`): each entry-point bundle gets its
537
+ // own copy of this module, so a local var would let `setTz` and the query builder read
538
+ // different copies. A shared global slot keeps every bundle in sync.
539
+ const TZ_GLOBAL_KEY = '__GEM_SDK_ANALYTICS_TZ__';
537
540
  function getInitialTimezone() {
538
- return tz;
541
+ return globalThis[TZ_GLOBAL_KEY] ?? 'UTC';
539
542
  }
540
543
  const dayjsTz = (date) => {
544
+ const tz = getInitialTimezone();
541
545
  if (!date)
542
546
  return dayjs().tz(tz);
543
547
  return dayjs(date).tz(tz);
@@ -533,11 +533,15 @@ const calcPercentageString = (part, total, decimals = 2) => {
533
533
  dayjs.extend(utc);
534
534
  dayjs.extend(timezone);
535
535
  dayjs.extend(quarterOfYear);
536
- let tz = 'UTC';
536
+ // Stored on `globalThis` (not a module-local `let`): each entry-point bundle gets its
537
+ // own copy of this module, so a local var would let `setTz` and the query builder read
538
+ // different copies. A shared global slot keeps every bundle in sync.
539
+ const TZ_GLOBAL_KEY = '__GEM_SDK_ANALYTICS_TZ__';
537
540
  function getInitialTimezone() {
538
- return tz;
541
+ return globalThis[TZ_GLOBAL_KEY] ?? 'UTC';
539
542
  }
540
543
  const dayjsTz = (date) => {
544
+ const tz = getInitialTimezone();
541
545
  if (!date)
542
546
  return dayjs().tz(tz);
543
547
  return dayjs(date).tz(tz);
package/dist/esm/index.js CHANGED
@@ -596,21 +596,26 @@ function sortByArrayOrder(array, order, sortOrder = 'asc') {
596
596
  dayjs.extend(utc);
597
597
  dayjs.extend(timezone);
598
598
  dayjs.extend(quarterOfYear);
599
- let tz = 'UTC';
599
+ // Stored on `globalThis` (not a module-local `let`): each entry-point bundle gets its
600
+ // own copy of this module, so a local var would let `setTz` and the query builder read
601
+ // different copies. A shared global slot keeps every bundle in sync.
602
+ const TZ_GLOBAL_KEY = '__GEM_SDK_ANALYTICS_TZ__';
600
603
  const DEFAULT_DATE_FORMAT = 'YYYY-MM-DD HH:mm:ss';
601
604
  function getInitialTimezone() {
602
- return tz;
605
+ return globalThis[TZ_GLOBAL_KEY] ?? 'UTC';
603
606
  }
604
607
  function setTz(value) {
605
- tz = value;
608
+ globalThis[TZ_GLOBAL_KEY] = value;
606
609
  dayjs.tz.setDefault(value);
607
610
  }
608
611
  const dayjsTz = (date) => {
612
+ const tz = getInitialTimezone();
609
613
  if (!date)
610
614
  return dayjs().tz(tz);
611
615
  return dayjs(date).tz(tz);
612
616
  };
613
617
  const convertDateToTz = (date) => {
618
+ const tz = getInitialTimezone();
614
619
  if (!date)
615
620
  return dayjs.tz(dayjs().format(DEFAULT_DATE_FORMAT), tz);
616
621
  return dayjs.tz(dayjs(date).format(DEFAULT_DATE_FORMAT), tz);
@@ -2578,7 +2583,7 @@ const MetricDonutChartSkeleton = () => {
2578
2583
  return (jsx(Card, { children: jsxs(BlockStack, { gap: "400", children: [jsx(MetricInfoSkeleton, { isShowOneLine: true }), jsx(GChartSkeleton, {})] }) }));
2579
2584
  };
2580
2585
 
2581
- const MetricValueSummary = ({ totalValue, hideComparison }) => (jsx(BlockStack, { gap: "200", children: jsxs(InlineStack, { blockAlign: "center", gap: "200", wrap: false, children: [jsx(InlineStack, { blockAlign: "center", gap: "200", children: jsx(Text, { as: "span", variant: "headingSm", children: totalValue.value }) }), !hideComparison && jsx(MetricPercentage, { change: totalValue.change })] }) }));
2586
+ const MetricValueSummary = ({ totalValue, hideComparison }) => (jsx(BlockStack, { gap: "200", children: jsxs(InlineStack, { blockAlign: "center", gap: "200", children: [jsx(InlineStack, { blockAlign: "center", gap: "200", children: jsx(Text, { as: "span", variant: "headingSm", children: totalValue.value }) }), !hideComparison && jsx(MetricPercentage, { change: totalValue.change })] }) }));
2582
2587
 
2583
2588
  const MetricInfoBlock = ({ item, isHovered, isLoading, hideComparison, titleVariant = 'headingMd', titleFontWeight, isMockData, onClickTitle, }) => {
2584
2589
  const { key, title, totalValue } = item;
@@ -3988,7 +3993,6 @@ const getNewReturningCustomerMetric = ({ metric }) => detectDataV2By({
3988
3993
  formatter: IMetricFormatter.NORMAL,
3989
3994
  });
3990
3995
 
3991
- const PA_METRIC_TOOLTIP = {};
3992
3996
  const METRICS_COLUMNS = {
3993
3997
  [IPAMetricKey.PAGE_SESSIONS]: { label: 'Sessions' },
3994
3998
  [IPAMetricKey.PAGE_BR]: { label: 'Bounce rate' },
@@ -22630,17 +22634,17 @@ const usePathAnalysisChart = () => {
22630
22634
  {
22631
22635
  value: Number(totalAddedToCart ?? 0),
22632
22636
  key: METRICS_COLUMNS[IPAMetricKey.PAGE_ADDED_TO_CART]?.label ?? t('Added to cart'),
22633
- labelTooltip: PA_METRIC_TOOLTIP[IPAMetricKey.PAGE_CART_ADDITION],
22637
+ labelTooltip: ANALYTICS_METRIC_TOOLTIP[EMetricKey.CART_ADDITION],
22634
22638
  },
22635
22639
  {
22636
22640
  value: Number(totalReachedCheckout ?? 0),
22637
22641
  key: t('Reached checkout'),
22638
- labelTooltip: PA_METRIC_TOOLTIP[IPAMetricKey.PAGE_REACHED_CHECKOUT],
22642
+ labelTooltip: ANALYTICS_METRIC_TOOLTIP[EMetricKey.REACHED_CHECKOUT],
22639
22643
  },
22640
22644
  {
22641
22645
  value: Number(totalCompletedCheckout ?? 0),
22642
22646
  key: t('Completed checkout'),
22643
- labelTooltip: PA_METRIC_TOOLTIP[IPAMetricKey.PAGE_COMPLETE_CHECKOUT],
22647
+ labelTooltip: ANALYTICS_METRIC_TOOLTIP[EMetricKey.COMPLETE_CHECKOUT],
22644
22648
  },
22645
22649
  ];
22646
22650
  }, [t]);
@@ -596,21 +596,26 @@ function sortByArrayOrder(array, order, sortOrder = 'asc') {
596
596
  dayjs.extend(utc);
597
597
  dayjs.extend(timezone);
598
598
  dayjs.extend(quarterOfYear);
599
- let tz = 'UTC';
599
+ // Stored on `globalThis` (not a module-local `let`): each entry-point bundle gets its
600
+ // own copy of this module, so a local var would let `setTz` and the query builder read
601
+ // different copies. A shared global slot keeps every bundle in sync.
602
+ const TZ_GLOBAL_KEY = '__GEM_SDK_ANALYTICS_TZ__';
600
603
  const DEFAULT_DATE_FORMAT = 'YYYY-MM-DD HH:mm:ss';
601
604
  function getInitialTimezone() {
602
- return tz;
605
+ return globalThis[TZ_GLOBAL_KEY] ?? 'UTC';
603
606
  }
604
607
  function setTz(value) {
605
- tz = value;
608
+ globalThis[TZ_GLOBAL_KEY] = value;
606
609
  dayjs.tz.setDefault(value);
607
610
  }
608
611
  const dayjsTz = (date) => {
612
+ const tz = getInitialTimezone();
609
613
  if (!date)
610
614
  return dayjs().tz(tz);
611
615
  return dayjs(date).tz(tz);
612
616
  };
613
617
  const convertDateToTz = (date) => {
618
+ const tz = getInitialTimezone();
614
619
  if (!date)
615
620
  return dayjs.tz(dayjs().format(DEFAULT_DATE_FORMAT), tz);
616
621
  return dayjs.tz(dayjs(date).format(DEFAULT_DATE_FORMAT), tz);
@@ -2578,7 +2583,7 @@ const MetricDonutChartSkeleton = () => {
2578
2583
  return (jsx(Card, { children: jsxs(BlockStack, { gap: "400", children: [jsx(MetricInfoSkeleton, { isShowOneLine: true }), jsx(GChartSkeleton, {})] }) }));
2579
2584
  };
2580
2585
 
2581
- const MetricValueSummary = ({ totalValue, hideComparison }) => (jsx(BlockStack, { gap: "200", children: jsxs(InlineStack, { blockAlign: "center", gap: "200", wrap: false, children: [jsx(InlineStack, { blockAlign: "center", gap: "200", children: jsx(Text, { as: "span", variant: "headingSm", children: totalValue.value }) }), !hideComparison && jsx(MetricPercentage, { change: totalValue.change })] }) }));
2586
+ const MetricValueSummary = ({ totalValue, hideComparison }) => (jsx(BlockStack, { gap: "200", children: jsxs(InlineStack, { blockAlign: "center", gap: "200", children: [jsx(InlineStack, { blockAlign: "center", gap: "200", children: jsx(Text, { as: "span", variant: "headingSm", children: totalValue.value }) }), !hideComparison && jsx(MetricPercentage, { change: totalValue.change })] }) }));
2582
2587
 
2583
2588
  const MetricInfoBlock = ({ item, isHovered, isLoading, hideComparison, titleVariant = 'headingMd', titleFontWeight, isMockData, onClickTitle, }) => {
2584
2589
  const { key, title, totalValue } = item;
@@ -3988,7 +3993,6 @@ const getNewReturningCustomerMetric = ({ metric }) => detectDataV2By({
3988
3993
  formatter: IMetricFormatter.NORMAL,
3989
3994
  });
3990
3995
 
3991
- const PA_METRIC_TOOLTIP = {};
3992
3996
  const METRICS_COLUMNS = {
3993
3997
  [IPAMetricKey.PAGE_SESSIONS]: { label: 'Sessions' },
3994
3998
  [IPAMetricKey.PAGE_BR]: { label: 'Bounce rate' },
@@ -22630,17 +22634,17 @@ const usePathAnalysisChart = () => {
22630
22634
  {
22631
22635
  value: Number(totalAddedToCart ?? 0),
22632
22636
  key: METRICS_COLUMNS[IPAMetricKey.PAGE_ADDED_TO_CART]?.label ?? t('Added to cart'),
22633
- labelTooltip: PA_METRIC_TOOLTIP[IPAMetricKey.PAGE_CART_ADDITION],
22637
+ labelTooltip: ANALYTICS_METRIC_TOOLTIP[EMetricKey.CART_ADDITION],
22634
22638
  },
22635
22639
  {
22636
22640
  value: Number(totalReachedCheckout ?? 0),
22637
22641
  key: t('Reached checkout'),
22638
- labelTooltip: PA_METRIC_TOOLTIP[IPAMetricKey.PAGE_REACHED_CHECKOUT],
22642
+ labelTooltip: ANALYTICS_METRIC_TOOLTIP[EMetricKey.REACHED_CHECKOUT],
22639
22643
  },
22640
22644
  {
22641
22645
  value: Number(totalCompletedCheckout ?? 0),
22642
22646
  key: t('Completed checkout'),
22643
- labelTooltip: PA_METRIC_TOOLTIP[IPAMetricKey.PAGE_COMPLETE_CHECKOUT],
22647
+ labelTooltip: ANALYTICS_METRIC_TOOLTIP[EMetricKey.COMPLETE_CHECKOUT],
22644
22648
  },
22645
22649
  ];
22646
22650
  }, [t]);
@@ -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("react"),require("zustand"),require("@shopify/polaris")):"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","@shopify/polaris"],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",T=`${m}${c}`,d="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:T}},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=>"number"==typeof e?String(e):`'${String(e).replace(/'/g,"''")}'`,U=(e,r=x)=>e.length?1===e.length?e[0]??"":`(${e.join(` ${r} `)})`:"",$=r=>{switch(r.operator){case e.EComparisonOperator.EQ:return(({fields:e,value:r,groupOperator:t})=>e.length?U(e.map(e=>`${e} = ${v(r)}`),t):"")(r);case e.EComparisonOperator.IN:return(({fields:e,values:r,groupOperator:t})=>e.length&&r.length?U(e.map(e=>`${e} IN (${r.map(v).join(", ")})`),t):"")(r);case e.EComparisonOperator.LIKE:return(({fields:e,value:r,groupOperator:t})=>{const a=r.trim();return a&&e.length?U(e.map(e=>`${e} LIKE '%${a.replace(/'/g,"''")}%'`),t):""})(r)}},Y=e=>e?.length?e.map($).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:d,singleField:e.EFilterField.SINGLE_CAMPAIGN,multiField:e.EFilterField.GROUP_CAMPAIGN}],b=e=>`'${e.replace(/'/g,"''")}'`,V=(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.map(b).join(", ")})`:`${e} = ${b(String(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 T=l??(c?i:s);a&&!c&&(c=e[s]);const p=(e=>{const{operatorValue:r,singleValue:t,multiValue:a,fieldName:i}=e;return r===d&&t?`${i} = ${b(t)}`:r===A&&Array.isArray(a)&&a.length>0?`${i} IN (${a.map(b).join(", ")})`:""})({operatorValue:E,singleValue:Array.isArray(c)?void 0:c,multiValue:Array.isArray(u)?u:void 0,fieldName:T});p&&t.push(p)}),t},Q=e=>{const r=[];return e?(Object.entries(e).forEach(([e,t])=>{t&&r.push(`${e} = ${b(t)}`)}),r):r},H=(e,r)=>{if(!e||0===r.length)return[];const t=r.find(r=>e[r]);return t?[t]:[]},W=({filters:e,overrideFilters:r,versionIds:t,extraConditions:a})=>{const i=[...V(e,r),...Q(t),...Y(a)];return i.length>0?`WHERE ${i.join(" AND ")}`:""},B=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={},n=e=>e.replace(/^'(.*)'$/s,"$1").replace(/''/g,"'");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=>n(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 s=r.match(/^(\S+)\s+=\s+(.+)$/);if(s){const e=s[1]??"",r=n(s[2]??""),t=j.find(r=>r.fieldName===e||r.singleField===e);t?(a[t.singleField]=r,t.operator&&(a[t.operator]=d)):e&&(i[e]=r)}}),{filters:a,versionIds:Object.keys(i).length>0?i:void 0}},K=e=>`FROM ${e.join(", ")}`,w=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):[]},q=(r,t=e.EGroupWithClause.ALL)=>0===r.length?"":`GROUP BY ${r.join(", ")} ${t}`,X=r=>{const t=r.match(new RegExp(`\\bGROUP BY\\s+([\\s\\S]+?)(?=\\s+(?:${L})\\b|$)`,"i"));if(!t)return{dimensions:[]};let a=(t[1]??"").trim();const i=Object.values(e.EGroupWithClause).filter(r=>r!==e.EGroupWithClause.NONE).sort((e,r)=>r.length-e.length);let n=e.EGroupWithClause.NONE;const s=a.toUpperCase();for(const e of i)if(s.endsWith(e)){n=e,a=a.slice(0,a.length-e.length).trim();break}return{dimensions:a.split(",").map(e=>e.trim()).filter(Boolean),groupWithClause:n}},k=e=>e?`LIMIT ${e}`:"",z=e=>{const r=e.match(/\bLIMIT\s+(\d+)/i);return r?parseInt(r[1]??"0",10):void 0},J=e=>`MODE ${e}`,Z=e=>{const r=e.match(/\bMODE\s+(\S+)/i);return r?.[1]},ee=e=>!e||e<0?"":`OFFSET ${e}`,re=e=>{const r=e.match(/\bOFFSET\s+(\d+)/i);return r?parseInt(r[1]??"0",10):void 0},te=(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}`:""},ae=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},ie=e=>`SHOW ${e.join(", ")}`,ne=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):[]},se=/\.0+$/,oe=(e,r=2)=>(e=>`${e}`.replace(se,""))(e.toFixed(r)),le=(e,r,t=2)=>{const a=((e,r,t=2)=>{if("number"!=typeof e||!r)return;return 0===e?0:parseFloat(oe(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 Ee="UTC";function ce(){return Ee}const ue=e=>e?r(e).tz(Ee):r().tz(Ee);var me;!function(e){e.DAY="DAY",e.HOUR="HOUR",e.MONTH="MONTH",e.QUARTER="QUARTER",e.WEEK="WEEK",e.YEAR="YEAR"}(me||(me={}));const Te=60,de=3600,Ae=(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 me.HOUR:return ue(e).format(a.formatHouse);case me.DAY:case me.WEEK:return ue(e).format(a.formatDay);case me.MONTH:return ue(e).format(a.formatMonth);case me.QUARTER:{const r=ue(e);return`Q${r.quarter()} ${r.format("YYYY")}`}case me.YEAR:return ue(e).format(a.formatYear)}return ue(e).format(a.formatMonth)};var pe;!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"}(pe||(pe={}));const Oe=e=>"string"==typeof e?ue(e):e,Re=(e,r=!1)=>r&&(e=>0===e.hour()&&0===e.minute())(e)?e.endOf("day").format(h):e.format(h),_e=e=>{const r=Oe(e.startDate),t=Oe(e.endDate);return r.isSame(t)?{dateGTE:Re(r),dateLTE:(a=t,Re(a?ue(a).endOf("day"):ue().endOf("day")))}:{dateGTE:Re(r),dateLTE:Re(t,!0)};var a},Ie=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}=_e(r),{dateGTE:l,dateLTE:E}=t?_e(t):{};return`SINCE ${s} UNTIL ${o} ${t?`COMPARE TO ${l} UNTIL ${E}`:""}`},fe=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:ue(t[1]??""),endDate:ue(t[2]??"")},i=e.match(/\bCOMPARE TO\s+(\S+)\s+UNTIL\s+(\S+)/i);return{dateRange:a,compareDateRange:i?{startDate:ue(i[1]??""),endDate:ue(i[2]??"")}:void 0}},Ne=e=>e?`TIMESERIES ${e}`:"",Se=e=>{const r=e.match(/\bTIMESERIES\s+(\S+)/i);return r?.[1]},Ce=e=>{const r=e??ce();return r?`TIMEZONE ${r}`:""},Pe=e=>{const r=e.match(/\bTIMEZONE\s+(\S+)/i);return r?.[1]};function De(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 ye=e=>e?.gemxQLQuery?.tableData?.columns??[],Fe=e=>{if(!e)return"None";const r=ue(e),t=ue(),a=ue().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")}`},ge=({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 Fe(r);case e.EAnalyticDataType.PERCENT:return"number"!=typeof r?le(0,1,2)??"":le(r/100,1,2)??"";case e.EAnalyticDataType.DURATION:return(e=>{let r=e;Number.isFinite(e)&&null!=e||(r=0);const t=oe(r);if(r>=de)return`${Math.floor(r/de)}h ${Math.floor(r%de/Te)}m ${Math.floor(r%Te)}s`;if(r>=Te)return`${Math.floor(r/Te)}m ${Math.floor(r%Te)}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 Ae(r,me.DAY,{isExpandDetail:!0});case e.EAnalyticDataType.HOUR:return Ae(r,me.HOUR,{isExpandDetail:!0});case e.EAnalyticDataType.MONTH:return Ae(r,me.MONTH,{isExpandDetail:!0});case e.EAnalyticDataType.YEAR:return Ae(r,me.YEAR);case e.EAnalyticDataType.WEEK:return Ae(r,me.WEEK,{isExpandDetail:!0});case e.EAnalyticDataType.QUARTER:return Ae(r,me.QUARTER,{isExpandDetail:!0});case e.EAnalyticDataType.OBJECT:case e.EAnalyticDataType.ARRAY:return r;default:return`${r}`}},he=e=>{const r=e?.sessions;return"number"==typeof r&&r>0},Me=e=>{if(e)return"string"==typeof e?JSON.parse(e):e},Le=e=>{try{const r=Me(e);return r&&"object"==typeof r?r:null}catch{return null}},Ge=e=>{try{const r=Me(e);if(!Array.isArray(r))return;return r}catch{return}},xe=(e,r)=>{const t=e?.[r];if("number"==typeof t)return t;if("string"==typeof t){const e=parseFloat(t);return isNaN(e)?0:e}return 0},ve="\n fragment ColumnSelect on Column {\n dataType\n displayName\n name\n}\n ",Ue="\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 ",Ye=`\n query GemxQL($input: String!) {\n gemxQLQuery(query: $input) {\n ...GemXQLResultSelect\n }\n}\n ${$e}\n${Ue}\n${ve}`,je=(e,r,t)=>n.useQuery({queryKey:["GemXQlCustom",e],queryFn:r(Ye,e),...t});je.getKey=e=>["GemXQlCustom",e];const be=({name:e,variables:r,fetcher:t},a)=>{const i=Ye.replace(/query\s+GemxQL\b/,`query ${e}`);return n.useQuery({queryKey:[e,r],queryFn:t(i,r),retry:0,...a})};var Ve,Qe,He,We,Be,Ke,we,qe;be.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"}(Ve||(Ve={})),Ve.SESSION,Ve.VISITORS,Ve.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"})]}),Ve.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"})]}),Ve.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)"})]}),Ve.PAGE_VIEWS,Ve.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"})]}),Ve.ADDED_TO_CART,Ve.REACHED_CHECKOUT,Ve.COMPLETE_CHECKOUT,Ve.ORDERS,Ve.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"})]}),Ve.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"})]}),Ve.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"})]}),Ve.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"})]}),Ve.CART_ADDITION,Ve.VISITOR_ITEMS,Ve.DEVICE_ITEMS,Ve.TRAFFIC_SOURCE_ITEMS,Ve.PAGE_PATH_ANALYSIS,function(e){e.ALL_SESSION="ALL_SESSION",e.FIRST_SESSION="FIRST_SESSION",e.PAGE_ONLY="PAGE_ONLY"}(Qe||(Qe={})),function(e){e.NEW="new",e.RETURNING="returning"}(He||(He={})),function(e){e.DESKTOP="desktop",e.MOBILE="mobile",e.TABLET="tablet"}(We||(We={})),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"}(Be||(Be={})),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"}(Ke||(Ke={})),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"}(we||(we={})),function(e){e.PRICE="PRICE",e.TEMPLATE="TEMPLATE",e.TEMPLATE_BUNDLE="TEMPLATE_BUNDLE"}(qe||(qe={})),He.NEW,He.RETURNING,We.DESKTOP,We.TABLET,We.MOBILE,Be.DIRECT,Be.EMAIL,Be.REFERRAL,Be.ORGANIC_SOCIAL,Be.ORGANIC_SEARCH,Be.PAID_SOCIAL,Be.PAID_SEARCH,Be.SMS,l.create(e=>({currencyRates:null,setCurrencyRates:r=>e({currencyRates:r})}));const Xe=o.createContext({getTextPrice:e=>"string"==typeof e?e:`${e??0}`});var ke;e.GPaginationDirection=void 0,(ke=e.GPaginationDirection||(e.GPaginationDirection={})).NEXT="NEXT",ke.PREVIOUS="PREVIOUS";e.CLAUSE_KEYWORDS=M,e.CLAUSE_KEYWORD_BOUNDARY=L,e.COMPARE_PREFIX=u,e.COMPARE_SUFFIX=m,e.COMPARE_TOTALS_SUFFIX=T,e.ColumnSelectFragmentDoc=ve,e.DATE_QUERY_FORMAT=h,e.DEFAULT_QUERY_LIMIT=G,e.GemXqlResultSelectFragmentDoc=$e,e.GemxQlDocument=Ye,e.NONE_VALUE=E,e.OPERATOR_IS=d,e.OPERATOR_IS_ONE_OF=A,e.PLACEHOLDER_VALUE="-",e.ROW_READER_MODE_CONFIG=g,e.TOTALS_SUFFIX=c,e.TableDataSelectFragmentDoc=Ue,e.buildConditionQuery=W,e.buildExtraCondition=$,e.buildExtraConditions=Y,e.buildFromQuery=K,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:T,timezone:d,limit:A=G,offset:p,extraOrderByFields:O}=e,R=[...a,...H(c,t),...O??[]],_=[J(r),K(u),ie(t),q(a,T),Ne(m),Ie({dateRange:i,compareDateRange:n,timeDimension:m,overrideFilters:o}),Ce(d),W({filters:s,overrideFilters:o,versionIds:l,extraConditions:E}),te(c,R),k(A),ee(p)].filter(Boolean).join(" ");return De(_)?_:""},e.buildGroupQuery=q,e.buildLimitQuery=k,e.buildModeQuery=J,e.buildOffsetQuery=ee,e.buildOrderByQuery=te,e.buildShowQuery=ie,e.buildTimeQuery=Ie,e.buildTimeSeriesQuery=Ne,e.buildTimezoneQuery=Ce,e.buildVersionIdCondition=Q,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=ye(e),t={};for(const e of r)e?.name&&(t[e.name]=e.dataType);return t},e.extractQueryColumns=ye,e.extractQueryRows=e=>e?.gemxQLQuery?.tableData?.rows??[],e.filterConfigs=j,e.formatAnalyticData=ge,e.formatAnalyticDate=Fe,e.generateFilterConditions=V,e.getComparisonKey=e=>`${u}${e}${m}`,e.getComparisonTotalsKey=e=>`${u}${e}${m}${c}`,e.getFirstMetricInOrderBy=H,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=he,e.isValidQueryInput=De,e.parseBreakdownItems=e=>Ge(e)?.map(e=>({...e,total:Number(e.total)})),e.parseConditionQuery=B,e.parseFromQuery=w,e.parseGemXQlQuery=e=>{const{dateRange:r,compareDateRange:t,timeDimension:a,overrideFilters:i}=fe(e),n=a??Se(e),{dimensions:s,groupWithClause:o}=X(e),{filters:l,versionIds:E}=B(e);return{mode:Z(e),sources:w(e),metrics:ne(e),dimensions:s,groupWithClause:o,timeDimension:n,dateRange:r,compareDateRange:t,overrideFilters:i,filters:l,versionIds:E,timezone:Pe(e),orderBy:ae(e),limit:z(e),offset:re(e)}},e.parseGroupQuery=X,e.parseJsonArray=Ge,e.parseJsonObject=Le,e.parseLimitQuery=z,e.parseModeQuery=Z,e.parseOffsetQuery=re,e.parseOrderByQuery=ae,e.parsePageItems=e=>Le(e),e.parseShowQuery=ne,e.parseTimeQuery=fe,e.parseTimeSeriesQuery=Se,e.parseTimezoneQuery=Pe,e.readNumeric=xe,e.useAnalyticData=({getTextPrice:e}={})=>{const{getTextPrice:r}=o.useContext(Xe),t=e??r,a=({value:e,formatter:r,name:a})=>ge({value:e,formatter:r,getTextPrice:t,name:a});return{formatData:a,computeMetric:({metric:e,previousMetric:r,metricKey:t,formatter:i})=>{if(!he(e))return{value:0,change:"-"};const n=xe(e,t),s=xe(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=je,e.useGemXQlPagination=({resetKey:r,itemsPerPage:t})=>{const[a,i]=o.useState(1),n=o.useMemo(()=>{if(void 0!==r)try{return JSON.stringify(r)}catch{return String(r)}},[r]),s=o.useRef(),l=a>1&&void 0!==s.current&&s.current!==n?1:a,E=(l-1)*t,c=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(()=>{s.current!==n&&(s.current=n,i(1))},[n]);const u=o.useCallback(({totalRecords:e,isLoading:r})=>{const a=Math.max(1,Math.ceil(e/t));return{currentPage:l,totalPages:a,loading:r,handlePageChange:c(a)}},[l,t,c]);return{currentPage:l,offset:E,buildPagination:u}},e.useGemxQlNamedQuery=be});
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"),require("@shopify/polaris")):"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","@shopify/polaris"],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",T=`${m}${c}`,d="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:T}},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=>"number"==typeof e?String(e):`'${String(e).replace(/'/g,"''")}'`,U=(e,r=x)=>e.length?1===e.length?e[0]??"":`(${e.join(` ${r} `)})`:"",$=r=>{switch(r.operator){case e.EComparisonOperator.EQ:return(({fields:e,value:r,groupOperator:t})=>e.length?U(e.map(e=>`${e} = ${v(r)}`),t):"")(r);case e.EComparisonOperator.IN:return(({fields:e,values:r,groupOperator:t})=>e.length&&r.length?U(e.map(e=>`${e} IN (${r.map(v).join(", ")})`),t):"")(r);case e.EComparisonOperator.LIKE:return(({fields:e,value:r,groupOperator:t})=>{const a=r.trim();return a&&e.length?U(e.map(e=>`${e} LIKE '%${a.replace(/'/g,"''")}%'`),t):""})(r)}},Y=e=>e?.length?e.map($).filter(Boolean):[],b=[{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:d,singleField:e.EFilterField.SINGLE_CAMPAIGN,multiField:e.EFilterField.GROUP_CAMPAIGN}],j=e=>`'${e.replace(/'/g,"''")}'`,V=(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.map(j).join(", ")})`:`${e} = ${j(String(r))}`])):{})(r);return b.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 T=l??(c?i:s);a&&!c&&(c=e[s]);const p=(e=>{const{operatorValue:r,singleValue:t,multiValue:a,fieldName:i}=e;return r===d&&t?`${i} = ${j(t)}`:r===A&&Array.isArray(a)&&a.length>0?`${i} IN (${a.map(j).join(", ")})`:""})({operatorValue:E,singleValue:Array.isArray(c)?void 0:c,multiValue:Array.isArray(u)?u:void 0,fieldName:T});p&&t.push(p)}),t},Q=e=>{const r=[];return e?(Object.entries(e).forEach(([e,t])=>{t&&r.push(`${e} = ${j(t)}`)}),r):r},H=(e,r)=>{if(!e||0===r.length)return[];const t=r.find(r=>e[r]);return t?[t]:[]},W=({filters:e,overrideFilters:r,versionIds:t,extraConditions:a})=>{const i=[...V(e,r),...Q(t),...Y(a)];return i.length>0?`WHERE ${i.join(" AND ")}`:""},K=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={},n=e=>e.replace(/^'(.*)'$/s,"$1").replace(/''/g,"'");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=>n(e.trim())),i=b.find(r=>r.fieldName===e||r.multiField===e);return void(i?.operator&&(a[i.multiField]=r,a[i.operator]=A))}const s=r.match(/^(\S+)\s+=\s+(.+)$/);if(s){const e=s[1]??"",r=n(s[2]??""),t=b.find(r=>r.fieldName===e||r.singleField===e);t?(a[t.singleField]=r,t.operator&&(a[t.operator]=d)):e&&(i[e]=r)}}),{filters:a,versionIds:Object.keys(i).length>0?i:void 0}},B=e=>`FROM ${e.join(", ")}`,w=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):[]},q=(r,t=e.EGroupWithClause.ALL)=>0===r.length?"":`GROUP BY ${r.join(", ")} ${t}`,X=r=>{const t=r.match(new RegExp(`\\bGROUP BY\\s+([\\s\\S]+?)(?=\\s+(?:${L})\\b|$)`,"i"));if(!t)return{dimensions:[]};let a=(t[1]??"").trim();const i=Object.values(e.EGroupWithClause).filter(r=>r!==e.EGroupWithClause.NONE).sort((e,r)=>r.length-e.length);let n=e.EGroupWithClause.NONE;const s=a.toUpperCase();for(const e of i)if(s.endsWith(e)){n=e,a=a.slice(0,a.length-e.length).trim();break}return{dimensions:a.split(",").map(e=>e.trim()).filter(Boolean),groupWithClause:n}},k=e=>e?`LIMIT ${e}`:"",z=e=>{const r=e.match(/\bLIMIT\s+(\d+)/i);return r?parseInt(r[1]??"0",10):void 0},J=e=>`MODE ${e}`,Z=e=>{const r=e.match(/\bMODE\s+(\S+)/i);return r?.[1]},ee=e=>!e||e<0?"":`OFFSET ${e}`,re=e=>{const r=e.match(/\bOFFSET\s+(\d+)/i);return r?parseInt(r[1]??"0",10):void 0},te=(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}`:""},ae=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},ie=e=>`SHOW ${e.join(", ")}`,ne=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):[]},se=/\.0+$/,oe=(e,r=2)=>(e=>`${e}`.replace(se,""))(e.toFixed(r)),le=(e,r,t=2)=>{const a=((e,r,t=2)=>{if("number"!=typeof e||!r)return;return 0===e?0:parseFloat(oe(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);function Ee(){return globalThis.__GEM_SDK_ANALYTICS_TZ__??"UTC"}const ce=e=>{const t=Ee();return e?r(e).tz(t):r().tz(t)};var ue;!function(e){e.DAY="DAY",e.HOUR="HOUR",e.MONTH="MONTH",e.QUARTER="QUARTER",e.WEEK="WEEK",e.YEAR="YEAR"}(ue||(ue={}));const me=60,Te=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 ue.HOUR:return ce(e).format(a.formatHouse);case ue.DAY:case ue.WEEK:return ce(e).format(a.formatDay);case ue.MONTH:return ce(e).format(a.formatMonth);case ue.QUARTER:{const r=ce(e);return`Q${r.quarter()} ${r.format("YYYY")}`}case ue.YEAR:return ce(e).format(a.formatYear)}return ce(e).format(a.formatMonth)};var Ae;!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"}(Ae||(Ae={}));const pe=e=>"string"==typeof e?ce(e):e,Oe=(e,r=!1)=>r&&(e=>0===e.hour()&&0===e.minute())(e)?e.endOf("day").format(h):e.format(h),Re=e=>{const r=pe(e.startDate),t=pe(e.endDate);return r.isSame(t)?{dateGTE:Oe(r),dateLTE:(a=t,Oe(a?ce(a).endOf("day"):ce().endOf("day")))}:{dateGTE:Oe(r),dateLTE:Oe(t,!0)};var a},_e=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}=Re(r),{dateGTE:l,dateLTE:E}=t?Re(t):{};return`SINCE ${s} UNTIL ${o} ${t?`COMPARE TO ${l} UNTIL ${E}`:""}`},Ie=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:ce(t[1]??""),endDate:ce(t[2]??"")},i=e.match(/\bCOMPARE TO\s+(\S+)\s+UNTIL\s+(\S+)/i);return{dateRange:a,compareDateRange:i?{startDate:ce(i[1]??""),endDate:ce(i[2]??"")}:void 0}},fe=e=>e?`TIMESERIES ${e}`:"",Ne=e=>{const r=e.match(/\bTIMESERIES\s+(\S+)/i);return r?.[1]},Se=e=>{const r=e??Ee();return r?`TIMEZONE ${r}`:""},Ce=e=>{const r=e.match(/\bTIMEZONE\s+(\S+)/i);return r?.[1]};function Pe(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 De=e=>e?.gemxQLQuery?.tableData?.columns??[],ye=e=>{if(!e)return"None";const r=ce(e),t=ce(),a=ce().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")}`},Fe=({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 ye(r);case e.EAnalyticDataType.PERCENT:return"number"!=typeof r?le(0,1,2)??"":le(r/100,1,2)??"";case e.EAnalyticDataType.DURATION:return(e=>{let r=e;Number.isFinite(e)&&null!=e||(r=0);const t=oe(r);if(r>=Te)return`${Math.floor(r/Te)}h ${Math.floor(r%Te/me)}m ${Math.floor(r%me)}s`;if(r>=me)return`${Math.floor(r/me)}m ${Math.floor(r%me)}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,ue.DAY,{isExpandDetail:!0});case e.EAnalyticDataType.HOUR:return de(r,ue.HOUR,{isExpandDetail:!0});case e.EAnalyticDataType.MONTH:return de(r,ue.MONTH,{isExpandDetail:!0});case e.EAnalyticDataType.YEAR:return de(r,ue.YEAR);case e.EAnalyticDataType.WEEK:return de(r,ue.WEEK,{isExpandDetail:!0});case e.EAnalyticDataType.QUARTER:return de(r,ue.QUARTER,{isExpandDetail:!0});case e.EAnalyticDataType.OBJECT:case e.EAnalyticDataType.ARRAY:return r;default:return`${r}`}},ge=e=>{const r=e?.sessions;return"number"==typeof r&&r>0},he=e=>{if(e)return"string"==typeof e?JSON.parse(e):e},Me=e=>{try{const r=he(e);return r&&"object"==typeof r?r:null}catch{return null}},Le=e=>{try{const r=he(e);if(!Array.isArray(r))return;return r}catch{return}},Ge=(e,r)=>{const t=e?.[r];if("number"==typeof t)return t;if("string"==typeof t){const e=parseFloat(t);return isNaN(e)?0:e}return 0},xe="\n fragment ColumnSelect on Column {\n dataType\n displayName\n name\n}\n ",ve="\n fragment TableDataSelect on TableData {\n columns {\n ...ColumnSelect\n }\n rows\n}\n ",Ue="\n fragment GemXQLResultSelect on GemxQLResult {\n tableData {\n ...TableDataSelect\n }\n}\n ",$e=`\n query GemxQL($input: String!) {\n gemxQLQuery(query: $input) {\n ...GemXQLResultSelect\n }\n}\n ${Ue}\n${ve}\n${xe}`,Ye=(e,r,t)=>n.useQuery({queryKey:["GemXQlCustom",e],queryFn:r($e,e),...t});Ye.getKey=e=>["GemXQlCustom",e];const be=({name:e,variables:r,fetcher:t},a)=>{const i=$e.replace(/query\s+GemxQL\b/,`query ${e}`);return n.useQuery({queryKey:[e,r],queryFn:t(i,r),retry:0,...a})};var je,Ve,Qe,He,We,Ke,Be,we;be.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"}(je||(je={})),je.SESSION,je.VISITORS,je.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"})]}),je.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"})]}),je.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)"})]}),je.PAGE_VIEWS,je.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"})]}),je.ADDED_TO_CART,je.REACHED_CHECKOUT,je.COMPLETE_CHECKOUT,je.ORDERS,je.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"})]}),je.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"})]}),je.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"})]}),je.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"})]}),je.CART_ADDITION,je.VISITOR_ITEMS,je.DEVICE_ITEMS,je.TRAFFIC_SOURCE_ITEMS,je.PAGE_PATH_ANALYSIS,function(e){e.ALL_SESSION="ALL_SESSION",e.FIRST_SESSION="FIRST_SESSION",e.PAGE_ONLY="PAGE_ONLY"}(Ve||(Ve={})),function(e){e.NEW="new",e.RETURNING="returning"}(Qe||(Qe={})),function(e){e.DESKTOP="desktop",e.MOBILE="mobile",e.TABLET="tablet"}(He||(He={})),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"}(We||(We={})),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"}(Ke||(Ke={})),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"}(Be||(Be={})),function(e){e.PRICE="PRICE",e.TEMPLATE="TEMPLATE",e.TEMPLATE_BUNDLE="TEMPLATE_BUNDLE"}(we||(we={})),Qe.NEW,Qe.RETURNING,He.DESKTOP,He.TABLET,He.MOBILE,We.DIRECT,We.EMAIL,We.REFERRAL,We.ORGANIC_SOCIAL,We.ORGANIC_SEARCH,We.PAID_SOCIAL,We.PAID_SEARCH,We.SMS,l.create(e=>({currencyRates:null,setCurrencyRates:r=>e({currencyRates:r})}));const qe=o.createContext({getTextPrice:e=>"string"==typeof e?e:`${e??0}`});var Xe;e.GPaginationDirection=void 0,(Xe=e.GPaginationDirection||(e.GPaginationDirection={})).NEXT="NEXT",Xe.PREVIOUS="PREVIOUS";e.CLAUSE_KEYWORDS=M,e.CLAUSE_KEYWORD_BOUNDARY=L,e.COMPARE_PREFIX=u,e.COMPARE_SUFFIX=m,e.COMPARE_TOTALS_SUFFIX=T,e.ColumnSelectFragmentDoc=xe,e.DATE_QUERY_FORMAT=h,e.DEFAULT_QUERY_LIMIT=G,e.GemXqlResultSelectFragmentDoc=Ue,e.GemxQlDocument=$e,e.NONE_VALUE=E,e.OPERATOR_IS=d,e.OPERATOR_IS_ONE_OF=A,e.PLACEHOLDER_VALUE="-",e.ROW_READER_MODE_CONFIG=g,e.TOTALS_SUFFIX=c,e.TableDataSelectFragmentDoc=ve,e.buildConditionQuery=W,e.buildExtraCondition=$,e.buildExtraConditions=Y,e.buildFromQuery=B,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:T,timezone:d,limit:A=G,offset:p,extraOrderByFields:O}=e,R=[...a,...H(c,t),...O??[]],_=[J(r),B(u),ie(t),q(a,T),fe(m),_e({dateRange:i,compareDateRange:n,timeDimension:m,overrideFilters:o}),Se(d),W({filters:s,overrideFilters:o,versionIds:l,extraConditions:E}),te(c,R),k(A),ee(p)].filter(Boolean).join(" ");return Pe(_)?_:""},e.buildGroupQuery=q,e.buildLimitQuery=k,e.buildModeQuery=J,e.buildOffsetQuery=ee,e.buildOrderByQuery=te,e.buildShowQuery=ie,e.buildTimeQuery=_e,e.buildTimeSeriesQuery=fe,e.buildTimezoneQuery=Se,e.buildVersionIdCondition=Q,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=De(e),t={};for(const e of r)e?.name&&(t[e.name]=e.dataType);return t},e.extractQueryColumns=De,e.extractQueryRows=e=>e?.gemxQLQuery?.tableData?.rows??[],e.filterConfigs=b,e.formatAnalyticData=Fe,e.formatAnalyticDate=ye,e.generateFilterConditions=V,e.getComparisonKey=e=>`${u}${e}${m}`,e.getComparisonTotalsKey=e=>`${u}${e}${m}${c}`,e.getFirstMetricInOrderBy=H,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=ge,e.isValidQueryInput=Pe,e.parseBreakdownItems=e=>Le(e)?.map(e=>({...e,total:Number(e.total)})),e.parseConditionQuery=K,e.parseFromQuery=w,e.parseGemXQlQuery=e=>{const{dateRange:r,compareDateRange:t,timeDimension:a,overrideFilters:i}=Ie(e),n=a??Ne(e),{dimensions:s,groupWithClause:o}=X(e),{filters:l,versionIds:E}=K(e);return{mode:Z(e),sources:w(e),metrics:ne(e),dimensions:s,groupWithClause:o,timeDimension:n,dateRange:r,compareDateRange:t,overrideFilters:i,filters:l,versionIds:E,timezone:Ce(e),orderBy:ae(e),limit:z(e),offset:re(e)}},e.parseGroupQuery=X,e.parseJsonArray=Le,e.parseJsonObject=Me,e.parseLimitQuery=z,e.parseModeQuery=Z,e.parseOffsetQuery=re,e.parseOrderByQuery=ae,e.parsePageItems=e=>Me(e),e.parseShowQuery=ne,e.parseTimeQuery=Ie,e.parseTimeSeriesQuery=Ne,e.parseTimezoneQuery=Ce,e.readNumeric=Ge,e.useAnalyticData=({getTextPrice:e}={})=>{const{getTextPrice:r}=o.useContext(qe),t=e??r,a=({value:e,formatter:r,name:a})=>Fe({value:e,formatter:r,getTextPrice:t,name:a});return{formatData:a,computeMetric:({metric:e,previousMetric:r,metricKey:t,formatter:i})=>{if(!ge(e))return{value:0,change:"-"};const n=Ge(e,t),s=Ge(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.useMemo(()=>{if(void 0!==r)try{return JSON.stringify(r)}catch{return String(r)}},[r]),s=o.useRef(),l=a>1&&void 0!==s.current&&s.current!==n?1:a,E=(l-1)*t,c=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(()=>{s.current!==n&&(s.current=n,i(1))},[n]);const u=o.useCallback(({totalRecords:e,isLoading:r})=>{const a=Math.max(1,Math.ceil(e/t));return{currentPage:l,totalPages:a,loading:r,handlePageChange:c(a)}},[l,t,c]);return{currentPage:l,offset:E,buildPagination:u}},e.useGemxQlNamedQuery=be});