Repository URL to install this package:
|
Version:
1.2.12 ▾
|
"use strict";
let postcss = require('postcss');
let set = require('lodash/set');
const _require = require('client/styles/theme'),
desktopOrLarger = _require.desktopOrLarger,
tabletOrLarger = _require.tabletOrLarger,
desktopOrSmaller = _require.desktopOrSmaller,
tabletOrSmaller = _require.tabletOrSmaller,
phoneOrSmaller = _require.phoneOrSmaller,
phoneOrLarger = _require.phoneOrLarger;
let obj = {}; // function phoneOrSmaller1(css) {
// return `@media (max-width: 360px) {
// ${css}
// }`
// }
// function phoneOrSmaller(css) {
// return `@media (max-width: 360px)`
// }
// function phoneOrLarger(css) {
// return `@media (min-width: 360px)`
// }
module.exports = postcss.plugin('myplugin', function (options) {
return function (css, result) {
options = options || {};
css.walkRules(function (rule, ruleIndex) {
let selector = rule.selector; // '?'
let dot = ''; // let dotSelector = selector.replace(/&/gim, '-and-')
let dotSelector = selector // .split('.')
// .map((line, index) => {
// })
// .replace(/(\.)(?:\S)/g, function(substring, ...args) {
// console.log({ args, substring })
// })
// .replace(/[a-bA-B0-9]\.[a-bA-B0-9]/, function(substring, ...args) {
// console.log({ args, substring })
// })
.replace(/\.\s/gim, dot).replace(/\./gim, ' ').replace(/\s+/gim, '.'); // .replace(/\.\./gim, '')
// replace first dot if it exists
dotSelector = dotSelector.charAt(0) === '.' ? dotSelector.replace('.', '') : dotSelector; // log.bold(dotSelector).echo()
let ruleObj = {
selector,
rules: {} // rules: [],
};
rule.walkDecls(function (decl, declarationIndex) {
decl.value = decl.value.replace('@phone-or-smaller()', phoneOrSmaller());
decl.value = decl.value.replace('@phone-or-larger()', phoneOrLarger());
decl.value = decl.value.replace('@tablet-or-smaller()', tabletOrSmaller());
decl.value = decl.value.replace('@tablet-or-larger()', tabletOrLarger());
decl.value = decl.value.replace('@desktop-or-smaller()', desktopOrSmaller());
decl.value = decl.value.replace('@desktop-or-larger()', desktopOrLarger());
decl.value = decl.value.replace('@supersize-or-larger()', desktopOrLarger());
let value = decl.value,
prop = decl.prop; // log.quick(decl)
// ruleObj.rules.push({
// [prop]: value,
// })
ruleObj.rules[prop] = value;
});
set(obj, dotSelector, ruleObj.rules);
}); // console.log(JSON.stringify(obj, null, 2))
// log.quick(obj)
// log.prettyobj(obj).echo()
// log.json(obj).echo()
// log.fmtobj(obj).echo()
};
});