0.77.0 • Published 8 months ago

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

Weekly downloads
-
License
MIT
Repository
-
Last release
8 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.77.0

8 months ago

0.76.0

9 months ago

0.75.4

9 months ago

0.75.0

9 months ago

0.74.0

12 months ago

0.70.0

1 year ago

0.71.0

1 year ago

0.72.0

1 year ago

0.69.0

1 year ago

0.73.0

12 months ago

0.68.0

1 year ago

0.67.0

1 year ago

0.66.0

1 year ago

0.65.2

2 years ago

0.65.3

2 years ago

0.64.0

2 years ago

0.65.0

2 years ago

0.63.0

2 years ago

0.62.1

2 years ago

0.62.0

2 years ago

0.62.2

2 years ago

0.59.3

2 years ago

0.55.0

2 years ago

0.59.6

2 years ago

0.59.4

2 years ago

0.59.5

2 years ago

0.56.0

2 years ago

0.60.0

2 years ago

0.57.2

2 years ago

0.57.3

2 years ago

0.57.0

2 years ago

0.57.1

2 years ago

0.54.12

2 years ago

0.61.0

2 years ago

0.53.0

2 years ago

0.51.0

2 years ago

0.52.3

2 years ago

0.54.0

2 years ago

0.52.0

2 years ago

0.50.0

2 years ago

0.49.0

2 years ago

0.43.0

3 years ago

0.48.0

3 years ago

0.46.2

3 years ago

0.46.0

3 years ago

0.44.0

3 years ago

0.42.0

3 years ago

0.42.1

3 years ago

0.47.0

3 years ago

0.43.1

3 years ago

0.45.0

3 years ago

0.43.2

3 years ago

0.41.0

3 years ago

0.38.2

3 years ago

0.38.1

3 years ago

0.38.0

3 years ago

0.36.1

3 years ago

0.36.0

3 years ago

0.34.0

3 years ago

0.32.1

3 years ago

0.38.3

3 years ago

0.32.0

3 years ago

0.40.0

3 years ago

0.39.0

3 years ago

0.37.0

3 years ago

0.35.1

3 years ago

0.35.0

3 years ago

0.33.0

3 years ago

0.31.0

3 years ago

0.20.0

3 years ago

0.19.0

3 years ago

0.19.1

3 years ago

0.11.0

3 years ago

0.13.0

3 years ago

0.15.0

3 years ago

0.17.0

3 years ago

0.17.1

3 years ago

0.30.0

3 years ago

0.29.0

3 years ago

0.27.2

3 years ago

0.27.1

3 years ago

0.27.0

3 years ago

0.25.0

3 years ago

0.23.1

3 years ago

0.23.0

3 years ago

0.27.4

3 years ago

0.27.3

3 years ago

0.21.0

3 years ago

0.18.1

3 years ago

0.18.3

3 years ago

0.18.4

3 years ago

0.12.0

3 years ago

0.12.1

3 years ago

0.14.0

3 years ago

0.14.1

3 years ago

0.16.0

3 years ago

0.14.2

3 years ago

0.18.0

3 years ago

0.28.0

3 years ago

0.26.1

3 years ago

0.26.0

3 years ago

0.24.2

3 years ago

0.24.1

3 years ago

0.24.0

3 years ago

0.22.0

3 years ago

0.10.0

3 years ago

0.9.0

3 years ago

0.8.0

4 years ago

0.7.5

4 years ago

0.7.0

4 years ago

0.6.0

4 years ago

0.5.0

4 years ago

0.4.0

4 years ago

0.3.0

4 years ago

0.1.9

4 years ago

0.1.1

5 years ago

0.1.0

5 years ago

0.0.17

5 years ago

0.0.18

5 years ago

0.0.16

5 years ago

0.0.15

5 years ago

0.0.14

5 years ago

0.0.13

5 years ago

0.0.12

5 years ago

0.0.11

5 years ago

0.0.6

5 years ago