UNPKG

4.05 kBSource Map (JSON)View Raw
1{"version":3,"file":"index.es.js","sources":["../src/Device/SizeListener.js","../src/Device/Switch.js","../src/Device/Mobile.js","../src/Device/Desktop.js"],"sourcesContent":["import React, { createContext, Component } from \"react\";\nimport PropTypes from \"prop-types\";\n\nexport const MOBILE = \"MOBILE\";\nexport const DESKTOP = \"DESKTOP\";\n\nexport const DeviceTypeContext = createContext(MOBILE);\n\nclass DeviceSizeListener extends Component {\n constructor(props) {\n super(props);\n this.state = { deviceType: MOBILE };\n this.resize = this.resize.bind(this);\n }\n\n componentDidMount() {\n const { breakpoint } = this.props;\n if (typeof window !== \"undefined\" && window.matchMedia) {\n this.media = window.matchMedia(`(${breakpoint})`);\n this.media.addListener(this.resize);\n this.resize();\n }\n }\n\n componentWillUnmount() {\n if (this.media) {\n this.media.removeListener(this.resize);\n }\n }\n\n resize() {\n const { deviceType } = this.state;\n\n const realDeviceType = this.media.matches ? DESKTOP : MOBILE;\n\n if (deviceType !== realDeviceType) {\n this.setState({ deviceType: realDeviceType });\n }\n }\n\n render() {\n const { children } = this.props;\n const { deviceType } = this.state;\n return (\n <DeviceTypeContext.Provider value={deviceType}>\n {children}\n </DeviceTypeContext.Provider>\n );\n }\n}\n\nDeviceSizeListener.propTypes = {\n breakpoint: PropTypes.string.isRequired,\n children: PropTypes.node.isRequired\n};\n\nexport default DeviceSizeListener;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { DeviceTypeContext, MOBILE, DESKTOP } from \"./SizeListener\";\n\nconst DeviceSwitch = ({ desktopRender, mobileRender }) => (\n <DeviceTypeContext.Consumer>\n {deviceType => {\n if (deviceType === DESKTOP && desktopRender) {\n return desktopRender;\n }\n\n if (deviceType === MOBILE && mobileRender) {\n return mobileRender;\n }\n\n return null;\n }}\n </DeviceTypeContext.Consumer>\n);\n\nDeviceSwitch.propTypes = {\n mobileRender: PropTypes.oneOfType([PropTypes.bool, PropTypes.node]),\n desktopRender: PropTypes.oneOfType([PropTypes.bool, PropTypes.node])\n};\n\nDeviceSwitch.defaultProps = {\n mobileRender: false,\n desktopRender: false\n};\n\nexport default DeviceSwitch;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport DeviceSwitch from \"./Switch\";\n\nconst DeviceMobile = ({ children }) => <DeviceSwitch mobileRender={children} />;\n\nDeviceMobile.propTypes = { children: PropTypes.node.isRequired };\n\nexport default DeviceMobile;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport DeviceSwitch from \"./Switch\";\n\nconst DeviceDesktop = ({ children }) => (\n <DeviceSwitch desktopRender={children} />\n);\n\nDeviceDesktop.propTypes = { children: PropTypes.node.isRequired };\n\nexport default DeviceDesktop;\n"],"names":["const","MOBILE","DeviceTypeContext","createContext","DeviceSizeListener","props","super","this","state","deviceType","resize","bind","componentDidMount","window","matchMedia","media","addListener","componentWillUnmount","removeListener","realDeviceType","matches","setState","render","Component","DeviceSwitch","ref","DeviceMobile","propTypes","children","PropTypes","node","isRequired","DeviceDesktop"],"mappings":"+EAGOA,IAAMC,EAAS,SAGTC,EAAoBC,EAAcF,GAEzCG,cACJ,WAAYC,GACVC,YAAMD,GACNE,KAAKC,OAAUC,WAAYR,GAC3BM,KAAKG,OAASH,KAAKG,OAAOC,KAAKJ,sGAGjCK,6BAEwB,oBAAXC,QAA0BA,OAAOC,aAC1CP,KAAKQ,MAAQF,OAAOC,eAFCP,KAAKF,sBAG1BE,KAAKQ,MAAMC,YAAYT,KAAKG,QAC5BH,KAAKG,uBAITO,gCACMV,KAAKQ,OACPR,KAAKQ,MAAMG,eAAeX,KAAKG,qBAInCA,kBACE,IAEMS,EAAiBZ,KAAKQ,MAAMK,QA7Bf,UA6BmCnB,EAF/BM,KAAKC,mBAITW,GACjBZ,KAAKc,UAAWZ,WAAYU,iBAIhCG,kBAGE,2BADuBf,KAAKC,kBADPD,KAAKF,oBAjCGkB,2ECHjCvB,IAAMwB,WAAgBC,qFDDC,2LECvBzB,IAAM0B,WAAgBD,0CAEtBC,EAAaC,WAAcC,SAAUC,EAAUC,KAAKC,YCFpD/B,IAAMgC,WAAiBP,2CAIvBO,EAAcL,WAAcC,SAAUC,EAAUC,KAAKC"}
\No newline at end of file