aboutsummaryrefslogtreecommitdiff
path: root/node_modules/postcss-reduce-idents/dist/lib/grid-template.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/postcss-reduce-idents/dist/lib/grid-template.js')
-rw-r--r--node_modules/postcss-reduce-idents/dist/lib/grid-template.js78
1 files changed, 78 insertions, 0 deletions
diff --git a/node_modules/postcss-reduce-idents/dist/lib/grid-template.js b/node_modules/postcss-reduce-idents/dist/lib/grid-template.js
new file mode 100644
index 00000000..49accbff
--- /dev/null
+++ b/node_modules/postcss-reduce-idents/dist/lib/grid-template.js
@@ -0,0 +1,78 @@
+"use strict";
+
+exports.__esModule = true;
+
+var _postcssValueParser = require("postcss-value-parser");
+
+var _postcssValueParser2 = _interopRequireDefault(_postcssValueParser);
+
+var _cache = require("./cache");
+
+var _cache2 = _interopRequireDefault(_cache);
+
+var _isNum = require("./isNum");
+
+var _isNum2 = _interopRequireDefault(_isNum);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var RESERVED_KEYWORDS = ["auto", "span", "inherit", "initial", "unset"];
+
+var cache = {};
+var declCache = [];
+
+exports.default = {
+ collect: function collect(node, encoder) {
+ if (node.type !== 'decl') {
+ return;
+ }
+
+ if (/(grid-template|grid-template-areas)/.test(node.prop)) {
+ (0, _postcssValueParser2.default)(node.value).walk(function (child) {
+ if (child.type === 'string') {
+ child.value.split(/\s+/).forEach(function (word) {
+ if (/\.+/.test(word)) {
+ // reduce empty zones to a single `.`
+ node.value = node.value.replace(word, ".");
+ } else if (word && RESERVED_KEYWORDS.indexOf(word) === -1) {
+ (0, _cache2.default)(word, encoder, cache);
+ }
+ });
+ }
+ });
+ declCache.push(node);
+ } else if (node.prop === 'grid-area') {
+ (0, _postcssValueParser2.default)(node.value).walk(function (child) {
+ if (child.type === 'word' && RESERVED_KEYWORDS.indexOf(child.value) === -1) {
+ (0, _cache2.default)(child.value, encoder, cache);
+ }
+ });
+ declCache.push(node);
+ }
+ },
+ transform: function transform() {
+ declCache.forEach(function (decl) {
+ decl.value = (0, _postcssValueParser2.default)(decl.value).walk(function (node) {
+ if (/(grid-template|grid-template-areas)/.test(decl.prop)) {
+ node.value.split(/\s+/).forEach(function (word) {
+ if (word in cache) {
+ node.value = node.value.replace(word, cache[word].ident);
+ }
+ });
+ node.value = node.value.replace(/\s+/g, " "); // merge white-spaces
+ }
+ if (decl.prop === 'grid-area' && !(0, _isNum2.default)(node)) {
+ if (node.value in cache) {
+ node.value = cache[node.value].ident;
+ }
+ }
+ return false;
+ }).toString();
+ });
+
+ // reset cache after transform
+ cache = {};
+ declCache = [];
+ }
+};
+module.exports = exports["default"]; \ No newline at end of file