# All files / mixins hiDPI.js

100% Statements 1/1
100% Branches 1/1
100% Functions 1/1
100% Lines 1/1

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43

    8x

     // @flow

    /**
     * Generates a media query to target HiDPI devices.
     *
     * @example
     * // Styles as object usage
     * const styles = {
     *  [hiDPI(1.5)]: {
     *    width: 200px;
     *  }
     * }
     *
     * // styled-components usage
     * const div = styled.div`
     *   ${hiDPI(1.5)} {
     *     width: 200px;
     *   }
     * `
     *
     * // CSS as JS Output
     *
     * '@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
     *  only screen and (min--moz-device-pixel-ratio: 1.5),
     *  only screen and (-o-min-device-pixel-ratio: 1.5/1),
     *  only screen and (min-resolution: 144dpi),
     *  only screen and (min-resolution: 1.5dppx)': {
     *   'width': '200px',
     * }
     */

    function hiDPI(ratio: number = 1.3) {
      return `
        @media only screen and (-webkit-min-device-pixel-ratio: ${ratio}),
        only screen and (min--moz-device-pixel-ratio: ${ratio}),
        only screen and (-o-min-device-pixel-ratio: ${ratio}/1),
        only screen and (min-resolution: ${Math.round((ratio * 96))}dpi),
        only screen and (min-resolution: ${ratio}dppx)
      `
    }

    export default hiDPI