UNPKG

zmp-react

Version:

Build full featured iOS & Android apps using ZMP & React

117 lines (94 loc) 4.37 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _react = _interopRequireWildcard(require("react")); var _utils = require("../shared/utils"); var _mixins = require("../shared/mixins"); var _useTooltip = require("../shared/use-tooltip"); var _useTheme = require("../shared/use-theme"); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } var Icon = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) { var theme = (0, _useTheme.useTheme)(); var className = props.className, id = props.id, style = props.style, children = props.children, material = props.material, zmp = props.zmp, icon = props.icon, md = props.md, ios = props.ios, aurora = props.aurora, size = props.size, onClick = props.onClick; var extraAttrs = (0, _utils.getExtraAttrs)(props); var elRef = (0, _react.useRef)(null); (0, _react.useImperativeHandle)(ref, function () { return { el: elRef.current }; }); (0, _useTooltip.useTooltip)(elRef, props); var getClasses = function getClasses() { var classes = { icon: true }; var themeIcon; if (theme && theme.ios) themeIcon = ios;else if (theme && theme.md) themeIcon = md;else if (theme && theme.aurora) themeIcon = aurora; if (themeIcon) { var parts = themeIcon.split(':'); var prop = parts[0]; var value = parts[1]; if (prop === 'material' || prop === 'zmp') { classes['material-icons'] = prop === 'material'; classes['zmp-icons'] = prop === 'zmp'; } if (prop === 'icon') { classes[value] = true; } } else { classes = { icon: true, 'material-icons': material, 'zmp-icons': zmp }; if (icon) classes[icon] = true; } return (0, _utils.classNames)(className, classes, (0, _mixins.colorClasses)(props)); }; var getIconText = function getIconText() { var text = material || zmp; if (md && theme && theme.md && (md.indexOf('material:') >= 0 || md.indexOf('zmp:') >= 0)) { text = md.split(':')[1]; } else if (ios && theme && theme.ios && (ios.indexOf('material:') >= 0 || ios.indexOf('zmp:') >= 0)) { text = ios.split(':')[1]; } else if (aurora && theme && theme.aurora && (aurora.indexOf('material:') >= 0 || aurora.indexOf('zmp:') >= 0)) { text = aurora.split(':')[1]; } return text; }; var sizeComputed = size; if (typeof size === 'number' || parseFloat(size) === size * 1) { sizeComputed = size + "px"; } var handleOnClick = function handleOnClick(e) { (0, _utils.emit)(props, 'click', e); }; return /*#__PURE__*/_react.default.createElement("i", (0, _extends2.default)({ id: id, style: (0, _utils.extend)({ fontSize: sizeComputed, width: sizeComputed, height: sizeComputed }, style), className: getClasses(), ref: elRef, onClick: onClick ? handleOnClick : undefined }, extraAttrs), getIconText(), children); }); Icon.displayName = 'zmp-icon'; var _default = Icon; exports.default = _default;