layerchart 0.54.0 → 0.54.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 (99) hide show
  1. package/dist/components/Arc.svelte +170 -144
  2. package/dist/components/Area.svelte +96 -67
  3. package/dist/components/Area.svelte.d.ts +1 -0
  4. package/dist/components/Axis.svelte +205 -155
  5. package/dist/components/Bar.svelte +72 -45
  6. package/dist/components/Bars.svelte +45 -34
  7. package/dist/components/Blur.svelte +5 -3
  8. package/dist/components/Bounds.svelte +37 -21
  9. package/dist/components/Brush.svelte +181 -110
  10. package/dist/components/Calendar.svelte +51 -38
  11. package/dist/components/Chart.svelte +295 -74
  12. package/dist/components/Chart.svelte.d.ts +17 -17
  13. package/dist/components/ChartClipPath.svelte +8 -5
  14. package/dist/components/ChartContext.svelte +243 -93
  15. package/dist/components/ChartContext.svelte.d.ts +15 -23
  16. package/dist/components/Circle.svelte +25 -16
  17. package/dist/components/CircleClipPath.svelte +16 -10
  18. package/dist/components/ClipPath.svelte +11 -7
  19. package/dist/components/ColorRamp.svelte +12 -10
  20. package/dist/components/ForceSimulation.svelte +185 -116
  21. package/dist/components/Frame.svelte +10 -6
  22. package/dist/components/GeoCircle.svelte +15 -9
  23. package/dist/components/GeoContext.svelte +109 -62
  24. package/dist/components/GeoEdgeFade.svelte +20 -14
  25. package/dist/components/GeoPath.svelte +107 -69
  26. package/dist/components/GeoPoint.svelte +32 -18
  27. package/dist/components/GeoSpline.svelte +30 -22
  28. package/dist/components/GeoTile.svelte +40 -30
  29. package/dist/components/GeoVisible.svelte +10 -7
  30. package/dist/components/Graticule.svelte +14 -8
  31. package/dist/components/Grid.svelte +75 -48
  32. package/dist/components/Group.svelte +43 -31
  33. package/dist/components/Highlight.svelte +284 -243
  34. package/dist/components/HitCanvas.svelte +75 -42
  35. package/dist/components/Hull.svelte +40 -20
  36. package/dist/components/Labels.svelte +81 -70
  37. package/dist/components/Legend.svelte +105 -74
  38. package/dist/components/Legend.svelte.d.ts +1 -1
  39. package/dist/components/Line.svelte +29 -19
  40. package/dist/components/LinearGradient.svelte +21 -15
  41. package/dist/components/Link.svelte +44 -22
  42. package/dist/components/MonthPath.svelte +23 -16
  43. package/dist/components/MotionPath.svelte +34 -25
  44. package/dist/components/Pack.svelte +21 -14
  45. package/dist/components/Partition.svelte +35 -20
  46. package/dist/components/Pattern.svelte +8 -6
  47. package/dist/components/Pie.svelte +76 -57
  48. package/dist/components/Point.svelte +11 -7
  49. package/dist/components/Points.svelte +178 -143
  50. package/dist/components/RadialGradient.svelte +25 -18
  51. package/dist/components/Rect.svelte +33 -19
  52. package/dist/components/RectClipPath.svelte +16 -11
  53. package/dist/components/Rule.svelte +50 -42
  54. package/dist/components/Sankey.svelte +55 -30
  55. package/dist/components/Spline.svelte +118 -96
  56. package/dist/components/Text.svelte +137 -104
  57. package/dist/components/Threshold.svelte +18 -7
  58. package/dist/components/TileImage.svelte +56 -50
  59. package/dist/components/TransformContext.svelte +235 -135
  60. package/dist/components/TransformControls.svelte +57 -29
  61. package/dist/components/TransformControls.svelte.d.ts +1 -1
  62. package/dist/components/Tree.svelte +33 -23
  63. package/dist/components/Treemap.svelte +69 -41
  64. package/dist/components/Voronoi.svelte +55 -28
  65. package/dist/components/charts/AreaChart.svelte +128 -77
  66. package/dist/components/charts/AreaChart.svelte.d.ts +1 -1
  67. package/dist/components/charts/BarChart.svelte +169 -104
  68. package/dist/components/charts/BarChart.svelte.d.ts +1 -1
  69. package/dist/components/charts/LineChart.svelte +87 -43
  70. package/dist/components/charts/LineChart.svelte.d.ts +1 -1
  71. package/dist/components/charts/PieChart.svelte +102 -52
  72. package/dist/components/charts/PieChart.svelte.d.ts +1 -1
  73. package/dist/components/charts/ScatterChart.svelte +73 -38
  74. package/dist/components/charts/ScatterChart.svelte.d.ts +1 -1
  75. package/dist/components/layout/Canvas.svelte +63 -43
  76. package/dist/components/layout/Html.svelte +28 -18
  77. package/dist/components/layout/Svg.svelte +47 -32
  78. package/dist/components/tooltip/Tooltip.svelte +137 -91
  79. package/dist/components/tooltip/Tooltip.svelte.d.ts +1 -1
  80. package/dist/components/tooltip/TooltipContext.svelte +315 -249
  81. package/dist/components/tooltip/TooltipHeader.svelte +9 -3
  82. package/dist/components/tooltip/TooltipItem.svelte +17 -9
  83. package/dist/components/tooltip/TooltipList.svelte +2 -1
  84. package/dist/components/tooltip/TooltipSeparator.svelte +3 -2
  85. package/dist/docs/Blockquote.svelte +4 -3
  86. package/dist/docs/Code.svelte +15 -8
  87. package/dist/docs/CurveMenuField.svelte +17 -12
  88. package/dist/docs/GeoDebug.svelte +13 -9
  89. package/dist/docs/Header1.svelte +2 -1
  90. package/dist/docs/Json.svelte +6 -4
  91. package/dist/docs/Layout.svelte +6 -6
  92. package/dist/docs/PathDataMenuField.svelte +52 -44
  93. package/dist/docs/Preview.svelte +39 -33
  94. package/dist/docs/TilesetField.svelte +80 -62
  95. package/dist/docs/TransformDebug.svelte +8 -5
  96. package/dist/docs/ViewSourceButton.svelte +13 -9
  97. package/dist/stores/motionStore.d.ts +1 -1
  98. package/dist/utils/scales.d.ts +3 -3
  99. package/package.json +29 -30
