UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

104 lines (103 loc) 3.07 kB
"use strict"; "use client"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = require("react"); var _clsx = _interopRequireDefault(require("clsx")); var _componentHelper = require("../../shared/component-helper.js"); var _Context = _interopRequireDefault(require("../../shared/Context.js")); var _SpacingUtils = require("./SpacingUtils.js"); var _SkeletonHelper = require("../skeleton/SkeletonHelper.js"); var _withComponentMarkers = _interopRequireDefault(require("../../shared/helpers/withComponentMarkers.js")); var _SpaceResponsive = _interopRequireDefault(require("./SpaceResponsive.js")); var _jsxRuntime = require("react/jsx-runtime"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const defaultProps = {}; function SpaceInstance(localProps) { const context = (0, _react.useContext)(_Context.default); const props = context.space ? (0, _componentHelper.extendPropsWithContext)(localProps, defaultProps, { space: context.space }, { skeleton: context === null || context === void 0 ? void 0 : context.skeleton }) : localProps; const { element = 'div', inline, noCollapse, top, right, bottom, left, style, space, innerSpace, stretch, skeleton, ref, className, children, ...attributes } = props; const params = (0, _SpacingUtils.useSpacing)({ top, right, bottom, left, space, innerSpace }, { style, className: (0, _clsx.default)('dnb-space', (0, _SkeletonHelper.createSkeletonClass)(null, skeleton), stretch && 'dnb-space--stretch', inline && 'dnb-space--inline'), ...attributes }); params.className = (0, _clsx.default)(params.className, className); (0, _SkeletonHelper.skeletonDOMAttributes)(params, skeleton); return (0, _jsxRuntime.jsx)(SpaceElement, { element: element, noCollapse: noCollapse, ref: ref, ...params, children: children }); } function Space(props) { return (0, _jsxRuntime.jsx)(SpaceInstance, { ...props }); } Space.ResponsiveContext = _SpaceResponsive.default; (0, _withComponentMarkers.default)(Space, { _supportsSpacingProps: true }); (0, _withComponentMarkers.default)(Space.ResponsiveContext, { _supportsSpacingProps: 'passthrough' }); var _default = exports.default = Space; function SpaceElement({ element, noCollapse, children, ref, ...props }) { const ElementDynamic = element; if (typeof element === 'string') { (0, _componentHelper.validateDOMAttributes)({}, props); } props['ref'] = ref; const component = (0, _jsxRuntime.jsx)(ElementDynamic, { ...props, children: children }); if (noCollapse) { const R = ElementDynamic === 'span' || (0, _SpacingUtils.isInline)(element) ? 'span' : 'div'; return (0, _jsxRuntime.jsx)(R, { className: 'dnb-space--no-collapse' + ((0, _SpacingUtils.isInline)(element) ? " dnb-space--inline" : ""), children: component }); } return component; } //# sourceMappingURL=Space.js.map