@onesy/style-react
Version:
Onesy CSS in JS styling solution for React
45 lines (44 loc) • 1.69 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 hash_1 = __importDefault(require("@onesy/utils/hash"));
const merge_1 = __importDefault(require("@onesy/utils/merge"));
const style_1 = require("@onesy/style");
const _1 = require(".");
function inline(value_, props, options_ = { response: 'json' }) {
const [value, setValue] = react_1.default.useState(undefined);
const onesyStyle = (0, _1.useOnesyStyle)();
const onesyTheme = (0, _1.useOnesyTheme)();
const update = (update_ = true) => {
const options = (0, merge_1.default)(options_, { onesy_style: { value: onesyStyle }, onesy_theme: { value: onesyTheme } }, { copy: true });
// Options response value
options.response = 'json';
const valueNew = (0, style_1.inline)(value_, props, options);
if (update_)
setValue(valueNew);
return valueNew;
};
// Update
react_1.default.useEffect(() => {
update();
if (onesyTheme)
onesyTheme.subscriptions.update.subscribe(update);
// Clean up
return () => {
// Unsubscribe
if (onesyTheme)
onesyTheme.subscriptions.update.unsubscribe(update);
};
}, []);
// Update props
react_1.default.useEffect(() => {
update();
}, [(0, hash_1.default)(props)]);
// Important for ssr value
const value__ = value || update(false);
return value__;
}
exports.default = inline;
;