layerchart 0.7.6 → 0.9.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.
@@ -11,6 +11,7 @@ export let xTick = undefined;
11
11
  export let yTick = 8;
12
12
  export let dxTick = 0;
13
13
  export let dyTick = 0;
14
+ export let labelProps = undefined;
14
15
  $: isBand = isScaleBand($xScale);
15
16
  $: tickVals = Array.isArray(ticks)
16
17
  ? ticks
@@ -23,7 +24,7 @@ $: tickVals = Array.isArray(ticks)
23
24
  {#each tickVals as tick, i}
24
25
  <g class="tick tick-{tick}" transform="translate({$xScale(tick)},{max($yRange)})">
25
26
  {#if gridlines !== false}
26
- <line y1={$height * -1} y2="0" x1="0" x2="0" {...gridlines} />
27
+ <line y1={$height * -1} y2="0" x1="0" x2="0" class="stroke-gray-200" {...gridlines} />
27
28
  {/if}
28
29
  <Text
29
30
  x={xTick || isBand ? $xScale.bandwidth() / 2 : 0}
@@ -33,21 +34,10 @@ $: tickVals = Array.isArray(ticks)
33
34
  rotate={315}
34
35
  textAnchor="end"
35
36
  verticalAnchor="middle"
36
- style="font-size: 10px; stroke: white; stroke-width: 2px;"
37
+ class="text-[10px] stroke-white [stroke-width: 2px] font-light"
37
38
  value={format(tick, formatTick ?? $xScale.tickFormat?.())}
39
+ {...labelProps}
38
40
  />
39
41
  </g>
40
42
  {/each}
41
43
  </g>
42
-
43
- <style>
44
- .tick {
45
- font-size: 0.725em;
46
- font-weight: 200;
47
- }
48
-
49
- line,
50
- .tick line {
51
- stroke: #e0e0e0;
52
- }
53
- </style>
@@ -1,5 +1,7 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
2
  import type { FormatType } from 'svelte-ux/utils/format';
3
+ import Text from './Text.svelte';
4
+ import type { ComponentProps } from 'svelte-ux';
3
5
  declare const __propDef: {
4
6
  props: {
5
7
  gridlines?: boolean | svelte.JSX.SVGProps<SVGLineElement>;
@@ -9,6 +11,7 @@ declare const __propDef: {
9
11
  yTick?: number;
10
12
  dxTick?: number;
11
13
  dyTick?: number;
14
+ labelProps?: ComponentProps<Text>;
12
15
  };
13
16
  events: {
14
17
  [evt: string]: CustomEvent<any>;
@@ -11,6 +11,7 @@ export let xTick = 0;
11
11
  export let yTick = 0;
12
12
  export let dxTick = 0;
13
13
  export let dyTick = -3; // TODO: Maualliy tweak based on font-size until <Text /> handles custom styles
14
+ export let labelProps = undefined;
14
15
  $: isBand = isScaleBand($yScale);
15
16
  $: tickVals = Array.isArray(ticks)
16
17
  ? ticks
@@ -28,6 +29,7 @@ $: tickVals = Array.isArray(ticks)
28
29
  x2={$width + $padding.left}
29
30
  y1={yTick + (isBand ? $yScale.bandwidth() / 2 : 0)}
30
31
  y2={yTick + (isBand ? $yScale.bandwidth() / 2 : 0)}
32
+ class="stroke-gray-200"
31
33
  {...gridlines}
32
34
  />
33
35
  {/if}
@@ -44,21 +46,10 @@ $: tickVals = Array.isArray(ticks)
44
46
  dy={dyTick}
45
47
  textAnchor="end"
46
48
  verticalAnchor="middle"
47
- style="font-size: 10px; stroke: white; stroke-width: 2px;"
48
49
  value={format(tick, formatTick ?? $yScale.tickFormat?.())}
50
+ class="text-[10px] stroke-white [stroke-width: 2px] font-light"
51
+ {...labelProps}
49
52
  />
50
53
  </g>
51
54
  {/each}
52
55
  </g>
53
-
54
- <style>
55
- .tick {
56
- font-size: 0.725em;
57
- font-weight: 200;
58
- }
59
-
60
- .tick line {
61
- stroke: #e0e0e0;
62
- /* stroke-dasharray: 2; */
63
- }
64
- </style>
@@ -1,5 +1,7 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
2
  import type { FormatType } from 'svelte-ux/utils/format';
3
+ import Text from './Text.svelte';
4
+ import type { ComponentProps } from 'svelte-ux';
3
5
  declare const __propDef: {
4
6
  props: {
5
7
  gridlines?: boolean | svelte.JSX.SVGProps<SVGLineElement>;
@@ -9,6 +11,7 @@ declare const __propDef: {
9
11
  yTick?: number;
10
12
  dxTick?: number;
11
13
  dyTick?: number;
14
+ labelProps?: ComponentProps<Text>;
12
15
  };
13
16
  events: {
14
17
  [evt: string]: CustomEvent<any>;
@@ -23,9 +23,9 @@ function getValue(accessor, d) {
23
23
  }
24
24
  }
25
25
  export let data = [];
26
- export let x;
27
- export let y;
28
- export let yScale;
26
+ export let x = undefined;
27
+ export let y = undefined;
28
+ export let yScale = undefined;
29
29
  /**
30
30
  * xBaseline guaranteed to be visible in xDomain
31
31
  */
@@ -52,6 +52,21 @@ $: if (yBaseline != null) {
52
52
  $: yReverse = yScale ? !isScaleBand(yScale) : true;
53
53
  </script>
54
54
 
55
- <LayerCake {data} {x} {xDomain} {y} {yScale} {yDomain} {yReverse} {...$$restProps}>
56
- <slot />
55
+ <LayerCake
56
+ {data}
57
+ {x}
58
+ {xDomain}
59
+ {y}
60
+ {yScale}
61
+ {yDomain}
62
+ {yReverse}
63
+ {...$$restProps}
64
+ let:aspectRatio
65
+ let:containerHeight
66
+ let:containerWidth
67
+ let:height
68
+ let:width
69
+ let:element
70
+ >
71
+ <slot {aspectRatio} {containerHeight} {containerWidth} {height} {width} {element} />
57
72
  </LayerCake>
@@ -5,9 +5,9 @@ declare const __propDef: {
5
5
  props: {
6
6
  [x: string]: any;
7
7
  data?: any[];
8
- x: (string | ((d: any) => number)) | (string | ((d: any) => number))[];
9
- y: (string | ((d: any) => number)) | (string | ((d: any) => number))[];
10
- yScale: Function;
8
+ x?: (string | ((d: any) => number)) | (string | ((d: any) => number))[];
9
+ y?: (string | ((d: any) => number)) | (string | ((d: any) => number))[];
10
+ yScale?: Function;
11
11
  xBaseline?: number | null;
12
12
  yBaseline?: number | null;
13
13
  };
@@ -15,7 +15,14 @@ declare const __propDef: {
15
15
  [evt: string]: CustomEvent<any>;
16
16
  };
17
17
  slots: {
18
- default: {};
18
+ default: {
19
+ aspectRatio: number;
20
+ containerHeight: number;
21
+ containerWidth: number;
22
+ height: number;
23
+ width: number;
24
+ element: Element;
25
+ };
19
26
  };
20
27
  };
21
28
  export declare type ChartProps = typeof __propDef.props;
@@ -0,0 +1,18 @@
1
+ <script>import { getContext } from 'svelte';
2
+ const { rScale } = getContext('LayerCake');
3
+ const domain = $rScale.domain();
4
+ const range = $rScale.range();
5
+ // zip values together
6
+ export let items = domain.map((d, i) => ({ label: d, color: range[i] }));
7
+ </script>
8
+
9
+ <slot {items} scale={$rScale}>
10
+ <div {...$$restProps}>
11
+ {#each items as { label, color }}
12
+ <div class="flex items-center gap-1">
13
+ <div class="h-4 w-4 rounded-full" style:background-color={color} />
14
+ {label}
15
+ </div>
16
+ {/each}
17
+ </div>
18
+ </slot>
@@ -0,0 +1,22 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ [x: string]: any;
5
+ items?: any;
6
+ };
7
+ events: {
8
+ [evt: string]: CustomEvent<any>;
9
+ };
10
+ slots: {
11
+ default: {
12
+ items: any;
13
+ scale: any;
14
+ };
15
+ };
16
+ };
17
+ export declare type LegendProps = typeof __propDef.props;
18
+ export declare type LegendEvents = typeof __propDef.events;
19
+ export declare type LegendSlots = typeof __propDef.slots;
20
+ export default class Legend extends SvelteComponentTyped<LegendProps, LegendEvents, LegendSlots> {
21
+ }
22
+ export {};
@@ -16,6 +16,7 @@ export { default as Group } from './Group.svelte';
16
16
  export { default as HighlightLine } from './HighlightLine.svelte';
17
17
  export { default as HighlightRect } from './HighlightRect.svelte';
18
18
  export { default as Labels } from './Labels.svelte';
19
+ export { default as Legend } from './Legend.svelte';
19
20
  export { default as Line } from './Line.svelte';
20
21
  export { default as LinearGradient } from './LinearGradient.svelte';
21
22
  export { default as Link } from './Link.svelte';
@@ -16,6 +16,7 @@ export { default as Group } from './Group.svelte';
16
16
  export { default as HighlightLine } from './HighlightLine.svelte';
17
17
  export { default as HighlightRect } from './HighlightRect.svelte';
18
18
  export { default as Labels } from './Labels.svelte';
19
+ export { default as Legend } from './Legend.svelte';
19
20
  export { default as Line } from './Line.svelte';
20
21
  export { default as LinearGradient } from './LinearGradient.svelte';
21
22
  export { default as Link } from './Link.svelte';
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "author": "Sean Lynch <techniq35@gmail.com>",
4
4
  "license": "MIT",
5
5
  "repository": "techniq/layerchart",
6
- "version": "0.7.6",
6
+ "version": "0.9.0",
7
7
  "devDependencies": {
8
8
  "@rollup/plugin-dsv": "^2.0.3",
9
9
  "@sveltejs/adapter-vercel": "^1.0.0-next.59",
@@ -49,7 +49,7 @@
49
49
  "date-fns": "^2.28.0",
50
50
  "layercake": "^6.1.0",
51
51
  "lodash-es": "^4.17.21",
52
- "svelte-ux": "^0.7.0"
52
+ "svelte-ux": "^0.8.8"
53
53
  },
54
54
  "exports": {
55
55
  "./package.json": "./package.json",
@@ -71,6 +71,7 @@
71
71
  "./components/HighlightLine.svelte": "./components/HighlightLine.svelte",
72
72
  "./components/HighlightRect.svelte": "./components/HighlightRect.svelte",
73
73
  "./components/Labels.svelte": "./components/Labels.svelte",
74
+ "./components/Legend.svelte": "./components/Legend.svelte",
74
75
  "./components/Line.svelte": "./components/Line.svelte",
75
76
  "./components/LinearGradient.svelte": "./components/LinearGradient.svelte",
76
77
  "./components/Link.svelte": "./components/Link.svelte",