first commit
This commit is contained in:
62
build/node_modules/postcss-calc/index.js
generated
vendored
Executable file
62
build/node_modules/postcss-calc/index.js
generated
vendored
Executable file
@@ -0,0 +1,62 @@
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
var reduceCSSCalc = require("reduce-css-calc")
|
||||
var helpers = require("postcss-message-helpers")
|
||||
var postcss = require("postcss")
|
||||
|
||||
var CONTAINS_CALC = /\bcalc\([\s\S]*?\)/
|
||||
|
||||
/**
|
||||
* PostCSS plugin to reduce calc() function calls.
|
||||
*/
|
||||
module.exports = postcss.plugin("postcss-calc", function(options) {
|
||||
options = options || {}
|
||||
var precision = options.precision
|
||||
var preserve = options.preserve
|
||||
var warnWhenCannotResolve = options.warnWhenCannotResolve
|
||||
var mediaQueries = options.mediaQueries
|
||||
var selectors = options.selectors
|
||||
|
||||
return function(style, result) {
|
||||
function transformValue(node, property) {
|
||||
var value = node[property]
|
||||
|
||||
if (!value || !CONTAINS_CALC.test(value)) {
|
||||
return
|
||||
}
|
||||
|
||||
helpers.try(function transformCSSCalc() {
|
||||
var reducedValue = reduceCSSCalc(value, precision)
|
||||
|
||||
if (warnWhenCannotResolve && CONTAINS_CALC.test(reducedValue)) {
|
||||
result.warn("Could not reduce expression: " + value,
|
||||
{plugin: "postcss-calc", node: node})
|
||||
}
|
||||
|
||||
if (!preserve) {
|
||||
node[property] = reducedValue
|
||||
return
|
||||
}
|
||||
|
||||
if (reducedValue != value) {
|
||||
var clone = node.clone()
|
||||
clone[property] = reducedValue
|
||||
node.parent.insertBefore(node, clone)
|
||||
}
|
||||
}, node.source)
|
||||
}
|
||||
|
||||
style.walk(function(rule) {
|
||||
if (mediaQueries && rule.type === "atrule") {
|
||||
return transformValue(rule, "params")
|
||||
}
|
||||
else if (rule.type === "decl") {
|
||||
return transformValue(rule, "value")
|
||||
}
|
||||
else if (selectors && rule.type === "rule") {
|
||||
return transformValue(rule, "selector")
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user