Skip to content

Commit 0a4cddd

Browse files
authored
Merge pull request #1 from CycleZLab/copilot/fix-field-area-canvas-resize
Fix canvas not resizing with window resize
2 parents 55c7a10 + f6ec875 commit 0a4cddd

1 file changed

Lines changed: 32 additions & 9 deletions

File tree

src/App.svelte

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<script lang="ts">
22
import * as d3 from "d3";
3-
import { onMount } from "svelte";
3+
import { onMount, onDestroy } from "svelte";
44
import Two from "two.js";
55
import type { Path } from "two.js/src/path";
66
import type { Line as PathLine } from "two.js/src/shapes/line";
@@ -23,6 +23,7 @@
2323
2424
let two: Two;
2525
let twoElement: HTMLDivElement;
26+
let resizeTrigger = 0; // Used to trigger reactive updates on window resize
2627
2728
let pointRadius = 1.15;
2829
let lineWidth = 0.57;
@@ -48,19 +49,27 @@
4849
4950
/**
5051
* Converter for X axis from inches to pixels.
52+
* Updates when twoElement dimensions or resizeTrigger changes.
5153
*/
52-
$: x = d3
53-
.scaleLinear()
54-
.domain([0, 144])
55-
.range([0, twoElement?.clientWidth ?? 144]);
54+
$: {
55+
void resizeTrigger; // Force reactive update when resizeTrigger changes
56+
x = d3
57+
.scaleLinear()
58+
.domain([0, 144])
59+
.range([0, twoElement?.clientWidth ?? 144]);
60+
}
5661
5762
/**
5863
* Converter for Y axis from inches to pixels.
64+
* Updates when twoElement dimensions or resizeTrigger changes.
5965
*/
60-
$: y = d3
61-
.scaleLinear()
62-
.domain([0, 144])
63-
.range([twoElement?.clientHeight ?? 144, 0]);
66+
$: {
67+
void resizeTrigger; // Force reactive update when resizeTrigger changes
68+
y = d3
69+
.scaleLinear()
70+
.domain([0, 144])
71+
.range([twoElement?.clientHeight ?? 144, 0]);
72+
}
6473
6574
let lineGroup = new Two.Group();
6675
lineGroup.id = "line-group";
@@ -605,6 +614,14 @@
605614
return result;
606615
}
607616
617+
// Handle window resize to update canvas dimensions
618+
const handleResize = () => {
619+
if (two) {
620+
two.fit();
621+
resizeTrigger++; // Trigger reactive updates
622+
}
623+
};
624+
608625
onMount(() => {
609626
two = new Two({
610627
fitted: true,
@@ -663,6 +680,12 @@
663680
two.renderer.domElement.addEventListener("mouseup", () => {
664681
isDown = false;
665682
});
683+
684+
window.addEventListener("resize", handleResize);
685+
});
686+
687+
onDestroy(() => {
688+
window.removeEventListener("resize", handleResize);
666689
});
667690
668691
document.addEventListener("keydown", function (evt) {

0 commit comments

Comments
 (0)