@onesy/style-react
Version:
Onesy CSS in JS styling solution for React
44 lines (43 loc) • 1.75 kB
JavaScript
;
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;