svelteplot 0.2.10 → 0.3.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.
Files changed (52) hide show
  1. package/dist/Plot.svelte +2 -1
  2. package/dist/core/Plot.svelte +35 -24
  3. package/dist/marks/Area.svelte +13 -3
  4. package/dist/marks/AreaX.svelte +7 -3
  5. package/dist/marks/AreaX.svelte.d.ts +1 -6
  6. package/dist/marks/AreaY.svelte +7 -2
  7. package/dist/marks/AreaY.svelte.d.ts +1 -9
  8. package/dist/marks/Arrow.svelte +24 -7
  9. package/dist/marks/AxisX.svelte +19 -20
  10. package/dist/marks/AxisX.svelte.d.ts +1 -4
  11. package/dist/marks/AxisY.svelte +19 -20
  12. package/dist/marks/AxisY.svelte.d.ts +1 -4
  13. package/dist/marks/BarX.svelte +16 -2
  14. package/dist/marks/BarY.svelte +17 -3
  15. package/dist/marks/BoxX.svelte +25 -9
  16. package/dist/marks/BoxX.svelte.d.ts +3 -2
  17. package/dist/marks/BoxY.svelte +22 -10
  18. package/dist/marks/BoxY.svelte.d.ts +3 -3
  19. package/dist/marks/Brush.svelte +30 -10
  20. package/dist/marks/BrushX.svelte +8 -2
  21. package/dist/marks/BrushX.svelte.d.ts +1 -1
  22. package/dist/marks/BrushY.svelte +8 -2
  23. package/dist/marks/BrushY.svelte.d.ts +1 -1
  24. package/dist/marks/Cell.svelte +16 -2
  25. package/dist/marks/ColorLegend.svelte +2 -2
  26. package/dist/marks/Dot.svelte +9 -5
  27. package/dist/marks/Frame.svelte +23 -4
  28. package/dist/marks/Geo.svelte +14 -4
  29. package/dist/marks/Graticule.svelte +15 -5
  30. package/dist/marks/GridX.svelte +16 -2
  31. package/dist/marks/GridY.svelte +16 -2
  32. package/dist/marks/Line.svelte +22 -8
  33. package/dist/marks/Link.svelte +12 -4
  34. package/dist/marks/Pointer.svelte +12 -3
  35. package/dist/marks/Rect.svelte +16 -2
  36. package/dist/marks/RectX.svelte +16 -2
  37. package/dist/marks/RectY.svelte +16 -2
  38. package/dist/marks/RuleX.svelte +15 -2
  39. package/dist/marks/RuleY.svelte +15 -2
  40. package/dist/marks/Sphere.svelte +13 -2
  41. package/dist/marks/Spike.svelte +21 -11
  42. package/dist/marks/Text.svelte +22 -4
  43. package/dist/marks/TickX.svelte +15 -2
  44. package/dist/marks/TickY.svelte +15 -2
  45. package/dist/marks/Vector.svelte +13 -5
  46. package/dist/transforms/jitter.js +3 -3
  47. package/dist/transforms/sort.d.ts +2 -2
  48. package/dist/types.d.ts +227 -75
  49. package/dist/ui/ExamplesGrid.svelte +1 -1
  50. package/dist/ui/Slider.svelte +1 -1
  51. package/dist/ui/Slider.svelte.d.ts +1 -1
  52. package/package.json +120 -121
@@ -24,10 +24,23 @@
24
24
  DataRecord,
25
25
  BaseMarkProps,
26
26
  ConstantAccessor,
27
- ChannelAccessor
27
+ ChannelAccessor,
28
+ PlotDefaults
28
29
  } from '../types.js';
29
30
 
30
- let { data = [{}], class: className = null, ...options }: RuleXMarkProps = $props();
31
+ let markProps: RuleXMarkProps = $props();
32
+ const DEFAULTS = {
33
+ ...getContext<PlotDefaults>('svelteplot/_defaults').rule,
34
+ ...getContext<PlotDefaults>('svelteplot/_defaults').ruleX
35
+ };
36
+ const {
37
+ data = [{}],
38
+ class: className = '',
39
+ ...options
40
+ }: RuleXMarkProps = $derived({
41
+ ...DEFAULTS,
42
+ ...markProps
43
+ });
31
44
 
