@zat-design/sisyphus-react 3.7.2-beta.9 → 3.7.3-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/ProForm/components/combination/FormList/utils.js +5 -4
- package/es/ProForm/components/combination/Group/utils.js +4 -2
- package/es/ProSelect/index.js +11 -8
- package/es/ProSelect/propsType.d.ts +4 -0
- package/es/ProSelect/utils/index.d.ts +1 -7
- package/es/ProSelect/utils/index.js +13 -5
- package/lib/ProForm/components/combination/FormList/utils.js +4 -3
- package/lib/ProForm/components/combination/Group/utils.js +4 -2
- package/lib/ProSelect/index.js +11 -8
- package/lib/ProSelect/propsType.d.ts +4 -0
- package/lib/ProSelect/utils/index.d.ts +1 -7
- package/lib/ProSelect/utils/index.js +13 -5
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isEqualWith
|
|
1
|
+
import { isEqualWith } from 'lodash';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
/**
|
|
4
4
|
* namesPath生产 [['list', 0, 'min'], ['list', 0, 'max']] => list_0_min-list_0_max
|
|
@@ -26,8 +26,9 @@ export var memoWith = function memoWith(pre, next) {
|
|
|
26
26
|
if ( /*#__PURE__*/React.isValidElement(objValue) && /*#__PURE__*/React.isValidElement(othValue)) {
|
|
27
27
|
return true;
|
|
28
28
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
// 移除解决formlist函数里不更新问题
|
|
30
|
+
// if (isFunction(objValue) && isFunction(othValue)) {
|
|
31
|
+
// return true;
|
|
32
|
+
// }
|
|
32
33
|
});
|
|
33
34
|
};
|
|
@@ -238,10 +238,12 @@ export var useTransformColumns = function useTransformColumns(params) {
|
|
|
238
238
|
args[_key] = arguments[_key];
|
|
239
239
|
}
|
|
240
240
|
newValue = valueFromEventWrapper(column, args);
|
|
241
|
-
if (
|
|
241
|
+
if (transform === null || transform === void 0 ? void 0 : transform.normalize) {
|
|
242
242
|
var _transform$normalize;
|
|
243
|
+
newValue = transform === null || transform === void 0 ? void 0 : (_transform$normalize = transform.normalize) === null || _transform$normalize === void 0 ? void 0 : _transform$normalize.call(transform, newValue);
|
|
244
|
+
} else if (normalize) {
|
|
243
245
|
// @ts-ignore
|
|
244
|
-
newValue =
|
|
246
|
+
newValue = normalize === null || normalize === void 0 ? void 0 : normalize(newValue);
|
|
245
247
|
}
|
|
246
248
|
internalChange === null || internalChange === void 0 ? void 0 : internalChange(newValue, args[1], index);
|
|
247
249
|
var values = form.getFieldValue(namePath);
|
package/es/ProSelect/index.js
CHANGED
|
@@ -9,7 +9,7 @@ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
|
9
9
|
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
10
10
|
import "antd/es/select/style";
|
|
11
11
|
import _Select from "antd/es/select";
|
|
12
|
-
var _excluded = ["dataSource", "defaultDisableValue", "useRequest", "fieldNames", "tooltip", "otherProps", "labelInValue", "filterInList", "scrollFollowParent", "defaultOne", "onSearch", "optionRender", "onChange", "updateDataSource", "transformResponse", "isView"];
|
|
12
|
+
var _excluded = ["dataSource", "defaultDisableValue", "useRequest", "fieldNames", "tooltip", "otherProps", "labelInValue", "filterInList", "scrollFollowParent", "defaultOne", "onSearch", "optionRender", "onChange", "updateDataSource", "transformResponse", "getValueProps", "isView"];
|
|
13
13
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
14
14
|
import { useDeepCompareEffect, useRequest as useRequestFunc } from 'ahooks';
|
|
15
15
|
import React, { useImperativeHandle, useState, forwardRef } from 'react';
|
|
@@ -53,10 +53,11 @@ export var ProSelect = function ProSelect(props, ref) {
|
|
|
53
53
|
onChange = props.onChange,
|
|
54
54
|
updateDataSource = props.updateDataSource,
|
|
55
55
|
transformResponse = props.transformResponse,
|
|
56
|
+
getValueProps = props.getValueProps,
|
|
56
57
|
isViewPro = props.isView,
|
|
57
58
|
selectProps = _objectWithoutProperties(props, _excluded);
|
|
58
59
|
selectProps.showCodeName = (_selectProps$showCode = selectProps.showCodeName) !== null && _selectProps$showCode !== void 0 ? _selectProps$showCode : showCodeName;
|
|
59
|
-
var value = props.value;
|
|
60
|
+
var value = getValueProps && props.value ? getValueProps(props.value) : props.value;
|
|
60
61
|
var _ref2 = ProForm.useFieldProps() || {},
|
|
61
62
|
isViewCon = _ref2.isView,
|
|
62
63
|
viewEmpty = _ref2.viewEmpty;
|
|
@@ -216,6 +217,7 @@ export var ProSelect = function ProSelect(props, ref) {
|
|
|
216
217
|
return props.children;
|
|
217
218
|
};
|
|
218
219
|
var handleChange = function handleChange(value, option) {
|
|
220
|
+
var getChangeValue = selectProps.getChangeValue;
|
|
219
221
|
if (selectProps.mode && selectProps.mode === 'multiple') {
|
|
220
222
|
if (Array.isArray(option)) {
|
|
221
223
|
option.forEach(function (item) {
|
|
@@ -225,14 +227,14 @@ export var ProSelect = function ProSelect(props, ref) {
|
|
|
225
227
|
});
|
|
226
228
|
}
|
|
227
229
|
if (labelInValue) {
|
|
228
|
-
onChange === null || onChange === void 0 ? void 0 : onChange(getValueObject(value), option);
|
|
230
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(getChangeValue ? getChangeValue(getValueObject(value)) : getValueObject(value), option);
|
|
229
231
|
} else {
|
|
230
|
-
onChange === null || onChange === void 0 ? void 0 : onChange(value, option);
|
|
232
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(getChangeValue ? getChangeValue(value) : value, option);
|
|
231
233
|
}
|
|
232
234
|
} else if (!selectProps.mode && labelInValue) {
|
|
233
|
-
onChange(getValueObject(value), option);
|
|
235
|
+
onChange(getChangeValue ? getChangeValue(getValueObject(value)) : getValueObject(value), option);
|
|
234
236
|
} else {
|
|
235
|
-
onChange === null || onChange === void 0 ? void 0 : onChange(value, option === null || option === void 0 ? void 0 : option.record);
|
|
237
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(getChangeValue ? getChangeValue(value) : value, option === null || option === void 0 ? void 0 : option.record);
|
|
236
238
|
}
|
|
237
239
|
};
|
|
238
240
|
/**
|
|
@@ -278,10 +280,11 @@ export var ProSelect = function ProSelect(props, ref) {
|
|
|
278
280
|
if ((otherProps === null || otherProps === void 0 ? void 0 : otherProps.listName) && filterInList) {
|
|
279
281
|
newSelectList = getSelectList({
|
|
280
282
|
otherProps: otherProps,
|
|
281
|
-
value:
|
|
283
|
+
value: value,
|
|
282
284
|
dataSource: selectList,
|
|
283
285
|
labelInValue: labelInValue,
|
|
284
|
-
fieldNames: fieldNames
|
|
286
|
+
fieldNames: fieldNames,
|
|
287
|
+
mode: selectProps.mode
|
|
285
288
|
});
|
|
286
289
|
}
|
|
287
290
|
return _jsx("div", {
|
|
@@ -46,6 +46,10 @@ export interface PropSelectProps extends Omit<SelectProps, 'onSearch'> {
|
|
|
46
46
|
onSearch?: (value: string, useRequest: Result<any, any>) => void;
|
|
47
47
|
/** 自定义展示 */
|
|
48
48
|
optionRender?: (value: DataOption) => string | ReactNode;
|
|
49
|
+
/** 用来转换修改value值 和 getValueProps配合使用 */
|
|
50
|
+
getChangeValue?: (value: DataOption) => any;
|
|
51
|
+
/** 用来转换传入的value值 getChangeValue配合使用 */
|
|
52
|
+
getValueProps?: (value: DataOption) => any;
|
|
49
53
|
}
|
|
50
54
|
export interface ProSelectAction {
|
|
51
55
|
/** 实例方法、根据 code | code[] 批量获取数据 */
|
|
@@ -1,10 +1,4 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 返回当前组件可以显示的数据源
|
|
3
3
|
*/
|
|
4
|
-
export declare const getSelectList: ({ otherProps, value, dataSource, labelInValue, fieldNames, }:
|
|
5
|
-
otherProps: any;
|
|
6
|
-
value: any;
|
|
7
|
-
dataSource: any;
|
|
8
|
-
labelInValue: any;
|
|
9
|
-
fieldNames: any;
|
|
10
|
-
}) => any;
|
|
4
|
+
export declare const getSelectList: ({ otherProps, value, dataSource, labelInValue, fieldNames, mode, }: any) => any;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
1
2
|
import _createForOfIteratorHelper from "@babel/runtime/helpers/esm/createForOfIteratorHelper";
|
|
2
3
|
/* eslint-disable no-restricted-syntax */
|
|
3
4
|
import _ from 'lodash';
|
|
@@ -8,7 +9,8 @@ var findSelectNameValues = function findSelectNameValues(_ref) {
|
|
|
8
9
|
value = _ref.value,
|
|
9
10
|
dataSource = _ref.dataSource,
|
|
10
11
|
labelInValue = _ref.labelInValue,
|
|
11
|
-
fieldNames = _ref.fieldNames
|
|
12
|
+
fieldNames = _ref.fieldNames,
|
|
13
|
+
mode = _ref.mode;
|
|
12
14
|
var selectValues = [];
|
|
13
15
|
list.forEach(function (item) {
|
|
14
16
|
var result = item;
|
|
@@ -27,9 +29,13 @@ var findSelectNameValues = function findSelectNameValues(_ref) {
|
|
|
27
29
|
} finally {
|
|
28
30
|
_iterator.f();
|
|
29
31
|
}
|
|
30
|
-
|
|
32
|
+
if (mode === 'multiple') {
|
|
33
|
+
selectValues = [].concat(_toConsumableArray(selectValues), _toConsumableArray(result));
|
|
34
|
+
} else {
|
|
35
|
+
selectValues.push(result);
|
|
36
|
+
}
|
|
31
37
|
});
|
|
32
|
-
var diffList = _.difference(selectValues, [value]);
|
|
38
|
+
var diffList = _.difference(selectValues, mode === 'multiple' ? value : [value]);
|
|
33
39
|
return dataSource.filter(function (item) {
|
|
34
40
|
return !diffList.includes(labelInValue ? item : item[fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.value] || (item === null || item === void 0 ? void 0 : item.value));
|
|
35
41
|
});
|
|
@@ -42,7 +48,8 @@ export var getSelectList = function getSelectList(_ref2) {
|
|
|
42
48
|
value = _ref2.value,
|
|
43
49
|
dataSource = _ref2.dataSource,
|
|
44
50
|
labelInValue = _ref2.labelInValue,
|
|
45
|
-
fieldNames = _ref2.fieldNames
|
|
51
|
+
fieldNames = _ref2.fieldNames,
|
|
52
|
+
mode = _ref2.mode;
|
|
46
53
|
if (!otherProps) {
|
|
47
54
|
return null;
|
|
48
55
|
}
|
|
@@ -59,6 +66,7 @@ export var getSelectList = function getSelectList(_ref2) {
|
|
|
59
66
|
value: value,
|
|
60
67
|
dataSource: dataSource,
|
|
61
68
|
labelInValue: labelInValue,
|
|
62
|
-
fieldNames: fieldNames
|
|
69
|
+
fieldNames: fieldNames,
|
|
70
|
+
mode: mode
|
|
63
71
|
});
|
|
64
72
|
};
|
|
@@ -33,8 +33,9 @@ var memoWith = exports.memoWith = function memoWith(pre, next) {
|
|
|
33
33
|
if ( /*#__PURE__*/_react.default.isValidElement(objValue) && /*#__PURE__*/_react.default.isValidElement(othValue)) {
|
|
34
34
|
return true;
|
|
35
35
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
// 移除解决formlist函数里不更新问题
|
|
37
|
+
// if (isFunction(objValue) && isFunction(othValue)) {
|
|
38
|
+
// return true;
|
|
39
|
+
// }
|
|
39
40
|
});
|
|
40
41
|
};
|
|
@@ -245,10 +245,12 @@ var useTransformColumns = exports.useTransformColumns = function useTransformCol
|
|
|
245
245
|
args[_key] = arguments[_key];
|
|
246
246
|
}
|
|
247
247
|
newValue = valueFromEventWrapper(column, args);
|
|
248
|
-
if (
|
|
248
|
+
if (transform === null || transform === void 0 ? void 0 : transform.normalize) {
|
|
249
249
|
var _transform$normalize;
|
|
250
|
+
newValue = transform === null || transform === void 0 ? void 0 : (_transform$normalize = transform.normalize) === null || _transform$normalize === void 0 ? void 0 : _transform$normalize.call(transform, newValue);
|
|
251
|
+
} else if (normalize) {
|
|
250
252
|
// @ts-ignore
|
|
251
|
-
newValue =
|
|
253
|
+
newValue = normalize === null || normalize === void 0 ? void 0 : normalize(newValue);
|
|
252
254
|
}
|
|
253
255
|
internalChange === null || internalChange === void 0 ? void 0 : internalChange(newValue, args[1], index);
|
|
254
256
|
var values = form.getFieldValue(namePath);
|
package/lib/ProSelect/index.js
CHANGED
|
@@ -21,7 +21,7 @@ var _ = require("..");
|
|
|
21
21
|
var _locale = _interopRequireDefault(require("../locale"));
|
|
22
22
|
var _utils = require("./utils");
|
|
23
23
|
require("./index.less");
|
|
24
|
-
var _excluded = ["dataSource", "defaultDisableValue", "useRequest", "fieldNames", "tooltip", "otherProps", "labelInValue", "filterInList", "scrollFollowParent", "defaultOne", "onSearch", "optionRender", "onChange", "updateDataSource", "transformResponse", "isView"];
|
|
24
|
+
var _excluded = ["dataSource", "defaultDisableValue", "useRequest", "fieldNames", "tooltip", "otherProps", "labelInValue", "filterInList", "scrollFollowParent", "defaultOne", "onSearch", "optionRender", "onChange", "updateDataSource", "transformResponse", "getValueProps", "isView"];
|
|
25
25
|
var Option = _antd.Select.Option;
|
|
26
26
|
var ProSelect = exports.ProSelect = function ProSelect(props, ref) {
|
|
27
27
|
var _selectProps$showCode, _locale$ProSelect;
|
|
@@ -54,10 +54,11 @@ var ProSelect = exports.ProSelect = function ProSelect(props, ref) {
|
|
|
54
54
|
onChange = props.onChange,
|
|
55
55
|
updateDataSource = props.updateDataSource,
|
|
56
56
|
transformResponse = props.transformResponse,
|
|
57
|
+
getValueProps = props.getValueProps,
|
|
57
58
|
isViewPro = props.isView,
|
|
58
59
|
selectProps = (0, _objectWithoutProperties2.default)(props, _excluded);
|
|
59
60
|
selectProps.showCodeName = (_selectProps$showCode = selectProps.showCodeName) !== null && _selectProps$showCode !== void 0 ? _selectProps$showCode : showCodeName;
|
|
60
|
-
var value = props.value;
|
|
61
|
+
var value = getValueProps && props.value ? getValueProps(props.value) : props.value;
|
|
61
62
|
var _ref2 = _.ProForm.useFieldProps() || {},
|
|
62
63
|
isViewCon = _ref2.isView,
|
|
63
64
|
viewEmpty = _ref2.viewEmpty;
|
|
@@ -217,6 +218,7 @@ var ProSelect = exports.ProSelect = function ProSelect(props, ref) {
|
|
|
217
218
|
return props.children;
|
|
218
219
|
};
|
|
219
220
|
var handleChange = function handleChange(value, option) {
|
|
221
|
+
var getChangeValue = selectProps.getChangeValue;
|
|
220
222
|
if (selectProps.mode && selectProps.mode === 'multiple') {
|
|
221
223
|
if (Array.isArray(option)) {
|
|
222
224
|
option.forEach(function (item) {
|
|
@@ -226,14 +228,14 @@ var ProSelect = exports.ProSelect = function ProSelect(props, ref) {
|
|
|
226
228
|
});
|
|
227
229
|
}
|
|
228
230
|
if (labelInValue) {
|
|
229
|
-
onChange === null || onChange === void 0 ? void 0 : onChange(getValueObject(value), option);
|
|
231
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(getChangeValue ? getChangeValue(getValueObject(value)) : getValueObject(value), option);
|
|
230
232
|
} else {
|
|
231
|
-
onChange === null || onChange === void 0 ? void 0 : onChange(value, option);
|
|
233
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(getChangeValue ? getChangeValue(value) : value, option);
|
|
232
234
|
}
|
|
233
235
|
} else if (!selectProps.mode && labelInValue) {
|
|
234
|
-
onChange(getValueObject(value), option);
|
|
236
|
+
onChange(getChangeValue ? getChangeValue(getValueObject(value)) : getValueObject(value), option);
|
|
235
237
|
} else {
|
|
236
|
-
onChange === null || onChange === void 0 ? void 0 : onChange(value, option === null || option === void 0 ? void 0 : option.record);
|
|
238
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(getChangeValue ? getChangeValue(value) : value, option === null || option === void 0 ? void 0 : option.record);
|
|
237
239
|
}
|
|
238
240
|
};
|
|
239
241
|
/**
|
|
@@ -279,10 +281,11 @@ var ProSelect = exports.ProSelect = function ProSelect(props, ref) {
|
|
|
279
281
|
if ((otherProps === null || otherProps === void 0 ? void 0 : otherProps.listName) && filterInList) {
|
|
280
282
|
newSelectList = (0, _utils.getSelectList)({
|
|
281
283
|
otherProps: otherProps,
|
|
282
|
-
value:
|
|
284
|
+
value: value,
|
|
283
285
|
dataSource: selectList,
|
|
284
286
|
labelInValue: labelInValue,
|
|
285
|
-
fieldNames: fieldNames
|
|
287
|
+
fieldNames: fieldNames,
|
|
288
|
+
mode: selectProps.mode
|
|
286
289
|
});
|
|
287
290
|
}
|
|
288
291
|
return (0, _jsxRuntime.jsx)("div", {
|
|
@@ -46,6 +46,10 @@ export interface PropSelectProps extends Omit<SelectProps, 'onSearch'> {
|
|
|
46
46
|
onSearch?: (value: string, useRequest: Result<any, any>) => void;
|
|
47
47
|
/** 自定义展示 */
|
|
48
48
|
optionRender?: (value: DataOption) => string | ReactNode;
|
|
49
|
+
/** 用来转换修改value值 和 getValueProps配合使用 */
|
|
50
|
+
getChangeValue?: (value: DataOption) => any;
|
|
51
|
+
/** 用来转换传入的value值 getChangeValue配合使用 */
|
|
52
|
+
getValueProps?: (value: DataOption) => any;
|
|
49
53
|
}
|
|
50
54
|
export interface ProSelectAction {
|
|
51
55
|
/** 实例方法、根据 code | code[] 批量获取数据 */
|
|
@@ -1,10 +1,4 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 返回当前组件可以显示的数据源
|
|
3
3
|
*/
|
|
4
|
-
export declare const getSelectList: ({ otherProps, value, dataSource, labelInValue, fieldNames, }:
|
|
5
|
-
otherProps: any;
|
|
6
|
-
value: any;
|
|
7
|
-
dataSource: any;
|
|
8
|
-
labelInValue: any;
|
|
9
|
-
fieldNames: any;
|
|
10
|
-
}) => any;
|
|
4
|
+
export declare const getSelectList: ({ otherProps, value, dataSource, labelInValue, fieldNames, mode, }: any) => any;
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.getSelectList = void 0;
|
|
8
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
8
9
|
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
|
|
9
10
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
10
11
|
/* eslint-disable no-restricted-syntax */
|
|
@@ -16,7 +17,8 @@ var findSelectNameValues = function findSelectNameValues(_ref) {
|
|
|
16
17
|
value = _ref.value,
|
|
17
18
|
dataSource = _ref.dataSource,
|
|
18
19
|
labelInValue = _ref.labelInValue,
|
|
19
|
-
fieldNames = _ref.fieldNames
|
|
20
|
+
fieldNames = _ref.fieldNames,
|
|
21
|
+
mode = _ref.mode;
|
|
20
22
|
var selectValues = [];
|
|
21
23
|
list.forEach(function (item) {
|
|
22
24
|
var result = item;
|
|
@@ -35,9 +37,13 @@ var findSelectNameValues = function findSelectNameValues(_ref) {
|
|
|
35
37
|
} finally {
|
|
36
38
|
_iterator.f();
|
|
37
39
|
}
|
|
38
|
-
|
|
40
|
+
if (mode === 'multiple') {
|
|
41
|
+
selectValues = [].concat((0, _toConsumableArray2.default)(selectValues), (0, _toConsumableArray2.default)(result));
|
|
42
|
+
} else {
|
|
43
|
+
selectValues.push(result);
|
|
44
|
+
}
|
|
39
45
|
});
|
|
40
|
-
var diffList = _lodash.default.difference(selectValues, [value]);
|
|
46
|
+
var diffList = _lodash.default.difference(selectValues, mode === 'multiple' ? value : [value]);
|
|
41
47
|
return dataSource.filter(function (item) {
|
|
42
48
|
return !diffList.includes(labelInValue ? item : item[fieldNames === null || fieldNames === void 0 ? void 0 : fieldNames.value] || (item === null || item === void 0 ? void 0 : item.value));
|
|
43
49
|
});
|
|
@@ -50,7 +56,8 @@ var getSelectList = exports.getSelectList = function getSelectList(_ref2) {
|
|
|
50
56
|
value = _ref2.value,
|
|
51
57
|
dataSource = _ref2.dataSource,
|
|
52
58
|
labelInValue = _ref2.labelInValue,
|
|
53
|
-
fieldNames = _ref2.fieldNames
|
|
59
|
+
fieldNames = _ref2.fieldNames,
|
|
60
|
+
mode = _ref2.mode;
|
|
54
61
|
if (!otherProps) {
|
|
55
62
|
return null;
|
|
56
63
|
}
|
|
@@ -67,6 +74,7 @@ var getSelectList = exports.getSelectList = function getSelectList(_ref2) {
|
|
|
67
74
|
value: value,
|
|
68
75
|
dataSource: dataSource,
|
|
69
76
|
labelInValue: labelInValue,
|
|
70
|
-
fieldNames: fieldNames
|
|
77
|
+
fieldNames: fieldNames,
|
|
78
|
+
mode: mode
|
|
71
79
|
});
|
|
72
80
|
};
|