Skip to content

Commit d050b29

Browse files
committed
Feat(framer): complete transition to framer
1 parent ccfc159 commit d050b29

File tree

6 files changed

+38
-38
lines changed

6 files changed

+38
-38
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ bun add \
1616
framer-motion \
1717
react \
1818
react-dom \
19-
git@github.com:noahehall/react-fullerpage.git
19+
github:noahehall/react-fullerpage
2020

2121
```
2222

bun.lockb

0 Bytes
Binary file not shown.

dist/index.js

+17-16
Original file line numberDiff line numberDiff line change
@@ -9379,7 +9379,7 @@ var FPContainer = ({
93799379
outerStyle = {},
93809380
scrollDebounceMs = 125,
93819381
style = {},
9382-
transitionTiming = 700
9382+
transitionTiming = 0.5
93839383
}) => {
93849384
const FPContainerInnerRef = import_react19.useRef(null);
93859385
const scrollTimer = import_react19.useRef(null);
@@ -9406,7 +9406,6 @@ var FPContainer = ({
94069406
offsetHeight: 0,
94079407
resetScroll: false,
94089408
slideIndex: 0,
9409-
transitionTiming,
94109409
translateY: 0,
94119410
viewportHeight: 0
94129411
});
@@ -9426,12 +9425,11 @@ var FPContainer = ({
94269425
forward();
94279426
else if (prevScrollY > newScrollY)
94289427
back3();
9429-
if (pageState.resetScroll || transitionTiming !== pageState.transitionTiming)
9428+
if (pageState.resetScroll)
94309429
startTransition(() => {
94319430
setPageState((prevState) => ({
94329431
...prevState,
9433-
resetScroll: false,
9434-
transitionTiming
9432+
resetScroll: false
94359433
}));
94369434
});
94379435
ticking.current = false;
@@ -9440,7 +9438,7 @@ var FPContainer = ({
94409438
}
94419439
setTimeout(() => {
94429440
throttled.current = false;
9443-
}, transitionTiming);
9441+
}, transitionTiming * 1000);
94449442
};
94459443
const bouncedHandleScroll = () => {
94469444
clearTimeout(scrollTimer.current);
@@ -9497,11 +9495,11 @@ var FPContainer = ({
94979495
const goto = (slideIndex, resetScroll = false) => {
94989496
if (!slides[slideIndex] || pageState.slideIndex === slideIndex || isSsr)
94999497
return;
9500-
const { transitionTiming: transitionTiming2, fullpageHeight, viewportHeight } = pageState;
9498+
const { fullpageHeight, viewportHeight } = pageState;
95019499
const newSlide = slides[slideIndex];
95029500
const translateY = Math.max((fullpageHeight - viewportHeight) * -1, newSlide.current.offsetTop * -1);
95039501
if (typeof onHide === "function") {
9504-
setTimeout(() => onHide(translateY, transitionTiming2));
9502+
setTimeout(() => onHide(translateY, transitionTiming * 1000));
95059503
}
95069504
throttled.current = true;
95079505
const newPageState = {
@@ -9516,7 +9514,7 @@ var FPContainer = ({
95169514
setTimeout(() => {
95179515
throttled.current = false;
95189516
scrollY.current = window.scrollY;
9519-
}, transitionTiming2);
9517+
}, transitionTiming * 1000);
95209518
if (typeof onShow === "function") {
95219519
onShow(newPageState);
95229520
}
@@ -9573,13 +9571,15 @@ var FPContainer = ({
95739571
return jsx_runtime.jsx("div", {
95749572
style: useOuterStyle,
95759573
children: jsx_runtime.jsx(motion2.div, {
9576-
ref: FPContainerInnerRef,
95779574
className,
9578-
style: {
9579-
transition: `transform ${pageState.transitionTiming}ms cubic-bezier(0.645, 0.045, 0.355, 1.000)`,
9580-
transform: `translate3D(0, ${pageState.translateY}px, 0)`,
9581-
...useStyle2
9575+
ref: FPContainerInnerRef,
9576+
style: useStyle2,
9577+
animate: { y: pageState.translateY },
9578+
transition: {
9579+
ease: [0.17, 0.67, 0.83, 0.67],
9580+
duration: transitionTiming
95829581
},
9582+
layout: true,
95839583
...motionProps,
95849584
children
95859585
})
@@ -9863,9 +9863,10 @@ var ReactFP = ({
98639863
unsubscribe
98649864
},
98659865
children: jsx_runtime4.jsx(motion2.div, {
9866-
style: useStyle2,
9867-
ref: ReactFPRef,
98689866
className,
9867+
layout: true,
9868+
ref: ReactFPRef,
9869+
style: useStyle2,
98699870
...motionProps,
98709871
children: jsx_runtime4.jsx(import_react23.Suspense, {
98719872
fallback: jsx_runtime4.jsx(Fallback, {}),

package.json

+4-3
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,18 @@
2121
},
2222
"devDependencies": {
2323
"@types/react": "18.2.7",
24-
"@types/react-dom": "18.2.4",
25-
"@types/react-router-dom": "5.3.3",
2624
"barrels": "1.6.6",
2725
"bun-types": "canary",
28-
"eslint": "8.41.0",
2926
"eslint-config-prettier": "8.8.0",
3027
"eslint-config-react-app": "7.0.1",
3128
"eslint-plugin-jsx-a11y": "6.7.1",
3229
"eslint-plugin-react": "7.32.2",
30+
"eslint": "8.41.0",
31+
"framer-motion": "10.12.16",
3332
"npm-check-updates": "16.10.12",
3433
"prettier": "2.8.8",
34+
"react-dom": "18.2.0",
35+
"react": "18.2.0",
3536
"typescript": "beta"
3637
},
3738
"files": [

src/FPContainer.tsx

+13-16
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ export const FPContainer: FC<FPContainerInterface> = ({
4343
outerStyle = {},
4444
scrollDebounceMs = 125,
4545
style = {},
46-
transitionTiming = 700,
46+
transitionTiming = 0.5,
4747
}) => {
4848
const FPContainerInnerRef = useRef<HTMLDivElement>(null);
4949
const scrollTimer = useRef<Timer>(null);
@@ -83,7 +83,6 @@ export const FPContainer: FC<FPContainerInterface> = ({
8383
offsetHeight: 0,
8484
resetScroll: false,
8585
slideIndex: 0,
86-
transitionTiming,
8786
translateY: 0,
8887
viewportHeight: 0,
8988
});
@@ -107,15 +106,11 @@ export const FPContainer: FC<FPContainerInterface> = ({
107106
else if (prevScrollY < newScrollY) forward();
108107
else if (prevScrollY > newScrollY) back();
109108

110-
if (
111-
pageState.resetScroll ||
112-
transitionTiming !== pageState.transitionTiming
113-
)
109+
if (pageState.resetScroll)
114110
startTransition(() => {
115111
setPageState((prevState) => ({
116112
...prevState,
117113
resetScroll: false,
118-
transitionTiming,
119114
}));
120115
});
121116

@@ -126,7 +121,7 @@ export const FPContainer: FC<FPContainerInterface> = ({
126121

127122
setTimeout(() => {
128123
throttled.current = false;
129-
}, transitionTiming);
124+
}, transitionTiming * 1000);
130125
};
131126

132127
const bouncedHandleScroll = () => {
@@ -201,7 +196,7 @@ export const FPContainer: FC<FPContainerInterface> = ({
201196
if (!slides[slideIndex] || pageState.slideIndex === slideIndex || isSsr)
202197
return;
203198

204-
const { transitionTiming, fullpageHeight, viewportHeight } = pageState;
199+
const { fullpageHeight, viewportHeight } = pageState;
205200

206201
const newSlide = slides[slideIndex];
207202

@@ -212,7 +207,7 @@ export const FPContainer: FC<FPContainerInterface> = ({
212207

213208
// TODO(noah): no clue what the original author meant
214209
if (typeof onHide === "function") {
215-
setTimeout(() => onHide(translateY, transitionTiming));
210+
setTimeout(() => onHide(translateY, transitionTiming * 1000));
216211
}
217212

218213
throttled.current = true;
@@ -231,7 +226,7 @@ export const FPContainer: FC<FPContainerInterface> = ({
231226
setTimeout(() => {
232227
throttled.current = false;
233228
scrollY.current = window.scrollY;
234-
}, transitionTiming);
229+
}, transitionTiming * 1000);
235230
// TODO(noah): no clue what the original author meant
236231
if (typeof onShow === "function") {
237232
onShow(newPageState);
@@ -298,13 +293,15 @@ export const FPContainer: FC<FPContainerInterface> = ({
298293
return (
299294
<div style={useOuterStyle}>
300295
<motion.div
301-
ref={FPContainerInnerRef}
302296
className={className}
303-
style={{
304-
transition: `transform ${pageState.transitionTiming}ms cubic-bezier(0.645, 0.045, 0.355, 1.000)`,
305-
transform: `translate3D(0, ${pageState.translateY}px, 0)`,
306-
...useStyle,
297+
ref={FPContainerInnerRef}
298+
style={useStyle}
299+
animate={{ y: pageState.translateY }}
300+
transition={{
301+
ease: [0.17, 0.67, 0.83, 0.67],
302+
duration: transitionTiming,
307303
}}
304+
layout
308305
{...motionProps}
309306
>
310307
{children}

src/ReactFP.tsx

+3-2
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,10 @@ export const ReactFP: FC<ReactFPInterface> = ({
104104
}}
105105
>
106106
<motion.div
107-
style={useStyle}
108-
ref={ReactFPRef}
109107
className={className}
108+
layout
109+
ref={ReactFPRef}
110+
style={useStyle}
110111
{...motionProps}
111112
>
112113
<Suspense fallback={<Fallback />}>{children}</Suspense>

0 commit comments

Comments
 (0)