UNPKG

@windijs/style

Version:

@windijs/style

143 lines (137 loc) 4.63 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var core = require('@windijs/core'); var helpers = require('@windijs/helpers'); var shared = require('@windijs/shared'); const funcs = { quote: helpers.quote, attr: helpers.attr, url: helpers.url, $var: helpers.$var, path: helpers.path, hwb: helpers.hwb, dropShadow: helpers.dropShadow, counters: helpers.counters, circle: helpers.circle, ellipse: helpers.ellipse, inset: helpers.inset, polygon: helpers.polygon, matrix: helpers.matrix, matrix3d: helpers.matrix3d, perspective: helpers.perspective, rotate: helpers.rotate, rotate3d: helpers.rotate3d, rotateX: helpers.rotateX, rotateY: helpers.rotateY, rotateZ: helpers.rotateZ, scale: helpers.scale, scale3d: helpers.scale3d, scaleX: helpers.scaleX, scaleY: helpers.scaleY, scaleZ: helpers.scaleZ, skew: helpers.skew, skewX: helpers.skewX, skewY: helpers.skewY, translate: helpers.translate, translate3d: helpers.translate3d, translateX: helpers.translateX, translateY: helpers.translateY, translateZ: helpers.translateZ, steps: helpers.steps, calc: helpers.calc, clamp: helpers.clamp, max: helpers.max, min: helpers.min, abs: helpers.abs, sign: helpers.sign, blur: helpers.blur, brightness: helpers.brightness, contrast: helpers.contrast, grayscale: helpers.grayscale, invert: helpers.invert, opacity: helpers.opacity, saturate: helpers.saturate, sepia: helpers.sepia, rgb: helpers.rgb, rgba: helpers.rgba, hsl: helpers.hsl, hsla: helpers.hsla, counter: helpers.counter, env: helpers.env, minmax: helpers.minmax, repeat: helpers.repeat, hueRotate: helpers.hueRotate, fitContent: helpers.fitContent, cubicBezier: helpers.cubicBezier, linearGradient: helpers.linearGradient, radialGradient: helpers.radialGradient, conicGradient: helpers.conicGradient, repeatingConicGradient: helpers.repeatingConicGradient, repeatingLinearGradient: helpers.repeatingLinearGradient, repeatingRadialGradient: helpers.repeatingRadialGradient, }; const units = { percent: helpers.percent, deg: helpers.deg, grad: helpers.grad, rad: helpers.rad, turn: helpers.turn, s: helpers.s, ms: helpers.ms, fr: helpers.fr, $in: helpers.$in, dpi: helpers.dpi, dpcm: helpers.dpcm, dppx: helpers.dppx, x: helpers.x, px: helpers.px, pc: helpers.pc, pt: helpers.pt, cm: helpers.cm, mm: helpers.mm, Q: helpers.Q, ch: helpers.ch, ex: helpers.ex, em: helpers.em, rem: helpers.rem, vw: helpers.vw, vh: helpers.vh, vmax: helpers.vmax, vmin: helpers.vmin, }; function stylePropertyHandler(cfg = {}) { const target = { [helpers.SymbolProxy]: true }; const build = (prop, value) => { const meta = helpers.getMeta(); if (meta.props.length === 1) meta.props.push(value); return helpers.css(value === "null" || value === "undefined" ? {} : { [prop]: value }, undefined, meta); }; return { type: "style", get: prop => new Proxy(target, { get(_, value) { const meta = helpers.getMeta(); helpers.resetMeta("style", meta.type, [prop], meta.variants); if (shared.hasKey(cfg, prop)) { const cv = cfg[prop]; const result = typeof cv === "function" ? cv(value) : core.handleConfig(v => build(prop, v), cv, "css", value); if (result) return result; } if (value === "var") return (name, defaultValue) => build(prop, funcs.$var(name, defaultValue)); if (value === "in") return new Proxy(units.$in, { get: (_, v) => build(prop, units.$in[+v].toString()) }); if (value in funcs) return (...args) => build(prop, funcs[value](...args)); if (shared.hasKey(units, value)) return new Proxy(units[value], { get: (_, v) => build(prop, units[value][v].toString()) }); return build(prop, value); }, }), }; } const style = core.createUtility("style").use(stylePropertyHandler()).init(); exports.style = style; exports.stylePropertyHandler = stylePropertyHandler;