layerchart 0.97.1 → 0.98.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.
@@ -423,7 +423,7 @@
423
423
  initialTranslate={initialTransform?.translate}
424
424
  initialScale={initialTransform?.scale}
425
425
  processTranslate={geo
426
- ? (x, y, deltaX, deltaY, scale) => {
426
+ ? (x, y, deltaX, deltaY) => {
427
427
  if (geo.applyTransform?.includes('rotate')) {
428
428
  // When applying transform to rotate, invert `y` values and reduce sensitivity based on projection scale
429
429
  // see: https://observablehq.com/@benoldenburg/simple-globe and https://observablehq.com/@michael-keith/draggable-globe-in-d3
@@ -434,12 +434,9 @@
434
434
  x: x + deltaX * (sensitivity / projectionScale),
435
435
  y: y + deltaY * (sensitivity / projectionScale) * -1,
436
436
  };
437
- } else if (geo.applyTransform?.includes('translate')) {
438
- // When applying to `translate`, use pointer values as is (with no `scale` adjustment)
439
- return { x: x + deltaX, y: y + deltaY };
440
437
  } else {
441
438
  // Apply default TransformContext.processTransform (passing `undefined` below appears to not work when checking for `geo?.applyTransform` exists)
442
- return { x: x + deltaX / scale, y: y + deltaY / scale };
439
+ return { x: x + deltaX, y: y + deltaY };
443
440
  }
444
441
  }
445
442
  : undefined}
