@blocz/react-responsive 3.0.1 → 3.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,16 +1,4 @@
1
- # @blocz/react-responsive
2
-
3
- <center>
4
-
5
- [![npm version][2]][3]
6
- [![downloads][4]][5]
7
- [![js-standard-style][6]][7]
8
-
9
- [![gzipped size][10]][11]
10
- [![stability][0]][1]
11
- [![speed][8]][9]
12
-
13
- </center>
1
+ # @blocz/react-responsive <!-- omit in toc -->
14
2
 
15
3
  `@blocz/react-responsive` is inspired by the `.visible` classes from [bootstrap 4](https://getbootstrap.com/docs/4.0/migration/#responsive-utilities) (or `.hidden` classes from [bootstrap 3](https://getbootstrap.com/docs/3.3/css/#responsive-utilities-classes)): only display a certain content for a precise screen size.
16
4
 
@@ -20,34 +8,37 @@ If you need a responsive layout and adaptive components, `@blocz/react-responsiv
20
8
 
21
9
  [See changelog](https://github.com/bloczjs/react-responsive/blob/master/CHANGELOG.md)
22
10
 
11
+ ## Table of contents <!-- omit in toc -->
12
+
13
+
14
+ 1. [How to use](#how-to-use)
15
+ 1. [`<Only>`](#only)
16
+ 1. [Default breakpoints](#default-breakpoints)
17
+ 2. [Additional `Up` and `Down`](#additional-up-and-down)
18
+ 3. [Match Media Queries](#match-media-queries)
19
+ 4. [Render as component](#render-as-component)
20
+ 2. [Hooks](#hooks)
21
+ 1. [`useBreakpoint()`](#usebreakpoint)
22
+ 2. [`useMediaQuery()`](#usemediaquery)
23
+ 3. [`<Match>`](#match)
24
+ 1. [`only` and `matchMedia` props](#only-and-matchmedia-props)
25
+ 2. [Use a custom component in Match](#use-a-custom-component-in-match)
26
+ 4. [`<BreakpointsProvider>`](#breakpointsprovider)
27
+ 1. [Add more breakpoints](#add-more-breakpoints)
28
+ 2. [Change default breakpoints](#change-default-breakpoints)
29
+ 3. [Units](#units)
30
+ 4. [Direction](#direction)
31
+ 5. [CSS in JS](#css-in-js)
32
+ 1. [`toJSON`](#tojson)
33
+ 2. [`toCSS`](#tocss)
34
+ 6. [Comparison to other libraries](#comparison-to-other-libraries)
35
+ 7. [`matchMedia` polyfill](#matchmedia-polyfill)
36
+ 1. [Browser](#browser)
37
+ 2. [Node](#node)
38
+ 8. [FAQ](#faq)
39
+
23
40
  ## How to use
24
41
 
25
- 1. [@blocz/react-responsive](#bloczreact-responsive)
26
- 1. [How to use](#how-to-use)
27
- 1. [`<Only>`](#only)
28
- 1. [Default breakpoints](#default-breakpoints)
29
- 2. [Additional `Up` and `Down`](#additional-up-and-down)
30
- 3. [Match Media Queries](#match-media-queries)
31
- 4. [Render as component](#render-as-component)
32
- 2. [Hooks](#hooks)
33
- 1. [`useBreakpoint()`](#usebreakpoint)
34
- 2. [`useMediaQuery()`](#usemediaquery)
35
- 3. [`<Match>`](#match)
36
- 1. [`only` and `matchMedia` props](#only-and-matchmedia-props)
37
- 2. [Use a custom component in Match](#use-a-custom-component-in-match)
38
- 4. [`<BreakpointsProvider>`](#breakpointsprovider)
39
- 1. [Add more breakpoints](#add-more-breakpoints)
40
- 2. [Change default breakpoints](#change-default-breakpoints)
41
- 3. [Units](#units)
42
- 4. [Direction](#direction)
43
- 5. [CSS in JS](#css-in-js)
44
- 1. [`toJSON`](#tojson)
45
- 2. [`toCSS`](#tocss)
46
- 6. [Comparison to other libraries](#comparison-to-other-libraries)
47
- 7. [`matchMedia` polyfill](#matchmedia-polyfill)
48
- 1. [Browser](#browser)
49
- 2. [Node](#node)
50
- 8. [FAQ](#faq)
51
42
 
52
43
  ### `<Only>`
53
44
 
@@ -456,7 +447,7 @@ Example with [`emotion`](https://emotion.sh):
456
447
  ```jsx
457
448
  import React from "react";
458
449
  import { toCSS as createToCSS, BreakpointsContext } from "@blocz/react-responsive";
459
- import { css } from "emotion";
450
+ import { css } from "@emotion/css";
460
451
 
461
452
  const styles = {
462
453
  mdDown: {
@@ -512,15 +503,4 @@ And if you need an example with `Jest`, `@testing-library/react`, `React` and `@
512
503
 
513
504
  For other questions, please take a look at our [FAQ document](https://github.com/bloczjs/react-responsive/blob/master/FAQ.md).
514
505
 
515
- [0]: https://img.shields.io/badge/stability-stable-brightgreen.svg?style=flat-square
516
- [1]: https://nodejs.org/api/documentation.html#documentation_stability_index
517
- [2]: https://img.shields.io/npm/v/@blocz/react-responsive.svg?style=flat-square
518
- [3]: https://npmjs.org/package/@blocz/react-responsive
519
- [4]: http://img.shields.io/npm/dm/@blocz/react-responsive.svg?style=flat-square
520
- [5]: https://npmjs.org/package/@blocz/react-responsive
521
- [6]: https://img.shields.io/badge/code%20style-prettier-brightgreen.svg?style=flat-square
522
- [7]: https://prettier.io/
523
- [8]: https://img.shields.io/badge/speed-blazingly%20fast-orange.svg?style=flat-square
524
- [9]: https://twitter.com/acdlite/status/974390255393505280
525
- [10]: http://img.badgesize.io/https://unpkg.com/@blocz/react-responsive/lib/@blocz/react-responsive.js?compression=gzip&style=flat-square
526
- [11]: https://unpkg.com/@blocz/react-responsive/lib/
506
+
@@ -5,5 +5,5 @@ interface BreakpointsProviderProps {
5
5
  breakpoints?: ExposedBreakpoints;
6
6
  additionalBreakpoints?: ExposedBreakpoints;
7
7
  }
8
- export declare const BreakpointsProvider: React.FunctionComponent<BreakpointsProviderProps>;
8
+ export declare const BreakpointsProvider: React.FunctionComponent<React.PropsWithChildren<BreakpointsProviderProps>>;
9
9
  export {};
package/lib/Match.d.ts CHANGED
@@ -3,10 +3,8 @@ export interface MatchChildProps {
3
3
  matchMedia?: string;
4
4
  only?: string;
5
5
  }
6
- declare global {
7
- namespace React {
8
- interface HTMLAttributes<T> extends MatchChildProps {
9
- }
6
+ declare module "react" {
7
+ interface HTMLAttributes<T> extends React.AriaAttributes, React.DOMAttributes<T>, MatchChildProps {
10
8
  }
11
9
  }
12
10
  declare type Element = React.ReactElement<MatchChildProps & any, string | React.ComponentType<MatchChildProps & any>> | null;
@@ -1,2 +1,2 @@
1
- var e=require("react");function n(){return(n=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t])}return e}).apply(this,arguments)}function r(e,n){if(null==e)return{};var r,t,i={},a=Object.keys(e);for(t=0;t<a.length;t++)n.indexOf(r=a[t])>=0||(i[r]=e[r]);return i}var t=["em","ex","%","px","cm","mm","in","pt","pc","ch","rem","vh","vw","vmin","vmax"],i=["width","height"],a=function(e){return Object.keys(e).reduce(function(n,r){var a=e[r];if(!Array.isArray(a)||a.length<=1)return n;var o,u,c=a[0],s=a[1],f=a[2],l=a.slice(3);if(l.length>0){var p=new Error('The following fields "'+l+'" have been ignored');console.error(p)}if("number"!=typeof c||"number"!=typeof s)return n;"string"==typeof f?o=f:"object"==typeof f&&(u=f.direction,o=f.unit);var d=Math.min(c,s),m=Math.max(c,s),v=o&&t.includes(o)?o:"px",h=u&&i.includes(u)?u:"width";return n[r]=[d,m,v,h],n[r+"Up"]=[d,Infinity,v,h],n[r+"Down"]=[0,m,v,h],n},{})},o={xs:[0,575,"px"],sm:[576,767,"px"],md:[768,991,"px"],lg:[992,1199,"px"],xl:[1200,Infinity,"px"]},u=e.createContext(a(o)),c=function(r){var t=r.breakpoints,i=r.additionalBreakpoints,c=r.children;return e.createElement(u.Provider,{value:a(n({},void 0===t?o:t,void 0===i?{}:i))},c)};c.displayName="BreakpointsProvider";var s=function(e){var n=[],r=e[0],t=e[1],i=e[2],a=e[3];return 0!==r&&n.push("(min-"+a+":"+r+i+")"),Infinity!==t&&n.push("(max-"+a+":"+t+i+")")," "+n.join(" and ")},f=function(n){var r=e.useMemo(function(){return matchMedia(n)},[n]),t=e.useState(r.matches),i=t[0],a=t[1];return e.useLayoutEffect(function(){a(r.matches);var e=function(e){return a(e.matches)};return r.addListener(e),function(){r.removeListener(e)}},[r]),i},l=function(n){var r=e.useContext(u),t=e.useMemo(function(){return function(e){return function(n){if(void 0===n&&(n=""),!n)return"";var r=n.split(" "),t=r.map(function(n){return e[n]}).filter(Boolean).map(function(e){return s(e)}).filter(Boolean).join(",");if(!t){var i=1===r.length;console.error('"'+r.join('", "')+'" '+(i?"is":"are")+"n't "+(i?"a ":"")+"valid breakpoint"+(i?"":"s"))}return t}}(r)},[r]),i=e.useMemo(function(){return t(n)},[t,n]);return f(i||"-")};function p(n){var t=n.matchMedia,i=n.on,a=n.as,o=n.children,u=r(n,["matchMedia","on","as","children"]),c=l(i),s=f(t||"-");return c||s?e.createElement(a||e.Fragment,a?u:void 0,o):null}p.displayName="Only";var d=function n(t){if(!t||!t.props)return t;var i=t.props.children;if(!i)return null;var a=e.Children.map(i,n),o=t.props,u=o.only,c=o.matchMedia,s=r(o,["only","matchMedia"]),f=e.createElement(t.type,s,a);return u||c?e.createElement(p,{on:u||"",matchMedia:c||""},f):f},m=function(n){var t=n.children,i=n.as,a=r(n,["children","as"]),o=e.Children.map(t,d);return i?e.createElement(i,a,o):e.createElement(e.Fragment,null,o)};m.displayName="Match";var v=function(e){return function(n){var r={};return Object.keys(n).forEach(function(t){var i=e[t];if(!i)throw new Error(t+" is not a valid breakpoint\nValid breakpoints are: "+Object.keys(e));r["@media "+s(i)]=n[t]}),r}},h=function e(n){var r="";return Object.entries(n).forEach(function(n){var t=n[0],i=n[1];r+="object"==typeof i?t+" {\n"+e(i)+"}\n":t+": "+i+";\n"}),r};exports.BreakpointsContext=u,exports.BreakpointsProvider=c,exports.Match=m,exports.Only=p,exports.toCSS=function(e){return function(n){return h(v(e)(n))}},exports.toJSON=v,exports.useBreakpoint=l,exports.useMediaQuery=f;
1
+ function e(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach(function(n){if("default"!==n){var t=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(r,n,t.get?t:{enumerable:!0,get:function(){return e[n]}})}}),r.default=e,r}var r=/*#__PURE__*/e(require("react"));function n(){return n=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var n=arguments[r];for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&(e[t]=n[t])}return e},n.apply(this,arguments)}function t(e,r){if(null==e)return{};var n,t,i={},a=Object.keys(e);for(t=0;t<a.length;t++)r.indexOf(n=a[t])>=0||(i[n]=e[n]);return i}var i=["em","ex","%","px","cm","mm","in","pt","pc","ch","rem","vh","vw","vmin","vmax"],a=["width","height"],o=function(e){return Object.keys(e).reduce(function(r,n){var t=e[n];if(!Array.isArray(t)||t.length<=1)return r;var o,u,c=t[0],f=t[1],s=t[2],l=t.slice(3);if(l.length>0){var p=new Error('The following fields "'+l+'" have been ignored');console.error(p)}if("number"!=typeof c||"number"!=typeof f)return r;"string"==typeof s?o=s:"object"==typeof s&&(u=s.direction,o=s.unit);var d=Math.min(c,f),v=Math.max(c,f),m=o&&i.includes(o)?o:"px",h=u&&a.includes(u)?u:"width";return r[n]=[d,v,m,h],r[n+"Up"]=[d,Infinity,m,h],r[n+"Down"]=[0,v,m,h],r},{})},u={xs:[0,575,"px"],sm:[576,767,"px"],md:[768,991,"px"],lg:[992,1199,"px"],xl:[1200,Infinity,"px"]},c=r.createContext(o(u)),f=function(e){var t=e.breakpoints,i=e.additionalBreakpoints,a=e.children;return r.createElement(c.Provider,{value:o(n({},void 0===t?u:t,void 0===i?{}:i))},a)};f.displayName="BreakpointsProvider";var s=function(e){var r=[],n=e[0],t=e[1],i=e[2],a=e[3];return 0!==n&&r.push("(min-"+a+":"+n+i+")"),Infinity!==t&&r.push("(max-"+a+":"+t+i+")")," "+r.join(" and ")},l=function(e){var n=r.useMemo(function(){return matchMedia(e)},[e]),t=r.useState(n.matches),i=t[0],a=t[1];return r.useLayoutEffect(function(){a(n.matches);var e=function(e){a(e.matches)};return n.addListener(e),function(){n.removeListener(e)}},[n]),i},p=function(e){var n=r.useContext(c),t=r.useMemo(function(){return function(e){return function(r){if(void 0===r&&(r=""),!r)return"";var n=r.split(" "),t=n.map(function(r){return e[r]}).filter(Boolean).map(function(e){return s(e)}).filter(Boolean).join(",");if(!t){var i=1===n.length;console.error('"'+n.join('", "')+'" '+(i?"is":"are")+"n't "+(i?"a ":"")+"valid breakpoint"+(i?"":"s"))}return t}}(n)},[n]),i=r.useMemo(function(){return t(e)},[t,e]);return l(i||"-")},d=["matchMedia","on","as","children"];function v(e){var n=e.matchMedia,i=e.on,a=e.as,o=e.children,u=t(e,d),c=p(i),f=l(n||"-");return c||f?r.createElement(a||r.Fragment,a?u:void 0,o):null}v.displayName="Only";var m=["only","matchMedia"],h=["children","as"],y=function e(n){if(!n||!n.props)return n;var i=n.props.children;if(!i)return null;var a=r.Children.map(i,e),o=n.props,u=o.only,c=o.matchMedia,f=t(o,m),s=r.createElement(n.type,f,a);return u||c?r.createElement(v,{on:u||"",matchMedia:c||""},s):s},x=function(e){var n=e.children,i=e.as,a=t(e,h),o=r.Children.map(n,y);return i?r.createElement(i,a,o):r.createElement(r.Fragment,null,o)};x.displayName="Match";var b=function(e){return function(r){var n={};return Object.keys(r).forEach(function(t){var i=e[t];if(!i)throw new Error(t+" is not a valid breakpoint\nValid breakpoints are: "+Object.keys(e));n["@media "+s(i)]=r[t]}),n}},O=function e(r){var n="";return Object.entries(r).forEach(function(r){var t=r[0],i=r[1];n+="object"==typeof i?t+" {\n"+e(i)+"}\n":t+": "+i+";\n"}),n};exports.BreakpointsContext=c,exports.BreakpointsProvider=f,exports.Match=x,exports.Only=v,exports.toCSS=function(e){return function(r){return O(b(e)(r))}},exports.toJSON=b,exports.useBreakpoint=p,exports.useMediaQuery=l;
2
2
  //# sourceMappingURL=react-responsive.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"react-responsive.js","sources":["../src/sanitize.ts","../src/BreakpointsContext.tsx","../src/fromBreakpointToMedia.ts","../src/useMediaQuery.ts","../src/useBreakpoint.ts","../src/mediaQueryBuilder.ts","../src/Only.tsx","../src/Match.tsx","../src/css-in-js.ts"],"sourcesContent":["export type Units =\n | \"em\"\n | \"ex\"\n | \"%\"\n | \"px\"\n | \"cm\"\n | \"mm\"\n | \"in\"\n | \"pt\"\n | \"pc\"\n | \"ch\"\n | \"rem\"\n | \"vh\"\n | \"vw\"\n | \"vmin\"\n | \"vmax\";\n\nconst listOfSupportedUnits: Units[] = [\n \"em\",\n \"ex\",\n \"%\",\n \"px\",\n \"cm\",\n \"mm\",\n \"in\",\n \"pt\",\n \"pc\",\n \"ch\",\n \"rem\",\n \"vh\",\n \"vw\",\n \"vmin\",\n \"vmax\",\n];\n\ntype Directions = \"width\" | \"height\";\n\nconst listOfSupportedDirections: Directions[] = [\"width\", \"height\"];\n\nexport type ExposedBreakpoint =\n | [number, number]\n | [number, number, Units]\n | [number, number, { unit?: Units; direction?: Directions }];\n\nexport interface ExposedBreakpoints {\n [key: string]: ExposedBreakpoint;\n}\n\nexport type Breakpoint = [number, number, Units, Directions];\n\nexport interface Breakpoints {\n [breakpoint: string]: Breakpoint;\n}\n\nexport const sanitize = (inBreakpoints: ExposedBreakpoints): Breakpoints => {\n return Object.keys(inBreakpoints).reduce<Breakpoints>((breakpoints, breakpointName) => {\n const breakpoint = inBreakpoints[breakpointName];\n\n if (!Array.isArray(breakpoint) || breakpoint.length <= 1) {\n return breakpoints;\n }\n\n const [supposedMin, supposedMax, options, ...rest] = breakpoint;\n if (rest.length > 0) {\n const error = new Error(`The following fields \"${rest}\" have been ignored`);\n console.error(error);\n }\n\n if (typeof supposedMin !== \"number\" || typeof supposedMax !== \"number\") {\n return breakpoints;\n }\n\n let supposedUnit: Units | undefined;\n let supposedDirection: Directions | undefined;\n if (typeof options === \"string\") {\n supposedUnit = options;\n } else if (typeof options === \"object\") {\n supposedDirection = options.direction;\n supposedUnit = options.unit;\n }\n\n const min = Math.min(supposedMin, supposedMax);\n const max = Math.max(supposedMin, supposedMax);\n const unit = supposedUnit && listOfSupportedUnits.includes(supposedUnit) ? supposedUnit : \"px\";\n const direction =\n supposedDirection && listOfSupportedDirections.includes(supposedDirection) ? supposedDirection : \"width\";\n\n breakpoints[breakpointName] = [min, max, unit, direction];\n breakpoints[`${breakpointName}Up`] = [min, Infinity, unit, direction];\n breakpoints[`${breakpointName}Down`] = [0, max, unit, direction];\n\n return breakpoints;\n }, {});\n};\n","import * as React from \"react\";\n\nimport { sanitize, ExposedBreakpoints, Breakpoints } from \"./sanitize\";\n\nconst defaultBreakpoints: ExposedBreakpoints = {\n xs: [0, 575, \"px\"], // Extra small devices (portrait phones)\n sm: [576, 767, \"px\"], // Small devices (landscape phones)\n md: [768, 991, \"px\"], // Medium devices (tablets)\n lg: [992, 1199, \"px\"], // Large devices (desktops)\n xl: [1200, Infinity, \"px\"], // Extra large devices (large desktops)\n};\n\nexport const BreakpointsContext = React.createContext<Breakpoints>(sanitize(defaultBreakpoints));\n\ninterface BreakpointsProviderProps {\n breakpoints?: ExposedBreakpoints;\n additionalBreakpoints?: ExposedBreakpoints;\n}\n\nexport const BreakpointsProvider: React.FunctionComponent<BreakpointsProviderProps> = ({\n breakpoints = defaultBreakpoints,\n additionalBreakpoints = {},\n children,\n}) => {\n return (\n <BreakpointsContext.Provider\n value={sanitize({\n ...breakpoints,\n ...additionalBreakpoints,\n })}\n >\n {children}\n </BreakpointsContext.Provider>\n );\n};\n\nBreakpointsProvider.displayName = \"BreakpointsProvider\";\n","import { Breakpoint } from \"./sanitize\";\n\nexport const fromBreakpointToMedia = (breakpoint: Breakpoint): string => {\n const mediaList: string[] = [];\n const [minValue, maxValue, unit, direction] = breakpoint;\n let str;\n\n // Min value\n if (minValue !== 0) {\n str = `${minValue}${unit}`;\n mediaList.push(`(min-${direction}:${str})`);\n }\n\n // Max value\n if (maxValue !== Infinity) {\n str = `${maxValue}${unit}`;\n mediaList.push(`(max-${direction}:${str})`);\n }\n\n return \" \" + mediaList.join(\" and \");\n};\n","import * as React from \"react\";\n\nexport const useMediaQuery = (mediaQuery: string): boolean => {\n const mediaQueryList = React.useMemo(() => matchMedia(mediaQuery), [mediaQuery]);\n const [isShown, setIsShown] = React.useState<boolean>(mediaQueryList.matches);\n\n React.useLayoutEffect(() => {\n setIsShown(mediaQueryList.matches);\n const listener = (event: MediaQueryListEvent) => setIsShown(event.matches);\n\n // cannot use addEventListener for IE 11 and safari 13-\n mediaQueryList.addListener(listener);\n return () => {\n mediaQueryList.removeListener(listener);\n };\n }, [mediaQueryList]);\n\n return isShown;\n};\n","import * as React from \"react\";\n\nimport { BreakpointsContext } from \"./BreakpointsContext\";\n\nimport { mediaQueryBuilder } from \"./mediaQueryBuilder\";\n\nimport { useMediaQuery } from \"./useMediaQuery\";\n\nexport const useBreakpoint = (on?: string): boolean => {\n const breakpoints = React.useContext(BreakpointsContext);\n const toMediaQuery = React.useMemo(() => mediaQueryBuilder(breakpoints), [breakpoints]);\n\n const mediaQuery = React.useMemo(() => toMediaQuery(on), [toMediaQuery, on]);\n\n return useMediaQuery(mediaQuery || \"-\");\n};\n","import { Breakpoints } from \"./sanitize\";\nimport { fromBreakpointToMedia } from \"./fromBreakpointToMedia\";\n\nexport const mediaQueryBuilder = (breakpoints: Breakpoints) => (on = \"\"): string => {\n if (!on) {\n return \"\";\n }\n const rawBreakpointNames = on.split(\" \");\n const filteredBreakpoints = rawBreakpointNames.map((breakpointName) => breakpoints[breakpointName]).filter(Boolean);\n const mediaQuery = filteredBreakpoints\n .map((breakpoint) => fromBreakpointToMedia(breakpoint))\n .filter(Boolean)\n .join(\",\");\n if (!mediaQuery) {\n const isUniqBreakpoint = rawBreakpointNames.length === 1;\n console.error(\n `\"${rawBreakpointNames.join('\", \"')}\" ${isUniqBreakpoint ? \"is\" : \"are\"}n't ${\n isUniqBreakpoint ? \"a \" : \"\"\n }valid breakpoint${isUniqBreakpoint ? \"\" : \"s\"}`,\n );\n }\n return mediaQuery;\n};\n","import * as React from \"react\";\n\nimport { useBreakpoint } from \"./useBreakpoint\";\nimport { useMediaQuery } from \"./useMediaQuery\";\n\nexport type OnlyProps<OtherProps = Record<string, never>> = OtherProps & {\n matchMedia?: string;\n on?: string;\n as?: string | React.ComponentType<OtherProps>;\n};\n\nexport function Only<OtherProps = Record<string, never>>({\n matchMedia,\n on,\n as,\n children,\n ...props\n}: React.PropsWithChildren<OnlyProps<OtherProps>>): React.ReactElement | null {\n const matchOn = useBreakpoint(on);\n const matchQuery = useMediaQuery(matchMedia || \"-\");\n const isShown = matchOn || matchQuery;\n\n if (!isShown) {\n return null;\n }\n\n return React.createElement(as || React.Fragment, as ? (props as OtherProps) : undefined, children);\n}\n\nOnly.displayName = \"Only\";\n","import * as React from \"react\";\n\nimport { Only } from \"./Only\";\n\nexport interface MatchChildProps {\n matchMedia?: string;\n only?: string;\n}\n\n/* eslint-disable */\ndeclare global {\n namespace React {\n interface HTMLAttributes<T> extends MatchChildProps {}\n }\n}\n/* eslint-enable */\n\ntype Element = React.ReactElement<MatchChildProps & any, string | React.ComponentType<MatchChildProps & any>> | null;\n\nconst parseChildren = (element: Element): Element => {\n if (!element || !element.props) {\n return element;\n }\n\n const _children: Element | Element[] | null = element.props.children;\n if (!_children) {\n return null;\n }\n const children = React.Children.map(_children, parseChildren);\n const { only, matchMedia, ...props } = element.props;\n const clone = React.createElement(element.type, props, children);\n if (!only && !matchMedia) {\n return clone;\n }\n return (\n <Only on={only || \"\"} matchMedia={matchMedia || \"\"}>\n {clone}\n </Only>\n );\n};\n\ninterface MatchProps {\n [key: string]: any;\n children: Element | Element[] | null;\n as?: string;\n}\n\nexport const Match: React.FunctionComponent<MatchProps> = ({ children, as, ...props }) => {\n const computedChildren = React.Children.map(children, parseChildren);\n if (as) {\n return React.createElement(as, props, computedChildren);\n }\n return React.createElement(React.Fragment, null, computedChildren);\n};\n\nMatch.displayName = \"Match\";\n","import { CSSProperties } from \"react\";\nimport { Breakpoints } from \"./sanitize\";\nimport { fromBreakpointToMedia } from \"./fromBreakpointToMedia\";\n\ntype CSSinJSProperties =\n | CSSProperties\n | {\n [key: string]: CSSProperties;\n };\n\ninterface Points {\n [breakpoint: string]: CSSinJSProperties;\n}\n\ntype CSSinJS = Record<string, CSSinJSProperties>;\nexport const toJSON = (breakpoints: Breakpoints) => (points: Points): CSSinJS => {\n const css: CSSinJS = {};\n Object.keys(points).forEach((point) => {\n const breakpoint = breakpoints[point];\n if (!breakpoint) {\n throw new Error(`${point} is not a valid breakpoint\\nValid breakpoints are: ${Object.keys(breakpoints)}`);\n }\n css[`@media ${fromBreakpointToMedia(breakpoint)}`] = points[point];\n });\n return css;\n};\n\nconst stringify = (object: CSSinJSProperties) => {\n let string = \"\";\n Object.entries(object).forEach(([key, value]) => {\n if (typeof value !== \"object\") {\n string += `${key}: ${value};\\n`;\n return;\n }\n string += `${key} {\\n${stringify(value)}}\\n`;\n });\n return string;\n};\n\nexport const toCSS = (breakpoints: Breakpoints) => (points: Points): string => stringify(toJSON(breakpoints)(points));\n"],"names":["listOfSupportedUnits","listOfSupportedDirections","sanitize","inBreakpoints","Object","keys","reduce","breakpoints","breakpointName","breakpoint","Array","isArray","length","supposedUnit","supposedDirection","supposedMin","supposedMax","options","rest","error","Error","console","direction","unit","min","Math","max","includes","Infinity","defaultBreakpoints","xs","sm","md","lg","xl","BreakpointsContext","React","BreakpointsProvider","additionalBreakpoints","children","Provider","value","displayName","fromBreakpointToMedia","mediaList","minValue","maxValue","push","join","useMediaQuery","mediaQuery","mediaQueryList","matchMedia","matches","isShown","setIsShown","listener","event","addListener","removeListener","useBreakpoint","on","toMediaQuery","rawBreakpointNames","split","map","filter","Boolean","isUniqBreakpoint","mediaQueryBuilder","Only","as","props","matchOn","matchQuery","undefined","parseChildren","element","_children","only","clone","type","Match","computedChildren","toJSON","points","css","forEach","point","stringify","object","string","entries","key"],"mappings":"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"}
1
+ {"version":3,"file":"react-responsive.js","sources":["../src/sanitize.ts","../src/BreakpointsContext.tsx","../src/fromBreakpointToMedia.ts","../src/useMediaQuery.ts","../src/useBreakpoint.ts","../src/mediaQueryBuilder.ts","../src/Only.tsx","../src/Match.tsx","../src/css-in-js.ts"],"sourcesContent":["export type Units =\n | \"em\"\n | \"ex\"\n | \"%\"\n | \"px\"\n | \"cm\"\n | \"mm\"\n | \"in\"\n | \"pt\"\n | \"pc\"\n | \"ch\"\n | \"rem\"\n | \"vh\"\n | \"vw\"\n | \"vmin\"\n | \"vmax\";\n\nconst listOfSupportedUnits: Units[] = [\n \"em\",\n \"ex\",\n \"%\",\n \"px\",\n \"cm\",\n \"mm\",\n \"in\",\n \"pt\",\n \"pc\",\n \"ch\",\n \"rem\",\n \"vh\",\n \"vw\",\n \"vmin\",\n \"vmax\",\n];\n\ntype Directions = \"width\" | \"height\";\n\nconst listOfSupportedDirections: Directions[] = [\"width\", \"height\"];\n\nexport type ExposedBreakpoint =\n | [number, number]\n | [number, number, Units]\n | [number, number, { unit?: Units; direction?: Directions }];\n\nexport interface ExposedBreakpoints {\n [key: string]: ExposedBreakpoint;\n}\n\nexport type Breakpoint = [number, number, Units, Directions];\n\nexport interface Breakpoints {\n [breakpoint: string]: Breakpoint;\n}\n\nexport const sanitize = (inBreakpoints: ExposedBreakpoints): Breakpoints => {\n return Object.keys(inBreakpoints).reduce<Breakpoints>((breakpoints, breakpointName) => {\n const breakpoint = inBreakpoints[breakpointName];\n\n if (!Array.isArray(breakpoint) || breakpoint.length <= 1) {\n return breakpoints;\n }\n\n const [supposedMin, supposedMax, options, ...rest] = breakpoint;\n if (rest.length > 0) {\n const error = new Error(`The following fields \"${rest}\" have been ignored`);\n console.error(error);\n }\n\n if (typeof supposedMin !== \"number\" || typeof supposedMax !== \"number\") {\n return breakpoints;\n }\n\n let supposedUnit: Units | undefined;\n let supposedDirection: Directions | undefined;\n if (typeof options === \"string\") {\n supposedUnit = options;\n } else if (typeof options === \"object\") {\n supposedDirection = options.direction;\n supposedUnit = options.unit;\n }\n\n const min = Math.min(supposedMin, supposedMax);\n const max = Math.max(supposedMin, supposedMax);\n const unit = supposedUnit && listOfSupportedUnits.includes(supposedUnit) ? supposedUnit : \"px\";\n const direction =\n supposedDirection && listOfSupportedDirections.includes(supposedDirection) ? supposedDirection : \"width\";\n\n breakpoints[breakpointName] = [min, max, unit, direction];\n breakpoints[`${breakpointName}Up`] = [min, Infinity, unit, direction];\n breakpoints[`${breakpointName}Down`] = [0, max, unit, direction];\n\n return breakpoints;\n }, {});\n};\n","import * as React from \"react\";\n\nimport { sanitize, ExposedBreakpoints, Breakpoints } from \"./sanitize\";\n\nconst defaultBreakpoints: ExposedBreakpoints = {\n xs: [0, 575, \"px\"], // Extra small devices (portrait phones)\n sm: [576, 767, \"px\"], // Small devices (landscape phones)\n md: [768, 991, \"px\"], // Medium devices (tablets)\n lg: [992, 1199, \"px\"], // Large devices (desktops)\n xl: [1200, Infinity, \"px\"], // Extra large devices (large desktops)\n};\n\nexport const BreakpointsContext = React.createContext<Breakpoints>(sanitize(defaultBreakpoints));\n\ninterface BreakpointsProviderProps {\n breakpoints?: ExposedBreakpoints;\n additionalBreakpoints?: ExposedBreakpoints;\n}\n\nexport const BreakpointsProvider: React.FunctionComponent<React.PropsWithChildren<BreakpointsProviderProps>> = ({\n breakpoints = defaultBreakpoints,\n additionalBreakpoints = {},\n children,\n}) => {\n return (\n <BreakpointsContext.Provider\n value={sanitize({\n ...breakpoints,\n ...additionalBreakpoints,\n })}\n >\n {children}\n </BreakpointsContext.Provider>\n );\n};\n\nBreakpointsProvider.displayName = \"BreakpointsProvider\";\n","import { Breakpoint } from \"./sanitize\";\n\nexport const fromBreakpointToMedia = (breakpoint: Breakpoint): string => {\n const mediaList: string[] = [];\n const [minValue, maxValue, unit, direction] = breakpoint;\n let str;\n\n // Min value\n if (minValue !== 0) {\n str = `${minValue}${unit}`;\n mediaList.push(`(min-${direction}:${str})`);\n }\n\n // Max value\n if (maxValue !== Infinity) {\n str = `${maxValue}${unit}`;\n mediaList.push(`(max-${direction}:${str})`);\n }\n\n return \" \" + mediaList.join(\" and \");\n};\n","import * as React from \"react\";\n\n// const startTransitionFallbackForReact17AndBellow = (cb: () => void) => cb();\n// // @ts-expect-error not supported yet\n// const startTransition = React.startTransition || startTransitionFallbackForReact17AndBellow;\n\nexport const useMediaQuery = (mediaQuery: string): boolean => {\n const mediaQueryList = React.useMemo(() => matchMedia(mediaQuery), [mediaQuery]);\n const [isShown, setIsShown] = React.useState<boolean>(mediaQueryList.matches);\n\n React.useLayoutEffect(() => {\n setIsShown(mediaQueryList.matches);\n const listener = (event: MediaQueryListEvent) => {\n // We use startTransition as those update aren't urgent\n // startTransition(() => {\n setIsShown(event.matches);\n // });\n };\n\n // cannot use addEventListener for IE 11 and safari 13-\n mediaQueryList.addListener(listener);\n return () => {\n mediaQueryList.removeListener(listener);\n };\n }, [mediaQueryList]);\n\n return isShown;\n};\n","import * as React from \"react\";\n\nimport { BreakpointsContext } from \"./BreakpointsContext\";\n\nimport { mediaQueryBuilder } from \"./mediaQueryBuilder\";\n\nimport { useMediaQuery } from \"./useMediaQuery\";\n\nexport const useBreakpoint = (on?: string): boolean => {\n const breakpoints = React.useContext(BreakpointsContext);\n const toMediaQuery = React.useMemo(() => mediaQueryBuilder(breakpoints), [breakpoints]);\n\n const mediaQuery = React.useMemo(() => toMediaQuery(on), [toMediaQuery, on]);\n\n return useMediaQuery(mediaQuery || \"-\");\n};\n","import { Breakpoints } from \"./sanitize\";\nimport { fromBreakpointToMedia } from \"./fromBreakpointToMedia\";\n\nexport const mediaQueryBuilder =\n (breakpoints: Breakpoints) =>\n (on = \"\"): string => {\n if (!on) {\n return \"\";\n }\n const rawBreakpointNames = on.split(\" \");\n const filteredBreakpoints = rawBreakpointNames.map((breakpointName) => breakpoints[breakpointName]).filter(Boolean);\n const mediaQuery = filteredBreakpoints\n .map((breakpoint) => fromBreakpointToMedia(breakpoint))\n .filter(Boolean)\n .join(\",\");\n if (!mediaQuery) {\n const isUniqBreakpoint = rawBreakpointNames.length === 1;\n console.error(\n `\"${rawBreakpointNames.join('\", \"')}\" ${isUniqBreakpoint ? \"is\" : \"are\"}n't ${\n isUniqBreakpoint ? \"a \" : \"\"\n }valid breakpoint${isUniqBreakpoint ? \"\" : \"s\"}`,\n );\n }\n return mediaQuery;\n };\n","import * as React from \"react\";\n\nimport { useBreakpoint } from \"./useBreakpoint\";\nimport { useMediaQuery } from \"./useMediaQuery\";\n\nexport type OnlyProps<OtherProps = Record<string, never>> = OtherProps & {\n matchMedia?: string;\n on?: string;\n as?: string | React.ComponentType<OtherProps>;\n};\n\nexport function Only<OtherProps = Record<string, never>>({\n matchMedia,\n on,\n as,\n children,\n ...props\n}: React.PropsWithChildren<OnlyProps<OtherProps>>): React.ReactElement | null {\n const matchOn = useBreakpoint(on);\n const matchQuery = useMediaQuery(matchMedia || \"-\");\n const isShown = matchOn || matchQuery;\n\n if (!isShown) {\n return null;\n }\n\n return React.createElement(as || React.Fragment, as ? (props as OtherProps) : undefined, children);\n}\n\nOnly.displayName = \"Only\";\n","import * as React from \"react\";\n\nimport { Only } from \"./Only\";\n\nexport interface MatchChildProps {\n matchMedia?: string;\n only?: string;\n}\n\ndeclare module \"react\" {\n interface HTMLAttributes<T> extends React.AriaAttributes, React.DOMAttributes<T>, MatchChildProps {}\n}\n\ntype Element = React.ReactElement<MatchChildProps & any, string | React.ComponentType<MatchChildProps & any>> | null;\n\nconst parseChildren = (element: Element): Element => {\n if (!element || !element.props) {\n return element;\n }\n\n const _children: Element | Element[] | null = element.props.children;\n if (!_children) {\n return null;\n }\n const children = React.Children.map(_children, parseChildren);\n const { only, matchMedia, ...props } = element.props;\n const clone = React.createElement(element.type, props, children);\n if (!only && !matchMedia) {\n return clone;\n }\n return (\n <Only on={only || \"\"} matchMedia={matchMedia || \"\"}>\n {clone}\n </Only>\n );\n};\n\ninterface MatchProps {\n [key: string]: any;\n children: Element | Element[] | null;\n as?: string;\n}\n\nexport const Match: React.FunctionComponent<MatchProps> = ({ children, as, ...props }) => {\n const computedChildren = React.Children.map(children, parseChildren);\n if (as) {\n return React.createElement(as, props, computedChildren);\n }\n return React.createElement(React.Fragment, null, computedChildren);\n};\n\nMatch.displayName = \"Match\";\n","import { CSSProperties } from \"react\";\nimport { Breakpoints } from \"./sanitize\";\nimport { fromBreakpointToMedia } from \"./fromBreakpointToMedia\";\n\ntype CSSinJSProperties =\n | CSSProperties\n | {\n [key: string]: CSSProperties;\n };\n\ninterface Points {\n [breakpoint: string]: CSSinJSProperties;\n}\n\ntype CSSinJS = Record<string, CSSinJSProperties>;\nexport const toJSON =\n (breakpoints: Breakpoints) =>\n (points: Points): CSSinJS => {\n const css: CSSinJS = {};\n Object.keys(points).forEach((point) => {\n const breakpoint = breakpoints[point];\n if (!breakpoint) {\n throw new Error(`${point} is not a valid breakpoint\\nValid breakpoints are: ${Object.keys(breakpoints)}`);\n }\n css[`@media ${fromBreakpointToMedia(breakpoint)}`] = points[point];\n });\n return css;\n };\n\nconst stringify = (object: CSSinJSProperties) => {\n let string = \"\";\n Object.entries(object).forEach(([key, value]) => {\n if (typeof value !== \"object\") {\n string += `${key}: ${value};\\n`;\n return;\n }\n string += `${key} {\\n${stringify(value)}}\\n`;\n });\n return string;\n};\n\nexport const toCSS =\n (breakpoints: Breakpoints) =>\n (points: Points): string =>\n stringify(toJSON(breakpoints)(points));\n"],"names":["listOfSupportedUnits","listOfSupportedDirections","sanitize","inBreakpoints","Object","keys","reduce","breakpoints","breakpointName","Array","isArray","breakpoint","length","supposedUnit","supposedDirection","supposedMax","options","rest","slice","error","Error","console","supposedMin","direction","unit","min","Math","max","includes","Infinity","defaultBreakpoints","xs","sm","md","lg","xl","BreakpointsContext","React","createContext","BreakpointsProvider","_ref","additionalBreakpoints","children","Provider","value","_ref$additionalBreakp","displayName","fromBreakpointToMedia","mediaList","minValue","maxValue","push","str","join","useMediaQuery","mediaQuery","mediaQueryList","useMemo","matchMedia","_React$useState","useState","matches","isShown","setIsShown","useLayoutEffect","listener","event","addListener","removeListener","on","useContext","toMediaQuery","rawBreakpointNames","split","map","filter","Boolean","isUniqBreakpoint","Only","as","props","matchOn","useBreakpoint","matchQuery","createElement","Fragment","undefined","parseChildren","element","_children","Children","only","_objectWithoutPropertiesLoose","_element$props","_excluded","type","clone","_excluded2","computedChildren","Match","toJSON","points","css","forEach","point","stringify","object","string","entries","key"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{createContext as n,createElement as r,useMemo as e,useState as t,useLayoutEffect as i,useContext as a,Fragment as o,Children as u}from"react";function c(){return(c=Object.assign||function(n){for(var r=1;r<arguments.length;r++){var e=arguments[r];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(n[t]=e[t])}return n}).apply(this,arguments)}function f(n,r){if(null==n)return{};var e,t,i={},a=Object.keys(n);for(t=0;t<a.length;t++)r.indexOf(e=a[t])>=0||(i[e]=n[e]);return i}var l=["em","ex","%","px","cm","mm","in","pt","pc","ch","rem","vh","vw","vmin","vmax"],p=["width","height"],s=function(n){return Object.keys(n).reduce(function(r,e){var t=n[e];if(!Array.isArray(t)||t.length<=1)return r;var i,a,o=t[0],u=t[1],c=t[2],f=t.slice(3);if(f.length>0){var s=new Error('The following fields "'+f+'" have been ignored');console.error(s)}if("number"!=typeof o||"number"!=typeof u)return r;"string"==typeof c?i=c:"object"==typeof c&&(a=c.direction,i=c.unit);var v=Math.min(o,u),d=Math.max(o,u),h=i&&l.includes(i)?i:"px",m=a&&p.includes(a)?a:"width";return r[e]=[v,d,h,m],r[e+"Up"]=[v,Infinity,h,m],r[e+"Down"]=[0,d,h,m],r},{})},v={xs:[0,575,"px"],sm:[576,767,"px"],md:[768,991,"px"],lg:[992,1199,"px"],xl:[1200,Infinity,"px"]},d=n(s(v)),h=function(n){var e=n.breakpoints,t=n.additionalBreakpoints,i=n.children;return r(d.Provider,{value:s(c({},void 0===e?v:e,void 0===t?{}:t))},i)};h.displayName="BreakpointsProvider";var m=function(n){var r=[],e=n[0],t=n[1],i=n[2],a=n[3];return 0!==e&&r.push("(min-"+a+":"+e+i+")"),Infinity!==t&&r.push("(max-"+a+":"+t+i+")")," "+r.join(" and ")},y=function(n){var r=e(function(){return matchMedia(n)},[n]),a=t(r.matches),o=a[0],u=a[1];return i(function(){u(r.matches);var n=function(n){return u(n.matches)};return r.addListener(n),function(){r.removeListener(n)}},[r]),o},b=function(n){var r=a(d),t=e(function(){return function(n){return function(r){if(void 0===r&&(r=""),!r)return"";var e=r.split(" "),t=e.map(function(r){return n[r]}).filter(Boolean).map(function(n){return m(n)}).filter(Boolean).join(",");if(!t){var i=1===e.length;console.error('"'+e.join('", "')+'" '+(i?"is":"are")+"n't "+(i?"a ":"")+"valid breakpoint"+(i?"":"s"))}return t}}(r)},[r]),i=e(function(){return t(n)},[t,n]);return y(i||"-")};function x(n){var e=n.matchMedia,t=n.on,i=n.as,a=n.children,u=f(n,["matchMedia","on","as","children"]),c=b(t),l=y(e||"-");return c||l?r(i||o,i?u:void 0,a):null}x.displayName="Only";var j=function n(e){if(!e||!e.props)return e;var t=e.props.children;if(!t)return null;var i=u.map(t,n),a=e.props,o=a.only,c=a.matchMedia,l=f(a,["only","matchMedia"]),p=r(e.type,l,i);return o||c?r(x,{on:o||"",matchMedia:c||""},p):p},g=function(n){var e=n.children,t=n.as,i=f(n,["children","as"]),a=u.map(e,j);return t?r(t,i,a):r(o,null,a)};g.displayName="Match";var k=function(n){return function(r){var e={};return Object.keys(r).forEach(function(t){var i=n[t];if(!i)throw new Error(t+" is not a valid breakpoint\nValid breakpoints are: "+Object.keys(n));e["@media "+m(i)]=r[t]}),e}},O=function n(r){var e="";return Object.entries(r).forEach(function(r){var t=r[0],i=r[1];e+="object"==typeof i?t+" {\n"+n(i)+"}\n":t+": "+i+";\n"}),e},w=function(n){return function(r){return O(k(n)(r))}};export{d as BreakpointsContext,h as BreakpointsProvider,g as Match,x as Only,w as toCSS,k as toJSON,b as useBreakpoint,y as useMediaQuery};
1
+ import*as n from"react";function e(){return e=Object.assign?Object.assign.bind():function(n){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(n[t]=r[t])}return n},e.apply(this,arguments)}function r(n,e){if(null==n)return{};var r,t,i={},a=Object.keys(n);for(t=0;t<a.length;t++)e.indexOf(r=a[t])>=0||(i[r]=n[r]);return i}var t=["em","ex","%","px","cm","mm","in","pt","pc","ch","rem","vh","vw","vmin","vmax"],i=["width","height"],a=function(n){return Object.keys(n).reduce(function(e,r){var a=n[r];if(!Array.isArray(a)||a.length<=1)return e;var o,u,c=a[0],f=a[1],l=a[2],s=a.slice(3);if(s.length>0){var m=new Error('The following fields "'+s+'" have been ignored');console.error(m)}if("number"!=typeof c||"number"!=typeof f)return e;"string"==typeof l?o=l:"object"==typeof l&&(u=l.direction,o=l.unit);var p=Math.min(c,f),d=Math.max(c,f),v=o&&t.includes(o)?o:"px",h=u&&i.includes(u)?u:"width";return e[r]=[p,d,v,h],e[r+"Up"]=[p,Infinity,v,h],e[r+"Down"]=[0,d,v,h],e},{})},o={xs:[0,575,"px"],sm:[576,767,"px"],md:[768,991,"px"],lg:[992,1199,"px"],xl:[1200,Infinity,"px"]},u=n.createContext(a(o)),c=function(r){var t=r.breakpoints,i=r.additionalBreakpoints,c=r.children;return n.createElement(u.Provider,{value:a(e({},void 0===t?o:t,void 0===i?{}:i))},c)};c.displayName="BreakpointsProvider";var f=function(n){var e=[],r=n[0],t=n[1],i=n[2],a=n[3];return 0!==r&&e.push("(min-"+a+":"+r+i+")"),Infinity!==t&&e.push("(max-"+a+":"+t+i+")")," "+e.join(" and ")},l=function(e){var r=n.useMemo(function(){return matchMedia(e)},[e]),t=n.useState(r.matches),i=t[0],a=t[1];return n.useLayoutEffect(function(){a(r.matches);var n=function(n){a(n.matches)};return r.addListener(n),function(){r.removeListener(n)}},[r]),i},s=function(e){var r=n.useContext(u),t=n.useMemo(function(){return function(n){return function(e){if(void 0===e&&(e=""),!e)return"";var r=e.split(" "),t=r.map(function(e){return n[e]}).filter(Boolean).map(function(n){return f(n)}).filter(Boolean).join(",");if(!t){var i=1===r.length;console.error('"'+r.join('", "')+'" '+(i?"is":"are")+"n't "+(i?"a ":"")+"valid breakpoint"+(i?"":"s"))}return t}}(r)},[r]),i=n.useMemo(function(){return t(e)},[t,e]);return l(i||"-")},m=["matchMedia","on","as","children"];function p(e){var t=e.matchMedia,i=e.on,a=e.as,o=e.children,u=r(e,m),c=s(i),f=l(t||"-");return c||f?n.createElement(a||n.Fragment,a?u:void 0,o):null}p.displayName="Only";var d=["only","matchMedia"],v=["children","as"],h=function e(t){if(!t||!t.props)return t;var i=t.props.children;if(!i)return null;var a=n.Children.map(i,e),o=t.props,u=o.only,c=o.matchMedia,f=r(o,d),l=n.createElement(t.type,f,a);return u||c?n.createElement(p,{on:u||"",matchMedia:c||""},l):l},y=function(e){var t=e.children,i=e.as,a=r(e,v),o=n.Children.map(t,h);return i?n.createElement(i,a,o):n.createElement(n.Fragment,null,o)};y.displayName="Match";var b=function(n){return function(e){var r={};return Object.keys(e).forEach(function(t){var i=n[t];if(!i)throw new Error(t+" is not a valid breakpoint\nValid breakpoints are: "+Object.keys(n));r["@media "+f(i)]=e[t]}),r}},x=function n(e){var r="";return Object.entries(e).forEach(function(e){var t=e[0],i=e[1];r+="object"==typeof i?t+" {\n"+n(i)+"}\n":t+": "+i+";\n"}),r},g=function(n){return function(e){return x(b(n)(e))}};export{u as BreakpointsContext,c as BreakpointsProvider,y as Match,p as Only,g as toCSS,b as toJSON,s as useBreakpoint,l as useMediaQuery};
2
2
  //# sourceMappingURL=react-responsive.modern.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"react-responsive.modern.js","sources":["../src/sanitize.ts","../src/BreakpointsContext.tsx","../src/fromBreakpointToMedia.ts","../src/useMediaQuery.ts","../src/useBreakpoint.ts","../src/mediaQueryBuilder.ts","../src/Only.tsx","../src/Match.tsx","../src/css-in-js.ts"],"sourcesContent":["export type Units =\n | \"em\"\n | \"ex\"\n | \"%\"\n | \"px\"\n | \"cm\"\n | \"mm\"\n | \"in\"\n | \"pt\"\n | \"pc\"\n | \"ch\"\n | \"rem\"\n | \"vh\"\n | \"vw\"\n | \"vmin\"\n | \"vmax\";\n\nconst listOfSupportedUnits: Units[] = [\n \"em\",\n \"ex\",\n \"%\",\n \"px\",\n \"cm\",\n \"mm\",\n \"in\",\n \"pt\",\n \"pc\",\n \"ch\",\n \"rem\",\n \"vh\",\n \"vw\",\n \"vmin\",\n \"vmax\",\n];\n\ntype Directions = \"width\" | \"height\";\n\nconst listOfSupportedDirections: Directions[] = [\"width\", \"height\"];\n\nexport type ExposedBreakpoint =\n | [number, number]\n | [number, number, Units]\n | [number, number, { unit?: Units; direction?: Directions }];\n\nexport interface ExposedBreakpoints {\n [key: string]: ExposedBreakpoint;\n}\n\nexport type Breakpoint = [number, number, Units, Directions];\n\nexport interface Breakpoints {\n [breakpoint: string]: Breakpoint;\n}\n\nexport const sanitize = (inBreakpoints: ExposedBreakpoints): Breakpoints => {\n return Object.keys(inBreakpoints).reduce<Breakpoints>((breakpoints, breakpointName) => {\n const breakpoint = inBreakpoints[breakpointName];\n\n if (!Array.isArray(breakpoint) || breakpoint.length <= 1) {\n return breakpoints;\n }\n\n const [supposedMin, supposedMax, options, ...rest] = breakpoint;\n if (rest.length > 0) {\n const error = new Error(`The following fields \"${rest}\" have been ignored`);\n console.error(error);\n }\n\n if (typeof supposedMin !== \"number\" || typeof supposedMax !== \"number\") {\n return breakpoints;\n }\n\n let supposedUnit: Units | undefined;\n let supposedDirection: Directions | undefined;\n if (typeof options === \"string\") {\n supposedUnit = options;\n } else if (typeof options === \"object\") {\n supposedDirection = options.direction;\n supposedUnit = options.unit;\n }\n\n const min = Math.min(supposedMin, supposedMax);\n const max = Math.max(supposedMin, supposedMax);\n const unit = supposedUnit && listOfSupportedUnits.includes(supposedUnit) ? supposedUnit : \"px\";\n const direction =\n supposedDirection && listOfSupportedDirections.includes(supposedDirection) ? supposedDirection : \"width\";\n\n breakpoints[breakpointName] = [min, max, unit, direction];\n breakpoints[`${breakpointName}Up`] = [min, Infinity, unit, direction];\n breakpoints[`${breakpointName}Down`] = [0, max, unit, direction];\n\n return breakpoints;\n }, {});\n};\n","import * as React from \"react\";\n\nimport { sanitize, ExposedBreakpoints, Breakpoints } from \"./sanitize\";\n\nconst defaultBreakpoints: ExposedBreakpoints = {\n xs: [0, 575, \"px\"], // Extra small devices (portrait phones)\n sm: [576, 767, \"px\"], // Small devices (landscape phones)\n md: [768, 991, \"px\"], // Medium devices (tablets)\n lg: [992, 1199, \"px\"], // Large devices (desktops)\n xl: [1200, Infinity, \"px\"], // Extra large devices (large desktops)\n};\n\nexport const BreakpointsContext = React.createContext<Breakpoints>(sanitize(defaultBreakpoints));\n\ninterface BreakpointsProviderProps {\n breakpoints?: ExposedBreakpoints;\n additionalBreakpoints?: ExposedBreakpoints;\n}\n\nexport const BreakpointsProvider: React.FunctionComponent<BreakpointsProviderProps> = ({\n breakpoints = defaultBreakpoints,\n additionalBreakpoints = {},\n children,\n}) => {\n return (\n <BreakpointsContext.Provider\n value={sanitize({\n ...breakpoints,\n ...additionalBreakpoints,\n })}\n >\n {children}\n </BreakpointsContext.Provider>\n );\n};\n\nBreakpointsProvider.displayName = \"BreakpointsProvider\";\n","import { Breakpoint } from \"./sanitize\";\n\nexport const fromBreakpointToMedia = (breakpoint: Breakpoint): string => {\n const mediaList: string[] = [];\n const [minValue, maxValue, unit, direction] = breakpoint;\n let str;\n\n // Min value\n if (minValue !== 0) {\n str = `${minValue}${unit}`;\n mediaList.push(`(min-${direction}:${str})`);\n }\n\n // Max value\n if (maxValue !== Infinity) {\n str = `${maxValue}${unit}`;\n mediaList.push(`(max-${direction}:${str})`);\n }\n\n return \" \" + mediaList.join(\" and \");\n};\n","import * as React from \"react\";\n\nexport const useMediaQuery = (mediaQuery: string): boolean => {\n const mediaQueryList = React.useMemo(() => matchMedia(mediaQuery), [mediaQuery]);\n const [isShown, setIsShown] = React.useState<boolean>(mediaQueryList.matches);\n\n React.useLayoutEffect(() => {\n setIsShown(mediaQueryList.matches);\n const listener = (event: MediaQueryListEvent) => setIsShown(event.matches);\n\n // cannot use addEventListener for IE 11 and safari 13-\n mediaQueryList.addListener(listener);\n return () => {\n mediaQueryList.removeListener(listener);\n };\n }, [mediaQueryList]);\n\n return isShown;\n};\n","import * as React from \"react\";\n\nimport { BreakpointsContext } from \"./BreakpointsContext\";\n\nimport { mediaQueryBuilder } from \"./mediaQueryBuilder\";\n\nimport { useMediaQuery } from \"./useMediaQuery\";\n\nexport const useBreakpoint = (on?: string): boolean => {\n const breakpoints = React.useContext(BreakpointsContext);\n const toMediaQuery = React.useMemo(() => mediaQueryBuilder(breakpoints), [breakpoints]);\n\n const mediaQuery = React.useMemo(() => toMediaQuery(on), [toMediaQuery, on]);\n\n return useMediaQuery(mediaQuery || \"-\");\n};\n","import { Breakpoints } from \"./sanitize\";\nimport { fromBreakpointToMedia } from \"./fromBreakpointToMedia\";\n\nexport const mediaQueryBuilder = (breakpoints: Breakpoints) => (on = \"\"): string => {\n if (!on) {\n return \"\";\n }\n const rawBreakpointNames = on.split(\" \");\n const filteredBreakpoints = rawBreakpointNames.map((breakpointName) => breakpoints[breakpointName]).filter(Boolean);\n const mediaQuery = filteredBreakpoints\n .map((breakpoint) => fromBreakpointToMedia(breakpoint))\n .filter(Boolean)\n .join(\",\");\n if (!mediaQuery) {\n const isUniqBreakpoint = rawBreakpointNames.length === 1;\n console.error(\n `\"${rawBreakpointNames.join('\", \"')}\" ${isUniqBreakpoint ? \"is\" : \"are\"}n't ${\n isUniqBreakpoint ? \"a \" : \"\"\n }valid breakpoint${isUniqBreakpoint ? \"\" : \"s\"}`,\n );\n }\n return mediaQuery;\n};\n","import * as React from \"react\";\n\nimport { useBreakpoint } from \"./useBreakpoint\";\nimport { useMediaQuery } from \"./useMediaQuery\";\n\nexport type OnlyProps<OtherProps = Record<string, never>> = OtherProps & {\n matchMedia?: string;\n on?: string;\n as?: string | React.ComponentType<OtherProps>;\n};\n\nexport function Only<OtherProps = Record<string, never>>({\n matchMedia,\n on,\n as,\n children,\n ...props\n}: React.PropsWithChildren<OnlyProps<OtherProps>>): React.ReactElement | null {\n const matchOn = useBreakpoint(on);\n const matchQuery = useMediaQuery(matchMedia || \"-\");\n const isShown = matchOn || matchQuery;\n\n if (!isShown) {\n return null;\n }\n\n return React.createElement(as || React.Fragment, as ? (props as OtherProps) : undefined, children);\n}\n\nOnly.displayName = \"Only\";\n","import * as React from \"react\";\n\nimport { Only } from \"./Only\";\n\nexport interface MatchChildProps {\n matchMedia?: string;\n only?: string;\n}\n\n/* eslint-disable */\ndeclare global {\n namespace React {\n interface HTMLAttributes<T> extends MatchChildProps {}\n }\n}\n/* eslint-enable */\n\ntype Element = React.ReactElement<MatchChildProps & any, string | React.ComponentType<MatchChildProps & any>> | null;\n\nconst parseChildren = (element: Element): Element => {\n if (!element || !element.props) {\n return element;\n }\n\n const _children: Element | Element[] | null = element.props.children;\n if (!_children) {\n return null;\n }\n const children = React.Children.map(_children, parseChildren);\n const { only, matchMedia, ...props } = element.props;\n const clone = React.createElement(element.type, props, children);\n if (!only && !matchMedia) {\n return clone;\n }\n return (\n <Only on={only || \"\"} matchMedia={matchMedia || \"\"}>\n {clone}\n </Only>\n );\n};\n\ninterface MatchProps {\n [key: string]: any;\n children: Element | Element[] | null;\n as?: string;\n}\n\nexport const Match: React.FunctionComponent<MatchProps> = ({ children, as, ...props }) => {\n const computedChildren = React.Children.map(children, parseChildren);\n if (as) {\n return React.createElement(as, props, computedChildren);\n }\n return React.createElement(React.Fragment, null, computedChildren);\n};\n\nMatch.displayName = \"Match\";\n","import { CSSProperties } from \"react\";\nimport { Breakpoints } from \"./sanitize\";\nimport { fromBreakpointToMedia } from \"./fromBreakpointToMedia\";\n\ntype CSSinJSProperties =\n | CSSProperties\n | {\n [key: string]: CSSProperties;\n };\n\ninterface Points {\n [breakpoint: string]: CSSinJSProperties;\n}\n\ntype CSSinJS = Record<string, CSSinJSProperties>;\nexport const toJSON = (breakpoints: Breakpoints) => (points: Points): CSSinJS => {\n const css: CSSinJS = {};\n Object.keys(points).forEach((point) => {\n const breakpoint = breakpoints[point];\n if (!breakpoint) {\n throw new Error(`${point} is not a valid breakpoint\\nValid breakpoints are: ${Object.keys(breakpoints)}`);\n }\n css[`@media ${fromBreakpointToMedia(breakpoint)}`] = points[point];\n });\n return css;\n};\n\nconst stringify = (object: CSSinJSProperties) => {\n let string = \"\";\n Object.entries(object).forEach(([key, value]) => {\n if (typeof value !== \"object\") {\n string += `${key}: ${value};\\n`;\n return;\n }\n string += `${key} {\\n${stringify(value)}}\\n`;\n });\n return string;\n};\n\nexport const toCSS = (breakpoints: Breakpoints) => (points: Points): string => stringify(toJSON(breakpoints)(points));\n"],"names":["listOfSupportedUnits","listOfSupportedDirections","sanitize","inBreakpoints","Object","keys","reduce","breakpoints","breakpointName","breakpoint","Array","isArray","length","supposedUnit","supposedDirection","supposedMin","supposedMax","options","rest","error","Error","console","direction","unit","min","Math","max","includes","Infinity","defaultBreakpoints","xs","sm","md","lg","xl","BreakpointsContext","React","BreakpointsProvider","additionalBreakpoints","children","Provider","value","displayName","fromBreakpointToMedia","mediaList","minValue","maxValue","push","join","useMediaQuery","mediaQuery","mediaQueryList","matchMedia","matches","isShown","setIsShown","listener","event","addListener","removeListener","useBreakpoint","on","toMediaQuery","rawBreakpointNames","split","map","filter","Boolean","isUniqBreakpoint","mediaQueryBuilder","Only","as","props","matchOn","matchQuery","undefined","parseChildren","element","_children","only","clone","type","Match","computedChildren","toJSON","points","css","forEach","point","stringify","object","string","entries","key","toCSS"],"mappings":"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"}
1
+ {"version":3,"file":"react-responsive.modern.js","sources":["../src/sanitize.ts","../src/BreakpointsContext.tsx","../src/fromBreakpointToMedia.ts","../src/useMediaQuery.ts","../src/useBreakpoint.ts","../src/mediaQueryBuilder.ts","../src/Only.tsx","../src/Match.tsx","../src/css-in-js.ts"],"sourcesContent":["export type Units =\n | \"em\"\n | \"ex\"\n | \"%\"\n | \"px\"\n | \"cm\"\n | \"mm\"\n | \"in\"\n | \"pt\"\n | \"pc\"\n | \"ch\"\n | \"rem\"\n | \"vh\"\n | \"vw\"\n | \"vmin\"\n | \"vmax\";\n\nconst listOfSupportedUnits: Units[] = [\n \"em\",\n \"ex\",\n \"%\",\n \"px\",\n \"cm\",\n \"mm\",\n \"in\",\n \"pt\",\n \"pc\",\n \"ch\",\n \"rem\",\n \"vh\",\n \"vw\",\n \"vmin\",\n \"vmax\",\n];\n\ntype Directions = \"width\" | \"height\";\n\nconst listOfSupportedDirections: Directions[] = [\"width\", \"height\"];\n\nexport type ExposedBreakpoint =\n | [number, number]\n | [number, number, Units]\n | [number, number, { unit?: Units; direction?: Directions }];\n\nexport interface ExposedBreakpoints {\n [key: string]: ExposedBreakpoint;\n}\n\nexport type Breakpoint = [number, number, Units, Directions];\n\nexport interface Breakpoints {\n [breakpoint: string]: Breakpoint;\n}\n\nexport const sanitize = (inBreakpoints: ExposedBreakpoints): Breakpoints => {\n return Object.keys(inBreakpoints).reduce<Breakpoints>((breakpoints, breakpointName) => {\n const breakpoint = inBreakpoints[breakpointName];\n\n if (!Array.isArray(breakpoint) || breakpoint.length <= 1) {\n return breakpoints;\n }\n\n const [supposedMin, supposedMax, options, ...rest] = breakpoint;\n if (rest.length > 0) {\n const error = new Error(`The following fields \"${rest}\" have been ignored`);\n console.error(error);\n }\n\n if (typeof supposedMin !== \"number\" || typeof supposedMax !== \"number\") {\n return breakpoints;\n }\n\n let supposedUnit: Units | undefined;\n let supposedDirection: Directions | undefined;\n if (typeof options === \"string\") {\n supposedUnit = options;\n } else if (typeof options === \"object\") {\n supposedDirection = options.direction;\n supposedUnit = options.unit;\n }\n\n const min = Math.min(supposedMin, supposedMax);\n const max = Math.max(supposedMin, supposedMax);\n const unit = supposedUnit && listOfSupportedUnits.includes(supposedUnit) ? supposedUnit : \"px\";\n const direction =\n supposedDirection && listOfSupportedDirections.includes(supposedDirection) ? supposedDirection : \"width\";\n\n breakpoints[breakpointName] = [min, max, unit, direction];\n breakpoints[`${breakpointName}Up`] = [min, Infinity, unit, direction];\n breakpoints[`${breakpointName}Down`] = [0, max, unit, direction];\n\n return breakpoints;\n }, {});\n};\n","import * as React from \"react\";\n\nimport { sanitize, ExposedBreakpoints, Breakpoints } from \"./sanitize\";\n\nconst defaultBreakpoints: ExposedBreakpoints = {\n xs: [0, 575, \"px\"], // Extra small devices (portrait phones)\n sm: [576, 767, \"px\"], // Small devices (landscape phones)\n md: [768, 991, \"px\"], // Medium devices (tablets)\n lg: [992, 1199, \"px\"], // Large devices (desktops)\n xl: [1200, Infinity, \"px\"], // Extra large devices (large desktops)\n};\n\nexport const BreakpointsContext = React.createContext<Breakpoints>(sanitize(defaultBreakpoints));\n\ninterface BreakpointsProviderProps {\n breakpoints?: ExposedBreakpoints;\n additionalBreakpoints?: ExposedBreakpoints;\n}\n\nexport const BreakpointsProvider: React.FunctionComponent<React.PropsWithChildren<BreakpointsProviderProps>> = ({\n breakpoints = defaultBreakpoints,\n additionalBreakpoints = {},\n children,\n}) => {\n return (\n <BreakpointsContext.Provider\n value={sanitize({\n ...breakpoints,\n ...additionalBreakpoints,\n })}\n >\n {children}\n </BreakpointsContext.Provider>\n );\n};\n\nBreakpointsProvider.displayName = \"BreakpointsProvider\";\n","import { Breakpoint } from \"./sanitize\";\n\nexport const fromBreakpointToMedia = (breakpoint: Breakpoint): string => {\n const mediaList: string[] = [];\n const [minValue, maxValue, unit, direction] = breakpoint;\n let str;\n\n // Min value\n if (minValue !== 0) {\n str = `${minValue}${unit}`;\n mediaList.push(`(min-${direction}:${str})`);\n }\n\n // Max value\n if (maxValue !== Infinity) {\n str = `${maxValue}${unit}`;\n mediaList.push(`(max-${direction}:${str})`);\n }\n\n return \" \" + mediaList.join(\" and \");\n};\n","import * as React from \"react\";\n\n// const startTransitionFallbackForReact17AndBellow = (cb: () => void) => cb();\n// // @ts-expect-error not supported yet\n// const startTransition = React.startTransition || startTransitionFallbackForReact17AndBellow;\n\nexport const useMediaQuery = (mediaQuery: string): boolean => {\n const mediaQueryList = React.useMemo(() => matchMedia(mediaQuery), [mediaQuery]);\n const [isShown, setIsShown] = React.useState<boolean>(mediaQueryList.matches);\n\n React.useLayoutEffect(() => {\n setIsShown(mediaQueryList.matches);\n const listener = (event: MediaQueryListEvent) => {\n // We use startTransition as those update aren't urgent\n // startTransition(() => {\n setIsShown(event.matches);\n // });\n };\n\n // cannot use addEventListener for IE 11 and safari 13-\n mediaQueryList.addListener(listener);\n return () => {\n mediaQueryList.removeListener(listener);\n };\n }, [mediaQueryList]);\n\n return isShown;\n};\n","import * as React from \"react\";\n\nimport { BreakpointsContext } from \"./BreakpointsContext\";\n\nimport { mediaQueryBuilder } from \"./mediaQueryBuilder\";\n\nimport { useMediaQuery } from \"./useMediaQuery\";\n\nexport const useBreakpoint = (on?: string): boolean => {\n const breakpoints = React.useContext(BreakpointsContext);\n const toMediaQuery = React.useMemo(() => mediaQueryBuilder(breakpoints), [breakpoints]);\n\n const mediaQuery = React.useMemo(() => toMediaQuery(on), [toMediaQuery, on]);\n\n return useMediaQuery(mediaQuery || \"-\");\n};\n","import { Breakpoints } from \"./sanitize\";\nimport { fromBreakpointToMedia } from \"./fromBreakpointToMedia\";\n\nexport const mediaQueryBuilder =\n (breakpoints: Breakpoints) =>\n (on = \"\"): string => {\n if (!on) {\n return \"\";\n }\n const rawBreakpointNames = on.split(\" \");\n const filteredBreakpoints = rawBreakpointNames.map((breakpointName) => breakpoints[breakpointName]).filter(Boolean);\n const mediaQuery = filteredBreakpoints\n .map((breakpoint) => fromBreakpointToMedia(breakpoint))\n .filter(Boolean)\n .join(\",\");\n if (!mediaQuery) {\n const isUniqBreakpoint = rawBreakpointNames.length === 1;\n console.error(\n `\"${rawBreakpointNames.join('\", \"')}\" ${isUniqBreakpoint ? \"is\" : \"are\"}n't ${\n isUniqBreakpoint ? \"a \" : \"\"\n }valid breakpoint${isUniqBreakpoint ? \"\" : \"s\"}`,\n );\n }\n return mediaQuery;\n };\n","import * as React from \"react\";\n\nimport { useBreakpoint } from \"./useBreakpoint\";\nimport { useMediaQuery } from \"./useMediaQuery\";\n\nexport type OnlyProps<OtherProps = Record<string, never>> = OtherProps & {\n matchMedia?: string;\n on?: string;\n as?: string | React.ComponentType<OtherProps>;\n};\n\nexport function Only<OtherProps = Record<string, never>>({\n matchMedia,\n on,\n as,\n children,\n ...props\n}: React.PropsWithChildren<OnlyProps<OtherProps>>): React.ReactElement | null {\n const matchOn = useBreakpoint(on);\n const matchQuery = useMediaQuery(matchMedia || \"-\");\n const isShown = matchOn || matchQuery;\n\n if (!isShown) {\n return null;\n }\n\n return React.createElement(as || React.Fragment, as ? (props as OtherProps) : undefined, children);\n}\n\nOnly.displayName = \"Only\";\n","import * as React from \"react\";\n\nimport { Only } from \"./Only\";\n\nexport interface MatchChildProps {\n matchMedia?: string;\n only?: string;\n}\n\ndeclare module \"react\" {\n interface HTMLAttributes<T> extends React.AriaAttributes, React.DOMAttributes<T>, MatchChildProps {}\n}\n\ntype Element = React.ReactElement<MatchChildProps & any, string | React.ComponentType<MatchChildProps & any>> | null;\n\nconst parseChildren = (element: Element): Element => {\n if (!element || !element.props) {\n return element;\n }\n\n const _children: Element | Element[] | null = element.props.children;\n if (!_children) {\n return null;\n }\n const children = React.Children.map(_children, parseChildren);\n const { only, matchMedia, ...props } = element.props;\n const clone = React.createElement(element.type, props, children);\n if (!only && !matchMedia) {\n return clone;\n }\n return (\n <Only on={only || \"\"} matchMedia={matchMedia || \"\"}>\n {clone}\n </Only>\n );\n};\n\ninterface MatchProps {\n [key: string]: any;\n children: Element | Element[] | null;\n as?: string;\n}\n\nexport const Match: React.FunctionComponent<MatchProps> = ({ children, as, ...props }) => {\n const computedChildren = React.Children.map(children, parseChildren);\n if (as) {\n return React.createElement(as, props, computedChildren);\n }\n return React.createElement(React.Fragment, null, computedChildren);\n};\n\nMatch.displayName = \"Match\";\n","import { CSSProperties } from \"react\";\nimport { Breakpoints } from \"./sanitize\";\nimport { fromBreakpointToMedia } from \"./fromBreakpointToMedia\";\n\ntype CSSinJSProperties =\n | CSSProperties\n | {\n [key: string]: CSSProperties;\n };\n\ninterface Points {\n [breakpoint: string]: CSSinJSProperties;\n}\n\ntype CSSinJS = Record<string, CSSinJSProperties>;\nexport const toJSON =\n (breakpoints: Breakpoints) =>\n (points: Points): CSSinJS => {\n const css: CSSinJS = {};\n Object.keys(points).forEach((point) => {\n const breakpoint = breakpoints[point];\n if (!breakpoint) {\n throw new Error(`${point} is not a valid breakpoint\\nValid breakpoints are: ${Object.keys(breakpoints)}`);\n }\n css[`@media ${fromBreakpointToMedia(breakpoint)}`] = points[point];\n });\n return css;\n };\n\nconst stringify = (object: CSSinJSProperties) => {\n let string = \"\";\n Object.entries(object).forEach(([key, value]) => {\n if (typeof value !== \"object\") {\n string += `${key}: ${value};\\n`;\n return;\n }\n string += `${key} {\\n${stringify(value)}}\\n`;\n });\n return string;\n};\n\nexport const toCSS =\n (breakpoints: Breakpoints) =>\n (points: Points): string =>\n stringify(toJSON(breakpoints)(points));\n"],"names":["listOfSupportedUnits","listOfSupportedDirections","sanitize","inBreakpoints","Object","keys","reduce","breakpoints","breakpointName","Array","isArray","breakpoint","length","supposedUnit","supposedDirection","supposedMax","options","rest","slice","error","Error","console","supposedMin","direction","unit","min","Math","max","includes","Infinity","defaultBreakpoints","xs","sm","md","lg","xl","BreakpointsContext","React","createContext","BreakpointsProvider","_ref","additionalBreakpoints","children","Provider","value","_ref$additionalBreakp","displayName","fromBreakpointToMedia","mediaList","minValue","maxValue","push","str","join","useMediaQuery","mediaQuery","mediaQueryList","useMemo","matchMedia","_React$useState","useState","matches","isShown","setIsShown","useLayoutEffect","listener","event","addListener","removeListener","on","useContext","toMediaQuery","rawBreakpointNames","split","map","filter","Boolean","isUniqBreakpoint","Only","as","props","matchOn","useBreakpoint","matchQuery","createElement","Fragment","undefined","parseChildren","element","_children","Children","only","_objectWithoutPropertiesLoose","_element$props","_excluded","type","clone","_excluded2","computedChildren","Match","toJSON","points","css","forEach","point","stringify","object","string","entries","key","toCSS"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{createContext as n,createElement as r,useMemo as e,useState as t,useLayoutEffect as i,useContext as a,Fragment as o,Children as u}from"react";function c(){return(c=Object.assign||function(n){for(var r=1;r<arguments.length;r++){var e=arguments[r];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(n[t]=e[t])}return n}).apply(this,arguments)}function f(n,r){if(null==n)return{};var e,t,i={},a=Object.keys(n);for(t=0;t<a.length;t++)r.indexOf(e=a[t])>=0||(i[e]=n[e]);return i}var l=["em","ex","%","px","cm","mm","in","pt","pc","ch","rem","vh","vw","vmin","vmax"],p=["width","height"],s=function(n){return Object.keys(n).reduce(function(r,e){var t=n[e];if(!Array.isArray(t)||t.length<=1)return r;var i,a,o=t[0],u=t[1],c=t[2],f=t.slice(3);if(f.length>0){var s=new Error('The following fields "'+f+'" have been ignored');console.error(s)}if("number"!=typeof o||"number"!=typeof u)return r;"string"==typeof c?i=c:"object"==typeof c&&(a=c.direction,i=c.unit);var v=Math.min(o,u),d=Math.max(o,u),h=i&&l.includes(i)?i:"px",m=a&&p.includes(a)?a:"width";return r[e]=[v,d,h,m],r[e+"Up"]=[v,Infinity,h,m],r[e+"Down"]=[0,d,h,m],r},{})},v={xs:[0,575,"px"],sm:[576,767,"px"],md:[768,991,"px"],lg:[992,1199,"px"],xl:[1200,Infinity,"px"]},d=n(s(v)),h=function(n){var e=n.breakpoints,t=n.additionalBreakpoints,i=n.children;return r(d.Provider,{value:s(c({},void 0===e?v:e,void 0===t?{}:t))},i)};h.displayName="BreakpointsProvider";var m=function(n){var r=[],e=n[0],t=n[1],i=n[2],a=n[3];return 0!==e&&r.push("(min-"+a+":"+e+i+")"),Infinity!==t&&r.push("(max-"+a+":"+t+i+")")," "+r.join(" and ")},y=function(n){var r=e(function(){return matchMedia(n)},[n]),a=t(r.matches),o=a[0],u=a[1];return i(function(){u(r.matches);var n=function(n){return u(n.matches)};return r.addListener(n),function(){r.removeListener(n)}},[r]),o},b=function(n){var r=a(d),t=e(function(){return function(n){return function(r){if(void 0===r&&(r=""),!r)return"";var e=r.split(" "),t=e.map(function(r){return n[r]}).filter(Boolean).map(function(n){return m(n)}).filter(Boolean).join(",");if(!t){var i=1===e.length;console.error('"'+e.join('", "')+'" '+(i?"is":"are")+"n't "+(i?"a ":"")+"valid breakpoint"+(i?"":"s"))}return t}}(r)},[r]),i=e(function(){return t(n)},[t,n]);return y(i||"-")};function x(n){var e=n.matchMedia,t=n.on,i=n.as,a=n.children,u=f(n,["matchMedia","on","as","children"]),c=b(t),l=y(e||"-");return c||l?r(i||o,i?u:void 0,a):null}x.displayName="Only";var j=function n(e){if(!e||!e.props)return e;var t=e.props.children;if(!t)return null;var i=u.map(t,n),a=e.props,o=a.only,c=a.matchMedia,l=f(a,["only","matchMedia"]),p=r(e.type,l,i);return o||c?r(x,{on:o||"",matchMedia:c||""},p):p},g=function(n){var e=n.children,t=n.as,i=f(n,["children","as"]),a=u.map(e,j);return t?r(t,i,a):r(o,null,a)};g.displayName="Match";var k=function(n){return function(r){var e={};return Object.keys(r).forEach(function(t){var i=n[t];if(!i)throw new Error(t+" is not a valid breakpoint\nValid breakpoints are: "+Object.keys(n));e["@media "+m(i)]=r[t]}),e}},O=function n(r){var e="";return Object.entries(r).forEach(function(r){var t=r[0],i=r[1];e+="object"==typeof i?t+" {\n"+n(i)+"}\n":t+": "+i+";\n"}),e},w=function(n){return function(r){return O(k(n)(r))}};export{d as BreakpointsContext,h as BreakpointsProvider,g as Match,x as Only,w as toCSS,k as toJSON,b as useBreakpoint,y as useMediaQuery};
1
+ import*as n from"react";function e(){return e=Object.assign?Object.assign.bind():function(n){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(n[t]=r[t])}return n},e.apply(this,arguments)}function r(n,e){if(null==n)return{};var r,t,i={},a=Object.keys(n);for(t=0;t<a.length;t++)e.indexOf(r=a[t])>=0||(i[r]=n[r]);return i}var t=["em","ex","%","px","cm","mm","in","pt","pc","ch","rem","vh","vw","vmin","vmax"],i=["width","height"],a=function(n){return Object.keys(n).reduce(function(e,r){var a=n[r];if(!Array.isArray(a)||a.length<=1)return e;var o,u,c=a[0],f=a[1],l=a[2],s=a.slice(3);if(s.length>0){var m=new Error('The following fields "'+s+'" have been ignored');console.error(m)}if("number"!=typeof c||"number"!=typeof f)return e;"string"==typeof l?o=l:"object"==typeof l&&(u=l.direction,o=l.unit);var p=Math.min(c,f),d=Math.max(c,f),v=o&&t.includes(o)?o:"px",h=u&&i.includes(u)?u:"width";return e[r]=[p,d,v,h],e[r+"Up"]=[p,Infinity,v,h],e[r+"Down"]=[0,d,v,h],e},{})},o={xs:[0,575,"px"],sm:[576,767,"px"],md:[768,991,"px"],lg:[992,1199,"px"],xl:[1200,Infinity,"px"]},u=n.createContext(a(o)),c=function(r){var t=r.breakpoints,i=r.additionalBreakpoints,c=r.children;return n.createElement(u.Provider,{value:a(e({},void 0===t?o:t,void 0===i?{}:i))},c)};c.displayName="BreakpointsProvider";var f=function(n){var e=[],r=n[0],t=n[1],i=n[2],a=n[3];return 0!==r&&e.push("(min-"+a+":"+r+i+")"),Infinity!==t&&e.push("(max-"+a+":"+t+i+")")," "+e.join(" and ")},l=function(e){var r=n.useMemo(function(){return matchMedia(e)},[e]),t=n.useState(r.matches),i=t[0],a=t[1];return n.useLayoutEffect(function(){a(r.matches);var n=function(n){a(n.matches)};return r.addListener(n),function(){r.removeListener(n)}},[r]),i},s=function(e){var r=n.useContext(u),t=n.useMemo(function(){return function(n){return function(e){if(void 0===e&&(e=""),!e)return"";var r=e.split(" "),t=r.map(function(e){return n[e]}).filter(Boolean).map(function(n){return f(n)}).filter(Boolean).join(",");if(!t){var i=1===r.length;console.error('"'+r.join('", "')+'" '+(i?"is":"are")+"n't "+(i?"a ":"")+"valid breakpoint"+(i?"":"s"))}return t}}(r)},[r]),i=n.useMemo(function(){return t(e)},[t,e]);return l(i||"-")},m=["matchMedia","on","as","children"];function p(e){var t=e.matchMedia,i=e.on,a=e.as,o=e.children,u=r(e,m),c=s(i),f=l(t||"-");return c||f?n.createElement(a||n.Fragment,a?u:void 0,o):null}p.displayName="Only";var d=["only","matchMedia"],v=["children","as"],h=function e(t){if(!t||!t.props)return t;var i=t.props.children;if(!i)return null;var a=n.Children.map(i,e),o=t.props,u=o.only,c=o.matchMedia,f=r(o,d),l=n.createElement(t.type,f,a);return u||c?n.createElement(p,{on:u||"",matchMedia:c||""},l):l},y=function(e){var t=e.children,i=e.as,a=r(e,v),o=n.Children.map(t,h);return i?n.createElement(i,a,o):n.createElement(n.Fragment,null,o)};y.displayName="Match";var b=function(n){return function(e){var r={};return Object.keys(e).forEach(function(t){var i=n[t];if(!i)throw new Error(t+" is not a valid breakpoint\nValid breakpoints are: "+Object.keys(n));r["@media "+f(i)]=e[t]}),r}},x=function n(e){var r="";return Object.entries(e).forEach(function(e){var t=e[0],i=e[1];r+="object"==typeof i?t+" {\n"+n(i)+"}\n":t+": "+i+";\n"}),r},g=function(n){return function(e){return x(b(n)(e))}};export{u as BreakpointsContext,c as BreakpointsProvider,y as Match,p as Only,g as toCSS,b as toJSON,s as useBreakpoint,l as useMediaQuery};
2
2
  //# sourceMappingURL=react-responsive.modern.js.map
@@ -1,2 +1,2 @@
1
- !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],n):n((e||self)["@blocz/react-responsive"]={},e.React)}(this,function(e,n){function r(){return(r=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t])}return e}).apply(this,arguments)}function t(e,n){if(null==e)return{};var r,t,i={},o=Object.keys(e);for(t=0;t<o.length;t++)n.indexOf(r=o[t])>=0||(i[r]=e[r]);return i}var i=["em","ex","%","px","cm","mm","in","pt","pc","ch","rem","vh","vw","vmin","vmax"],o=["width","height"],a=function(e){return Object.keys(e).reduce(function(n,r){var t=e[r];if(!Array.isArray(t)||t.length<=1)return n;var a,u,c=t[0],f=t[1],l=t[2],s=t.slice(3);if(s.length>0){var p=new Error('The following fields "'+s+'" have been ignored');console.error(p)}if("number"!=typeof c||"number"!=typeof f)return n;"string"==typeof l?a=l:"object"==typeof l&&(u=l.direction,a=l.unit);var d=Math.min(c,f),m=Math.max(c,f),h=a&&i.includes(a)?a:"px",v=u&&o.includes(u)?u:"width";return n[r]=[d,m,h,v],n[r+"Up"]=[d,Infinity,h,v],n[r+"Down"]=[0,m,h,v],n},{})},u={xs:[0,575,"px"],sm:[576,767,"px"],md:[768,991,"px"],lg:[992,1199,"px"],xl:[1200,Infinity,"px"]},c=n.createContext(a(u)),f=function(e){var t=e.breakpoints,i=e.additionalBreakpoints,o=e.children;return n.createElement(c.Provider,{value:a(r({},void 0===t?u:t,void 0===i?{}:i))},o)};f.displayName="BreakpointsProvider";var l=function(e){var n=[],r=e[0],t=e[1],i=e[2],o=e[3];return 0!==r&&n.push("(min-"+o+":"+r+i+")"),Infinity!==t&&n.push("(max-"+o+":"+t+i+")")," "+n.join(" and ")},s=function(e){var r=n.useMemo(function(){return matchMedia(e)},[e]),t=n.useState(r.matches),i=t[0],o=t[1];return n.useLayoutEffect(function(){o(r.matches);var e=function(e){return o(e.matches)};return r.addListener(e),function(){r.removeListener(e)}},[r]),i},p=function(e){var r=n.useContext(c),t=n.useMemo(function(){return function(e){return function(n){if(void 0===n&&(n=""),!n)return"";var r=n.split(" "),t=r.map(function(n){return e[n]}).filter(Boolean).map(function(e){return l(e)}).filter(Boolean).join(",");if(!t){var i=1===r.length;console.error('"'+r.join('", "')+'" '+(i?"is":"are")+"n't "+(i?"a ":"")+"valid breakpoint"+(i?"":"s"))}return t}}(r)},[r]),i=n.useMemo(function(){return t(e)},[t,e]);return s(i||"-")};function d(e){var r=e.matchMedia,i=e.on,o=e.as,a=e.children,u=t(e,["matchMedia","on","as","children"]),c=p(i),f=s(r||"-");return c||f?n.createElement(o||n.Fragment,o?u:void 0,a):null}d.displayName="Only";var m=function e(r){if(!r||!r.props)return r;var i=r.props.children;if(!i)return null;var o=n.Children.map(i,e),a=r.props,u=a.only,c=a.matchMedia,f=t(a,["only","matchMedia"]),l=n.createElement(r.type,f,o);return u||c?n.createElement(d,{on:u||"",matchMedia:c||""},l):l},h=function(e){var r=e.children,i=e.as,o=t(e,["children","as"]),a=n.Children.map(r,m);return i?n.createElement(i,o,a):n.createElement(n.Fragment,null,a)};h.displayName="Match";var v=function(e){return function(n){var r={};return Object.keys(n).forEach(function(t){var i=e[t];if(!i)throw new Error(t+" is not a valid breakpoint\nValid breakpoints are: "+Object.keys(e));r["@media "+l(i)]=n[t]}),r}},y=function e(n){var r="";return Object.entries(n).forEach(function(n){var t=n[0],i=n[1];r+="object"==typeof i?t+" {\n"+e(i)+"}\n":t+": "+i+";\n"}),r};e.BreakpointsContext=c,e.BreakpointsProvider=f,e.Match=h,e.Only=d,e.toCSS=function(e){return function(n){return y(v(e)(n))}},e.toJSON=v,e.useBreakpoint=p,e.useMediaQuery=s});
1
+ !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],n):n((e||self)["@blocz/react-responsive"]={},e.React)}(this,function(e,n){function r(e){if(e&&e.__esModule)return e;var n=Object.create(null);return e&&Object.keys(e).forEach(function(r){if("default"!==r){var t=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,t.get?t:{enumerable:!0,get:function(){return e[r]}})}}),n.default=e,n}var t=/*#__PURE__*/r(n);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t])}return e},i.apply(this,arguments)}function o(e,n){if(null==e)return{};var r,t,i={},o=Object.keys(e);for(t=0;t<o.length;t++)n.indexOf(r=o[t])>=0||(i[r]=e[r]);return i}var a=["em","ex","%","px","cm","mm","in","pt","pc","ch","rem","vh","vw","vmin","vmax"],u=["width","height"],c=function(e){return Object.keys(e).reduce(function(n,r){var t=e[r];if(!Array.isArray(t)||t.length<=1)return n;var i,o,c=t[0],f=t[1],l=t[2],s=t.slice(3);if(s.length>0){var d=new Error('The following fields "'+s+'" have been ignored');console.error(d)}if("number"!=typeof c||"number"!=typeof f)return n;"string"==typeof l?i=l:"object"==typeof l&&(o=l.direction,i=l.unit);var p=Math.min(c,f),m=Math.max(c,f),v=i&&a.includes(i)?i:"px",h=o&&u.includes(o)?o:"width";return n[r]=[p,m,v,h],n[r+"Up"]=[p,Infinity,v,h],n[r+"Down"]=[0,m,v,h],n},{})},f={xs:[0,575,"px"],sm:[576,767,"px"],md:[768,991,"px"],lg:[992,1199,"px"],xl:[1200,Infinity,"px"]},l=t.createContext(c(f)),s=function(e){var n=e.breakpoints,r=e.additionalBreakpoints,o=e.children;return t.createElement(l.Provider,{value:c(i({},void 0===n?f:n,void 0===r?{}:r))},o)};s.displayName="BreakpointsProvider";var d=function(e){var n=[],r=e[0],t=e[1],i=e[2],o=e[3];return 0!==r&&n.push("(min-"+o+":"+r+i+")"),Infinity!==t&&n.push("(max-"+o+":"+t+i+")")," "+n.join(" and ")},p=function(e){var n=t.useMemo(function(){return matchMedia(e)},[e]),r=t.useState(n.matches),i=r[0],o=r[1];return t.useLayoutEffect(function(){o(n.matches);var e=function(e){o(e.matches)};return n.addListener(e),function(){n.removeListener(e)}},[n]),i},m=function(e){var n=t.useContext(l),r=t.useMemo(function(){return function(e){return function(n){if(void 0===n&&(n=""),!n)return"";var r=n.split(" "),t=r.map(function(n){return e[n]}).filter(Boolean).map(function(e){return d(e)}).filter(Boolean).join(",");if(!t){var i=1===r.length;console.error('"'+r.join('", "')+'" '+(i?"is":"are")+"n't "+(i?"a ":"")+"valid breakpoint"+(i?"":"s"))}return t}}(n)},[n]),i=t.useMemo(function(){return r(e)},[r,e]);return p(i||"-")},v=["matchMedia","on","as","children"];function h(e){var n=e.matchMedia,r=e.on,i=e.as,a=e.children,u=o(e,v),c=m(r),f=p(n||"-");return c||f?t.createElement(i||t.Fragment,i?u:void 0,a):null}h.displayName="Only";var y=["only","matchMedia"],b=["children","as"],x=function e(n){if(!n||!n.props)return n;var r=n.props.children;if(!r)return null;var i=t.Children.map(r,e),a=n.props,u=a.only,c=a.matchMedia,f=o(a,y),l=t.createElement(n.type,f,i);return u||c?t.createElement(h,{on:u||"",matchMedia:c||""},l):l},g=function(e){var n=e.children,r=e.as,i=o(e,b),a=t.Children.map(n,x);return r?t.createElement(r,i,a):t.createElement(t.Fragment,null,a)};g.displayName="Match";var j=function(e){return function(n){var r={};return Object.keys(n).forEach(function(t){var i=e[t];if(!i)throw new Error(t+" is not a valid breakpoint\nValid breakpoints are: "+Object.keys(e));r["@media "+d(i)]=n[t]}),r}},O=function e(n){var r="";return Object.entries(n).forEach(function(n){var t=n[0],i=n[1];r+="object"==typeof i?t+" {\n"+e(i)+"}\n":t+": "+i+";\n"}),r};e.BreakpointsContext=l,e.BreakpointsProvider=s,e.Match=g,e.Only=h,e.toCSS=function(e){return function(n){return O(j(e)(n))}},e.toJSON=j,e.useBreakpoint=m,e.useMediaQuery=p});
2
2
  //# sourceMappingURL=react-responsive.umd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"react-responsive.umd.js","sources":["../src/sanitize.ts","../src/BreakpointsContext.tsx","../src/fromBreakpointToMedia.ts","../src/useMediaQuery.ts","../src/useBreakpoint.ts","../src/mediaQueryBuilder.ts","../src/Only.tsx","../src/Match.tsx","../src/css-in-js.ts"],"sourcesContent":["export type Units =\n | \"em\"\n | \"ex\"\n | \"%\"\n | \"px\"\n | \"cm\"\n | \"mm\"\n | \"in\"\n | \"pt\"\n | \"pc\"\n | \"ch\"\n | \"rem\"\n | \"vh\"\n | \"vw\"\n | \"vmin\"\n | \"vmax\";\n\nconst listOfSupportedUnits: Units[] = [\n \"em\",\n \"ex\",\n \"%\",\n \"px\",\n \"cm\",\n \"mm\",\n \"in\",\n \"pt\",\n \"pc\",\n \"ch\",\n \"rem\",\n \"vh\",\n \"vw\",\n \"vmin\",\n \"vmax\",\n];\n\ntype Directions = \"width\" | \"height\";\n\nconst listOfSupportedDirections: Directions[] = [\"width\", \"height\"];\n\nexport type ExposedBreakpoint =\n | [number, number]\n | [number, number, Units]\n | [number, number, { unit?: Units; direction?: Directions }];\n\nexport interface ExposedBreakpoints {\n [key: string]: ExposedBreakpoint;\n}\n\nexport type Breakpoint = [number, number, Units, Directions];\n\nexport interface Breakpoints {\n [breakpoint: string]: Breakpoint;\n}\n\nexport const sanitize = (inBreakpoints: ExposedBreakpoints): Breakpoints => {\n return Object.keys(inBreakpoints).reduce<Breakpoints>((breakpoints, breakpointName) => {\n const breakpoint = inBreakpoints[breakpointName];\n\n if (!Array.isArray(breakpoint) || breakpoint.length <= 1) {\n return breakpoints;\n }\n\n const [supposedMin, supposedMax, options, ...rest] = breakpoint;\n if (rest.length > 0) {\n const error = new Error(`The following fields \"${rest}\" have been ignored`);\n console.error(error);\n }\n\n if (typeof supposedMin !== \"number\" || typeof supposedMax !== \"number\") {\n return breakpoints;\n }\n\n let supposedUnit: Units | undefined;\n let supposedDirection: Directions | undefined;\n if (typeof options === \"string\") {\n supposedUnit = options;\n } else if (typeof options === \"object\") {\n supposedDirection = options.direction;\n supposedUnit = options.unit;\n }\n\n const min = Math.min(supposedMin, supposedMax);\n const max = Math.max(supposedMin, supposedMax);\n const unit = supposedUnit && listOfSupportedUnits.includes(supposedUnit) ? supposedUnit : \"px\";\n const direction =\n supposedDirection && listOfSupportedDirections.includes(supposedDirection) ? supposedDirection : \"width\";\n\n breakpoints[breakpointName] = [min, max, unit, direction];\n breakpoints[`${breakpointName}Up`] = [min, Infinity, unit, direction];\n breakpoints[`${breakpointName}Down`] = [0, max, unit, direction];\n\n return breakpoints;\n }, {});\n};\n","import * as React from \"react\";\n\nimport { sanitize, ExposedBreakpoints, Breakpoints } from \"./sanitize\";\n\nconst defaultBreakpoints: ExposedBreakpoints = {\n xs: [0, 575, \"px\"], // Extra small devices (portrait phones)\n sm: [576, 767, \"px\"], // Small devices (landscape phones)\n md: [768, 991, \"px\"], // Medium devices (tablets)\n lg: [992, 1199, \"px\"], // Large devices (desktops)\n xl: [1200, Infinity, \"px\"], // Extra large devices (large desktops)\n};\n\nexport const BreakpointsContext = React.createContext<Breakpoints>(sanitize(defaultBreakpoints));\n\ninterface BreakpointsProviderProps {\n breakpoints?: ExposedBreakpoints;\n additionalBreakpoints?: ExposedBreakpoints;\n}\n\nexport const BreakpointsProvider: React.FunctionComponent<BreakpointsProviderProps> = ({\n breakpoints = defaultBreakpoints,\n additionalBreakpoints = {},\n children,\n}) => {\n return (\n <BreakpointsContext.Provider\n value={sanitize({\n ...breakpoints,\n ...additionalBreakpoints,\n })}\n >\n {children}\n </BreakpointsContext.Provider>\n );\n};\n\nBreakpointsProvider.displayName = \"BreakpointsProvider\";\n","import { Breakpoint } from \"./sanitize\";\n\nexport const fromBreakpointToMedia = (breakpoint: Breakpoint): string => {\n const mediaList: string[] = [];\n const [minValue, maxValue, unit, direction] = breakpoint;\n let str;\n\n // Min value\n if (minValue !== 0) {\n str = `${minValue}${unit}`;\n mediaList.push(`(min-${direction}:${str})`);\n }\n\n // Max value\n if (maxValue !== Infinity) {\n str = `${maxValue}${unit}`;\n mediaList.push(`(max-${direction}:${str})`);\n }\n\n return \" \" + mediaList.join(\" and \");\n};\n","import * as React from \"react\";\n\nexport const useMediaQuery = (mediaQuery: string): boolean => {\n const mediaQueryList = React.useMemo(() => matchMedia(mediaQuery), [mediaQuery]);\n const [isShown, setIsShown] = React.useState<boolean>(mediaQueryList.matches);\n\n React.useLayoutEffect(() => {\n setIsShown(mediaQueryList.matches);\n const listener = (event: MediaQueryListEvent) => setIsShown(event.matches);\n\n // cannot use addEventListener for IE 11 and safari 13-\n mediaQueryList.addListener(listener);\n return () => {\n mediaQueryList.removeListener(listener);\n };\n }, [mediaQueryList]);\n\n return isShown;\n};\n","import * as React from \"react\";\n\nimport { BreakpointsContext } from \"./BreakpointsContext\";\n\nimport { mediaQueryBuilder } from \"./mediaQueryBuilder\";\n\nimport { useMediaQuery } from \"./useMediaQuery\";\n\nexport const useBreakpoint = (on?: string): boolean => {\n const breakpoints = React.useContext(BreakpointsContext);\n const toMediaQuery = React.useMemo(() => mediaQueryBuilder(breakpoints), [breakpoints]);\n\n const mediaQuery = React.useMemo(() => toMediaQuery(on), [toMediaQuery, on]);\n\n return useMediaQuery(mediaQuery || \"-\");\n};\n","import { Breakpoints } from \"./sanitize\";\nimport { fromBreakpointToMedia } from \"./fromBreakpointToMedia\";\n\nexport const mediaQueryBuilder = (breakpoints: Breakpoints) => (on = \"\"): string => {\n if (!on) {\n return \"\";\n }\n const rawBreakpointNames = on.split(\" \");\n const filteredBreakpoints = rawBreakpointNames.map((breakpointName) => breakpoints[breakpointName]).filter(Boolean);\n const mediaQuery = filteredBreakpoints\n .map((breakpoint) => fromBreakpointToMedia(breakpoint))\n .filter(Boolean)\n .join(\",\");\n if (!mediaQuery) {\n const isUniqBreakpoint = rawBreakpointNames.length === 1;\n console.error(\n `\"${rawBreakpointNames.join('\", \"')}\" ${isUniqBreakpoint ? \"is\" : \"are\"}n't ${\n isUniqBreakpoint ? \"a \" : \"\"\n }valid breakpoint${isUniqBreakpoint ? \"\" : \"s\"}`,\n );\n }\n return mediaQuery;\n};\n","import * as React from \"react\";\n\nimport { useBreakpoint } from \"./useBreakpoint\";\nimport { useMediaQuery } from \"./useMediaQuery\";\n\nexport type OnlyProps<OtherProps = Record<string, never>> = OtherProps & {\n matchMedia?: string;\n on?: string;\n as?: string | React.ComponentType<OtherProps>;\n};\n\nexport function Only<OtherProps = Record<string, never>>({\n matchMedia,\n on,\n as,\n children,\n ...props\n}: React.PropsWithChildren<OnlyProps<OtherProps>>): React.ReactElement | null {\n const matchOn = useBreakpoint(on);\n const matchQuery = useMediaQuery(matchMedia || \"-\");\n const isShown = matchOn || matchQuery;\n\n if (!isShown) {\n return null;\n }\n\n return React.createElement(as || React.Fragment, as ? (props as OtherProps) : undefined, children);\n}\n\nOnly.displayName = \"Only\";\n","import * as React from \"react\";\n\nimport { Only } from \"./Only\";\n\nexport interface MatchChildProps {\n matchMedia?: string;\n only?: string;\n}\n\n/* eslint-disable */\ndeclare global {\n namespace React {\n interface HTMLAttributes<T> extends MatchChildProps {}\n }\n}\n/* eslint-enable */\n\ntype Element = React.ReactElement<MatchChildProps & any, string | React.ComponentType<MatchChildProps & any>> | null;\n\nconst parseChildren = (element: Element): Element => {\n if (!element || !element.props) {\n return element;\n }\n\n const _children: Element | Element[] | null = element.props.children;\n if (!_children) {\n return null;\n }\n const children = React.Children.map(_children, parseChildren);\n const { only, matchMedia, ...props } = element.props;\n const clone = React.createElement(element.type, props, children);\n if (!only && !matchMedia) {\n return clone;\n }\n return (\n <Only on={only || \"\"} matchMedia={matchMedia || \"\"}>\n {clone}\n </Only>\n );\n};\n\ninterface MatchProps {\n [key: string]: any;\n children: Element | Element[] | null;\n as?: string;\n}\n\nexport const Match: React.FunctionComponent<MatchProps> = ({ children, as, ...props }) => {\n const computedChildren = React.Children.map(children, parseChildren);\n if (as) {\n return React.createElement(as, props, computedChildren);\n }\n return React.createElement(React.Fragment, null, computedChildren);\n};\n\nMatch.displayName = \"Match\";\n","import { CSSProperties } from \"react\";\nimport { Breakpoints } from \"./sanitize\";\nimport { fromBreakpointToMedia } from \"./fromBreakpointToMedia\";\n\ntype CSSinJSProperties =\n | CSSProperties\n | {\n [key: string]: CSSProperties;\n };\n\ninterface Points {\n [breakpoint: string]: CSSinJSProperties;\n}\n\ntype CSSinJS = Record<string, CSSinJSProperties>;\nexport const toJSON = (breakpoints: Breakpoints) => (points: Points): CSSinJS => {\n const css: CSSinJS = {};\n Object.keys(points).forEach((point) => {\n const breakpoint = breakpoints[point];\n if (!breakpoint) {\n throw new Error(`${point} is not a valid breakpoint\\nValid breakpoints are: ${Object.keys(breakpoints)}`);\n }\n css[`@media ${fromBreakpointToMedia(breakpoint)}`] = points[point];\n });\n return css;\n};\n\nconst stringify = (object: CSSinJSProperties) => {\n let string = \"\";\n Object.entries(object).forEach(([key, value]) => {\n if (typeof value !== \"object\") {\n string += `${key}: ${value};\\n`;\n return;\n }\n string += `${key} {\\n${stringify(value)}}\\n`;\n });\n return string;\n};\n\nexport const toCSS = (breakpoints: Breakpoints) => (points: Points): string => stringify(toJSON(breakpoints)(points));\n"],"names":["listOfSupportedUnits","listOfSupportedDirections","sanitize","inBreakpoints","Object","keys","reduce","breakpoints","breakpointName","breakpoint","Array","isArray","length","supposedUnit","supposedDirection","supposedMin","supposedMax","options","rest","error","Error","console","direction","unit","min","Math","max","includes","Infinity","defaultBreakpoints","xs","sm","md","lg","xl","BreakpointsContext","React","BreakpointsProvider","additionalBreakpoints","children","Provider","value","displayName","fromBreakpointToMedia","mediaList","minValue","maxValue","push","join","useMediaQuery","mediaQuery","mediaQueryList","matchMedia","matches","isShown","setIsShown","listener","event","addListener","removeListener","useBreakpoint","on","toMediaQuery","rawBreakpointNames","split","map","filter","Boolean","isUniqBreakpoint","mediaQueryBuilder","Only","as","props","matchOn","matchQuery","undefined","parseChildren","element","_children","only","clone","type","Match","computedChildren","toJSON","points","css","forEach","point","stringify","object","string","entries","key"],"mappings":"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"}
