|
49 | 49 |
|
50 | 50 | /** |
51 | 51 | * Converter for X axis from inches to pixels. |
| 52 | + * Updates when twoElement dimensions or resizeTrigger changes. |
52 | 53 | */ |
53 | | - $: x = d3 |
54 | | - .scaleLinear() |
55 | | - .domain([0, 144]) |
56 | | - .range([0, twoElement?.clientWidth ?? 144]), |
| 54 | + $: { |
57 | 55 | resizeTrigger; // Depend on resizeTrigger to update on window resize |
| 56 | + x = d3 |
| 57 | + .scaleLinear() |
| 58 | + .domain([0, 144]) |
| 59 | + .range([0, twoElement?.clientWidth ?? 144]); |
| 60 | + } |
58 | 61 |
|
59 | 62 | /** |
60 | 63 | * Converter for Y axis from inches to pixels. |
| 64 | + * Updates when twoElement dimensions or resizeTrigger changes. |
61 | 65 | */ |
62 | | - $: y = d3 |
63 | | - .scaleLinear() |
64 | | - .domain([0, 144]) |
65 | | - .range([twoElement?.clientHeight ?? 144, 0]), |
| 66 | + $: { |
66 | 67 | resizeTrigger; // Depend on resizeTrigger to update on window resize |
| 68 | + y = d3 |
| 69 | + .scaleLinear() |
| 70 | + .domain([0, 144]) |
| 71 | + .range([twoElement?.clientHeight ?? 144, 0]); |
| 72 | + } |
67 | 73 |
|
68 | 74 | let lineGroup = new Two.Group(); |
69 | 75 | lineGroup.id = "line-group"; |
|
608 | 614 | return result; |
609 | 615 | } |
610 | 616 |
|
| 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 | +
|
611 | 625 | onMount(() => { |
612 | 626 | two = new Two({ |
613 | 627 | fitted: true, |
|
667 | 681 | isDown = false; |
668 | 682 | }); |
669 | 683 |
|
670 | | - // Handle window resize to update canvas dimensions |
671 | | - const handleResize = () => { |
672 | | - if (two) { |
673 | | - two.fit(); |
674 | | - resizeTrigger++; // Trigger reactive updates |
675 | | - } |
676 | | - }; |
677 | | - |
678 | 684 | window.addEventListener("resize", handleResize); |
| 685 | + }); |
679 | 686 |
|
680 | | - // Clean up on component destroy |
681 | | - return () => { |
682 | | - window.removeEventListener("resize", handleResize); |
683 | | - }; |
| 687 | + onDestroy(() => { |
| 688 | + window.removeEventListener("resize", handleResize); |
684 | 689 | }); |
685 | 690 |
|
686 | 691 | document.addEventListener("keydown", function (evt) { |
|
0 commit comments