32
45
  const { getPlotState } = getContext<PlotContext>('svelteplot');
33
46
  const plot = $derived(getPlotState());
@@ -24,10 +24,23 @@
24
24
  DataRecord,
25
25
  BaseMarkProps,
26
26
  ConstantAccessor,
27
- ChannelAccessor
27
+ ChannelAccessor,
28
+ PlotDefaults
28
29
  } from '../types.js';
29
30
 
30
- let { data = [{}], class: className = null, ...options }: RuleYMarkProps = $props();
31
+ let markProps: RuleYMarkProps = $props();
32
+ const DEFAULTS = {
33
+ ...getContext<PlotDefaults>('svelteplot/_defaults').rule,
34
+ ...getContext<PlotDefaults>('svelteplot/_defaults').ruleY
35
+ };
36
+ const {
37
+ data = [{}],
38
+ class: className = '',
39
+ ...options
40
+ }: RuleYMarkProps = $derived({
41
+ ...DEFAULTS,
42
+ ...markProps
43
+ });
31
44
 
32
45
  const { getPlotState } = getContext<PlotContext>('svelteplot');
33
46
  const plot = $derived(getPlotState());
@@ -8,8 +8,19 @@
8
8
 
9
9
  <script lang="ts">
10
10
  import Geo from './Geo.svelte';
11
+ import { getContext } from 'svelte';
12
+ import type { PlotDefaults } from '../types.js';
11
13
 
12
- let { ...args }: SphereMarkProps = $props();
14
+ let markProps: SphereMarkProps = $props();
15
+
16
+ const DEFAULTS = {
17
+ ...getContext<PlotDefaults>('svelteplot/_defaults').sphere
18
+ };
19
+
20
+ const { ...options }: SphereMarkProps = $derived({
21
+ ...DEFAULTS,
22
+ ...markProps
23
+ });
13
24
  </script>
14
25
 
15
- <Geo data={[{ type: 'Sphere' }]} {...args} geoType="sphere" />
26
+ <Geo data={[{ type: 'Sphere' }]} {...options} geoType="sphere" />
@@ -8,16 +8,26 @@
8
8
 
9
9
  <script lang="ts">
10
10
  import Vector, { type VectorMarkProps } from './Vector.svelte';
11
- let { data = [{}], ...options }: SpikeMarkProps = $props();
11
+ import type { PlotDefaults } from '../types.js';
12
+ import { getContext } from 'svelte';
13
+
14
+ let markProps: SpikeMarkProps = $props();
15
+
16
+ const DEFAULTS = {
17
+ fill: 'currentColor',
18
+ fillOpacity: 0.3,
19
+ strokeWidth: 1,
20
+ anchor: 'start' as const,
21
+ stroke: 'currentColor',
22
+ sort: { channel: '-y' },
23
+ shape: 'spike' as const,
24
+ ...getContext<PlotDefaults>('svelteplot/_defaults').spike
25
+ };
26
+
27
+ const { data = [{}], ...options }: SpikeMarkProps = $derived({
28
+ ...DEFAULTS,
29
+ ...markProps
30
+ });
12
31
  </script>
13
32
 
14
- <Vector
15
- {data}
16
- fill={options.stroke || 'currentColor'}
17
- fillOpacity={0.3}
18
- strokeWidth={1}
19
- anchor="start"
20
- stroke="currentColor"
21
- sort={{ channel: '-y' }}
22
- {...options}
23
- shape="spike" />
33
+ <Vector {data} {...options} />
@@ -39,13 +39,30 @@
39
39
  DataRecord,
40
40
  BaseMarkProps,
41
41
  ConstantAccessor,
42
- ChannelAccessor
42
+ ChannelAccessor,
43
+ PlotDefaults
43
44
  } from '../types.js';
44
45
  import { resolveProp, resolveStyles } from '../helpers/resolve.js';
45
46
  import Mark from '../Mark.svelte';
46
47
  import { sort } from '../index.js';
47
48
 
