Site geneli ScrollFlow sarmalayıcısı (Lenis lerp'li kaydırma + hıza bağlı skewY) tüm sayfa katmanını her karede transform'luyor, kaydırma performansını düşürüyordu. Yerel tarayıcı kaydırmasına dönüldü; bölüm çapaları mevcut scroll-mt değerleriyle çalışmaya devam eder. lenis bağımlılığı ve data-lenis-prevent işaretleri temizlendi. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
24 lines
715 B
TypeScript
24 lines
715 B
TypeScript
"use client";
|
||
|
||
import { type ReactNode, useSyncExternalStore } from "react";
|
||
import { createPortal } from "react-dom";
|
||
|
||
const subscribe = () => () => {};
|
||
const getClientSnapshot = () => true;
|
||
const getServerSnapshot = () => false;
|
||
|
||
/**
|
||
* Viewport'a sabit kalması gereken öğeleri sayfa katmanının dışına, doğrudan
|
||
* body'ye taşır. Böylece üst katmanlardaki bir transform (ör. Parallax/Reveal)
|
||
* `position: fixed` koordinat sistemini değiştiremez.
|
||
*/
|
||
export function ViewportPortal({ children }: { children: ReactNode }) {
|
||
const mounted = useSyncExternalStore(
|
||
subscribe,
|
||
getClientSnapshot,
|
||
getServerSnapshot,
|
||
);
|
||
|
||
return mounted ? createPortal(children, document.body) : null;
|
||
}
|