UNPKG

@uifabric/merge-styles

Version:
80 lines 2.56 kB
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 parts[0] + " " + parts[3] + " " + parts[2] + " " + parts[1]; } } return value; } //# sourceMappingURL=rtlifyRules.js.map