UNPKG

@onesy/ui-react

Version:
197 lines (196 loc) 8.12 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireDefault(require("react")); var _styleReact = require("@onesy/style-react"); var _Type = _interopRequireDefault(require("../Type")); var _Surface = _interopRequireDefault(require("../Surface")); var _utils = require("../utils"); var _jsxRuntime = require("react/jsx-runtime"); const _excluded = ["tonal", "color", "inset", "middle", "padding", "opacity", "alignment", "orientation", "flex", "Component", "className", "style", "children"]; function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } const useStyle = (0, _styleReact.style)(theme => ({ root: { // Reset margin: '0', border: 'none', display: 'flex', flexShrink: '0', opacity: theme.palette.visual_contrast.default.opacity.divider, transition: theme.methods.transitions.make('background') }, divider_tonal: { opacity: '1' }, orientation_vertical: { margin: '0 8px', height: '100%', width: '1px' }, orientation_vertical_middle: { margin: `16px 8px`, height: `calc(100% - 32px)` }, // Orientation orientation_horizontal: { margin: '8px 0', height: '1px', width: '100%' }, orientation_horizontal_middle: { margin: `8px 16px`, width: `calc(100% - 32px)` }, rootWithChildren: { display: 'flex', opacity: '1', color: theme.palette.text.default.primary, background: 'transparent', // Reset height: 'unset', width: 'unset', margin: '0', border: 'none' }, // Orientation rootWithChildren_orientation_horizontal: { flexDirection: 'row', alignItems: 'center', width: '100%' }, rootWithChildren_orientation_horizontal_middle: { margin: `0 16px`, width: `calc(100% - 32px)` }, rootWithChildren_orientation_vertical: { flexDirection: 'column', alignItems: 'center', height: '100%' }, rootWithChildren_orientation_vertical_middle: { margin: `16px 0`, height: `calc(100% - 32px)` }, // flex flex_orientation_horizontal: { flex: '1 1 auto', width: 'auto' }, flex_orientation_vertical: { flex: '1 1 auto' }, text: { flex: '0 0 auto' }, // Orientation text_horizontal: { margin: `0 16px` }, text_vertical: { margin: `16px 0` }, divider: { flex: '0 1 100%', opacity: theme.palette.visual_contrast.default.opacity.divider }, // Orientation divider_orientation_horizontal: { height: '1px' }, divider_orientation_vertical: { width: '1px' }, orientation_horizontal_padding: { marginInline: '16px', width: 'calc(100% - 32px)' }, orientation_vertical_padding: { marginBlock: '16px', height: 'calc(100% - 32px)' }, color_inherit: { opacity: theme.palette.visual_contrast.default.opacity.divider, color: 'inherit', background: 'currentColor' }, inset: { marginLeft: `72px`, width: `calc(100% - 72px)` } }), { name: 'onesy-Divider' }); const Divider = props_ => { var _theme$ui, _theme$ui2, _theme$elements, _theme$elements2; const theme = (0, _styleReact.useOnesyTheme)(); const props = _objectSpread(_objectSpread(_objectSpread({}, theme === null || theme === void 0 || (_theme$ui = theme.ui) === null || _theme$ui === void 0 || (_theme$ui = _theme$ui.elements) === null || _theme$ui === void 0 || (_theme$ui = _theme$ui.all) === null || _theme$ui === void 0 || (_theme$ui = _theme$ui.props) === null || _theme$ui === void 0 ? void 0 : _theme$ui.default), theme === null || theme === void 0 || (_theme$ui2 = theme.ui) === null || _theme$ui2 === void 0 || (_theme$ui2 = _theme$ui2.elements) === null || _theme$ui2 === void 0 || (_theme$ui2 = _theme$ui2.onesyDivider) === null || _theme$ui2 === void 0 || (_theme$ui2 = _theme$ui2.props) === null || _theme$ui2 === void 0 ? void 0 : _theme$ui2.default), props_); const Type = (theme === null || theme === void 0 || (_theme$elements = theme.elements) === null || _theme$elements === void 0 ? void 0 : _theme$elements.Type) || _Type.default; const Surface = (theme === null || theme === void 0 || (_theme$elements2 = theme.elements) === null || _theme$elements2 === void 0 ? void 0 : _theme$elements2.Surface) || _Surface.default; const { tonal = true, color = 'inverted', inset, middle, padding, opacity = theme.palette.visual_contrast.default.opacity.divider, alignment = 'center', orientation = 'horizontal', flex, Component: Component_ = 'hr', className, style, children } = props, other = (0, _objectWithoutProperties2.default)(props, _excluded); const { classes } = useStyle(); const styles = { root: {}, divider: {}, start: {}, end: {} }; let Component = Component_; if (children && Component === 'hr') Component = 'div'; if (alignment === 'start') styles.start.flexBasis = '15%'; if (alignment === 'end') styles.end.flexBasis = '15%'; return /*#__PURE__*/(0, _jsxRuntime.jsx)(Surface, _objectSpread(_objectSpread({ version: "filled", tonal: tonal, color: color, Component: Component, className: (0, _styleReact.classNames)([(0, _utils.staticClassName)('Divider', theme) && ['onesy-Divider-root'], className, classes[children ? 'rootWithChildren' : 'root'], classes[`${children ? 'rootWithChildren_' : ''}orientation_${orientation}`], flex && classes[`flex_orientation_${orientation}`], inset && classes.inset, middle && classes[`${children ? `rootWithChildren_` : ''}orientation_${orientation}_middle`], padding && classes[`orientation_${orientation}_padding`], color === 'inherit' && classes.color_inherit, tonal && classes.divider_tonal]), style: _objectSpread(_objectSpread({ opacity }, style), styles.root) }, other), {}, { children: children && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, { children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Surface, { version: "filled", tonal: tonal, color: color, className: (0, _styleReact.classNames)([(0, _utils.staticClassName)('Divider', theme) && ['onesy-Divider-divider'], classes.divider, classes[`divider_orientation_${orientation}`], tonal && classes.divider_tonal]), style: _objectSpread(_objectSpread({}, styles.divider), styles.start) }), /*#__PURE__*/(0, _jsxRuntime.jsx)(Type, { version: "b2", className: (0, _styleReact.classNames)([(0, _utils.staticClassName)('Divider', theme) && ['onesy-Divider-text'], classes.text, classes[`text_${orientation}`]]), children: children }), /*#__PURE__*/(0, _jsxRuntime.jsx)(Surface, { version: "filled", tonal: tonal, color: color, className: (0, _styleReact.classNames)([(0, _utils.staticClassName)('Divider', theme) && ['onesy-Divider-divider'], classes.divider, classes[`divider_orientation_${orientation}`], tonal && classes.divider_tonal]), style: _objectSpread(_objectSpread({}, styles.divider), styles.end) })] }) })); }; Divider.displayName = 'onesy-Divider'; var _default = exports.default = Divider;