@jorgerdz/timeview 0.1.0

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 (90) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/LICENSE +21 -0
  3. package/README.md +263 -0
  4. package/dist/cli/timeview.js +6710 -0
  5. package/dist/timeview.cjs +1 -0
  6. package/dist/timeview.js +5667 -0
  7. package/dist/tokens.css +67 -0
  8. package/dist/types/timeview/BandedTimeline.d.ts +11 -0
  9. package/dist/types/timeview/BandedTimeline.d.ts.map +1 -0
  10. package/dist/types/timeview/DensityHeatmap.d.ts +11 -0
  11. package/dist/types/timeview/DensityHeatmap.d.ts.map +1 -0
  12. package/dist/types/timeview/LaneCalendar.d.ts +11 -0
  13. package/dist/types/timeview/LaneCalendar.d.ts.map +1 -0
  14. package/dist/types/timeview/MetricTimeline.d.ts +8 -0
  15. package/dist/types/timeview/MetricTimeline.d.ts.map +1 -0
  16. package/dist/types/timeview/SpanMatrix.d.ts +8 -0
  17. package/dist/types/timeview/SpanMatrix.d.ts.map +1 -0
  18. package/dist/types/timeview/config.d.ts +22 -0
  19. package/dist/types/timeview/config.d.ts.map +1 -0
  20. package/dist/types/timeview/core/aggregate.d.ts +113 -0
  21. package/dist/types/timeview/core/aggregate.d.ts.map +1 -0
  22. package/dist/types/timeview/core/calendar.d.ts +27 -0
  23. package/dist/types/timeview/core/calendar.d.ts.map +1 -0
  24. package/dist/types/timeview/core/intervals.d.ts +8 -0
  25. package/dist/types/timeview/core/intervals.d.ts.map +1 -0
  26. package/dist/types/timeview/core/labels.d.ts +5 -0
  27. package/dist/types/timeview/core/labels.d.ts.map +1 -0
  28. package/dist/types/timeview/core/metric.d.ts +58 -0
  29. package/dist/types/timeview/core/metric.d.ts.map +1 -0
  30. package/dist/types/timeview/core/time.d.ts +22 -0
  31. package/dist/types/timeview/core/time.d.ts.map +1 -0
  32. package/dist/types/timeview/dashboard.d.ts +17 -0
  33. package/dist/types/timeview/dashboard.d.ts.map +1 -0
  34. package/dist/types/timeview/data.d.ts +21 -0
  35. package/dist/types/timeview/data.d.ts.map +1 -0
  36. package/dist/types/timeview/export.d.ts +14 -0
  37. package/dist/types/timeview/export.d.ts.map +1 -0
  38. package/dist/types/timeview/index.d.ts +28 -0
  39. package/dist/types/timeview/index.d.ts.map +1 -0
  40. package/dist/types/timeview/registry.d.ts +285 -0
  41. package/dist/types/timeview/registry.d.ts.map +1 -0
  42. package/dist/types/timeview/shared/Caption.d.ts +9 -0
  43. package/dist/types/timeview/shared/Caption.d.ts.map +1 -0
  44. package/dist/types/timeview/shared/EmptyState.d.ts +16 -0
  45. package/dist/types/timeview/shared/EmptyState.d.ts.map +1 -0
  46. package/dist/types/timeview/shared/Legend.d.ts +10 -0
  47. package/dist/types/timeview/shared/Legend.d.ts.map +1 -0
  48. package/dist/types/timeview/shared/Tooltip.d.ts +15 -0
  49. package/dist/types/timeview/shared/Tooltip.d.ts.map +1 -0
  50. package/dist/types/timeview/shared/useMeasuredWidth.d.ts +2 -0
  51. package/dist/types/timeview/shared/useMeasuredWidth.d.ts.map +1 -0
  52. package/dist/types/timeview/types.d.ts +158 -0
  53. package/dist/types/timeview/types.d.ts.map +1 -0
  54. package/docs/AGENT-USAGE.md +93 -0
  55. package/docs/COMPATIBILITY.md +134 -0
  56. package/docs/STUDIO.md +41 -0
  57. package/examples/README.md +21 -0
  58. package/examples/configs/bandedTimeline.json +31 -0
  59. package/examples/configs/densityHeatmap.json +33 -0
  60. package/examples/configs/laneCalendar.json +31 -0
  61. package/examples/configs/metricTimeline.json +51 -0
  62. package/examples/configs/spanMatrix.json +31 -0
  63. package/package.json +94 -0
  64. package/render.html +12 -0
  65. package/src/render.tsx +67 -0
  66. package/src/styles/tokens.css +67 -0
  67. package/src/timeview/BandedTimeline.tsx +620 -0
  68. package/src/timeview/DensityHeatmap.tsx +513 -0
  69. package/src/timeview/LaneCalendar.tsx +496 -0
  70. package/src/timeview/MetricTimeline.tsx +993 -0
  71. package/src/timeview/SpanMatrix.tsx +721 -0
  72. package/src/timeview/config.ts +399 -0
  73. package/src/timeview/core/aggregate.ts +317 -0
  74. package/src/timeview/core/calendar.ts +81 -0
  75. package/src/timeview/core/intervals.ts +52 -0
  76. package/src/timeview/core/labels.ts +19 -0
  77. package/src/timeview/core/metric.ts +263 -0
  78. package/src/timeview/core/time.ts +103 -0
  79. package/src/timeview/dashboard.ts +80 -0
  80. package/src/timeview/data.ts +242 -0
  81. package/src/timeview/export.ts +48 -0
  82. package/src/timeview/index.ts +106 -0
  83. package/src/timeview/registry.ts +207 -0
  84. package/src/timeview/shared/Caption.tsx +40 -0
  85. package/src/timeview/shared/EmptyState.tsx +90 -0
  86. package/src/timeview/shared/Legend.tsx +67 -0
  87. package/src/timeview/shared/Tooltip.tsx +59 -0
  88. package/src/timeview/shared/useMeasuredWidth.ts +21 -0
  89. package/src/timeview/types.ts +159 -0
  90. package/vite.config.ts +11 -0
