@@ -6,7 +6,7 @@ import { getVisibleDomains } from '../utils';
6
6
import Axis from './Axis' ;
7
7
import styles from './AxisSystem.module.css' ;
8
8
import { useAxisSystemContext } from './AxisSystemProvider' ;
9
- import Overlay from './Overlay ' ;
9
+ import Html from './Html ' ;
10
10
11
11
interface Props {
12
12
axisOffsets : AxisOffsets ;
@@ -16,6 +16,7 @@ interface Props {
16
16
function AxisSystem ( props : Props ) {
17
17
const { axisOffsets, title } = props ;
18
18
19
+ const gl = useThree ( ( state ) => state . gl ) ;
19
20
const canvasSize = useThree ( ( state ) => state . size ) ;
20
21
const { width, height } = canvasSize ;
21
22
@@ -26,35 +27,38 @@ function AxisSystem(props: Props) {
26
27
) ;
27
28
28
29
return (
29
- < Overlay
30
- className = { styles . axisSystem }
31
- style = { {
32
- // Take over space reserved for axis by VisCanvas
33
- top : - axisOffsets . top ,
34
- left : - axisOffsets . left ,
35
- width : width + axisOffsets . left + axisOffsets . right ,
36
- height : height + axisOffsets . bottom + axisOffsets . top ,
37
- gridTemplateColumns : `${ axisOffsets . left } px 1fr ${ axisOffsets . right } px` ,
38
- gridTemplateRows : `${ axisOffsets . top } px 1fr ${ axisOffsets . bottom } px` ,
39
- } }
40
- >
41
- { title && < p className = { styles . title } > { title } </ p > }
42
- < Axis
43
- type = "abscissa"
44
- config = { abscissaConfig }
45
- domain = { xVisibleDomain }
46
- canvasSize = { canvasSize }
47
- svgSize = { { width, height : axisOffsets . bottom } }
48
- />
49
- < Axis
50
- type = "ordinate"
51
- config = { ordinateConfig }
52
- domain = { yVisibleDomain }
53
- canvasSize = { canvasSize }
54
- svgSize = { { width : axisOffsets . left , height } }
55
- flipAxis
56
- />
57
- </ Overlay >
30
+ // Append to `canvasWrapper` instead of default container `r3fRoot`, which hides overflow
31
+ < Html container = { gl . domElement . parentElement ?. parentElement || undefined } >
32
+ < div
33
+ className = { styles . axisSystem }
34
+ style = { {
35
+ // Take over space reserved for axis by VisCanvas
36
+ top : - axisOffsets . top ,
37
+ left : - axisOffsets . left ,
38
+ width : width + axisOffsets . left + axisOffsets . right ,
39
+ height : height + axisOffsets . bottom + axisOffsets . top ,
40
+ gridTemplateColumns : `${ axisOffsets . left } px 1fr ${ axisOffsets . right } px` ,
41
+ gridTemplateRows : `${ axisOffsets . top } px 1fr ${ axisOffsets . bottom } px` ,
42
+ } }
43
+ >
44
+ { title && < p className = { styles . title } > { title } </ p > }
45
+ < Axis
46
+ type = "abscissa"
47
+ config = { abscissaConfig }
48
+ domain = { xVisibleDomain }
49
+ canvasSize = { canvasSize }
50
+ svgSize = { { width, height : axisOffsets . bottom } }
51
+ />
52
+ < Axis
53
+ type = "ordinate"
54
+ config = { ordinateConfig }
55
+ domain = { yVisibleDomain }
56
+ canvasSize = { canvasSize }
57
+ svgSize = { { width : axisOffsets . left , height } }
58
+ flipAxis
59
+ />
60
+ </ div >
61
+ </ Html >
58
62
) ;
59
63
}
60
64
0 commit comments