@ray-core/runtime
Version:
Ray 是一个全新的基于 React 的小程序开发框架
71 lines (70 loc) • 2.78 kB
JavaScript
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
Object.defineProperty(exports, "__esModule", { value: true });
var CSSProperty_1 = require("./CSSProperty");
var framework_shared_1 = require("@ray-core/framework-shared");
var vendorPrefixes = ['webkit', 'moz', 'ms', 'o'];
var transformReactStyleKey = function (key) {
// css3 var
if (key === null || key === void 0 ? void 0 : key.startsWith('--')) {
return key;
}
var styleValue = key.replace(/\.?([A-Z]+)/g, function (_x, y) {
return '-' + y.toLowerCase();
});
// vendor prefix
if (styleValue === null || styleValue === void 0 ? void 0 : styleValue.startsWith('-')) {
var firstWord_1 = styleValue.split('-').filter(function (s) { return s; })[0];
styleValue = styleValue.replace(/^-/, '');
if ((0, framework_shared_1.find)(vendorPrefixes, function (prefix) { return prefix === firstWord_1; })) {
styleValue = '-' + styleValue;
}
}
return styleValue;
};
var transformPx = function (value) {
if (typeof value !== 'string') {
return value;
}
return value.replace(/\b(\d+(\.\d+)?)px\b/g, function (match, x) {
var targetUnit = 'rpx';
var size = Number(x);
return size % 1 === 0 ? size + targetUnit : size.toFixed(2) + targetUnit;
});
};
var plainStyle = function (style) {
return Object.keys(style)
.reduce(function (acc, key) {
var value = style[key];
if (!Number.isNaN(Number(value)) && !CSSProperty_1.isUnitlessNumber[key] && !(key === null || key === void 0 ? void 0 : key.startsWith('--'))) {
value = value + 'rpx';
}
return __spreadArray(__spreadArray([], __read(acc), false), ["".concat(transformReactStyleKey(key), ":").concat(framework_shared_1.RuntimeOptions.get('pxToRpx') ? transformPx(value) : value, ";")], false);
}, [])
.join('');
};
exports.default = plainStyle;
;