diff --git a/package.json b/package.json index 86b5795..059e9ff 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@utilitycss/utility", - "version": "1.2.1", + "version": "1.2.2", "description": "Generator for Utility CSS frameworks", "author": "Andrea Moretti (@axyz) ", "repository": "utilitycss/utility", diff --git a/src/modules/index.ts b/src/modules/index.ts index 60ffb22..88f51af 100644 --- a/src/modules/index.ts +++ b/src/modules/index.ts @@ -14,6 +14,7 @@ export { default as height } from "./height"; export { default as letterSpacing } from "./letter-spacing"; export { default as lineHeight } from "./line-height"; export { default as listStyle } from "./list-style"; +export { default as objectFit } from "./object-fit"; export { default as opacity } from "./opacity"; export { default as outline } from "./outline"; export { default as overflow } from "./overflow"; diff --git a/src/modules/object-fit.ts b/src/modules/object-fit.ts new file mode 100644 index 0000000..b3d1d14 --- /dev/null +++ b/src/modules/object-fit.ts @@ -0,0 +1,52 @@ +import applyRules from "../util/applyRules"; + +import { GetRules, Meta, Module } from "../types"; + +export type ObjectFitSupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type ObjectFitModuleType = Module; + +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface ConfigVariables {} + +const defaultNames = { + "ob:contain": "ob:contain", + "ob:cover": "ob:cover", + "ob:fill": "ob:fill", + "ob:none": "ob:none", + "ob:scaleDown": "ob:scaleDown", +}; + +const getRules: GetRules = (names) => ({ + "ob:contain": { + name: names["ob:contain"], + key: "object-fit", + value: "contain", + }, + "ob:cover": { name: names["ob:cover"], key: "object-fit", value: "cover" }, + "ob:fill": { name: names["ob:fill"], key: "object-fit", value: "fill" }, + "ob:none": { name: names["ob:none"], key: "object-fit", value: "none" }, + "ob:scaleDown": { + name: names["ob:scaleDown"], + key: "object-fit", + value: "scale-down", + }, +}); + +const meta: Meta = { + module: "object-fit", +}; + +const cssModule: ObjectFitModuleType = (config) => (globalConfig) => { + return applyRules({ + config, + globalConfig, + defaultNames, + getRules, + meta: Object.assign({}, meta, config && config.meta), + }); +}; + +export default cssModule;