1
+ {"version":3,"file":"react-responsive.umd.js","sources":["../src/sanitize.ts","../src/BreakpointsContext.tsx","../src/fromBreakpointToMedia.ts","../src/useMediaQuery.ts","../src/useBreakpoint.ts","../src/mediaQueryBuilder.ts","../src/Only.tsx","../src/Match.tsx","../src/css-in-js.ts"],"sourcesContent":["export type Units =\n | \"em\"\n | \"ex\"\n | \"%\"\n | \"px\"\n | \"cm\"\n | \"mm\"\n | \"in\"\n | \"pt\"\n | \"pc\"\n | \"ch\"\n | \"rem\"\n | \"vh\"\n | \"vw\"\n | \"vmin\"\n | \"vmax\";\n\nconst listOfSupportedUnits: Units[] = [\n \"em\",\n \"ex\",\n \"%\",\n \"px\",\n \"cm\",\n \"mm\",\n \"in\",\n \"pt\",\n \"pc\",\n \"ch\",\n \"rem\",\n \"vh\",\n \"vw\",\n \"vmin\",\n \"vmax\",\n];\n\ntype Directions = \"width\" | \"height\";\n\nconst listOfSupportedDirections: Directions[] = [\"width\", \"height\"];\n\nexport type ExposedBreakpoint =\n | [number, number]\n | [number, number, Units]\n | [number, number, { unit?: Units; direction?: Directions }];\n\nexport interface ExposedBreakpoints {\n [key: string]: ExposedBreakpoint;\n}\n\nexport type Breakpoint = [number, number, Units, Directions];\n\nexport interface Breakpoints {\n [breakpoint: string]: Breakpoint;\n}\n\nexport const sanitize = (inBreakpoints: ExposedBreakpoints): Breakpoints => {\n return Object.keys(inBreakpoints).reduce<Breakpoints>((breakpoints, breakpointName) => {\n const breakpoint = inBreakpoints[breakpointName];\n\n if (!Array.isArray(breakpoint) || breakpoint.length <= 1) {\n return breakpoints;\n }\n\n const [supposedMin, supposedMax, options, ...rest] = breakpoint;\n if (rest.length > 0) {\n const error = new Error(`The following fields \"${rest}\" have been ignored`);\n console.error(error);\n }\n\n if (typeof supposedMin !== \"number\" || typeof supposedMax !== \"number\") {\n return breakpoints;\n }\n\n let supposedUnit: Units | undefined;\n let supposedDirection: Directions | undefined;\n if (typeof options === \"string\") {\n supposedUnit = options;\n } else if (typeof options === \"object\") {\n supposedDirection = options.direction;\n supposedUnit = options.unit;\n }\n\n const min = Math.min(supposedMin, supposedMax);\n const max = Math.max(supposedMin, supposedMax);\n const unit = supposedUnit && listOfSupportedUnits.includes(supposedUnit) ? supposedUnit : \"px\";\n const direction =\n supposedDirection && listOfSupportedDirections.includes(supposedDirection) ? supposedDirection : \"width\";\n\n breakpoints[breakpointName] = [min, max, unit, direction];\n breakpoints[`${breakpointName}Up`] = [min, Infinity, unit, direction];\n breakpoints[`${breakpointName}Down`] = [0, max, unit, direction];\n\n return breakpoints;\n }, {});\n};\n","import * as React from \"react\";\n\nimport { sanitize, ExposedBreakpoints, Breakpoints } from \"./sanitize\";\n\nconst defaultBreakpoints: ExposedBreakpoints = {\n xs: [0, 575, \"px\"], // Extra small devices (portrait phones)\n sm: [576, 767, \"px\"], // Small devices (landscape phones)\n md: [768, 991, \"px\"], // Medium devices (tablets)\n lg: [992, 1199, \"px\"], // Large devices (desktops)\n xl: [1200, Infinity, \"px\"], // Extra large devices (large desktops)\n};\n\nexport const BreakpointsContext = React.createContext<Breakpoints>(sanitize(defaultBreakpoints));\n\ninterface BreakpointsProviderProps {\n breakpoints?: ExposedBreakpoints;\n additionalBreakpoints?: ExposedBreakpoints;\n}\n\nexport const BreakpointsProvider: React.FunctionComponent<React.PropsWithChildren<BreakpointsProviderProps>> = ({\n breakpoints = defaultBreakpoints,\n additionalBreakpoints = {},\n children,\n}) => {\n return (\n <BreakpointsContext.Provider\n value={sanitize({\n ...breakpoints,\n ...additionalBreakpoints,\n })}\n >\n {children}\n </BreakpointsContext.Provider>\n );\n};\n\nBreakpointsProvider.displayName = \"BreakpointsProvider\";\n","import { Breakpoint } from \"./sanitize\";\n\nexport const fromBreakpointToMedia = (breakpoint: Breakpoint): string => {\n const mediaList: string[] = [];\n const [minValue, maxValue, unit, direction] = breakpoint;\n let str;\n\n // Min value\n if (minValue !== 0) {\n str = `${minValue}${unit}`;\n mediaList.push(`(min-${direction}:${str})`);\n }\n\n // Max value\n if (maxValue !== Infinity) {\n str = `${maxValue}${unit}`;\n mediaList.push(`(max-${direction}:${str})`);\n }\n\n return \" \" + mediaList.join(\" and \");\n};\n","import * as React from \"react\";\n\n// const startTransitionFallbackForReact17AndBellow = (cb: () => void) => cb();\n// // @ts-expect-error not supported yet\n// const startTransition = React.startTransition || startTransitionFallbackForReact17AndBellow;\n\nexport const useMediaQuery = (mediaQuery: string): boolean => {\n const mediaQueryList = React.useMemo(() => matchMedia(mediaQuery), [mediaQuery]);\n const [isShown, setIsShown] = React.useState<boolean>(mediaQueryList.matches);\n\n React.useLayoutEffect(() => {\n setIsShown(mediaQueryList.matches);\n const listener = (event: MediaQueryListEvent) => {\n // We use startTransition as those update aren't urgent\n // startTransition(() => {\n setIsShown(event.matches);\n // });\n };\n\n // cannot use addEventListener for IE 11 and safari 13-\n mediaQueryList.addListener(listener);\n return () => {\n mediaQueryList.removeListener(listener);\n };\n }, [mediaQueryList]);\n\n return isShown;\n};\n","import * as React from \"react\";\n\nimport { BreakpointsContext } from \"./BreakpointsContext\";\n\nimport { mediaQueryBuilder } from \"./mediaQueryBuilder\";\n\nimport { useMediaQuery } from \"./useMediaQuery\";\n\nexport const useBreakpoint = (on?: string): boolean => {\n const breakpoints = React.useContext(BreakpointsContext);\n const toMediaQuery = React.useMemo(() => mediaQueryBuilder(breakpoints), [breakpoints]);\n\n const mediaQuery = React.useMemo(() => toMediaQuery(on), [toMediaQuery, on]);\n\n return useMediaQuery(mediaQuery || \"-\");\n};\n","import { Breakpoints } from \"./sanitize\";\nimport { fromBreakpointToMedia } from \"./fromBreakpointToMedia\";\n\nexport const mediaQueryBuilder =\n (breakpoints: Breakpoints) =>\n (on = \"\"): string => {\n if (!on) {\n return \"\";\n }\n const rawBreakpointNames = on.split(\" \");\n const filteredBreakpoints = rawBreakpointNames.map((breakpointName) => breakpoints[breakpointName]).filter(Boolean);\n const mediaQuery = filteredBreakpoints\n .map((breakpoint) => fromBreakpointToMedia(breakpoint))\n .filter(Boolean)\n .join(\",\");\n if (!mediaQuery) {\n const isUniqBreakpoint = rawBreakpointNames.length === 1;\n console.error(\n `\"${rawBreakpointNames.join('\", \"')}\" ${isUniqBreakpoint ? \"is\" : \"are\"}n't ${\n isUniqBreakpoint ? \"a \" : \"\"\n }valid breakpoint${isUniqBreakpoint ? \"\" : \"s\"}`,\n );\n }\n return mediaQuery;\n };\n","import * as React from \"react\";\n\nimport { useBreakpoint } from \"./useBreakpoint\";\nimport { useMediaQuery } from \"./useMediaQuery\";\n\nexport type OnlyProps<OtherProps = Record<string, never>> = OtherProps & {\n matchMedia?: string;\n on?: string;\n as?: string | React.ComponentType<OtherProps>;\n};\n\nexport function Only<OtherProps = Record<string, never>>({\n matchMedia,\n on,\n as,\n children,\n ...props\n}: React.PropsWithChildren<OnlyProps<OtherProps>>): React.ReactElement | null {\n const matchOn = useBreakpoint(on);\n const matchQuery = useMediaQuery(matchMedia || \"-\");\n const isShown = matchOn || matchQuery;\n\n if (!isShown) {\n return null;\n }\n\n return React.createElement(as || React.Fragment, as ? (props as OtherProps) : undefined, children);\n}\n\nOnly.displayName = \"Only\";\n","import * as React from \"react\";\n\nimport { Only } from \"./Only\";\n\nexport interface MatchChildProps {\n matchMedia?: string;\n only?: string;\n}\n\ndeclare module \"react\" {\n interface HTMLAttributes<T> extends React.AriaAttributes, React.DOMAttributes<T>, MatchChildProps {}\n}\n\ntype Element = React.ReactElement<MatchChildProps & any, string | React.ComponentType<MatchChildProps & any>> | null;\n\nconst parseChildren = (element: Element): Element => {\n if (!element || !element.props) {\n return element;\n }\n\n const _children: Element | Element[] | null = element.props.children;\n if (!_children) {\n return null;\n }\n const children = React.Children.map(_children, parseChildren);\n const { only, matchMedia, ...props } = element.props;\n const clone = React.createElement(element.type, props, children);\n if (!only && !matchMedia) {\n return clone;\n }\n return (\n <Only on={only || \"\"} matchMedia={matchMedia || \"\"}>\n {clone}\n </Only>\n );\n};\n\ninterface MatchProps {\n [key: string]: any;\n children: Element | Element[] | null;\n as?: string;\n}\n\nexport const Match: React.FunctionComponent<MatchProps> = ({ children, as, ...props }) => {\n const computedChildren = React.Children.map(children, parseChildren);\n if (as) {\n return React.createElement(as, props, computedChildren);\n }\n return React.createElement(React.Fragment, null, computedChildren);\n};\n\nMatch.displayName = \"Match\";\n","import { CSSProperties } from \"react\";\nimport { Breakpoints } from \"./sanitize\";\nimport { fromBreakpointToMedia } from \"./fromBreakpointToMedia\";\n\ntype CSSinJSProperties =\n | CSSProperties\n | {\n [key: string]: CSSProperties;\n };\n\ninterface Points {\n [breakpoint: string]: CSSinJSProperties;\n}\n\ntype CSSinJS = Record<string, CSSinJSProperties>;\nexport const toJSON =\n (breakpoints: Breakpoints) =>\n (points: Points): CSSinJS => {\n const css: CSSinJS = {};\n Object.keys(points).forEach((point) => {\n const breakpoint = breakpoints[point];\n if (!breakpoint) {\n throw new Error(`${point} is not a valid breakpoint\\nValid breakpoints are: ${Object.keys(breakpoints)}`);\n }\n css[`@media ${fromBreakpointToMedia(breakpoint)}`] = points[point];\n });\n return css;\n };\n\nconst stringify = (object: CSSinJSProperties) => {\n let string = \"\";\n Object.entries(object).forEach(([key, value]) => {\n if (typeof value !== \"object\") {\n string += `${key}: ${value};\\n`;\n return;\n }\n string += `${key} {\\n${stringify(value)}}\\n`;\n });\n return string;\n};\n\nexport const toCSS =\n (breakpoints: Breakpoints) =>\n (points: Points): string =>\n stringify(toJSON(breakpoints)(points));\n"],"names":["listOfSupportedUnits","listOfSupportedDirections","sanitize","inBreakpoints","Object","keys","reduce","breakpoints","breakpointName","Array","isArray","breakpoint","length","supposedUnit","supposedDirection","supposedMax","options","rest","slice","error","Error","console","supposedMin","direction","unit","min","Math","max","includes","Infinity","defaultBreakpoints","xs","sm","md","lg","xl","BreakpointsContext","React","createContext","BreakpointsProvider","_ref","additionalBreakpoints","children","Provider","value","_ref$additionalBreakp","displayName","fromBreakpointToMedia","mediaList","minValue","maxValue","push","str","join","useMediaQuery","mediaQuery","mediaQueryList","useMemo","matchMedia","_React$useState","useState","matches","isShown","setIsShown","useLayoutEffect","listener","event","addListener","removeListener","on","useContext","toMediaQuery","rawBreakpointNames","split","map","filter","Boolean","isUniqBreakpoint","Only","as","props","matchOn","useBreakpoint","matchQuery","createElement","Fragment","undefined","parseChildren","element","_children","Children","only","_objectWithoutPropertiesLoose","_element$props","_excluded","type","clone","_excluded2","computedChildren","Match","toJSON","points","css","forEach","point","stringify","object","string","entries","key"],"mappings":"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"}
@@ -1 +1 @@
1
- export declare const useBreakpoint: (on?: string | undefined) => boolean;
1
+ export declare const useBreakpoint: (on?: string) => boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blocz/react-responsive",
3
- "version": "3.0.1",
3
+ "version": "3.0.3",
4
4
  "description": "🔍 <Only /> displays some contents for a specific screen size",
