80 lines
2.5 KiB
JavaScript
80 lines
2.5 KiB
JavaScript
var _a;
|
|
var LEFT = 'left';
|
|
var RIGHT = 'right';
|
|
var NO_FLIP = '@noflip';
|
|
var NAME_REPLACEMENTS = (_a = {},
|
|
_a[LEFT] = RIGHT,
|
|
_a[RIGHT] = LEFT,
|
|
_a);
|
|
var VALUE_REPLACEMENTS = {
|
|
'w-resize': 'e-resize',
|
|
'sw-resize': 'se-resize',
|
|
'nw-resize': 'ne-resize',
|
|
};
|
|
/**
|
|
* RTLifies the rulePair in the array at the current index. This mutates the array for performance
|
|
* reasons.
|
|
*/
|
|
export function rtlifyRules(options, rulePairs, index) {
|
|
if (options.rtl) {
|
|
var name_1 = rulePairs[index];
|
|
if (!name_1) {
|
|
return;
|
|
}
|
|
var value = rulePairs[index + 1];
|
|
if (typeof value === 'string' && value.indexOf(NO_FLIP) >= 0) {
|
|
rulePairs[index + 1] = value.replace(/\s*(?:\/\*\s*)?\@noflip\b(?:\s*\*\/)?\s*?/g, '');
|
|
}
|
|
else if (name_1.indexOf(LEFT) >= 0) {
|
|
rulePairs[index] = name_1.replace(LEFT, RIGHT);
|
|
}
|
|
else if (name_1.indexOf(RIGHT) >= 0) {
|
|
rulePairs[index] = name_1.replace(RIGHT, LEFT);
|
|
}
|
|
else if (String(value).indexOf(LEFT) >= 0) {
|
|
rulePairs[index + 1] = value.replace(LEFT, RIGHT);
|
|
}
|
|
else if (String(value).indexOf(RIGHT) >= 0) {
|
|
rulePairs[index + 1] = value.replace(RIGHT, LEFT);
|
|
}
|
|
else if (NAME_REPLACEMENTS[name_1]) {
|
|
rulePairs[index] = NAME_REPLACEMENTS[name_1];
|
|
}
|
|
else if (VALUE_REPLACEMENTS[value]) {
|
|
rulePairs[index + 1] = VALUE_REPLACEMENTS[value];
|
|
}
|
|
else {
|
|
switch (name_1) {
|
|
case 'margin':
|
|
case 'padding':
|
|
rulePairs[index + 1] = flipQuad(value);
|
|
break;
|
|
case 'box-shadow':
|
|
rulePairs[index + 1] = negateNum(value, 0);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
/**
|
|
* Given a string value in a space delimited format (e.g. "1 2 3 4"), negates a particular value.
|
|
*/
|
|
function negateNum(value, partIndex) {
|
|
var parts = value.split(' ');
|
|
var numberVal = parseInt(parts[partIndex], 10);
|
|
parts[0] = parts[0].replace(String(numberVal), String(numberVal * -1));
|
|
return parts.join(' ');
|
|
}
|
|
/**
|
|
* Given a string quad, flips the left and right values.
|
|
*/
|
|
function flipQuad(value) {
|
|
if (typeof value === 'string') {
|
|
var parts = value.split(' ');
|
|
if (parts.length === 4) {
|
|
return "".concat(parts[0], " ").concat(parts[3], " ").concat(parts[2], " ").concat(parts[1]);
|
|
}
|
|
}
|
|
return value;
|
|
}
|
|
//# sourceMappingURL=rtlifyRules.js.map
|