Spaces:
Runtime error
Runtime error
params for scale and translate padding
Browse files
frontend/src/lib/Canvas.svelte
CHANGED
@@ -39,29 +39,25 @@
|
|
39 |
}
|
40 |
|
41 |
onMount(() => {
|
42 |
-
const margin = {
|
43 |
-
top: 0,
|
44 |
-
right: 0,
|
45 |
-
bottom: 0,
|
46 |
-
left: 0
|
47 |
-
};
|
48 |
const scale = width / containerEl.clientWidth;
|
|
|
|
|
49 |
const zoomHandler = zoom()
|
50 |
-
.scaleExtent([1 / scale, 1])
|
51 |
// .extent([
|
52 |
// [0, 0],
|
53 |
// [width, height]
|
54 |
// ])
|
55 |
.translateExtent([
|
56 |
-
[-
|
57 |
-
[width +
|
58 |
])
|
59 |
.tapDistance(10)
|
60 |
.on('zoom', zoomed);
|
61 |
|
62 |
const selection = select(canvasEl.parentElement)
|
63 |
.call(zoomHandler as any)
|
64 |
-
.call(zoomHandler.scaleTo as any, 1 / scale /
|
65 |
.on('pointermove', handlePointerMove)
|
66 |
.on('pointerleave', handlePointerLeave);
|
67 |
|
@@ -69,8 +65,8 @@
|
|
69 |
function zoomReset() {
|
70 |
console.log('zoom reset');
|
71 |
const scale = width / containerEl.clientWidth;
|
72 |
-
zoomHandler.scaleExtent([1 / scale /
|
73 |
-
selection.call(zoomHandler.scaleTo as any, 1 / scale /
|
74 |
}
|
75 |
window.addEventListener('resize', zoomReset);
|
76 |
return () => {
|
|
|
39 |
}
|
40 |
|
41 |
onMount(() => {
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
const scale = width / containerEl.clientWidth;
|
43 |
+
const translatePadding = 0.1;
|
44 |
+
const scalePadding = 1.2;
|
45 |
const zoomHandler = zoom()
|
46 |
+
.scaleExtent([1 / scale / scalePadding, 1])
|
47 |
// .extent([
|
48 |
// [0, 0],
|
49 |
// [width, height]
|
50 |
// ])
|
51 |
.translateExtent([
|
52 |
+
[-width * translatePadding, -height * translatePadding],
|
53 |
+
[width * (1 + translatePadding), height * (1 + translatePadding)]
|
54 |
])
|
55 |
.tapDistance(10)
|
56 |
.on('zoom', zoomed);
|
57 |
|
58 |
const selection = select(canvasEl.parentElement)
|
59 |
.call(zoomHandler as any)
|
60 |
+
.call(zoomHandler.scaleTo as any, 1 / scale / scalePadding)
|
61 |
.on('pointermove', handlePointerMove)
|
62 |
.on('pointerleave', handlePointerLeave);
|
63 |
|
|
|
65 |
function zoomReset() {
|
66 |
console.log('zoom reset');
|
67 |
const scale = width / containerEl.clientWidth;
|
68 |
+
zoomHandler.scaleExtent([1 / scale / scalePadding, 1])
|
69 |
+
selection.call(zoomHandler.scaleTo as any, 1 / scale / scalePadding);
|
70 |
}
|
71 |
window.addEventListener('resize', zoomReset);
|
72 |
return () => {
|