UNPKG

@aliretail/react-materials-components

Version:
116 lines (86 loc) 5.35 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.Switch = void 0; var _switch = _interopRequireDefault(require("@alifd/next/lib/switch")); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var React = _interopRequireWildcard(require("react")); var _reactDom = _interopRequireDefault(require("react-dom")); var _next = require("@formily/next"); var _shared = require("../shared"); 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 DEFAULT_WIDTH = 56; var NextSwitchX = function NextSwitchX(props) { var _props$isPreview = props.isPreview, isPreview = _props$isPreview === void 0 ? false : _props$isPreview, _props$readOnly = props.readOnly, readOnly = _props$readOnly === void 0 ? false : _props$readOnly, _props$className = props.className, className = _props$className === void 0 ? '' : _props$className, checkedChildren = props.checkedChildren, unCheckedChildren = props.unCheckedChildren, checked = props.checked; var _React$useState = React.useState(DEFAULT_WIDTH), width = _React$useState[0], setWidth = _React$useState[1]; var blankRef = React.useRef(null); var getWidth = function getWidth() { var offsetWidth = 0; try { var _blankRef$current, _blankRef$current$upd; if (blankRef !== null && blankRef !== void 0 && (_blankRef$current = blankRef.current) !== null && _blankRef$current !== void 0 && (_blankRef$current$upd = _blankRef$current.updater) !== null && _blankRef$current$upd !== void 0 && _blankRef$current$upd.isMounted(blankRef === null || blankRef === void 0 ? void 0 : blankRef.current)) { var _ReactDOM$findDOMNode, _window, _window$getComputedSt2, _childDom$innerText; var childDom = _reactDom["default"] === null || _reactDom["default"] === void 0 ? void 0 : (_ReactDOM$findDOMNode = _reactDom["default"].findDOMNode(blankRef.current)) === null || _ReactDOM$findDOMNode === void 0 ? void 0 : _ReactDOM$findDOMNode.querySelector('.next-switch-children'); var _window$getComputedSt = (_window = window) === null || _window === void 0 ? void 0 : (_window$getComputedSt2 = _window.getComputedStyle) === null || _window$getComputedSt2 === void 0 ? void 0 : _window$getComputedSt2.call(_window, childDom), fontSize = _window$getComputedSt.fontSize; var len = (childDom === null || childDom === void 0 ? void 0 : (_childDom$innerText = childDom.innerText) === null || _childDom$innerText === void 0 ? void 0 : _childDom$innerText.length) || 0; offsetWidth = Number(fontSize.replace(/[^\d]/g, '')) * len; } } catch (e) {} var tempWidth = offsetWidth + 36; return Math.max(tempWidth, DEFAULT_WIDTH); }; // 1.23.6版本以上的fusion使用auto width var isUseAutoWidth = function isUseAutoWidth() { var _window2, _window2$Next; var nextVersion = (_window2 = window) === null || _window2 === void 0 ? void 0 : (_window2$Next = _window2.Next) === null || _window2$Next === void 0 ? void 0 : _window2$Next.version; if (!nextVersion) return false; var nextVersionSplit = nextVersion.split('.'); var versionDes = [1, 23, 6]; for (var i = 0; i < versionDes.length; i++) { var targetVer = versionDes[i]; if (nextVersionSplit[i] > targetVer) { return true; } else if (nextVersionSplit[i] < targetVer) { return false; } } return true; }; React.useEffect(function () { if (blankRef) { var _width = getWidth(); setWidth(_width); } }, [checked, checkedChildren, unCheckedChildren]); var widthCon = isUseAutoWidth() ? { autoWidth: true } : { style: { width: width } }; return /*#__PURE__*/React.createElement(_switch["default"], (0, _extends2["default"])({ ref: blankRef }, props, widthCon, { size: "small", className: (readOnly ? 'aliretail-preview-text' : '') + className, isPreview: isPreview || readOnly })); }; var Switch = (0, _next.connect)({ valueName: 'checked', getProps: _shared.mapStyledProps, getComponent: _shared.mapCustomComponent })(NextSwitchX); exports.Switch = Switch;