@opendata-ai/openchart-core 8.9.0 → 8.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -111,6 +111,81 @@ interface ChromeEconomy {
111
111
  */
112
112
  declare function resolveChromeEconomy(width: number, height: number): ChromeEconomy;
113
113
 
114
+ /** Supplied semantics; the library never invents a measure or uncertainty. */
115
+ interface FieldMetadata {
116
+ /** Explicit imported field type; preserved with the portable document. */
117
+ type?: 'text' | 'number' | 'date';
118
+ /** Identifies an internal, persistent row identity column. */
119
+ role?: 'identity';
120
+ label?: string;
121
+ unit?: string;
122
+ measure?: string;
123
+ provenance?: string;
124
+ /** Percent is encoded 0–100; proportion is encoded 0–1. */
125
+ representation?: 'number' | 'percent' | 'proportion';
126
+ interval?: {
127
+ lower: string;
128
+ upper: string;
129
+ };
130
+ statusField?: string;
131
+ }
132
+ interface DesignDiagnostic {
133
+ code: string;
134
+ severity: 'info' | 'warning' | 'error';
135
+ status: 'failed' | 'uncheckable';
136
+ path: string;
137
+ viewport: {
138
+ width: number;
139
+ height: number;
140
+ };
141
+ message: string;
142
+ origin: 'author' | 'default';
143
+ fix?: SpecPatch;
144
+ }
145
+ /** Atomic JSON-pointer edits guarded by the complete source document. */
146
+ interface SpecPatch {
147
+ label: string;
148
+ /** Canonical source snapshot prevents stale fixes overwriting subsequent edits. */
149
+ precondition: string;
150
+ changes: Array<{
151
+ path: string;
152
+ value: unknown;
153
+ }>;
154
+ }
155
+ type DesignQuestion = 'comparison' | 'change' | 'distribution' | 'composition' | 'geography' | 'relationships';
156
+ interface CompositionRecommendation {
157
+ id: string;
158
+ title: string;
159
+ reason: string;
160
+ tradeoff: string;
161
+ spec: VizSpec;
162
+ }
163
+ interface ObservationIdentity {
164
+ observation: string;
165
+ series?: string;
166
+ persistent: boolean;
167
+ }
168
+ interface ReaderObservation extends ObservationIdentity {
169
+ /** Aggregates are visible groups and never imply a raw-row selection. */
170
+ kind?: 'row' | 'aggregate';
171
+ datum: DataRow;
172
+ previous?: DataRow;
173
+ state: 'visible' | 'filtered';
174
+ }
175
+ interface ReaderSelection {
176
+ preview: ReaderObservation | null;
177
+ pinned: ReaderObservation[];
178
+ announcement: string;
179
+ }
180
+ /** Explicit relationships; aggregate groups never masquerade as raw rows. */
181
+ interface DatasetBinding {
182
+ dataset: string;
183
+ entityField: string;
184
+ kind: 'row' | 'group';
185
+ transform?: string;
186
+ groupMembers?: Record<string, Array<string | number>>;
187
+ }
188
+
114
189
  /**
115
190
  * Derived neutral ramp.
116
191
  *
@@ -165,8 +240,8 @@ declare function deriveNeutralRamp(text: string, bg: string, isDark?: boolean):
165
240
  /**
166
241
  * Theme types: color palettes, typography, spacing, and chrome defaults.
167
242
  *
168
- * Theme is the user-facing partial config (all optional).
169
- * ResolvedTheme is the engine-internal fully resolved version (no optionals).
243
+ * ThemeConfig is the user-facing partial config (all optional).
244
+ * ResolvedTheme is the public fully resolved output type.
170
245
  */
171
246
 
172
247
  /**
@@ -223,6 +298,20 @@ interface ThemeColors {
223
298
  annotationFill: string;
224
299
  /** Annotation text color. */
225
300
  annotationText: string;
301
+ /** Annotation label color. */
302
+ annotationLabel: string;
303
+ /** Annotation muted color. */
304
+ annotationMuted: string;
305
+ /** Annotation leader color. */
306
+ annotationLeader: string;
307
+ /** Annotation rule color. */
308
+ annotationRule: string;
309
+ /** Annotation rangefill color. */
310
+ annotationRangeFill: string;
311
+ /** Annotation markerfill color. */
312
+ annotationMarkerFill: string;
313
+ /** Annotation plate color. */
314
+ annotationPlate: string;
226
315
  /** Semantic color for positive/up-trend values (e.g. sparkline trend coloring). */
227
316
  positive: string;
228
317
  /** Semantic color for negative/down-trend values (e.g. sparkline trend coloring). */
@@ -331,10 +420,11 @@ interface ThemeChromeDefaults {
331
420
  * works with).
332
421
  *
333
422
  * Users provide ThemeConfig (from spec.ts) which is the partial/optional
334
- * version. The theme resolver deep-merges ThemeConfig onto the default Theme
423
+ * version. The theme resolver deep-merges ThemeConfig onto the default theme
335
424
  * to produce a ResolvedTheme.
336
425
  */
337
- interface Theme {
426
+ /** @internal Base structure before runtime color resolution. */
427
+ interface ThemeBase {
338
428
  /** Color palettes. */
339
429
  colors: ThemeColors;
340
430
  /** Typography settings. */
@@ -353,18 +443,10 @@ interface Theme {
353
443
  /** Series color assignment strategy. Default: 'palette' (full categorical). */
354
444
  seriesStrategy: SeriesStrategy;
355
445
  }
356
- /**
357
- * Fully resolved theme with no optional fields.
358
- *
359
- * This is the result of resolveTheme(): the default theme with user
360
- * overrides deep-merged in. Every property is guaranteed to have a value.
361
- * The engine uses ResolvedTheme internally so it never needs null checks.
362
- *
363
- * Structurally identical to Theme (both have all required fields), but
364
- * exists as a separate type for semantic clarity: Theme is the default
365
- * definition, ResolvedTheme is the runtime-resolved instance.
366
- */
367
- interface ResolvedTheme extends Theme {
446
+ /** @deprecated Use ThemeConfig for input or ResolvedTheme for resolved output. */
447
+ type Theme = ThemeBase;
448
+ /** Fully resolved runtime theme, including color adaptation and token metadata. */
449
+ interface ResolvedTheme extends ThemeBase {
368
450
  /** Colors plus the neutral ramp derived from `text` and `background`. */
369
451
  colors: ResolvedThemeColors;
370
452
  /** Whether dark mode adaptations have been applied to this theme. */
@@ -480,6 +562,10 @@ interface ResolvedChrome {
480
562
  brand?: ResolvedChromeElement;
481
563
  /** Annotation footnotes generated by auto-thinning. Rendered as a numbered list above the source line. */
482
564
  footnotes?: AnnotationFootnote[];
565
+ /** Reserved annotation-note and series-summary band, independent of the current demoted set. */
566
+ noteBandHeight?: number;
567
+ /** Height added by the engine in grow mode; hosts must not add it again. */
568
+ grownHeight?: number;
483
569
  /** Responsive series readout above source/methodology. */
484
570
  seriesSummary?: Array<{
485
571
  key: string;
@@ -984,6 +1070,8 @@ type Mark = LineMark | AreaMark | RectMark | ArcMark | PointMark | TextMarkLayou
984
1070
  * The collision engine determines whether labels are visible or demoted to tooltip-only.
985
1071
  */
986
1072
  interface ResolvedLabel {
1073
+ /** Engine-wrapped display lines; text retains the original identity string. */
1074
+ lines?: string[];
987
1075
  /** Label text content. */
988
1076
  text: string;
989
1077
  /** Computed x position. */
@@ -1000,6 +1088,10 @@ interface ResolvedLabel {
1000
1088
  connector?: {
1001
1089
  /** Connector start (at the label). */
1002
1090
  from: Point;
1091
+ /** Engine-resolved quadratic control point; absent in older hand-built layouts. */
1092
+ control?: Point;
1093
+ /** Authored curve displacement, retained for geometry rebuilds. */
1094
+ bend?: number;
1003
1095
  /** Connector end (pulled back from the data point so the line doesn't touch it). */
1004
1096
  to: Point;
1005
1097
  /** Actual data point the connector is calling out. Renderer uses this for the endpoint marker. */
@@ -1009,6 +1101,8 @@ interface ResolvedLabel {
1009
1101
  dx: number;
1010
1102
  dy: number;
1011
1103
  };
1104
+ /** Fixed label attachment for outside-reference gutter leaders; retained during animation. */
1105
+ labelAttachment?: 'left-center';
1012
1106
  /** Connector line color. */
1013
1107
  stroke: string;
1014
1108
  /** Connector style: straight line, curved arrow, or vertical drop-line through the data point. */
@@ -1085,6 +1179,7 @@ interface ResolvedAnnotation {
1085
1179
  * label. Positioned `lineHeight * primaryLineCount + gap` below `label.y`.
1086
1180
  */
1087
1181
  subtitle?: {
1182
+ lines?: string[];
1088
1183
  text: string;
1089
1184
  x: number;
1090
1185
  y: number;
@@ -1101,6 +1196,12 @@ interface ResolvedAnnotation {
1101
1196
  }
1102
1197
  /** A footnote entry generated by annotation auto-thinning. */
1103
1198
  interface AnnotationFootnote {
1199
+ /** Engine-wrapped display lines, including the number; omitted for one-line notes. */
1200
+ lines?: string[];
1201
+ /** Source annotation index, independent of note numbering. */
1202
+ specIndex?: number;
1203
+ /** Authored source ID, when present. */
1204
+ id?: string;
1104
1205
  /** 1-indexed footnote number matching the dot marker on the chart. */
1105
1206
  index: number;
1106
1207
  /** The original annotation text that was demoted. */
@@ -2488,11 +2589,10 @@ interface CompileOptions {
2488
2589
  /** Extra pixels to reserve on the right margin for a secondary y-axis. Set by compileLayer when resolve.scale.y is 'independent'. */
2489
2590
  rightAxisReserve?: number;
2490
2591
  /**
2491
- * Extra pixels to reserve below the plot for the auto-thinning footnote list.
2492
- * Chicken-and-egg: thinning needs the chart area to decide what to demote, but
2493
- * the footnotes it produces need space carved out of that same area. compileChart
2494
- * resolves it by compiling once to learn the footnote count, then recompiling with
2495
- * this set. Callers should not set it; it is internal to that second pass.
2592
+ * Internal note-band reserve resolved from source annotation capacity and
2593
+ * responsive series-summary lines. Subtract mode consumes the fixed figure
2594
+ * budget; grow mode adds the reserve to the SVG height while keeping the
2595
+ * original layout budget and padding. Callers should not set this field.
2496
2596
  */
2497
2597
  footnoteReserve?: number;
2498
2598
  /** Recursion depth of the footnote-reserve convergence pass. Internal to compileChart. */
@@ -3589,6 +3689,8 @@ type ConnectorType = 'straight' | 'curve' | 'drop-line';
3589
3689
  interface ConnectorConfig {
3590
3690
  /** Connector style. */
3591
3691
  type: ConnectorType;
3692
+ /** Curve displacement along the chord normal, from -1 to 1. Omitted or zero preserves the automatic curve. Ignored for other connector types. */
3693
+ bend?: number;
3592
3694
  /** Whether to draw an arrowhead at the data-point end. Default: true for curve, false for straight. Drop-line never takes a head. */
3593
3695
  arrow?: boolean;
3594
3696
  }
@@ -3650,6 +3752,10 @@ interface TextAnnotation extends AnnotationBase {
3650
3752
  * 700 — the lede + context stack.
3651
3753
  */
3652
3754
  subtitle?: string;
3755
+ /** Subtitle size in pixels. Default: round(fontSize * 0.85). */
3756
+ subtitleFontSize?: number;
3757
+ /** Optional display wrap width in pixels. Omitted or null keeps unbounded lines. */
3758
+ maxWidth?: number | null;
3653
3759
  /**
3654
3760
  * Open-ring marker drawn on the data point itself (not on the pulled-back
3655
3761
  * connector tip).
@@ -3762,6 +3868,8 @@ interface RefLineAnnotation extends AnnotationBase {
3762
3868
  strokeWidth?: number;
3763
3869
  /** Pixel offset for the reference line label. */
3764
3870
  labelOffset?: AnnotationOffset;
3871
+ /** Opt-in screen-space label placement. Outside reserves a right gutter or top lane; omission preserves legacy labelAnchor behavior. */
3872
+ labelPlacement?: 'auto' | 'start' | 'end' | 'outside';
3765
3873
  /** Anchor direction for the reference line label. */
3766
3874
  labelAnchor?: AnnotationAnchor;
3767
3875
  /** Label font size in pixels. Default: 11. */
@@ -3836,6 +3944,20 @@ interface ThemeConfig {
3836
3944
  annotationFill?: TokenValue;
3837
3945
  /** Annotation text color. Accepts a TokenValue for light/dark pairs. */
3838
3946
  annotationText?: TokenValue;
3947
+ /** Annotation label color. Accepts a TokenValue light/dark pair. */
3948
+ annotationLabel?: TokenValue;
3949
+ /** Annotation muted color. Accepts a TokenValue light/dark pair. */
3950
+ annotationMuted?: TokenValue;
3951
+ /** Annotation leader color. Accepts a TokenValue light/dark pair. */
3952
+ annotationLeader?: TokenValue;
3953
+ /** Annotation rule color. Accepts a TokenValue light/dark pair. */
3954
+ annotationRule?: TokenValue;
3955
+ /** Annotation rangefill color. Accepts a TokenValue light/dark pair. */
3956
+ annotationRangeFill?: TokenValue;
3957
+ /** Annotation markerfill color. Accepts a TokenValue light/dark pair. */
3958
+ annotationMarkerFill?: TokenValue;
3959
+ /** Annotation plate color. Accepts a TokenValue light/dark pair. */
3960
+ annotationPlate?: TokenValue;
3839
3961
  /** Semantic color for positive/up-trend values. Accepts a TokenValue for light/dark pairs. */
3840
3962
  positive?: TokenValue;
3841
3963
  /** Semantic color for negative/down-trend values. Accepts a TokenValue for light/dark pairs. */
@@ -3902,17 +4024,17 @@ interface ThemeConfig {
3902
4024
  */
3903
4025
  chrome?: {
3904
4026
  /** Eyebrow (kicker) style override. */
3905
- eyebrow?: string | ChromeThemeOverride;
4027
+ eyebrow?: ChromeThemeOverride | /** @deprecated Use { color }. */ string;
3906
4028
  /** Title style override. */
3907
- title?: string | ChromeThemeOverride;
4029
+ title?: ChromeThemeOverride | /** @deprecated Use { color }. */ string;
3908
4030
  /** Subtitle style override. */
3909
- subtitle?: string | ChromeThemeOverride;
4031
+ subtitle?: ChromeThemeOverride | /** @deprecated Use { color }. */ string;
3910
4032
  /** Source/attribution style override. */
3911
- source?: string | ChromeThemeOverride;
4033
+ source?: ChromeThemeOverride | /** @deprecated Use { color }. */ string;
3912
4034
  /** Byline style override. */
3913
- byline?: string | ChromeThemeOverride;
4035
+ byline?: ChromeThemeOverride | /** @deprecated Use { color }. */ string;
3914
4036
  /** Footer style override. */
3915
- footer?: string | ChromeThemeOverride;
4037
+ footer?: ChromeThemeOverride | /** @deprecated Use { color }. */ string;
3916
4038
  };
3917
4039
  /**
3918
4040
  * Editorial rule above the chrome block: a short colored bar (the
@@ -4116,8 +4238,10 @@ interface SeriesStyle {
4116
4238
  * Uses CSS linear() curves. Named 'ease' (not 'easing') to match Vega convention.
4117
4239
  */
4118
4240
  type AnimationEase = 'smooth' | 'snappy';
4119
- /** Opt-in motion language. `legacy` preserves the v8 tween timing. */
4120
- type AnimationPreset = 'fluid' | 'subtle' | 'legacy';
4241
+ /** Opt-in motion language. */
4242
+ type AnimationPreset = 'fluid' | 'subtle'
4243
+ /** @deprecated Omit preset for v8 timing. */
4244
+ | 'legacy';
4121
4245
  /** Physical spring parameters. Quantitative motion is bounded at critical damping. */
4122
4246
  interface SpringConfig {
4123
4247
  stiffness?: number;
@@ -4133,6 +4257,8 @@ interface AnimationStagger {
4133
4257
  }
4134
4258
  /** Fine-grained responsive behavior configuration. */
4135
4259
  interface ResponsiveConfig {
4260
+ /** Maximum eligible inline callouts below 400px container width; null or omitted is unlimited. Pinned annotations are exempt. */
4261
+ compactAnnotationLimit?: number | null;
4136
4262
  /** Preserve the final temporal boundary before thinning interior ticks. */
4137
4263
  preserveEnd?: boolean;
4138
4264
  /** Move direct series labels into a keyed list when the inline column cannot fit. */
@@ -4536,6 +4662,7 @@ interface BaseChartSpec<TData extends DataRow = DataRow> {
4536
4662
  /** Theme configuration overrides. */
4537
4663
  theme?: ThemeConfig;
4538
4664
  /** Dark mode behavior. Defaults to "off". */
4665
+ /** @deprecated Use the mount darkMode option; the spec field has no effect. */
4539
4666
  darkMode?: DarkMode;
4540
4667
  /**
4541
4668
  * Whether to show the OpenData watermark. Defaults to true; auto-hides
@@ -4770,6 +4897,7 @@ interface TableSpec {
4770
4897
  /** Theme configuration overrides. */
4771
4898
  theme?: ThemeConfig;
4772
4899
  /** Dark mode behavior. */
4900
+ /** @deprecated Use the mount darkMode option; the spec field has no effect. */
4773
4901
  darkMode?: DarkMode;
4774
4902
  /** Whether to show the OpenData watermark. Defaults to true. */
4775
4903
  watermark?: boolean;
@@ -4941,6 +5069,7 @@ interface GraphSpec {
4941
5069
  /** Theme configuration overrides. */
4942
5070
  theme?: ThemeConfig;
4943
5071
  /** Dark mode behavior. */
5072
+ /** @deprecated Use the mount darkMode option; the spec field has no effect. */
4944
5073
  darkMode?: DarkMode;
4945
5074
  /**
4946
5075
  * Motion configuration. DEFAULT-ON: omit for full defaults, `false` to opt
@@ -5069,6 +5198,7 @@ interface LayerSpec<TData extends DataRow = DataRow> {
5069
5198
  /** Theme configuration overrides. */
5070
5199
  theme?: ThemeConfig;
5071
5200
  /** Dark mode behavior. Defaults to "off". */
5201
+ /** @deprecated Use the mount darkMode option; the spec field has no effect. */
5072
5202
  darkMode?: DarkMode;
5073
5203
  /** Whether to show the OpenData watermark. Defaults to true. */
5074
5204
  watermark?: boolean;
@@ -5156,6 +5286,7 @@ interface SankeySpec {
5156
5286
  /** Theme configuration overrides. */
5157
5287
  theme?: ThemeConfig;
5158
5288
  /** Dark mode behavior. Defaults to "off". */
5289
+ /** @deprecated Use the mount darkMode option; the spec field has no effect. */
5159
5290
  darkMode?: DarkMode;
5160
5291
  /** Whether to show the OpenData watermark. Defaults to true. */
5161
5292
  watermark?: boolean;
@@ -5220,6 +5351,7 @@ interface TileMapSpec {
5220
5351
  /** Theme configuration overrides. */
5221
5352
  theme?: ThemeConfig;
5222
5353
  /** Dark mode behavior. Defaults to "off". */
5354
+ /** @deprecated Use the mount darkMode option; the spec field has no effect. */
5223
5355
  darkMode?: DarkMode;
5224
5356
  /** Whether to show the OpenData watermark. Defaults to true. */
5225
5357
  watermark?: boolean;
@@ -5228,8 +5360,6 @@ interface TileMapSpec {
5228
5360
  /**
5229
5361
  * d3-format string applied to tile values, legend labels, and tooltips.
5230
5362
  * Examples: ".1f" for one decimal, "$,.0f" for currency, "~s" for SI.
5231
- * @deprecated Use the encoding channel's `format` field instead. This
5232
- * property is expanded into the encoding during compilation.
5233
5363
  */
5234
5364
  valueFormat?: string;
5235
5365
  }
@@ -5343,6 +5473,7 @@ interface GeoMapSpec {
5343
5473
  /** Theme configuration overrides. */
5344
5474
  theme?: ThemeConfig;
5345
5475
  /** Dark mode behavior. Defaults to "off". */
5476
+ /** @deprecated Use the mount darkMode option; the spec field has no effect. */
5346
5477
  darkMode?: DarkMode;
5347
5478
  /** Whether to show the OpenData watermark. Defaults to true. */
5348
5479
  watermark?: boolean;
@@ -5377,6 +5508,7 @@ interface BarListSpec {
5377
5508
  /** Theme configuration overrides. */
5378
5509
  theme?: ThemeConfig;
5379
5510
  /** Dark mode behavior. Defaults to "off". */
5511
+ /** @deprecated Use the mount darkMode option; the spec field has no effect. */
5380
5512
  darkMode?: DarkMode;
5381
5513
  /** Whether to show the OpenData watermark. Defaults to true. */
5382
5514
  watermark?: boolean;
@@ -5737,154 +5869,6 @@ declare function isRefLineAnnotation(annotation: Annotation): annotation is RefL
5737
5869
  /** Human-readable display names for mark types (used in alt text, error messages). */
5738
5870
  declare const MARK_DISPLAY_NAMES: Record<MarkType, string>;
5739
5871
 
5740
- /** Supplied semantics; the library never invents a measure or uncertainty. */
5741
- interface FieldMetadata {
5742
- /** Explicit imported field type; preserved with the portable document. */
5743
- type?: 'text' | 'number' | 'date';
5744
- /** Identifies an internal, persistent row identity column. */
5745
- role?: 'identity';
5746
- label?: string;
5747
- unit?: string;
5748
- measure?: string;
5749
- provenance?: string;
5750
- /** Percent is encoded 0–100; proportion is encoded 0–1. */
5751
- representation?: 'number' | 'percent' | 'proportion';
5752
- interval?: {
5753
- lower: string;
5754
- upper: string;
5755
- };
5756
- statusField?: string;
5757
- }
5758
- interface DesignDiagnostic {
5759
- code: string;
5760
- severity: 'info' | 'warning' | 'error';
5761
- status: 'failed' | 'uncheckable';
5762
- path: string;
5763
- viewport: {
5764
- width: number;
5765
- height: number;
5766
- };
5767
- message: string;
5768
- origin: 'author' | 'default';
5769
- fix?: SpecPatch;
5770
- }
5771
- /** Atomic JSON-pointer edits guarded by the complete source document. */
5772
- interface SpecPatch {
5773
- label: string;
5774
- /** Canonical source snapshot prevents stale fixes overwriting subsequent edits. */
5775
- precondition: string;
5776
- changes: Array<{
5777
- path: string;
5778
- value: unknown;
5779
- }>;
5780
- }
5781
- type DesignQuestion = 'comparison' | 'change' | 'distribution' | 'composition' | 'geography' | 'relationships';
5782
- interface CompositionRecommendation {
5783
- id: string;
5784
- title: string;
5785
- reason: string;
5786
- tradeoff: string;
5787
- spec: VizSpec;
5788
- }
5789
- interface ObservationIdentity {
5790
- observation: string;
5791
- series?: string;
5792
- persistent: boolean;
5793
- }
5794
- interface ReaderObservation extends ObservationIdentity {
5795
- /** Aggregates are visible groups and never imply a raw-row selection. */
5796
- kind?: 'row' | 'aggregate';
5797
- datum: DataRow;
5798
- previous?: DataRow;
5799
- state: 'visible' | 'filtered';
5800
- }
5801
- interface ReaderSelection {
5802
- preview: ReaderObservation | null;
5803
- pinned: ReaderObservation[];
5804
- announcement: string;
5805
- }
5806
- /** Explicit relationships; aggregate groups never masquerade as raw rows. */
5807
- interface DatasetBinding {
5808
- dataset: string;
5809
- entityField: string;
5810
- kind: 'row' | 'group';
5811
- transform?: string;
5812
- groupMembers?: Record<string, Array<string | number>>;
5813
- }
5814
-
5815
- /**
5816
- * Per-mark-type encoding validation rules.
5817
- *
5818
- * Defines which encoding channels are required vs optional for each mark type.
5819
- * The engine compiler uses these rules to validate specs at runtime (TypeScript
5820
- * catches compile-time errors; these catch runtime JSON from Claude or APIs).
5821
- */
5822
-
5823
- /** Constraint on what field types are valid for an encoding channel. */
5824
- interface ChannelRule {
5825
- /** Whether this channel is required for the chart type. */
5826
- required: boolean;
5827
- /** Allowed field types. If empty, any field type is accepted. */
5828
- allowedTypes: FieldType[];
5829
- }
5830
- /** Encoding rules for a single chart type: which channels are required/optional. */
5831
- interface EncodingRule {
5832
- x: ChannelRule;
5833
- y: ChannelRule;
5834
- x2?: ChannelRule;
5835
- y2?: ChannelRule;
5836
- color: ChannelRule;
5837
- size: ChannelRule;
5838
- opacity?: ChannelRule;
5839
- strokeDash?: ChannelRule;
5840
- text?: ChannelRule;
5841
- tooltip?: ChannelRule;
5842
- theta?: ChannelRule;
5843
- detail: ChannelRule;
5844
- }
5845
- /**
5846
- * Encoding rules per mark type.
5847
- *
5848
- * Defines which channels are required and what field types they accept.
5849
- * The compiler uses this map to validate user specs at runtime.
5850
- *
5851
- * Key design decisions:
5852
- * - line/area: x is temporal/ordinal (the axis), y is quantitative (the value)
5853
- * - bar: covers both horizontal and vertical orientations, so both axes accept
5854
- * all relevant types. The engine validates the combination later (one axis
5855
- * must be quantitative).
5856
- * - arc: no x axis; y is the value (quantitative), color is the category
5857
- * - circle: y is the category, x is quantitative
5858
- * - point: both axes are quantitative
5859
- * - text/rule: fully optional positioning
5860
- * - tick/rect: both axes required, any type
5861
- * - beeswarm: both axes optional at the channel level; the compiler enforces
5862
- * the combination (exactly one quantitative value axis, the other axis an
5863
- * optional nominal/ordinal lane channel)
5864
- * - waffle: no positional axes; y is the share value (quantitative, with
5865
- * theta accepted as an alias like arc), color is the category
5866
- * - calendar: x is the daily date (temporal), color the per-day value
5867
- * (quantitative); no y channel (the calendar owns its own geometry)
5868
- * - parliament: no positional axes; theta (aliased to y) is the seat count
5869
- * (quantitative), color the party
5870
- */
5871
- declare const MARK_ENCODING_RULES: Record<MarkType, EncodingRule>;
5872
- /** Encoding rule for a single graph visual channel. */
5873
- interface GraphChannelRule {
5874
- /** Whether this channel is required. */
5875
- required: boolean;
5876
- /** Allowed field types. Empty means any type. */
5877
- allowedTypes: FieldType[];
5878
- }
5879
- /**
5880
- * Encoding rules for graph visualizations.
5881
- *
5882
- * All graph encoding channels are optional since a graph can be rendered
5883
- * with just nodes and edges (uniform appearance). Encoding channels add
5884
- * visual differentiation based on data fields.
5885
- */
5886
- declare const GRAPH_ENCODING_RULES: Record<string, GraphChannelRule>;
5887
-
5888
5872
  /**
5889
5873
  * Chart interaction event types.
5890
5874
  *
@@ -5896,6 +5880,23 @@ declare const GRAPH_ENCODING_RULES: Record<string, GraphChannelRule>;
5896
5880
  * mark elements and constructs these typed events from the raw browser events.
5897
5881
  */
5898
5882
 
5883
+ /** A source-addressed durable edit. Paths use escaped RFC 6901 JSON Pointers. */
5884
+ interface EditOp {
5885
+ op: 'set' | 'remove' | 'add';
5886
+ path: string;
5887
+ value?: unknown;
5888
+ /** Preconditions on the nearest authored annotation ancestor. */
5889
+ expect?: {
5890
+ id?: string;
5891
+ type?: string;
5892
+ text?: string;
5893
+ };
5894
+ }
5895
+ /** All operations succeed together. Revision is optional host bookkeeping. */
5896
+ interface EditTransaction {
5897
+ revision?: string | number;
5898
+ ops: EditOp[];
5899
+ }
5899
5900
  /** Identifies a specific chrome text element (title, subtitle, source, byline, footer). */
5900
5901
  type ChromeKey = 'title' | 'subtitle' | 'source' | 'byline' | 'footer';
5901
5902
  /**
@@ -5910,6 +5911,8 @@ type ElementRef = {
5910
5911
  id?: string;
5911
5912
  /** RFC 6901 JSON Pointer to the edited property in the spec. */
5912
5913
  path?: string;
5914
+ /** Rendered facet instance; source identity remains index/id/path. */
5915
+ facetInstance?: string;
5913
5916
  } | {
5914
5917
  type: 'chrome';
5915
5918
  key: ChromeKey;
@@ -5933,7 +5936,9 @@ type ElementRef = {
5933
5936
  };
5934
5937
  /** Helper constructors for ergonomic ElementRef creation. */
5935
5938
  declare const elementRef: {
5936
- readonly annotation: (index: number, id?: string, path?: string) => ElementRef;
5939
+ readonly annotation: (index: number, id?: string, path?: string) => Extract<ElementRef, {
5940
+ type: "annotation";
5941
+ }>;
5937
5942
  readonly chrome: (key: ChromeKey, path?: string) => ElementRef;
5938
5943
  readonly seriesLabel: (series: string, path?: string) => ElementRef;
5939
5944
  readonly legend: (path?: string) => ElementRef;
@@ -5955,6 +5960,10 @@ type ElementEdit = {
5955
5960
  element: ElementRef;
5956
5961
  annotation: TextAnnotation;
5957
5962
  offset: AnnotationOffset;
5963
+ /** Resolved first-drag placement. Persist together with offset when supplied. */
5964
+ anchor?: TextAnnotation['anchor'];
5965
+ /** A moved annotation stays inline. */
5966
+ responsive?: false;
5958
5967
  } | {
5959
5968
  type: 'annotation-connector';
5960
5969
  element: ElementRef;
@@ -6062,16 +6071,20 @@ interface ChartEventHandlers {
6062
6071
  */
6063
6072
  onHighlightChange?: (values: string[]) => void;
6064
6073
  /** Called when an annotation element is clicked. */
6065
- onAnnotationClick?: (annotation: Annotation, event: MouseEvent) => void;
6066
- /** Called when a text annotation label is dragged to a new position. */
6074
+ onAnnotationClick?: (annotation: Annotation, event: MouseEvent, element: ElementRef) => void;
6075
+ /** @deprecated Use onEditTransaction to persist complete edits. */
6067
6076
  onAnnotationEdit?: (annotation: TextAnnotation, updatedOffset: AnnotationOffset) => void;
6068
6077
  /** Unified edit callback. Fires for any spec-modifying edit (repositioning, deletion, text editing). */
6069
6078
  onEdit?: (edit: ElementEdit) => void;
6079
+ /** Optional source revision, stamped on emitted transactions. */
6080
+ revision?: string | number;
6081
+ /** Durable authored edits, applied atomically with applyEditTransaction. */
6082
+ onEditTransaction?: (transaction: EditTransaction) => void;
6070
6083
  /** Fired when an element is selected via click or programmatic select(). */
6071
6084
  onSelect?: (element: ElementRef) => void;
6072
6085
  /** Fired when the current element is deselected (click empty, Escape, or new selection replaces old). */
6073
6086
  onDeselect?: (element: ElementRef) => void;
6074
- /** Fired when inline text editing commits. Also flows through onEdit as a 'text-edit' event. */
6087
+ /** @deprecated Use onEditTransaction with a text set operation. */
6075
6088
  onTextEdit?: (element: ElementRef, oldText: string, newText: string) => void;
6076
6089
  /**
6077
6090
  * Fired when a "you draw it" (`youDrawIt`) drawing is revealed (button click
@@ -6084,6 +6097,98 @@ interface ChartEventHandlers {
6084
6097
  }>) => void;
6085
6098
  }
6086
6099
 
6100
+ type EditTransactionResult<T> = {
6101
+ ok: true;
6102
+ spec: T;
6103
+ inverse: EditTransaction;
6104
+ } | {
6105
+ ok: false;
6106
+ error: {
6107
+ opIndex: number;
6108
+ path: string;
6109
+ reason: string;
6110
+ };
6111
+ };
6112
+ /**
6113
+ * Apply an ordered transaction to a private copy, returning it only when every
6114
+ * operation validates. The original spec is never mutated, even on failure.
6115
+ * The inverse restores both values and optional containers created by add.
6116
+ */
6117
+ declare function applyEditTransaction<T>(spec: T, tx: EditTransaction): EditTransactionResult<T>;
6118
+
6119
+ /**
6120
+ * Per-mark-type encoding validation rules.
6121
+ *
6122
+ * Defines which encoding channels are required vs optional for each mark type.
6123
+ * The engine compiler uses these rules to validate specs at runtime (TypeScript
6124
+ * catches compile-time errors; these catch runtime JSON from Claude or APIs).
6125
+ */
6126
+
6127
+ /** Constraint on what field types are valid for an encoding channel. */
6128
+ interface ChannelRule {
6129
+ /** Whether this channel is required for the chart type. */
6130
+ required: boolean;
6131
+ /** Allowed field types. If empty, any field type is accepted. */
6132
+ allowedTypes: FieldType[];
6133
+ }
6134
+ /** Encoding rules for a single chart type: which channels are required/optional. */
6135
+ interface EncodingRule {
6136
+ x: ChannelRule;
6137
+ y: ChannelRule;
6138
+ x2?: ChannelRule;
6139
+ y2?: ChannelRule;
6140
+ color: ChannelRule;
6141
+ size: ChannelRule;
6142
+ opacity?: ChannelRule;
6143
+ strokeDash?: ChannelRule;
6144
+ text?: ChannelRule;
6145
+ tooltip?: ChannelRule;
6146
+ theta?: ChannelRule;
6147
+ detail: ChannelRule;
6148
+ }
6149
+ /**
6150
+ * Encoding rules per mark type.
6151
+ *
6152
+ * Defines which channels are required and what field types they accept.
6153
+ * The compiler uses this map to validate user specs at runtime.
6154
+ *
6155
+ * Key design decisions:
6156
+ * - line/area: x is temporal/ordinal (the axis), y is quantitative (the value)
6157
+ * - bar: covers both horizontal and vertical orientations, so both axes accept
6158
+ * all relevant types. The engine validates the combination later (one axis
6159
+ * must be quantitative).
6160
+ * - arc: no x axis; y is the value (quantitative), color is the category
6161
+ * - circle: y is the category, x is quantitative
6162
+ * - point: both axes are quantitative
6163
+ * - text/rule: fully optional positioning
6164
+ * - tick/rect: both axes required, any type
6165
+ * - beeswarm: both axes optional at the channel level; the compiler enforces
6166
+ * the combination (exactly one quantitative value axis, the other axis an
6167
+ * optional nominal/ordinal lane channel)
6168
+ * - waffle: no positional axes; y is the share value (quantitative, with
6169
+ * theta accepted as an alias like arc), color is the category
6170
+ * - calendar: x is the daily date (temporal), color the per-day value
6171
+ * (quantitative); no y channel (the calendar owns its own geometry)
6172
+ * - parliament: no positional axes; theta (aliased to y) is the seat count
6173
+ * (quantitative), color the party
6174
+ */
6175
+ declare const MARK_ENCODING_RULES: Record<MarkType, EncodingRule>;
6176
+ /** Encoding rule for a single graph visual channel. */
6177
+ interface GraphChannelRule {
6178
+ /** Whether this channel is required. */
6179
+ required: boolean;
6180
+ /** Allowed field types. Empty means any type. */
6181
+ allowedTypes: FieldType[];
6182
+ }
6183
+ /**
6184
+ * Encoding rules for graph visualizations.
6185
+ *
6186
+ * All graph encoding channels are optional since a graph can be rendered
6187
+ * with just nodes and edges (uniform appearance). Encoding channels add
6188
+ * visual differentiation based on data fields.
6189
+ */
6190
+ declare const GRAPH_ENCODING_RULES: Record<string, GraphChannelRule>;
6191
+
6087
6192
  /**
6088
6193
  * Color blindness simulation and palette distinguishability checks.
6089
6194
  *
@@ -6316,7 +6421,10 @@ declare function adaptForLightLineStroke(color: string): string;
6316
6421
  /**
6317
6422
  * The default theme. All fields are required and fully specified.
6318
6423
  */
6319
- declare const DEFAULT_THEME: Theme;
6424
+ declare const DEFAULT_THEME: ThemeBase;
6425
+
6426
+ /** Merge authored theme layers with v8 shallow precedence (later layers win). */
6427
+ declare function mergeThemeConfig(base: ThemeConfig | undefined, override: ThemeConfig | undefined): ThemeConfig | undefined;
6320
6428
 
6321
6429
  /**
6322
6430
  * Named theme presets built on the design token system.
@@ -6386,7 +6494,7 @@ declare const legacyEditorial: ThemeConfig;
6386
6494
  * @param base - Base theme to merge onto. Defaults to DEFAULT_THEME.
6387
6495
  * @returns A ResolvedTheme with all properties guaranteed.
6388
6496
  */
6389
- declare function resolveTheme(userTheme?: ThemeConfig, base?: Theme): ResolvedTheme;
6497
+ declare function resolveTheme(userTheme?: ThemeConfig, base?: ThemeBase): ResolvedTheme;
6390
6498
 
6391
6499
  /**
6392
6500
  * Chrome layout computation.
@@ -6411,15 +6519,12 @@ declare function resolveTheme(userTheme?: ThemeConfig, base?: Theme): ResolvedTh
6411
6519
  * the last line drifts outside the band that was reserved for it.
6412
6520
  */
6413
6521
  declare const FOOTNOTE_LINE_HEIGHT = 1.3;
6522
+ /** Internal compiler arithmetic and compatibility fallback for hand-built layouts. */
6523
+ declare function computeNoteBandHeight(input: number | Pick<ResolvedChrome, 'noteBandHeight' | 'footnotes' | 'seriesSummary'>, theme: ResolvedTheme): number;
6414
6524
  /**
6415
- * Vertical space a footnote list of `count` lines occupies below the plot.
6416
- *
6417
- * Single source of truth, deliberately: the engine reserves this band in the
6418
- * bottom margin, the chrome renderer shifts the source row down by it, and the
6419
- * brand watermark shifts by it too. When those three disagree the footnotes
6420
- * land on top of the watermark, which is exactly the bug this centralizes away.
6525
+ * @deprecated Read layout.chrome.noteBandHeight. The numeric signature remains compatible in 8.x.
6421
6526
  */
6422
- declare function footnoteBandHeight(count: number, theme: ResolvedTheme): number;
6527
+ declare function footnoteBandHeight(input: number | Pick<ResolvedChrome, 'noteBandHeight' | 'footnotes' | 'seriesSummary'>, theme: ResolvedTheme): number;
6423
6528
  /**
6424
6529
  * Compute resolved chrome layout from a Chrome spec and resolved theme.
6425
6530
  *
@@ -6915,7 +7020,7 @@ interface ChartBuilderOptions {
6915
7020
  responsive?: boolean;
6916
7021
  /** Theme configuration overrides. */
6917
7022
  theme?: ThemeConfig;
6918
- /** Dark mode behavior. */
7023
+ /** @deprecated Set darkMode on the mount instead; this option has no effect. */
6919
7024
  darkMode?: DarkMode;
6920
7025
  }
6921
7026
  /** Options for the dataTable builder. */
@@ -6928,7 +7033,7 @@ interface TableBuilderOptions {
6928
7033
  chrome?: Chrome;
6929
7034
  /** Theme configuration overrides. */
6930
7035
  theme?: ThemeConfig;
6931
- /** Dark mode behavior. */
7036
+ /** @deprecated Set darkMode on the mount instead; this option has no effect. */
6932
7037
  darkMode?: DarkMode;
6933
7038
  /** Enable client-side search/filter. */
6934
7039
  search?: boolean;
@@ -6938,7 +7043,9 @@ interface TableBuilderOptions {
6938
7043
  };
6939
7044
  /** Stick the first column during horizontal scroll. */
6940
7045
  stickyFirstColumn?: boolean;
6941
- /** Compact mode. */
7046
+ /** Row density. */
7047
+ density?: TableDensity;
7048
+ /** @deprecated Use density. */
6942
7049
  compact?: boolean;
6943
7050
  /** Whether the table adapts to container width. */
6944
7051
  responsive?: boolean;
@@ -7059,7 +7166,7 @@ interface TileMapBuilderOptions {
7059
7166
  legend?: LegendConfig;
7060
7167
  /** Theme overrides. */
7061
7168
  theme?: ThemeConfig;
7062
- /** Dark mode setting. */
7169
+ /** @deprecated Set darkMode on the mount instead; this option has no effect. */
7063
7170
  darkMode?: DarkMode;
7064
7171
  /** Whether to show the watermark. */
7065
7172
  watermark?: boolean;
@@ -7094,6 +7201,12 @@ declare function tileMap(data: Record<string, number | string | null> | DataRow[
7094
7201
  */
7095
7202
  declare function deepMergeSpec(target: any, source: any): any;
7096
7203
 
7204
+ /** Matches layer compilation's parent-or-first-leaf annotation ownership. */
7205
+ declare function annotationSource(spec: unknown): {
7206
+ annotations: Annotation[];
7207
+ path: string;
7208
+ };
7209
+
7097
7210
  /** Deterministic, bounded motion shared by rendering and timestamp-based export. */
7098
7211
 
7099
7212
  interface MotionPhase {
@@ -7142,4 +7255,4 @@ declare const CSS_TOKEN_ROOT_SELECTORS: readonly string[];
7142
7255
  declare const CSS_TOKENS: readonly CssTokenDef[];
7143
7256
  declare function cssTokenDefault(name: string, mode: 'light' | 'dark'): string;
7144
7257
 
7145
- export { type A11yConfig, type A11yMetadata, ACHROMATIC_RAMP, AXIS_TITLE_GAP, AXIS_TITLE_OFFSET_COMPACT, AXIS_TITLE_OFFSET_DEFAULT, AXIS_TITLE_TRAILING_PAD, type AggregateOp, type AggregateTransform, type AnimationConfig, type AnimationEase, type AnimationPhaseConfig, type AnimationPreset, type AnimationSpec, type AnimationStagger, type Annotation, type AnnotationAnchor, type AnnotationFootnote, type AnnotationOffset, type AnnotationPosition, type ArcEncoding, type ArcMark, type AreaEncoding, type AreaMark, type AxisConfig, type AxisLabelDensity, type AxisLayout, type AxisTick, BRAND_FONT_SIZE, BRAND_MIN_WIDTH, BRAND_RESERVE_WIDTH, BREAKPOINT_COMPACT_MAX, BREAKPOINT_MEDIUM_MAX, type BarColumnConfig, type BarEncoding, type BarListEncoding, type BarListLayout, type BarListRowMark, type BarListSpec, type BarListSpecWithoutData, type BarTableCell, type BaseLegendLayout, type BeeswarmEncoding, type BinParams, type BinTransform, type Breakpoint, CATEGORICAL_EXTENDED_PALETTE, CATEGORICAL_FILL_PALETTE, CATEGORICAL_FILL_PALETTE_DARK, CATEGORICAL_PALETTE, CATEGORICAL_PALETTE_DARK, COMPACT_MAX_X_TICKS, COMPACT_WIDTH, CSS_TOKENS, CSS_TOKEN_ROOT_SELECTORS, type CalculateExpression, type CalculateTransform, type CalendarEncoding, type CategoricalLegendLayout, type CategoricalPalette, type CategoryColorsConfig, type CategoryTableCell, type CellStyle, type ChannelRule, type ChartBuilderOptions, type ChartEventHandlers, type ChartLayout, type ChartSpec, type ChartSpecOverride, type ChartSpecWithoutData, type Chrome, type ChromeDefaults, type ChromeEconomy, type ChromeKey, type ChromeMode, type ChromeText, type ChromeTextStyle, type ChromeThemeOverride, type CircleEncoding, type ColorBlindnessType, type ColumnConfig, type CompileOptions, type CompileTableOptions, type CompileWarning, type CompositionRecommendation, type Condition, type ConditionalValueDef, type ConnectorConfig, type ConnectorType, type ContinuousLegendBin, type ContinuousLegendLayout, type ContinuousLegendTick, type CssTokenDef, DEFAULT_THEME, DIVERGING_PALETTES, type DarkMode, type DataRow, type DatasetBinding, type DateGranularity, type DeltaColumnConfig, type DeltaTableCell, type DensityEncoding, type DensityTransform, type DesignDiagnostic, type DesignQuestion, type Display, type DivergingPalette, EXTENDED_OFFSET_STRATEGIES, type ElementEdit, type ElementRef, type Encoding, type EncodingChannel, type EncodingRule, type EndpointLabelContent, type EndpointLabelEntry, type EndpointLabelsConfig, type EndpointLabelsLayout, FLUID_SPRING, FOOTNOTE_LINE_HEIGHT, type FacetChannel, type FacetLayout, type FacetPanelLayout, type FieldFormatContext, type FieldMetadata, type FieldPredicate, type FieldRef, type FieldType, type FillPatternType, type FilterPredicate, type FilterTransform, type FlagTableCell, type FoldTransform, GRAPH_ENCODING_RULES, type GeoMapBorders, type GeoMapEncoding, type GeoMapFeatureMark, type GeoMapFocus, type GeoMapFocusLayout, type GeoMapGeo, type GeoMapLayout, type GeoMapPointMark, type GeoMapPointsLayer, type GeoMapProjection, type GeoMapSpec, type GeoMapSpecWithoutData, type GeoMapZoomConfig, type GradientColorStop, type GradientDef, type GradientLegendLayout, type GradientStop, type GraphAnimationConfig, type GraphAnimationSpec, type GraphChannelRule, type GraphEdge, type GraphEdgeLayout, type GraphEncoding, type GraphEncodingChannel, type GraphInteractionConfig, type GraphLayout, type GraphLayoutConfig, type GraphNode, type GraphNodeLayout, type GraphSpec, type GraphSpecWithoutData, type Gridline, HEIGHT_CRAMPED_MAX, HEIGHT_MINIMAL_MAX, HEIGHT_NO_GRID_MAX, HEIGHT_SHORT_MAX, HPAD_COMPACT_FRACTION, HPAD_COMPACT_MIN, type HeatmapColumnConfig, type HeatmapTableCell, type HeightClass, type HistogramEncoding, type ImageColumnConfig, type ImageTableCell, type JoinAggregateTransform, LABEL_GAP_COMPACT, LABEL_GAP_DEFAULT, LABEL_GAP_NARROW_MAX, type LabelCandidate, type LabelConfig, type LabelDensity, type LabelMode, type LabelPriority, type LabelSpec, type LayerSpec, type LayoutStrategy, type LegendChannel, type LegendConfig, type LegendEntry, type LegendEntryPosition, type LegendLayout, type LegendPosition, type LineEncoding, type LineMark, type LinearGradient, type LogicalAnd, type LogicalNot, type LogicalOr, type LollipopEncoding, MARK_DISPLAY_NAMES, MARK_ENCODING_RULES, MARK_TYPES, MAX_LEFT_LABEL_FRACTION_COMPACT, MAX_LEFT_LABEL_FRACTION_DEFAULT, MAX_LEFT_LABEL_FRACTION_MEDIUM, MAX_LEFT_LABEL_FRACTION_MEDIUM_MAX, MAX_SPRING_DURATION, MAX_SR_TABLE_ROWS, MOTION_REST_THRESHOLD, type Margins, type Mark, type MarkAria, type MarkDef, type MarkEvent, type MarkType, type MeasureTextFn, type Metric, type MotionPhase, type MotionSample, NARROW_VIEWPORT_MAX, type NeutralRamp, type NodeOverride, type NumberFormatter, OFFSET_STRATEGIES, type ObservationIdentity, type OffsetStrategy, type PaginationState, type ParliamentEncoding, type Point, type PointEncoding, type PointMark, type RadialGradient, type RangeAnnotation, type RangeEncoding, type ReaderObservation, type ReaderSelection, type Rect, type RectEncoding, type RectMark, type RefLineAnnotation, type RelativeTimeRef, type ResolveConfig, type ResolveMode, type ResolvedAnimation, type ResolvedAnimationPhase, type ResolvedAnnotation, type ResolvedChrome, type ResolvedChromeElement, type ResolvedChromeRule, type ResolvedColumn, type ResolvedFillPattern, type ResolvedLabel, type ResolvedMetricBar, type ResolvedMetricCell, type ResolvedSeriesSearch, type ResolvedTheme, type ResolvedThemeColors, type ResolvedYouDrawIt, type ResponsiveConfig, type RuleMarkLayout, SEQUENTIAL_PALETTES, SUPPORTED_SCHEME_NAMES, type SankeyEncoding, type SankeyLayout, type SankeyLinkColor, type SankeyLinkMark, type SankeyNodeAlign, type SankeyNodeMark, type SankeySpec, type SankeySpecWithoutData, type ScaleConfig, type ScaleInvert, type ScaleType, type SequentialPalette, type SeriesSearchConfig, type SeriesStrategy, type SeriesStyle, type SizeLegendCircle, type SizeLegendLayout, type SortByField, type SortState, type SparklineColumnConfig, type SparklineData, type SparklineTableCell, type SpecPatch, type SpringConfig, type StoredVizSpec, TICK_LABEL_OFFSET, TICK_LINE_HEIGHT_FACTOR, TOP_PAD_EXTRA_NARROW, TOP_PAD_NARROW_MAX, type TableBuilderOptions, type TableCell, type TableCellBase, type TableDensity, type TableLayout, type TableRow, type TableSpec, type TableSpecWithoutData, type TableTotalRow, type TextAnnotation, type TextEncoding, type TextMarkLayout, type TextStyle, type TextTableCell, type Theme, type ThemeChromeDefaults, type ThemeColors, type ThemeConfig, type ThemeFontSizes, type ThemeFontWeights, type ThemeFonts, type ThemeRule, type ThemeSpacing, type TickEncoding, type TickMarkLayout, type TileMapBuilderOptions, type TileMapEncoding, type TileMapLayout, type TileMapPalette, type TileMapSpec, type TileMapSpecWithoutData, type TileMapTileMark, type TimeUnit, type TimeUnitTransform, type TokenValue, type TooltipContent, type TooltipField, type Transform, type UpdatePhaseConfig, type ValueDef, type VizSpec, type WaffleEncoding, type WindowFieldDef, type WindowOp, type WindowSortField, type WindowTransform, type XAxisExtentInput, X_AXIS_BAND_HEIGHT, X_AXIS_ROTATED_EXTENT_CAP, X_AXIS_TITLE_BAND, X_AXIS_TITLE_BAND_ROTATED, type YouDrawItConfig, type YouDrawItSample, type YouDrawItYInvert, abbreviateNumber, adaptColorForDarkMode, adaptForLightLineStroke, adaptTheme, areaChart, axisTitleOffset, barChart, broadsheet, buildCompactStepFormatter, buildD3Formatter, buildTemporalFormatter, checkPaletteDistinguishability, clarity, columnChart, computeChrome, computeFieldFormatContext, computeLabelBounds, computeXAxisExtentFromLabels, contrastRatio, cssTokenDefault, dataTable, deepMergeSpec, defaultNumberFormatter, deriveNeutralRamp, detectCollision, donutChart, dotChart, editorial, elementRef, essay, estimateTextWidth, findAccessibleColor, footnoteBandHeight, formatCurrency, formatDate, formatNumber, formatOrdinal, formatPercent, generateAltText, generateAriaLabels, generateDataTable, getAxisTitleOffset, getBreakpoint, getHeightClass, getLayoutStrategy, getRepresentativeColor, heuristicMeasure, inferFieldType, isAxislessMark, isBarListSpec, isChartSpec, isConditionalDef, isEncodingChannel, isGeoMapSpec, isGradientDef, isGraphSpec, isLayerSpec, isOpaqueColor, isRangeAnnotation, isRefLineAnnotation, isSankeySpec, isTableSpec, isTextAnnotation, isTileMapSpec, isValueDef, isYearContext, legacyEditorial, lineChart, maxRotatedLabelWidth, meetsAA, motionCSS, overlapArea, pickLabelColor, pieChart, resolveChromeEconomy, resolveCollisions, resolveMarkDef, resolveMarkType, resolveMeasurer, resolveNumberFormatter, resolveSchemeName, resolveTheme, sampleMotion, scatterChart, simulateColorBlindness, springDuration, terminal, textAscent, tileMap, truncateRotatedLabel, truncateToWidth, wire, wrapText };
7258
+ export { type A11yConfig, type A11yMetadata, ACHROMATIC_RAMP, AXIS_TITLE_GAP, AXIS_TITLE_OFFSET_COMPACT, AXIS_TITLE_OFFSET_DEFAULT, AXIS_TITLE_TRAILING_PAD, type AggregateOp, type AggregateTransform, type AnimationConfig, type AnimationEase, type AnimationPhaseConfig, type AnimationPreset, type AnimationSpec, type AnimationStagger, type Annotation, type AnnotationAnchor, type AnnotationFootnote, type AnnotationOffset, type AnnotationPosition, type ArcEncoding, type ArcMark, type AreaEncoding, type AreaMark, type AxisConfig, type AxisLabelDensity, type AxisLayout, type AxisTick, BRAND_FONT_SIZE, BRAND_MIN_WIDTH, BRAND_RESERVE_WIDTH, BREAKPOINT_COMPACT_MAX, BREAKPOINT_MEDIUM_MAX, type BarColumnConfig, type BarEncoding, type BarListEncoding, type BarListLayout, type BarListRowMark, type BarListSpec, type BarListSpecWithoutData, type BarTableCell, type BaseLegendLayout, type BeeswarmEncoding, type BinParams, type BinTransform, type Breakpoint, CATEGORICAL_EXTENDED_PALETTE, CATEGORICAL_FILL_PALETTE, CATEGORICAL_FILL_PALETTE_DARK, CATEGORICAL_PALETTE, CATEGORICAL_PALETTE_DARK, COMPACT_MAX_X_TICKS, COMPACT_WIDTH, CSS_TOKENS, CSS_TOKEN_ROOT_SELECTORS, type CalculateExpression, type CalculateTransform, type CalendarEncoding, type CategoricalLegendLayout, type CategoricalPalette, type CategoryColorsConfig, type CategoryTableCell, type CellStyle, type ChannelRule, type ChartBuilderOptions, type ChartEventHandlers, type ChartLayout, type ChartSpec, type ChartSpecOverride, type ChartSpecWithoutData, type Chrome, type ChromeDefaults, type ChromeEconomy, type ChromeKey, type ChromeMode, type ChromeText, type ChromeTextStyle, type ChromeThemeOverride, type CircleEncoding, type ColorBlindnessType, type ColumnConfig, type CompileOptions, type CompileTableOptions, type CompileWarning, type CompositionRecommendation, type Condition, type ConditionalValueDef, type ConnectorConfig, type ConnectorType, type ContinuousLegendBin, type ContinuousLegendLayout, type ContinuousLegendTick, type CssTokenDef, DEFAULT_THEME, DIVERGING_PALETTES, type DarkMode, type DataRow, type DatasetBinding, type DateGranularity, type DeltaColumnConfig, type DeltaTableCell, type DensityEncoding, type DensityTransform, type DesignDiagnostic, type DesignQuestion, type Display, type DivergingPalette, EXTENDED_OFFSET_STRATEGIES, type EditOp, type EditTransaction, type EditTransactionResult, type ElementEdit, type ElementRef, type Encoding, type EncodingChannel, type EncodingRule, type EndpointLabelContent, type EndpointLabelEntry, type EndpointLabelsConfig, type EndpointLabelsLayout, FLUID_SPRING, FOOTNOTE_LINE_HEIGHT, type FacetChannel, type FacetLayout, type FacetPanelLayout, type FieldFormatContext, type FieldMetadata, type FieldPredicate, type FieldRef, type FieldType, type FillPatternType, type FilterPredicate, type FilterTransform, type FlagTableCell, type FoldTransform, GRAPH_ENCODING_RULES, type GeoMapBorders, type GeoMapEncoding, type GeoMapFeatureMark, type GeoMapFocus, type GeoMapFocusLayout, type GeoMapGeo, type GeoMapLayout, type GeoMapPointMark, type GeoMapPointsLayer, type GeoMapProjection, type GeoMapSpec, type GeoMapSpecWithoutData, type GeoMapZoomConfig, type GradientColorStop, type GradientDef, type GradientLegendLayout, type GradientStop, type GraphAnimationConfig, type GraphAnimationSpec, type GraphChannelRule, type GraphEdge, type GraphEdgeLayout, type GraphEncoding, type GraphEncodingChannel, type GraphInteractionConfig, type GraphLayout, type GraphLayoutConfig, type GraphNode, type GraphNodeLayout, type GraphSpec, type GraphSpecWithoutData, type Gridline, HEIGHT_CRAMPED_MAX, HEIGHT_MINIMAL_MAX, HEIGHT_NO_GRID_MAX, HEIGHT_SHORT_MAX, HPAD_COMPACT_FRACTION, HPAD_COMPACT_MIN, type HeatmapColumnConfig, type HeatmapTableCell, type HeightClass, type HistogramEncoding, type ImageColumnConfig, type ImageTableCell, type JoinAggregateTransform, LABEL_GAP_COMPACT, LABEL_GAP_DEFAULT, LABEL_GAP_NARROW_MAX, type LabelCandidate, type LabelConfig, type LabelDensity, type LabelMode, type LabelPriority, type LabelSpec, type LayerSpec, type LayoutStrategy, type LegendChannel, type LegendConfig, type LegendEntry, type LegendEntryPosition, type LegendLayout, type LegendPosition, type LineEncoding, type LineMark, type LinearGradient, type LogicalAnd, type LogicalNot, type LogicalOr, type LollipopEncoding, MARK_DISPLAY_NAMES, MARK_ENCODING_RULES, MARK_TYPES, MAX_LEFT_LABEL_FRACTION_COMPACT, MAX_LEFT_LABEL_FRACTION_DEFAULT, MAX_LEFT_LABEL_FRACTION_MEDIUM, MAX_LEFT_LABEL_FRACTION_MEDIUM_MAX, MAX_SPRING_DURATION, MAX_SR_TABLE_ROWS, MOTION_REST_THRESHOLD, type Margins, type Mark, type MarkAria, type MarkDef, type MarkEvent, type MarkType, type MeasureTextFn, type Metric, type MotionPhase, type MotionSample, NARROW_VIEWPORT_MAX, type NeutralRamp, type NodeOverride, type NumberFormatter, OFFSET_STRATEGIES, type ObservationIdentity, type OffsetStrategy, type PaginationState, type ParliamentEncoding, type Point, type PointEncoding, type PointMark, type RadialGradient, type RangeAnnotation, type RangeEncoding, type ReaderObservation, type ReaderSelection, type Rect, type RectEncoding, type RectMark, type RefLineAnnotation, type RelativeTimeRef, type ResolveConfig, type ResolveMode, type ResolvedAnimation, type ResolvedAnimationPhase, type ResolvedAnnotation, type ResolvedChrome, type ResolvedChromeElement, type ResolvedChromeRule, type ResolvedColumn, type ResolvedFillPattern, type ResolvedLabel, type ResolvedMetricBar, type ResolvedMetricCell, type ResolvedSeriesSearch, type ResolvedTheme, type ResolvedThemeColors, type ResolvedYouDrawIt, type ResponsiveConfig, type RuleMarkLayout, SEQUENTIAL_PALETTES, SUPPORTED_SCHEME_NAMES, type SankeyEncoding, type SankeyLayout, type SankeyLinkColor, type SankeyLinkMark, type SankeyNodeAlign, type SankeyNodeMark, type SankeySpec, type SankeySpecWithoutData, type ScaleConfig, type ScaleInvert, type ScaleType, type SequentialPalette, type SeriesSearchConfig, type SeriesStrategy, type SeriesStyle, type SizeLegendCircle, type SizeLegendLayout, type SortByField, type SortState, type SparklineColumnConfig, type SparklineData, type SparklineTableCell, type SpecPatch, type SpringConfig, type StoredVizSpec, TICK_LABEL_OFFSET, TICK_LINE_HEIGHT_FACTOR, TOP_PAD_EXTRA_NARROW, TOP_PAD_NARROW_MAX, type TableBuilderOptions, type TableCell, type TableCellBase, type TableDensity, type TableLayout, type TableRow, type TableSpec, type TableSpecWithoutData, type TableTotalRow, type TextAnnotation, type TextEncoding, type TextMarkLayout, type TextStyle, type TextTableCell, type Theme, type ThemeChromeDefaults, type ThemeColors, type ThemeConfig, type ThemeFontSizes, type ThemeFontWeights, type ThemeFonts, type ThemeRule, type ThemeSpacing, type TickEncoding, type TickMarkLayout, type TileMapBuilderOptions, type TileMapEncoding, type TileMapLayout, type TileMapPalette, type TileMapSpec, type TileMapSpecWithoutData, type TileMapTileMark, type TimeUnit, type TimeUnitTransform, type TokenValue, type TooltipContent, type TooltipField, type Transform, type UpdatePhaseConfig, type ValueDef, type VizSpec, type WaffleEncoding, type WindowFieldDef, type WindowOp, type WindowSortField, type WindowTransform, type XAxisExtentInput, X_AXIS_BAND_HEIGHT, X_AXIS_ROTATED_EXTENT_CAP, X_AXIS_TITLE_BAND, X_AXIS_TITLE_BAND_ROTATED, type YouDrawItConfig, type YouDrawItSample, type YouDrawItYInvert, abbreviateNumber, adaptColorForDarkMode, adaptForLightLineStroke, adaptTheme, annotationSource, applyEditTransaction, areaChart, axisTitleOffset, barChart, broadsheet, buildCompactStepFormatter, buildD3Formatter, buildTemporalFormatter, checkPaletteDistinguishability, clarity, columnChart, computeChrome, computeFieldFormatContext, computeLabelBounds, computeNoteBandHeight, computeXAxisExtentFromLabels, contrastRatio, cssTokenDefault, dataTable, deepMergeSpec, defaultNumberFormatter, deriveNeutralRamp, detectCollision, donutChart, dotChart, editorial, elementRef, essay, estimateTextWidth, findAccessibleColor, footnoteBandHeight, formatCurrency, formatDate, formatNumber, formatOrdinal, formatPercent, generateAltText, generateAriaLabels, generateDataTable, getAxisTitleOffset, getBreakpoint, getHeightClass, getLayoutStrategy, getRepresentativeColor, heuristicMeasure, inferFieldType, isAxislessMark, isBarListSpec, isChartSpec, isConditionalDef, isEncodingChannel, isGeoMapSpec, isGradientDef, isGraphSpec, isLayerSpec, isOpaqueColor, isRangeAnnotation, isRefLineAnnotation, isSankeySpec, isTableSpec, isTextAnnotation, isTileMapSpec, isValueDef, isYearContext, legacyEditorial, lineChart, maxRotatedLabelWidth, meetsAA, mergeThemeConfig, motionCSS, overlapArea, pickLabelColor, pieChart, resolveChromeEconomy, resolveCollisions, resolveMarkDef, resolveMarkType, resolveMeasurer, resolveNumberFormatter, resolveSchemeName, resolveTheme, sampleMotion, scatterChart, simulateColorBlindness, springDuration, terminal, textAscent, tileMap, truncateRotatedLabel, truncateToWidth, wire, wrapText };