UNPKG

@onesy/style-react

Version:

Onesy CSS in JS styling solution for React

53 lines (48 loc) 1.45 kB
import React from 'react'; import hash from '@onesy/utils/hash'; import merge from '@onesy/utils/merge'; import { inline as onesyInlineMethod } from '@onesy/style'; import { useOnesyStyle, useOnesyTheme } from '.'; export default function inline(value_, props) { let options_ = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : { response: 'json' }; const [value, setValue] = React.useState(undefined); const onesyStyle = useOnesyStyle(); const onesyTheme = useOnesyTheme(); const update = function () { let update_ = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; const options = merge(options_, { onesy_style: { value: onesyStyle }, onesy_theme: { value: onesyTheme } }, { copy: true }); // Options response value options.response = 'json'; const valueNew = onesyInlineMethod(value_, props, options); if (update_) setValue(valueNew); return valueNew; }; // Update React.useEffect(() => { update(); if (onesyTheme) onesyTheme.subscriptions.update.subscribe(update); // Clean up return () => { // Unsubscribe if (onesyTheme) onesyTheme.subscriptions.update.unsubscribe(update); }; }, []); // Update props React.useEffect(() => { update(); }, [hash(props)]); // Important for ssr value const value__ = value || update(false); return value__; }