@levi-gemcommerce/analytics 1.0.0-dev.13 → 1.0.0-dev.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/esm/constants/breakdown-targets.d.ts +1 -1
  2. package/dist/esm/core/gemxql/builder/clauses/mode-query.d.ts +1 -1
  3. package/dist/esm/core/gemxql/builder/clauses/time-query.d.ts +2 -1
  4. package/dist/esm/core/gemxql/builder/helpers/date-query-helpers.d.ts +1 -1
  5. package/dist/esm/core/gemxql/index.d.ts +3 -4
  6. package/dist/esm/core/gemxql/types/date-filter.d.ts +1 -1
  7. package/dist/esm/core/gemxql/types/index.d.ts +0 -3
  8. package/dist/esm/gemxql.js +124 -154
  9. package/dist/esm/gemxql.mjs +124 -154
  10. package/dist/esm/index.d.ts +1 -0
  11. package/dist/esm/index.js +530 -532
  12. package/dist/esm/index.mjs +530 -532
  13. package/dist/esm/types/breakdown-items.d.ts +19 -0
  14. package/dist/esm/types/index.d.ts +1 -0
  15. package/dist/esm/types.js +24 -1
  16. package/dist/esm/types.mjs +24 -1
  17. package/dist/esm/utils/analytics.d.ts +12 -0
  18. package/dist/esm/utils/index.d.ts +1 -0
  19. package/dist/umd/esm/constants/breakdown-targets.d.ts +1 -1
  20. package/dist/umd/esm/core/gemxql/builder/clauses/mode-query.d.ts +1 -1
  21. package/dist/umd/esm/core/gemxql/builder/clauses/time-query.d.ts +2 -1
  22. package/dist/umd/esm/core/gemxql/builder/helpers/date-query-helpers.d.ts +1 -1
  23. package/dist/umd/esm/core/gemxql/index.d.ts +3 -4
  24. package/dist/umd/esm/core/gemxql/types/date-filter.d.ts +1 -1
  25. package/dist/umd/esm/core/gemxql/types/index.d.ts +0 -3
  26. package/dist/umd/esm/index.d.ts +1 -0
  27. package/dist/umd/esm/types/breakdown-items.d.ts +19 -0
  28. package/dist/umd/esm/types/index.d.ts +1 -0
  29. package/dist/umd/esm/utils/analytics.d.ts +12 -0
  30. package/dist/umd/esm/utils/index.d.ts +1 -0
  31. package/dist/umd/gemxql.js +1 -1
  32. package/dist/umd/index.js +1 -1
  33. package/dist/umd/types.js +1 -1
  34. package/package.json +2 -2
@@ -1,15 +1,15 @@
1
1
  "use client"
2
2
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
3
- import '@tanstack/react-query';
3
+ import { Text, Box, InlineStack, Icon, InlineGrid, Tooltip, Button, BlockStack, Checkbox, RadioButton, Popover, ActionList, Link, SkeletonDisplayText, List, Card, SkeletonBodyText, TextField, Collapsible, useBreakpoints, Select, Scrollable, OptionList, DatePicker, ButtonGroup } from '@shopify/polaris';
4
+ import React, { useMemo, useCallback, useState, useEffect, forwardRef, Fragment as Fragment$1, useRef, useImperativeHandle, createContext, useContext } from 'react';
4
5
  import dayjs from 'dayjs';
5
6
  export { default as dayjs } from 'dayjs';
6
7
  import quarterOfYear from 'dayjs/plugin/quarterOfYear.js';
7
8
  import timezone from 'dayjs/plugin/timezone.js';
8
9
  import utc from 'dayjs/plugin/utc.js';
9
- import React, { useMemo, useCallback, useState, useEffect, forwardRef, Fragment as Fragment$1, useRef, useImperativeHandle, createContext, useContext } from 'react';
10
- import { Text, Box, InlineStack, Icon, InlineGrid, Tooltip, Button, BlockStack, Checkbox, RadioButton, Popover, ActionList, Link, SkeletonDisplayText, List, Card, SkeletonBodyText, TextField, Collapsible, useBreakpoints, Select, Scrollable, OptionList, DatePicker, ButtonGroup } from '@shopify/polaris';
11
10
  import { useTranslation } from 'react-i18next';
12
11
  import { PolarisVizProvider, LineChart, DonutChart } from '@shopify/polaris-viz';
12
+ import '@tanstack/react-query';
13
13
 
14
14
  var EMetricKey;
15
15
  (function (EMetricKey) {
@@ -125,53 +125,12 @@ const ANALYTICS_METRIC_TOOLTIP = {
125
125
  },
126
126
  };
127
127
 
128
- const NONE_VALUE = 'None';
129
- const PLACEHOLDER_VALUE$1 = '-';
130
-
131
- const TOTALS_SUFFIX = '___totals';
132
- const COMPARE_PREFIX = 'comparison___';
133
- const COMPARE_SUFFIX = '___previous_period';
134
- const COMPARE_TOTALS_SUFFIX = `${COMPARE_SUFFIX}${TOTALS_SUFFIX}`;
135
-
136
- const OPERATOR_IS = 'is';
137
-
138
- var EAnalyticDataType;
139
- (function (EAnalyticDataType) {
140
- EAnalyticDataType["DATE"] = "DATE";
141
- EAnalyticDataType["ARRAY"] = "ARRAY";
142
- EAnalyticDataType["OBJECT"] = "OBJECT";
143
- EAnalyticDataType["STRING"] = "STRING";
144
- EAnalyticDataType["INTEGER"] = "INTEGER";
145
- EAnalyticDataType["CURRENCY"] = "CURRENCY";
146
- EAnalyticDataType["PERCENT"] = "PERCENT";
147
- EAnalyticDataType["DURATION"] = "DURATION";
148
- EAnalyticDataType["MONTH"] = "MONTH_TIMESTAMP";
149
- EAnalyticDataType["QUARTER"] = "QUARTER_TIMESTAMP";
150
- EAnalyticDataType["DAY"] = "DAY_TIMESTAMP";
151
- EAnalyticDataType["WEEK"] = "WEEK_TIMESTAMP";
152
- EAnalyticDataType["YEAR"] = "YEAR_TIMESTAMP";
153
- EAnalyticDataType["HOUR"] = "HOUR_TIMESTAMP";
154
- })(EAnalyticDataType || (EAnalyticDataType = {}));
155
- var EAnalyticColumnKey;
156
- (function (EAnalyticColumnKey) {
157
- EAnalyticColumnKey["CAMPAIGNS"] = "experiments";
158
- EAnalyticColumnKey["VISITOR_ITEMS"] = "visitor_items";
159
- EAnalyticColumnKey["DEVICE_ITEMS"] = "device_items";
160
- EAnalyticColumnKey["TRAFFIC_SOURCE_ITEMS"] = "traffic_source_items";
161
- })(EAnalyticColumnKey || (EAnalyticColumnKey = {}));
162
-
163
- var EAnalyticMode$1;
128
+ var EAnalyticMode;
164
129
  (function (EAnalyticMode) {
165
130
  EAnalyticMode["ALL_SESSION"] = "ALL_SESSION";
166
131
  EAnalyticMode["FIRST_SESSION"] = "FIRST_SESSION";
167
132
  EAnalyticMode["PAGE_ONLY"] = "PAGE_ONLY";
168
- })(EAnalyticMode$1 || (EAnalyticMode$1 = {}));
169
-
170
- var EAnalyticSource;
171
- (function (EAnalyticSource) {
172
- EAnalyticSource["SESSIONS"] = "sessions";
173
- EAnalyticSource["SALES"] = "sales";
174
- })(EAnalyticSource || (EAnalyticSource = {}));
133
+ })(EAnalyticMode || (EAnalyticMode = {}));
175
134
 
176
135
  var EVisitorType;
177
136
  (function (EVisitorType) {
@@ -196,158 +155,108 @@ var ETrafficSourceType;
196
155
  ETrafficSourceType["SMS"] = "sms";
197
156
  })(ETrafficSourceType || (ETrafficSourceType = {}));
198
157
 
199
- var EComparisonOperator;
200
- (function (EComparisonOperator) {
201
- EComparisonOperator["EQ"] = "=";
202
- EComparisonOperator["IN"] = "IN";
203
- EComparisonOperator["LIKE"] = "LIKE";
204
- })(EComparisonOperator || (EComparisonOperator = {}));
205
- var EGroupOperator;
206
- (function (EGroupOperator) {
207
- EGroupOperator["OR"] = "OR";
208
- EGroupOperator["AND"] = "AND";
209
- })(EGroupOperator || (EGroupOperator = {}));
158
+ const TARGET_VISITOR = [
159
+ { value: EVisitorType.NEW, label: 'New' },
160
+ { value: EVisitorType.RETURNING, label: 'Returning' },
161
+ ];
162
+ const TARGET_DEVICES = [
163
+ { value: EDeviceType.DESKTOP, label: 'Desktop' },
164
+ { value: EDeviceType.TABLET, label: 'Tablet' },
165
+ { value: EDeviceType.MOBILE, label: 'Mobile' },
166
+ ];
167
+ const TARGET_CHANNEL = [
168
+ { value: ETrafficSourceType.DIRECT, label: 'Direct' },
169
+ { value: ETrafficSourceType.EMAIL, label: 'Email' },
170
+ { value: ETrafficSourceType.REFERRAL, label: 'Referral' },
171
+ { value: ETrafficSourceType.ORGANIC_SOCIAL, label: 'Organic social' },
172
+ { value: ETrafficSourceType.ORGANIC_SEARCH, label: 'Organic search' },
173
+ { value: ETrafficSourceType.PAID_SOCIAL, label: 'Paid social' },
174
+ { value: ETrafficSourceType.PAID_SEARCH, label: 'Paid search' },
175
+ { value: ETrafficSourceType.SMS, label: 'SMS' },
176
+ ];
210
177
 
211
- var EFilterField;
212
- (function (EFilterField) {
213
- EFilterField["DEVICE"] = "device";
214
- EFilterField["DEVICES"] = "devices";
215
- EFilterField["VISITOR"] = "visitor_type";
216
- EFilterField["VISITORS"] = "visitor_types";
217
- EFilterField["TRAFFIC_SOURCE"] = "traffic_source";
218
- EFilterField["TRAFFIC_SOURCES"] = "traffic_sources";
219
- EFilterField["VERSION"] = "version";
220
- EFilterField["VERSIONS"] = "versions";
221
- EFilterField["SINGLE_PAGE"] = "page_path";
222
- EFilterField["LIST_PAGE"] = "page_paths";
223
- EFilterField["GROUP_CAMPAIGN_ITEM"] = "group_campaign_item";
224
- EFilterField["GROUP_CAMPAIGN_ITEMS"] = "group_campaign_items";
225
- EFilterField["SINGLE_CAMPAIGN"] = "experiment_id";
226
- EFilterField["GROUP_CAMPAIGN"] = "experiment_group_id";
227
- EFilterField["CAMPAIGN_VERSION_ID"] = "version_id";
228
- EFilterField["GROUP_CAMPAIGN_VERSION_ID"] = "group_version_id";
229
- })(EFilterField || (EFilterField = {}));
178
+ const CAMPAIGN_BACKGROUND_MAIN = {
179
+ ORIGIN: '#2C7DFF',
180
+ VARIANT: '#F34A70',
181
+ };
230
182
 
231
- var EOperatorField;
232
- (function (EOperatorField) {
233
- EOperatorField["DEVICE_OPERATOR"] = "deviceOperator";
234
- EOperatorField["VISITOR_OPERATOR"] = "visitorOperator";
235
- EOperatorField["TRAFFIC_SOURCE_OPERATOR"] = "trafficSourceOperator";
236
- EOperatorField["VERSION_OPERATOR"] = "versionOperator";
237
- EOperatorField["PAGE_OPERATOR"] = "pageOperator";
238
- EOperatorField["CAMPAIGN_ITEM_OPERATOR"] = "campaignItemOperator";
239
- })(EOperatorField || (EOperatorField = {}));
183
+ const DEFAULT_CURRENT_PERIOD_LABEL = 'Current';
184
+ const DEFAULT_PREVIOUS_PERIOD_LABEL = 'Previous';
185
+ const CHART_MIN_HEIGHT = 228;
186
+ const SERIES_COLORS = {
187
+ current: 'rgba(64, 176, 230, 1)',
188
+ comparison: 'rgba(161, 202, 231, 1)',
189
+ all: ['#2C7DFF', '#F34A70'],
190
+ };
191
+ const TREND_TONE = {
192
+ POSITIVE: '#007F5F',
193
+ NEUTRAL: '#4A4A4A',
194
+ };
195
+ const PLACEHOLDER_VALUE$1 = '-';
240
196
 
