31 lines
746 B
JavaScript
31 lines
746 B
JavaScript
|
'use strict';
|
||
|
|
||
|
const styleSearch = require('style-search');
|
||
|
|
||
|
const rangeOperators = ['>=', '<=', '>', '<', '='];
|
||
|
|
||
|
/** @typedef {import('style-search').StyleSearchMatch} StyleSearchMatch */
|
||
|
|
||
|
/**
|
||
|
* @template {import('postcss').AtRule} T
|
||
|
* @param {T} atRule
|
||
|
* @param {(match: StyleSearchMatch, params: string, atRule: T) => void} cb
|
||
|
*/
|
||
|
module.exports = function findMediaOperator(atRule, cb) {
|
||
|
if (atRule.name.toLowerCase() !== 'media') {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
const params = atRule.raws.params ? atRule.raws.params.raw : atRule.params;
|
||
|
|
||
|
styleSearch({ source: params, target: rangeOperators }, (match) => {
|
||
|
const before = params[match.startIndex - 1];
|
||
|
|
||
|
if (before === '>' || before === '<') {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
cb(match, params, atRule);
|
||
|
});
|
||
|
};
|