Packages
moon
2.90.3
2.90.5
retired
2.90.4
2.90.3
2.90.2
2.90.1
2.90.0
2.89.4
2.89.1
2.89.0
2.88.0
2.87.11
2.87.10
2.87.9
2.87.8
2.87.7
2.87.6
2.87.5
2.87.4
2.87.3
2.87.2
2.87.1
2.87.0
2.86.1
2.86.0
2.85.1
2.85.0
2.84.0
2.83.0
2.82.0
2.81.4
2.81.3
2.81.2
2.81.1
2.81.0
2.80.2
2.80.1
2.80.0
2.79.13
2.79.12
2.79.11
2.79.10
2.79.9
2.79.8
2.79.7
2.79.6
2.79.5
2.79.4
2.79.3
2.79.2
2.79.1
2.79.0
2.78.4
2.78.3
2.78.2
2.78.1
2.78.0
2.77.0
2.76.5
2.76.4
2.76.3
2.76.2
2.76.1
2.76.0
2.75.0
2.74.1
2.74.0
2.73.8
2.73.7
2.73.6
2.73.5
2.73.4
2.73.3
2.73.2
2.73.1
2.73.0
2.72.5
2.72.4
2.72.3
2.72.2
2.72.1
2.72.0
2.71.1
2.71.0
2.70.0
2.69.2
2.69.1
2.69.0
2.68.11
2.68.10
Components-based design system written in elixir
Current section
Files
Jump to
Current section
Files
assets/node_modules/autoprefixer/lib/info.js
let browserslist = require('browserslist')
function capitalize(str) {
return str.slice(0, 1).toUpperCase() + str.slice(1)
}
const NAMES = {
ie: 'IE',
ie_mob: 'IE Mobile',
ios_saf: 'iOS Safari',
op_mini: 'Opera Mini',
op_mob: 'Opera Mobile',
and_chr: 'Chrome for Android',
and_ff: 'Firefox for Android',
and_uc: 'UC for Android',
and_qq: 'QQ Browser',
kaios: 'KaiOS Browser',
baidu: 'Baidu Browser',
samsung: 'Samsung Internet'
}
function prefix(name, prefixes, note) {
let out = ` ${name}`
if (note) out += ' *'
out += ': '
out += prefixes.map(i => i.replace(/^-(.*)-$/g, '$1')).join(', ')
out += '\n'
return out
}
module.exports = function (prefixes) {
if (prefixes.browsers.selected.length === 0) {
return 'No browsers selected'
}
let versions = {}
for (let browser of prefixes.browsers.selected) {
let parts = browser.split(' ')
let name = parts[0]
let version = parts[1]
name = NAMES[name] || capitalize(name)
if (versions[name]) {
versions[name].push(version)
} else {
versions[name] = [version]
}
}
let out = 'Browsers:\n'
for (let browser in versions) {
let list = versions[browser]
list = list.sort((a, b) => parseFloat(b) - parseFloat(a))
out += ` ${browser}: ${list.join(', ')}\n`
}
let coverage = browserslist.coverage(prefixes.browsers.selected)
let round = Math.round(coverage * 100) / 100.0
out += `\nThese browsers account for ${round}% of all users globally\n`
let atrules = []
for (let name in prefixes.add) {
let data = prefixes.add[name]
if (name[0] === '@' && data.prefixes) {
atrules.push(prefix(name, data.prefixes))
}
}
if (atrules.length > 0) {
out += `\nAt-Rules:\n${atrules.sort().join('')}`
}
let selectors = []
for (let selector of prefixes.add.selectors) {
if (selector.prefixes) {
selectors.push(prefix(selector.name, selector.prefixes))
}
}
if (selectors.length > 0) {
out += `\nSelectors:\n${selectors.sort().join('')}`
}
let values = []
let props = []
let hadGrid = false
for (let name in prefixes.add) {
let data = prefixes.add[name]
if (name[0] !== '@' && data.prefixes) {
let grid = name.indexOf('grid-') === 0
if (grid) hadGrid = true
props.push(prefix(name, data.prefixes, grid))
}
if (!Array.isArray(data.values)) {
continue
}
for (let value of data.values) {
let grid = value.name.includes('grid')
if (grid) hadGrid = true
let string = prefix(value.name, value.prefixes, grid)
if (!values.includes(string)) {
values.push(string)
}
}
}
if (props.length > 0) {
out += `\nProperties:\n${props.sort().join('')}`
}
if (values.length > 0) {
out += `\nValues:\n${values.sort().join('')}`
}
if (hadGrid) {
out += '\n* - Prefixes will be added only on grid: true option.\n'
}
if (!atrules.length && !selectors.length && !props.length && !values.length) {
out +=
"\nAwesome! Your browsers don't require any vendor prefixes." +
'\nNow you can remove Autoprefixer from build steps.'
}
return out
}