241
- /**
242
- * Controls which totals columns are appended to the query result.
243
- *
244
- * - NONE → no totals, GROUP BY only.
245
- * - TOTALS → adds `<metric>___totals` (grand total only). Use with single-dimension GROUP BY.
246
- * - ALL → adds subtotals per dimension group + grand total. Use with multi-dimension GROUP BY.
247
- */
248
- var EGroupWithClause;
249
- (function (EGroupWithClause) {
250
- EGroupWithClause["NONE"] = "";
251
- EGroupWithClause["TOTALS"] = "TOTALS";
252
- EGroupWithClause["ALL"] = "WITH GROUP_TOTALS, TOTALS";
253
- })(EGroupWithClause || (EGroupWithClause = {}));
197
+ const DEFAULT_CURRENCY_ANALYTIC = 'USD';
254
198
 
255
- var EOrderDirectionType;
256
- (function (EOrderDirectionType) {
257
- EOrderDirectionType["ASC"] = "ASC";
258
- EOrderDirectionType["DESC"] = "DESC";
259
- })(EOrderDirectionType || (EOrderDirectionType = {}));
199
+ var THUMB_PRODUCT_DEFAULT = "data:image/svg+xml;base64,PHN2ZwogIHdpZHRoPSI5MCIKICBoZWlnaHQ9IjcyIgogIHZpZXdCb3g9IjAgMCA5MCA3MiIKICBmaWxsPSJub25lIgogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKPgogIDxwYXRoCiAgICBkPSJNNDguNzUgMzQuNUM0OS45OTI2IDM0LjUgNTEgMzMuNDkyNiA1MSAzMi4yNUM1MSAzMS4wMDc0IDQ5Ljk5MjYgMzAgNDguNzUgMzBDNDcuNTA3NCAzMCA0Ni41IDMxLjAwNzQgNDYuNSAzMi4yNUM0Ni41IDMzLjQ5MjYgNDcuNTA3NCAzNC41IDQ4Ljc1IDM0LjVaIgogICAgZmlsbD0iIzYxNjE2MSIKICAvPgogIDxwYXRoCiAgICBmaWxsUnVsZT0iZXZlbm9kZCIKICAgIGNsaXBSdWxlPSJldmVub2RkIgogICAgZD0iTTQzLjUyNjggMjYuMjVINDYuNDczMkM0Ny42OTI0IDI2LjI1IDQ4LjY3NTggMjYuMjUgNDkuNDcyMiAyNi4zMTVDNTAuMjkyMiAyNi4zODIgNTEuMDEyNCAyNi41MjM2IDUxLjY3ODcgMjYuODYzMUM1Mi43MzcxIDI3LjQwMjQgNTMuNTk3NiAyOC4yNjI5IDU0LjEzNjkgMjkuMzIxM0M1NC40NzY0IDI5Ljk4NzYgNTQuNjE4IDMwLjcwNzggNTQuNjg1IDMxLjUyNzhDNTQuNzUgMzIuMzI0MiA1NC43NSAzMy4zMDc2IDU0Ljc1IDM0LjUyNjhWMzcuNDczMkM1NC43NSAzOC42OTI0IDU0Ljc1IDM5LjY3NTggNTQuNjg1IDQwLjQ3MjJDNTQuNjE4IDQxLjI5MjIgNTQuNDc2NCA0Mi4wMTI0IDU0LjEzNjkgNDIuNjc4N0M1My41OTc2IDQzLjczNzEgNTIuNzM3MSA0NC41OTc2IDUxLjY3ODcgNDUuMTM2OUM1MS4wMTI0IDQ1LjQ3NjQgNTAuMjkyMiA0NS42MTggNDkuNDcyMiA0NS42ODVDNDguNjc1OCA0NS43NSA0Ny42OTI0IDQ1Ljc1IDQ2LjQ3MzIgNDUuNzVINDMuNTI2OEM0Mi4zMDc2IDQ1Ljc1IDQxLjMyNDIgNDUuNzUgNDAuNTI3OCA0NS42ODVDMzkuNzA3OCA0NS42MTggMzguOTg3NiA0NS40NzY0IDM4LjMyMTMgNDUuMTM2OUMzNy4yNjI5IDQ0LjU5NzYgMzYuNDAyNCA0My43MzcxIDM1Ljg2MzEgNDIuNjc4N0MzNS41MjM2IDQyLjAxMjQgMzUuMzgyIDQxLjI5MjIgMzUuMzE1IDQwLjQ3MjJDMzUuMjUgMzkuNjc1OCAzNS4yNSAzOC42OTI0IDM1LjI1IDM3LjQ3MzJWMzQuNTI2OEMzNS4yNSAzMy4zMDc2IDM1LjI1IDMyLjMyNDIgMzUuMzE1IDMxLjUyNzhDMzUuMzgyIDMwLjcwNzggMzUuNTIzNiAyOS45ODc2IDM1Ljg2MzEgMjkuMzIxM0MzNi40MDI0IDI4LjI2MjkgMzcuMjYyOSAyNy40MDI0IDM4LjMyMTMgMjYuODYzMUMzOC45ODc2IDI2LjUyMzYgMzkuNzA3OCAyNi4zODIgNDAuNTI3OCAyNi4zMTVDNDEuMzI0MiAyNi4yNSA0Mi4zMDc2IDI2LjI1IDQzLjUyNjggMjYuMjVaTTQwLjcxMSAyOC41NTc2QzQwLjAzMDIgMjguNjEzMiAzOS42MzkxIDI4LjcxNjkgMzkuMzQyOCAyOC44Njc5QzM4LjcwNzcgMjkuMTkxNCAzOC4xOTE0IDI5LjcwNzcgMzcuODY3OSAzMC4zNDI4QzM3LjcxNjkgMzAuNjM5MSAzNy42MTMyIDMxLjAzMDIgMzcuNTU3NiAzMS43MTFDMzcuNTAwOSAzMi40MDUgMzcuNSAzMy4yOTYzIDM3LjUgMzQuNTc1VjM2LjcxNzdMMzguNTg0MiAzNS40MTY3QzM5LjU3MjQgMzQuMjMwOSA0MS4zNjU1IDM0LjE0OTYgNDIuNDU2OSAzNS4yNDFMNDYuNSAzOS4yODQxTDQ4LjI2OTQgMzcuNTE0NkM0OS4zNzU3IDM2LjQwODMgNTEuMTk4IDM2LjUwOTMgNTIuMTc1NCAzNy43MzA5TDUyLjQ5OTUgMzguMTM2MUM1Mi41IDM3LjkxMzEgNTIuNSAzNy42NzY1IDUyLjUgMzcuNDI1VjM0LjU3NUM1Mi41IDMzLjI5NjMgNTIuNDk5MSAzMi40MDUgNTIuNDQyNCAzMS43MTFDNTIuMzg2OCAzMS4wMzAyIDUyLjI4MzEgMzAuNjM5MSA1Mi4xMzIxIDMwLjM0MjhDNTEuODA4NiAyOS43MDc3IDUxLjI5MjMgMjkuMTkxNCA1MC42NTcyIDI4Ljg2NzlDNTAuMzYwOSAyOC43MTY5IDQ5Ljk2OTggMjguNjEzMiA0OS4yODkgMjguNTU3NkM0OC41OTUgMjguNTAwOSA0Ny43MDM3IDI4LjUgNDYuNDI1IDI4LjVINDMuNTc1QzQyLjI5NjMgMjguNSA0MS40MDUgMjguNTAwOSA0MC43MTEgMjguNTU3NlpNMzcuNTU3NiA0MC4yODlDMzcuNTU0MyA0MC4yNDkyIDM3LjU1MTMgNDAuMjA4OCAzNy41NDg0IDQwLjE2NzhDMzcuNTcxMSA0MC4xNDQ4IDM3LjU5MzEgNDAuMTIwNiAzNy42MTQyIDQwLjA5NTNMNDAuMzEyNyAzNi44NTcxQzQwLjQ1MzkgMzYuNjg3NyA0MC43MSAzNi42NzYxIDQwLjg2NTkgMzYuODMyTDQ1LjcwNDUgNDEuNjcwNkM0Ni4xNDM4IDQyLjEwOTkgNDYuODU2MSA0Mi4xMDk5IDQ3LjI5NTUgNDEuNjcwNkw0OS44NjA0IDM5LjEwNTZDNTAuMDE4NSAzOC45NDc2IDUwLjI3ODggMzguOTYyIDUwLjQxODQgMzkuMTM2NUw1Mi4yMzc3IDQxLjQxMDdDNTIuMjA1NiA0MS41MDEgNTIuMTcwNCA0MS41ODIyIDUyLjEzMjEgNDEuNjU3MkM1MS44MDg2IDQyLjI5MjMgNTEuMjkyMyA0Mi44MDg2IDUwLjY1NzIgNDMuMTMyMUM1MC4zNjA5IDQzLjI4MzEgNDkuOTY5OCA0My4zODY4IDQ5LjI4OSA0My40NDI0QzQ4LjU5NSA0My40OTkxIDQ3LjcwMzcgNDMuNSA0Ni40MjUgNDMuNUg0My41NzVDNDIuMjk2MyA0My41IDQxLjQwNSA0My40OTkxIDQwLjcxMSA0My40NDI0QzQwLjAzMDIgNDMuMzg2OCAzOS42MzkxIDQzLjI4MzEgMzkuMzQyOCA0My4xMzIxQzM4LjcwNzcgNDIuODA4NiAzOC4xOTE0IDQyLjI5MjMgMzcuODY3OSA0MS42NTcyQzM3LjcxNjkgNDEuMzYwOSAzNy42MTMyIDQwLjk2OTggMzcuNTU3NiA0MC4yODlaIgogICAgZmlsbD0iIzYxNjE2MSIKICAvPgo8L3N2Zz4K";
260
200
 
261
- var EPageMetric;
262
- (function (EPageMetric) {
263
- EPageMetric["PAGE_ITEMS"] = "page_items";
264
- EPageMetric["PAGE_PATHS"] = "page_paths";
265
- })(EPageMetric || (EPageMetric = {}));
266
- var EPageDimension;
267
- (function (EPageDimension) {
268
- EPageDimension["PAGE_PATH"] = "page_path";
269
- })(EPageDimension || (EPageDimension = {}));
270
- var EPageField;
271
- (function (EPageField) {
272
- EPageField["SHOPIFY_PAGE_ID"] = "shopify_page_id";
273
- EPageField["LOCATION_PATH"] = "location_path";
274
- EPageField["PAGE_TYPE"] = "page_type";
275
- EPageField["PAGE_TITLE"] = "page_title";
276
- EPageField["PAGE_PATH"] = "page_path";
277
- EPageField["TEMPLATE_SUFFIX"] = "template_suffix";
278
- })(EPageField || (EPageField = {}));
201
+ var SvgArrowRightIcon = function SvgArrowRightIcon(props) {
202
+ return /*#__PURE__*/React.createElement("svg", Object.assign({
203
+ viewBox: "0 0 20 20"
204
+ }, props), /*#__PURE__*/React.createElement("path", {
205
+ fillRule: "evenodd",
206
+ d: "M3.5 10a.75.75 0 0 1 .75-.75h9.69l-2.72-2.72a.75.75 0 1 1 1.06-1.06l4 4a.75.75 0 0 1 0 1.06l-4 4a.75.75 0 0 1-1.06-1.06l2.72-2.72h-9.69a.75.75 0 0 1-.75-.75Z"
207
+ }));
208
+ };
209
+ SvgArrowRightIcon.displayName = "ArrowRightIcon";
279
210
 
