Skip to content

Commit 45d1537

Browse files
5ZYSZ3Kjsamr
authored andcommitted
feat: implement support for missing style properties
1 parent bd94c72 commit 45d1537

File tree

3 files changed

+58
-22
lines changed

3 files changed

+58
-22
lines changed

packages/css-processor/src/CSSNativeParseRun.ts

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { CSSParseRun } from './CSSParseRun';
22
import { MixedStyleDeclaration } from './CSSProcessor';
33
import { CSSPropertiesValidationRegistry } from './CSSPropertiesValidationRegistry';
44
import { lookupRecord } from './helpers';
5+
import { ValidatorsType } from './makepropertiesValidators';
56
import {
67
ExtraNativeTextStyle,
78
NativeDirectionalStyleKeys,
@@ -42,7 +43,15 @@ const extraLongViewStyles: Record<ExtraNativeLongViewStyleKeys, 'block'> = {
4243
shadowRadius: 'block',
4344
tintColor: 'block',
4445
transformMatrix: 'block',
45-
translateX: 'block'
46+
gap: 'block',
47+
inset: 'block',
48+
insetBlock: 'block',
49+
insetInline: 'block',
50+
marginBlock: 'block',
51+
marginInline: 'block',
52+
paddingBlock: 'block',
53+
paddingInline: 'block',
54+
objectFit: 'block'
4655
};
4756

4857
const extraTextStyles: Record<keyof ExtraNativeTextStyle, 'text'> = {
@@ -72,16 +81,16 @@ export class CSSNativeParseRun extends CSSParseRun {
7281

7382
private fillProp<K extends keyof MixedStyleDeclaration>(
7483
key: K,
75-
value: any
84+
value: MixedStyleDeclaration[K]
7685
): void {
7786
const validator = this.validationMap.getValidatorForProperty(
78-
String(key)
79-
) as any;
87+
String(key) as keyof ValidatorsType
88+
);
8089
if (validator && 'normalizeNativeValue' in validator) {
8190
const normalizedValue = validator.normalizeNativeValue(value);
8291
if (normalizedValue instanceof ShortMergeRequest) {
8392
normalizedValue.forEach(([innerKey, innerValue]) => {
84-
this.fillProp(innerKey as any, innerValue);
93+
this.fillProp(innerKey, innerValue);
8594
});
8695
} else {
8796
// assume longhand merge
@@ -112,10 +121,8 @@ export class CSSNativeParseRun extends CSSParseRun {
112121

113122
protected fillProcessedProps(): void {
114123
const declaration = this.declaration;
115-
for (const key of Object.keys(declaration) as Array<
116-
keyof MixedStyleDeclaration
117-
>) {
118-
this.fillProp(key, this.declaration[key]);
124+
for (const [key, value] of Object.entries(declaration)) {
125+
this.fillProp(key as keyof MixedStyleDeclaration, value);
119126
}
120127
}
121128
}

packages/css-processor/src/makepropertiesValidators.ts

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,46 @@ export default function makepropertiesValidators(config: CSSProcessorConfig) {
138138
model: nativeTranslatableBlockRetainModel,
139139
propertyName: 'flexFlow'
140140
}),
141+
gap: new LongSizeCSSPropertyValidator({
142+
config,
143+
propertyName: 'gap',
144+
model: nativeTranslatableBlockRetainModel
145+
}),
146+
inset: new LongSizeCSSPropertyValidator({
147+
config,
148+
propertyName: 'inset',
149+
model: nativeTranslatableBlockRetainModel
150+
}),
151+
insetBlock: new LongSizeCSSPropertyValidator({
152+
config,
153+
propertyName: 'insetBlock',
154+
model: nativeTranslatableBlockRetainModel
155+
}),
156+
insetInline: new LongSizeCSSPropertyValidator({
157+
config,
158+
propertyName: 'insetInline',
159+
model: nativeTranslatableBlockRetainModel
160+
}),
161+
marginBlock: new LongSizeCSSPropertyValidator({
162+
config,
163+
propertyName: 'marginBlock',
164+
model: nativeTranslatableBlockRetainModel
165+
}),
166+
marginInline: new LongSizeCSSPropertyValidator({
167+
config,
168+
propertyName: 'marginInline',
169+
model: nativeTranslatableBlockRetainModel
170+
}),
171+
paddingBlock: new LongSizeCSSPropertyValidator({
172+
config,
173+
propertyName: 'paddingBlock',
174+
model: nativeTranslatableBlockRetainModel
175+
}),
176+
paddingInline: new LongSizeCSSPropertyValidator({
177+
config,
178+
propertyName: 'paddingInline',
179+
model: nativeTranslatableBlockRetainModel
180+
}),
141181
font: new ShortFontCSSValidator({
142182
config,
143183
model: nativeTranslatableTextFlowModel,

packages/css-processor/src/native-types.ts

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -45,18 +45,7 @@ export type ExtraNativeUntranslatedLongStyles = Pick<
4545
CSSLongNativeUntranslatableBlockPropKey
4646
>;
4747

48-
type YetUnimplementedNativeTextStyleKeys =
49-
| 'translateY'
50-
| 'borderCurve'
51-
| 'gap'
52-
| 'inset'
53-
| 'insetBlock'
54-
| 'insetInline'
55-
| 'marginBlock'
56-
| 'marginInline'
57-
| 'paddingBlock'
58-
| 'paddingInline'
59-
| 'objectFit';
48+
type UnimplementedNativeStyleKeys = 'translateX' | 'translateY' | 'borderCurve';
6049

6150
/**
6251
* Extraneous React Native ViewStyle keys.
@@ -66,7 +55,7 @@ export type ExtraNativeLongViewStyleKeys = Exclude<
6655
| CSSLongNativeBlockPropKey
6756
| NativeDirectionalStyleKeys
6857
| ExtraNativeShortViewStyleKeys
69-
| YetUnimplementedNativeTextStyleKeys
58+
| UnimplementedNativeStyleKeys
7059
>;
7160

7261
/**

0 commit comments

Comments
 (0)