@nlabs/gothamjs
Version:
Platform
54 lines (53 loc) • 5.74 kB
JavaScript
/**
* Copyright (c) 2018-Present, Nitrogen Labs, Inc.
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
*/ import { throttle } from '@nlabs/utils';
import { useEffect, useState } from 'react';
const getCurrentBreakpoint = (setBreakpoint)=>()=>{
const breakpoints = {
values: {
lg: 1200,
md: 900,
sm: 600,
xl: 1536
}
};
const { values: { lg, md, sm, xl } } = breakpoints;
const { innerWidth } = window;
if (innerWidth < sm) {
setBreakpoint(0);
} else if (innerWidth < md) {
setBreakpoint(1);
} else if (innerWidth < lg) {
setBreakpoint(2);
} else if (innerWidth < xl) {
setBreakpoint(3);
} else {
setBreakpoint(4);
}
};
export const useBreakpoint = ()=>{
const breakpointValues = [
'xs',
'sm',
'md',
'lg',
'xl'
];
const [breakpoint, setBreakpoint] = useState(0);
useEffect(()=>{
const onResizeBreakpoint = getCurrentBreakpoint(setBreakpoint);
const onResize = throttle(onResizeBreakpoint, 100);
// Inital sizing
onResizeBreakpoint();
window.addEventListener('resize', onResize);
return ()=>window.removeEventListener('resize', onResize);
}, []);
return {
at: (size)=>size === breakpointValues[breakpoint],
down: (size)=>breakpointValues.indexOf(size) >= breakpoint,
up: (size)=>breakpointValues.indexOf(size) <= breakpoint,
value: ()=>breakpointValues[breakpoint]
};
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2dvdGhhbWpzL3NyYy91dGlscy91c2VCcmVha3BvaW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge3Rocm90dGxlfSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IGdldEN1cnJlbnRCcmVha3BvaW50ID0gKHNldEJyZWFrcG9pbnQpID0+ICgpOiB2b2lkID0+IHtcbiAgY29uc3QgYnJlYWtwb2ludHMgPSB7XG4gICAgdmFsdWVzOiB7XG4gICAgICBsZzogMTIwMCxcbiAgICAgIG1kOiA5MDAsXG4gICAgICBzbTogNjAwLFxuICAgICAgeGw6IDE1MzZcbiAgICB9XG4gIH07XG4gIGNvbnN0IHt2YWx1ZXM6IHtsZywgbWQsIHNtLCB4bH19ID0gYnJlYWtwb2ludHM7XG4gIGNvbnN0IHtpbm5lcldpZHRofSA9IHdpbmRvdztcblxuICBpZihpbm5lcldpZHRoIDwgc20pIHtcbiAgICBzZXRCcmVha3BvaW50KDApO1xuICB9IGVsc2UgaWYoaW5uZXJXaWR0aCA8IG1kKSB7XG4gICAgc2V0QnJlYWtwb2ludCgxKTtcbiAgfSBlbHNlIGlmKGlubmVyV2lkdGggPCBsZykge1xuICAgIHNldEJyZWFrcG9pbnQoMik7XG4gIH0gZWxzZSBpZihpbm5lcldpZHRoIDwgeGwpIHtcbiAgICBzZXRCcmVha3BvaW50KDMpO1xuICB9IGVsc2Uge1xuICAgIHNldEJyZWFrcG9pbnQoNCk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB1c2VCcmVha3BvaW50ID0gKCkgPT4ge1xuICBjb25zdCBicmVha3BvaW50VmFsdWVzID0gWyd4cycsICdzbScsICdtZCcsICdsZycsICd4bCddO1xuICBjb25zdCBbYnJlYWtwb2ludCwgc2V0QnJlYWtwb2ludF0gPSB1c2VTdGF0ZSgwKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9uUmVzaXplQnJlYWtwb2ludCA9IGdldEN1cnJlbnRCcmVha3BvaW50KHNldEJyZWFrcG9pbnQpO1xuICAgIGNvbnN0IG9uUmVzaXplID0gdGhyb3R0bGUob25SZXNpemVCcmVha3BvaW50LCAxMDApO1xuXG4gICAgLy8gSW5pdGFsIHNpemluZ1xuICAgIG9uUmVzaXplQnJlYWtwb2ludCgpO1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG9uUmVzaXplKTtcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25SZXNpemUpO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIHtcbiAgICBhdDogKHNpemU6IHN0cmluZyk6IGJvb2xlYW4gPT4gc2l6ZSA9PT0gYnJlYWtwb2ludFZhbHVlc1ticmVha3BvaW50XSxcbiAgICBkb3duOiAoc2l6ZTogc3RyaW5nKTogYm9vbGVhbiA9PiBicmVha3BvaW50VmFsdWVzLmluZGV4T2Yoc2l6ZSkgPj0gYnJlYWtwb2ludCxcbiAgICB1cDogKHNpemU6IHN0cmluZyk6IGJvb2xlYW4gPT4gYnJlYWtwb2ludFZhbHVlcy5pbmRleE9mKHNpemUpIDw9IGJyZWFrcG9pbnQsXG4gICAgdmFsdWU6ICgpOiBzdHJpbmcgPT4gYnJlYWtwb2ludFZhbHVlc1ticmVha3BvaW50XVxuICB9O1xufTtcbiJdLCJuYW1lcyI6WyJ0aHJvdHRsZSIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwiZ2V0Q3VycmVudEJyZWFrcG9pbnQiLCJzZXRCcmVha3BvaW50IiwiYnJlYWtwb2ludHMiLCJ2YWx1ZXMiLCJsZyIsIm1kIiwic20iLCJ4bCIsImlubmVyV2lkdGgiLCJ3aW5kb3ciLCJ1c2VCcmVha3BvaW50IiwiYnJlYWtwb2ludFZhbHVlcyIsImJyZWFrcG9pbnQiLCJvblJlc2l6ZUJyZWFrcG9pbnQiLCJvblJlc2l6ZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiYXQiLCJzaXplIiwiZG93biIsImluZGV4T2YiLCJ1cCIsInZhbHVlIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxRQUFRLFFBQU8sZUFBZTtBQUN0QyxTQUFRQyxTQUFTLEVBQUVDLFFBQVEsUUFBTyxRQUFRO0FBRTFDLE1BQU1DLHVCQUF1QixDQUFDQyxnQkFBa0I7UUFDOUMsTUFBTUMsY0FBYztZQUNsQkMsUUFBUTtnQkFDTkMsSUFBSTtnQkFDSkMsSUFBSTtnQkFDSkMsSUFBSTtnQkFDSkMsSUFBSTtZQUNOO1FBQ0Y7UUFDQSxNQUFNLEVBQUNKLFFBQVEsRUFBQ0MsRUFBRSxFQUFFQyxFQUFFLEVBQUVDLEVBQUUsRUFBRUMsRUFBRSxFQUFDLEVBQUMsR0FBR0w7UUFDbkMsTUFBTSxFQUFDTSxVQUFVLEVBQUMsR0FBR0M7UUFFckIsSUFBR0QsYUFBYUYsSUFBSTtZQUNsQkwsY0FBYztRQUNoQixPQUFPLElBQUdPLGFBQWFILElBQUk7WUFDekJKLGNBQWM7UUFDaEIsT0FBTyxJQUFHTyxhQUFhSixJQUFJO1lBQ3pCSCxjQUFjO1FBQ2hCLE9BQU8sSUFBR08sYUFBYUQsSUFBSTtZQUN6Qk4sY0FBYztRQUNoQixPQUFPO1lBQ0xBLGNBQWM7UUFDaEI7SUFDRjtBQUVBLE9BQU8sTUFBTVMsZ0JBQWdCO0lBQzNCLE1BQU1DLG1CQUFtQjtRQUFDO1FBQU07UUFBTTtRQUFNO1FBQU07S0FBSztJQUN2RCxNQUFNLENBQUNDLFlBQVlYLGNBQWMsR0FBR0YsU0FBUztJQUU3Q0QsVUFBVTtRQUNSLE1BQU1lLHFCQUFxQmIscUJBQXFCQztRQUNoRCxNQUFNYSxXQUFXakIsU0FBU2dCLG9CQUFvQjtRQUU5QyxnQkFBZ0I7UUFDaEJBO1FBRUFKLE9BQU9NLGdCQUFnQixDQUFDLFVBQVVEO1FBRWxDLE9BQU8sSUFBTUwsT0FBT08sbUJBQW1CLENBQUMsVUFBVUY7SUFDcEQsR0FBRyxFQUFFO0lBRUwsT0FBTztRQUNMRyxJQUFJLENBQUNDLE9BQTBCQSxTQUFTUCxnQkFBZ0IsQ0FBQ0MsV0FBVztRQUNwRU8sTUFBTSxDQUFDRCxPQUEwQlAsaUJBQWlCUyxPQUFPLENBQUNGLFNBQVNOO1FBQ25FUyxJQUFJLENBQUNILE9BQTBCUCxpQkFBaUJTLE9BQU8sQ0FBQ0YsU0FBU047UUFDakVVLE9BQU8sSUFBY1gsZ0JBQWdCLENBQUNDLFdBQVc7SUFDbkQ7QUFDRixFQUFFIn0=