gui-one-nutui-react-taro
Version:
京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序
1,590 lines • 570 kB
JavaScript
/*!
* gui-one-nutui-react-taro v1.0.1 Sat Nov 19 2022 23:52:10 GMT+0800 (中国标准时间)
* (c) 2022 @jdf2e.
* Released under the MIT License.
*/
(function(global, factory) {
typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("react"), require("@tarojs/taro"), require("react-dom")) : typeof define === "function" && define.amd ? define(["exports", "react", "@tarojs/taro", "react-dom"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory((global.nutui = global.nutui || {}, global.nutui.react = {}), global.React, global.Taro, global.ReactDOM));
})(this, function(exports2, React, Taro, ReactDOM) {
"use strict";
function _interopDefaultLegacy(e2) {
return e2 && typeof e2 === "object" && "default" in e2 ? e2 : { "default": e2 };
}
function _interopNamespace(e2) {
if (e2 && e2.__esModule)
return e2;
var n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
if (e2) {
Object.keys(e2).forEach(function(k) {
if (k !== "default") {
var d = Object.getOwnPropertyDescriptor(e2, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: function() {
return e2[k];
}
});
}
});
}
n["default"] = e2;
return Object.freeze(n);
}
var React__default = /* @__PURE__ */ _interopDefaultLegacy(React);
var React__namespace = /* @__PURE__ */ _interopNamespace(React);
var Taro__default = /* @__PURE__ */ _interopDefaultLegacy(Taro);
var ReactDOM__default = /* @__PURE__ */ _interopDefaultLegacy(ReactDOM);
function getAugmentedNamespace(n) {
if (n.__esModule)
return n;
var a = Object.defineProperty({}, "__esModule", { value: true });
Object.keys(n).forEach(function(k) {
var d = Object.getOwnPropertyDescriptor(n, k);
Object.defineProperty(a, k, d.get ? d : {
enumerable: true,
get: function() {
return n[k];
}
});
});
return a;
}
var classname = { exports: {} };
var classname_production_min = {};
function r(r2) {
function e2(e3, i, a, o) {
var f = i ? t + e3 + r2.e + i : t + e3, v = f;
if (a) {
var u = " " + v + r2.m;
for (var s in a)
if (a.hasOwnProperty(s)) {
var p = a[s];
true === p ? v += u + s : p && (v += u + s + n + p);
}
}
if (void 0 !== o)
for (var c = 0, l = o.length; c < l; c++) {
var y = o[c];
if (y && "string" == typeof y.valueOf())
for (var g = y.valueOf().split(" "), d = 0; d < g.length; d++) {
var h = g[d];
h !== f && (v += " " + h);
}
}
return v;
}
var t = r2.n || "", n = r2.v || r2.m;
return function(r3, t2) {
return function(n2, i, a) {
return "string" == typeof n2 ? Array.isArray(i) ? e2(r3, n2, void 0, i) : e2(r3, n2, i, a) : e2(r3, t2, n2, i);
};
};
}
Object.defineProperty(classname_production_min, "__esModule", { value: true });
var e = r({ e: "-", m: "_" });
classname_production_min.cn = e, classname_production_min.withNaming = r;
{
classname.exports = classname_production_min;
}
const cn = classname.exports.withNaming({ n: "nut-", e: "__", m: "--", v: "-" });
const defaultProps$1o = {
name: "",
size: "",
classPrefix: "nut-icon",
fontClassName: "nutui-iconfont",
color: "",
tag: "i",
onClick: (e2) => {
},
className: ""
};
function pxCheck$3(value) {
return Number.isNaN(Number(value)) ? String(value) : `${value}px`;
}
function Icon$1(props) {
const {
name,
size,
classPrefix,
color,
tag,
children,
className,
fontClassName,
style,
onClick,
...rest
} = {
...defaultProps$1o,
...props
};
const isImage = name ? name.indexOf("/") !== -1 : false;
const type = isImage ? "img" : tag;
const b2 = cn("icon");
const handleClick2 = (e2) => {
if (onClick) {
onClick(e2);
}
};
const hasSrc = () => {
if (isImage)
return { src: name };
return {};
};
return React__default["default"].createElement(
type,
{
className: isImage ? `${b2("img")} ${className || ""} ` : `${fontClassName} ${b2(null)} ${classPrefix}-${name} ${className || ""}`,
style: {
color,
fontSize: pxCheck$3(size),
width: pxCheck$3(size),
height: pxCheck$3(size),
...style
},
...rest,
onClick: handleClick2,
...hasSrc()
},
children
);
}
Icon$1.defaultProps = defaultProps$1o;
Icon$1.displayName = "NutIcon";
const ComponentDefaults = {
iconClassPrefix: "nut-icon",
iconFontClassName: "nutui-iconfont"
};
const defaultProps$1n = {
...ComponentDefaults,
className: "",
color: "",
shape: "round",
plain: false,
loading: false,
disabled: false,
type: "default",
size: "normal",
block: false,
icon: "",
style: {},
children: void 0,
onClick: (e2) => {
}
};
const Button = (props) => {
const {
color,
shape,
plain,
loading,
disabled,
type,
size,
block,
icon,
children,
onClick,
className,
style,
iconClassPrefix,
iconFontClassName,
...rest
} = {
...defaultProps$1n,
...props
};
const getStyle = React.useCallback(() => {
const style2 = {};
if (color) {
if (plain) {
style2.color = color;
style2.background = "#fff";
if (!(color == null ? void 0 : color.includes("gradient"))) {
style2.borderColor = color;
}
} else {
style2.color = "#fff";
style2.background = color;
}
}
return style2;
}, [color, plain]);
const classes = React.useCallback(() => {
const prefixCls = "nut-button";
return [
prefixCls,
`${type ? `${prefixCls}--${type}` : ""}`,
`${size ? `${prefixCls}--${size}` : ""}`,
`${shape ? `${prefixCls}--${shape}` : ""}`,
`${plain ? `${prefixCls}--plain` : ""}`,
`${block ? `${prefixCls}--block` : ""}`,
`${disabled ? `${prefixCls}--disabled` : ""}`,
`${loading ? `${prefixCls}--loading` : ""}`
].filter(Boolean).join(" ");
}, [block, disabled, loading, plain, shape, size, type]);
const [btnName, setBtnName] = React.useState(classes());
const [btnStyle, setBtnStyle] = React.useState(getStyle());
React.useEffect(() => {
setBtnName(classes());
setBtnStyle(getStyle());
}, [
className,
color,
shape,
plain,
loading,
disabled,
style,
type,
size,
block,
icon,
children,
onClick,
classes,
getStyle
]);
const handleClick2 = (e2) => {
if (!loading && !disabled && onClick) {
onClick(e2);
}
};
return /* @__PURE__ */ React__default["default"].createElement("button", {
className: `${btnName} ${className}`,
style: { ...btnStyle, ...style },
...rest,
onClick: (e2) => handleClick2(e2)
}, /* @__PURE__ */ React__default["default"].createElement("div", {
className: "nut-button__warp",
style: getStyle()
}, loading && /* @__PURE__ */ React__default["default"].createElement(Icon$1, {
classPrefix: iconClassPrefix,
fontClassName: iconFontClassName,
name: "loading"
}), !loading && icon ? /* @__PURE__ */ React__default["default"].createElement(Icon$1, {
classPrefix: iconClassPrefix,
fontClassName: iconFontClassName,
name: icon
}) : "", children && /* @__PURE__ */ React__default["default"].createElement("div", {
className: icon || loading ? "text" : ""
}, children)));
};
Button.defaultProps = defaultProps$1n;
Button.displayName = "NutButton";
const defaultProps$1m = {
...ComponentDefaults,
title: null,
subTitle: null,
desc: "",
descTextAlign: "right",
isLink: false,
icon: "",
roundRadius: "6px",
url: "",
to: "",
replace: false,
center: false,
size: "",
className: "",
iconSlot: null,
linkSlot: null,
click: (event) => {
},
onClick: (event) => {
}
};
const Cell = (props) => {
const {
click,
onClick,
title,
subTitle,
desc,
descTextAlign,
isLink,
icon,
roundRadius,
url,
to: to2,
replace,
center,
size,
className,
iconSlot,
linkSlot,
iconClassPrefix,
iconFontClassName,
...rest
} = {
...defaultProps$1m,
...props
};
const b2 = cn("cell");
const handleClick2 = (event) => {
onClick(event);
const link = to2 || url;
replace ? Taro__default["default"].redirectTo({ url: link }) : Taro__default["default"].navigateTo({ url: link });
};
const baseStyle = {
borderRadius: Number.isNaN(Number(roundRadius)) ? String(roundRadius) : `${roundRadius}px`
};
const styles = title || subTitle || icon ? {} : {
textAlign: descTextAlign,
flex: 1
};
return /* @__PURE__ */ React__default["default"].createElement("div", {
className: `${b2(
{ clickable: !!(isLink || to2), center, large: size === "large" },
[className]
)} `,
onClick: (event) => handleClick2(event),
style: baseStyle,
...rest
}, icon || iconSlot ? /* @__PURE__ */ React__default["default"].createElement("div", {
className: b2("icon")
}, iconSlot || (icon ? /* @__PURE__ */ React__default["default"].createElement(Icon$1, {
classPrefix: iconClassPrefix,
fontClassName: iconFontClassName,
name: icon,
className: "icon"
}) : null)) : null, title || subTitle ? /* @__PURE__ */ React__default["default"].createElement("div", {
className: `${b2("title")}`
}, title ? /* @__PURE__ */ React__default["default"].createElement("div", {
className: b2("maintitle")
}, title) : null, subTitle ? /* @__PURE__ */ React__default["default"].createElement("div", {
className: b2("subtitle")
}, subTitle) : null) : null, desc ? /* @__PURE__ */ React__default["default"].createElement("div", {
className: b2("value", {
alone: !title && !subTitle
}),
style: styles
}, desc) : null, !linkSlot && (isLink || to2) ? /* @__PURE__ */ React__default["default"].createElement(Icon$1, {
classPrefix: iconClassPrefix,
fontClassName: iconFontClassName,
name: "right",
className: b2("link")
}) : linkSlot);
};
Cell.defaultProps = defaultProps$1m;
Cell.displayName = "NutCell";
const defaultProps$1l = {
title: "",
desc: "",
className: "",
titleSlot: null,
descSlot: null
};
const CellGroup = (props) => {
const { children, className, title, desc, titleSlot, descSlot } = {
...defaultProps$1l,
...props
};
const b2 = cn("cell-group");
return /* @__PURE__ */ React__default["default"].createElement("div", {
className: b2(null, [className])
}, titleSlot || /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, title ? /* @__PURE__ */ React__default["default"].createElement("div", {
className: b2("title")
}, title) : null), descSlot || /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, desc ? /* @__PURE__ */ React__default["default"].createElement("div", {
className: b2("desc")
}, desc) : null), /* @__PURE__ */ React__default["default"].createElement("div", {
className: b2("wrap")
}, children));
};
CellGroup.defaultProps = defaultProps$1l;
CellGroup.displayName = "NutCellGroup";
var classnames = { exports: {} };
/*!
Copyright (c) 2018 Jed Watson.
Licensed under the MIT License (MIT), see
http://jedwatson.github.io/classnames
*/
(function(module2) {
(function() {
var hasOwn = {}.hasOwnProperty;
function classNames2() {
var classes = [];
for (var i = 0; i < arguments.length; i++) {
var arg = arguments[i];
if (!arg)
continue;
var argType = typeof arg;
if (argType === "string" || argType === "number") {
classes.push(arg);
} else if (Array.isArray(arg)) {
if (arg.length) {
var inner = classNames2.apply(null, arg);
if (inner) {
classes.push(inner);
}
}
} else if (argType === "object") {
if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes("[native code]")) {
classes.push(arg.toString());
continue;
}
for (var key in arg) {
if (hasOwn.call(arg, key) && arg[key]) {
classes.push(key);
}
}
}
}
return classes.join(" ");
}
if (module2.exports) {
classNames2.default = classNames2;
module2.exports = classNames2;
} else {
window.classNames = classNames2;
}
})();
})(classnames);
var classNames = classnames.exports;
const defaultOverlayProps = {
zIndex: 2e3,
duration: 0.3,
overlayClass: "",
closeOnClickOverlay: true,
visible: false,
lockScroll: true,
overlayStyle: {}
};
const Overlay = (props) => {
const {
children,
zIndex,
duration,
overlayClass,
closeOnClickOverlay,
visible,
lockScroll,
overlayStyle,
...rest
} = {
...defaultOverlayProps,
...props
};
const [show, setShow] = React.useState(visible);
const renderRef = React.useRef(true);
const intervalRef = React.useRef(0);
React.useEffect(() => {
visible && setShow(visible);
lock();
}, [visible]);
React.useEffect(() => {
return () => {
clearTimeout(intervalRef.current);
document.body.classList.remove("nut-overflow-hidden");
};
}, []);
const b2 = cn("overlay");
const classes = classNames(
{
"overlay-fade-leave-active": !renderRef.current && !visible,
"overlay-fade-enter-active": visible,
"first-render": renderRef.current && !visible,
"hidden-render": !visible
},
overlayClass,
b2("")
);
const styles = {
zIndex,
animationDuration: `${props.duration}s`,
...overlayStyle
};
const lock = () => {
if (lockScroll && visible) {
document.body.classList.add("nut-overflow-hidden");
} else {
document.body.classList.remove("nut-overflow-hidden");
}
};
const handleClick2 = (e2) => {
if (closeOnClickOverlay) {
props.onClick && props.onClick(e2);
renderRef.current = false;
const id = setTimeout(() => {
setShow(!visible);
}, duration * 1e3 * 0.8);
intervalRef.current = id;
}
};
return /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, /* @__PURE__ */ React__default["default"].createElement("div", {
className: classes,
style: styles,
...rest,
onClick: handleClick2
}, children));
};
Overlay.defaultProps = defaultOverlayProps;
Overlay.displayName = "NutOverlay";
function _extends$3() {
_extends$3 = Object.assign ? Object.assign.bind() : function(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
return _extends$3.apply(this, arguments);
}
function _objectWithoutPropertiesLoose$3(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 _setPrototypeOf(o, p) {
_setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o2, p2) {
o2.__proto__ = p2;
return o2;
};
return _setPrototypeOf(o, p);
}
function _inheritsLoose(subClass, superClass) {
subClass.prototype = Object.create(superClass.prototype);
subClass.prototype.constructor = subClass;
_setPrototypeOf(subClass, superClass);
}
function hasClass(element, className) {
if (element.classList)
return !!className && element.classList.contains(className);
return (" " + (element.className.baseVal || element.className) + " ").indexOf(" " + className + " ") !== -1;
}
function addClass(element, className) {
if (element.classList)
element.classList.add(className);
else if (!hasClass(element, className))
if (typeof element.className === "string")
element.className = element.className + " " + className;
else
element.setAttribute("class", (element.className && element.className.baseVal || "") + " " + className);
}
function replaceClassName(origClass, classToRemove) {
return origClass.replace(new RegExp("(^|\\s)" + classToRemove + "(?:\\s|$)", "g"), "$1").replace(/\s+/g, " ").replace(/^\s*|\s*$/g, "");
}
function removeClass$1(element, className) {
if (element.classList) {
element.classList.remove(className);
} else if (typeof element.className === "string") {
element.className = replaceClassName(element.className, className);
} else {
element.setAttribute("class", replaceClassName(element.className && element.className.baseVal || "", className));
}
}
var config$1 = {
disabled: false
};
var TransitionGroupContext = React__default["default"].createContext(null);
var forceReflow = function forceReflow2(node) {
return node.scrollTop;
};
var UNMOUNTED = "unmounted";
var EXITED = "exited";
var ENTERING = "entering";
var ENTERED = "entered";
var EXITING = "exiting";
var Transition = /* @__PURE__ */ function(_React$Component) {
_inheritsLoose(Transition2, _React$Component);
function Transition2(props, context) {
var _this;
_this = _React$Component.call(this, props, context) || this;
var parentGroup = context;
var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;
var initialStatus;
_this.appearStatus = null;
if (props.in) {
if (appear) {
initialStatus = EXITED;
_this.appearStatus = ENTERING;
} else {
initialStatus = ENTERED;
}
} else {
if (props.unmountOnExit || props.mountOnEnter) {
initialStatus = UNMOUNTED;
} else {
initialStatus = EXITED;
}
}
_this.state = {
status: initialStatus
};
_this.nextCallback = null;
return _this;
}
Transition2.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {
var nextIn = _ref.in;
if (nextIn && prevState.status === UNMOUNTED) {
return {
status: EXITED
};
}
return null;
};
var _proto = Transition2.prototype;
_proto.componentDidMount = function componentDidMount() {
this.updateStatus(true, this.appearStatus);
};
_proto.componentDidUpdate = function componentDidUpdate(prevProps) {
var nextStatus = null;
if (prevProps !== this.props) {
var status = this.state.status;
if (this.props.in) {
if (status !== ENTERING && status !== ENTERED) {
nextStatus = ENTERING;
}
} else {
if (status === ENTERING || status === ENTERED) {
nextStatus = EXITING;
}
}
}
this.updateStatus(false, nextStatus);
};
_proto.componentWillUnmount = function componentWillUnmount() {
this.cancelNextCallback();
};
_proto.getTimeouts = function getTimeouts() {
var timeout = this.props.timeout;
var exit, enter, appear;
exit = enter = appear = timeout;
if (timeout != null && typeof timeout !== "number") {
exit = timeout.exit;
enter = timeout.enter;
appear = timeout.appear !== void 0 ? timeout.appear : enter;
}
return {
exit,
enter,
appear
};
};
_proto.updateStatus = function updateStatus(mounting, nextStatus) {
if (mounting === void 0) {
mounting = false;
}
if (nextStatus !== null) {
this.cancelNextCallback();
if (nextStatus === ENTERING) {
if (this.props.unmountOnExit || this.props.mountOnEnter) {
var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM__default["default"].findDOMNode(this);
if (node)
forceReflow(node);
}
this.performEnter(mounting);
} else {
this.performExit();
}
} else if (this.props.unmountOnExit && this.state.status === EXITED) {
this.setState({
status: UNMOUNTED
});
}
};
_proto.performEnter = function performEnter(mounting) {
var _this2 = this;
var enter = this.props.enter;
var appearing = this.context ? this.context.isMounting : mounting;
var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM__default["default"].findDOMNode(this), appearing], maybeNode = _ref2[0], maybeAppearing = _ref2[1];
var timeouts2 = this.getTimeouts();
var enterTimeout = appearing ? timeouts2.appear : timeouts2.enter;
if (!mounting && !enter || config$1.disabled) {
this.safeSetState({
status: ENTERED
}, function() {
_this2.props.onEntered(maybeNode);
});
return;
}
this.props.onEnter(maybeNode, maybeAppearing);
this.safeSetState({
status: ENTERING
}, function() {
_this2.props.onEntering(maybeNode, maybeAppearing);
_this2.onTransitionEnd(enterTimeout, function() {
_this2.safeSetState({
status: ENTERED
}, function() {
_this2.props.onEntered(maybeNode, maybeAppearing);
});
});
});
};
_proto.performExit = function performExit() {
var _this3 = this;
var exit = this.props.exit;
var timeouts2 = this.getTimeouts();
var maybeNode = this.props.nodeRef ? void 0 : ReactDOM__default["default"].findDOMNode(this);
if (!exit || config$1.disabled) {
this.safeSetState({
status: EXITED
}, function() {
_this3.props.onExited(maybeNode);
});
return;
}
this.props.onExit(maybeNode);
this.safeSetState({
status: EXITING
}, function() {
_this3.props.onExiting(maybeNode);
_this3.onTransitionEnd(timeouts2.exit, function() {
_this3.safeSetState({
status: EXITED
}, function() {
_this3.props.onExited(maybeNode);
});
});
});
};
_proto.cancelNextCallback = function cancelNextCallback() {
if (this.nextCallback !== null) {
this.nextCallback.cancel();
this.nextCallback = null;
}
};
_proto.safeSetState = function safeSetState(nextState, callback) {
callback = this.setNextCallback(callback);
this.setState(nextState, callback);
};
_proto.setNextCallback = function setNextCallback(callback) {
var _this4 = this;
var active = true;
this.nextCallback = function(event) {
if (active) {
active = false;
_this4.nextCallback = null;
callback(event);
}
};
this.nextCallback.cancel = function() {
active = false;
};
return this.nextCallback;
};
_proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {
this.setNextCallback(handler);
var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM__default["default"].findDOMNode(this);
var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;
if (!node || doesNotHaveTimeoutOrListener) {
setTimeout(this.nextCallback, 0);
return;
}
if (this.props.addEndListener) {
var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback], maybeNode = _ref3[0], maybeNextCallback = _ref3[1];
this.props.addEndListener(maybeNode, maybeNextCallback);
}
if (timeout != null) {
setTimeout(this.nextCallback, timeout);
}
};
_proto.render = function render() {
var status = this.state.status;
if (status === UNMOUNTED) {
return null;
}
var _this$props = this.props, children = _this$props.children;
_this$props.in;
_this$props.mountOnEnter;
_this$props.unmountOnExit;
_this$props.appear;
_this$props.enter;
_this$props.exit;
_this$props.timeout;
_this$props.addEndListener;
_this$props.onEnter;
_this$props.onEntering;
_this$props.onEntered;
_this$props.onExit;
_this$props.onExiting;
_this$props.onExited;
_this$props.nodeRef;
var childProps = _objectWithoutPropertiesLoose$3(_this$props, ["children", "in", "mountOnEnter", "unmountOnExit", "appear", "enter", "exit", "timeout", "addEndListener", "onEnter", "onEntering", "onEntered", "onExit", "onExiting", "onExited", "nodeRef"]);
return /* @__PURE__ */ React__default["default"].createElement(TransitionGroupContext.Provider, {
value: null
}, typeof children === "function" ? children(status, childProps) : React__default["default"].cloneElement(React__default["default"].Children.only(children), childProps));
};
return Transition2;
}(React__default["default"].Component);
Transition.contextType = TransitionGroupContext;
Transition.propTypes = {};
function noop$2() {
}
Transition.defaultProps = {
in: false,
mountOnEnter: false,
unmountOnExit: false,
appear: false,
enter: true,
exit: true,
onEnter: noop$2,
onEntering: noop$2,
onEntered: noop$2,
onExit: noop$2,
onExiting: noop$2,
onExited: noop$2
};
Transition.UNMOUNTED = UNMOUNTED;
Transition.EXITED = EXITED;
Transition.ENTERING = ENTERING;
Transition.ENTERED = ENTERED;
Transition.EXITING = EXITING;
var Transition$1 = Transition;
var _addClass = function addClass$1(node, classes) {
return node && classes && classes.split(" ").forEach(function(c) {
return addClass(node, c);
});
};
var removeClass = function removeClass2(node, classes) {
return node && classes && classes.split(" ").forEach(function(c) {
return removeClass$1(node, c);
});
};
var CSSTransition = /* @__PURE__ */ function(_React$Component) {
_inheritsLoose(CSSTransition2, _React$Component);
function CSSTransition2() {
var _this;
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;
_this.appliedClasses = {
appear: {},
enter: {},
exit: {}
};
_this.onEnter = function(maybeNode, maybeAppearing) {
var _this$resolveArgument = _this.resolveArguments(maybeNode, maybeAppearing), node = _this$resolveArgument[0], appearing = _this$resolveArgument[1];
_this.removeClasses(node, "exit");
_this.addClass(node, appearing ? "appear" : "enter", "base");
if (_this.props.onEnter) {
_this.props.onEnter(maybeNode, maybeAppearing);
}
};
_this.onEntering = function(maybeNode, maybeAppearing) {
var _this$resolveArgument2 = _this.resolveArguments(maybeNode, maybeAppearing), node = _this$resolveArgument2[0], appearing = _this$resolveArgument2[1];
var type = appearing ? "appear" : "enter";
_this.addClass(node, type, "active");
if (_this.props.onEntering) {
_this.props.onEntering(maybeNode, maybeAppearing);
}
};
_this.onEntered = function(maybeNode, maybeAppearing) {
var _this$resolveArgument3 = _this.resolveArguments(maybeNode, maybeAppearing), node = _this$resolveArgument3[0], appearing = _this$resolveArgument3[1];
var type = appearing ? "appear" : "enter";
_this.removeClasses(node, type);
_this.addClass(node, type, "done");
if (_this.props.onEntered) {
_this.props.onEntered(maybeNode, maybeAppearing);
}
};
_this.onExit = function(maybeNode) {
var _this$resolveArgument4 = _this.resolveArguments(maybeNode), node = _this$resolveArgument4[0];
_this.removeClasses(node, "appear");
_this.removeClasses(node, "enter");
_this.addClass(node, "exit", "base");
if (_this.props.onExit) {
_this.props.onExit(maybeNode);
}
};
_this.onExiting = function(maybeNode) {
var _this$resolveArgument5 = _this.resolveArguments(maybeNode), node = _this$resolveArgument5[0];
_this.addClass(node, "exit", "active");
if (_this.props.onExiting) {
_this.props.onExiting(maybeNode);
}
};
_this.onExited = function(maybeNode) {
var _this$resolveArgument6 = _this.resolveArguments(maybeNode), node = _this$resolveArgument6[0];
_this.removeClasses(node, "exit");
_this.addClass(node, "exit", "done");
if (_this.props.onExited) {
_this.props.onExited(maybeNode);
}
};
_this.resolveArguments = function(maybeNode, maybeAppearing) {
return _this.props.nodeRef ? [_this.props.nodeRef.current, maybeNode] : [maybeNode, maybeAppearing];
};
_this.getClassNames = function(type) {
var classNames2 = _this.props.classNames;
var isStringClassNames = typeof classNames2 === "string";
var prefix2 = isStringClassNames && classNames2 ? classNames2 + "-" : "";
var baseClassName = isStringClassNames ? "" + prefix2 + type : classNames2[type];
var activeClassName = isStringClassNames ? baseClassName + "-active" : classNames2[type + "Active"];
var doneClassName = isStringClassNames ? baseClassName + "-done" : classNames2[type + "Done"];
return {
baseClassName,
activeClassName,
doneClassName
};
};
return _this;
}
var _proto = CSSTransition2.prototype;
_proto.addClass = function addClass2(node, type, phase) {
var className = this.getClassNames(type)[phase + "ClassName"];
var _this$getClassNames = this.getClassNames("enter"), doneClassName = _this$getClassNames.doneClassName;
if (type === "appear" && phase === "done" && doneClassName) {
className += " " + doneClassName;
}
if (phase === "active") {
if (node)
forceReflow(node);
}
if (className) {
this.appliedClasses[type][phase] = className;
_addClass(node, className);
}
};
_proto.removeClasses = function removeClasses(node, type) {
var _this$appliedClasses$ = this.appliedClasses[type], baseClassName = _this$appliedClasses$.base, activeClassName = _this$appliedClasses$.active, doneClassName = _this$appliedClasses$.done;
this.appliedClasses[type] = {};
if (baseClassName) {
removeClass(node, baseClassName);
}
if (activeClassName) {
removeClass(node, activeClassName);
}
if (doneClassName) {
removeClass(node, doneClassName);
}
};
_proto.render = function render() {
var _this$props = this.props;
_this$props.classNames;
var props = _objectWithoutPropertiesLoose$3(_this$props, ["classNames"]);
return /* @__PURE__ */ React__default["default"].createElement(Transition$1, _extends$3({}, props, {
onEnter: this.onEnter,
onEntered: this.onEntered,
onEntering: this.onEntering,
onExit: this.onExit,
onExiting: this.onExiting,
onExited: this.onExited
}));
};
return CSSTransition2;
}(React__default["default"].Component);
CSSTransition.defaultProps = {
classNames: ""
};
CSSTransition.propTypes = {};
var CSSTransition$1 = CSSTransition;
const defaultProps$1k = {
...ComponentDefaults,
position: "center",
transition: "",
style: {},
popClass: "",
closeable: false,
closeIconPosition: "top-right",
closeIcon: "close",
destroyOnClose: true,
teleport: null,
overlay: true,
round: false,
onOpen: () => {
},
onClose: () => {
},
onClick: (e2) => {
},
onOpened: (e2) => {
},
onClosed: (e2) => {
},
onClickOverlay: (e2) => {
},
onClickCloseIcon: (e2) => {
},
...defaultOverlayProps
};
let _zIndex = 2e3;
const Popup = (props) => {
const {
children,
visible,
overlay,
closeOnClickOverlay,
overlayStyle,
overlayClass,
zIndex,
lockScroll,
duration,
closeable,
closeIconPosition,
closeIcon,
style,
transition,
round,
position,
popClass,
className,
destroyOnClose,
teleport,
onOpen,
onClose,
onClickOverlay,
onClickCloseIcon,
onOpened,
onClosed,
onClick,
iconClassPrefix,
iconFontClassName
} = props;
const [index, setIndex] = React.useState(zIndex || _zIndex);
const [innerVisible, setInnerVisible] = React.useState(visible);
const [showChildren, setShowChildren] = React.useState(true);
const [transitionName, setTransitionName] = React.useState("");
const b2 = cn("popup");
const baseStyle = {
zIndex: index,
animationDuration: `${duration}s`
};
const overlayStyles = {
...overlayStyle,
...baseStyle
};
const popStyles = {
...style,
...baseStyle
};
const classes = classNames(
{
round,
[`popup-${position}`]: true,
[`${popClass}`]: true,
[`${className}`]: true
},
b2("")
);
const closeClasses = classNames({
"nutui-popup__close-icon": true,
[`nutui-popup__close-icon--${closeIconPosition}`]: true
});
const open = () => {
if (!innerVisible) {
setInnerVisible(true);
setIndex(++_zIndex);
}
if (destroyOnClose) {
setShowChildren(true);
}
onOpen && onOpen();
};
const close = () => {
if (innerVisible) {
setInnerVisible(false);
if (destroyOnClose) {
setTimeout(() => {
setShowChildren(false);
onClose && onClose();
}, Number(duration) * 1e3);
}
}
};
const onHandleClickOverlay = (e2) => {
if (closeOnClickOverlay) {
onClickOverlay && onClickOverlay(e2);
close();
}
};
const onHandleClick = (e2) => {
onClick && onClick(e2);
};
const onHandleClickCloseIcon = (e2) => {
onClickCloseIcon && onClickCloseIcon(e2);
close();
};
const onHandleOpened = (e2) => {
onOpened && onOpened(e2);
};
const onHandleClosed = (e2) => {
onClosed && onClosed(e2);
};
const resolveContainer = (getContainer) => {
const container = typeof getContainer === "function" ? getContainer() : getContainer;
return container || document.body;
};
const renderToContainer = (getContainer, node) => {
if (getContainer) {
const container = resolveContainer(getContainer);
return ReactDOM.createPortal(node, container);
}
return node;
};
const renderPop = () => {
return /* @__PURE__ */ React__default["default"].createElement(CSSTransition$1, {
classNames: transitionName,
unmountOnExit: true,
timeout: 500,
in: innerVisible,
onEntered: onHandleOpened,
onExited: onHandleClosed
}, /* @__PURE__ */ React__default["default"].createElement("div", {
style: popStyles,
className: classes,
onClick: onHandleClick
}, showChildren ? children : "", closeable ? /* @__PURE__ */ React__default["default"].createElement("div", {
className: closeClasses,
onClick: onHandleClickCloseIcon
}, /* @__PURE__ */ React__default["default"].createElement(Icon$1, {
classPrefix: iconClassPrefix,
fontClassName: iconFontClassName,
name: closeIcon,
size: "12px"
})) : ""));
};
const renderNode = () => {
return /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, overlay ? /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, /* @__PURE__ */ React__default["default"].createElement(Overlay, {
style: overlayStyles,
overlayClass,
visible: innerVisible,
closeOnClickOverlay,
zIndex,
lockScroll,
duration,
onClick: onHandleClickOverlay
}), renderPop()) : /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, renderPop()));
};
React.useEffect(() => {
visible && open();
!visible && close();
}, [visible]);
React.useEffect(() => {
setTransitionName(transition || `popup-slide-${position}`);
}, [position]);
return /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, renderToContainer(teleport, renderNode()));
};
Popup.defaultProps = defaultProps$1k;
Popup.displayName = "NutPopup";
const zhCN = {
save: "\u4FDD\u5B58",
confirm: "\u786E\u8BA4",
cancel: "\u53D6\u6D88",
done: "\u5B8C\u6210",
noData: "\u6682\u65E0\u6570\u636E",
placeholder: "\u8BF7\u8F93\u5165\u5185\u5BB9",
select: "\u8BF7\u9009\u62E9",
video: {
errorTip: "\u89C6\u9891\u52A0\u8F7D\u5931\u8D25",
clickRetry: "\u70B9\u51FB\u91CD\u8BD5"
},
fixednav: {
activeText: "\u6536\u8D77\u5BFC\u822A",
unActiveText: "\u5FEB\u901F\u5BFC\u822A"
},
infiniteloading: {
pullRefreshText: "\u677E\u5F00\u5237\u65B0",
loadText: "\u52A0\u8F7D\u4E2D\u2026\u2026",
loadMoreText: "\u54CE\u5440\uFF0C\u8FD9\u91CC\u662F\u5E95\u90E8\u4E86\u5566"
},
pagination: {
prev: "\u4E0A\u4E00\u9875",
next: "\u4E0B\u4E00\u9875"
},
range: {
rangeText: "\u4E0D\u5728\u8BE5\u533A\u95F4\u5185"
},
calendaritem: {
weekdays: ["\u65E5", "\u4E00", "\u4E8C", "\u4E09", "\u56DB", "\u4E94", "\u516D"],
end: "\u7ED3\u675F",
start: "\u5F00\u59CB",
title: "\u65E5\u5386\u9009\u62E9",
monthTitle: (year, month) => `${year}\u5E74${month}\u6708`,
today: "\u4ECA\u5929",
loadPreviousMonth: "\u52A0\u8F7D\u4E0A\u4E00\u4E2A\u6708",
noEarlierMonth: "\u6CA1\u6709\u66F4\u65E9\u6708\u4EFD"
},
shortpassword: {
title: "\u8BF7\u8F93\u5165\u5BC6\u7801",
desc: "\u60A8\u4F7F\u7528\u4E86\u865A\u62DF\u8D44\u4EA7\uFF0C\u8BF7\u8FDB\u884C\u9A8C\u8BC1",
tips: "\u5FD8\u8BB0\u5BC6\u7801"
},
uploader: {
ready: "\u51C6\u5907\u5B8C\u6210",
readyUpload: "\u51C6\u5907\u4E0A\u4F20",
waitingUpload: "\u7B49\u5F85\u4E0A\u4F20",
uploading: "\u4E0A\u4F20\u4E2D...",
success: "\u4E0A\u4F20\u6210\u529F",
error: "\u4E0A\u4F20\u5931\u8D25",
deleteWord: "\u7528\u6237\u963B\u6B62\u4E86\u5220\u9664\uFF01"
},
countdown: {
day: "\u5929",
hour: "\u65F6",
minute: "\u5206",
second: "\u79D2"
},
address: {
selectRegion: "\u8BF7\u9009\u62E9\u6240\u5728\u5730\u533A",
deliveryTo: "\u914D\u9001\u81F3",
chooseAnotherAddress: "\u9009\u62E9\u5176\u4ED6\u5730\u5740"
},
signature: {
reSign: "\u91CD\u7B7E",
unSupportTpl: "\u5BF9\u4E0D\u8D77\uFF0C\u5F53\u524D\u6D4F\u89C8\u5668\u4E0D\u652F\u6301Canvas\uFF0C\u65E0\u6CD5\u4F7F\u7528\u672C\u63A7\u4EF6\uFF01"
},
ecard: {
chooseText: "\u8BF7\u9009\u62E9\u7535\u5B50\u5361\u9762\u503C",
otherValueText: "\u5176\u4ED6\u9762\u503C",
placeholder: "\u8BF7\u8F93\u51651-5000\u6574\u6570"
},
timeselect: {
pickupTime: "\u53D6\u4EF6\u65F6\u95F4"
},
sku: {
buyNow: "\u7ACB\u5373\u8D2D\u4E70",
buyNumber: "\u8D2D\u4E70\u6570\u91CF",
addToCard: "\u52A0\u5165\u8D2D\u7269\u8F66"
},
skuheader: {
skuId: "\u5546\u54C1\u7F16\u53F7"
},
addresslist: {
addAddress: "\u65B0\u5EFA\u5730\u5740"
},
comment: {
complaintsText: "\u6211\u8981\u6295\u8BC9",
additionalReview: (day) => `\u8D2D\u4E70${day}\u5929\u540E\u8FFD\u8BC4`,
additionalImages: (length) => `${length}\u5F20\u8FFD\u8BC4\u56FE\u7247`
},
searchbar: {
basePlaceholder: "\u4E0A\u4EAC\u4E1C\uFF0C\u8D2D\u597D\u7269",
text: "\u6587\u672C",
test: "\u6D4B\u8BD5",
title1: "\u57FA\u7840\u7528\u6CD5",
title2: "\u641C\u7D22\u6846\u5F62\u72B6\u53CA\u6700\u5927\u957F\u5EA6",
title3: "\u641C\u7D22\u6846\u5185\u5916\u80CC\u666F\u8BBE\u7F6E",
title4: "\u641C\u7D22\u6846\u6587\u672C\u8BBE\u7F6E",
title5: "\u81EA\u5B9A\u4E49\u56FE\u6807\u8BBE\u7F6E",
title6: "\u6570\u636E\u6539\u53D8\u76D1\u542C"
},
audio: {
back: "\u5FEB\u9000",
forward: "\u5FEB\u8FDB",
pause: "\u6682\u505C",
start: "\u5F00\u59CB",
mute: "\u9759\u97F3",
tips: "onPlayEnd\u4E8B\u4EF6\u5728loop=false\u65F6\u624D\u4F1A\u89E6\u53D1"
},
datepicker: {
year: "\u5E74",
month: "\u6708",
day: "\u65E5",
hour: "\u65F6",
min: "\u5206",
seconds: "\u79D2"
},
pullToRefresh: {
pullingText: "\u4E0B\u62C9\u5237\u65B0",
canReleaseText: "\u677E\u5F00\u5237\u65B0",
refreshingText: "\u52A0\u8F7D\u4E2D...",
completeText: "\u5237\u65B0\u6210\u529F"
}
};
const defaultProps$1j = {
locale: zhCN
};
const defaultConfigRef$1 = {
current: {
locale: zhCN
}
};
const getDefaultConfig$1 = () => {
return defaultConfigRef$1.current;
};
const useConfig$1 = () => {
var _a;
return (_a = React.useContext(ConfigContext$1)) != null ? _a : getDefaultConfig$1();
};
const ConfigContext$1 = React.createContext(null);
const ConfigProvider = (props) => {
const { children, ...config2 } = { ...defaultProps$1j, ...props };
const parentConfig = useConfig$1();
return /* @__PURE__ */ React__default["default"].createElement(ConfigContext$1.Provider, {
value: {
...parentConfig,
...config2
}
}, children);
};
ConfigProvider.defaultProps = defaultProps$1j;
ConfigProvider.displayName = "NutConfigProvider";
const defaultProps$1i = {};
const Layout = (props) => {
({ ...defaultProps$1i, ...props });
return /* @__PURE__ */ React__default["default"].createElement("div", {
className: "nut-layout"
}, "Layout");
};
Layout.defaultProps = defaultProps$1i;
Layout.displayName = "NutLayout";
const DataContext$2 = React.createContext({});
const defaultProps$1h = {
span: "24",
offset: "0",
gutter: "0"
};
const Col = (props) => {
const {
className,
style = {},
span,
offset,
children,
onClick
} = {
...defaultProps$1h,
...props
};
const [colName, setColName] = React.useState("");
const [colStyle, setColStyle] = React.useState({});
const { gutter } = React.useContext(DataContext$2);
const classs = () => {
const prefixCls = "nut-col";
return `${prefixCls} ${prefixCls}-${span} ${gutter ? `${prefixCls}-gutter` : ""} ${prefixCls}-${offset}`;
};
const getStyle = () => {
const style2 = {};
style2.paddingLeft = `${gutter / 2}px`;
style2.paddingRight = `${gutter / 2}px`;
return style2;
};
React.useEffect(() => {
setColName(classs);
setColStyle(getStyle);
}, [span, offset, gutter]);
return /* @__PURE__ */ React__default["default"].createElement("div", {
className: `${colName} ${className}`,
style: { ...style, ...colStyle },
onClick: (e2) => {
onClick && onClick(e2, "col");
}
}, children);
};
Col.defaultProps = defaultProps$1h;
Col.displayName = "NutCol";
const defaultProps$1g = {
type: "",
justify: "start",
align: "flex-start",
wrap: "nowrap",
gutter: "0"
};
const Row = (props) => {
const {
className,
style = {},
children,
type,
justify,
align,
wrap,
gutter,
onClick
} = {
...defaultProps$1g,
...props
};
const prefixCls = "nut-row";
const getClass = (prefix2, type2) => {
const classType = type2 ? `nut-row-${prefix2}-${type2}` : "";
const className2 = prefix2 ? classType : `nut-row-${type2}`;
return className2;
};
const getClasses = () => {
return `
${getClass("", type)}
${getClass("justify", justify)}
${getClass("align", align)}
${getClass("flex", wrap)}
${prefixCls}
`;
};
const parentRow = {
gutter
};
return /* @__PURE__ */ React__default["default"].createElement(DataContext$2.Provider, {
value: parentRow
}, React__default["default"].createElement(
"div",
{
className: `${getClasses()} ${className}`,
style,
onClick: (e2) => {
onClick && onClick(e2, "row");
}
},
children
));
};
Row.defaultProps = defaultProps$1g;
Row.displayName = "NutRow";
const defaultProps$1f = {
contentPosition: "center",
dashed: false,
hairline: true,
direction: "horizontal"
};
const Divider = (props) => {
const {
children,
contentPosition,
dashed,
hairline,
styles,
className,
direction,
...rest
} = {
...defaultProps$1f,
...props
};
const dividerBem = cn("divider");
const classes = direction === "horizontal" ? classNames({
[dividerBem()]: true,
[dividerBem("center")]: children,
[dividerBem("left")]: contentPosition === "left",
[dividerBem("right")]: contentPosition === "right",
[dividerBem("dashed")]: dashed,
[dividerBem("hairline")]: hairline
}) : classNames({
[dividerBem()]: true,
[dividerBem("vertical")]: direction === "vertical"
});
return /* @__PURE__ */ React__default["default"].createElement("div", {
className: `${classes} ${className || ""}`,
style: styles,
...rest
}, children);
};
Divider.defaultProps = defaultProps$1f;
Divider.displayName = "NutDivider";
const defaultProps$1e = {
columnNum: 4,
border: true,
gutter: 0,
center: true,
square: false,
reverse: false,
direction: "vertical",
iconSize: 28,
iconColor: ""
};
const Grid = (props) => {
useConfig$1();
const {
children,
columnNum,
border,
gutter,
center,
square,
reverse,
direction,
style,
iconSize,
iconColor,
className,
...rest
} = { ...defaultProps$1e, ...props };
const childrenDom = React__default["default"].Children.toArray(children);
const pxCheck2 = (value) => {
return Number.isNaN(Number(value)) ? String(value) : `${value}px`;
};
const b2 = cn("grid");
const rootClass = () => {
const prefixCls = b2();
return `${className} ${prefixCls} ${border && !gutter ? `${b2("border")}` : ""}`;
};
const rootStyle = () => {
let styleSelf = {};
if (style) {
styleSelf = style;
}
if (gutter) {
styleSelf.paddingLeft = pxCheck2(gutter);
}
return styleSelf;
};
return /* @__PURE__ */ React__default["default"].createElement("div", {
className: rootClass(),
style: rootStyle(),
...rest
}, childrenDom.map((item, idex) => {
return React__default["default"].cloneElement(item, {
index: idex,
columnNum,
center,
border,
gutter,
square,
reverse,
direction,
parentIconSize: iconSize,
parentIconColor: iconColor
});
}));
};
Grid.defaultProps = defaultProps$1e;
Grid.displayName = "NutGrid";
const defaultProps$1d = {
...ComponentDefaults,
text: "",
icon: "",
iconSize: "",
iconColor: "",
parentIconSize: "",
parentIconColor: "",
columnNum: 4,
border: true,
gutter: 0,
center: true,
square: false,
reverse: false,
direction: "vertical"
};
const GridItem = (props) => {
useConfig$1();
const {
children,
columnNum,
index,
gutter,
square,
text,
icon,
iconColor,
iconSize,
parentIconSize,
parentIconColor,
border,
center,
reverse,
direction,
iconClassPrefix,
iconFontClassName,
onClick,
...rest
} = {
...defaultProps$1d,
...props
};
const b2 = cn("grid-item");
const pxCheck2 = (value) => {
return Number.isN