UNPKG

@styli/react

Version:

127 lines (106 loc) 3.3 kB
import { injectGlobalStyle, setConfig } from '@styli/core'; import { styled } from '@styli/styled'; import presetWeb from '@styli/preset-web'; import { createElement, forwardRef } from 'react'; import { store } from '@styli/store'; import { Parser } from '@styli/parser'; function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } /** * JSX Pragma * TODO: this is minimal version * @param element element type * @param props element props * @param children element children */ function jsx(element, props) { if (props === void 0) { props = {}; } for (var _len = arguments.length, children = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { children[_key - 2] = arguments[_key]; } // Do'not handle third-party Component and empty props if (typeof element !== 'string' || !props || !Object.keys(props).length) { return createElement.apply(null, arguments); } var parser = new Parser(props); var parsedProps = parser.getParsedProps(); var inline = store.config.inline; if (inline) { if (Array.isArray(props.style)) { parsedProps.style = [parser.toStyle(), props.style]; } else { parsedProps.style = _extends({}, parser.toStyle(), props.style); } } else { parser.insertRule(); var finalClassName = parser.getClassNames().join(' ').trim(); if (finalClassName) parsedProps.className = finalClassName; } return createElement.apply(null, [element, parsedProps].concat(children)); } var Box = /*#__PURE__*/forwardRef(function (props, ref) { var _props$as = props.as, as = _props$as === void 0 ? 'div' : _props$as, rest = _objectWithoutPropertiesLoose(props, ["as"]); var parser = new Parser(rest); var parsedProps = parser.getParsedProps(); var inline = store.config.inline; if (inline) { if (Array.isArray(rest.style)) { parsedProps.style = [parser.toStyle(), rest.style]; } else { parsedProps.style = _extends({}, parser.toStyle(), rest.style); } } else { parser.insertRule(); var finalClassName = parser.getClassNames().join(' '); parsedProps.className = finalClassName; } return createElement(as, _extends({ ref: ref }, parsedProps)); }); var View = /*#__PURE__*/styled('div'); var Text = /*#__PURE__*/styled('span'); var Image = /*#__PURE__*/styled('img'); injectGlobalStyle({ '*': { border: '0 solid #ccc', boxSizing: 'border-box' }, '*::before': { boxSizing: 'border-box' }, '*::after': { boxSizing: 'border-box' } }); setConfig(presetWeb); export { Box, Image, Text, View, jsx }; //# sourceMappingURL=react.esm.js.map