@@ -0,0 +1,67 @@
1
+ /* ──────────────────────────────────────────────────────────────────
2
+ Timeview — design tokens
3
+ A fresh, restrained developer-tool / analytics visual language.
4
+ White plot canvas · cool-neutral slate ink · hairline gridlines ·
5
+ Geist + Geist Mono · indigo focus accent · categorical mark palette.
6
+ ────────────────────────────────────────────────────────────────── */
7
+
8
+ @import url("https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600;700&family=Geist+Mono:wght@400;500;600&display=swap");
9
+
10
+ :root {
11
+ /* ── Ink (cool slate) ───────────────────────────────────────── */
12
+ --tv-ink: #15181e; /* primary text / titles */
13
+ --tv-ink-2: #3b414d; /* band titles, strong labels */
14
+ --tv-ink-3: #6b7280; /* axis labels, secondary */
15
+ --tv-ink-4: #9aa1ad; /* faint meta, muted ticks */
16
+ --tv-ink-5: #c2c7d0; /* very faint */
17
+
18
+ /* ── Surfaces ───────────────────────────────────────────────── */
19
+ --tv-canvas: #ffffff; /* the plot itself */
20
+ --tv-frame: #fbfcfd; /* component frame background */
21
+ --tv-rail: #f5f7f9; /* legend chips, quiet fills */
22
+ --tv-rail-2: #eef1f4; /* secondary-axis week strip */
23
+
24
+ /* ── Lines ──────────────────────────────────────────────────── */
25
+ --tv-line: #e7eaee; /* frame borders, lane separators */
26
+ --tv-grid: #eef1f5; /* day gridlines */
27
+ --tv-grid-week:#dde2e8; /* week boundary gridline (stronger) */
28
+ --tv-grid-today:#cfd5dd;
29
+
30
+ /* ── Chrome accent (selection / focus only — NOT a data color) ─ */
31
+ --tv-accent: #4f46e5; /* indigo */
32
+ --tv-accent-soft: rgba(79, 70, 229, 0.12);
33
+ --tv-focus-ring: 0 0 0 2px #fff, 0 0 0 4px rgba(79, 70, 229, 0.55);
34
+
35
+ /* ── Type ───────────────────────────────────────────────────── */
36
+ --tv-font: "Geist", system-ui, -apple-system, "Segoe UI", sans-serif;
37
+ --tv-mono: "Geist Mono", ui-monospace, "SF Mono", Menlo, monospace;
38
+
39
+ /* ── Radii ──────────────────────────────────────────────────── */
40
+ --tv-r-xs: 4px;
41
+ --tv-r-sm: 6px;
42
+ --tv-r-md: 8px;
43
+ --tv-r-lg: 12px;
44
+ --tv-r-pill: 9999px;
45
+
46
+ /* ── Shadows (tight, inspectable) ───────────────────────────── */
47
+ --tv-shadow-1: 0 1px 2px rgba(16, 24, 40, 0.04);
48
+ --tv-shadow-pop: 0 6px 20px -6px rgba(16, 24, 40, 0.18), 0 2px 6px rgba(16,24,40,0.06);
49
+
50
+ /* ── Motion ─────────────────────────────────────────────────── */
51
+ --tv-ease: cubic-bezier(0.2, 0.6, 0.2, 1);
52
+ --tv-fast: 0.14s;
53
+ --tv-mid: 0.22s;
54
+ }
55
+
56
+ /* ── Stage (the gray studio backdrop, outside the component) ───── */
57
+ .tv-stage {
58
+ background:
59
+ radial-gradient(circle at 1px 1px, #d9dde3 1px, transparent 0) 0 0 / 22px 22px,
60
+ #eef0f3;
61
+ color: var(--tv-ink);
62
+ font-family: var(--tv-font);
63
+ -webkit-font-smoothing: antialiased;
64
+ -moz-osx-font-smoothing: grayscale;
65
+ }
66
+
67
+ *, *::before, *::after { box-sizing: border-box; }
@@ -0,0 +1,11 @@
1
+ import type { TimeDataset, BandedTimelineSpec } from "./types";
2
+ export interface BandedTimelineProps {
3
+ /** schema `timeview.dataset.v1` */
4
+ dataset: TimeDataset;
5
+ /** view-specific projection (title, density, overlap mode, legend, caption…) */
6
+ spec: BandedTimelineSpec;
7
+ /** colors mapped to `dataset.labels` by index */
8
+ palette: string[];
9
+ }
10
+ export declare function BandedTimeline({ dataset, spec, palette }: BandedTimelineProps): import("react").JSX.Element;
11
+ //# sourceMappingURL=BandedTimeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BandedTimeline.d.ts","sourceRoot":"","sources":["../../../src/timeview/BandedTimeline.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EACV,WAAW,EAGX,kBAAkB,EAGnB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,mBAAmB;IAClC,mCAAmC;IACnC,OAAO,EAAE,WAAW,CAAC;IACrB,gFAAgF;IAChF,IAAI,EAAE,kBAAkB,CAAC;IACzB,iDAAiD;IACjD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AA2DD,wBAAgB,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,mBAAmB,+BA+gB7E"}
@@ -0,0 +1,11 @@
1
+ import type { DensityHeatmapSpec, TimeDataset } from "./types";
2
+ export interface DensityHeatmapProps {
3
+ /** schema `timeview.dataset.v1` */
4
+ dataset: TimeDataset;
5
+ /** aggregation projection (bucket, measure, grouping, heat scale, caption...) */
6
+ spec: DensityHeatmapSpec;
7
+ /** colors mapped to `dataset.labels` by index */
8
+ palette: string[];
9
+ }
10
+ export declare function DensityHeatmap({ dataset, spec, palette }: DensityHeatmapProps): import("react").JSX.Element;
11
+ //# sourceMappingURL=DensityHeatmap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DensityHeatmap.d.ts","sourceRoot":"","sources":["../../../src/timeview/DensityHeatmap.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAW,kBAAkB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAExE,MAAM,WAAW,mBAAmB;IAClC,mCAAmC;IACnC,OAAO,EAAE,WAAW,CAAC;IACrB,iFAAiF;IACjF,IAAI,EAAE,kBAAkB,CAAC;IACzB,iDAAiD;IACjD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAsCD,wBAAgB,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,mBAAmB,+BAqV7E"}
@@ -0,0 +1,11 @@
1
+ import type { LaneCalendarSpec, TimeDataset } from "./types";
2
+ export interface LaneCalendarProps {
3
+ /** schema `timeview.dataset.v1` */
4
+ dataset: TimeDataset;
5
+ /** calendar projection options (lanes, density, legend, caption, today...) */
6
+ spec: LaneCalendarSpec;
7
+ /** colors mapped to `dataset.labels` by index */
8
+ palette: string[];
9
+ }
10
+ export declare function LaneCalendar({ dataset, spec, palette }: LaneCalendarProps): import("react").JSX.Element;
11
+ //# sourceMappingURL=LaneCalendar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LaneCalendar.d.ts","sourceRoot":"","sources":["../../../src/timeview/LaneCalendar.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAW,gBAAgB,EAAY,WAAW,EAA2B,MAAM,SAAS,CAAC;AAEzG,MAAM,WAAW,iBAAiB;IAChC,mCAAmC;IACnC,OAAO,EAAE,WAAW,CAAC;IACrB,8EAA8E;IAC9E,IAAI,EAAE,gBAAgB,CAAC;IACvB,iDAAiD;IACjD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AA2FD,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,iBAAiB,+BA2XzE"}
@@ -0,0 +1,8 @@
1
+ import type { MetricTimelineSpec, TimeDataset } from "./types";
2
+ export interface MetricTimelineProps {
3
+ dataset: TimeDataset;
4
+ spec: MetricTimelineSpec;
5
+ palette: string[];
6
+ }
7
+ export declare function MetricTimeline({ dataset, spec, palette }: MetricTimelineProps): import("react").JSX.Element;
8
+ //# sourceMappingURL=MetricTimeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetricTimeline.d.ts","sourceRoot":"","sources":["../../../src/timeview/MetricTimeline.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAW,kBAAkB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAExE,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,WAAW,CAAC;IACrB,IAAI,EAAE,kBAAkB,CAAC;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAuCD,wBAAgB,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,mBAAmB,+BAogB7E"}
@@ -0,0 +1,8 @@
1
+ import type { SpanMatrixSpec, TimeDataset } from "./types";
2
+ export interface SpanMatrixProps {
3
+ dataset: TimeDataset;
4
+ spec: SpanMatrixSpec;
5
+ palette: string[];
6
+ }
7
+ export declare function SpanMatrix({ dataset, spec, palette }: SpanMatrixProps): import("react").JSX.Element;
8
+ //# sourceMappingURL=SpanMatrix.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpanMatrix.d.ts","sourceRoot":"","sources":["../../../src/timeview/SpanMatrix.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAW,cAAc,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEpE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,WAAW,CAAC;IACrB,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAkDD,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,eAAe,+BAqhBrE"}
@@ -0,0 +1,22 @@
1
+ import { type VisualizerId } from "./registry";
2
+ import type { TimeDataset, ViewSpec } from "./types";
3
+ export interface TimeviewConfigV1 {
4
+ v: 1;
5
+ visualizer: VisualizerId;
6
+ dataset: TimeDataset;
7
+ spec: ViewSpec;
8
+ palette: string[];
9
+ }
10
+ export interface ValidationResult<T> {
11
+ value: T | null;
12
+ errors: string[];
13
+ }
14
+ export declare function validateTimeDataset(value: unknown): ValidationResult<TimeDataset>;
15
+ export declare function normalizeViewSpec(visualizer: VisualizerId, rawSpec: unknown): ValidationResult<ViewSpec>;
16
+ export declare function validateViewSpec(visualizer: VisualizerId, value: unknown): ValidationResult<ViewSpec>;
17
+ export declare function normalizePalette(value: unknown): string[];
18
+ export declare function normalizeTimeviewConfig(raw: unknown): ValidationResult<TimeviewConfigV1>;
19
+ export declare function encodeTimeviewConfig(config: TimeviewConfigV1): string;
20
+ export declare function decodeTimeviewConfig(hashOrToken: string): ValidationResult<TimeviewConfigV1>;
21
+ export declare function cloneTimeviewConfig(config: TimeviewConfigV1): TimeviewConfigV1;
22
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/timeview/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,KAAK,EAkBV,WAAW,EAEX,QAAQ,EACT,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,gBAAgB;IAC/B,CAAC,EAAE,CAAC,CAAC;IACL,UAAU,EAAE,YAAY,CAAC;IACzB,OAAO,EAAE,WAAW,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAiDD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAmGjF;AA4CD,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAmGxG;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAGrG;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAEzD;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAwBxF;AAkBD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAErE;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAQ5F;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,CAE9E"}
@@ -0,0 +1,113 @@
1
+ import type { HeatmapGroupBy, HeatmapMeasure, TimeBucketMode, TimeDataset } from "../types";
2
+ export interface TimeBucket {
3
+ key: string;
4
+ index: number;
5
+ start: number;
6
+ end: number;
7
+ label: string;
8
+ sub: string;
9
+ range: [number, number];
10
+ mode: TimeBucketMode;
11
+ isMonday?: boolean;
12
+ isWeekend?: boolean;
13
+ }
14
+ export interface AggregateGroup {
15
+ id: string;
16
+ name: string;
17
+ labelId: string | null;
18
+ }
19
+ export type AggregateItem = {
20
+ id: string;
21
+ kind: "interval";
22
+ title: string;
23
+ overlapMs: number;
24
+ labelId?: string;
25
+ } | {
26
+ id: string;
27
+ kind: "event";
28
+ title: string;
29
+ labelId?: string;
30
+ };
31
+ export interface AggregateCell {
32
+ count: number;
33
+ durationMs: number;
34
+ items: AggregateItem[];
35
+ }
36
+ export interface AggregateOptions {
37
+ bucket?: TimeBucketMode;
38
+ measure?: HeatmapMeasure;
39
+ groupBy?: HeatmapGroupBy;
40
+ }
41
+ export interface AggregateMatrix {
42
+ t0: number;
43
+ t1: number;
44
+ buckets: TimeBucket[];
45
+ groups: AggregateGroup[];
46
+ cells: Record<string, Record<string, AggregateCell>>;
47
+ max: number;
48
+ totals: Record<string, {
49
+ value: number;
50
+ count: number;
51
+ durationMs: number;
52
+ }>;
53
+ totalMax: number;
54
+ measure: HeatmapMeasure;
55
+ bucket: TimeBucketMode;
56
+ groupBy: HeatmapGroupBy;
57
+ value: (cell: AggregateCell | undefined) => number;
58
+ }
59
+ export type SpanMatrixIntervalItem = Extract<AggregateItem, {
60
+ kind: "interval";
61
+ }>;
62
+ export type SpanMatrixEventItem = Extract<AggregateItem, {
63
+ kind: "event";
64
+ }>;
65
+ export interface SpanMatrixCell {
66
+ bucketKey: string;
67
+ index: number;
68
+ spanCount: number;
69
+ present: boolean;
70
+ overlap: boolean;
71
+ runStart: boolean;
72
+ runEnd: boolean;
73
+ eventCount: number;
74
+ intervals: SpanMatrixIntervalItem[];
75
+ events: SpanMatrixEventItem[];
76
+ }
77
+ export interface SpanMatrixRun {
78
+ c0: number;
79
+ c1: number;
80
+ cells: SpanMatrixCell[];
81
+ peak: number;
82
+ title: string;
83
+ labelId: string | null;
84
+ span: number;
85
+ }
86
+ export interface SpanMatrixRow {
87
+ id: string;
88
+ name: string;
89
+ labelId: string | null;
90
+ cells: SpanMatrixCell[];
91
+ runs: SpanMatrixRun[];
92
+ }
93
+ export interface SpanMatrixOptions {
94
+ bucket?: TimeBucketMode;
95
+ groupBy?: HeatmapGroupBy;
96
+ }
97
+ export interface SpanMatrixModel {
98
+ t0: number;
99
+ t1: number;
100
+ buckets: TimeBucket[];
101
+ groups: AggregateGroup[];
102
+ rows: SpanMatrixRow[];
103
+ maxOverlap: number;
104
+ presentCells: number;
105
+ bucket: TimeBucketMode;
106
+ groupBy: HeatmapGroupBy;
107
+ }
108
+ /** Half-open [start,end) bucket windows across the dataset domain. */
109
+ export declare function tvBuckets(t0: number | string | Date, t1: number | string | Date, mode?: TimeBucketMode): TimeBucket[];
110
+ export declare function tvAggregate(dataset: TimeDataset, opts?: AggregateOptions): AggregateMatrix;
111
+ export declare function tvSpanMatrix(dataset: TimeDataset, opts?: SpanMatrixOptions): SpanMatrixModel;
112
+ export declare function tvFmtDuration(ms: number): string;
113
+ //# sourceMappingURL=aggregate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../../../src/timeview/core/aggregate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { TimeInput } from "../types";
2
+ export interface CalendarWeek {
3
+ index: number;
4
+ start: Date;
5
+ end: Date;
6
+ days: Date[];
7
+ }
8
+ export interface CalendarCell {
9
+ wi: number;
10
+ col: number;
11
+ }
12
+ export interface CalendarIntervalSegment {
13
+ wi: number;
14
+ c0: number;
15
+ c1: number;
16
+ startsHere: boolean;
17
+ endsHere: boolean;
18
+ }
19
+ export declare function startOfDayUTC(d: TimeInput): number;
20
+ /** Mon-start weeks covering [t0,t1], each with 7 concrete UTC day dates. */
21
+ export declare function tvGridWeeks(t0: TimeInput, t1: TimeInput): CalendarWeek[];
22
+ /** Which {week,row col 0..6} a single instant lands in. */
23
+ export declare function tvDayCell(t: TimeInput, weeks: CalendarWeek[]): CalendarCell | null;
24
+ /** Split an interval into inclusive day-column segments for each week row it touches. */
25
+ export declare function tvSplitInterval(s: TimeInput, e: TimeInput, weeks: CalendarWeek[]): CalendarIntervalSegment[];
26
+ export declare function tvSameUTCDay(a: TimeInput, b: TimeInput): boolean;
27
+ //# sourceMappingURL=calendar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../../src/timeview/core/calendar.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,IAAI,CAAC;IACZ,GAAG,EAAE,IAAI,CAAC;IACV,IAAI,EAAE,IAAI,EAAE,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAMD,wBAAgB,aAAa,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAGlD;AAED,4EAA4E;AAC5E,wBAAgB,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,GAAG,YAAY,EAAE,CAMxE;AAED,2DAA2D;AAC3D,wBAAgB,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,YAAY,GAAG,IAAI,CAQlF;AAED,yFAAyF;AACzF,wBAAgB,eAAe,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,uBAAuB,EAAE,CAqB5G;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,OAAO,CAEhE"}
@@ -0,0 +1,8 @@
1
+ export interface PackedInterval {
2
+ _s: number;
3
+ _e: number;
4
+ _lane: number;
5
+ }
6
+ export declare function packLanes<T extends PackedInterval>(intervals: T[]): number;
7
+ export declare function overlapSpans<T extends Pick<PackedInterval, "_s" | "_e">>(intervals: T[]): [number, number][];
8
+ //# sourceMappingURL=intervals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intervals.d.ts","sourceRoot":"","sources":["../../../../src/timeview/core/intervals.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAGD,wBAAgB,SAAS,CAAC,CAAC,SAAS,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,MAAM,CAmB1E;AAGD,wBAAgB,YAAY,CAAC,CAAC,SAAS,IAAI,CAAC,cAAc,EAAE,IAAI,GAAG,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAoB5G"}
@@ -0,0 +1,5 @@
1
+ import type { TimeDataset } from "../types";
2
+ export declare function colorMap(dataset: TimeDataset, palette: string[]): Record<string, string>;
3
+ export declare function mix(hex: string, pct: number, base?: string): string;
4
+ export declare function labelName(dataset: TimeDataset, id: string | undefined): string;
5
+ //# sourceMappingURL=labels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"labels.d.ts","sourceRoot":"","sources":["../../../../src/timeview/core/labels.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,wBAAgB,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMxF;AAED,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,SAAY,GAAG,MAAM,CAEtE;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAE9E"}
@@ -0,0 +1,58 @@
1
+ import type { TimeDataset, TimeInterval } from "../types";
2
+ export interface MetricPoint {
3
+ t: number;
4
+ at: string;
5
+ value: number;
6
+ }
7
+ export interface MetricState extends TimeInterval {
8
+ _s: number;
9
+ _e: number;
10
+ }
11
+ export interface MetricEvent {
12
+ id: string;
13
+ title: string;
14
+ labelIds?: string[];
15
+ _t: number;
16
+ }
17
+ export interface MetricTarget {
18
+ value: number;
19
+ label: string;
20
+ }
21
+ export interface MetricModel {
22
+ samples: MetricPoint[];
23
+ states: MetricState[];
24
+ events: MetricEvent[];
25
+ T0: number;
26
+ T1: number;
27
+ unit: string;
28
+ name: string;
29
+ target: MetricTarget | null;
30
+ vMin: number;
31
+ vMax: number;
32
+ }
33
+ export interface NiceTicks {
34
+ lo: number;
35
+ hi: number;
36
+ step: number;
37
+ ticks: number[];
38
+ }
39
+ export interface MetricTimeTick {
40
+ t: number;
41
+ label: string;
42
+ strong: boolean;
43
+ }
44
+ export interface MetricLineSegment {
45
+ a: MetricPoint;
46
+ b: MetricPoint;
47
+ labelId: string | null;
48
+ }
49
+ export declare const METRIC_MIN_SPAN: number;
50
+ export declare function tvNiceTicks(min: number, max: number, target?: number): NiceTicks;
51
+ export declare function tvMetricTimeTicks(v0: number, v1: number): MetricTimeTick[];
52
+ export declare function tvStateAt(states: MetricState[], t: number): MetricState | null;
53
+ export declare function tvMetricModel(dataset: TimeDataset): MetricModel;
54
+ export declare function tvDefaultViewport(model: MetricModel, days?: number, today?: string | null | undefined): [number, number];
55
+ export declare function tvClampViewport(v0: number, v1: number, model: MetricModel, mode?: "pan" | "zoom"): [number, number];
56
+ export declare function tvNearest(samples: MetricPoint[], t: number | Date): MetricPoint | null;
57
+ export declare function tvLineSegments(samples: MetricPoint[], states: MetricState[]): MetricLineSegment[];
58
+ //# sourceMappingURL=metric.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metric.d.ts","sourceRoot":"","sources":["../../../../src/timeview/core/metric.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE1D,MAAM,WAAW,WAAW;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAY,SAAQ,YAAY;IAC/C,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,CAAC,EAAE,WAAW,CAAC;IACf,CAAC,EAAE,WAAW,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,eAAO,MAAM,eAAe,QAAa,CAAC;AAO1C,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,SAAS,CAiB3E;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,cAAc,EAAE,CA8C1E;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAE9E;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,CA2C/D;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,SAAK,EAAE,KAAK,GAAE,MAAM,GAAG,IAAI,GAAG,SAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAgB1H;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,GAAE,KAAK,GAAG,MAAc,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAgB1H;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,CAatF;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,iBAAiB,EAAE,CA4BjG"}
@@ -0,0 +1,22 @@
1
+ import type { TimeDataset, TimeInput, TvScale } from "../types";
2
+ export declare const DAY_MS = 86400000;
3
+ export declare function domainOf(dataset: TimeDataset): [number, number];
4
+ /** Linear scale: maps a time domain [t0,t1] to pixels [0,width]. */
5
+ export declare function tvScale(t0: TimeInput, t1: TimeInput, width: number): TvScale;
6
+ /** Every day-tick boundary within [t0,t1] (UTC midnights). */
7
+ export declare function tvDays(t0: TimeInput, t1: TimeInput): Date[];
8
+ /** Week groupings (Mon-start) covering the domain, for the secondary axis. */
9
+ export declare function tvWeeks(t0: TimeInput, t1: TimeInput): {
10
+ start: Date;
11
+ end: Date;
12
+ }[];
13
+ export declare const fmt: {
14
+ day: (d: TimeInput) => number;
15
+ dow: (d: TimeInput) => string;
16
+ mon: (d: TimeInput) => string;
17
+ monDay: (d: TimeInput) => string;
18
+ full: (d: TimeInput) => string;
19
+ time: (d: TimeInput) => string | null;
20
+ span: (a: TimeInput, b: TimeInput) => string;
21
+ };
22
+ //# sourceMappingURL=time.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../../../src/timeview/core/time.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEhE,eAAO,MAAM,MAAM,WAAW,CAAC;AAW/B,wBAAgB,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAuB/D;AAED,oEAAoE;AACpE,wBAAgB,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAS5E;AAED,8DAA8D;AAC9D,wBAAgB,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,GAAG,IAAI,EAAE,CAS3D;AAED,8EAA8E;AAC9E,wBAAgB,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,GAAG;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,EAAE,CAalF;AAKD,eAAO,MAAM,GAAG;aACL,SAAS;aACT,SAAS;aACT,SAAS;gBACN,SAAS;cACX,SAAS;cACT,SAAS,KAAG,MAAM,GAAG,IAAI;cASzB,SAAS,KAAK,SAAS;CAIlC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { type ExportFormat, type ExportPresetId } from "./export";
2
+ import { type TimeviewConfigV1, type ValidationResult } from "./config";
3
+ export interface TimeviewDashboardPanelV1 {
4
+ id: string;
5
+ title: string;
6
+ config: TimeviewConfigV1;
7
+ format: ExportFormat;
8
+ preset: ExportPresetId;
9
+ }
10
+ export interface TimeviewDashboardV1 {
11
+ v: 1;
12
+ title: string;
13
+ generatedAt: string;
14
+ panels: TimeviewDashboardPanelV1[];
15
+ }
16
+ export declare function normalizeTimeviewDashboard(raw: unknown): ValidationResult<TimeviewDashboardV1>;
17
+ //# sourceMappingURL=dashboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/timeview/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,UAAU,CAAC;AAClF,OAAO,EAA2B,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjG,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,CAAC,EAAE,CAAC,CAAC;IACL,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,wBAAwB,EAAE,CAAC;CACpC;AAcD,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,OAAO,GAAG,gBAAgB,CAAC,mBAAmB,CAAC,CAiD9F"}
@@ -0,0 +1,21 @@
1
+ import type { TimeDataset } from "./types";
2
+ export { DAY_MS, domainOf, tvScale, tvDays, tvWeeks, fmt } from "./core/time";
3
+ export declare const TV_PALETTES: {
4
+ Studio: string[];
5
+ Muted: string[];
6
+ Vivid: string[];
7
+ Cool: string[];
8
+ };
9
+ export declare const TV_DATA: {
10
+ default: TimeDataset;
11
+ overlap: TimeDataset;
12
+ dense: TimeDataset;
13
+ stacked: TimeDataset;
14
+ empty: TimeDataset;
15
+ metric: TimeDataset;
16
+ metricDense: TimeDataset;
17
+ metricSparse: TimeDataset;
18
+ metricEmpty: TimeDataset;
19
+ };
20
+ export type FixtureKey = keyof typeof TV_DATA;
21
+ //# sourceMappingURL=data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../src/timeview/data.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAK9E,eAAO,MAAM,WAAW;;;;;CAKY,CAAC;AAoNrC,eAAO,MAAM,OAAO;;;;;;;;;;CAUmB,CAAC;AAExC,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,OAAO,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { TimeviewConfigV1 } from "./config";
2
+ export type ExportFormat = "html" | "png";
3
+ export type ExportPresetId = "1200x720" | "1600x900";
4
+ export declare const EXPORT_PRESETS: Record<ExportPresetId, {
5
+ width: number;
6
+ height: number;
7
+ label: string;
8
+ }>;
9
+ export declare function isExportPresetId(value: string): value is ExportPresetId;
10
+ export declare function slug(value: string): string;
11
+ export declare function exportFileName(config: TimeviewConfigV1, extension: ExportFormat): string;
12
+ export declare function localIsoDate(now?: Date): string;
13
+ export declare function freezeConfigForExport(config: TimeviewConfigV1, today?: string): TimeviewConfigV1;
14
+ //# sourceMappingURL=export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../src/timeview/export.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAGjD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,KAAK,CAAC;AAC1C,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,UAAU,CAAC;AAErD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAGnG,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,cAAc,CAEvE;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO1C;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,GAAG,MAAM,CAIxF;AAED,wBAAgB,YAAY,CAAC,GAAG,OAAa,GAAG,MAAM,CAKrD;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,SAAiB,GAAG,gBAAgB,CAUxG"}
@@ -0,0 +1,28 @@
1
+ export { BandedTimeline } from "./BandedTimeline";
2
+ export type { BandedTimelineProps } from "./BandedTimeline";
3
+ export { LaneCalendar } from "./LaneCalendar";
4
+ export type { LaneCalendarProps } from "./LaneCalendar";
5
+ export { DensityHeatmap } from "./DensityHeatmap";
6
+ export type { DensityHeatmapProps } from "./DensityHeatmap";
7
+ export { SpanMatrix } from "./SpanMatrix";
8
+ export type { SpanMatrixProps } from "./SpanMatrix";
9
+ export { MetricTimeline } from "./MetricTimeline";
10
+ export type { MetricTimelineProps } from "./MetricTimeline";
11
+ export { TV_VISUALIZERS, TV_VISUALIZER_BY_ID } from "./registry";
12
+ export type { TimeviewVisualizer, VisualizerId } from "./registry";
13
+ export { cloneTimeviewConfig, decodeTimeviewConfig, encodeTimeviewConfig, normalizePalette, normalizeTimeviewConfig, normalizeViewSpec, validateTimeDataset, validateViewSpec, } from "./config";
14
+ export type { TimeviewConfigV1, ValidationResult } from "./config";
15
+ export { normalizeTimeviewDashboard } from "./dashboard";
16
+ export type { TimeviewDashboardPanelV1, TimeviewDashboardV1 } from "./dashboard";
17
+ export { EXPORT_PRESETS, exportFileName, freezeConfigForExport, isExportPresetId, localIsoDate, slug } from "./export";
18
+ export type { ExportFormat, ExportPresetId } from "./export";
19
+ export { tvBuckets, tvAggregate, tvFmtDuration, tvSpanMatrix } from "./core/aggregate";
20
+ export type { TimeBucket, AggregateGroup, AggregateItem, AggregateCell, AggregateOptions, AggregateMatrix, SpanMatrixCell, SpanMatrixEventItem, SpanMatrixIntervalItem, SpanMatrixModel, SpanMatrixOptions, SpanMatrixRow, SpanMatrixRun, } from "./core/aggregate";
21
+ export { METRIC_MIN_SPAN, tvClampViewport, tvDefaultViewport, tvLineSegments, tvMetricModel, tvMetricTimeTicks, tvNearest, tvNiceTicks, tvStateAt, } from "./core/metric";
22
+ export type { MetricEvent, MetricLineSegment, MetricModel, MetricPoint, MetricState, MetricTarget, MetricTimeTick, NiceTicks } from "./core/metric";
23
+ export { tvGridWeeks, tvDayCell, tvSplitInterval, tvSameUTCDay, startOfDayUTC } from "./core/calendar";
24
+ export type { CalendarWeek, CalendarCell, CalendarIntervalSegment } from "./core/calendar";
25
+ export { TV_DATA, TV_PALETTES, DAY_MS, domainOf, tvScale, tvDays, tvWeeks, fmt, } from "./data";
26
+ export type { FixtureKey } from "./data";
27
+ export type { TimeInput, TimeLabel, TimeEvent, TimeInterval, MetricSample, MetricSeries, TimeDataset, ViewSpecBase, BandedTimelineSpec, LaneCalendarSpec, DensityHeatmapSpec, SpanMatrixSpec, MetricTimelineSpec, ViewSpec, TvScale, OverlapMode, LaneMode, TodayMode, TodayValue, TimeBucketMode, HeatmapMeasure, HeatmapGroupBy, HeatmapScaleMode, MetricStateMode, MetricYAxisMode, MetricDefaultDays, Density, LegendPosition, CaptionPosition, } from "./types";
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/timeview/index.ts"],"names":[],"mappings":"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"}