Skip to content

Commit 5d95e25

Browse files
MichaelDeBoeyCompuIves
authored andcommitted
Refactor Cube to functional component with hooks (codesandbox#1939)
1 parent fac7134 commit 5d95e25

File tree

1 file changed

+64
-63
lines changed
  • packages/homepage/src/components

1 file changed

+64
-63
lines changed

packages/homepage/src/components/Cube.js

Lines changed: 64 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -45,73 +45,74 @@ const Side = styled.div`
4545
transform: ${({ rotate }) => rotate} translateZ(${({ size }) => size / 2}px);
4646
`;
4747

48+
const isSafari =
49+
typeof navigator !== 'undefined' &&
50+
/^((?!chrome|android).)*safari/i.test(navigator.userAgent);
51+
const SHADOW_SIZE = isSafari ? 100 : 150;
52+
4853
type Props = {
49-
size: number,
5054
className: string,
51-
noAnimation: ?boolean,
52-
speed: number,
5355
color: string,
56+
noAnimation: ?boolean,
5457
offset: number,
58+
size: number,
59+
speed: number,
5560
};
61+
const GlowCube = ({
62+
className,
63+
color = 'rgba(242,119,119,0.5)',
64+
id,
65+
noAnimation,
66+
offset = 0,
67+
ref,
68+
size = 150,
69+
speed = 1,
70+
}: Props) => (
71+
<Cube id={id} ref={ref} className={className} size={size}>
72+
<Sides
73+
color={color}
74+
offset={offset}
75+
speed={speed}
76+
noAnimation={noAnimation}
77+
size={size}
78+
>
79+
<Side
80+
rotate="rotateX(90deg)"
81+
size={size}
82+
style={{ boxShadow: `0px 0px ${SHADOW_SIZE}px ${color()}` }}
83+
/>
5684

57-
const isSafari =
58-
typeof navigator !== 'undefined' &&
59-
/^((?!chrome|android).)*safari/i.test(navigator.userAgent);
60-
const SHADOW_SIZE = isSafari ? 100 : 150;
85+
<Side
86+
rotate="rotateX(-90deg)"
87+
size={size}
88+
style={{ boxShadow: `0px 0px ${SHADOW_SIZE}px ${color()}` }}
89+
/>
6190

62-
export default class GlowCube extends React.PureComponent<Props> {
63-
render() {
64-
const {
65-
size = 150,
66-
color = 'rgba(242,119,119,0.5)',
67-
speed = 1,
68-
offset = 0,
69-
noAnimation,
70-
className,
71-
ref,
72-
id,
73-
} = this.props;
74-
return (
75-
<Cube id={id} ref={ref} className={className} size={size}>
76-
<Sides
77-
color={color}
78-
offset={offset}
79-
speed={speed}
80-
noAnimation={noAnimation}
81-
size={size}
82-
>
83-
<Side
84-
style={{ boxShadow: `0px 0px ${SHADOW_SIZE}px ${color()}` }}
85-
rotate="rotateX(90deg)"
86-
size={size}
87-
/>
88-
<Side
89-
style={{ boxShadow: `0px 0px ${SHADOW_SIZE}px ${color()}` }}
90-
rotate="rotateX(-90deg)"
91-
size={size}
92-
/>
93-
<Side
94-
style={{ boxShadow: `0px 0px ${SHADOW_SIZE}px ${color()}` }}
95-
rotate="rotateY(0deg)"
96-
size={size}
97-
/>
98-
<Side
99-
style={{ boxShadow: `0px 0px ${SHADOW_SIZE}px ${color()}` }}
100-
rotate="rotateY(-180deg)"
101-
size={size}
102-
/>
103-
<Side
104-
style={{ boxShadow: `0px 0px ${SHADOW_SIZE}px ${color()}` }}
105-
rotate="rotateY(-90deg)"
106-
size={size}
107-
/>
108-
<Side
109-
style={{ boxShadow: `0px 0px ${SHADOW_SIZE}px ${color()}` }}
110-
rotate="rotateY(90deg)"
111-
size={size}
112-
/>
113-
</Sides>
114-
</Cube>
115-
);
116-
}
117-
}
91+
<Side
92+
rotate="rotateY(0deg)"
93+
size={size}
94+
style={{ boxShadow: `0px 0px ${SHADOW_SIZE}px ${color()}` }}
95+
/>
96+
97+
<Side
98+
rotate="rotateY(-180deg)"
99+
size={size}
100+
style={{ boxShadow: `0px 0px ${SHADOW_SIZE}px ${color()}` }}
101+
/>
102+
103+
<Side
104+
rotate="rotateY(-90deg)"
105+
size={size}
106+
style={{ boxShadow: `0px 0px ${SHADOW_SIZE}px ${color()}` }}
107+
/>
108+
109+
<Side
110+
rotate="rotateY(90deg)"
111+
size={size}
112+
style={{ boxShadow: `0px 0px ${SHADOW_SIZE}px ${color()}` }}
113+
/>
114+
</Sides>
115+
</Cube>
116+
);
117+
118+
export default GlowCube;

0 commit comments

Comments
 (0)