0.67.0 • Published 3 months ago

@rnw-community/object-field-tree v0.67.0

Weekly downloads
-
License
MIT
Repository
github
Last release
3 months ago

Object field tree

Utility for generating complex nested objects with data generation callback and full TypeScript support with IDE autocompletion.

npm version npm downloads

combine((...keys) => data, ...objects)

Real world usage examples: @rnw-community/fast-style

Example

Typescript enum and object usage example

You need to understand how TS converts enums into JS.

import { combine } from '@rnw-community/object-field-tree';
import { View } from 'react-native';

import { WidgetStyles } from './widget.styles';

enum ScienceEnum {
    'Mathematics' = 'Mathematics Science',
    'Physics' = 'Physics Science',
    'Chemistry' = 'Chemistry Science',
}

const complexityObject = {
    Easy: 'Easy',
    Medium: 'Medium',
    Hard: 'Hard',
};

const tree = combine(
    (science, complexity) => ({
        science: ScienceEnum[science],
        complexity: complexityObject[complexity],
        complexData: `${science}_${complexity}`,
    }),
    ScienceEnum,
    complexityObject
);

console.log(tree.Physics.Hard);
console.log(tree.Chemistry.Easy);

Generating components example

With this approach you can create a strictly configurable building framework of Components for your project with very easy usage and IDE autocompletion.

import { combine } from '@rnw-community/object-field-tree';
import { View } from 'react-native';

import { WidgetStyles } from './widget.styles';

enum WidgetHeightEnum {
    'Small' = 'Small',
    'Medium' = 'Medium',
}

const widgetWidthMap = {
    Third: WidgetStyles.thrirdWidth,
    TwoThirds: WidgetStyles.twoThrirdsWidth,
    Full: WidgetStyles.fullWidth,
};

const widgetHeightStyleMap = {
    [WidgetHeightEnum.Small]: WidgetStyles.smallHeight,
    [WidgetHeightEnum.Medium]: WidgetStyles.MediumHeight,
};

export const Widget = combine(
    (height, width) => props => <View {...props} style={[widgetHeightStyleMap[height], widgetWidthMap[width]]} />,
    WidgetHeightEnum,
    widgetWidthMap
);

// Widget usage
const Component = () => (
    <Widget.Small.Full>
        <View>
            <Text>Hello!</Text>
        </View>
    </Widget.Small.Full>
);

License

This library is licensed under The MIT License.

0.67.0

3 months ago

0.66.0

3 months ago

0.65.2

4 months ago

0.65.3

4 months ago

0.64.0

5 months ago

0.65.0

5 months ago

0.63.0

5 months ago

0.62.1

6 months ago

0.62.0

7 months ago

0.62.2

6 months ago

0.59.3

7 months ago

0.55.0

7 months ago

0.59.6

7 months ago

0.59.4

7 months ago

0.59.5

7 months ago

0.56.0

7 months ago

0.60.0

7 months ago

0.57.2

7 months ago

0.57.3

7 months ago

0.57.0

7 months ago

0.57.1

7 months ago

0.54.12

10 months ago

0.61.0

7 months ago

0.53.0

1 year ago

0.51.0

1 year ago

0.52.3

1 year ago

0.54.0

1 year ago

0.52.0

1 year ago

0.50.0

1 year ago

0.49.0

1 year ago

0.43.0

2 years ago

0.48.0

2 years ago

0.46.2

2 years ago

0.46.0

2 years ago

0.44.0

2 years ago

0.42.0

2 years ago

0.42.1

2 years ago

0.47.0

2 years ago

0.43.1

2 years ago

0.45.0

2 years ago

0.43.2

2 years ago

0.41.0

2 years ago

0.38.2

2 years ago

0.38.1

2 years ago

0.38.0

2 years ago

0.36.1

2 years ago

0.36.0

2 years ago

0.34.0

2 years ago

0.32.1

2 years ago

0.38.3

2 years ago

0.32.0

2 years ago

0.40.0

2 years ago

0.39.0

2 years ago

0.37.0

2 years ago

0.35.1

2 years ago

0.35.0

2 years ago

0.33.0

2 years ago

0.31.0

2 years ago

0.20.0

2 years ago

0.19.0

2 years ago

0.19.1

2 years ago

0.11.0

2 years ago

0.13.0

2 years ago

0.15.0

2 years ago

0.17.0

2 years ago

0.17.1

2 years ago

0.30.0

2 years ago

0.29.0

2 years ago

0.27.2

2 years ago

0.27.1

2 years ago

0.27.0

2 years ago

0.25.0

2 years ago

0.23.1

2 years ago

0.23.0

2 years ago

0.27.4

2 years ago

0.27.3

2 years ago

0.21.0

2 years ago

0.18.1

2 years ago

0.18.3

2 years ago

0.18.4

2 years ago

0.12.0

2 years ago

0.12.1

2 years ago

0.14.0

2 years ago

0.14.1

2 years ago

0.16.0

2 years ago

0.14.2

2 years ago

0.18.0

2 years ago

0.28.0

2 years ago

0.26.1

2 years ago

0.26.0

2 years ago

0.24.2

2 years ago

0.24.1

2 years ago

0.24.0

2 years ago

0.22.0

2 years ago

0.10.0

2 years ago

0.9.0

2 years ago

0.8.0

3 years ago

0.7.5

3 years ago

0.7.0

3 years ago

0.6.0

3 years ago

0.5.0

3 years ago

0.4.0

3 years ago

0.3.0

3 years ago

0.1.9

3 years ago

0.1.1

4 years ago

0.1.0

4 years ago

0.0.17

4 years ago

0.0.18

4 years ago

0.0.16

4 years ago

0.0.15

4 years ago

0.0.14

4 years ago

0.0.13

4 years ago

0.0.12

4 years ago

0.0.11

4 years ago

0.0.6

4 years ago