|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _keys = require('babel-runtime/core-js/object/keys');
-
- var _keys2 = _interopRequireDefault(_keys);
-
- exports.default = rtl;
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- var reTranslate = /((^|\s)translate(3d|X)?\()(\-?[\d]+)/;
- var reSkew = /((^|\s)skew(x|y)?\()\s*(\-?[\d]+)(deg|rad|grad)(,\s*(\-?[\d]+)(deg|rad|grad))?/;
-
- /**
- * This function ensures that `style` supports both ltr and rtl directions by
- * checking `styleConstants` in `muiTheme` and replacing attribute keys if
- * necessary.
- */
- function rtl(muiTheme) {
- if (muiTheme.isRtl) {
- return function (style) {
- if (style.directionInvariant === true) {
- return style;
- }
-
- var flippedAttributes = {
- // Keys and their replacements.
- right: 'left',
- left: 'right',
- marginRight: 'marginLeft',
- marginLeft: 'marginRight',
- paddingRight: 'paddingLeft',
- paddingLeft: 'paddingRight',
- borderRight: 'borderLeft',
- borderLeft: 'borderRight'
- };
-
- var newStyle = {};
-
- (0, _keys2.default)(style).forEach(function (attribute) {
- var value = style[attribute];
- var key = attribute;
-
- if (flippedAttributes.hasOwnProperty(attribute)) {
- key = flippedAttributes[attribute];
- }
-
- switch (attribute) {
- case 'float':
- case 'textAlign':
- if (value === 'right') {
- value = 'left';
- } else if (value === 'left') {
- value = 'right';
- }
- break;
-
- case 'direction':
- if (value === 'ltr') {
- value = 'rtl';
- } else if (value === 'rtl') {
- value = 'ltr';
- }
- break;
-
- case 'transform':
- if (!value) break;
- var matches = void 0;
- if (matches = value.match(reTranslate)) {
- value = value.replace(matches[0], matches[1] + -parseFloat(matches[4]));
- }
- if (matches = value.match(reSkew)) {
- value = value.replace(matches[0], matches[1] + -parseFloat(matches[4]) + matches[5] + matches[6] ? ', ' + (-parseFloat(matches[7]) + matches[8]) : '');
- }
- break;
-
- case 'transformOrigin':
- if (!value) break;
- if (value.indexOf('right') > -1) {
- value = value.replace('right', 'left');
- } else if (value.indexOf('left') > -1) {
- value = value.replace('left', 'right');
- }
- break;
- }
-
- newStyle[key] = value;
- });
-
- return newStyle;
- };
- }
- }
|