@@ -223,10 +223,9 @@ declare class __sveltets_Render<TData> {
223
223
  /** Props passed to TransformContext */
224
224
  transform?: Partial<{
225
225
  mode?: "none" | "canvas" | "manual";
226
- translateOnScale?: boolean;
227
226
  spring?: boolean | Parameters<typeof import("../stores/motionStore").motionStore>[1]["spring"];
228
- tweened?: boolean | Parameters<typeof import("../stores/motionStore").motionStore>[1] /** Override the default r range of `[1, 25]` by setting an array or function with argument `({ width, height})` that returns an array. Setting this prop overrides `rReverse`. This can also be a list of numbers or strings for scales with discrete ranges like [scaleThreshold](https://github.com/d3/d3-scale#threshold-scales) or [scaleQuantize](https://github.com/d3/d3-scale#quantize-scales). */["tweened"];
229
- processTranslate?: (x: number, y: number, deltaX: number, deltaY: number, scale: number) => {
227
+ tweened?: boolean | Parameters<typeof import("../stores/motionStore").motionStore>[1]["tweened"];
228
+ processTranslate?: (x: number, y: number, deltaX: number, deltaY: number) => {
230
229
  x: number;
231
230
  y: number;
232
231
  };
@@ -61,22 +61,14 @@
61
61
  const { width, height } = chartContext();
62
62
 
63
63
  export let mode: TransformMode = 'none';
64
- /** Translate towards point (ex. mouse cursor/center) while zooming in/out */
65
- export let translateOnScale = false;
66
64
 
67
65
  export let spring: boolean | Parameters<typeof motionStore>[1]['spring'] = undefined;
68
66
  export let tweened: boolean | Parameters<typeof motionStore>[1]['tweened'] = undefined;
69
67
 
70
- export let processTranslate = (
71
- x: number,
72
- y: number,
73
- deltaX: number,
74
- deltaY: number,
75
- scale: number
76
- ) => {
68
+ export let processTranslate = (x: number, y: number, deltaX: number, deltaY: number) => {
77
69
  return {
78
- x: x + deltaX / scale,
79
- y: y + deltaY / scale,
70
+ x: x + deltaX,
71
+ y: y + deltaY,
80
72
  };
81
73
  };
82
74
 
@@ -182,7 +174,7 @@
182
174
  e.currentTarget?.setPointerCapture(e.pointerId);
183
175
 
184
176
  setTranslate(
185
- processTranslate(startTranslate.x, startTranslate.y, deltaX, deltaY, $scale),
177
+ processTranslate(startTranslate.x, startTranslate.y, deltaX, deltaY),
186
178
  // @ts-expect-error
187
179
  spring ? { hard: true } : tweened ? { duration: 0 } : undefined
188
180
  );
@@ -232,7 +224,7 @@
232
224
  } else if ($scrollMode === 'translate') {
233
225
  translate.update(
234
226
  (startTranslate) =>
235
- processTranslate(startTranslate.x, startTranslate.y, -e.deltaX, -e.deltaY, $scale),
227
+ processTranslate(startTranslate.x, startTranslate.y, -e.deltaX, -e.deltaY),
236
228
  // @ts-expect-error
237
229
  spring ? { hard: true } : tweened ? { duration: 0 } : undefined
238
230
  );
@@ -251,18 +243,16 @@
251
243
  const newScale = $scale * value;
252
244
  setScale(newScale, options);
253
245
 
254
- if (translateOnScale) {
255
- // Translate towards point (ex. mouse cursor/center) while zooming in/out
256
- const invertTransformPoint = {
257
- x: (point.x - $translate.x) / currentScale,
258
- y: (point.y - $translate.y) / currentScale,
259
- };
260
- const newTranslate = {
261
- x: point.x - invertTransformPoint.x * newScale,
262
- y: point.y - invertTransformPoint.y * newScale,
263
- };
264
- setTranslate(newTranslate, options);
265
- }
246
+ // Translate towards point (ex. mouse cursor/center) while zooming in/out
247
+ const invertTransformPoint = {
248
+ x: (point.x - $translate.x) / currentScale,
249
+ y: (point.y - $translate.y) / currentScale,
250
+ };
251
+ const newTranslate = {
252
+ x: point.x - invertTransformPoint.x * newScale,
253
+ y: point.y - invertTransformPoint.y * newScale,
254
+ };
255
+ setTranslate(newTranslate, options);
266
256
  }
267
257
 
268
258
  const translating = motionFinishHandler();
@@ -37,10 +37,9 @@ import { motionStore, type MotionOptions } from '../stores/motionStore.js';
37
37
  declare const __propDef: {
38
38
  props: {
39
39
  mode?: TransformMode;
40
- /** Translate towards point (ex. mouse cursor/center) while zooming in/out */ translateOnScale?: boolean;
41
40
  spring?: boolean | Parameters<typeof motionStore>[1]["spring"];
42
41
  tweened?: boolean | Parameters<typeof motionStore>[1]["tweened"];
43
- processTranslate?: (x: number, y: number, deltaX: number, deltaY: number, scale: number) => {
42
+ processTranslate?: (x: number, y: number, deltaX: number, deltaY: number) => {
44
43
  x: number;
45
44
  y: number;
46
45
  };
@@ -151,10 +151,9 @@ declare class __sveltets_Render<TData> {
151
151
  }> | undefined;
152
152
  transform?: Partial<{
153
153
  mode?: "none" | "canvas" | "manual";
154
- translateOnScale?: boolean;
155
154
  spring?: boolean | Parameters<typeof import("../../stores/motionStore").motionStore>[1]["spring"];
156
155
  tweened?: boolean | Parameters<typeof import("../../stores/motionStore").motionStore>[1]["tweened"];
157
- processTranslate?: (x: number, y: number, deltaX: number, deltaY: number, scale: number) => {
156
+ processTranslate?: (x: number, y: number, deltaX: number, deltaY: number) => {
158
157
  x: number;
159
158
  y: number;
160
159
  };
@@ -177,12 +177,7 @@
177
177
  };
178
178
  context.translate(newTranslate.x, newTranslate.y);
179
179
  } else if (mode === 'canvas') {
180
- const center = { x: $width / 2, y: $height / 2 };
181
- const newTranslate = {
182
- x: $translate.x * $scale + center.x - center.x * $scale,
183
- y: $translate.y * $scale + center.y - center.y * $scale,
184
- };
185
- context.translate(newTranslate.x, newTranslate.y);
180
+ context.translate($translate.x, $translate.y);
186
181
  context.scale($scale, $scale);
187
182
  }
188
183
 
@@ -40,12 +40,7 @@
40
40
  ? `translate(${center === 'x' || center === true ? $width / 2 : 0}, ${center === 'y' || center === true ? $height / 2 : 0})`
41
41
  : '';
42
42
  $: if (mode === 'canvas') {
43
- const center = { x: $width / 2, y: $height / 2 };
44
- const newTranslate = {
45
- x: $translate.x * $scale + center.x - center.x * $scale,
46
- y: $translate.y * $scale + center.y - center.y * $scale,
47
- };
48
- transform = `translate(${newTranslate.x}px,${newTranslate.y}px) scale(${$scale})`;
43
+ transform = `translate(${$translate.x}px,${$translate.y}px) scale(${$scale})`;
49
44
  }
50
45
 
51
46
  setRenderContext('html');
@@ -44,12 +44,7 @@
44
44
  ? `translate(${center === 'x' || center === true ? $width / 2 : 0}, ${center === 'y' || center === true ? $height / 2 : 0})`
45
45
  : '';
46
46
  $: if (mode === 'canvas') {
47
- const center = { x: $width / 2, y: $height / 2 };
48
- const newTranslate = {
49
- x: $translate.x * $scale + center.x - center.x * $scale,
50
- y: $translate.y * $scale + center.y - center.y * $scale,
51
- };
52
- transform = `translate(${newTranslate.x},${newTranslate.y}) scale(${$scale})`;
47
+ transform = `translate(${$translate.x},${$translate.y}) scale(${$scale})`;
53
48
  }
54
49
 
55
50
  setRenderContext('svg');
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "author": "Sean Lynch <techniq35@gmail.com>",
5
5
  "license": "MIT",
6
6
  "repository": "techniq/layerchart",
7
- "version": "0.97.1",
7
+ "version": "0.98.0",
8
8
  "devDependencies": {
9
9
  "@changesets/cli": "^2.27.12",
10
10
  "@mdi/js": "^7.4.47",