fix(core): style兼容hippy

This commit is contained in:
roymondchen 2023-03-30 14:19:04 +08:00
parent 44290b65ba
commit fb026a134f

View File

@ -129,23 +129,18 @@ class App extends EventEmitter {
styleObj = { ...style }; styleObj = { ...style };
} }
const isHippy = this.jsEngine === 'hippy';
const whiteList = ['zIndex', 'opacity', 'fontWeight']; const whiteList = ['zIndex', 'opacity', 'fontWeight'];
Object.entries(styleObj).forEach(([key, value]) => { Object.entries(styleObj).forEach(([key, value]) => {
if (key === 'backgroundImage') { if (key === 'scale' && !results.transform && isHippy) {
results.transform = [{ scale: value }];
} else if (key === 'backgroundImage' && !isHippy) {
value && (results[key] = fillBackgroundImage(value)); value && (results[key] = fillBackgroundImage(value));
} else if (key === 'transform' && typeof value !== 'string') { } else if (key === 'transform' && typeof value !== 'string') {
const values = Object.entries(value as Record<string, string>) results[key] = this.getTransform(value);
.map(([transformKey, transformValue]) => {
if (!transformValue.trim()) return '';
if (transformKey === 'rotate' && isNumber(transformValue)) {
transformValue = `${transformValue}deg`;
}
return `${transformKey}(${transformValue})`;
})
.join(' ');
results[key] = !values.trim() ? 'none' : values;
} else if (!whiteList.includes(key) && value && /^[-]?[0-9]*[.]?[0-9]*$/.test(value)) { } else if (!whiteList.includes(key) && value && /^[-]?[0-9]*[.]?[0-9]*$/.test(value)) {
results[key] = `${value / 100}rem`; results[key] = isHippy ? value : `${value / 100}rem`;
} else { } else {
results[key] = value; results[key] = value;
} }
@ -340,6 +335,25 @@ class App extends EventEmitter {
this.eventQueueMap[event.eventConfig.to] = [event]; this.eventQueueMap[event.eventConfig.to] = [event];
} }
} }
private getTransform(value: Record<string, string>) {
if (!value) return [];
const transform = Object.entries(value).map(([transformKey, transformValue]) => {
if (!transformValue.trim()) return '';
if (transformKey === 'rotate' && isNumber(transformValue)) {
transformValue = `${transformValue}deg`;
}
return this.jsEngine !== 'hippy' ? `${transformKey}(${transformValue})` : { [transformKey]: transformValue };
});
if (this.jsEngine === 'hippy') {
return transform;
}
const values = transform.join(' ');
return !values.trim() ? 'none' : values;
}
} }
export default App; export default App;