UNPKG

@wix/design-system

Version:

@wix/design-system

200 lines (199 loc) 6.7 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = void 0; var _react = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _system = require("@wix/wix-ui-icons-common/system"); var _Arc = _interopRequireDefault(require("./components/Arc")); var _Heading = _interopRequireDefault(require("../Heading")); var _Tooltip = _interopRequireDefault(require("../Tooltip")); var _Loader = require("./Loader.constants"); var _LoaderSt = require("./Loader.st.css.js"); var _jsxFileName = "/home/builduser/work/57e038ea7326c1ec/packages/wix-design-system/dist/cjs/Loader/Loader.tsx"; function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); } var FULL_CIRCLE_ANGLE = 359; var sizeToSuccessIconMap = { tiny: /*#__PURE__*/_react.default.createElement(_system.ToggleOn, { __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 25, columnNumber: 9 } }), small: /*#__PURE__*/_react.default.createElement(_system.CircleLoaderCheckSmall, { __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 26, columnNumber: 10 } }), medium: /*#__PURE__*/_react.default.createElement(_system.CircleLoaderCheck, { __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 27, columnNumber: 11 } }), large: /*#__PURE__*/_react.default.createElement(_system.CircleLoaderCheck, { __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 28, columnNumber: 10 } }) }; var sizeToErrorIconMap = { tiny: /*#__PURE__*/_react.default.createElement(_system.FormFieldError, { __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 32, columnNumber: 9 } }), small: /*#__PURE__*/_react.default.createElement(_system.FormFieldErrorSmall, { __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 33, columnNumber: 10 } }), medium: /*#__PURE__*/_react.default.createElement(_system.FormFieldError, { __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 34, columnNumber: 11 } }), large: /*#__PURE__*/_react.default.createElement(_system.FormFieldError, { __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 35, columnNumber: 10 } }) }; var Loader = _ref => { var { size = 'medium', color = 'blue', text, status = 'loading', statusMessage, dataHook } = _ref; var loader = (0, _react.useMemo)(() => { var successIcon = sizeToSuccessIconMap[size]; var errorIcon = sizeToErrorIconMap[size]; var strokeWidth = _Loader.SIZE_TO_STROKE_WIDTH_MAP[size]; var sizeInPx = _Loader.SIZES_TO_PIXELS_MAP[size]; var shouldShowFullCircle = status !== 'loading'; var lightArcAngle = shouldShowFullCircle ? FULL_CIRCLE_ANGLE : _Loader.SIZE_TO_ARC_ANGLE_MAP[size].light; var darkArcAngle = shouldShowFullCircle ? FULL_CIRCLE_ANGLE : _Loader.SIZE_TO_ARC_ANGLE_MAP[size].dark; return /*#__PURE__*/_react.default.createElement("div", { className: _LoaderSt.classes.arcsContainer, style: { width: "".concat(sizeInPx, "px"), height: "".concat(sizeInPx, "px") }, __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 63, columnNumber: 7 } }, /*#__PURE__*/_react.default.createElement(_Arc.default, { angle: lightArcAngle, className: _LoaderSt.classes.lightArc, strokeWidth: strokeWidth, viewBoxSize: sizeInPx, __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 70, columnNumber: 9 } }), /*#__PURE__*/_react.default.createElement(_Arc.default, { angle: darkArcAngle, className: _LoaderSt.classes.darkArc, strokeWidth: strokeWidth, viewBoxSize: sizeInPx, __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 76, columnNumber: 9 } }), status !== 'loading' && /*#__PURE__*/_react.default.createElement("div", { className: _LoaderSt.classes.statusIndicator, __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 83, columnNumber: 11 } }, status === 'success' && successIcon, status === 'error' && errorIcon)); }, [status, size]); return /*#__PURE__*/_react.default.createElement("div", { className: (0, _LoaderSt.st)(_LoaderSt.classes.root, { size, color, status }), "data-hook": dataHook, "data-size": size, "data-color": color, "data-status": status, __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 93, columnNumber: 5 } }, statusMessage ? /*#__PURE__*/_react.default.createElement(_Tooltip.default, { content: statusMessage, appendTo: "window", dataHook: "loader-tooltip", __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 101, columnNumber: 9 } }, loader) : loader, size !== 'tiny' && text && /*#__PURE__*/_react.default.createElement("div", { className: _LoaderSt.classes.text, __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 112, columnNumber: 9 } }, /*#__PURE__*/_react.default.createElement(_Heading.default, { size: "extraTiny", dataHook: "loader-text", __self: void 0, __source: { fileName: _jsxFileName, lineNumber: 113, columnNumber: 11 } }, text))); }; Loader.propTypes = { dataHook: _propTypes.default.string, size: _propTypes.default.oneOf(['tiny', 'small', 'medium', 'large']), color: _propTypes.default.oneOf(['blue', 'white']), text: _propTypes.default.node, status: _propTypes.default.oneOf(['loading', 'success', 'error']), statusMessage: _propTypes.default.string }; var _default = exports.default = Loader; //# sourceMappingURL=Loader.js.map