@easyv/react-components 0.4.3 → 0.4.5

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.
@@ -8,6 +8,6 @@ interface XInputNumberProps extends Omit<InputNumberProps, 'value' | 'defaultVal
8
8
  onPressEnter?: (e: React.KeyboardEvent<HTMLInputElement>) => void;
9
9
  onPointMoveStart?: (value?: number) => void;
10
10
  onPointMoveEnd?: (value: number) => number;
11
- onBlur: (e: any, value?: number) => void;
11
+ onBlur?: (e: any, value?: number) => void;
12
12
  }
13
13
  export { XInputNumberProps as InputNumberProps };
@@ -1,4 +1,4 @@
1
- export declare function evaluateExpression(exporssion: string): number;
1
+ export declare function evaluateExpression(expression: string | number): number;
2
2
  interface SafeOptions {
3
3
  min?: number;
4
4
  max?: number;
@@ -1,7 +1,30 @@
1
- export function evaluateExpression(exporssion) {
1
+ export function evaluateExpression(expression) {
2
+ if (typeof expression === 'number') {
3
+ return expression;
4
+ }
5
+ if (typeof expression !== 'string' || !expression.trim()) {
6
+ return NaN;
7
+ }
8
+ var trimmed = expression.trim();
9
+
10
+ // 如果是纯数字字符串,直接返回数值
11
+ if (/^-?\d+(\.\d+)?$/.test(trimmed)) {
12
+ return parseFloat(trimmed);
13
+ }
14
+
15
+ // 检查是否是简单算术表达式(只包含数字、小数点、加减乘除和空格)
16
+ if (!/^[-+*/\d\s.()]+$/.test(trimmed)) {
17
+ return NaN;
18
+ }
2
19
  try {
3
- // eslint-disable-next-line no-eval
4
- return +eval(exporssion);
20
+ // 使用 Function 构造器替代 eval,更安全一些
21
+ var result = new Function('return ' + trimmed)();
22
+
23
+ // 确保结果是数字
24
+ if (typeof result === 'number' && !isNaN(result)) {
25
+ return result;
26
+ }
27
+ return NaN;
5
28
  } catch (e) {
6
29
  return NaN;
7
30
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@easyv/react-components",
3
- "version": "0.4.3",
3
+ "version": "0.4.5",
4
4
  "description": "a react component library base on arco design",
5
5
  "license": "MIT",
6
6
  "sideEffects": [