anim-3d-obj 1.1.10 → 1.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/README.md +108 -154
  2. package/img.png +0 -0
  3. package/package.json +47 -46
  4. package/public/favicon.ico +0 -0
  5. package/public/index.html +43 -0
  6. package/public/logo192.png +0 -0
  7. package/public/logo512.png +0 -0
  8. package/public/manifest.json +25 -0
  9. package/public/robots.txt +3 -0
  10. package/src/App.css +810 -0
  11. package/src/App.test.tsx +10 -0
  12. package/src/App.tsx +83 -0
  13. package/src/components/Cuboid.tsx +112 -0
  14. package/src/components/Faces/Face.tsx +105 -0
  15. package/src/components/Faces/FaceInter.d.ts +70 -0
  16. package/src/components/index.ts +2 -0
  17. package/src/components/styles/Anim.d.ts +11 -0
  18. package/src/components/styles/AnimWrap.tsx +79 -0
  19. package/src/components/styles/Anims.ts +205 -0
  20. package/src/components/styles/Scene.tsx +33 -0
  21. package/src/index.tsx +19 -0
  22. package/src/reportWebVitals.ts +15 -0
  23. package/src/setupTests.ts +5 -0
  24. package/tsconfig.json +26 -0
  25. package/LICENSE +0 -21
  26. package/dist/esm/components/Card.d.ts +0 -2
  27. package/dist/esm/components/Card.js +0 -18
  28. package/dist/esm/components/Card.js.map +0 -1
  29. package/dist/esm/components/Cuboid.d.ts +0 -2
  30. package/dist/esm/components/Cuboid.js +0 -29
  31. package/dist/esm/components/Cuboid.js.map +0 -1
  32. package/dist/esm/components/Faces/Face.d.ts +0 -3
  33. package/dist/esm/components/Faces/Face.js +0 -77
  34. package/dist/esm/components/Faces/Face.js.map +0 -1
  35. package/dist/esm/components/Ribbon.d.ts +0 -2
  36. package/dist/esm/components/Ribbon.js +0 -26
  37. package/dist/esm/components/Ribbon.js.map +0 -1
  38. package/dist/esm/components/styles/AnimWrap.d.ts +0 -2
  39. package/dist/esm/components/styles/AnimWrap.js +0 -78
  40. package/dist/esm/components/styles/AnimWrap.js.map +0 -1
  41. package/dist/esm/components/styles/Anims.d.ts +0 -30
  42. package/dist/esm/components/styles/Anims.js +0 -271
  43. package/dist/esm/components/styles/Anims.js.map +0 -1
  44. package/dist/esm/components/styles/Global.d.ts +0 -1
  45. package/dist/esm/components/styles/Global.js +0 -8
  46. package/dist/esm/components/styles/Global.js.map +0 -1
  47. package/dist/esm/components/styles/Scene.d.ts +0 -10
  48. package/dist/esm/components/styles/Scene.js +0 -16
  49. package/dist/esm/components/styles/Scene.js.map +0 -1
  50. package/dist/esm/index.d.ts +0 -1
  51. package/dist/esm/index.js +0 -2
  52. package/dist/esm/index.js.map +0 -1
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ import { render } from "@testing-library/react";
3
+ import { Provider } from "react-redux";
4
+ import App from "./App";
5
+
6
+ test("renders learn react link", () => {
7
+ const { getByText } = render(<App />);
8
+
9
+ expect(getByText(/learn/i)).toBeInTheDocument();
10
+ });
package/src/App.tsx ADDED
@@ -0,0 +1,83 @@
1
+ import Cuboid from "./components/Cuboid";
2
+
3
+ function App() {
4
+ const faceprops = {
5
+ front: true,
6
+ back: true,
7
+ left: true,
8
+ right: true,
9
+ top: true,
10
+ bottom: true,
11
+ };
12
+ const globalStyles: object = {
13
+ // global styles
14
+ border: "1px solid #00f",
15
+ bgc: "#009",
16
+ opac: 0.9,
17
+ bfv: "visible",
18
+ fontFamily: "Cochin",
19
+ };
20
+ const animSpecs: object = {
21
+ anim1: "Y360",
22
+ anim2: "X360",
23
+ anim1duration: 5,
24
+ anim2duration: 23,
25
+ anim1count: "infinite",
26
+ anim1low: "-120",
27
+ anim2hi: "120",
28
+ anim2low: "-81",
29
+ anim2count: "infinite",
30
+ anim1direction: "normal",
31
+ anim2direction: "normal",
32
+ };
33
+
34
+ const indivStyles: object = {
35
+ // // face individual styles (over rides global)
36
+ bottom: {
37
+ bfv: "visible",
38
+ fontFamily: "Helvetica",
39
+ },
40
+ front: {
41
+ border: "1px solid #f00",
42
+ bgc: "#f00",
43
+ bfv: "visible",
44
+ fontFamily: "Arial, Sans",
45
+ },
46
+ left: {
47
+ bgc: "yellow",
48
+ },
49
+ top: {
50
+ bgc: "pink",
51
+ },
52
+ right: {
53
+ bgc: "purple",
54
+ },
55
+ back: {
56
+ border: "1px solid #f00",
57
+ bgc: "#0f0",
58
+ bfv: "visible",
59
+ fontFamily: "Arial, Sans",
60
+ },
61
+ };
62
+
63
+ return (
64
+ <div style={{ padding: 150 }}>
65
+ <Cuboid
66
+ width={300}
67
+ height={200}
68
+ depth={100}
69
+ perspectiveOrigin='50% 50%'
70
+ zIndex={10}
71
+ animSpecs={animSpecs}
72
+ indivStyles={indivStyles}
73
+ faces={faceprops}
74
+ globalStyles={globalStyles}
75
+ >
76
+ {}
77
+ </Cuboid>
78
+ <div style={{ padding: 5 }} />
79
+ </div>
80
+ );
81
+ }
82
+
83
+ export default App;
@@ -0,0 +1,112 @@
1
+ import styled from "styled-components";
2
+ import React from "react";
3
+ import { AnimWrap } from "./styles/AnimWrap";
4
+ import { SceneStyle } from "./styles/Scene";
5
+ import { CuboidProps } from "./Faces/FaceInter";
6
+ import Face from "./Faces/Face";
7
+
8
+ const CuboidWrapper = styled.div`
9
+ width: 100%;
10
+ height: 100%;
11
+ position: relative;
12
+ transform-style: preserve-3d;
13
+ `;
14
+
15
+ const Cuboid = (props: CuboidProps): any => {
16
+ let color = "#eee",
17
+ fontWeight: number | string = 800,
18
+ fontFamily: string = "helvetica",
19
+ textShadow: string = "1px 1px #555",
20
+ lineHeight: number = 1.2,
21
+ fontSize: number | string = 20,
22
+ textAlign: string | any = "center";
23
+
24
+ let {
25
+ animSpecs = {},
26
+ width = 5,
27
+ height = 5,
28
+ depth = 5,
29
+ faces,
30
+ globalStyles,
31
+ indivStyles,
32
+ tranz = (+height / 2) | 0,
33
+ perspectiveOrigin,
34
+ zIndex,
35
+ } = props;
36
+
37
+ const buildFace = (faceType: any, child: any): any => {
38
+ //const { faceType, child } = props;
39
+
40
+ return (
41
+ <Face
42
+ width={width}
43
+ height={height}
44
+ depth={depth}
45
+ faceType={faceType}
46
+ id={faceType}
47
+ tranz={tranz}
48
+ // if specified opac / bgc / border will over-ride globalStyles
49
+ globalStyles={globalStyles}
50
+ indivStyles={indivStyles}
51
+ >
52
+ <div
53
+ style={{
54
+ color,
55
+ fontWeight,
56
+ textShadow,
57
+ lineHeight,
58
+ fontSize,
59
+ fontFamily,
60
+ textAlign,
61
+ }}
62
+ >
63
+ {child}
64
+ </div>
65
+ </Face>
66
+ );
67
+ };
68
+
69
+ return (
70
+ <SceneStyle
71
+ width={width}
72
+ height={height}
73
+ perspectiveOrigin={perspectiveOrigin}
74
+ zIndex={zIndex}
75
+ >
76
+ <AnimWrap
77
+ duration={animSpecs.anim1duration}
78
+ iterationCount={animSpecs.anim1count}
79
+ animName={animSpecs.anim1}
80
+ animLow={animSpecs.anim1low}
81
+ animHi={animSpecs.anim1hi}
82
+ animDirection={animSpecs.anim1direction}
83
+ >
84
+ <AnimWrap
85
+ duration={animSpecs.anim2duration}
86
+ iterationCount={animSpecs.anim2count}
87
+ animName={animSpecs.anim2}
88
+ animLow={animSpecs.anim2low}
89
+ animHi={animSpecs.anim2hi}
90
+ animDirection={animSpecs.anim2direction}
91
+ >
92
+ <CuboidWrapper>
93
+ {!!faces && !!faces.front
94
+ ? buildFace("front", "FRONT")
95
+ : null}
96
+ {!!faces && !!faces.right
97
+ ? buildFace("right", "RIGHT")
98
+ : null}
99
+ {!!faces && !!faces.back ? buildFace("back", "BACK") : null}
100
+ {!!faces && !!faces.left ? buildFace("left", "LEFT") : null}
101
+ {!!faces && !!faces.top ? buildFace("top", "TOP") : null}
102
+ {!!faces && !!faces.bottom
103
+ ? buildFace("bottom", "BOTTOM")
104
+ : null}
105
+ </CuboidWrapper>
106
+ </AnimWrap>
107
+ </AnimWrap>
108
+ </SceneStyle>
109
+ );
110
+ };
111
+
112
+ export default Cuboid;
@@ -0,0 +1,105 @@
1
+ import styled from "styled-components";
2
+ import React from "react";
3
+ import { FaceProps, VarsProps } from "./FaceInter";
4
+
5
+ const Face = (props: FaceProps): any => {
6
+ let {
7
+ bfv = false,
8
+ bgc = false,
9
+ border = false,
10
+ children,
11
+ depth = 10,
12
+ faceType,
13
+ globalStyles = {},
14
+ fontFamily,
15
+ height = 10,
16
+ indivStyles = false,
17
+ left = 0,
18
+ margin = 0,
19
+ opac = false,
20
+ padding = 20,
21
+ position = "absolute",
22
+ top = 0,
23
+ tranz = 80,
24
+ width = 100,
25
+ } = props;
26
+
27
+ let transform;
28
+
29
+ const setCustomVars = (vars: VarsProps, props: FaceProps): boolean => {
30
+ bfv = !!vars && !!vars.bfv ? vars.bfv : props.bfv;
31
+ bgc = !!vars && !!vars.bgc ? vars.bgc : props.bgc;
32
+ opac = !!vars && !!vars.opac ? vars.opac : props.opac;
33
+ border = !!vars && !!vars.border ? vars.border : props.border;
34
+ fontFamily =
35
+ !!vars && !!vars.fontFamily ? vars.fontFamily : props.fontFamily;
36
+ return true;
37
+ };
38
+
39
+ if (faceType === "bottom") {
40
+ tranz = +height - +depth / 2;
41
+ height = +depth;
42
+ transform = `transform: rotateX(-90deg) translateZ(${tranz}px);`;
43
+ setCustomVars(indivStyles["bottom"], props);
44
+ } else if (faceType === "top") {
45
+ height = +depth;
46
+ if (!!depth) tranz = +depth / 2;
47
+ transform = `transform: rotateX(90deg) translateZ(${tranz}px);`;
48
+ setCustomVars(indivStyles["top"], props);
49
+ } else if (faceType === "front") {
50
+ if (!!depth) tranz = +depth / 2;
51
+ transform = `transform: rotateY(0deg) translateZ(${tranz}px);`;
52
+ setCustomVars(indivStyles["front"], props);
53
+ } else if (faceType === "back") {
54
+ if (!!depth) tranz = +depth / 2;
55
+ transform = `transform: rotateY(180deg) translateZ(${tranz}px);`;
56
+ setCustomVars(indivStyles["back"], props);
57
+ } else if (faceType === "right") {
58
+ if (height > width && !depth) {
59
+ tranz = -(+height / 2 - +width);
60
+ width = +height;
61
+ } else if (width > height && !depth) {
62
+ tranz = +height / 2;
63
+ height = +width;
64
+ } else {
65
+ tranz = +width - +depth / 2;
66
+ width = +depth;
67
+ }
68
+ transform = `transform: rotateY(90deg) translateZ(${tranz}px);`;
69
+ setCustomVars(indivStyles["right"], props);
70
+ } else {
71
+ if (height > width && !depth) {
72
+ console.log(1);
73
+ tranz = -(+height / 2 - +width);
74
+ width = +height;
75
+ } else if (width > height && !depth) {
76
+ console.log(2);
77
+ tranz = +height / 2;
78
+ height = +width;
79
+ } else {
80
+ tranz = +depth / 2;
81
+ width = +depth;
82
+ }
83
+ transform = `transform: rotateY(-90deg) translateZ(${tranz}px);`;
84
+ setCustomVars(indivStyles["left"], props);
85
+ }
86
+
87
+ const Specs: any = styled.div`
88
+ opacity: ${!!opac ? opac : globalStyles.opac};
89
+ position: ${position};
90
+ left: ${left};
91
+ margin: ${margin};
92
+ padding: ${padding};
93
+ width: ${width}px;
94
+ font-family: ${fontFamily};
95
+ height: ${height}px;
96
+ background-color: ${!!bgc ? bgc : globalStyles.bgc};
97
+ border: ${!!border ? border : globalStyles.border};
98
+ backface-visibility: ${!!bfv ? bfv : globalStyles.bfv};
99
+ ${transform}
100
+ top: ${top};
101
+ `;
102
+ return <Specs>{children}</Specs>;
103
+ };
104
+
105
+ export default Face;
@@ -0,0 +1,70 @@
1
+ export interface FaceProps {
2
+ bfv?: string | boolean;
3
+ bgc?: string | boolean;
4
+ border?: string | boolean;
5
+ children?: any;
6
+ faceType?: any;
7
+ globalStyles?: any;
8
+ fontFamily?: string | any;
9
+ depth?: number | any;
10
+ height?: number | string;
11
+ id?: string | number | boolean;
12
+ indivStyles?: object | any;
13
+ left?: number;
14
+ margin?: number | string;
15
+ opac?: number | string | boolean | undefined;
16
+ padding?: number | string;
17
+ position?: number;
18
+ top?: number;
19
+ tranz: any;
20
+ width?: number | string;
21
+ }
22
+
23
+ export interface CuboidProps {
24
+ animSpecs?:
25
+ | {
26
+ anim1?: string | undefined;
27
+ anim1duration?: string | undefined;
28
+ anim1low?: number | undefined; // rotation degrees
29
+ anim1hi?: number | undefined; // rotation degrees
30
+ anim1count?: number | string | undefined;
31
+ anim2?: string | undefined;
32
+ anim2duration?: string | undefined;
33
+ anim2hi?: number | undefined; // rotation degrees
34
+ anim2low?: number | undefined; // rotation degrees
35
+ anim2count?: number | string | undefined;
36
+ anim1direction?: string | undefined;
37
+ anim2direction?: string | undefined;
38
+ }
39
+ | undefined;
40
+ children: any;
41
+ depth?: number;
42
+ globalStyles?:
43
+ | { border?: string; bgc?: string; opac?: number | string }
44
+ | any;
45
+ faces?:
46
+ | {
47
+ front: boolean;
48
+ back: boolean;
49
+ left: boolean;
50
+ right: boolean;
51
+ top: boolean;
52
+ bottom: boolean;
53
+ }
54
+ | undefined;
55
+
56
+ height?: number | string;
57
+ indivStyles?: object | string | undefined;
58
+ perspectiveOrigin?: string | undefined;
59
+ tranz?: number | undefined;
60
+ width?: number;
61
+ zIndex?: number | undefined;
62
+ }
63
+
64
+ export interface VarsProps {
65
+ bfv?: string | any;
66
+ bgc?: string | any;
67
+ border?: string | any;
68
+ opac?: string | any;
69
+ fontFamily?: string | any;
70
+ }
@@ -0,0 +1,2 @@
1
+ //export * from './CubeFace';
2
+ export * from "./Faces/Face";
@@ -0,0 +1,11 @@
1
+ export interface AnimStylesProps {
2
+ duration?: number | string;
3
+ iterationCount?: number | string;
4
+ animName?: string;
5
+ fillMode?: string;
6
+ children?: any;
7
+ borderColor?: string;
8
+ animLow?: number | undefined;
9
+ animHi?: number | undefined;
10
+ animDirection?: string | undefined;
11
+ }
@@ -0,0 +1,79 @@
1
+ import styled from "styled-components";
2
+ import React from "react";
3
+ import { AnimStylesProps } from "./Anim";
4
+ import { allAnims } from "./Anims";
5
+
6
+ export const AnimWrap = (props: AnimStylesProps) => {
7
+ const {
8
+ duration = 0,
9
+ iterationCount = 0,
10
+ animName = "noAnim",
11
+ fillMode = "forward",
12
+ children = "",
13
+ borderColor = "",
14
+ animLow = 0,
15
+ animHi = 0,
16
+ animDirection = "normal",
17
+ } = props;
18
+
19
+ const {
20
+ X360,
21
+ Y360,
22
+ fadeInkf,
23
+ wobY,
24
+ wobX,
25
+ fwdx018,
26
+ fwdx1836,
27
+ fwdx09,
28
+ fwdx918,
29
+ fwdx1827,
30
+ fwdx2736,
31
+ fwdy018,
32
+ fwdy1836,
33
+ fwdy09,
34
+ fwdy918,
35
+ fwdy1827,
36
+ fwdy2736,
37
+ noAnim,
38
+ } = allAnims({ animLow, animHi });
39
+ let theAnim: any = "noAnim";
40
+ // need to iterate through all animation posibilities and not use eval() to satisfy TS
41
+ if (animName === "X360") theAnim = X360;
42
+ else if (animName === "Y360") theAnim = Y360;
43
+ else if (animName === "fadeInkf") theAnim = fadeInkf;
44
+ else if (animName === "wobX") theAnim = wobX;
45
+ else if (animName === "wobY") theAnim = wobY;
46
+ else if (animName === "fwdx018") theAnim = fwdx018;
47
+ else if (animName === "fwdx1836") theAnim = fwdx1836;
48
+ else if (animName === "fwdx09") theAnim = fwdx09;
49
+ else if (animName === "fwdx918") theAnim = fwdx918;
50
+ else if (animName === "fwdx1827") theAnim = fwdx1827;
51
+ else if (animName === "fwdx2736") theAnim = fwdx2736;
52
+ else if (animName === "fwdy018") theAnim = fwdy018;
53
+ else if (animName === "fwdy1836") theAnim = fwdy1836;
54
+ else if (animName === "fwdy09") theAnim = fwdy09;
55
+ else if (animName === "fwdy918") theAnim = fwdy918;
56
+ else if (animName === "fwdy1827") theAnim = fwdy1827;
57
+ else if (animName === "fwdy2736") theAnim = fwdy2736;
58
+ else theAnim = noAnim;
59
+
60
+ const AnimWrapDiv: any = styled.div`
61
+ width: 100%;
62
+ height: 100%;
63
+ position: relative;
64
+ border: 0px dotted ${borderColor};
65
+ transform-style: preserve-3d;
66
+ -webkit-animation-duration: ${duration}s;
67
+ animation-duration: ${duration}s;
68
+ -webkit-animation-iteration-count: ${iterationCount};
69
+ animation-iteration-count: ${iterationCount};
70
+ -webkit-animation-name: ${theAnim};
71
+ animation-name: ${theAnim};
72
+ -webkit-animation-fill-mode: ${fillMode};
73
+ animation-fill-mode: ${fillMode};
74
+ animation-direction: ${animDirection};
75
+ -webkit-animation-direction: ${animDirection};
76
+ `;
77
+
78
+ return <AnimWrapDiv>{children}</AnimWrapDiv>;
79
+ };
@@ -0,0 +1,205 @@
1
+ import { keyframes } from "styled-components";
2
+
3
+ interface AllAnimsProps {
4
+ animLow?: number;
5
+ animHi?: number;
6
+ }
7
+
8
+ export const allAnims = (props: AllAnimsProps) => {
9
+ const { animLow = 0, animHi = 0 } = props;
10
+
11
+ const X360 = keyframes`
12
+ from {
13
+ -webkit-transform: rotateX(360deg);
14
+ transform: rotateX(360deg);
15
+ }
16
+ to {
17
+ -webkit-transform: rotateX(0deg);
18
+ transform: rotateX(0deg);
19
+ }
20
+ }`;
21
+
22
+ //////// Y360
23
+ const Y360 = keyframes`
24
+ from {
25
+ -webkit-transform: rotateY(360deg);
26
+ transform: rotateY(360deg);
27
+ }
28
+ to {
29
+ -webkit-transform: rotateY(0deg);
30
+ transform: rotateY(0deg);
31
+ }`;
32
+
33
+ const fadeInkf = keyframes`
34
+ from {
35
+ opacity: 0;
36
+ }
37
+ to {
38
+ opacity: 1;
39
+ }`;
40
+
41
+ const wobY = keyframes`
42
+ 0% {
43
+ -webkit-transform: rotateY(${animLow}deg);
44
+ transform: rotateY(${animLow}deg);
45
+ }
46
+ 50% {
47
+ -webkit-transform: rotateY(${animHi}deg);
48
+ transform: rotateY(${animHi}deg);
49
+ }
50
+ 100% {
51
+ -webkit-transform: rotateY(${animLow}deg);
52
+ transform: rotateY(${animLow}deg);
53
+ }`;
54
+
55
+ const wobX = keyframes`
56
+ 0% {
57
+ -webkit-transform: rotateX(${animLow}deg);
58
+ transform: rotateX(${animLow}deg);
59
+ }
60
+ 50% {
61
+ -webkit-transform: rotateX(${animHi}deg);
62
+ transform: rotateX(${animHi}deg);
63
+ }
64
+ 100% {
65
+ -webkit-transform: rotateX(${animLow}deg);
66
+ transform: rotateX(${animLow}deg);
67
+ }`;
68
+ /* ============================== x-axis 0-180 >180 - 360 */
69
+ const fwdx018 = keyframes`
70
+ from {
71
+ -webkit-transform: rotateX(360deg);
72
+ transform: rotateX(360deg);
73
+ }
74
+ to {
75
+ -webkit-transform: rotateX(180deg);
76
+ transform: rotateX(180deg);
77
+ }`;
78
+ const fwdx1836 = keyframes`
79
+ from {
80
+ -webkit-transform: rotateX(180deg);
81
+ transform: rotateX(180deg);
82
+ }
83
+ to {
84
+ -webkit-transform: rotateX(0deg);
85
+ transform: rotateX(0deg);
86
+ }`;
87
+ /* ============================= x-axis 0-90, 90-180, 180-270, 270-360 */
88
+ const fwdx09 = keyframes`
89
+ from {
90
+ -webkit-transform: rotateX(360deg);
91
+ transform: rotateX(360deg);
92
+ }
93
+ to {
94
+ -webkit-transform: rotateX(90deg);
95
+ transform: rotateX(90deg);
96
+ }`;
97
+ const fwdx918 = keyframes`
98
+ from {
99
+ -webkit-transform: rotateX(-90deg);
100
+ transform: rotateX(-90deg);
101
+ }
102
+ to {
103
+ -webkit-transform: rotateX(-180deg);
104
+ transform: rotateX(-180deg);
105
+ }`;
106
+ const fwdx1827 = keyframes`
107
+ from {
108
+ -webkit-transform: rotateX(-180deg);
109
+ transform: rotateX(-180deg);
110
+ }
111
+ to {
112
+ -webkit-transform: rotateX(-270deg);
113
+ transform: rotateX(-270deg);
114
+ }`;
115
+ const fwdx2736 = keyframes`
116
+ from {
117
+ -webkit-transform: rotateX(-270deg);
118
+ transform: rotateX(-270deg);
119
+ }
120
+ to {
121
+ -webkit-transform: rotateX(-360deg);
122
+ transform: rotateX(-360deg);
123
+ }`;
124
+
125
+ /* ============================== y-axis 0-180 >180 - 360 */
126
+ const fwdy018 = keyframes`
127
+ from {
128
+ -webkit-transform: rotateY(360deg);
129
+ transform: rotateY(360deg);
130
+ }
131
+ to {
132
+ -webkit-transform: rotateY(180deg);
133
+ transform: rotateY(180deg);
134
+ }`;
135
+ const fwdy1836 = keyframes`
136
+ from {
137
+ -webkit-transform: rotateY(180deg);
138
+ transform: rotateY(180deg);
139
+ }
140
+ to {
141
+ -webkit-transform: rotateY(0deg);
142
+ transform: rotateY(0deg);
143
+ }`;
144
+
145
+ /* ============================= y-axis 0-90, 90-180, 180-270, 270-360 */
146
+ const fwdy09 = keyframes`
147
+ from {
148
+ -webkit-transform: rotateY(360deg);
149
+ transform: rotateY(360deg);
150
+ }
151
+ to {
152
+ -webkit-transform: rotateY(90deg);
153
+ transform: rotateY(90deg);
154
+ }`;
155
+ const fwdy918 = keyframes`
156
+ from {
157
+ -webkit-transform: rotateY(-90deg);
158
+ transform: rotateY(-90deg);
159
+ }
160
+ to {
161
+ -webkit-transform: rotateY(-180deg);
162
+ transform: rotateY(-180deg);
163
+ }`;
164
+ const fwdy1827 = keyframes`
165
+ from {
166
+ -webkit-transform: rotateY(-180deg);
167
+ transform: rotateY(-180deg);
168
+ }
169
+ to {
170
+ -webkit-transform: rotateY(-270deg);
171
+ transform: rotateY(-270deg);
172
+ }`;
173
+ const fwdy2736 = keyframes`
174
+ from {
175
+ -webkit-transform: rotateY(-270deg);
176
+ transform: rotateY(-270deg);
177
+ }
178
+ to {
179
+ -webkit-transform: rotateY(-360deg);
180
+ transform: rotateY(-360deg);
181
+ }`;
182
+
183
+ const noAnim = keyframes``;
184
+
185
+ return {
186
+ X360,
187
+ Y360,
188
+ fadeInkf,
189
+ wobY,
190
+ wobX,
191
+ fwdx018,
192
+ fwdx1836,
193
+ fwdx09,
194
+ fwdx918,
195
+ fwdx1827,
196
+ fwdx2736,
197
+ fwdy018,
198
+ fwdy1836,
199
+ fwdy09,
200
+ fwdy918,
201
+ fwdy1827,
202
+ fwdy2736,
203
+ noAnim,
204
+ };
205
+ };