Comparing version 0.3.0 to 0.4.0
@@ -134,2 +134,45 @@ "use strict" | ||
function filter(options) { | ||
const { propsKeys, renderers, reducer, initial } = options | ||
const keys = [] | ||
if (isArray(propsKeys)) { | ||
push.apply(keys, propsKeys) | ||
} | ||
if (isArray(renderers)) { | ||
const filterSet = compose({ name: "filter", renderers }) | ||
push.apply(keys, filterSet.options.propsKeys) | ||
} | ||
const filterProps = (props) => { | ||
return keys.reduce((acc, key) => { | ||
return reducer(acc, key, props) | ||
}, initial(props)) | ||
} | ||
return filterProps | ||
} | ||
function omit(options) { | ||
const propsKeys = options.propsKeys || ["theme"] | ||
if (!propsKeys.includes("theme")) propsKeys.push("theme") | ||
return filter({ | ||
propsKeys, | ||
renderers: options.renderers, | ||
initial: (props) => Object.assign({}, props), | ||
reducer: (acc, key) => { | ||
delete acc[key] | ||
return acc | ||
} | ||
}) | ||
} | ||
function pick(options) { | ||
return filter({ | ||
propsKeys: options.propsKeys, | ||
renderers: options.renderers, | ||
initial: () => ({}), | ||
reducer: (acc, key, props) => { | ||
const value = props[key] | ||
if (!isNil(value)) acc[key] = value | ||
return acc | ||
} | ||
}) | ||
} | ||
function render(keys, value) { | ||
@@ -219,20 +262,2 @@ if (isNil(value) || !isArray(keys) || !keys.length) return null | ||
function omit(options) { | ||
const { propsKeys, renderers } = options | ||
const keys = ["theme"] | ||
if (isArray(propsKeys)) { | ||
push.apply(keys, propsKeys) | ||
} | ||
if (isArray(renderers)) { | ||
const omitSet = compose({ name: "omit", renderers }) | ||
push.apply(keys, omitSet.options.propsKeys) | ||
} | ||
const omitProps = (props) => { | ||
const filteredProps = Object.assign({}, props) | ||
keys.forEach((key) => delete filteredProps[key]) | ||
return filteredProps | ||
} | ||
return omitProps | ||
} | ||
const alignContent = style({ | ||
@@ -918,2 +943,3 @@ propsKeys: ["alignContent", "alc"] | ||
exports.extend = extend | ||
exports.filter = filter | ||
exports.flex = flex | ||
@@ -1014,2 +1040,3 @@ exports.flexBasis = flexBasis | ||
exports.perspectiveOrigin = perspectiveOrigin | ||
exports.pick = pick | ||
exports.placeContent = placeContent | ||
@@ -1016,0 +1043,0 @@ exports.placeItems = placeItems |
@@ -130,2 +130,45 @@ const PX_SCALE = [0, 2, 4, 8, 16, 32, 64, 128, 256, 512] | ||
function filter(options) { | ||
const { propsKeys, renderers, reducer, initial } = options | ||
const keys = [] | ||
if (isArray(propsKeys)) { | ||
push.apply(keys, propsKeys) | ||
} | ||
if (isArray(renderers)) { | ||
const filterSet = compose({ name: "filter", renderers }) | ||
push.apply(keys, filterSet.options.propsKeys) | ||
} | ||
const filterProps = (props) => { | ||
return keys.reduce((acc, key) => { | ||
return reducer(acc, key, props) | ||
}, initial(props)) | ||
} | ||
return filterProps | ||
} | ||
function omit(options) { | ||
const propsKeys = options.propsKeys || ["theme"] | ||
if (!propsKeys.includes("theme")) propsKeys.push("theme") | ||
return filter({ | ||
propsKeys, | ||
renderers: options.renderers, | ||
initial: (props) => Object.assign({}, props), | ||
reducer: (acc, key) => { | ||
delete acc[key] | ||
return acc | ||
} | ||
}) | ||
} | ||
function pick(options) { | ||
return filter({ | ||
propsKeys: options.propsKeys, | ||
renderers: options.renderers, | ||
initial: () => ({}), | ||
reducer: (acc, key, props) => { | ||
const value = props[key] | ||
if (!isNil(value)) acc[key] = value | ||
return acc | ||
} | ||
}) | ||
} | ||
function render(keys, value) { | ||
@@ -215,20 +258,2 @@ if (isNil(value) || !isArray(keys) || !keys.length) return null | ||
function omit(options) { | ||
const { propsKeys, renderers } = options | ||
const keys = ["theme"] | ||
if (isArray(propsKeys)) { | ||
push.apply(keys, propsKeys) | ||
} | ||
if (isArray(renderers)) { | ||
const omitSet = compose({ name: "omit", renderers }) | ||
push.apply(keys, omitSet.options.propsKeys) | ||
} | ||
const omitProps = (props) => { | ||
const filteredProps = Object.assign({}, props) | ||
keys.forEach((key) => delete filteredProps[key]) | ||
return filteredProps | ||
} | ||
return omitProps | ||
} | ||
const alignContent = style({ | ||
@@ -915,2 +940,3 @@ propsKeys: ["alignContent", "alc"] | ||
extend, | ||
filter, | ||
flex, | ||
@@ -1011,2 +1037,3 @@ flexBasis, | ||
perspectiveOrigin, | ||
pick, | ||
placeContent, | ||
@@ -1013,0 +1040,0 @@ placeItems, |
{ | ||
"name": "onno", | ||
"license": "MIT", | ||
"version": "0.3.0", | ||
"version": "0.4.0", | ||
"homepage": "https://onnojs.com", | ||
@@ -33,3 +33,3 @@ "description": "Responsive style props for building themed design systems", | ||
}, | ||
"gitHead": "1c74f1e86f46ecb35474fcce93c55fe6f595abe3" | ||
"gitHead": "29c8a0cb54ab74ad59cf4e2284f72fe97ef4d526" | ||
} |
@@ -6,5 +6,5 @@ export * from "./types" | ||
export * from "./interpolate" | ||
export * from "./filter" | ||
export * from "./render" | ||
export * from "./style" | ||
export * from "./omit" | ||
export * from "./renderers/align" | ||
@@ -11,0 +11,0 @@ export * from "./renderers/animation" |
@@ -94,6 +94,2 @@ export declare type Length = number | ||
} | ||
export interface OmitOptions { | ||
propsKeys?: Keys | ||
renderers?: AnyRenderFunction[] | ||
} | ||
export interface ComposedRenderOptions { | ||
@@ -105,7 +101,29 @@ propsKeys: Keys | ||
} | ||
export declare type FilterInitial<P> = (props: P) => Partial<P> | ||
export declare type FilterReducer<P> = ( | ||
acc: Partial<P>, | ||
key: keyof P, | ||
props: P | ||
) => Partial<P> | ||
export interface FilterOptions<P> { | ||
propsKeys?: Keys | ||
renderers?: AnyRenderFunction[] | ||
initial: FilterInitial<P> | ||
reducer: FilterReducer<P> | ||
} | ||
export declare type OmitOptions<P> = Omit< | ||
FilterOptions<P>, | ||
"initial" | "reducer" | ||
> | ||
export declare type PickOptions<P> = Omit< | ||
FilterOptions<P>, | ||
"initial" | "reducer" | ||
> | ||
export declare type VariantOptions = Omit<StyleOptions, "styleKeys"> | ||
export declare type InterpolateOptions = ComposeOptions | ||
export declare type OmitFunction<P extends ThemeProps> = ( | ||
export declare type FilterFunction<P extends ThemeProps> = ( | ||
value: P | ||
) => Partial<P> | ||
export declare type OmitFunction<P> = FilterFunction<P> | ||
export declare type PickFunction<P> = FilterFunction<P> | ||
export declare type ValueTransformFunction = (value: any) => any | ||
@@ -112,0 +130,0 @@ export interface StyleTransformFunction<P extends ThemeProps, S extends Style> { |
117821
4046