@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
103 lines (102 loc) • 2.98 kB
JavaScript
;
"use client";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(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 _jsxRuntime = require("react/jsx-runtime");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
const defaultProps = {};
function SpaceInstance(localProps) {
const context = _react.default.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 spacing = (0, _SpacingUtils.createSpacing)({
top,
right,
bottom,
left,
space
});
const spacingInnerStyle = (0, _SpacingUtils.createSpacing)(props).style;
const params = {
className: (0, _clsx.default)('dnb-space', (0, _SkeletonHelper.createSkeletonClass)(null, skeleton), ...spacing.className, className, stretch && 'dnb-space--stretch', inline && 'dnb-space--inline'),
...attributes
};
const styleObj = {
...style,
...spacingInnerStyle
};
(0, _SkeletonHelper.skeletonDOMAttributes)(params, skeleton);
return (0, _jsxRuntime.jsx)(SpaceElement, {
element: element,
noCollapse: noCollapse,
ref: ref,
style: styleObj,
...params,
children: children
});
}
function Space(props) {
return (0, _jsxRuntime.jsx)(SpaceInstance, {
...props
});
}
(0, _withComponentMarkers.default)(Space, {
_supportsSpacingProps: true
});
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