48
- let { data = [{}], class: className = null, ...options }: TextMarkProps = $props();
49
+ const DEFAULTS = {
50
+ fontSize: 12,
51
+ fontWeight: 500,
52
+ strokeWidth: 1.6,
53
+ ...getContext<PlotDefaults>('svelteplot/_defaults').text
54
+ };
55
+
56
+ let markProps: TextMarkProps = $props();
57
+
58
+ const {
59
+ data = [{}],
60
+ class: className = '',
61
+ ...options
62
+ }: TextMarkProps = $derived({
63
+ ...DEFAULTS,
64
+ ...markProps
65
+ });
49
66
 
50
67
  const { getPlotState } = getContext<PlotContext>('svelteplot');
51
68
  let plot = $derived(getPlotState());
@@ -54,7 +71,7 @@
54
71
  bottom: 'auto',
55
72
  middle: 'central',
56
73
  top: 'hanging'
57
- };
74
+ } as const;
58
75
 
59
76
  const args = $derived(
60
77
  sort({
@@ -77,9 +94,10 @@
77
94
  'strokeOpacity',
78
95
  'fillOpacity'
79
96
  ]}
97
+ required={['x', 'y']}
80
98
  {...args}>
81
99
  {#snippet children({ mark, scaledData, usedScales })}
82
- <GroupMultiple class="text {className || null}" length={className ? 2 : args.data.length}>
100
+ <GroupMultiple class="text {className}" length={className ? 2 : args.data.length}>
83
101
  {#each scaledData as d, i (i)}
84
102
  {#if d.valid}
85
103
  {@const title = resolveProp(args.title, d.datum, '')}
@@ -31,7 +31,8 @@
31
31
  BaseMarkProps,
32
32
  ChannelAccessor,
33
33
  DataRow,
34
- FacetContext
34
+ FacetContext,
35
+ PlotDefaults
35
36
  } from '../types.js';
36
37
  import { recordizeX } from '../index.js';
37
38
  import { projectX, projectY } from '../helpers/scales.js';
@@ -41,7 +42,19 @@
41
42
  const { getPlotState } = getContext<PlotContext>('svelteplot');
42
43
  let plot = $derived(getPlotState());
43
44
 
44
- let { data = [{}], ...options }: TickXMarkProps = $props();
45
+ let markProps: TickXMarkProps = $props();
46
+ const DEFAULTS = {
47
+ ...getContext<PlotDefaults>('svelteplot/_defaults').tick,
48
+ ...getContext<PlotDefaults>('svelteplot/_defaults').tickX
49
+ };
50
+ const {
51
+ data = [{}],
52
+ class: className = '',
53
+ ...options
54
+ }: TickXMarkProps = $derived({
55
+ ...DEFAULTS,
56
+ ...markProps
57
+ });
45
58
 
46
59
  let args = $derived(recordizeX({ data, ...options }, { withIndex: false }));
47
60
 
@@ -32,7 +32,8 @@
32
32
  ChannelAccessor,
33
33
  DataRow,
34
34
  FacetContext,
35
- ConstantAccessor
35
+ ConstantAccessor,
36
+ PlotDefaults
36
37
  } from '../types.js';
37
38
  import { recordizeY } from '../index.js';
38
39
  import { projectX, projectY } from '../helpers/scales.js';
@@ -42,7 +43,19 @@
42
43
  const { getPlotState } = getContext<PlotContext>('svelteplot');
43
44
  let plot = $derived(getPlotState());
44
45
 
45
- let { data = [{}], ...options }: TickYMarkProps = $props();
46
+ let markProps: TickYMarkProps = $props();
47
+ const DEFAULTS = {
48
+ ...getContext<PlotDefaults>('svelteplot/_defaults').tick,
49
+ ...getContext<PlotDefaults>('svelteplot/_defaults').tickY
50
+ };
51
+ const {
52
+ data = [{}],
53
+ class: className = '',
54
+ ...options
55
+ }: TickYMarkProps = $derived({
56
+ ...DEFAULTS,
57
+ ...markProps
58
+ });
46
59
 
47
60
  let args = $derived(recordizeY({ data, ...options }, { withIndex: false }));
48
61
 
@@ -9,7 +9,8 @@
9
9
  BaseMarkProps,
10
10
  ConstantAccessor,
11
11
  ChannelAccessor,
12
- FacetContext
12
+ FacetContext,
13
+ PlotDefaults
13
14
  } from '../types.js';
14
15
 
15
16
  type D3Path = ReturnType<typeof import('d3-path').path>;
@@ -53,19 +54,26 @@
53
54
  const defaultRadius = 3.5;
54
55
 
55
56
  // The size of the arrowhead is proportional to its length, but we still allow
56
- // the relative size of the head to be controlled via the marks width option;
57
+ // the relative size of the head to be controlled via the mark's width option;
57
58
  // doubling the default radius will produce an arrowhead that is twice as big.
58
- // That said, well probably want a arrow with a fixed head size, too.
59
+ // That said, we'll probably want a arrow with a fixed head size, too.
59
60
  const wingRatio = defaultRadius * 5;
60
61
 
61
- let {
62
+ let markProps: VectorMarkProps = $props();
63
+ const DEFAULTS = {
64
+ ...getContext<PlotDefaults>('svelteplot/_defaults').vector
65
+ };
66
+ const {
62
67
  data = [{}],
63
68
  canvas,
64
69
  shape = 'arrow',
65
70
  anchor = 'middle',
66
71
  r = defaultRadius,
67
72
  ...options
68
- }: VectorMarkProps = $props();
73
+ }: VectorMarkProps = $derived({
74
+ ...DEFAULTS,
75
+ ...markProps
76
+ });
69
77
 
70
78
  const { getPlotState } = getContext<PlotContext>('svelteplot');
71
79
  const plot = $derived(getPlotState());
@@ -1,7 +1,7 @@
1
- import { resolveChannel } from '../helpers/resolve';
1
+ import { resolveChannel } from '../helpers/resolve.js';
2
2
  import { randomUniform, randomNormal } from 'd3-random';
3
- import { isDate } from '../helpers/typeChecks';
4
- import { durations, maybeTimeInterval, parseTimeInterval } from '../helpers/time';
3
+ import { isDate } from '../helpers/typeChecks.js';
4
+ import { durations, parseTimeInterval } from '../helpers/time.js';
5
5
  const JITTER_X = Symbol('jitterX');
6
6
  const JITTER_Y = Symbol('jitterY');
7
7
  export function jitterX({ data, ...channels }, options) {
@@ -4,10 +4,10 @@ export declare const IS_SORTED: unique symbol;
4
4
  export declare function sort({ data, ...channels }: TransformArg<DataRecord>, options?: {
5
5
  reverse?: boolean;
6
6
  }): {
7
- [IS_SORTED]: string | number | true | symbol | Date | ((d: DataRow) => import("../types.js").RawValue) | {
7
+ [IS_SORTED]: string | number | true | symbol | Date | ((d: DataRow) => import("../types.js").RawValue) | ((a: import("../types.js").RawValue, b: import("../types.js").RawValue) => number) | {
8
8
  channel: string;
9
9
  order?: "ascending" | "descending";
10
- } | ((a: import("../types.js").RawValue, b: import("../types.js").RawValue) => number);
10
+ };
11
11
  sort: null;
12
12
  filter?: import("../types.js").ConstantAccessor<boolean>;
13
13
  facet?: "auto" | "include" | "exclude" | undefined;
package/dist/types.d.ts CHANGED
@@ -4,6 +4,37 @@ import type { MouseEventHandler } from 'svelte/elements';
4
4
  import type { MarkerShape } from './marks/helpers/Marker.svelte';
5
5
  import type { Writable } from 'svelte/store';
6
6
  import type * as CSS from 'csstype';
7
+ import type { AreaMarkProps } from './marks/Area.svelte';
8
+ import type { ArrowMarkProps } from './marks/Arrow.svelte';
9
+ import type { AxisXMarkProps } from './marks/AxisX.svelte';
10
+ import type { AxisYMarkProps } from './marks/AxisY.svelte';
11
+ import type { BarXMarkProps } from './marks/BarX.svelte';
12
+ import type { CellMarkProps } from './marks/Cell.svelte';
13
+ import type { DotMarkProps } from './marks/Dot.svelte';
14
+ import type { FrameMarkProps } from './marks/Frame.svelte';
15
+ import type { GeoMarkProps } from './marks/Geo.svelte';
16
+ import type { GraticuleMarkProps } from './marks/Graticule.svelte';
17
+ import type { LineMarkProps } from './marks/Line.svelte';
18
+ import type { LinkMarkProps } from './marks/Link.svelte';
19
+ import type { RectMarkProps } from './marks/Rect.svelte';
20
+ import type { RuleXMarkProps } from './marks/RuleX.svelte';
21
+ import type { SphereMarkProps } from './marks/Sphere.svelte';
22
+ import type { SpikeMarkProps } from './marks/Spike.svelte';
23
+ import type { TextMarkProps } from './marks/Text.svelte';
24
+ import type { TickXMarkProps } from './marks/TickX.svelte';
25
+ import type { VectorMarkProps } from './marks/Vector.svelte';
26
+ import type { BrushMarkProps } from './marks/Brush.svelte';
27
+ import type { BrushXMarkProps } from './marks/BrushX.svelte';
28
+ import type { BrushYMarkProps } from './marks/BrushY.svelte';
29
+ import type { RectXMarkProps } from './marks/RectX.svelte';
30
+ import type { RectYMarkProps } from './marks/RectY.svelte';
31
+ import type { RuleYMarkProps } from './marks/RuleY.svelte';
32
+ import type { TickYMarkProps } from './marks/TickY.svelte';
33
+ import type { GridYMarkProps } from './marks/GridY.svelte';
34
+ import type { GridXMarkProps } from './marks/GridX.svelte';
35
+ import type { PointerMarkProps } from './marks/Pointer.svelte';
36
+ import type { BoxXMarkProps } from './marks/BoxX.svelte';
37
+ import type { BoxYMarkProps } from './marks/BoxY.svelte';
7
38
  export type MarkType = 'area' | 'arrow' | 'axisX' | 'axisY' | 'barX' | 'barY' | 'cell' | 'dot' | 'vector' | 'frame' | 'geo' | 'gridX' | 'gridY' | 'line' | 'rect' | 'regression' | 'ruleX' | 'ruleY' | 'swoopyArrow' | 'text' | 'tickX' | 'tickY';
8
39
  export type ScaleName = 'x' | 'y' | 'r' | 'color' | 'opacity' | 'length' | 'symbol' | 'fx' | 'fy' | 'projection';
9
40
  export type ScaleType = 'linear' | 'pow' | 'sqrt' | 'log' | 'symlog' | 'time' | 'point' | 'ordinal' | 'sequential' | 'band' | 'categorical' | 'cyclical' | 'threshold' | 'quantile-cont' | 'quantile' | 'quantize' | 'diverging' | 'diverging-log' | 'diverging-pow' | 'diverging-sqrt' | 'diverging-symlog';
@@ -300,51 +331,6 @@ export type PlotOptions = {
300
331
  */
301
332
  css: (d: string) => string | undefined;
302
333
  };
303
- export type PlotDefaults = {
304
- axisXAnchor: AxisXAnchor;
305
- axisYAnchor: AxisYAnchor;
306
- xTickSpacing: number;
307
- yTickSpacing: number;
308
- height: number;
309
- inset: number;
310
- colorScheme: ColorScheme | string[];
311
- categoricalColorScheme: ColorScheme | string[];
312
- dotRadius: number;
313
- /**
314
- * for computing the automatic height based on the number of
315
- * domain items in a point scale
316
- */
317
- pointScaleHeight: number;
318
- /**
319
- * for computing the automatic height based on the number of
320
- * domain items in a band scale
321
- */
322
- bandScaleHeight: number;
323
- /**
324
- * add frame to plots by default
325
- */
326
- frame: boolean;
327
- grid: boolean;
328
- axes: boolean;
329
- /**
330
- * initial width of the plot before measuring the actual width
331
- */
332
- initialWidth: number;
333
- /**
334
- * locale, used for automatic axis ticks
335
- */
336
- locale: string;
337
- /**
338
- * default number format for axis ticks
339
- */
340
- numberFormat: Intl.NumberFormatOptions;
341
- markerDotRadius: number;
342
- /**
343
- * fallback color to be used for null/NA
344
- */
345
- unknown: string;
346
- css: (d: string) => string | undefined;
347
- };
348
334
  export type GenericMarkOptions = Record<string | symbol, any>;
349
335
  export type DataRecord = Record<string | symbol, RawValue> & {
350
336
  ___orig___?: RawValue | [RawValue, RawValue];
@@ -492,27 +478,27 @@ export type LinkableMarkProps = {
492
478
  /**
493
479
  * if set, the mark element will be wrapped in a <a> link element
494
480
  */
495
- href: ConstantAccessor<string>;
481
+ href?: ConstantAccessor<string>;
496
482
  /**
497
483
  * the relationship of the target object to the link object (e.g. "noopener")
498
484
  * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/a#rel
499
485
  */
500
- rel: ConstantAccessor<string>;
486
+ rel?: ConstantAccessor<string>;
501
487
  /**
502
488
  * the link target mime type, e.g. "text/csv"
503
489
  * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/a#type
504
490
  */
505
- type: ConstantAccessor<string>;
491
+ type?: ConstantAccessor<string>;
506
492
  /**
507
493
  * the target of the link, e.g. "_blank" or "_self"
508
494
  * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/a#target
509
495
  */
510
- target: ConstantAccessor<'_self' | '_blank' | '_parent' | '_top' | string>;
496
+ target?: ConstantAccessor<'_self' | '_blank' | '_parent' | '_top' | string>;
511
497
  /**
512
498
  * if set to true, the link will be downloaded instead of navigating to it
513
499
  * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#download
514
500
  */
515
- download: ConstantAccessor<boolean>;
501
+ download?: ConstantAccessor<boolean>;
516
502
  [key: `data-sveltekit-${string}`]: string | boolean;
517
503
  };
518
504
  export type BaseMarkProps = Partial<{
@@ -618,11 +604,12 @@ export type AutoMarginStores = {
618
604
  autoMarginRight: Writable<Map<string, number>>;
619
605
  autoMarginBottom: Writable<Map<string, number>>;
620
606
  };
607
+ type IgnoreDefaults = 'data' | 'facet' | ChannelName | 'title' | 'automatic' | 'children';
621
608
  /**
622
609
  * these are the default options for the plot marks that can be set using
623
610
  * the 'svelteplot/defaults' context.
624
611
  */
625
- export type DefaultOptions = {
612
+ export type PlotDefaults = {
626
613
  /**
627
614
  * default plot height
628
615
  */
@@ -632,41 +619,32 @@ export type DefaultOptions = {
632
619
  */
633
620
  inset: number;
634
621
  /**
635
- * default tick line length
636
- */
637
- tickSize: number;
638
- /**
639
- * default padding between tick line and tick label
640
- */
641
- tickPadding: number;
642
- /**
643
- * default font size for tick labels
644
- */
645
- tickFontSize: number;
646
- /**
647
- * default anchor for x axis
622
+ * default color scheme
648
623
  */
649
- axisXAnchor: 'bottom' | 'top';
624
+ colorScheme: ColorScheme;
625
+ categoricalColorScheme: ColorScheme | string[];
650
626
  /**
651
- * default anchor for y axis
627
+ * fallback color to be used for null/NA
652
628
  */
653
- axisYAnchor: 'left' | 'right';
629
+ unknown: string;
654
630
  /**
655
- * default spacing between ticks in AxisX and GridX
631
+ * optional @emotion/css function to style the plot
656
632
  */
657
- xTickSpacing: number;
633
+ css: (d: string) => string | undefined;
658
634
  /**
659
- * default spacing between ticks in AxisY and GridY
635
+ * for computing the automatic height based on the number of
636
+ * domain items in a point scale
660
637
  */
661
- yTickSpacing: number;
638
+ pointScaleHeight: number;
662
639
  /**
663
- * default color scheme
640
+ * for computing the automatic height based on the number of
641
+ * domain items in a band scale
664
642
  */
665
- colorScheme: ColorScheme;
643
+ bandScaleHeight: number;
666
644
  /**
667
- * default step for graticule, in degrees
645
+ * initial width of the plot before measuring the actual width
668
646
  */
669
- graticuleStep: number;
647
+ initialWidth: number;
670
648
  /**
671
649
  * locale, used for automatic axis ticks
672
650
  */
@@ -679,6 +657,180 @@ export type DefaultOptions = {
679
657
  * default dot radius for line markers, used in dot, circle, and circle-stroke markers
680
658
  */
681
659
  markerDotRadius: number;
660
+ /**
661
+ * default props for area marks, applied to area, areaX, and areaY marks
662
+ */
663
+ area: Partial<Omit<AreaMarkProps, IgnoreDefaults>>;
664
+ /**
665
+ * default props for areaX marks
666
+ */
667
+ areaX: Partial<Omit<AreaMarkProps, IgnoreDefaults>>;
668
+ /**
669
+ * default props for areaY marks
670
+ */
671
+ areaY: Partial<Omit<AreaMarkProps, IgnoreDefaults>>;
672
+ /**
673
+ * default props for arrow marks
674
+ */
675
+ arrow: Partial<Omit<ArrowMarkProps, IgnoreDefaults>>;
676
+ /**
677
+ * default props for axis marks, applied to both axisX and axisY marks
678
+ */
679
+ axis: Partial<Omit<AxisXMarkProps, 'data' | 'facet' | ChannelName | 'facetAnchor' | 'labelAnchor' | 'anchor'> & {
680
+ implicit: boolean;
681
+ }>;
682
+ /**
683
+ * default props for axisX marks
684
+ */
685
+ axisX: Partial<Omit<AxisXMarkProps, IgnoreDefaults> & {
686
+ implicit: boolean;
687
+ }>;
688
+ /**
689
+ * default props for axisY marks
690
+ */
691
+ axisY: Partial<Omit<AxisYMarkProps, IgnoreDefaults> & {
692
+ implicit: boolean;
693
+ }>;
694
+ /**
695
+ * default props for bar marks, applied to both barX and barY marks
696
+ */
697
+ bar: Partial<Omit<BarXMarkProps, IgnoreDefaults>>;
698
+ /**
699
+ * default props for barX marks
700
+ */
701
+ barX: Partial<Omit<BarXMarkProps, IgnoreDefaults>>;
702
+ /**
703
+ * default props for barY marks
704
+ */
705
+ barY: Partial<Omit<BarXMarkProps, IgnoreDefaults>>;
706
+ /**
707
+ * default props for box marks, applied to boxX and boxY marks
708
+ */
709
+ box: Partial<Omit<BoxXMarkProps, IgnoreDefaults>>;
710
+ /**
711
+ * default props for boxX marks
712
+ */
713
+ boxX: Partial<Omit<BoxXMarkProps, IgnoreDefaults>>;
714
+ /**
715
+ * default props for boxY marks
716
+ */
717
+ boxY: Partial<Omit<BoxYMarkProps, IgnoreDefaults>>;
718
+ /**
719
+ * default props for brush marks, applied to brush, brushX and brushY marks
720
+ */
721
+ brush: Partial<Omit<BrushMarkProps, IgnoreDefaults | 'limitDimension'>>;
722
+ /**
723
+ * default props for brushX marks
724
+ */
725
+ brushX: Partial<Omit<BrushXMarkProps, IgnoreDefaults>>;
726
+ /**
727
+ * default props for brushY marks
728
+ */
729
+ brushY: Partial<Omit<BrushYMarkProps, IgnoreDefaults>>;
730
+ /**
731
+ * default props for cell marks
732
+ */
733
+ cell: Partial<Omit<CellMarkProps, IgnoreDefaults>>;
734
+ /**
735
+ * default props for dot marks
736
+ */
737
+ dot: Partial<Omit<DotMarkProps, IgnoreDefaults>>;
738
+ /**
739
+ * default props for frame marks
740
+ */
741
+ frame: Partial<FrameMarkProps & {
742
+ implicit: boolean;
743
+ }>;
744
+ /**
745
+ * default props for geo marks
746
+ */
747
+ geo: Partial<Omit<GeoMarkProps, IgnoreDefaults>>;
748
+ /**
749
+ * default props for graticule marks
750
+ */
751
+ graticule: Partial<Omit<GraticuleMarkProps, IgnoreDefaults>>;
752
+ /**
753
+ * default props for grid marks, applied to both gridX and gridY marks
754
+ */
755
+ grid: Partial<Omit<GridXMarkProps, IgnoreDefaults> & {
756
+ implicit: boolean;
757
+ }>;
758
+ /**
759
+ * default props for gridX marks
760
+ */
761
+ gridX: Partial<Omit<GridXMarkProps, IgnoreDefaults> & {
762
+ implicit: boolean;
763
+ }>;
764
+ /**
765
+ * default props for gridY marks
766
+ */
767
+ gridY: Partial<Omit<GridYMarkProps, IgnoreDefaults> & {
768
+ implicit: boolean;
769
+ }>;
770
+ /**
771
+ * default props for line marks
772
+ */
773
+ line: Partial<Omit<LineMarkProps, IgnoreDefaults>>;
774
+ /**
775
+ * default props for link marks
776
+ */
777
+ link: Partial<Omit<LinkMarkProps, IgnoreDefaults>>;
778
+ /**
779
+ * default props for pointer marks
780
+ */
781
+ pointer: Partial<Omit<PointerMarkProps, IgnoreDefaults>>;
782
+ /**
783
+ * default props for rect marks, applied to rect and rectX marks
784
+ */
785
+ rect: Partial<Omit<RectMarkProps, IgnoreDefaults>>;
786
+ /**
787
+ * default props for rectX marks
788
+ */
789
+ rectX: Partial<Omit<RectXMarkProps, IgnoreDefaults>>;
790
+ /**
791
+ * default props for rectY marks
792
+ */
793
+ rectY: Partial<Omit<RectYMarkProps, IgnoreDefaults>>;
794
+ /**
795
+ * default props for rule marks
796
+ */
797
+ rule: Partial<Omit<RuleXMarkProps, IgnoreDefaults>>;
798
+ /**
799
+ * default props for rule marks
800
+ */
801
+ ruleX: Partial<Omit<RuleXMarkProps, IgnoreDefaults>>;
802
+ /**
803
+ * default props for rule marks
804
+ */
805
+ ruleY: Partial<Omit<RuleYMarkProps, IgnoreDefaults>>;
806
+ /**
807
+ * default props for sphere marks
808
+ */
809
+ sphere: Partial<SphereMarkProps>;
810
+ /**
811
+ * default props for spike marks
812
+ */
813
+ spike: Partial<Omit<SpikeMarkProps, IgnoreDefaults>>;
814
+ /**
815
+ * default props for text marks
816
+ */
817
+ text: Partial<Omit<TextMarkProps, IgnoreDefaults>>;
818
+ /**
819
+ * default props for tick marks, applied to tickX and tickY marks
820
+ */
821
+ tick: Partial<Omit<TickXMarkProps, IgnoreDefaults>>;
822
+ /**
823
+ * default props for tickX marks
824
+ */
825
+ tickX: Partial<Omit<TickXMarkProps, IgnoreDefaults>>;
826
+ /**
827
+ * default props for tickY marks
828
+ */
829
+ tickY: Partial<Omit<TickYMarkProps, IgnoreDefaults>>;
830
+ /**
831
+ * default props for vector marks
832
+ */
833
+ vector: Partial<Omit<VectorMarkProps, IgnoreDefaults>>;
682
834
  };
683
835
  export type MapIndexObject = {
684
836
  mapIndex: (I: number[], S: RawValue[], T: RawValue[]) => void;
@@ -36,7 +36,7 @@
36
36
  border: 1px solid #88888822;
37
37
  border-radius: 2px;
38
38
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.05);
39
- padding: 1.5ex;
39
+ padding: 1.5ex 1.5ex 0.4ex 1.5ex;
40
40
  }
41
41
 
42
42
  &:hover {