280
- var ERowReaderMode;
281
- (function (ERowReaderMode) {
282
- ERowReaderMode["DEFAULT"] = "DEFAULT";
283
- ERowReaderMode["COMPARISON"] = "COMPARISON";
284
- ERowReaderMode["TOTALS"] = "TOTALS";
285
- ERowReaderMode["COMPARISON_TOTALS"] = "COMPARISON_TOTALS";
286
- })(ERowReaderMode || (ERowReaderMode = {}));
211
+ var SvgCalendarIcon = function SvgCalendarIcon(props) {
212
+ return /*#__PURE__*/React.createElement("svg", Object.assign({
213
+ viewBox: "0 0 20 20"
214
+ }, props), /*#__PURE__*/React.createElement("path", {
215
+ fillRule: "evenodd",
216
+ d: "M7.75 3.5a.75.75 0 0 0-1.5 0v.407a3.075 3.075 0 0 0-.702.252 3.75 3.75 0 0 0-1.64 1.639c-.226.444-.32.924-.365 1.47-.043.531-.043 1.187-.043 2v1.464c0 .813 0 1.469.043 2 .045.546.14 1.026.366 1.47a3.75 3.75 0 0 0 1.639 1.64c.444.226.924.32 1.47.365.531.043 1.187.043 2 .043h3.383c.323 0 .542 0 .735-.02a3.75 3.75 0 0 0 3.344-3.344c.02-.193.02-.412.02-.735v-2.883c0-.813 0-1.469-.043-2-.045-.546-.14-1.026-.366-1.47a3.75 3.75 0 0 0-1.639-1.64 3.076 3.076 0 0 0-.702-.251v-.407a.75.75 0 0 0-1.5 0v.259c-.373-.009-.794-.009-1.268-.009h-1.964c-.474 0-.895 0-1.268.009v-.259Zm-1.521 1.995c.197-.1.458-.17.912-.207.462-.037 1.057-.038 1.909-.038h1.9c.853 0 1.447 0 1.91.038.453.037.714.107.912.207.423.216.767.56.983.984.1.197.17.458.207.912.014.18.024.38.029.609h-9.982c.006-.228.015-.429.03-.61.036-.453.106-.714.206-.911a2.25 2.25 0 0 1 .984-.984Zm-1.229 4.005v1.2c0 .853 0 1.447.038 1.91.037.453.107.714.207.912.216.423.56.767.984.983.197.1.458.17.912.207.462.037 1.057.038 1.909.038h3.306c.385 0 .52-.001.626-.012a2.25 2.25 0 0 0 2.006-2.006c.011-.106.012-.241.012-.626v-2.606h-10Z"
217
+ }));
218
+ };
219
+ SvgCalendarIcon.displayName = "CalendarIcon";
287
220
 
288
- var ETimeDimension;
289
- (function (ETimeDimension) {
290
- ETimeDimension["HOUR"] = "hour";
291
- ETimeDimension["DAY"] = "day";
292
- ETimeDimension["WEEK"] = "week";
293
- ETimeDimension["MONTH"] = "month";
294
- ETimeDimension["QUARTER"] = "quarter";
295
- ETimeDimension["YEAR"] = "year";
296
- })(ETimeDimension || (ETimeDimension = {}));
221
+ var SvgCheckIcon = function SvgCheckIcon(props) {
222
+ return /*#__PURE__*/React.createElement("svg", Object.assign({
223
+ viewBox: "0 0 20 20"
224
+ }, props), /*#__PURE__*/React.createElement("path", {
225
+ fillRule: "evenodd",
226
+ d: "M15.78 5.97a.75.75 0 0 1 0 1.06l-6.5 6.5a.75.75 0 0 1-1.06 0l-3.25-3.25a.75.75 0 1 1 1.06-1.06l2.72 2.72 5.97-5.97a.75.75 0 0 1 1.06 0Z"
227
+ }));
228
+ };
229
+ SvgCheckIcon.displayName = "CheckIcon";
297
230
 
298
- ({
299
- [ERowReaderMode.DEFAULT]: { prefix: '', suffix: '' },
300
- [ERowReaderMode.COMPARISON]: { prefix: COMPARE_PREFIX, suffix: COMPARE_SUFFIX },
301
- [ERowReaderMode.TOTALS]: { prefix: '', suffix: TOTALS_SUFFIX },
302
- [ERowReaderMode.COMPARISON_TOTALS]: { prefix: COMPARE_PREFIX, suffix: COMPARE_TOTALS_SUFFIX },
303
- });
231
+ var SvgChevronDownIcon = function SvgChevronDownIcon(props) {
232
+ return /*#__PURE__*/React.createElement("svg", Object.assign({
233
+ viewBox: "0 0 20 20"
234
+ }, props), /*#__PURE__*/React.createElement("path", {
235
+ fillRule: "evenodd",
236
+ d: "M5.72 8.47a.75.75 0 0 1 1.06 0l3.47 3.47 3.47-3.47a.75.75 0 1 1 1.06 1.06l-4 4a.75.75 0 0 1-1.06 0l-4-4a.75.75 0 0 1 0-1.06Z"
237
+ }));
238
+ };
239
+ SvgChevronDownIcon.displayName = "ChevronDownIcon";
304
240
 
305
- EGroupOperator.OR;
241
+ var SvgChevronRightIcon = function SvgChevronRightIcon(props) {
242
+ return /*#__PURE__*/React.createElement("svg", Object.assign({
243
+ viewBox: "0 0 20 20"
244
+ }, props), /*#__PURE__*/React.createElement("path", {
245
+ fillRule: "evenodd",
246
+ d: "M7.72 14.53a.75.75 0 0 1 0-1.06l3.47-3.47-3.47-3.47a.75.75 0 0 1 1.06-1.06l4 4a.75.75 0 0 1 0 1.06l-4 4a.75.75 0 0 1-1.06 0Z"
247
+ }));
248
+ };
249
+ SvgChevronRightIcon.displayName = "ChevronRightIcon";
306
250
 
307
- [
308
- {
309
- operator: EOperatorField.DEVICE_OPERATOR,
310
- singleField: EFilterField.DEVICE,
311
- multiField: EFilterField.DEVICES,
312
- fieldName: EFilterField.DEVICE,
313
- },
314
- {
315
- operator: EOperatorField.VISITOR_OPERATOR,
316
- singleField: EFilterField.VISITOR,
317
- multiField: EFilterField.VISITORS,
318
- fieldName: EFilterField.VISITOR,
319
- },
320
- {
321
- operator: EOperatorField.TRAFFIC_SOURCE_OPERATOR,
322
- singleField: EFilterField.TRAFFIC_SOURCE,
323
- multiField: EFilterField.TRAFFIC_SOURCES,
324
- fieldName: EFilterField.TRAFFIC_SOURCE,
325
- },
326
- {
327
- operator: EOperatorField.VERSION_OPERATOR,
328
- singleField: EFilterField.VERSION,
329
- multiField: EFilterField.VERSIONS,
330
- fieldName: EFilterField.VERSION,
331
- },
332
- {
333
- operator: EOperatorField.PAGE_OPERATOR,
334
- singleField: EFilterField.SINGLE_PAGE,
335
- multiField: EFilterField.LIST_PAGE,
336
- fieldName: EFilterField.SINGLE_PAGE,
337
- },
338
- {
339
- operator: EOperatorField.CAMPAIGN_ITEM_OPERATOR,
340
- singleField: EFilterField.GROUP_CAMPAIGN_ITEM,
341
- multiField: EFilterField.GROUP_CAMPAIGN_ITEMS,
342
- condition: EFilterField.GROUP_CAMPAIGN,
343
- fieldName: EFilterField.SINGLE_CAMPAIGN,
344
- },
345
- {
346
- operatorVal: OPERATOR_IS,
347
- singleField: EFilterField.SINGLE_CAMPAIGN,
348
- multiField: EFilterField.GROUP_CAMPAIGN,
349
- },
350
- ];
251
+ var SvgChevronUpIcon = function SvgChevronUpIcon(props) {
252
+ return /*#__PURE__*/React.createElement("svg", Object.assign({
253
+ viewBox: "0 0 20 20"
254
+ }, props), /*#__PURE__*/React.createElement("path", {
255
+ fillRule: "evenodd",
256
+ d: "M14.53 12.28a.75.75 0 0 1-1.06 0l-3.47-3.47-3.47 3.47a.75.75 0 0 1-1.06-1.06l4-4a.75.75 0 0 1 1.06 0l4 4a.75.75 0 0 1 0 1.06Z"
257
+ }));
258
+ };
259
+ SvgChevronUpIcon.displayName = "ChevronUpIcon";
351
260
 
352
261
  const TRIM_DECIMAL_ZEROS_REGEX = /\.0+$/;
353
262
  const DEFAULT_DECIMALS = 2;
@@ -361,6 +270,9 @@ const semverToNum = (v) => {
361
270
  const [major, minor, patch] = v.split('.').map((n) => Number(n));
362
271
  return (major ?? 0) * 1_000_000 + (minor ?? 0) * 1_000 + (patch ?? 0);
363
272
  };
273
+ const numberWithCommas = (x) => {
274
+ return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
275
+ };
364
276
 
