mirror of
https://github.com/excalidraw/excalidraw.git
synced 2025-04-14 16:40:58 -04:00
* Bump prettier from 2.0.2 to 2.0.3 Bumps [prettier](https://github.com/prettier/prettier) from 2.0.2 to 2.0.3. - [Release notes](https://github.com/prettier/prettier/releases) - [Changelog](https://github.com/prettier/prettier/blob/master/CHANGELOG.md) - [Commits](https://github.com/prettier/prettier/compare/2.0.2...2.0.3) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> * Format Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Co-authored-by: Panayiotis Lipiridis <lipiridis@gmail.com>
33 lines
989 B
TypeScript
33 lines
989 B
TypeScript
import React, { useState, useEffect, useRef, useContext } from "react";
|
|
|
|
const context = React.createContext(false);
|
|
|
|
export function IsMobileProvider({ children }: { children: React.ReactNode }) {
|
|
const query = useRef<MediaQueryList>();
|
|
if (!query.current) {
|
|
query.current = window.matchMedia
|
|
? window.matchMedia(
|
|
"(max-width: 600px), (max-height: 500px) and (max-width: 1000px)",
|
|
)
|
|
: (({
|
|
matches: false,
|
|
addListener: () => {},
|
|
removeListener: () => {},
|
|
} as
|
|
any) as
|
|
MediaQueryList);
|
|
}
|
|
const [isMobile, setMobile] = useState(query.current.matches);
|
|
|
|
useEffect(() => {
|
|
const handler = () => setMobile(query.current!.matches);
|
|
query.current!.addListener(handler);
|
|
return () => query.current!.removeListener(handler);
|
|
}, []);
|
|
|
|
return <context.Provider value={isMobile}>{children}</context.Provider>;
|
|
}
|
|
|
|
export default function useIsMobile() {
|
|
return useContext(context);
|
|
}
|