function getOrderMap(bps) {
    // grab the keys in the appropriate order
    const keys = Object.keys(bps).sort((a, b) => {
        // get the associated values
        const valueA = bps[a]
        const valueB = bps[b]

        // if a is a number and b is a string
        if (typeof valueA === 'number' && typeof valueB === 'string') {
            // put the number first
            return -1
        } else if (typeof valueB === 'number' && typeof valueA === 'string') {
            // return the number first
            return 1
        }

        // otherwise treat it like normal
        return valueA >= valueB ? 1 : -1
    })

    // map the original breakpoint object
    return transform(bps, (result, breakpoint, mediaType) => {
        // figure out the index of the mediatype
        const index = keys.indexOf(mediaType)

        // if there is an entry in the sort for this
        if (index !== -1) {
            // to its index in the sorted list
            result[mediaType] = index
        }
    })
}
Compute a mapping of media type to its ordering where ordering is defined
such that large > medium > small.
@args (object) breakpoints - the breakpoint object