react-semaphor 0.0.516 → 0.0.518

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.
@@ -62,6 +62,39 @@ declare interface CardConfig {
62
62
  filters?: FilterGroup;
63
63
  joinPlan?: JoinPlan;
64
64
  rowLimit?: number;
65
+ /**
66
+ * One or more hierarchies that define drillable paths through dimensions.
67
+ */
68
+ drillHierarchies?: DrillHierarchy[];
69
+ /**
70
+ * Optional list of dimensions allowed for dynamic drill-down across this card.
71
+ * Used only when drill steps contain `mode: 'dynamicDrill'` or `type: 'dynamic'`.
72
+ */
73
+ allowedDrillTargets?: Field[];
74
+ /**
75
+ * NOT UOptional preload settings for inline drill previews
76
+ */
77
+ inlineDrillPreview?: {
78
+ enabled: boolean;
79
+ limit: number;
80
+ mode: 'lazy' | 'preloaded';
81
+ };
82
+ /**
83
+ * Configuration for on-click dashboard filters triggered by this card.
84
+ */
85
+ clickFilterInteractions?: ClickFilterInteraction[];
86
+ comparisonType?: 'previous_period' | 'same_period_last_year' | 'target';
87
+ targetValue?: number;
88
+ showTrendline?: boolean;
89
+ trendlineWindow?: number;
90
+ trendlineGranularity?: 'day' | 'week' | 'month';
91
+ }
92
+
93
+ declare interface CardInteractionConfig {
94
+ allowedDrillTargets?: Field[];
95
+ drillHierarchies?: DrillHierarchy[];
96
+ drillInteractions?: DrillInteraction[];
97
+ clickFilterInteractions?: ClickFilterInteraction[];
65
98
  }
66
99
 
67
100
  declare type CardWithContent = BaseCustomCard & {
@@ -82,6 +115,33 @@ declare type CardWithFooter = BaseCustomCard & {
82
115
  }>;
83
116
  };
84
117
 
