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
@@ -207,7 +207,7 @@ declare class __sveltets_Render<TData> {
207
207
  tickValues?: any[] | undefined;
208
208
  tickFontSize?: number | undefined;
209
209
  tickLength?: number | undefined;
210
- placement?: ("left" | "right" | "center" | "bottom" | "top" | "top-left" | "top-right" | "bottom-left" | "bottom-right") | undefined;
210
+ placement?: ("center" | "left" | "right" | "bottom" | "top" | "top-left" | "top-right" | "bottom-left" | "bottom-right") | undefined;
211
211
  orientation?: ("horizontal" | "vertical") | undefined;
212
212
  variant?: ("ramp" | "swatches") | undefined;
213
213
  classes?: {
@@ -1,44 +1,79 @@
1
- <script generics="TData">import {} from 'svelte';
2
- import { scaleLinear, scaleOrdinal, scaleTime } from 'd3-scale';
3
- import { format } from '@layerstack/utils';
4
- import Axis from '../Axis.svelte';
5
- import Chart from '../Chart.svelte';
6
- import Grid from '../Grid.svelte';
7
- import Highlight from '../Highlight.svelte';
8
- import Labels from '../Labels.svelte';
9
- import Legend from '../Legend.svelte';
10
- import Points from '../Points.svelte';
11
- import Rule from '../Rule.svelte';
12
- import Svg from '../layout/Svg.svelte';
13
- import * as Tooltip from '../tooltip/index.js';
14
- import { accessor, chartDataArray } from '../../utils/common.js';
15
- export let data = [];
16
- export let x = undefined;
17
- export let y = undefined;
18
- export let series = [{ key: 'default', data: chartDataArray(data), color: 'hsl(var(--color-primary))' }];
19
- $: isDefaultSeries = series.length === 1 && series[0].key === 'default';
20
- export let axis = true;
21
- export let grid = true;
22
- export let labels = false;
23
- export let legend = false;
24
- export let rule = true;
25
- export let props = {};
26
- // Default xScale based on first data's `x` value
27
- $: xScale = accessor(x)(chartDataArray(data)[0]) instanceof Date ? scaleTime() : scaleLinear();
28
- let chartData = series
1
+ <script lang="ts" generics="TData">
2
+ import { type ComponentProps } from 'svelte';
3
+ import { scaleLinear, scaleOrdinal, scaleTime } from 'd3-scale';
4
+ import { format } from '@layerstack/utils';
5
+
6
+ import Axis from '../Axis.svelte';
7
+ import Chart from '../Chart.svelte';
8
+ import Grid from '../Grid.svelte';
9
+ import Highlight from '../Highlight.svelte';
10
+ import Labels from '../Labels.svelte';
11
+ import Legend from '../Legend.svelte';
12
+ import Points from '../Points.svelte';
13
+ import Rule from '../Rule.svelte';
14
+ import Svg from '../layout/Svg.svelte';
15
+ import * as Tooltip from '../tooltip/index.js';
16
+
17
+ import { accessor, chartDataArray, type Accessor } from '../../utils/common.js';
18
+
19
+ interface $$Props extends ComponentProps<Chart<TData>> {
20
+ axis?: typeof axis;
21
+ grid?: typeof grid;
22
+ labels?: typeof labels;
23
+ legend?: typeof legend;
24
+ props?: typeof props;
25
+ series?: typeof series;
26
+ }
27
+
28
+ export let data: $$Props['data'] = [];
29
+ export let x: Accessor<TData> = undefined;
30
+ export let y: Accessor<TData> = undefined;
31
+
32
+ export let series: {
33
+ key: string;
34
+ label?: string;
35
+ data: TData[];
36
+ color?: string;
37
+ props?: Partial<ComponentProps<Points>>;
38
+ }[] = [{ key: 'default', data: chartDataArray(data), color: 'hsl(var(--color-primary))' }];
39
+ $: isDefaultSeries = series.length === 1 && series[0].key === 'default';
40
+
41
+ export let axis: ComponentProps<Axis> | 'x' | 'y' | boolean = true;
42
+ export let grid: ComponentProps<Grid> | boolean = true;
43
+ export let labels: ComponentProps<Labels> | boolean = false;
44
+ export let legend: ComponentProps<Legend> | boolean = false;
45
+ export let rule: ComponentProps<Rule> | boolean = true;
46
+
47
+ export let props: {
48
+ xAxis?: Partial<ComponentProps<Axis>>;
49
+ yAxis?: Partial<ComponentProps<Axis>>;
50
+ grid?: Partial<ComponentProps<Grid>>;
51
+ points?: Partial<ComponentProps<Points>>;
52
+ highlight?: Partial<ComponentProps<Highlight>>;
53
+ labels?: Partial<ComponentProps<Labels>>;
54
+ legend?: Partial<ComponentProps<Legend>>;
55
+ rule?: Partial<ComponentProps<Rule>>;
56
+ } = {};
57
+
58
+ // Default xScale based on first data's `x` value
59
+ $: xScale = accessor(x)(chartDataArray(data)[0]) instanceof Date ? scaleTime() : scaleLinear();
60
+
61
+ let chartData = series
29
62
  .flatMap((s) => s.data?.map((d) => ({ seriesKey: s.key, ...d })))
30
- .filter((d) => d);
31
- function getPointsProps(s, i) {
32
- const pointsProps = {
33
- data: s.data,
34
- stroke: s.color,
35
- fill: s.color,
36
- 'fill-opacity': 0.3,
37
- ...props.points,
38
- ...s.props,
63
+ .filter((d) => d) as Array<TData>;
64
+
65
+ function getPointsProps(s: (typeof series)[number], i: number) {
66
+ const pointsProps: ComponentProps<Points> = {
67
+ data: s.data,
68
+ stroke: s.color,
69
+ fill: s.color,
70
+ 'fill-opacity': 0.3,
71
+ ...props.points,
72
+ ...s.props,
39
73
  };
74
+
40
75
  return pointsProps;
41
- }
76
+ }
42
77
  </script>
43
78
 
44
79
  <Chart
@@ -252,7 +252,7 @@ declare class __sveltets_Render<TData> {
252
252
  tickValues?: any[] | undefined;
253
253
  tickFontSize?: number | undefined;
254
254
  tickLength?: number | undefined;
255
- placement?: ("left" | "right" | "center" | "bottom" | "top" | "top-left" | "top-right" | "bottom-left" | "bottom-right") | undefined;
255
+ placement?: ("center" | "left" | "right" | "bottom" | "top" | "top-left" | "top-right" | "bottom-left" | "bottom-right") | undefined;
256
256
  orientation?: ("horizontal" | "vertical") | undefined;
257
257
  variant?: ("ramp" | "swatches") | undefined;
258
258
  classes?: {
@@ -1,53 +1,73 @@
1
- <script>import { onMount, setContext } from 'svelte';
2
- import { writable } from 'svelte/store';
3
- import { scaleCanvas } from 'layercake';
4
- import { cls } from '@layerstack/tailwind';
5
- import { chartContext } from '../ChartContext.svelte';
6
- import { transformContext } from '../TransformContext.svelte';
7
- const { width, height, containerWidth, containerHeight, padding } = chartContext();
8
- /** The `<canvas>` tag. Useful for bindings. */
9
- export let element = undefined;
10
- /** The `<canvas>`'s 2d context. Useful for bindings. */
11
- // @ts-expect-error: set during onMount()
12
- export let context = undefined;
13
- /** Force the use of a software (instead of hardware accelerated) 2D canvas and can save memory when calling getImageData() frequently.
14
- * see: https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext#willreadfrequently */
15
- export let willReadFrequently = false;
16
- /** The layer's z-index. */
17
- export let zIndex = undefined;
18
- /** Set this to `false` to set `pointer-events: none;` on the entire layer. */
19
- export let pointerEvents = undefined;
20
- /** Text to display if the browser won't render a canvas tag. You can also set arbitrary HTML via the "fallback" slot but this is fine if you just need text. If you use the "fallback" slot, this prop is ignored. */
21
- export let fallback = '';
22
- /** A string passed to the `aria-label` on the `<canvas>` tag. */
23
- export let label = undefined;
24
- /** A string passed to the `aria-labelledby` on the `<canvas>` tag. */
25
- export let labelledBy = undefined;
26
- /** A string passed to `aria-describedby` property on the `<canvas>` tag. */
27
- export let describedBy = undefined;
28
- const ctx = writable({});
29
- onMount(() => {
30
- context = element?.getContext('2d', { willReadFrequently });
31
- });
32
- const { mode, scale, translate } = transformContext();
33
- $: if (context) {
1
+ <script lang="ts">
2
+ import { onMount, setContext } from 'svelte';
3
+ import { writable } from 'svelte/store';
4
+ import { scaleCanvas } from 'layercake';
5
+ import { cls } from '@layerstack/tailwind';
6
+
7
+ import { chartContext } from '../ChartContext.svelte';
8
+ import { transformContext } from '../TransformContext.svelte';
9
+
10
+ const { width, height, containerWidth, containerHeight, padding } = chartContext();
11
+
12
+ /** The `<canvas>` tag. Useful for bindings. */
13
+ export let element: HTMLCanvasElement | undefined = undefined;
14
+
15
+ /** The `<canvas>`'s 2d context. Useful for bindings. */
16
+ // @ts-expect-error: set during onMount()
17
+ export let context: CanvasRenderingContext2D = undefined;
18
+
19
+ /** Force the use of a software (instead of hardware accelerated) 2D canvas and can save memory when calling getImageData() frequently.
20
+ * see: https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext#willreadfrequently */
21
+ export let willReadFrequently = false;
22
+
23
+ /** The layer's z-index. */
24
+ export let zIndex = undefined;
25
+
26
+ /** Set this to `false` to set `pointer-events: none;` on the entire layer. */
27
+ export let pointerEvents: boolean | undefined = undefined;
28
+
29
+ /** Text to display if the browser won't render a canvas tag. You can also set arbitrary HTML via the "fallback" slot but this is fine if you just need text. If you use the "fallback" slot, this prop is ignored. */
30
+ export let fallback = '';
31
+
32
+ /** A string passed to the `aria-label` on the `<canvas>` tag. */
33
+ export let label: string | undefined = undefined;
34
+
35
+ /** A string passed to the `aria-labelledby` on the `<canvas>` tag. */
36
+ export let labelledBy: string | undefined = undefined;
37
+
38
+ /** A string passed to `aria-describedby` property on the `<canvas>` tag. */
39
+ export let describedBy: string | undefined = undefined;
40
+
41
+ const ctx = writable({});
42
+
43
+ onMount(() => {
44
+ context = element?.getContext('2d', { willReadFrequently }) as CanvasRenderingContext2D;
45
+ });
46
+
47
+ const { mode, scale, translate } = transformContext();
48
+
49
+ $: if (context) {
34
50
  scaleCanvas(context, $containerWidth, $containerHeight);
35
51
  context.clearRect(0, 0, $containerWidth, $containerHeight);
52
+
36
53
  context.translate($padding.left ?? 0, $padding.top ?? 0);
54
+
37
55
  if (mode === 'canvas') {
38
- const center = { x: $width / 2, y: $height / 2 };
39
- const newTranslate = {
40
- x: $translate.x * $scale + center.x - center.x * $scale,
41
- y: $translate.y * $scale + center.y - center.y * $scale,
42
- };
43
- context.translate(newTranslate.x, newTranslate.y);
44
- context.scale($scale, $scale);
56
+ const center = { x: $width / 2, y: $height / 2 };
57
+ const newTranslate = {
58
+ x: $translate.x * $scale + center.x - center.x * $scale,
59
+ y: $translate.y * $scale + center.y - center.y * $scale,
60
+ };
61
+ context.translate(newTranslate.x, newTranslate.y);
62
+ context.scale($scale, $scale);
45
63
  }
64
+
46
65
  // Force children to re-draw
47
66
  $ctx = context;
48
- }
49
- $: ctx.set(context);
50
- setContext('canvas', { ctx });
67
+ }
68
+
69
+ $: ctx.set(context);
70
+ setContext('canvas', { ctx });
51
71
  </script>
52
72
 
53
73
  <canvas
@@ -1,21 +1,31 @@
1
- <script>import { cls } from '@layerstack/tailwind';
2
- import { chartContext } from '../ChartContext.svelte';
3
- /** The layer's outermost `<div>` tag. Useful for bindings. */
4
- export let element = undefined;
5
- /** The layer's z-index. */
6
- export let zIndex = undefined;
7
- /** Set this to `false` to set `pointer-events: none;` on the entire layer. */
8
- export let pointerEvents = undefined;
9
- /** A string passed to the `aria-role` on the `<div>` tag. This is `undefined` by default but will be set by default to `'figure'` if `label`, `labelledby` or `describedby` is set. That default will be overridden by whatever is passed in. */
10
- export let role = undefined;
11
- /** A string passed to the `aria-label` property on the `<div>` tag. */
12
- export let label = undefined;
13
- /** A string passed to the `aria-labelledby property` on the `<div>` tag. */
14
- export let labelledBy = undefined;
15
- /** A string passed to the `aria-describedby` property on the `<div>` tag. */
16
- export let describedBy = undefined;
17
- const { padding } = chartContext();
18
- $: roleVal = role || (label || labelledBy || describedBy ? 'figure' : undefined);
1
+ <script lang="ts">
2
+ import { cls } from '@layerstack/tailwind';
3
+ import { chartContext } from '../ChartContext.svelte';
4
+
5
+ /** The layer's outermost `<div>` tag. Useful for bindings. */
6
+ export let element: HTMLDivElement | undefined = undefined;
7
+
8
+ /** The layer's z-index. */
9
+ export let zIndex = undefined;
10
+
11
+ /** Set this to `false` to set `pointer-events: none;` on the entire layer. */
12
+ export let pointerEvents: boolean | undefined = undefined;
13
+
14
+ /** A string passed to the `aria-role` on the `<div>` tag. This is `undefined` by default but will be set by default to `'figure'` if `label`, `labelledby` or `describedby` is set. That default will be overridden by whatever is passed in. */
15
+ export let role: string | undefined = undefined;
16
+
17
+ /** A string passed to the `aria-label` property on the `<div>` tag. */
18
+ export let label: string | undefined = undefined;
19
+
20
+ /** A string passed to the `aria-labelledby property` on the `<div>` tag. */
21
+ export let labelledBy: string | undefined = undefined;
22
+
23
+ /** A string passed to the `aria-describedby` property on the `<div>` tag. */
24
+ export let describedBy: string | undefined = undefined;
25
+
26
+ const { padding } = chartContext();
27
+
28
+ $: roleVal = role || (label || labelledBy || describedBy ? 'figure' : undefined);
19
29
  </script>
20
30
 
21
31
  <div
@@ -1,41 +1,56 @@
1
- <script>import { cls } from '@layerstack/tailwind';
2
- import { chartContext } from '../ChartContext.svelte';
3
- import { transformContext } from '../TransformContext.svelte';
4
- /** The layer's `<svg>` tag. Useful for bindings. */
5
- export let element = undefined;
6
- /** The layer's `<g>` tag. Useful for bindings. */
7
- export let innerElement = undefined;
8
- /** The layer's z-index. */
9
- export let zIndex = undefined;
10
- /** Set this to `false` to set `pointer-events: none;` on the entire layer. */
11
- export let pointerEvents = undefined;
12
- /** A string passed to the `viewBox` property on the `<svg>` tag. */
13
- export let viewBox = undefined;
14
- /** A string passed to the `aria-label` property on the `<svg>` tag. */
15
- export let label = undefined;
16
- /** A string passed to the `aria-labelledby property` on the `<svg>` tag. */
17
- export let labelledBy = undefined;
18
- /** A string passed to the `aria-describedby` property on the `<svg>` tag. */
19
- export let describedBy = undefined;
20
- /** Shorthand to set the contents of `<title></title>` for accessibility. You can also set arbitrary HTML via the "title" slot but this is a convenient shorthand. If you use the "title" slot, this prop is ignored. */
21
- export let title = undefined;
22
- /**
23
- * Translate children to center, useful for radial layouts
24
- */
25
- export let center = false;
26
- const { containerWidth, containerHeight, width, height, padding } = chartContext();
27
- const { mode, scale, translate } = transformContext();
28
- $: transform = center
1
+ <script lang="ts">
2
+ import { cls } from '@layerstack/tailwind';
3
+
4
+ import { chartContext } from '../ChartContext.svelte';
5
+ import { transformContext } from '../TransformContext.svelte';
6
+
7
+ /** The layer's `<svg>` tag. Useful for bindings. */
8
+ export let element: SVGElement | undefined = undefined;
9
+
10
+ /** The layer's `<g>` tag. Useful for bindings. */
11
+ export let innerElement: SVGGElement | undefined = undefined;
12
+
13
+ /** The layer's z-index. */
14
+ export let zIndex = undefined;
15
+
16
+ /** Set this to `false` to set `pointer-events: none;` on the entire layer. */
17
+ export let pointerEvents: boolean | undefined = undefined;
18
+
19
+ /** A string passed to the `viewBox` property on the `<svg>` tag. */
20
+ export let viewBox: string | undefined = undefined;
21
+
22
+ /** A string passed to the `aria-label` property on the `<svg>` tag. */
23
+ export let label: string | undefined = undefined;
24
+
25
+ /** A string passed to the `aria-labelledby property` on the `<svg>` tag. */
26
+ export let labelledBy: string | undefined = undefined;
27
+
28
+ /** A string passed to the `aria-describedby` property on the `<svg>` tag. */
29
+ export let describedBy: string | undefined = undefined;
30
+
31
+ /** Shorthand to set the contents of `<title></title>` for accessibility. You can also set arbitrary HTML via the "title" slot but this is a convenient shorthand. If you use the "title" slot, this prop is ignored. */
32
+ export let title: string | undefined = undefined;
33
+
34
+ /**
35
+ * Translate children to center, useful for radial layouts
36
+ */
37
+ export let center: boolean | 'x' | 'y' = false;
38
+
39
+ const { containerWidth, containerHeight, width, height, padding } = chartContext();
40
+
41
+ const { mode, scale, translate } = transformContext();
42
+
43
+ $: transform = center
29
44
  ? `translate(${center === 'x' || center === true ? $width / 2 : 0}, ${center === 'y' || center === true ? $height / 2 : 0})`
30
45
  : '';
31
- $: if (mode === 'canvas') {
46
+ $: if (mode === 'canvas') {
32
47
  const center = { x: $width / 2, y: $height / 2 };
33
48
  const newTranslate = {
34
- x: $translate.x * $scale + center.x - center.x * $scale,
35
- y: $translate.y * $scale + center.y - center.y * $scale,
49
+ x: $translate.x * $scale + center.x - center.x * $scale,
50
+ y: $translate.y * $scale + center.y - center.y * $scale,
36
51
  };
37
52
  transform = `translate(${newTranslate.x},${newTranslate.y}) scale(${$scale})`;
38
- }
53
+ }
39
54
  </script>
40
55
 
41
56
  <!-- svelte-ignore a11y-click-events-have-key-events -->