Skip to content

Commit a93f737

Browse files
committed
fix: update formula expression object & array
1 parent 78e76ef commit a93f737

File tree

3 files changed

+18
-20
lines changed

3 files changed

+18
-20
lines changed

src/v2/hooks/useForm.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,14 @@ export const useForm = <TSchema>(props: ICreateFormProps<TSchema>) => {
1919

2020
if (!_form.current) {
2121
_form.current = createForm<TSchema>(props);
22-
_form.current.reset({});
2322
}
2423

2524
const latestState = useCallback(
2625
(state: IState) => {
2726
const latestState = _formState.current;
2827

2928
if (JSON.stringify(state.containerFormState) !== JSON.stringify(latestState)) {
30-
_formState.current = latestState;
29+
_formState.current = state.containerFormState;
3130
update();
3231
}
3332
},

src/v2/parser/example.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -412,12 +412,12 @@ export const ExamplePrefixObject = {
412412
},
413413
KEYS: {
414414
expression: "KEYS(objectsimple)",
415-
result: ["number", "string"],
415+
result: ["string", "number"],
416416
description: "",
417417
},
418418
VALUES: {
419419
expression: "VALUES(objectsimple)",
420-
result: [2, "string"],
420+
result: ["string", 2],
421421
description: "",
422422
},
423423
};

src/v2/parser/formula-operator-prefix.ts

+15-16
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ export const PREFIX_ARRAY: FunctionOps = {
146146
INCLUDES: (arg1, arg2) => {
147147
const item = arg1();
148148
const arr = evalArray(arg2());
149-
return arr.includes(item);
149+
return arr?.includes(item) || false;
150150
},
151151
AVERAGE: (arg) => {
152152
const arr = evalArray(arg());
@@ -177,7 +177,7 @@ export const PREFIX_ARRAY: FunctionOps = {
177177
return arr;
178178
},
179179
INDEX: (arg1, arg2) => iterable(arg2())[num(arg1())],
180-
LENGTH: (arg) => iterable(arg()).length,
180+
LENGTH: (arg) => iterable(arg())?.length || 0,
181181
JOIN: (arg1, arg2) => evalArray(arg2()).join(string(arg1())),
182182
SPLIT: (arg1, arg2) => string(arg2()).split(string(arg1())),
183183
CHAR_ARRAY: (arg) => {
@@ -191,36 +191,36 @@ export const PREFIX_ARRAY: FunctionOps = {
191191
MAP: (arg1, arg2) => {
192192
const func = arg1();
193193
const arr = evalArray(arg2());
194-
return arr.map((val) => {
194+
return arr?.map((val) => {
195195
if (typeof func === "function") {
196196
return () => func(val);
197197
}
198198
return call(string(func))(() => val);
199-
});
199+
}) || [];
200200
},
201201
MAP_ITEM: (arg1, arg2) => {
202202
const item = string(arg1());
203203
const arr = evalArray(arg2());
204-
return arr.map((val: any) => val[item]);
204+
return arr?.map((val: any) => val[item]) || [];
205205
},
206206
EVERY: (arg1, arg2) => {
207207
const varg1 = arg1();
208208
const arr = evalArray(arg2());
209-
return arr.every((item) => item === varg1);
209+
return arr?.every((item) => item === varg1) || false;
210210
},
211211
EVERY_IS: (arg1, arg2) => {
212212
const func = arg1();
213213
const arr = evalArray(arg2());
214-
return arr.every((item) => {
214+
return arr?.every((item) => {
215215
const args: ExpressionArray<ExpressionThunk> = [() => item];
216216
return call(string(func))(...args);
217-
});
217+
}) || false;
218218
},
219219
EVERY_INFIX: (arg1, arg2, arg3) => {
220220
const func = arg1();
221221
const value = arg2();
222222
const arr = evalArray(arg3());
223-
return arr.every((item) => {
223+
return arr?.every((item) => {
224224
const args: ExpressionArray<ExpressionThunk> = [
225225
() => value,
226226
() => item,
@@ -229,19 +229,19 @@ export const PREFIX_ARRAY: FunctionOps = {
229229
return func(...args);
230230
}
231231
return call(string(func))(...args);
232-
});
232+
}) || false;
233233
},
234234
REDUCE: (arg1, arg2, arg3) => {
235235
const func = arg1();
236236
const start = arg2();
237237
const arr = evalArray(arg3());
238-
return arr.reduce((prev, curr) => {
238+
return arr?.reduce((prev, curr) => {
239239
const args: ExpressionArray<ExpressionThunk> = [() => prev, () => curr];
240240
if (typeof func === "function") {
241241
return func(...args);
242242
}
243243
return call(string(func))(...args);
244-
}, start);
244+
}, start) || start;
245245
},
246246
RANGE: (arg1, arg2) => {
247247
const start = num(arg1());
@@ -289,7 +289,7 @@ export const PREFIX_OBJECT: FunctionOps = {
289289
const key = string(arg1());
290290
const inputObj = obj(arg2());
291291

292-
return inputObj[key];
292+
return inputObj?.[key];
293293
},
294294
PUT: (arg1, arg2, arg3) => {
295295
const key = string(arg1());
@@ -312,12 +312,11 @@ export const PREFIX_OBJECT: FunctionOps = {
312312
},
313313
KEYS: (arg1) => {
314314
const inputObj = obj(arg1());
315-
return Object.keys(inputObj).sort();
315+
return Object.keys(inputObj || {});
316316
},
317317
VALUES: (arg1) => {
318318
const inputObj = obj(arg1());
319-
return Object.keys(inputObj)
320-
.sort()
319+
return Object.keys(inputObj || {})
321320
.map((key) => inputObj[key]);
322321
},
323322
};

0 commit comments

Comments
 (0)