Urara-Blog/node_modules/.pnpm-store/v3/files/8f/f1edbdbca60855953f5463496f28e299d34d542af677d8d310022434d5661c7dd8ea77d12025a50922136ad2c0d06a3eb61fbcfc66811a0baddf942fb317c2
2022-08-14 01:14:53 +08:00

83 lines
1.9 KiB
Text

let camelcase = require('camelcase-css')
let UNITLESS = {
boxFlex: true,
boxFlexGroup: true,
columnCount: true,
flex: true,
flexGrow: true,
flexPositive: true,
flexShrink: true,
flexNegative: true,
fontWeight: true,
lineClamp: true,
lineHeight: true,
opacity: true,
order: true,
orphans: true,
tabSize: true,
widows: true,
zIndex: true,
zoom: true,
fillOpacity: true,
strokeDashoffset: true,
strokeOpacity: true,
strokeWidth: true
}
function atRule(node) {
if (typeof node.nodes === 'undefined') {
return true
} else {
return process(node)
}
}
function process(node) {
let name
let result = {}
node.each(child => {
if (child.type === 'atrule') {
name = '@' + child.name
if (child.params) name += ' ' + child.params
if (typeof result[name] === 'undefined') {
result[name] = atRule(child)
} else if (Array.isArray(result[name])) {
result[name].push(atRule(child))
} else {
result[name] = [result[name], atRule(child)]
}
} else if (child.type === 'rule') {
let body = process(child)
if (result[child.selector]) {
for (let i in body) {
result[child.selector][i] = body[i]
}
} else {
result[child.selector] = body
}
} else if (child.type === 'decl') {
if (child.prop[0] === '-' && child.prop[1] === '-') {
name = child.prop
} else {
name = camelcase(child.prop)
}
let value = child.value
if (!isNaN(child.value) && UNITLESS[name]) {
value = parseFloat(child.value)
}
if (child.important) value += ' !important'
if (typeof result[name] === 'undefined') {
result[name] = value
} else if (Array.isArray(result[name])) {
result[name].push(value)
} else {
result[name] = [result[name], value]
}
}
})
return result
}
module.exports = process