UNPKG

@onesy/style-react

Version:

Onesy CSS in JS styling solution for React

44 lines (43 loc) 1.75 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = __importDefault(require("react")); const utils_1 = require("@onesy/utils"); const style_1 = __importDefault(require("./style")); // May be TValue or a string as a string value literal const responses = {}; function string(value_, ...args) { const valueString = value_.reduce((result, item, index) => result += `${item}${args[index] || ''}`, ''); const valueStringMethod = () => { const rule = {}; valueString.trim().split('\n').filter(Boolean).map((item) => item.trim()).forEach((item) => { if (item) { const items = item.split(':'); let value__ = items[1]; const property = items[0]; value__ = value__ && value__.trim().replace(';', ''); if (property && value__) rule[property] = (0, utils_1.castParam)(value__, { decode: false }); } }); return rule; }; const value = { a: valueStringMethod() }; const name = react_1.default.useMemo(() => (0, utils_1.hash)(value.a), [value_]); if (!responses[name]) responses[name] = []; const useStyle = react_1.default.useState(() => (0, style_1.default)(value, { name }, responses[name]))[0]; const values = useStyle(); // Update on value update react_1.default.useEffect(() => { const response = responses[name][0]; if (response) response.update(value); }, [valueString]); return (values.class || ''); } exports.default = string;