diff --git a/packages/core/src/App.ts b/packages/core/src/App.ts index 96fd5bd7..4f8e6591 100644 --- a/packages/core/src/App.ts +++ b/packages/core/src/App.ts @@ -129,23 +129,18 @@ class App extends EventEmitter { styleObj = { ...style }; } + const isHippy = this.jsEngine === 'hippy'; + const whiteList = ['zIndex', 'opacity', 'fontWeight']; 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)); } else if (key === 'transform' && typeof value !== 'string') { - const values = Object.entries(value as Record) - .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; + results[key] = this.getTransform(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 { results[key] = value; } @@ -340,6 +335,25 @@ class App extends EventEmitter { this.eventQueueMap[event.eventConfig.to] = [event]; } } + + private getTransform(value: Record) { + 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;