@wordpress/components
Version:
UI components for WordPress.
8 lines (7 loc) • 2.93 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../src/utils/use-responsive-value.ts"],
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useEffect, useState } from '@wordpress/element';\nconst breakpoints = ['40em', '52em', '64em'];\nexport const useBreakpointIndex = (options = {}) => {\n const {\n defaultIndex = 0\n } = options;\n if (typeof defaultIndex !== 'number') {\n throw new TypeError(`Default breakpoint index should be a number. Got: ${defaultIndex}, ${typeof defaultIndex}`);\n } else if (defaultIndex < 0 || defaultIndex > breakpoints.length - 1) {\n throw new RangeError(`Default breakpoint index out of range. Theme has ${breakpoints.length} breakpoints, got index ${defaultIndex}`);\n }\n const [value, setValue] = useState(defaultIndex);\n useEffect(() => {\n const getIndex = () => breakpoints.filter(bp => {\n return typeof window !== 'undefined' ? window.matchMedia(`screen and (min-width: ${bp})`).matches : false;\n }).length;\n const onResize = () => {\n const newValue = getIndex();\n if (value !== newValue) {\n setValue(newValue);\n }\n };\n onResize();\n if (typeof window !== 'undefined') {\n window.addEventListener('resize', onResize);\n }\n return () => {\n if (typeof window !== 'undefined') {\n window.removeEventListener('resize', onResize);\n }\n };\n }, [value]);\n return value;\n};\nexport function useResponsiveValue(values, options = {}) {\n const index = useBreakpointIndex(options);\n\n // Allow calling the function with a \"normal\" value without having to check on the outside.\n if (!Array.isArray(values) && typeof values !== 'function') {\n return values;\n }\n const array = values || [];\n return array[index >= array.length ? array.length - 1 : index];\n}"],
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qBAAoC;AACpC,IAAM,cAAc,CAAC,QAAQ,QAAQ,MAAM;AACpC,IAAM,qBAAqB,CAAC,UAAU,CAAC,MAAM;AAClD,QAAM;AAAA,IACJ,eAAe;AAAA,EACjB,IAAI;AACJ,MAAI,OAAO,iBAAiB,UAAU;AACpC,UAAM,IAAI,UAAU,qDAAqD,YAAY,KAAK,OAAO,YAAY,EAAE;AAAA,EACjH,WAAW,eAAe,KAAK,eAAe,YAAY,SAAS,GAAG;AACpE,UAAM,IAAI,WAAW,oDAAoD,YAAY,MAAM,2BAA2B,YAAY,EAAE;AAAA,EACtI;AACA,QAAM,CAAC,OAAO,QAAQ,QAAI,yBAAS,YAAY;AAC/C,gCAAU,MAAM;AACd,UAAM,WAAW,MAAM,YAAY,OAAO,QAAM;AAC9C,aAAO,OAAO,WAAW,cAAc,OAAO,WAAW,0BAA0B,EAAE,GAAG,EAAE,UAAU;AAAA,IACtG,CAAC,EAAE;AACH,UAAM,WAAW,MAAM;AACrB,YAAM,WAAW,SAAS;AAC1B,UAAI,UAAU,UAAU;AACtB,iBAAS,QAAQ;AAAA,MACnB;AAAA,IACF;AACA,aAAS;AACT,QAAI,OAAO,WAAW,aAAa;AACjC,aAAO,iBAAiB,UAAU,QAAQ;AAAA,IAC5C;AACA,WAAO,MAAM;AACX,UAAI,OAAO,WAAW,aAAa;AACjC,eAAO,oBAAoB,UAAU,QAAQ;AAAA,MAC/C;AAAA,IACF;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AACV,SAAO;AACT;AACO,SAAS,mBAAmB,QAAQ,UAAU,CAAC,GAAG;AACvD,QAAM,QAAQ,mBAAmB,OAAO;AAGxC,MAAI,CAAC,MAAM,QAAQ,MAAM,KAAK,OAAO,WAAW,YAAY;AAC1D,WAAO;AAAA,EACT;AACA,QAAM,QAAQ,UAAU,CAAC;AACzB,SAAO,MAAM,SAAS,MAAM,SAAS,MAAM,SAAS,IAAI,KAAK;AAC/D;",
"names": []
}