/// import React from 'react'; import PropTypes from 'prop-types'; const stringOrNumber = PropTypes.oneOfType([ PropTypes.string, PropTypes.number ]) const matchers = { orientation: PropTypes.oneOf([ 'portrait', 'landscape' ]), scan: PropTypes.oneOf([ 'progressive', 'interlace' ]), aspectRatio: PropTypes.string, deviceAspectRatio: PropTypes.string, height: stringOrNumber, deviceHeight: stringOrNumber, width: stringOrNumber, deviceWidth: stringOrNumber, color: PropTypes.bool, colorIndex: PropTypes.bool, monochrome: PropTypes.bool, resolution: stringOrNumber } // media types const types = { all: PropTypes.bool, grid: PropTypes.bool, aural: PropTypes.bool, braille: PropTypes.bool, handheld: PropTypes.bool, print: PropTypes.bool, projection: PropTypes.bool, screen: PropTypes.bool, tty: PropTypes.bool, tv: PropTypes.bool, embossed: PropTypes.bool } export interface MediaQueryProps extends matchers { minAspectRatio: PropTypes.string, maxAspectRatio: PropTypes.string, minDeviceAspectRatio: PropTypes.string, maxDeviceAspectRatio: PropTypes.string, minHeight: stringOrNumber, maxHeight: stringOrNumber, minDeviceHeight: stringOrNumber, maxDeviceHeight: stringOrNumber, minWidth: stringOrNumber, maxWidth: stringOrNumber, minDeviceWidth: stringOrNumber, maxDeviceWidth: stringOrNumber, minColor: PropTypes.number, maxColor: PropTypes.number, minColorIndex: PropTypes.number, maxColorIndex: PropTypes.number, minMonochrome: PropTypes.number, maxMonochrome: PropTypes.number, minResolution: stringOrNumber, maxResolution: stringOrNumber, type: types, queries: { [id: string]: MediaQueryProps }, children: React.ReactNode | ((matches: boolean | { [id: string] }) => React.ReactNode) } export default class MediaQuery extends React.Component { }