UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

52 lines (51 loc) 1.8 kB
"use client"; import React from 'react'; import clsx from 'clsx'; import Context from "../shared/Context.js"; import { validateDOMAttributes, extendPropsWithContext } from "../shared/component-helper.js"; import { applySpacing } from "../components/space/SpacingUtils.js"; import { createSkeletonClass, skeletonDOMAttributes } from "../components/skeleton/SkeletonHelper.js"; import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime"; export const defaultProps = { skeletonMethod: 'font' }; function Element(localProps) { const context = React.useContext(Context); const props = extendPropsWithContext(localProps, defaultProps, { skeleton: context === null || context === void 0 ? void 0 : context.skeleton }); const { className, internalClass, as, ref, skeleton, skeletonMethod, ...rest } = props; const Tag = as; const attributes = rest; const tagClass = internalClass === false ? '' : (internalClass === true ? undefined : internalClass) || (typeof Tag === 'string' ? `dnb-${Tag}` : ''); const internalClassName = clsx(className, createSkeletonClass(skeletonMethod, skeleton, context), !new RegExp(`${tagClass}(\\s|$)`).test(String(className)) && tagClass); const params = applySpacing(attributes, { ...attributes, className: internalClassName }, typeof Tag === 'string' ? `dnb-${Tag}` : null); validateDOMAttributes(null, params); skeletonDOMAttributes(params, skeleton, context); const isFragment = Tag === React.Fragment; if (!isFragment && typeof Tag !== 'function' && ref) { ; params.ref = ref; } if (isFragment) { return _jsx(_Fragment, { children: params.children }); } return _jsx(Tag, { ...params }); } export default Element; //# sourceMappingURL=Element.js.map