UNPKG

@itwin/itwinui-react

Version:

A react component library for iTwinUI

65 lines (64 loc) 1.93 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true, }); Object.defineProperty(exports, 'polymorphic', { enumerable: true, get: function () { return polymorphic; }, }); const _interop_require_default = require('@swc/helpers/_/_interop_require_default'); const _interop_require_wildcard = require('@swc/helpers/_/_interop_require_wildcard'); const _react = /*#__PURE__*/ _interop_require_wildcard._(require('react')); const _classnames = /*#__PURE__*/ _interop_require_default._( require('classnames'), ); const _useGlobals = require('../hooks/useGlobals.js'); const _styles = require('../../styles.js'); const _base = (defaultElement) => (className, attrs) => { let Comp = _react.forwardRef(({ as = defaultElement, ...props }, ref) => { props = { ...attrs, ...props, className: getScopedClassName( (0, _classnames.default)(className, attrs?.className, props.className), ), }; let Element = as || 'div'; if ( 'button' === Element || 'a' === Element || ('input' === Element && 'checkbox' === props.type) ) { var _props; (_props = props).tabIndex ?? (_props.tabIndex = 0); } (0, _useGlobals.useGlobals)(); return _react.createElement(Element, { ref: ref, ...props, }); }); if ('development' === process.env.NODE_ENV) Comp.displayName = getDisplayNameFromClass(className); return Comp; }; const polymorphic = new Proxy( {}, { get: (target, prop) => { if ('string' == typeof prop) return _base(prop); return Reflect.get(target, prop); }, }, ); const getDisplayNameFromClass = (str) => { let camel = str.replace(/-([a-z])/g, (g) => g[1].toUpperCase()); return camel.substring(3); }; const getScopedClassName = (className = '') => className .split(' ') .map((c) => (c in _styles.styles ? _styles.styles[c] : c)) .join(' ') || null;