bcche-ui-react
Version:
A component library that can achieve magic effects
389 lines (333 loc) • 13.9 kB
JavaScript
import React, { useState, useMemo, useEffect } from 'react';
import { usePrevious, useSetState } from 'ahooks';
var index = (function (_ref) {
var title = _ref.title;
return /*#__PURE__*/React.createElement("h1", null, title);
});
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
_defineProperty(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function _objectWithoutPropertiesLoose(source, excluded) {
if (source == null) return {};
var target = {};
var sourceKeys = Object.keys(source);
var key, i;
for (i = 0; i < sourceKeys.length; i++) {
key = sourceKeys[i];
if (excluded.indexOf(key) >= 0) continue;
target[key] = source[key];
}
return target;
}
function _objectWithoutProperties(source, excluded) {
if (source == null) return {};
var target = _objectWithoutPropertiesLoose(source, excluded);
var key, i;
if (Object.getOwnPropertySymbols) {
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
for (i = 0; i < sourceSymbolKeys.length; i++) {
key = sourceSymbolKeys[i];
if (excluded.indexOf(key) >= 0) continue;
if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
target[key] = source[key];
}
}
return target;
}
function _slicedToArray(arr, i) {
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
}
function _arrayWithHoles(arr) {
if (Array.isArray(arr)) return arr;
}
function _iterableToArrayLimit(arr, i) {
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
if (_i == null) return;
var _arr = [];
var _n = true;
var _d = false;
var _s, _e;
try {
for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
_arr.push(_s.value);
if (i && _arr.length === i) break;
}
} catch (err) {
_d = true;
_e = err;
} finally {
try {
if (!_n && _i["return"] != null) _i["return"]();
} finally {
if (_d) throw _e;
}
}
return _arr;
}
function _unsupportedIterableToArray(o, minLen) {
if (!o) return;
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
var n = Object.prototype.toString.call(o).slice(8, -1);
if (n === "Object" && o.constructor) n = o.constructor.name;
if (n === "Map" || n === "Set") return Array.from(o);
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
}
function _arrayLikeToArray(arr, len) {
if (len == null || len > arr.length) len = arr.length;
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
return arr2;
}
function _nonIterableRest() {
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
var oneItem = 270;
var CornerSwiper = function CornerSwiper(_ref) {
var current = _ref.current,
children = _ref.children,
_ref$className = _ref.className,
className = _ref$className === void 0 ? '' : _ref$className,
_ref$position = _ref.position,
position = _ref$position === void 0 ? 0.2 : _ref$position,
_ref$rotateX = _ref.rotateX,
rotateX = _ref$rotateX === void 0 ? '0deg' : _ref$rotateX,
_ref$rotateY = _ref.rotateY,
rotateY = _ref$rotateY === void 0 ? '-45deg' : _ref$rotateY,
_ref$defaultCurrent = _ref.defaultCurrent,
defaultCurrent = _ref$defaultCurrent === void 0 ? 0 : _ref$defaultCurrent,
_ref$defaultMargin = _ref.defaultMargin,
defaultMargin = _ref$defaultMargin === void 0 ? true : _ref$defaultMargin,
_ref$perspective = _ref.perspective,
perspective = _ref$perspective === void 0 ? '1000px' : _ref$perspective,
_ref$perspectiveOrigi = _ref.perspectiveOriginX,
perspectiveOriginX = _ref$perspectiveOrigi === void 0 ? '50%' : _ref$perspectiveOrigi,
_ref$perspectiveOrigi2 = _ref.perspectiveOriginY,
perspectiveOriginY = _ref$perspectiveOrigi2 === void 0 ? '50%' : _ref$perspectiveOrigi2;
var _useState = useState(defaultCurrent),
_useState2 = _slicedToArray(_useState, 1),
_currentIndex = _useState2[0];
var currentIndex = current !== null && current !== void 0 ? current : _currentIndex;
var childrenList = useMemo(function () {
var childList = Array.isArray(children) ? children : [children];
if (!defaultMargin) {
return childList;
}
return childList.map(function (child) {
return /*#__PURE__*/React.cloneElement(child, _objectSpread2(_objectSpread2({}, child.props), {}, {
className: "".concat(child.props.className || '', " mg-mr-5")
}));
});
}, [children, defaultMargin]);
var swiperElement = /*#__PURE__*/React.createElement("div", {
className: "mg-h-full mg-flex-row mg-flex mg-flex-nowrap ".concat(className)
}, childrenList);
var translatePercent = currentIndex / childrenList.length;
var positionStr = "".concat((position + translatePercent) * 100, "%");
var element3D = /*#__PURE__*/React.cloneElement(swiperElement, _objectSpread2(_objectSpread2({}, swiperElement.props), {}, {
className: "mg-absolute mg-top-0 mg-left-0 mg-overflow-hidden element-3d ".concat(swiperElement.props.className),
style: {
'--position': positionStr,
'--rotate-x': rotateX,
'--rotate-y': rotateY
}
}));
var element2D = /*#__PURE__*/React.cloneElement(swiperElement, _objectSpread2(_objectSpread2({}, swiperElement.props), {}, {
className: "mg-w-full mg-relative element-2d ".concat(swiperElement.props.className),
style: {
'--position': positionStr,
'--rotate-x': rotateX
}
}));
return /*#__PURE__*/React.createElement("div", {
className: "swiper-container",
style: {
transform: "translatex(".concat(-translatePercent * oneItem * childrenList.length, "px)")
}
}, /*#__PURE__*/React.createElement("div", {
className: "mg-w-full mg-h-full mg-relative corner-swiper",
style: {
perspective: perspective,
perspectiveOrigin: "".concat(perspectiveOriginX, " ").concat(perspectiveOriginY)
}
}, element3D, element2D));
};
var _excluded = ["children", "className"];
var SwiperItem = function SwiperItem(_ref) {
var children = _ref.children,
_ref$className = _ref.className,
className = _ref$className === void 0 ? '' : _ref$className,
rest = _objectWithoutProperties(_ref, _excluded);
return /*#__PURE__*/React.createElement("div", _objectSpread2({
className: "mg-w-full mg-h-full ".concat(className)
}, rest), children);
};
SwiperItem.displayName = 'SwiperItem';
var Cloudy = function Cloudy(_ref) {
var _ref$className = _ref.className,
className = _ref$className === void 0 ? '' : _ref$className;
return /*#__PURE__*/React.createElement("div", {
className: className
}, /*#__PURE__*/React.createElement("div", {
className: 'cloud'
}), /*#__PURE__*/React.createElement("div", {
className: 'cloudx'
}));
};
var Nighty = function Nighty(_ref) {
var _ref$className = _ref.className,
className = _ref$className === void 0 ? '' : _ref$className;
return /*#__PURE__*/React.createElement("div", {
className: className
}, /*#__PURE__*/React.createElement("div", {
className: 'night'
}, /*#__PURE__*/React.createElement("span", {
className: 'moon'
}), /*#__PURE__*/React.createElement("span", {
className: 'spot1'
}), /*#__PURE__*/React.createElement("span", {
className: 'spot2'
}), /*#__PURE__*/React.createElement("ul", null, /*#__PURE__*/React.createElement("li", null), /*#__PURE__*/React.createElement("li", null), /*#__PURE__*/React.createElement("li", null), /*#__PURE__*/React.createElement("li", null), /*#__PURE__*/React.createElement("li", null))));
};
var Rainy = function Rainy(_ref) {
var _ref$className = _ref.className,
className = _ref$className === void 0 ? '' : _ref$className;
return /*#__PURE__*/React.createElement("div", {
className: "rainy ".concat(className)
}, /*#__PURE__*/React.createElement("ul", null, /*#__PURE__*/React.createElement("li", null), /*#__PURE__*/React.createElement("li", null), /*#__PURE__*/React.createElement("li", null), /*#__PURE__*/React.createElement("li", null), /*#__PURE__*/React.createElement("li", null)), /*#__PURE__*/React.createElement("span", {
className: 'rainy-cloud'
}));
};
var Snowy = function Snowy(_ref) {
var _ref$className = _ref.className,
className = _ref$className === void 0 ? '' : _ref$className;
return /*#__PURE__*/React.createElement("div", {
className: "snowy ".concat(className)
}, /*#__PURE__*/React.createElement("ul", null, /*#__PURE__*/React.createElement("li", null), /*#__PURE__*/React.createElement("li", null), /*#__PURE__*/React.createElement("li", null), /*#__PURE__*/React.createElement("li", null), /*#__PURE__*/React.createElement("li", null), /*#__PURE__*/React.createElement("li", null), /*#__PURE__*/React.createElement("li", null), /*#__PURE__*/React.createElement("li", null)), /*#__PURE__*/React.createElement("span", {
className: "snowe"
}), /*#__PURE__*/React.createElement("span", {
className: "snowex"
}), /*#__PURE__*/React.createElement("span", {
className: "stick"
}), /*#__PURE__*/React.createElement("span", {
className: "stick2"
}));
};
var Sunny = function Sunny(_ref) {
var _ref$className = _ref.className,
className = _ref$className === void 0 ? '' : _ref$className;
return /*#__PURE__*/React.createElement("div", {
className: className
}, /*#__PURE__*/React.createElement("div", {
className: "sun"
}), /*#__PURE__*/React.createElement("div", {
className: "sunx"
}));
};
var _WeatherTypeStore;
var WeatherType;
(function (WeatherType) {
WeatherType["sunny"] = "sunny";
WeatherType["cloudy"] = "cloudy";
WeatherType["rainy"] = "rainy";
WeatherType["snowy"] = "snowy";
WeatherType["nighty"] = "nighty";
})(WeatherType || (WeatherType = {}));
var WeatherTypeStore = (_WeatherTypeStore = {}, _defineProperty(_WeatherTypeStore, WeatherType.sunny, {
class: 'weather-sunny',
component: Sunny
}), _defineProperty(_WeatherTypeStore, WeatherType.cloudy, {
class: 'weather-cloudy',
component: Cloudy
}), _defineProperty(_WeatherTypeStore, WeatherType.rainy, {
class: 'weather-rainy',
component: Rainy
}), _defineProperty(_WeatherTypeStore, WeatherType.snowy, {
class: 'weather-snowy',
component: Snowy
}), _defineProperty(_WeatherTypeStore, WeatherType.nighty, {
class: 'weather-nighty',
component: Nighty
}), _WeatherTypeStore);
var Weather = function Weather(_ref) {
var type = _ref.type,
_ref$duration = _ref.duration,
duration = _ref$duration === void 0 ? 3600 : _ref$duration,
iconDuration = _ref.iconDuration,
_ref$className = _ref.className,
className = _ref$className === void 0 ? '' : _ref$className;
var _WeatherTypeStore$typ = WeatherTypeStore[type],
typeClassName = _WeatherTypeStore$typ.class,
Component = _WeatherTypeStore$typ.component;
var preType = usePrevious(type);
var PreComponent = WeatherTypeStore[preType || type].component;
var _useSetState = useSetState({
preClassName: '',
curClassName: ''
}),
_useSetState2 = _slicedToArray(_useSetState, 2),
animates = _useSetState2[0],
setAnimates = _useSetState2[1];
useEffect(function () {
if (!preType) {
return;
} // TODO:use different animations for different weather switches
setAnimates({
preClassName: 'animate__fadeOut',
curClassName: 'animate__fadeIn'
});
}, [preType, type, setAnimates]);
var style = {
'--animate-duration': "".concat(iconDuration !== null && iconDuration !== void 0 ? iconDuration : duration / 2, "ms")
};
return /*#__PURE__*/React.createElement("div", {
className: "weather-container ".concat(typeClassName, " ").concat(className),
style: style
}, preType ? /*#__PURE__*/React.createElement(PreComponent, {
className: "animate__animated ".concat(animates.preClassName)
}) : null, /*#__PURE__*/React.createElement(Component, {
className: "animate__animated ".concat(animates.curClassName)
}));
};
var Loading = function Loading() {
return /*#__PURE__*/React.createElement("div", {
className: "loading-modal-two"
}, /*#__PURE__*/React.createElement("div", {
className: 'loading-modal-loading'
}, /*#__PURE__*/React.createElement("img", {
className: 'loading-modalimg',
src: 'https://pic2.58cdn.com.cn/p1/big/n_v203ba4dd38c3f4ecd8a287001ba30b7e9.jpg'
}), /*#__PURE__*/React.createElement("p", {
className: 'loading-modal-sure'
}, "\u52A0\u8F7D\u4E2D...")));
};
export { CornerSwiper, index as Foo, Loading, SwiperItem, Weather };