@@ -1,115 +1,161 @@
1
- <script>import { fade } from 'svelte/transition';
2
- import { cls } from '@layerstack/tailwind';
3
- import { chartContext } from './../ChartContext.svelte';
4
- import { tooltipContext } from './TooltipContext.svelte';
5
- import { motionStore } from '../../stores/motionStore.js';
6
- import { isScaleBand } from '../../utils/scales.js';
7
- /** `x` position of tooltip. By default uses the pointer/mouse, can also snap to data or an explicit fixed position. */
8
- export let x = 'pointer';
9
- /** `y` position of tooltip. By default uses the pointer/mouse, can also snap to data or an explicit fixed position. */
10
- export let y = 'pointer';
11
- /** Offset added to `x` position */
12
- export let xOffset = x === 'pointer' ? 10 : 0;
13
- /** Offset added to `y` position */
14
- export let yOffset = y === 'pointer' ? 10 : 0;
15
- export let anchor = 'top-left';
16
- export let contained = 'container'; // TODO: Support 'window' using getBoundingClientRect()
17
- export let variant = 'default';
18
- /** Set to `false` to disable spring transitions */
19
- export let motion = true;
20
- export let classes = {};
21
- const { padding, xScale, xGet, yScale, yGet, containerWidth, containerHeight } = chartContext();
22
- const tooltip = tooltipContext();
23
- let tooltipWidth = 0;
24
- let tooltipHeight = 0;
25
- const xPos = motionStore($tooltip.x, { spring: motion });
26
- const yPos = motionStore($tooltip.y, { spring: motion });
27
- function alignValue(value, align, addlOffset, tooltipSize) {
1
+ <script lang="ts">
2
+ import { fade } from 'svelte/transition';
3
+ import { cls } from '@layerstack/tailwind';
4
+
5
+ import { chartContext } from './../ChartContext.svelte';
6
+ import { tooltipContext } from './TooltipContext.svelte';
7
+ import { motionStore } from '../../stores/motionStore.js';
8
+ import { isScaleBand } from '../../utils/scales.js';
9
+
10
+ /** `x` position of tooltip. By default uses the pointer/mouse, can also snap to data or an explicit fixed position. */
11
+ export let x: 'pointer' | 'data' | number | undefined = 'pointer';
12
+ /** `y` position of tooltip. By default uses the pointer/mouse, can also snap to data or an explicit fixed position. */
13
+ export let y: 'pointer' | 'data' | number | undefined = 'pointer';
14
+
15
+ /** Offset added to `x` position */
16
+ export let xOffset = x === 'pointer' ? 10 : 0;
17
+
18
+ /** Offset added to `y` position */
19
+ export let yOffset = y === 'pointer' ? 10 : 0;
20
+
21
+ /** Align based on edge of tooltip */
22
+ type Placement =
23
+ | 'top-left'
24
+ | 'top'
25
+ | 'top-right'
26
+ | 'left'
27
+ | 'center'
28
+ | 'right'
29
+ | 'bottom-left'
30
+ | 'bottom'
31
+ | 'bottom-right';
32
+ export let anchor: Placement = 'top-left';
33
+
34
+ export let contained: 'container' | false = 'container'; // TODO: Support 'window' using getBoundingClientRect()
35
+ export let variant: 'default' | 'invert' | 'none' = 'default';
36
+
37
+ /** Set to `false` to disable spring transitions */
38
+ export let motion = true;
39
+
40
+ export let classes: {
41
+ root?: string;
42
+ container?: string;
43
+ header?: string;
44
+ content?: string;
45
+ } = {};
46
+
47
+ const { padding, xScale, xGet, yScale, yGet, containerWidth, containerHeight } = chartContext();
48
+ const tooltip = tooltipContext();
49
+
50
+ let tooltipWidth = 0;
51
+ let tooltipHeight = 0;
52
+
53
+ const xPos = motionStore($tooltip.x, { spring: motion });
54
+ const yPos = motionStore($tooltip.y, { spring: motion });
55
+
56
+ type Align = 'start' | 'center' | 'end';
57
+
58
+ function alignValue(value: number, align: Align, addlOffset: number, tooltipSize: number) {
28
59
  const alignOffset = align === 'center' ? tooltipSize / 2 : align === 'end' ? tooltipSize : 0;
29
60
  return value + (align === 'end' ? -addlOffset : addlOffset) - alignOffset;
30
- }
31
- $: if ($tooltip?.data) {
61
+ }
62
+
63
+ $: if ($tooltip?.data) {
32
64
  const xBandOffset = isScaleBand($xScale)
33
- ? $xScale.step() / 2 - ($xScale.padding() * $xScale.step()) / 2
34
- : 0;
35
- const xValue = typeof x === 'number'
65
+ ? $xScale.step() / 2 - ($xScale.padding() * $xScale.step()) / 2
66
+ : 0;
67
+
68
+ const xValue: number =
69
+ typeof x === 'number'
36
70
  ? x
37
71
  : x === 'data'
38
- ? $xGet($tooltip.data) + $padding.left + xBandOffset
39
- : $tooltip.x;
40
- let xAlign = 'start';
72
+ ? $xGet($tooltip.data) + $padding.left + xBandOffset
73
+ : $tooltip.x;
74
+
75
+ let xAlign: Align = 'start';
41
76
  switch (anchor) {
42
- case 'top-left':
43
- case 'left':
44
- case 'bottom-left':
45
- xAlign = 'start';
46
- break;
47
- case 'top':
48
- case 'center':
49
- case 'bottom':
50
- xAlign = 'center';
51
- break;
52
- case 'top-right':
53
- case 'right':
54
- case 'bottom-right':
55
- xAlign = 'end';
56
- break;
77
+ case 'top-left':
78
+ case 'left':
79
+ case 'bottom-left':
80
+ xAlign = 'start';
81
+ break;
82
+
83
+ case 'top':
84
+ case 'center':
85
+ case 'bottom':
86
+ xAlign = 'center';
87
+ break;
88
+
89
+ case 'top-right':
90
+ case 'right':
91
+ case 'bottom-right':
92
+ xAlign = 'end';
93
+ break;
57
94
  }
95
+
58
96
  const yBandOffset = isScaleBand($yScale)
59
- ? $yScale.step() / 2 - ($yScale.padding() * $yScale.step()) / 2
60
- : 0;
61
- const yValue = typeof y === 'number'
97
+ ? $yScale.step() / 2 - ($yScale.padding() * $yScale.step()) / 2
98
+ : 0;
99
+ const yValue: number =
100
+ typeof y === 'number'
62
101
  ? y
63
102
  : y === 'data'
64
- ? $yGet($tooltip.data) + $padding.top + yBandOffset
65
- : $tooltip.y;
66
- let yAlign = 'start';
103
+ ? $yGet($tooltip.data) + $padding.top + yBandOffset
104
+ : $tooltip.y;
105
+
106
+ let yAlign: Align = 'start';
67
107
  switch (anchor) {
68
- case 'top-left':
69
- case 'top':
70
- case 'top-right':
71
- yAlign = 'start';
72
- break;
73
- case 'left':
74
- case 'center':
75
- case 'right':
76
- yAlign = 'center';
77
- break;
78
- case 'bottom-left':
79
- case 'bottom':
80
- case 'bottom-right':
81
- yAlign = 'end';
82
- break;
108
+ case 'top-left':
109
+ case 'top':
110
+ case 'top-right':
111
+ yAlign = 'start';
112
+ break;
113
+
114
+ case 'left':
115
+ case 'center':
116
+ case 'right':
117
+ yAlign = 'center';
118
+ break;
119
+
120
+ case 'bottom-left':
121
+ case 'bottom':
122
+ case 'bottom-right':
123
+ yAlign = 'end';
124
+ break;
83
125
  }
126
+
84
127
  const rect = {
85
- top: alignValue(yValue, yAlign, yOffset, tooltipHeight),
86
- left: alignValue(xValue, xAlign, xOffset, tooltipWidth),
87
- // set below
88
- bottom: 0,
89
- right: 0,
128
+ top: alignValue(yValue, yAlign, yOffset, tooltipHeight),
129
+ left: alignValue(xValue, xAlign, xOffset, tooltipWidth),
130
+ // set below
131
+ bottom: 0,
132
+ right: 0,
90
133
  };
91
134
  rect.bottom = rect.top + tooltipHeight;
92
135
  rect.right = rect.left + tooltipWidth;
136
+
93
137
  // Check if outside of container and swap align side accordingly
94
138
  if (contained === 'container') {
95
- if ((xAlign === 'start' || xAlign === 'center') && rect.right > $containerWidth) {
96
- rect.left = alignValue(xValue, 'end', xOffset, tooltipWidth);
97
- }
98
- if ((xAlign === 'end' || xAlign === 'center') && rect.left < $padding.left) {
99
- rect.left = alignValue(xValue, 'start', xOffset, tooltipWidth);
100
- }
101
- rect.right = rect.left + tooltipWidth;
102
- if ((yAlign === 'start' || yAlign === 'center') && rect.bottom > $containerHeight) {
103
- rect.top = alignValue(yValue, 'end', yOffset, tooltipHeight);
104
- }
105
- if ((yAlign === 'end' || yAlign === 'center') && rect.top < $padding.top) {
106
- rect.top = alignValue(yValue, 'start', yOffset, tooltipHeight);
107
- }
108
- rect.bottom = rect.top + tooltipHeight;
139
+ if ((xAlign === 'start' || xAlign === 'center') && rect.right > $containerWidth) {
140
+ rect.left = alignValue(xValue, 'end', xOffset, tooltipWidth);
141
+ }
142
+ if ((xAlign === 'end' || xAlign === 'center') && rect.left < $padding.left) {
143
+ rect.left = alignValue(xValue, 'start', xOffset, tooltipWidth);
144
+ }
145
+ rect.right = rect.left + tooltipWidth;
146
+
147
+ if ((yAlign === 'start' || yAlign === 'center') && rect.bottom > $containerHeight) {
148
+ rect.top = alignValue(yValue, 'end', yOffset, tooltipHeight);
149
+ }
150
+ if ((yAlign === 'end' || yAlign === 'center') && rect.top < $padding.top) {
151
+ rect.top = alignValue(yValue, 'start', yOffset, tooltipHeight);
152
+ }
153
+ rect.bottom = rect.top + tooltipHeight;
109
154
  }
155
+
110
156
  $yPos = rect.top;
111
157
  $xPos = rect.left;
112
- }
158
+ }
113
159
  </script>
114
160
 
115
161
  {#if $tooltip.data}
@@ -6,7 +6,7 @@ declare const __propDef: {
6
6
  y?: "pointer" | "data" | number | undefined;
7
7
  xOffset?: number | undefined;
8
8
  yOffset?: number | undefined;
9
- anchor?: ("left" | "right" | "center" | "bottom" | "top" | "top-left" | "top-right" | "bottom-left" | "bottom-right") | undefined;
9
+ anchor?: ("center" | "left" | "right" | "bottom" | "top" | "top-left" | "top-right" | "bottom-left" | "bottom-right") | undefined;
10
10
  contained?: ("container" | false) | undefined;
11
11
  variant?: ("default" | "invert" | "none") | undefined;
12
12
  motion?: boolean | undefined;