5
5
  "source": "src/index.ts",
6
6
  "sideEffects": false,
@@ -10,6 +10,7 @@
10
10
  "types": "lib/index.d.ts",
11
11
  "exports": {
12
12
  ".": {
13
+ "types": "./lib/index.d.ts",
13
14
  "require": "./lib/react-responsive.js",
14
15
  "import": "./lib/react-responsive.modern.mjs",
15
16
  "browser": "./lib/react-responsive.modern.js",
@@ -31,18 +32,18 @@
31
32
  "license": "MIT",
32
33
  "bugs": "https://github.com/bloczjs/react-responsive/issues",
33
34
  "scripts": {
34
- "build": "yarn -s build:microbundle && cp lib/react-responsive.modern.js lib/react-responsive.modern.mjs",
35
- "build:dev": "yarn -s build:microbundle --compress false",
35
+ "build": "yarn build:microbundle && cp lib/react-responsive.modern.js lib/react-responsive.modern.mjs",
36
+ "build:dev": "yarn build:microbundle --compress false",
36
37
  "build:microbundle": "microbundle --name $npm_package_name --globals react=React",
37
38
  "link:readme": "rm ../../README.md && ln -s packages/react-responsive/README.md ../..",
38
- "prepublishOnly": "rm -rf lib && yarn -s build"
39
+ "prepublishOnly": "rm -rf lib && yarn build"
39
40
  },
40
41
  "homepage": "https://github.com/bloczjs/react-responsive#readme",
41
42
  "devDependencies": {
42
- "@types/react": "^17.0.0",
43
- "microbundle": "0.13.0"
43
+ "@types/react": "^18.0.12",
44
+ "microbundle": "^0.15.0"
44
45
  },
45
46
  "peerDependencies": {
46
- "react": "16.8.0 - 17.x.x"
47
+ "react": "16.8.0 - 18.x.x"
47
48
  }
48
- }
49
+ }