UNPKG

@nlabs/gothamjs

Version:
54 lines (53 loc) 5.74 kB
/** * 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=