118
+ declare interface ClickFilterInteraction {
119
+ mode: 'clickFilter';
120
+ /**
121
+ * Fields from the chart element that should be used as filters.
122
+ * e.g., [region, ship_mode] from a stacked bar chart
123
+ */
124
+ filterFields: Field[];
125
+ /**
126
+ * Should this card visually highlight when clicked?
127
+ */
128
+ highlightSelf?: boolean;
129
+ /**
130
+ * Cards this filter applies to (inclusive).
131
+ * If omitted and `excludeCardIds` is also omitted → applies to all cards except self.
132
+ */
133
+ applyToCardIds?: string[];
134
+ /**
135
+ * Cards to explicitly exclude from receiving this filter.
136
+ * Takes effect only if `applyToCardIds` is undefined (acts as override).
137
+ */
138
+ excludeCardIds?: string[];
139
+ /**
140
+ * Optional UI label or tooltip.
141
+ */
142
+ label?: string;
143
+ }
144
+
85
145
  export declare type ColorRange = {
86
146
  start: number;
87
147
  end: number;
@@ -207,7 +267,7 @@ declare interface DataSource {
207
267
  selectedEntities: SelectedEntities;
208
268
  }
209
269
 
210
- declare const DATE_FORMAT_VALUES: readonly ["YYYY-MM-DD", "MM/DD/YYYY", "DD/MM/YYYY", "MMMM DD, YYYY", "MMM DD, YYYY", "DD MMM YYYY", "YYYY-MM", "MMMM YYYY", "custom"];
270
+ declare const DATE_FORMAT_VALUES: readonly ["MM-DD-YYYY", "YYYY-MM-DD", "MM/DD/YYYY", "DD/MM/YYYY", "MMMM DD, YYYY", "MMM DD, YYYY", "DD MMM YYYY", "YYYY-MM", "MMMM YYYY", "custom"];
211
271
 
212
272
  declare type DateFormatValue = (typeof DATE_FORMAT_VALUES)[number];
213
273
 
@@ -221,6 +281,50 @@ declare type Dialect = 'mysql' | 'postgresql' | 'bigquery' | 'redshift' | 'snowf
221
281
 
222
282
  export declare type DisplayDataType = 'string' | 'date' | 'number' | 'html' | 'none';
223
283
 
284
+ declare interface DrillHierarchy {
285
+ id: string;
286
+ label?: string;
287
+ type: 'static';
288
+ steps: DrillHierarchyStep[];
289
+ default?: boolean;
290
+ }
291
+
292
+ declare interface DrillHierarchyStep {
293
+ field: Field;
294
+ mode: 'drillDown';
295
+ preferredChartType?: TChartType;
296
+ breadcrumbLabelTemplate?: string;
297
+ retainFilters?: boolean;
298
+ label?: string;
299
+ linkedInsightId?: string;
300
+ }
301
+
302
+ declare type DrillInteraction = DrillThroughInteraction | DrillToDetailInteraction | DrillToURLInteraction | InlineDrillInteraction;
303
+
304
+ declare interface DrillThroughInteraction {
305
+ mode: 'drillThrough';
306
+ filterFields: Field[];
307
+ targetSheetId: string;
308
+ label?: string;
309
+ }
310
+
311
+ declare interface DrillToDetailInteraction {
312
+ mode: 'drillToDetail';
313
+ filterFields: Field[];
314
+ detailFields?: Field[];
315
+ sortBy?: SortByField[];
316
+ limit?: number;
317
+ detailTitle?: string;
318
+ label?: string;
319
+ }
320
+
321
+ declare interface DrillToURLInteraction {
322
+ mode: 'drillToURL';
323
+ filterFields: Field[];
324
+ urlTemplate: string;
325
+ label?: string;
326
+ }
327
+
224
328
  export declare type DroppableId = 'droppable-group-by' | 'droppable-metric';
225
329
 
226
330
  export declare type EmailSettings = {
@@ -383,12 +487,21 @@ declare interface GroupByField extends Field {
383
487
  * If present, used in SELECT and GROUP BY instead of just the column name.
384
488
  */
385
489
  expression?: string;
490
+ timeDrillPath?: TimeDrillStep[];
386
491
  }
387
492
 
388
493
  export declare type HtmlOptions = {
389
494
  html: string;
390
495
  };
391
496
 
497
+ declare interface InlineDrillInteraction {
498
+ mode: 'inlineDrill';
499
+ filterFields: Field[];
500
+ fetchMode?: 'lazy' | 'preloaded';
501
+ inlineLimit?: number;
502
+ label?: string;
503
+ }
504
+
392
505
  declare interface Join {
393
506
  id: string;
394
507
  source: DatabaseEntityReference;
@@ -488,7 +601,7 @@ declare type OldFilterValue = string | number | null | (string | number)[] | Ran
488
601
 
489
602
  declare type Operation = '=' | '>' | '<' | '>=' | '<=' | '!=' | 'in' | 'not in' | 'like' | 'not like' | 'between' | 'not between' | 'is null' | 'is not null';
490
603
 
491
- declare type Operator = '=' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'startsWith' | 'endsWith' | 'in' | 'not in';
604
+ declare type Operator = '=' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'startsWith' | 'endsWith' | 'in' | 'not in' | 'between';
492
605
 
493
606
  declare type OptionsMap = {
494
607
  number: NumberOptions;
@@ -623,6 +736,7 @@ export declare type TBaseQuery = {
623
736
  };
624
737
 
625
738
  export declare type TCard = {
739
+ mode?: 'explorer' | 'dev';
626
740
  id: string;
627
741
  title: string;
628
742
  tabTitle?: string;
@@ -636,6 +750,7 @@ export declare type TCard = {
636
750
  python?: string;
637
751
  dataSource?: DataSource;
638
752
  config?: CardConfig;
753
+ interactionConfig?: CardInteractionConfig;
639
754
  queryConfig?: QueryConfig;
640
755
  customCfg?: any;
641
756
  preferences?: TCardPreferences;
@@ -833,6 +948,13 @@ export declare type TFrame = {
833
948
 
834
949
  export declare type Theme = 'dark' | 'light' | 'system';
835
950
 
951
+ declare interface TimeDrillStep {
952
+ granularity: TimeGranularity;
953
+ next?: TimeGranularity;
954
+ comparison?: 'previous_year' | 'previous_period';
955
+ rollingWindow?: number;
956
+ }
957
+
836
958
  declare type TimeGranularity = 'day' | 'week' | 'month' | 'quarter' | 'year';
837
959
 
838
960
  export declare type TLegendOptions = {
@@ -11,7 +11,10 @@ import { Dialect as Dialect_2 } from '../types/explorer-types';
11
11
  import { DropdownItem as DropdownItem_2 } from '../types/dropdown-types';
12
12
  import { EmailSettings as EmailSettings_2 } from '..';
13
13
  import { FontSpec } from 'chart.js';
14
+ import { GroupByField as GroupByField_2 } from '../types/explorer-types';
14
15
  import { JSX as JSX_2 } from 'react/jsx-runtime';
16
+ import { MetricField as MetricField_2 } from '../types/explorer-types';
17
+ import { PivotByField as PivotByField_2 } from '../types/explorer-types';
15
18
  import { QueryObserverResult } from '@tanstack/query-core';
16
19
  import { RefetchOptions } from '@tanstack/query-core';
17
20
  import { StoreApi } from 'zustand';
@@ -67,6 +70,7 @@ declare type Actions = {
67
70
  updateFrame: (sheetId: string, frame: TFrame) => void;
68
71
  updateCard: (sheetId: string, card: TCard) => void;
69
72
  updateFrameCard?: (sheetId: string, frameId: string, card: TCard) => void;
73
+ updateCurrentDashboardCard: (card: TCard) => void;
70
74
  removeFrame: (sheetId: string, frameId: string) => void;
71
75
  removeCard: (sheetId: string, card: TCard) => void;
72
76
  setIsDashboardEditing: (editing: boolean) => void;
@@ -105,7 +109,8 @@ declare type Actions = {
105
109
  setBaseQueries: (baseQueries: TBaseQuery[]) => void;
106
110
  };
107
111
 
108
- declare type Actions_2 = TableActions & ExplorerActions & {
112
+ declare type Actions_2 = TableActions & ExplorerActions & DrillActions & {
113
+ setCardMode: (mode: 'explorer' | 'code') => void;
109
114
  setEditorFilterMode: (filterColumnName: string, filterMode: 'include' | 'exclude') => void;
110
115
  setLowerIsBetter: (lowerIsBetter: boolean) => void;
111
116
  clearEditorFilter: (filterColumn: FilterByColumn) => void;
@@ -117,6 +122,8 @@ declare type Actions_2 = TableActions & ExplorerActions & {
117
122
  }) => void;
118
123
  clearQueryConfig: () => void;
119
124
  setQueryConfig: (queryConfig: QueryConfig | undefined) => void;
125
+ setCardTitle: (title: string) => void;
126
+ setCardDescription: (description: string) => void;
120
127
  setIsDevMode: (isDevMode: boolean) => void;
121
128
  setOrderByColumns: (orderByColumns: OrderBy[]) => void;
122
129
  addOrderByColumn: (orderByColumn: OrderBy) => void;
@@ -250,6 +257,39 @@ export declare interface CardConfig {
250
257
  filters?: FilterGroup;
251
258
  joinPlan?: JoinPlan;
252
259
  rowLimit?: number;
260
+ /**
261
+ * One or more hierarchies that define drillable paths through dimensions.
262
+ */
263
+ drillHierarchies?: DrillHierarchy[];
264
+ /**
265
+ * Optional list of dimensions allowed for dynamic drill-down across this card.
266
+ * Used only when drill steps contain `mode: 'dynamicDrill'` or `type: 'dynamic'`.
267
+ */
268
+ allowedDrillTargets?: Field[];
269
+ /**
270
+ * NOT UOptional preload settings for inline drill previews
271
+ */
272
+ inlineDrillPreview?: {
273
+ enabled: boolean;
274
+ limit: number;
275
+ mode: 'lazy' | 'preloaded';
276
+ };
277
+ /**
278
+ * Configuration for on-click dashboard filters triggered by this card.
279
+ */
280
+ clickFilterInteractions?: ClickFilterInteraction[];
281
+ comparisonType?: 'previous_period' | 'same_period_last_year' | 'target';
282
+ targetValue?: number;
283
+ showTrendline?: boolean;
284
+ trendlineWindow?: number;
285
+ trendlineGranularity?: 'day' | 'week' | 'month';
286
+ }
287
+
288
+ declare interface CardInteractionConfig {
289
+ allowedDrillTargets?: Field[];
290
+ drillHierarchies?: DrillHierarchy[];
291
+ drillInteractions?: DrillInteraction[];
292
+ clickFilterInteractions?: ClickFilterInteraction[];
253
293
  }
254
294
 
255
295
  declare type CardWithContent = BaseCustomCard & {
@@ -272,6 +312,33 @@ declare type CardWithFooter = BaseCustomCard & {
272
312
 
273
313
  export declare function cleanCard(card: TCard): TCard;
274
314
 
315
+ declare interface ClickFilterInteraction {
316
+ mode: 'clickFilter';
317
+ /**
318
+ * Fields from the chart element that should be used as filters.
319
+ * e.g., [region, ship_mode] from a stacked bar chart
320
+ */
321
+ filterFields: Field[];
322
+ /**
323
+ * Should this card visually highlight when clicked?
324
+ */
325
+ highlightSelf?: boolean;
326
+ /**
327
+ * Cards this filter applies to (inclusive).
328
+ * If omitted and `excludeCardIds` is also omitted → applies to all cards except self.
329
+ */
330
+ applyToCardIds?: string[];
331
+ /**
332
+ * Cards to explicitly exclude from receiving this filter.
333
+ * Takes effect only if `applyToCardIds` is undefined (acts as override).
334
+ */
335
+ excludeCardIds?: string[];
336
+ /**
337
+ * Optional UI label or tooltip.
338
+ */
339
+ label?: string;
340
+ }
341
+
275
342
  export declare type ColorRange = {
276
343
  start: number;
277
344
  end: number;
@@ -463,7 +530,7 @@ export declare interface DataSource {
463
530
 
464
531
  export declare type DataType = 'string' | 'number' | 'date' | 'datetime' | 'boolean' | 'json' | 'geo';
465
532
 
466
- export declare const DATE_FORMAT_VALUES: readonly ["YYYY-MM-DD", "MM/DD/YYYY", "DD/MM/YYYY", "MMMM DD, YYYY", "MMM DD, YYYY", "DD MMM YYYY", "YYYY-MM", "MMMM YYYY", "custom"];
533
+ export declare const DATE_FORMAT_VALUES: readonly ["MM-DD-YYYY", "YYYY-MM-DD", "MM/DD/YYYY", "DD/MM/YYYY", "MMMM DD, YYYY", "MMM DD, YYYY", "DD MMM YYYY", "YYYY-MM", "MMMM YYYY", "custom"];
467
534
 
468
535
  export declare type DateFormatOption = {
469
536
  value: DateFormatValue;
@@ -486,6 +553,75 @@ export declare type DisplayDataType = 'string' | 'date' | 'number' | 'html' | 'n
486
553
 
487
554
  export declare function downloadPdf(): Promise<void>;
488
555
 
556
+ declare interface DrillActions {
557
+ updateDrillHierarchies: (h: DrillHierarchy[]) => void;
558
+ addDrillHierarchy: (h: DrillHierarchy) => void;
559
+ removeDrillHierarchy: (hierarchyId: string) => void;
560
+ updateDrillHierarchy: (hierarchyId: string, updates: Partial<DrillHierarchy>) => void;
561
+ setDefaultHierarchy: (hierarchyId: string) => void;
562
+ updateAllowedDrillTargets: (t: Field[]) => void;
563
+ addDrillTarget: (t: Field) => void;
564
+ removeDrillTarget: (targetId: string) => void;
565
+ updateDrillInteractions: (i: DrillInteraction[]) => void;
566
+ addDrillInteraction: (i: DrillInteraction) => void;
567
+ removeDrillInteraction: (index: number) => void;
568
+ updateClickFilterInteractions: (i: ClickFilterInteraction[]) => void;
569
+ addClickFilterInteraction: (i: ClickFilterInteraction) => void;
570
+ removeClickFilterInteraction: (fieldId: string) => void;
571
+ updateInlineDrillPreview: (s: {
572
+ enabled: boolean;
573
+ limit: number;
574
+ mode: 'lazy' | 'preloaded';
575
+ }) => void;
576
+ toggleInlineDrillPreview: (enabled: boolean) => void;
577
+ updateInteractionConfig: (c: Partial<CardInteractionConfig>) => void;
578
+ resetDrillConfiguration: () => void;
579
+ }
580
+
581
+ declare interface DrillHierarchy {
582
+ id: string;
583
+ label?: string;
584
+ type: 'static';
585
+ steps: DrillHierarchyStep[];
586
+ default?: boolean;
587
+ }
588
+
589
+ declare interface DrillHierarchyStep {
590
+ field: Field;
591
+ mode: 'drillDown';
592
+ preferredChartType?: TChartType;
593
+ breadcrumbLabelTemplate?: string;
594
+ retainFilters?: boolean;
595
+ label?: string;
596
+ linkedInsightId?: string;
597
+ }
598
+
599
+ declare type DrillInteraction = DrillThroughInteraction | DrillToDetailInteraction | DrillToURLInteraction | InlineDrillInteraction;
600
+
601
+ declare interface DrillThroughInteraction {
602
+ mode: 'drillThrough';
603
+ filterFields: Field[];
604
+ targetSheetId: string;
605
+ label?: string;
606
+ }
607
+
608
+ declare interface DrillToDetailInteraction {
609
+ mode: 'drillToDetail';
610
+ filterFields: Field[];
611
+ detailFields?: Field[];
612
+ sortBy?: SortByField[];
613
+ limit?: number;
614
+ detailTitle?: string;
615
+ label?: string;
616
+ }
617
+
618
+ declare interface DrillToURLInteraction {
619
+ mode: 'drillToURL';
620
+ filterFields: Field[];
621
+ urlTemplate: string;
622
+ label?: string;
623
+ }
624
+
489
625
  export declare type DropdownItem = {
490
626
  id: string;
491
627
  name: string;
@@ -796,12 +932,21 @@ export declare interface GroupByField extends Field {
796
932
  * If present, used in SELECT and GROUP BY instead of just the column name.
797
933
  */
798
934
  expression?: string;
935
+ timeDrillPath?: TimeDrillStep[];
799
936
  }
800
937
 
801
938
  export declare type HtmlOptions = {
802
939
  html: string;
803
940
  };
804
941
 
942
+ declare interface InlineDrillInteraction {
943
+ mode: 'inlineDrill';
944
+ filterFields: Field[];
945
+ fetchMode?: 'lazy' | 'preloaded';
946
+ inlineLimit?: number;
947
+ label?: string;
948
+ }
949
+
805
950
  export declare function invalidateToken(): Promise<any>;
806
951
 
807
952
  export declare function isBooleanDataType(dataType: string): boolean;
@@ -915,7 +1060,7 @@ export declare type OldFilterValue = string | number | null | (string | number)[
915
1060
 
916
1061
  declare type Operation = '=' | '>' | '<' | '>=' | '<=' | '!=' | 'in' | 'not in' | 'like' | 'not like' | 'between' | 'not between' | 'is null' | 'is not null';
917
1062
 
918
- export declare type Operator = '=' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'startsWith' | 'endsWith' | 'in' | 'not in';
1063
+ export declare type Operator = '=' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'startsWith' | 'endsWith' | 'in' | 'not in' | 'between';
919
1064
 
920
1065
  declare type OptionsMap = {
921
1066
  number: NumberOptions;
@@ -1113,6 +1258,7 @@ export declare type TBaseQuery = {
1113
1258
  };
1114
1259
 
1115
1260
  export declare type TCard = {
1261
+ mode?: 'explorer' | 'dev';
1116
1262
  id: string;
1117
1263
  title: string;
1118
1264
  tabTitle?: string;
@@ -1126,6 +1272,7 @@ export declare type TCard = {
1126
1272
  python?: string;
1127
1273
  dataSource?: DataSource;
1128
1274
  config?: CardConfig;
1275
+ interactionConfig?: CardInteractionConfig;
1129
1276
  queryConfig?: QueryConfig;
1130
1277
  customCfg?: any;
1131
1278
  preferences?: TCardPreferences;
@@ -1325,6 +1472,13 @@ export declare type TFrame = {
1325
1472
 
1326
1473
  export declare type Theme = 'dark' | 'light' | 'system';
1327
1474
 
1475
+ declare interface TimeDrillStep {
1476
+ granularity: TimeGranularity;
1477
+ next?: TimeGranularity;
1478
+ comparison?: 'previous_year' | 'previous_period';
1479
+ rollingWindow?: number;
1480
+ }
1481
+
1328
1482
  export declare type TimeGranularity = 'day' | 'week' | 'month' | 'quarter' | 'year';
1329
1483
 
1330
1484
  export declare type TLegendOptions = {
@@ -1490,6 +1644,16 @@ export declare function useCard(cardId: string): {
1490
1644
  queryKey: string[];
1491
1645
  };
1492
1646
 
1647
+ export declare const useCurrentActiveCard: () => TCard | undefined;
1648
+
1649
+ export declare const useCurrentCardConfig: () => {
1650
+ metricFields: MetricField_2[];
1651
+ groupByFields: GroupByField_2[];
1652
+ pivotByFields: PivotByField_2[];
1653
+ };
1654
+
1655
+ export declare const useCurrentSheetActiveCards: () => TCard[];
1656
+
1493
1657
  export declare const useDashboardActions: () => Actions;
1494
1658
 
1495
1659
  export declare const useDashboardStore: UseBoundStore<Omit<StoreApi<DashboardStore>, "setState"> & {
@@ -62,6 +62,39 @@ declare interface CardConfig {
62
62
  filters?: FilterGroup;
63
63
  joinPlan?: JoinPlan;
64
64
  rowLimit?: number;
65
+ /**
66
+ * One or more hierarchies that define drillable paths through dimensions.
67
+ */
68
+ drillHierarchies?: DrillHierarchy[];
69
+ /**
70
+ * Optional list of dimensions allowed for dynamic drill-down across this card.
71
+ * Used only when drill steps contain `mode: 'dynamicDrill'` or `type: 'dynamic'`.
72
+ */
73
+ allowedDrillTargets?: Field[];
74
+ /**
75
+ * NOT UOptional preload settings for inline drill previews
76
+ */
77
+ inlineDrillPreview?: {
78
+ enabled: boolean;
79
+ limit: number;
80
+ mode: 'lazy' | 'preloaded';
81
+ };
82
+ /**
83
+ * Configuration for on-click dashboard filters triggered by this card.
84
+ */
85
+ clickFilterInteractions?: ClickFilterInteraction[];
86
+ comparisonType?: 'previous_period' | 'same_period_last_year' | 'target';
87
+ targetValue?: number;
88
+ showTrendline?: boolean;
89
+ trendlineWindow?: number;
90
+ trendlineGranularity?: 'day' | 'week' | 'month';
91
+ }
92
+
93
+ declare interface CardInteractionConfig {
94
+ allowedDrillTargets?: Field[];
95
+ drillHierarchies?: DrillHierarchy[];
96
+ drillInteractions?: DrillInteraction[];
97
+ clickFilterInteractions?: ClickFilterInteraction[];
65
98
  }
66
99
 
67
100
  declare type CardWithContent = BaseCustomCard & {
@@ -82,6 +115,33 @@ declare type CardWithFooter = BaseCustomCard & {
82
115
  }>;
83
116
  };
84
117
 
118
+ declare interface ClickFilterInteraction {
119
+ mode: 'clickFilter';
120
+ /**
121
+ * Fields from the chart element that should be used as filters.
122
+ * e.g., [region, ship_mode] from a stacked bar chart
123
+ */
124
+ filterFields: Field[];
125
+ /**
126
+ * Should this card visually highlight when clicked?
127
+ */
128
+ highlightSelf?: boolean;
129
+ /**
130
+ * Cards this filter applies to (inclusive).
131
+ * If omitted and `excludeCardIds` is also omitted → applies to all cards except self.
132
+ */
133
+ applyToCardIds?: string[];
134
+ /**
135
+ * Cards to explicitly exclude from receiving this filter.
136
+ * Takes effect only if `applyToCardIds` is undefined (acts as override).
137
+ */
138
+ excludeCardIds?: string[];
139
+ /**
140
+ * Optional UI label or tooltip.
141
+ */
142
+ label?: string;
143
+ }
144
+
85
145
  export declare type ColorRange = {
86
146
  start: number;
87
147
  end: number;
@@ -210,7 +270,7 @@ declare interface DataSource {
210
270
  selectedEntities: SelectedEntities;
211
271
  }
212
272
 
213
- declare const DATE_FORMAT_VALUES: readonly ["YYYY-MM-DD", "MM/DD/YYYY", "DD/MM/YYYY", "MMMM DD, YYYY", "MMM DD, YYYY", "DD MMM YYYY", "YYYY-MM", "MMMM YYYY", "custom"];
273
+ declare const DATE_FORMAT_VALUES: readonly ["MM-DD-YYYY", "YYYY-MM-DD", "MM/DD/YYYY", "DD/MM/YYYY", "MMMM DD, YYYY", "MMM DD, YYYY", "DD MMM YYYY", "YYYY-MM", "MMMM YYYY", "custom"];
214
274
 
215
275
  declare type DateFormatValue = (typeof DATE_FORMAT_VALUES)[number];
216
276
 
@@ -224,6 +284,50 @@ declare type Dialect = 'mysql' | 'postgresql' | 'bigquery' | 'redshift' | 'snowf
224
284
 
225
285
  export declare type DisplayDataType = 'string' | 'date' | 'number' | 'html' | 'none';
226
286
 
287
+ declare interface DrillHierarchy {
288
+ id: string;
289
+ label?: string;
290
+ type: 'static';
291
+ steps: DrillHierarchyStep[];
292
+ default?: boolean;
293
+ }
294
+
295
+ declare interface DrillHierarchyStep {
296
+ field: Field;
297
+ mode: 'drillDown';
298
+ preferredChartType?: TChartType;
299
+ breadcrumbLabelTemplate?: string;
300
+ retainFilters?: boolean;
301
+ label?: string;
302
+ linkedInsightId?: string;
303
+ }
304
+
305
+ declare type DrillInteraction = DrillThroughInteraction | DrillToDetailInteraction | DrillToURLInteraction | InlineDrillInteraction;
306
+
307
+ declare interface DrillThroughInteraction {
308
+ mode: 'drillThrough';
309
+ filterFields: Field[];
310
+ targetSheetId: string;
311
+ label?: string;
312
+ }
313
+
314
+ declare interface DrillToDetailInteraction {
315
+ mode: 'drillToDetail';
316
+ filterFields: Field[];
317
+ detailFields?: Field[];
318
+ sortBy?: SortByField[];
319
+ limit?: number;
320
+ detailTitle?: string;
321
+ label?: string;
322
+ }
323
+
324
+ declare interface DrillToURLInteraction {
325
+ mode: 'drillToURL';
326
+ filterFields: Field[];
327
+ urlTemplate: string;
328
+ label?: string;
329
+ }
330
+
227
331
  export declare type DroppableId = 'droppable-group-by' | 'droppable-metric';
228
332
 
229
333
  export declare type EmailSettings = {
@@ -386,12 +490,21 @@ declare interface GroupByField extends Field {
386
490
  * If present, used in SELECT and GROUP BY instead of just the column name.
387
491
  */
388
492
  expression?: string;
493
+ timeDrillPath?: TimeDrillStep[];
389
494
  }
390
495
 
391
496
  export declare type HtmlOptions = {
392
497
  html: string;
393
498
  };
394
499
 
500
+ declare interface InlineDrillInteraction {
501
+ mode: 'inlineDrill';
502
+ filterFields: Field[];
503
+ fetchMode?: 'lazy' | 'preloaded';
504
+ inlineLimit?: number;
505
+ label?: string;
506
+ }
507
+
395
508
  declare interface Join {
396
509
  id: string;
397
510
  source: DatabaseEntityReference;
@@ -491,7 +604,7 @@ declare type OldFilterValue = string | number | null | (string | number)[] | Ran
491
604
 
492
605
  declare type Operation = '=' | '>' | '<' | '>=' | '<=' | '!=' | 'in' | 'not in' | 'like' | 'not like' | 'between' | 'not between' | 'is null' | 'is not null';
493
606
 
494
- declare type Operator = '=' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'startsWith' | 'endsWith' | 'in' | 'not in';
607
+ declare type Operator = '=' | '!=' | '>' | '>=' | '<' | '<=' | 'contains' | 'startsWith' | 'endsWith' | 'in' | 'not in' | 'between';
495
608
 
496
609
  declare type OptionsMap = {
497
610
  number: NumberOptions;
@@ -628,6 +741,7 @@ export declare type TBaseQuery = {
628
741
  };
629
742
 
630
743
  export declare type TCard = {
744
+ mode?: 'explorer' | 'dev';
631
745
  id: string;
632
746
  title: string;
633
747
  tabTitle?: string;
@@ -641,6 +755,7 @@ export declare type TCard = {
641
755
  python?: string;
642
756
  dataSource?: DataSource;
643
757
  config?: CardConfig;
758
+ interactionConfig?: CardInteractionConfig;
644
759
  queryConfig?: QueryConfig;
645
760
  customCfg?: any;
646
761
  preferences?: TCardPreferences;
@@ -838,6 +953,13 @@ export declare type TFrame = {
838
953
 
839
954
  export declare type Theme = 'dark' | 'light' | 'system';
840
955
 
956
+ declare interface TimeDrillStep {
957
+ granularity: TimeGranularity;
958
+ next?: TimeGranularity;
959
+ comparison?: 'previous_year' | 'previous_period';
960
+ rollingWindow?: number;
961
+ }
962
+
841
963
  declare type TimeGranularity = 'day' | 'week' | 'month' | 'quarter' | 'year';
842
964
 
843
965
  export declare type TLegendOptions = {