365
277
  /**
366
278
  * Utility function to calculate percentage and format it.
@@ -517,9 +429,6 @@ var AnalyticInterval;
517
429
  AnalyticInterval["WEEK"] = "WEEK";
518
430
  AnalyticInterval["YEAR"] = "YEAR";
519
431
  })(AnalyticInterval || (AnalyticInterval = {}));
520
- function numberWithCommas(x) {
521
- return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
522
- }
523
432
  const SECONDS_IN_MINUTE = 60;
524
433
  const SECONDS_IN_HOUR = SECONDS_IN_MINUTE * SECONDS_IN_MINUTE;
525
434
  const getTimeDurationLabel = (valueInSeconds) => {
@@ -577,238 +486,6 @@ const getFormattedByInterval = (value, interval, options) => {
577
486
  return dayjsTz(value).format(optionFormat.formatMonth);
578
487
  };
579
488
 
580
- const formatAnalyticDate = (dateString) => {
581
- if (!dateString)
582
- return 'None';
583
- const date = dayjsTz(dateString);
584
- const now = dayjsTz();
585
- const yesterday = dayjsTz().subtract(1, 'day');
586
- const isToday = date.format('YYYY-MM-DD') === now.format('YYYY-MM-DD');
587
- const isYesterday = date.format('YYYY-MM-DD') === yesterday.format('YYYY-MM-DD');
588
- if (isToday) {
589
- return `Today at ${date.format('HH:mm')}`;
590
- }
591
- if (isYesterday) {
592
- return `Yesterday at ${date.format('HH:mm')}`;
593
- }
594
- const daysDiff = now.diff(date, 'day');
595
- const isWithinWeek = daysDiff >= 0 && daysDiff < 7;
596
- if (isWithinWeek) {
597
- return `${date.format('dddd')} at ${date.format('HH:mm')}`;
598
- }
599
- return `${date.format('MMM D')} at ${date.format('hh:mm a')}`;
600
- };
601
-
602
- const formatAnalyticData = ({ value, formatter, getTextPrice, name, }) => {
603
- const dataTypeIsObjectOrArray = value !== null && (typeof value === 'object' || Array.isArray(value));
604
- if (dataTypeIsObjectOrArray)
605
- return value;
606
- switch (formatter) {
607
- case EAnalyticDataType.INTEGER: {
608
- return numberWithCommas((value ?? 0).toString());
609
- }
610
- case EAnalyticDataType.CURRENCY: {
611
- if (!getTextPrice)
612
- return `${value ?? 0}`;
613
- return getTextPrice(value, false);
614
- }
615
- case EAnalyticDataType.DATE: {
616
- return formatAnalyticDate(value);
617
- }
618
- case EAnalyticDataType.PERCENT: {
619
- if (typeof value !== 'number')
620
- return calcPercentageString(0, 1, 2) ?? '';
621
- return calcPercentageString(value / 100, 1, 2) ?? '';
622
- }
623
- case EAnalyticDataType.DURATION: {
624
- return getTimeDurationLabel(Number(value));
625
- }
626
- case EAnalyticDataType.STRING: {
627
- const fallbackValue = name === EAnalyticColumnKey.CAMPAIGNS ? '' : NONE_VALUE;
628
- return value ?? fallbackValue;
629
- }
630
- case EAnalyticDataType.DAY: {
631
- return getFormattedByInterval(value, AnalyticInterval.DAY, { isExpandDetail: true });
632
- }
633
- case EAnalyticDataType.HOUR: {
634
- return getFormattedByInterval(value, AnalyticInterval.HOUR, { isExpandDetail: true });
635
- }
636
- case EAnalyticDataType.MONTH: {
637
- return getFormattedByInterval(value, AnalyticInterval.MONTH, { isExpandDetail: true });
638
- }
639
- case EAnalyticDataType.YEAR: {
640
- return getFormattedByInterval(value, AnalyticInterval.YEAR);
641
- }
642
- case EAnalyticDataType.WEEK: {
643
- return getFormattedByInterval(value, AnalyticInterval.WEEK, { isExpandDetail: true });
644
- }
645
- case EAnalyticDataType.QUARTER: {
646
- return getFormattedByInterval(value, AnalyticInterval.QUARTER, {
647
- isExpandDetail: true,
648
- });
649
- }
650
- case EAnalyticDataType.OBJECT:
651
- case EAnalyticDataType.ARRAY: {
652
- return value;
653
- }
654
- default:
655
- return `${value}`;
656
- }
657
- };
658
-
659
- const SESSION_KEY = 'sessions';
660
- const hasMetricData = (metric) => {
661
- const sessions = metric?.[SESSION_KEY];
662
- return typeof sessions === 'number' && sessions > 0;
663
- };
664
-
665
- const parseRawJson = (raw) => {
666
- if (!raw)
667
- return undefined;
668
- return typeof raw === 'string' ? JSON.parse(raw) : raw;
669
- };
670
- const parseJsonArray = (raw) => {
671
- try {
672
- const parsed = parseRawJson(raw);
673
- if (!Array.isArray(parsed))
674
- return undefined;
675
- return parsed;
676
- }
677
- catch {
678
- return undefined;
679
- }
680
- };
681
- const parseBreakdownItems = (raw) => parseJsonArray(raw)?.map((item) => ({ ...item, total: Number(item.total) }));
682
-
683
- const readNumeric = (metric, key) => {
684
- const raw = metric?.[key];
685
- return typeof raw === 'number' ? raw : 0;
686
- };
687
-
688
- const useAnalyticData = (getTextPrice) => {
689
- const formatData = ({ value, formatter, name }) => {
690
- return formatAnalyticData({ value, formatter, getTextPrice, name });
691
- };
692
- const computeMetric = ({ metric, previousMetric, metricKey, formatter, }) => {
693
- if (!hasMetricData(metric))
694
- return { value: 0, change: PLACEHOLDER_VALUE$1 };
695
- const currentValue = readNumeric(metric, metricKey);
696
- const previousValue = readNumeric(previousMetric, metricKey);
697
- const value = formatData({ value: currentValue, formatter, name: metricKey });
698
- if (currentValue === 0 && previousValue !== 0)
699
- return { value, change: -100 };
700
- if (previousValue === 0)
701
- return { value, change: PLACEHOLDER_VALUE$1 };
702
- const change = ((currentValue - previousValue) / previousValue) * 100;
703
- return { value, change };
704
- };
705
- return { formatData, computeMetric };
706
- };
707
-
708
- var GPaginationDirection;
709
- (function (GPaginationDirection) {
710
- GPaginationDirection["NEXT"] = "NEXT";
711
- GPaginationDirection["PREV"] = "PREV";
712
- })(GPaginationDirection || (GPaginationDirection = {}));
713
-
714
- [
715
- { value: EVisitorType.NEW, label: 'New' },
716
- { value: EVisitorType.RETURNING, label: 'Returning' },
717
- ];
718
- [
719
- { value: EDeviceType.DESKTOP, label: 'Desktop' },
720
- { value: EDeviceType.TABLET, label: 'Tablet' },
721
- { value: EDeviceType.MOBILE, label: 'Mobile' },
722
- ];
723
- [
724
- { value: ETrafficSourceType.DIRECT, label: 'Direct' },
725
- { value: ETrafficSourceType.EMAIL, label: 'Email' },
726
- { value: ETrafficSourceType.REFERRAL, label: 'Referral' },
727
- { value: ETrafficSourceType.ORGANIC_SOCIAL, label: 'Organic social' },
728
- { value: ETrafficSourceType.ORGANIC_SEARCH, label: 'Organic search' },
729
- { value: ETrafficSourceType.PAID_SOCIAL, label: 'Paid social' },
730
- { value: ETrafficSourceType.PAID_SEARCH, label: 'Paid search' },
731
- { value: ETrafficSourceType.SMS, label: 'SMS' },
732
- ];
733
-
734
- const DEFAULT_CURRENT_PERIOD_LABEL = 'Current';
735
- const DEFAULT_PREVIOUS_PERIOD_LABEL = 'Previous';
736
- const CHART_MIN_HEIGHT = 228;
737
- const SERIES_COLORS = {
738
- current: 'rgba(64, 176, 230, 1)',
739
- comparison: 'rgba(161, 202, 231, 1)',
740
- all: ['#2C7DFF', '#F34A70'],
741
- };
742
- const TREND_TONE = {
743
- POSITIVE: '#007F5F',
744
- NEUTRAL: '#4A4A4A',
745
- };
746
- const PLACEHOLDER_VALUE = '-';
747
-
748
- const DEFAULT_CURRENCY_ANALYTIC = 'USD';
749
-
750
- var THUMB_PRODUCT_DEFAULT = "data:image/svg+xml;base64,PHN2ZwogIHdpZHRoPSI5MCIKICBoZWlnaHQ9IjcyIgogIHZpZXdCb3g9IjAgMCA5MCA3MiIKICBmaWxsPSJub25lIgogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKPgogIDxwYXRoCiAgICBkPSJNNDguNzUgMzQuNUM0OS45OTI2IDM0LjUgNTEgMzMuNDkyNiA1MSAzMi4yNUM1MSAzMS4wMDc0IDQ5Ljk5MjYgMzAgNDguNzUgMzBDNDcuNTA3NCAzMCA0Ni41IDMxLjAwNzQgNDYuNSAzMi4yNUM0Ni41IDMzLjQ5MjYgNDcuNTA3NCAzNC41IDQ4Ljc1IDM0LjVaIgogICAgZmlsbD0iIzYxNjE2MSIKICAvPgogIDxwYXRoCiAgICBmaWxsUnVsZT0iZXZlbm9kZCIKICAgIGNsaXBSdWxlPSJldmVub2RkIgogICAgZD0iTTQzLjUyNjggMjYuMjVINDYuNDczMkM0Ny42OTI0IDI2LjI1IDQ4LjY3NTggMjYuMjUgNDkuNDcyMiAyNi4zMTVDNTAuMjkyMiAyNi4zODIgNTEuMDEyNCAyNi41MjM2IDUxLjY3ODcgMjYuODYzMUM1Mi43MzcxIDI3LjQwMjQgNTMuNTk3NiAyOC4yNjI5IDU0LjEzNjkgMjkuMzIxM0M1NC40NzY0IDI5Ljk4NzYgNTQuNjE4IDMwLjcwNzggNTQuNjg1IDMxLjUyNzhDNTQuNzUgMzIuMzI0MiA1NC43NSAzMy4zMDc2IDU0Ljc1IDM0LjUyNjhWMzcuNDczMkM1NC43NSAzOC42OTI0IDU0Ljc1IDM5LjY3NTggNTQuNjg1IDQwLjQ3MjJDNTQuNjE4IDQxLjI5MjIgNTQuNDc2NCA0Mi4wMTI0IDU0LjEzNjkgNDIuNjc4N0M1My41OTc2IDQzLjczNzEgNTIuNzM3MSA0NC41OTc2IDUxLjY3ODcgNDUuMTM2OUM1MS4wMTI0IDQ1LjQ3NjQgNTAuMjkyMiA0NS42MTggNDkuNDcyMiA0NS42ODVDNDguNjc1OCA0NS43NSA0Ny42OTI0IDQ1Ljc1IDQ2LjQ3MzIgNDUuNzVINDMuNTI2OEM0Mi4zMDc2IDQ1Ljc1IDQxLjMyNDIgNDUuNzUgNDAuNTI3OCA0NS42ODVDMzkuNzA3OCA0NS42MTggMzguOTg3NiA0NS40NzY0IDM4LjMyMTMgNDUuMTM2OUMzNy4yNjI5IDQ0LjU5NzYgMzYuNDAyNCA0My43MzcxIDM1Ljg2MzEgNDIuNjc4N0MzNS41MjM2IDQyLjAxMjQgMzUuMzgyIDQxLjI5MjIgMzUuMzE1IDQwLjQ3MjJDMzUuMjUgMzkuNjc1OCAzNS4yNSAzOC42OTI0IDM1LjI1IDM3LjQ3MzJWMzQuNTI2OEMzNS4yNSAzMy4zMDc2IDM1LjI1IDMyLjMyNDIgMzUuMzE1IDMxLjUyNzhDMzUuMzgyIDMwLjcwNzggMzUuNTIzNiAyOS45ODc2IDM1Ljg2MzEgMjkuMzIxM0MzNi40MDI0IDI4LjI2MjkgMzcuMjYyOSAyNy40MDI0IDM4LjMyMTMgMjYuODYzMUMzOC45ODc2IDI2LjUyMzYgMzkuNzA3OCAyNi4zODIgNDAuNTI3OCAyNi4zMTVDNDEuMzI0MiAyNi4yNSA0Mi4zMDc2IDI2LjI1IDQzLjUyNjggMjYuMjVaTTQwLjcxMSAyOC41NTc2QzQwLjAzMDIgMjguNjEzMiAzOS42MzkxIDI4LjcxNjkgMzkuMzQyOCAyOC44Njc5QzM4LjcwNzcgMjkuMTkxNCAzOC4xOTE0IDI5LjcwNzcgMzcuODY3OSAzMC4zNDI4QzM3LjcxNjkgMzAuNjM5MSAzNy42MTMyIDMxLjAzMDIgMzcuNTU3NiAzMS43MTFDMzcuNTAwOSAzMi40MDUgMzcuNSAzMy4yOTYzIDM3LjUgMzQuNTc1VjM2LjcxNzdMMzguNTg0MiAzNS40MTY3QzM5LjU3MjQgMzQuMjMwOSA0MS4zNjU1IDM0LjE0OTYgNDIuNDU2OSAzNS4yNDFMNDYuNSAzOS4yODQxTDQ4LjI2OTQgMzcuNTE0NkM0OS4zNzU3IDM2LjQwODMgNTEuMTk4IDM2LjUwOTMgNTIuMTc1NCAzNy43MzA5TDUyLjQ5OTUgMzguMTM2MUM1Mi41IDM3LjkxMzEgNTIuNSAzNy42NzY1IDUyLjUgMzcuNDI1VjM0LjU3NUM1Mi41IDMzLjI5NjMgNTIuNDk5MSAzMi40MDUgNTIuNDQyNCAzMS43MTFDNTIuMzg2OCAzMS4wMzAyIDUyLjI4MzEgMzAuNjM5MSA1Mi4xMzIxIDMwLjM0MjhDNTEuODA4NiAyOS43MDc3IDUxLjI5MjMgMjkuMTkxNCA1MC42NTcyIDI4Ljg2NzlDNTAuMzYwOSAyOC43MTY5IDQ5Ljk2OTggMjguNjEzMiA0OS4yODkgMjguNTU3NkM0OC41OTUgMjguNTAwOSA0Ny43MDM3IDI4LjUgNDYuNDI1IDI4LjVINDMuNTc1QzQyLjI5NjMgMjguNSA0MS40MDUgMjguNTAwOSA0MC43MTEgMjguNTU3NlpNMzcuNTU3NiA0MC4yODlDMzcuNTU0MyA0MC4yNDkyIDM3LjU1MTMgNDAuMjA4OCAzNy41NDg0IDQwLjE2NzhDMzcuNTcxMSA0MC4xNDQ4IDM3LjU5MzEgNDAuMTIwNiAzNy42MTQyIDQwLjA5NTNMNDAuMzEyNyAzNi44NTcxQzQwLjQ1MzkgMzYuNjg3NyA0MC43MSAzNi42NzYxIDQwLjg2NTkgMzYuODMyTDQ1LjcwNDUgNDEuNjcwNkM0Ni4xNDM4IDQyLjEwOTkgNDYuODU2MSA0Mi4xMDk5IDQ3LjI5NTUgNDEuNjcwNkw0OS44NjA0IDM5LjEwNTZDNTAuMDE4NSAzOC45NDc2IDUwLjI3ODggMzguOTYyIDUwLjQxODQgMzkuMTM2NUw1Mi4yMzc3IDQxLjQxMDdDNTIuMjA1NiA0MS41MDEgNTIuMTcwNCA0MS41ODIyIDUyLjEzMjEgNDEuNjU3MkM1MS44MDg2IDQyLjI5MjMgNTEuMjkyMyA0Mi44MDg2IDUwLjY1NzIgNDMuMTMyMUM1MC4zNjA5IDQzLjI4MzEgNDkuOTY5OCA0My4zODY4IDQ5LjI4OSA0My40NDI0QzQ4LjU5NSA0My40OTkxIDQ3LjcwMzcgNDMuNSA0Ni40MjUgNDMuNUg0My41NzVDNDIuMjk2MyA0My41IDQxLjQwNSA0My40OTkxIDQwLjcxMSA0My40NDI0QzQwLjAzMDIgNDMuMzg2OCAzOS42MzkxIDQzLjI4MzEgMzkuMzQyOCA0My4xMzIxQzM4LjcwNzcgNDIuODA4NiAzOC4xOTE0IDQyLjI5MjMgMzcuODY3OSA0MS42NTcyQzM3LjcxNjkgNDEuMzYwOSAzNy42MTMyIDQwLjk2OTggMzcuNTU3NiA0MC4yODlaIgogICAgZmlsbD0iIzYxNjE2MSIKICAvPgo8L3N2Zz4K";
751
-
752
- var SvgArrowRightIcon = function SvgArrowRightIcon(props) {
753
- return /*#__PURE__*/React.createElement("svg", Object.assign({
754
- viewBox: "0 0 20 20"
755
- }, props), /*#__PURE__*/React.createElement("path", {
756
- fillRule: "evenodd",
757
- d: "M3.5 10a.75.75 0 0 1 .75-.75h9.69l-2.72-2.72a.75.75 0 1 1 1.06-1.06l4 4a.75.75 0 0 1 0 1.06l-4 4a.75.75 0 0 1-1.06-1.06l2.72-2.72h-9.69a.75.75 0 0 1-.75-.75Z"
758
- }));
759
- };
760
- SvgArrowRightIcon.displayName = "ArrowRightIcon";
761
-
762
- var SvgCalendarIcon = function SvgCalendarIcon(props) {
763
- return /*#__PURE__*/React.createElement("svg", Object.assign({
764
- viewBox: "0 0 20 20"
765
- }, props), /*#__PURE__*/React.createElement("path", {
766
- fillRule: "evenodd",
767
- d: "M7.75 3.5a.75.75 0 0 0-1.5 0v.407a3.075 3.075 0 0 0-.702.252 3.75 3.75 0 0 0-1.64 1.639c-.226.444-.32.924-.365 1.47-.043.531-.043 1.187-.043 2v1.464c0 .813 0 1.469.043 2 .045.546.14 1.026.366 1.47a3.75 3.75 0 0 0 1.639 1.64c.444.226.924.32 1.47.365.531.043 1.187.043 2 .043h3.383c.323 0 .542 0 .735-.02a3.75 3.75 0 0 0 3.344-3.344c.02-.193.02-.412.02-.735v-2.883c0-.813 0-1.469-.043-2-.045-.546-.14-1.026-.366-1.47a3.75 3.75 0 0 0-1.639-1.64 3.076 3.076 0 0 0-.702-.251v-.407a.75.75 0 0 0-1.5 0v.259c-.373-.009-.794-.009-1.268-.009h-1.964c-.474 0-.895 0-1.268.009v-.259Zm-1.521 1.995c.197-.1.458-.17.912-.207.462-.037 1.057-.038 1.909-.038h1.9c.853 0 1.447 0 1.91.038.453.037.714.107.912.207.423.216.767.56.983.984.1.197.17.458.207.912.014.18.024.38.029.609h-9.982c.006-.228.015-.429.03-.61.036-.453.106-.714.206-.911a2.25 2.25 0 0 1 .984-.984Zm-1.229 4.005v1.2c0 .853 0 1.447.038 1.91.037.453.107.714.207.912.216.423.56.767.984.983.197.1.458.17.912.207.462.037 1.057.038 1.909.038h3.306c.385 0 .52-.001.626-.012a2.25 2.25 0 0 0 2.006-2.006c.011-.106.012-.241.012-.626v-2.606h-10Z"
768
- }));
769
- };
770
- SvgCalendarIcon.displayName = "CalendarIcon";
771
-
772
- var SvgCheckIcon = function SvgCheckIcon(props) {
773
- return /*#__PURE__*/React.createElement("svg", Object.assign({
774
- viewBox: "0 0 20 20"
775
- }, props), /*#__PURE__*/React.createElement("path", {
776
- fillRule: "evenodd",
777
- d: "M15.78 5.97a.75.75 0 0 1 0 1.06l-6.5 6.5a.75.75 0 0 1-1.06 0l-3.25-3.25a.75.75 0 1 1 1.06-1.06l2.72 2.72 5.97-5.97a.75.75 0 0 1 1.06 0Z"
778
- }));
779
- };
780
- SvgCheckIcon.displayName = "CheckIcon";
781
-
782
- var SvgChevronDownIcon = function SvgChevronDownIcon(props) {
783
- return /*#__PURE__*/React.createElement("svg", Object.assign({
784
- viewBox: "0 0 20 20"
785
- }, props), /*#__PURE__*/React.createElement("path", {
786
- fillRule: "evenodd",
787
- d: "M5.72 8.47a.75.75 0 0 1 1.06 0l3.47 3.47 3.47-3.47a.75.75 0 1 1 1.06 1.06l-4 4a.75.75 0 0 1-1.06 0l-4-4a.75.75 0 0 1 0-1.06Z"
788
- }));
789
- };
790
- SvgChevronDownIcon.displayName = "ChevronDownIcon";
791
-
792
- var SvgChevronRightIcon = function SvgChevronRightIcon(props) {
793
- return /*#__PURE__*/React.createElement("svg", Object.assign({
794
- viewBox: "0 0 20 20"
795
- }, props), /*#__PURE__*/React.createElement("path", {
796
- fillRule: "evenodd",
797
- d: "M7.72 14.53a.75.75 0 0 1 0-1.06l3.47-3.47-3.47-3.47a.75.75 0 0 1 1.06-1.06l4 4a.75.75 0 0 1 0 1.06l-4 4a.75.75 0 0 1-1.06 0Z"
798
- }));
799
- };
800
- SvgChevronRightIcon.displayName = "ChevronRightIcon";
801
-
802
- var SvgChevronUpIcon = function SvgChevronUpIcon(props) {
803
- return /*#__PURE__*/React.createElement("svg", Object.assign({
804
- viewBox: "0 0 20 20"
805
- }, props), /*#__PURE__*/React.createElement("path", {
806
- fillRule: "evenodd",
807
- d: "M14.53 12.28a.75.75 0 0 1-1.06 0l-3.47-3.47-3.47 3.47a.75.75 0 0 1-1.06-1.06l4-4a.75.75 0 0 1 1.06 0l4 4a.75.75 0 0 1 0 1.06Z"
808
- }));
809
- };
810
- SvgChevronUpIcon.displayName = "ChevronUpIcon";
811
-
812
489
  const GClickable = ({ children, fullWidth = false, cursor = 'pointer', onClick, onMouseEnter, onMouseLeave, }) => {
813
490
  return (jsx("div", { role: "button", tabIndex: 0, className: cls({
814
491
  'w-full': fullWidth,
@@ -1125,117 +802,398 @@ const GThumbnail = ({ source, alt, size, grayscale, defaultSource = THUMB_PRODUC
1125
802
  return jsx("span", { className: className, children: thumbnail });
1126
803
  };
1127
804
 
1128
- const SIZE_CLASS = {
1129
- default: 'w-[210px]',
1130
- wide: 'w-[320px]',
1131
- large: 'w-[328px]',
1132
- };
1133
- const ALIGNMENT_MAP = {
1134
- start: 'flex justify-start',
1135
- center: 'flex justify-center',
1136
- end: 'flex justify-end',
1137
- };
1138
- const GTooltipCard = forwardRef((props, ref) => {
1139
- const { tooltip, wrapper = 'div', activatorProps, isHideBorder, alignment, delay = 500, textDecoration = 'none', popoverRef, preferredAlignment = 'left', showArrow = false, } = props;
1140
- const { width = 'default' } = tooltip ?? {};
1141
- const [isMouseEnter, setIsMouseEnter] = useState(false);
1142
- const TooltipCardWrapper = wrapper;
1143
- const sizeClass = SIZE_CLASS[width];
1144
- const timeoutRef = useRef(null);
1145
- const handleMouseEnter = () => {
1146
- timeoutRef.current = setTimeout(() => {
1147
- setIsMouseEnter(true);
1148
- }, delay);
1149
- };
1150
- const handleMouseLeave = () => {
1151
- if (timeoutRef.current) {
1152
- clearTimeout(timeoutRef.current);
1153
- timeoutRef.current = null;
805
+ const SIZE_CLASS = {
806
+ default: 'w-[210px]',
807
+ wide: 'w-[320px]',
808
+ large: 'w-[328px]',
809
+ };
810
+ const ALIGNMENT_MAP = {
811
+ start: 'flex justify-start',
812
+ center: 'flex justify-center',
813
+ end: 'flex justify-end',
814
+ };
815
+ const GTooltipCard = forwardRef((props, ref) => {
816
+ const { tooltip, wrapper = 'div', activatorProps, isHideBorder, alignment, delay = 500, textDecoration = 'none', popoverRef, preferredAlignment = 'left', showArrow = false, } = props;
817
+ const { width = 'default' } = tooltip ?? {};
818
+ const [isMouseEnter, setIsMouseEnter] = useState(false);
819
+ const TooltipCardWrapper = wrapper;
820
+ const sizeClass = SIZE_CLASS[width];
821
+ const timeoutRef = useRef(null);
822
+ const handleMouseEnter = () => {
823
+ timeoutRef.current = setTimeout(() => {
824
+ setIsMouseEnter(true);
825
+ }, delay);
826
+ };
827
+ const handleMouseLeave = () => {
828
+ if (timeoutRef.current) {
829
+ clearTimeout(timeoutRef.current);
830
+ timeoutRef.current = null;
831
+ }
832
+ setIsMouseEnter(false);
833
+ };
834
+ useImperativeHandle(ref, () => ({ onClose: handleMouseLeave }));
835
+ return (jsx(TooltipCardWrapper, { className: cls('GTooltipCard cursor-pointer', alignment && ALIGNMENT_MAP[alignment], {
836
+ 'GTooltipCard--text-underline': textDecoration === 'underline',
837
+ }), onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, children: jsx(Popover, { ref: popoverRef, activator: !isHideBorder ? (jsx(Box, { borderBlockEndWidth: "025", borderStyle: "dashed", borderColor: "border-tertiary", as: wrapper, ...activatorProps, children: props.children })) : (jsx(InlineStack, { children: props.children })), activatorWrapper: wrapper, onClose: () => { }, active: isMouseEnter, preferredPosition: "below", preferredAlignment: preferredAlignment, children: tooltip && (jsx("div", { className: cls(sizeClass, { 'GTooltipCard-arrow': showArrow }), children: jsx(Box, { padding: "400", children: jsxs(BlockStack, { gap: "200", children: [jsxs(BlockStack, { gap: "100", children: [jsx(Text, { as: "span", variant: "headingSm", fontWeight: "semibold", children: tooltip.title }), jsxs(BlockStack, { gap: "200", children: [jsx(Text, { as: "span", variant: "bodyMd", tone: "subdued", fontWeight: "medium", children: jsx("span", { dangerouslySetInnerHTML: { __html: tooltip.content } }) }), tooltip.contentList && (jsx(List, { type: "bullet", children: tooltip.contentList.map((item) => (jsx(List.Item, { children: jsx(Text, { as: "span", variant: "bodyMd", tone: "subdued", fontWeight: "medium", children: item }) }, item))) }))] })] }), tooltip.formula && (jsx("div", { className: "rounded-md font-mono", style: { fontSize: '12px' }, children: tooltip.formula }))] }) }) })) }) }));
838
+ });
839
+ GTooltipCard.displayName = 'GTooltipCard';
840
+
841
+ const GViewBySelector = ({ activatorText, selected, options, minWidth, maxWidth, preferredAlignment = 'right', onSelect, }) => {
842
+ const [popoverActive, setPopoverActive] = useState(false);
843
+ const [itemHover, setItemHover] = useState(null);
844
+ const togglePopoverActive = () => setPopoverActive((prev) => !prev);
845
+ const selectedOption = useMemo(() => {
846
+ return options.find((item) => item.id === selected);
847
+ }, [options, selected]);
848
+ const activatorContent = useMemo(() => {
849
+ if (selectedOption) {
850
+ const content = selectedOption.title ?? selectedOption.content;
851
+ return activatorText ? `${activatorText}: ${content}` : content;
852
+ }
853
+ return activatorText;
854
+ }, [selectedOption, activatorText]);
855
+ const handleSelect = (value) => {
856
+ onSelect(value);
857
+ setPopoverActive(false);
858
+ };
859
+ return (jsx(Popover, { active: popoverActive, activator: jsx(GActivatorPopover, { active: popoverActive, content: activatorContent, textProps: { variant: 'bodySm' }, onClick: togglePopoverActive }), autofocusTarget: "first-node", fluidContent: true, onClose: togglePopoverActive, preferredAlignment: preferredAlignment, children: jsx(Box, { maxWidth: maxWidth, minWidth: minWidth, padding: "200", children: jsx(BlockStack, { gap: "200", children: options.map((option) => {
860
+ const isSelected = option.id === selected;
861
+ const isHover = itemHover === option.id;
862
+ const borderColor = isSelected ? 'input-border' : isHover ? 'border-hover' : 'transparent';
863
+ return (jsx(Box, { padding: "150", borderWidth: "025", borderColor: borderColor, borderRadius: "100", children: jsx("div", { onClick: () => handleSelect(option.id), className: "cursor-pointer", onMouseEnter: () => setItemHover(option.id), onMouseLeave: () => setItemHover(null), children: jsxs(InlineStack, { gap: "300", align: "space-between", blockAlign: "center", wrap: false, children: [jsxs(InlineStack, { gap: "300", blockAlign: "center", wrap: false, children: [jsx("div", { className: "bg-surface-secondary flex items-center justify-center rounded-md min-w-[184px] h-[92px]", children: jsx("img", { src: option.icon, alt: option.content, className: "w-full h-full object-contain" }) }), jsxs(BlockStack, { gap: "100", children: [jsx(Text, { as: "span", variant: "bodyMd", fontWeight: "semibold", children: option.content }), jsx(Text, { as: "p", variant: "bodyMd", tone: "subdued", children: option.helpText })] })] }), isSelected && (jsx(Box, { children: jsx(Icon, { source: SvgCheckIcon }) }))] }) }) }, option.id));
864
+ }) }) }) }));
865
+ };
866
+
867
+ const ChoiceHelpText = ({ item }) => {
868
+ return (jsxs(Text, { as: "p", variant: "bodyMd", children: [item.description, item.inlineAction && (jsx(Link, { monochrome: true, onClick: () => {
869
+ if (item.inlineAction?.onAction) {
870
+ item.inlineAction?.onAction();
871
+ }
872
+ else {
873
+ window.open(item.inlineAction?.url, item.inlineAction?.target ?? '_blank');
874
+ }
875
+ }, children: item.inlineAction?.content }))] }));
876
+ };
877
+
878
+ const GChartSkeleton = () => {
879
+ return jsx(GSkeletonDisplayText, { height: "188px" });
880
+ };
881
+
882
+ const LINE_SERIES_COLORS = {
883
+ comparison: SERIES_COLORS.comparison,
884
+ single: SERIES_COLORS.current,
885
+ all: [...SERIES_COLORS.all],
886
+ };
887
+ const MetricChartProvider = ({ children, minHeight = CHART_MIN_HEIGHT, seriesColors = LINE_SERIES_COLORS, }) => {
888
+ return (jsx(PolarisVizProvider, { themes: {
889
+ Light: {
890
+ chartContainer: {
891
+ minHeight,
892
+ },
893
+ grid: {
894
+ horizontalOverflow: true,
895
+ verticalOverflow: true,
896
+ horizontalMargin: 0,
897
+ },
898
+ seriesColors,
899
+ },
900
+ }, children: children }));
901
+ };
902
+
903
+ /**
904
+ * Returns a stateful value, and a set of memoized functions to toggle it,
905
+ * set it to true and set it to false
906
+ */
907
+ function useToggle(initialState) {
908
+ const [value, setState] = useState(initialState);
909
+ return {
910
+ value,
911
+ toggle: useCallback(() => setState((state) => !state), []),
912
+ setTrue: useCallback(() => setState(true), []),
913
+ setFalse: useCallback(() => setState(false), []),
914
+ };
915
+ }
916
+
917
+ const NONE_VALUE = 'None';
918
+ const PLACEHOLDER_VALUE = '-';
919
+
920
+ const TOTALS_SUFFIX = '___totals';
921
+ const COMPARE_PREFIX = 'comparison___';
922
+ const COMPARE_SUFFIX = '___previous_period';
923
+ const COMPARE_TOTALS_SUFFIX = `${COMPARE_SUFFIX}${TOTALS_SUFFIX}`;
924
+
925
+ const OPERATOR_IS = 'is';
926
+
927
+ var EAnalyticDataType;
928
+ (function (EAnalyticDataType) {
929
+ EAnalyticDataType["DATE"] = "DATE";
930
+ EAnalyticDataType["ARRAY"] = "ARRAY";
931
+ EAnalyticDataType["OBJECT"] = "OBJECT";
932
+ EAnalyticDataType["STRING"] = "STRING";
933
+ EAnalyticDataType["INTEGER"] = "INTEGER";
934
+ EAnalyticDataType["CURRENCY"] = "CURRENCY";
935
+ EAnalyticDataType["PERCENT"] = "PERCENT";
936
+ EAnalyticDataType["DURATION"] = "DURATION";
937
+ EAnalyticDataType["MONTH"] = "MONTH_TIMESTAMP";
938
+ EAnalyticDataType["QUARTER"] = "QUARTER_TIMESTAMP";
939
+ EAnalyticDataType["DAY"] = "DAY_TIMESTAMP";
940
+ EAnalyticDataType["WEEK"] = "WEEK_TIMESTAMP";
941
+ EAnalyticDataType["YEAR"] = "YEAR_TIMESTAMP";
942
+ EAnalyticDataType["HOUR"] = "HOUR_TIMESTAMP";
943
+ })(EAnalyticDataType || (EAnalyticDataType = {}));
944
+ var EAnalyticColumnKey;
945
+ (function (EAnalyticColumnKey) {
946
+ EAnalyticColumnKey["CAMPAIGNS"] = "experiments";
947
+ EAnalyticColumnKey["VISITOR_ITEMS"] = "visitor_items";
948
+ EAnalyticColumnKey["DEVICE_ITEMS"] = "device_items";
949
+ EAnalyticColumnKey["TRAFFIC_SOURCE_ITEMS"] = "traffic_source_items";
950
+ })(EAnalyticColumnKey || (EAnalyticColumnKey = {}));
951
+
952
+ var EAnalyticSource;
953
+ (function (EAnalyticSource) {
954
+ EAnalyticSource["SESSIONS"] = "sessions";
955
+ EAnalyticSource["SALES"] = "sales";
956
+ })(EAnalyticSource || (EAnalyticSource = {}));
957
+
958
+ var EComparisonOperator;
959
+ (function (EComparisonOperator) {
960
+ EComparisonOperator["EQ"] = "=";
961
+ EComparisonOperator["IN"] = "IN";
962
+ EComparisonOperator["LIKE"] = "LIKE";
963
+ })(EComparisonOperator || (EComparisonOperator = {}));
964
+ var EGroupOperator;
965
+ (function (EGroupOperator) {
966
+ EGroupOperator["OR"] = "OR";
967
+ EGroupOperator["AND"] = "AND";
968
+ })(EGroupOperator || (EGroupOperator = {}));
969
+
970
+ var EFilterField;
971
+ (function (EFilterField) {
972
+ EFilterField["DEVICE"] = "device";
973
+ EFilterField["DEVICES"] = "devices";
974
+ EFilterField["VISITOR"] = "visitor_type";
975
+ EFilterField["VISITORS"] = "visitor_types";
976
+ EFilterField["TRAFFIC_SOURCE"] = "traffic_source";
977
+ EFilterField["TRAFFIC_SOURCES"] = "traffic_sources";
978
+ EFilterField["VERSION"] = "version";
979
+ EFilterField["VERSIONS"] = "versions";
980
+ EFilterField["SINGLE_PAGE"] = "page_path";
981
+ EFilterField["LIST_PAGE"] = "page_paths";
982
+ EFilterField["GROUP_CAMPAIGN_ITEM"] = "group_campaign_item";
983
+ EFilterField["GROUP_CAMPAIGN_ITEMS"] = "group_campaign_items";
984
+ EFilterField["SINGLE_CAMPAIGN"] = "experiment_id";
985
+ EFilterField["GROUP_CAMPAIGN"] = "experiment_group_id";
986
+ EFilterField["CAMPAIGN_VERSION_ID"] = "version_id";
987
+ EFilterField["GROUP_CAMPAIGN_VERSION_ID"] = "group_version_id";
988
+ })(EFilterField || (EFilterField = {}));
989
+
990
+ var EOperatorField;
991
+ (function (EOperatorField) {
992
+ EOperatorField["DEVICE_OPERATOR"] = "deviceOperator";
993
+ EOperatorField["VISITOR_OPERATOR"] = "visitorOperator";
994
+ EOperatorField["TRAFFIC_SOURCE_OPERATOR"] = "trafficSourceOperator";
995
+ EOperatorField["VERSION_OPERATOR"] = "versionOperator";
996
+ EOperatorField["PAGE_OPERATOR"] = "pageOperator";
997
+ EOperatorField["CAMPAIGN_ITEM_OPERATOR"] = "campaignItemOperator";
998
+ })(EOperatorField || (EOperatorField = {}));
999
+
1000
+ /**
1001
+ * Controls which totals columns are appended to the query result.
1002
+ *
1003
+ * - NONE → no totals, GROUP BY only.
1004
+ * - TOTALS → adds `<metric>___totals` (grand total only). Use with single-dimension GROUP BY.
1005
+ * - ALL → adds subtotals per dimension group + grand total. Use with multi-dimension GROUP BY.
1006
+ */
1007
+ var EGroupWithClause;
1008
+ (function (EGroupWithClause) {
1009
+ EGroupWithClause["NONE"] = "";
1010
+ EGroupWithClause["TOTALS"] = "TOTALS";
1011
+ EGroupWithClause["ALL"] = "WITH GROUP_TOTALS, TOTALS";
1012
+ })(EGroupWithClause || (EGroupWithClause = {}));
1013
+
1014
+ var EOrderDirectionType;
1015
+ (function (EOrderDirectionType) {
1016
+ EOrderDirectionType["ASC"] = "ASC";
1017
+ EOrderDirectionType["DESC"] = "DESC";
1018
+ })(EOrderDirectionType || (EOrderDirectionType = {}));
1019
+
1020
+ var EPageMetric;
1021
+ (function (EPageMetric) {
1022
+ EPageMetric["PAGE_ITEMS"] = "page_items";
1023
+ EPageMetric["PAGE_PATHS"] = "page_paths";
1024
+ })(EPageMetric || (EPageMetric = {}));
1025
+ var EPageDimension;
1026
+ (function (EPageDimension) {
1027
+ EPageDimension["PAGE_PATH"] = "page_path";
1028
+ })(EPageDimension || (EPageDimension = {}));
1029
+ var EPageField;
1030
+ (function (EPageField) {
1031
+ EPageField["SHOPIFY_PAGE_ID"] = "shopify_page_id";
1032
+ EPageField["LOCATION_PATH"] = "location_path";
1033
+ EPageField["PAGE_TYPE"] = "page_type";
1034
+ EPageField["PAGE_TITLE"] = "page_title";
1035
+ EPageField["PAGE_PATH"] = "page_path";
1036
+ EPageField["TEMPLATE_SUFFIX"] = "template_suffix";
1037
+ })(EPageField || (EPageField = {}));
1038
+
1039
+ var ERowReaderMode;
1040
+ (function (ERowReaderMode) {
1041
+ ERowReaderMode["DEFAULT"] = "DEFAULT";
1042
+ ERowReaderMode["COMPARISON"] = "COMPARISON";
1043
+ ERowReaderMode["TOTALS"] = "TOTALS";
1044
+ ERowReaderMode["COMPARISON_TOTALS"] = "COMPARISON_TOTALS";
1045
+ })(ERowReaderMode || (ERowReaderMode = {}));
1046
+
1047
+ var ETimeDimension;
1048
+ (function (ETimeDimension) {
1049
+ ETimeDimension["HOUR"] = "hour";
1050
+ ETimeDimension["DAY"] = "day";
1051
+ ETimeDimension["WEEK"] = "week";
1052
+ ETimeDimension["MONTH"] = "month";
1053
+ ETimeDimension["QUARTER"] = "quarter";
1054
+ ETimeDimension["YEAR"] = "year";
1055
+ })(ETimeDimension || (ETimeDimension = {}));
1056
+
1057
+ ({
1058
+ [ERowReaderMode.DEFAULT]: { prefix: '', suffix: '' },
1059
+ [ERowReaderMode.COMPARISON]: { prefix: COMPARE_PREFIX, suffix: COMPARE_SUFFIX },
1060
+ [ERowReaderMode.TOTALS]: { prefix: '', suffix: TOTALS_SUFFIX },
1061
+ [ERowReaderMode.COMPARISON_TOTALS]: { prefix: COMPARE_PREFIX, suffix: COMPARE_TOTALS_SUFFIX },
1062
+ });
1063
+
1064
+ const formatAnalyticDate = (dateString) => {
1065
+ if (!dateString)
1066
+ return 'None';
1067
+ const date = dayjsTz(dateString);
1068
+ const now = dayjsTz();
1069
+ const yesterday = dayjsTz().subtract(1, 'day');
1070
+ const isToday = date.format('YYYY-MM-DD') === now.format('YYYY-MM-DD');
1071
+ const isYesterday = date.format('YYYY-MM-DD') === yesterday.format('YYYY-MM-DD');
1072
+ if (isToday) {
1073
+ return `Today at ${date.format('HH:mm')}`;
1074
+ }
1075
+ if (isYesterday) {
1076
+ return `Yesterday at ${date.format('HH:mm')}`;
1077
+ }
1078
+ const daysDiff = now.diff(date, 'day');
1079
+ const isWithinWeek = daysDiff >= 0 && daysDiff < 7;
1080
+ if (isWithinWeek) {
1081
+ return `${date.format('dddd')} at ${date.format('HH:mm')}`;
1082
+ }
1083
+ return `${date.format('MMM D')} at ${date.format('hh:mm a')}`;
1084
+ };
1085
+
1086
+ const formatAnalyticData = ({ value, formatter, getTextPrice, name, }) => {
1087
+ const dataTypeIsObjectOrArray = value !== null && (typeof value === 'object' || Array.isArray(value));
1088
+ if (dataTypeIsObjectOrArray)
1089
+ return value;
1090
+ switch (formatter) {
1091
+ case EAnalyticDataType.INTEGER: {
1092
+ return numberWithCommas((value ?? 0).toString());
1154
1093
  }
1155
- setIsMouseEnter(false);
1156
- };
1157
- useImperativeHandle(ref, () => ({ onClose: handleMouseLeave }));
1158
- return (jsx(TooltipCardWrapper, { className: cls('GTooltipCard cursor-pointer', alignment && ALIGNMENT_MAP[alignment], {
1159
- 'GTooltipCard--text-underline': textDecoration === 'underline',
1160
- }), onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, children: jsx(Popover, { ref: popoverRef, activator: !isHideBorder ? (jsx(Box, { borderBlockEndWidth: "025", borderStyle: "dashed", borderColor: "border-tertiary", as: wrapper, ...activatorProps, children: props.children })) : (jsx(InlineStack, { children: props.children })), activatorWrapper: wrapper, onClose: () => { }, active: isMouseEnter, preferredPosition: "below", preferredAlignment: preferredAlignment, children: tooltip && (jsx("div", { className: cls(sizeClass, { 'GTooltipCard-arrow': showArrow }), children: jsx(Box, { padding: "400", children: jsxs(BlockStack, { gap: "200", children: [jsxs(BlockStack, { gap: "100", children: [jsx(Text, { as: "span", variant: "headingSm", fontWeight: "semibold", children: tooltip.title }), jsxs(BlockStack, { gap: "200", children: [jsx(Text, { as: "span", variant: "bodyMd", tone: "subdued", fontWeight: "medium", children: jsx("span", { dangerouslySetInnerHTML: { __html: tooltip.content } }) }), tooltip.contentList && (jsx(List, { type: "bullet", children: tooltip.contentList.map((item) => (jsx(List.Item, { children: jsx(Text, { as: "span", variant: "bodyMd", tone: "subdued", fontWeight: "medium", children: item }) }, item))) }))] })] }), tooltip.formula && (jsx("div", { className: "rounded-md font-mono", style: { fontSize: '12px' }, children: tooltip.formula }))] }) }) })) }) }));
1161
- });
1162
- GTooltipCard.displayName = 'GTooltipCard';
1163
-
1164
- const GViewBySelector = ({ activatorText, selected, options, minWidth, maxWidth, preferredAlignment = 'right', onSelect, }) => {
1165
- const [popoverActive, setPopoverActive] = useState(false);
1166
- const [itemHover, setItemHover] = useState(null);
1167
- const togglePopoverActive = () => setPopoverActive((prev) => !prev);
1168
- const selectedOption = useMemo(() => {
1169
- return options.find((item) => item.id === selected);
1170
- }, [options, selected]);
1171
- const activatorContent = useMemo(() => {
1172
- if (selectedOption) {
1173
- const content = selectedOption.title ?? selectedOption.content;
1174
- return activatorText ? `${activatorText}: ${content}` : content;
1094
+ case EAnalyticDataType.CURRENCY: {
1095
+ if (!getTextPrice)
1096
+ return `${value ?? 0}`;
1097
+ return getTextPrice(value, false);
1175
1098
  }
1176
- return activatorText;
1177
- }, [selectedOption, activatorText]);
1178
- const handleSelect = (value) => {
1179
- onSelect(value);
1180
- setPopoverActive(false);
1181
- };
1182
- return (jsx(Popover, { active: popoverActive, activator: jsx(GActivatorPopover, { active: popoverActive, content: activatorContent, textProps: { variant: 'bodySm' }, onClick: togglePopoverActive }), autofocusTarget: "first-node", fluidContent: true, onClose: togglePopoverActive, preferredAlignment: preferredAlignment, children: jsx(Box, { maxWidth: maxWidth, minWidth: minWidth, padding: "200", children: jsx(BlockStack, { gap: "200", children: options.map((option) => {
1183
- const isSelected = option.id === selected;
1184
- const isHover = itemHover === option.id;
1185
- const borderColor = isSelected ? 'input-border' : isHover ? 'border-hover' : 'transparent';
1186
- return (jsx(Box, { padding: "150", borderWidth: "025", borderColor: borderColor, borderRadius: "100", children: jsx("div", { onClick: () => handleSelect(option.id), className: "cursor-pointer", onMouseEnter: () => setItemHover(option.id), onMouseLeave: () => setItemHover(null), children: jsxs(InlineStack, { gap: "300", align: "space-between", blockAlign: "center", wrap: false, children: [jsxs(InlineStack, { gap: "300", blockAlign: "center", wrap: false, children: [jsx("div", { className: "bg-surface-secondary flex items-center justify-center rounded-md min-w-[184px] h-[92px]", children: jsx("img", { src: option.icon, alt: option.content, className: "w-full h-full object-contain" }) }), jsxs(BlockStack, { gap: "100", children: [jsx(Text, { as: "span", variant: "bodyMd", fontWeight: "semibold", children: option.content }), jsx(Text, { as: "p", variant: "bodyMd", tone: "subdued", children: option.helpText })] })] }), isSelected && (jsx(Box, { children: jsx(Icon, { source: SvgCheckIcon }) }))] }) }) }, option.id));
1187
- }) }) }) }));
1099
+ case EAnalyticDataType.DATE: {
1100
+ return formatAnalyticDate(value);
1101
+ }
1102
+ case EAnalyticDataType.PERCENT: {
1103
+ if (typeof value !== 'number')
1104
+ return calcPercentageString(0, 1, 2) ?? '';
1105
+ return calcPercentageString(value / 100, 1, 2) ?? '';
1106
+ }
1107
+ case EAnalyticDataType.DURATION: {
1108
+ return getTimeDurationLabel(Number(value));
1109
+ }
1110
+ case EAnalyticDataType.STRING: {
1111
+ const fallbackValue = name === EAnalyticColumnKey.CAMPAIGNS ? '' : NONE_VALUE;
1112
+ return value ?? fallbackValue;
1113
+ }
1114
+ case EAnalyticDataType.DAY: {
1115
+ return getFormattedByInterval(value, AnalyticInterval.DAY, { isExpandDetail: true });
1116
+ }
1117
+ case EAnalyticDataType.HOUR: {
1118
+ return getFormattedByInterval(value, AnalyticInterval.HOUR, { isExpandDetail: true });
1119
+ }
1120
+ case EAnalyticDataType.MONTH: {
1121
+ return getFormattedByInterval(value, AnalyticInterval.MONTH, { isExpandDetail: true });
1122
+ }
1123
+ case EAnalyticDataType.YEAR: {
1124
+ return getFormattedByInterval(value, AnalyticInterval.YEAR);
1125
+ }
1126
+ case EAnalyticDataType.WEEK: {
1127
+ return getFormattedByInterval(value, AnalyticInterval.WEEK, { isExpandDetail: true });
1128
+ }
1129
+ case EAnalyticDataType.QUARTER: {
1130
+ return getFormattedByInterval(value, AnalyticInterval.QUARTER, {
1131
+ isExpandDetail: true,
1132
+ });
1133
+ }
1134
+ case EAnalyticDataType.OBJECT:
1135
+ case EAnalyticDataType.ARRAY: {
1136
+ return value;
1137
+ }
1138
+ default:
1139
+ return `${value}`;
1140
+ }
1188
1141
  };
1189
1142
 
1190
- const ChoiceHelpText = ({ item }) => {
1191
- return (jsxs(Text, { as: "p", variant: "bodyMd", children: [item.description, item.inlineAction && (jsx(Link, { monochrome: true, onClick: () => {
1192
- if (item.inlineAction?.onAction) {
1193
- item.inlineAction?.onAction();
1194
- }
1195
- else {
1196
- window.open(item.inlineAction?.url, item.inlineAction?.target ?? '_blank');
1197
- }
1198
- }, children: item.inlineAction?.content }))] }));
1143
+ const SESSION_KEY = 'sessions';
1144
+ const hasMetricData = (metric) => {
1145
+ const sessions = metric?.[SESSION_KEY];
1146
+ return typeof sessions === 'number' && sessions > 0;
1199
1147
  };
1200
1148
 
1201
- const GChartSkeleton = () => {
1202
- return jsx(GSkeletonDisplayText, { height: "188px" });
1149
+ const parseRawJson = (raw) => {
1150
+ if (!raw)
1151
+ return undefined;
1152
+ return typeof raw === 'string' ? JSON.parse(raw) : raw;
1203
1153
  };
1204
-
1205
- const LINE_SERIES_COLORS = {
1206
- comparison: SERIES_COLORS.comparison,
1207
- single: SERIES_COLORS.current,
1208
- all: [...SERIES_COLORS.all],
1154
+ const parseJsonArray = (raw) => {
1155
+ try {
1156
+ const parsed = parseRawJson(raw);
1157
+ if (!Array.isArray(parsed))
1158
+ return undefined;
1159
+ return parsed;
1160
+ }
1161
+ catch {
1162
+ return undefined;
1163
+ }
1209
1164
  };
1210
- const MetricChartProvider = ({ children, minHeight = CHART_MIN_HEIGHT, seriesColors = LINE_SERIES_COLORS, }) => {
1211
- return (jsx(PolarisVizProvider, { themes: {
1212
- Light: {
1213
- chartContainer: {
1214
- minHeight,
1215
- },
1216
- grid: {
1217
- horizontalOverflow: true,
1218
- verticalOverflow: true,
1219
- horizontalMargin: 0,
1220
- },
1221
- seriesColors,
1222
- },
1223
- }, children: children }));
1165
+ const parseBreakdownItems = (raw) => parseJsonArray(raw)?.map((item) => ({ ...item, total: Number(item.total) }));
1166
+
1167
+ const readNumeric = (metric, key) => {
1168
+ const raw = metric?.[key];
1169
+ return typeof raw === 'number' ? raw : 0;
1224
1170
  };
1225
1171
 
1226
- /**
1227
- * Returns a stateful value, and a set of memoized functions to toggle it,
1228
- * set it to true and set it to false
1229
- */
1230
- function useToggle(initialState) {
1231
- const [value, setState] = useState(initialState);
1232
- return {
1233
- value,
1234
- toggle: useCallback(() => setState((state) => !state), []),
1235
- setTrue: useCallback(() => setState(true), []),
1236
- setFalse: useCallback(() => setState(false), []),
1172
+ const useAnalyticData = (getTextPrice) => {
1173
+ const formatData = ({ value, formatter, name }) => {
1174
+ return formatAnalyticData({ value, formatter, getTextPrice, name });
1237
1175
  };
1238
- }
1176
+ const computeMetric = ({ metric, previousMetric, metricKey, formatter, }) => {
1177
+ if (!hasMetricData(metric))
1178
+ return { value: 0, change: PLACEHOLDER_VALUE };
1179
+ const currentValue = readNumeric(metric, metricKey);
1180
+ const previousValue = readNumeric(previousMetric, metricKey);
1181
+ const value = formatData({ value: currentValue, formatter, name: metricKey });
1182
+ if (currentValue === 0 && previousValue !== 0)
1183
+ return { value, change: -100 };
1184
+ if (previousValue === 0)
1185
+ return { value, change: PLACEHOLDER_VALUE };
1186
+ const change = ((currentValue - previousValue) / previousValue) * 100;
1187
+ return { value, change };
1188
+ };
1189
+ return { formatData, computeMetric };
1190
+ };
1191
+
1192
+ var GPaginationDirection;
1193
+ (function (GPaginationDirection) {
1194
+ GPaginationDirection["NEXT"] = "NEXT";
1195
+ GPaginationDirection["PREV"] = "PREV";
1196
+ })(GPaginationDirection || (GPaginationDirection = {}));
1239
1197
 
1240
1198
  const useFormatLineChartData = ({ metricKey, columnTypes }) => {
1241
1199
  const { formatData } = useAnalyticData();
@@ -1339,7 +1297,7 @@ const MetricChartTooltip = ({ data, formatValue }) => {
1339
1297
  const formatPercent = () => {
1340
1298
  const value = currentData.trend?.value;
1341
1299
  if (!value)
1342
- return PLACEHOLDER_VALUE;
1300
+ return PLACEHOLDER_VALUE$1;
1343
1301
  const valueNumber = Number(value.replace(/[%~]/g, ''));
1344
1302
  if (currentData.trend?.trend === 'negative') {
1345
1303
  return valueNumber * -1;
@@ -1398,6 +1356,53 @@ const GSelectableMetricChartCard = ({ metricInfo, dataChart, defaultActiveTab, i
1398
1356
  }, children: metricInfo.map((item) => (jsx(MetricChartTab, { item: item, isActive: activeTab === item.key, isLoading: isLoading, hideComparison: hideComparison, onSelect: setActiveTab }, item.key))) }), jsx(MetricChart, { lineChartData: lineChartData, isLoading: isLoading, isEmptyMetricData: isEmptyMetricData, metricKey: activeTab, columnTypes: columnTypes })] }));
1399
1357
  };
1400
1358
 
1359
+ EGroupOperator.OR;
1360
+
1361
+ [
1362
+ {
1363
+ operator: EOperatorField.DEVICE_OPERATOR,
1364
+ singleField: EFilterField.DEVICE,
1365
+ multiField: EFilterField.DEVICES,
1366
+ fieldName: EFilterField.DEVICE,
1367
+ },
1368
+ {
1369
+ operator: EOperatorField.VISITOR_OPERATOR,
1370
+ singleField: EFilterField.VISITOR,
1371
+ multiField: EFilterField.VISITORS,
1372
+ fieldName: EFilterField.VISITOR,
1373
+ },
1374
+ {
1375
+ operator: EOperatorField.TRAFFIC_SOURCE_OPERATOR,
1376
+ singleField: EFilterField.TRAFFIC_SOURCE,
1377
+ multiField: EFilterField.TRAFFIC_SOURCES,
1378
+ fieldName: EFilterField.TRAFFIC_SOURCE,
1379
+ },
1380
+ {
1381
+ operator: EOperatorField.VERSION_OPERATOR,
1382
+ singleField: EFilterField.VERSION,
1383
+ multiField: EFilterField.VERSIONS,
1384
+ fieldName: EFilterField.VERSION,
1385
+ },
1386
+ {
1387
+ operator: EOperatorField.PAGE_OPERATOR,
1388
+ singleField: EFilterField.SINGLE_PAGE,
1389
+ multiField: EFilterField.LIST_PAGE,
1390
+ fieldName: EFilterField.SINGLE_PAGE,
1391
+ },
1392
+ {
1393
+ operator: EOperatorField.CAMPAIGN_ITEM_OPERATOR,
1394
+ singleField: EFilterField.GROUP_CAMPAIGN_ITEM,
1395
+ multiField: EFilterField.GROUP_CAMPAIGN_ITEMS,
1396
+ condition: EFilterField.GROUP_CAMPAIGN,
1397
+ fieldName: EFilterField.SINGLE_CAMPAIGN,
1398
+ },
1399
+ {
1400
+ operatorVal: OPERATOR_IS,
1401
+ singleField: EFilterField.SINGLE_CAMPAIGN,
1402
+ multiField: EFilterField.GROUP_CAMPAIGN,
1403
+ },
1404
+ ];
1405
+
1401
1406
  const calculatePercentageChange = (current, previous) => {
1402
1407
  if (current === 0 && previous === 0) {
1403
1408
  return undefined;
@@ -1471,13 +1476,6 @@ var IMAGE_FIRST_SESSION = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXAAAAC
1471
1476
 
1472
1477
  var IMAGE_ALL_SESSION = "data:image/png;base64,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";
1473
1478
 
1474
- var EAnalyticMode;
1475
- (function (EAnalyticMode) {
1476
- EAnalyticMode["ALL_SESSION"] = "ALL_SESSION";
1477
- EAnalyticMode["FIRST_SESSION"] = "FIRST_SESSION";
1478
- EAnalyticMode["PAGE_ONLY"] = "PAGE_ONLY";
1479
- })(EAnalyticMode || (EAnalyticMode = {}));
1480
-
1481
1479
  const VIEW_BY_OPTIONS = [
1482
1480
  {
1483
1481
  id: EAnalyticMode.ALL_SESSION,
@@ -2527,4 +2525,4 @@ const GTimePicker = (props) => {
2527
2525
  return (jsxs(InlineStack, { gap: "200", children: [jsx(MainTimePicker, { ...timePickerProps }), isCompare && (jsx(CompareTimePicker, { rangeAddition: timePickerProps.rangeAddition, popoverProps: timePickerProps.popoverProps }))] }));
2528
2526
  };
2529
2527
 
2530
- export { AnalyticModeSelector, COMPARE_DATE_TIME_FILTERS_MAP, CompareDateTimePickerAlias, CurrencySelector, DATE_TIME_COMPARISON_FILTERS, DateTimeFilterInputs, DateTimeFilters, DateTimePickerContext, DateTimePickerProvider, GSelectableMetricChartCard, GTimePicker, MainDateTimePickerAlias, MetricDonutChartCard, PREVIOUS_PERIOD_FILTER, SingleMetricChartCard, convertDateToTz, convertToDateTimeFilters, createLastDaysRange, dayjsTz, dayjsTzToDate, dayjsTzToLocalTZ, formatDate, formatDateTimeRange, formatDayjs, formatMs, formatTime, formatTimeRange, getDateRangeTitle, getDateTimeFilterBase, getDateTimeFilterByAlias, getDateTimeFilterMapping, getEndOfDayBy, getInitialTimezone, getLast12Months, getLast30Days, getLast365Days, getLast7Days, getLast90Days, getLastMonth, getLastYear, getMonthAndYearByDateFilter, getNoComparison, getPreviousMonth, getPreviousPeriod, getPreviousQuarter, getPreviousWeek, getPreviousYear, getToday, getVersionDateDescription, getVersionDateRangeTitle, getYesterday, isDate, isMidnight, isSameDayTimestamp, isValidDate, isValidYearMonthDayDateString, parseYearMonthDayDateString, setTz, useDateTimeFilter, useDateTimePicker, useDateTimePickerContext, useVersionDateTimeFilters };
2528
+ export { ANALYTICS_METRIC_TOOLTIP, AnalyticModeSelector, CAMPAIGN_BACKGROUND_MAIN, CHART_MIN_HEIGHT, COMPARE_DATE_TIME_FILTERS_MAP, CompareDateTimePickerAlias, CurrencySelector, DATE_TIME_COMPARISON_FILTERS, DEFAULT_CURRENCY_ANALYTIC, DEFAULT_CURRENT_PERIOD_LABEL, DEFAULT_PREVIOUS_PERIOD_LABEL, DateTimeFilterInputs, DateTimeFilters, DateTimePickerContext, DateTimePickerProvider, GSelectableMetricChartCard, GTimePicker, MainDateTimePickerAlias, MetricDonutChartCard, PLACEHOLDER_VALUE$1 as PLACEHOLDER_VALUE, PREVIOUS_PERIOD_FILTER, SERIES_COLORS, SingleMetricChartCard, TARGET_CHANNEL, TARGET_DEVICES, TARGET_VISITOR, THUMB_PRODUCT_DEFAULT, TREND_TONE, convertDateToTz, convertToDateTimeFilters, createLastDaysRange, dayjsTz, dayjsTzToDate, dayjsTzToLocalTZ, formatDate, formatDateTimeRange, formatDayjs, formatMs, formatTime, formatTimeRange, getDateRangeTitle, getDateTimeFilterBase, getDateTimeFilterByAlias, getDateTimeFilterMapping, getEndOfDayBy, getInitialTimezone, getLast12Months, getLast30Days, getLast365Days, getLast7Days, getLast90Days, getLastMonth, getLastYear, getMonthAndYearByDateFilter, getNoComparison, getPreviousMonth, getPreviousPeriod, getPreviousQuarter, getPreviousWeek, getPreviousYear, getToday, getVersionDateDescription, getVersionDateRangeTitle, getYesterday, isDate, isMidnight, isSameDayTimestamp, isValidDate, isValidYearMonthDayDateString, parseYearMonthDayDateString, setTz, useDateTimeFilter, useDateTimePicker, useDateTimePickerContext, useVersionDateTimeFilters };