module-package-comp 1.0.1 → 1.1.0
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/dist/component/ComponentDisplayer.js +14 -10
- package/dist/component/ComponentDisplayer.js.map +1 -1
- package/dist/component/ShowAttr.d.ts +3 -2
- package/dist/component/ShowAttr.js +19 -1
- package/dist/component/ShowAttr.js.map +1 -1
- package/package.json +4 -1
- package/src/component/ComponentDisplayer.tsx +14 -13
- package/src/component/ShowAttr.tsx +21 -1
|
@@ -10,7 +10,7 @@ export function ComponentDisplayer({ components, data, setData, onSubmit, }) {
|
|
|
10
10
|
const temp = Object.assign({}, data);
|
|
11
11
|
temp[attr.name] = s;
|
|
12
12
|
setData(temp);
|
|
13
|
-
} }, attr.name));
|
|
13
|
+
}, data: data }, attr.name));
|
|
14
14
|
}
|
|
15
15
|
else {
|
|
16
16
|
if (data[attr.name]) {
|
|
@@ -27,19 +27,23 @@ function canShow(attr, data, conds) {
|
|
|
27
27
|
return true;
|
|
28
28
|
}
|
|
29
29
|
return conditions.some((conditionSet) => {
|
|
30
|
-
let
|
|
31
|
-
|
|
32
|
-
const result = evaluateCondition(
|
|
33
|
-
if (
|
|
34
|
-
|
|
30
|
+
for (let i = 0; i < conditionSet.length; i++) {
|
|
31
|
+
const currentCond = conditionSet[i];
|
|
32
|
+
const result = evaluateCondition(currentCond, data);
|
|
33
|
+
if (currentCond.delimiter === "ou") {
|
|
34
|
+
if (result) {
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
35
37
|
}
|
|
36
|
-
if (
|
|
37
|
-
|
|
38
|
+
else if (currentCond.delimiter === "et") {
|
|
39
|
+
if (!result) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
38
42
|
}
|
|
39
43
|
else {
|
|
40
|
-
return result
|
|
44
|
+
return result;
|
|
41
45
|
}
|
|
42
|
-
}
|
|
46
|
+
}
|
|
43
47
|
});
|
|
44
48
|
}
|
|
45
49
|
function evaluateCondition(condition, data) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComponentDisplayer.js","sourceRoot":"","sources":["../../src/component/ComponentDisplayer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAQjC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,UAAU,MAAM,cAAc,CAAC;AAStC,MAAM,UAAU,kBAAkB,CAAC,EACjC,UAAU,EACV,IAAI,EACJ,OAAO,EACP,QAAQ,GACgB;IACxB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpC,OAAO,CACL,gBAAM,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAC,UAAU,aAC5C,aAAI,SAAS,EAAC,mDAAmD,YAC9D,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,GACpB,EACL,cAAK,SAAS,EAAC,WAAW,YACvB,UAAU,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBACxC,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC;wBAC3D,OAAO,CACL,KAAC,QAAQ,IAEP,SAAS,EAAE,IAAI,EACf,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EACrD,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;gCACd,MAAM,IAAI,qBAAQ,IAAI,CAAE,CAAC;gCACzB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gCACpB,OAAO,CAAC,IAAI,CAAC,CAAC;4BAChB,CAAC,
|
|
1
|
+
{"version":3,"file":"ComponentDisplayer.js","sourceRoot":"","sources":["../../src/component/ComponentDisplayer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { Attribute } from "../util/type";
|
|
1
|
+
import { Attribute, DataJSON } from "../util/type";
|
|
2
2
|
type ShowAttrProps = {
|
|
3
3
|
attribute: Attribute;
|
|
4
4
|
value: string;
|
|
5
5
|
setValue: (s: string) => void;
|
|
6
|
+
data: DataJSON;
|
|
6
7
|
showLabel?: boolean;
|
|
7
8
|
};
|
|
8
|
-
export declare function ShowAttr({ attribute, value, setValue, showLabel, }: ShowAttrProps): import("react/jsx-runtime").JSX.Element | undefined;
|
|
9
|
+
export declare function ShowAttr({ attribute, value, setValue, showLabel, data, }: ShowAttrProps): import("react/jsx-runtime").JSX.Element | undefined;
|
|
9
10
|
export {};
|
|
@@ -4,7 +4,8 @@ import LabeledSelect from "./inputs/LableledSelect";
|
|
|
4
4
|
import LabeledInput from "./inputs/LableledInput";
|
|
5
5
|
import LabeledMutliSelect from "./inputs/LabeledMutliSelect";
|
|
6
6
|
import { useMemo } from "react";
|
|
7
|
-
|
|
7
|
+
import { Parser } from "expr-eval";
|
|
8
|
+
export function ShowAttr({ attribute, value, setValue, showLabel = true, data, }) {
|
|
8
9
|
const label = useMemo(() => (showLabel ? attribute.label || "" : ""), [attribute.label]);
|
|
9
10
|
const type = useMemo(() => {
|
|
10
11
|
if (attribute.type)
|
|
@@ -33,6 +34,23 @@ export function ShowAttr({ attribute, value, setValue, showLabel = true, }) {
|
|
|
33
34
|
return (_jsxs("div", { className: "w-full", children: [_jsx("label", { className: "block text-sm font-bold mb-1", children: label }), _jsx("p", { children: attribute.content })] }));
|
|
34
35
|
case AttributeTypeEnum.TITRE:
|
|
35
36
|
return (_jsx("div", { className: "w-full", children: _jsx("h2", { className: "text-3xl font-semibold", children: attribute.label }) }));
|
|
37
|
+
case AttributeTypeEnum.AUTOGEN:
|
|
38
|
+
let result = 0;
|
|
39
|
+
if (attribute.content && typeof attribute.content === "string") {
|
|
40
|
+
result = calculateContent(attribute.content, data);
|
|
41
|
+
return _jsx("p", { children: result });
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function calculateContent(content, data) {
|
|
46
|
+
const parser = new Parser();
|
|
47
|
+
const expr = parser.parse(content);
|
|
48
|
+
const vars = expr.variables();
|
|
49
|
+
if (vars.every((v) => !!data[v])) {
|
|
50
|
+
return expr.evaluate(data);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
return 0;
|
|
36
54
|
}
|
|
37
55
|
}
|
|
38
56
|
//# sourceMappingURL=ShowAttr.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShowAttr.js","sourceRoot":"","sources":["../../src/component/ShowAttr.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAa,iBAAiB,
|
|
1
|
+
{"version":3,"file":"ShowAttr.js","sourceRoot":"","sources":["../../src/component/ShowAttr.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "module-package-comp",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -19,5 +19,8 @@
|
|
|
19
19
|
"react-dom": "^18.3.1",
|
|
20
20
|
"tailwindcss": "^3.4.4",
|
|
21
21
|
"typescript": "^5.5.3"
|
|
22
|
+
},
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"expr-eval": "^2.0.2"
|
|
22
25
|
}
|
|
23
26
|
}
|
|
@@ -41,6 +41,7 @@ export function ComponentDisplayer({
|
|
|
41
41
|
temp[attr.name] = s;
|
|
42
42
|
setData(temp);
|
|
43
43
|
}}
|
|
44
|
+
data={data}
|
|
44
45
|
/>
|
|
45
46
|
);
|
|
46
47
|
} else {
|
|
@@ -71,22 +72,22 @@ function canShow(
|
|
|
71
72
|
if (!conditions || conditions.length === 0) {
|
|
72
73
|
return true;
|
|
73
74
|
}
|
|
74
|
-
|
|
75
75
|
return conditions.some((conditionSet) => {
|
|
76
|
-
let
|
|
77
|
-
|
|
78
|
-
const result = evaluateCondition(
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
76
|
+
for (let i = 0; i < conditionSet.length; i++) {
|
|
77
|
+
const currentCond = conditionSet[i];
|
|
78
|
+
const result = evaluateCondition(currentCond, data);
|
|
79
|
+
if (currentCond.delimiter === "ou") {
|
|
80
|
+
if (result) {
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
} else if (currentCond.delimiter === "et") {
|
|
84
|
+
if (!result) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
86
87
|
} else {
|
|
87
|
-
return result
|
|
88
|
+
return result;
|
|
88
89
|
}
|
|
89
|
-
}
|
|
90
|
+
}
|
|
90
91
|
});
|
|
91
92
|
}
|
|
92
93
|
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
import { Attribute, AttributeTypeEnum, Content } from "../util/type";
|
|
1
|
+
import { Attribute, AttributeTypeEnum, Content, DataJSON } from "../util/type";
|
|
2
2
|
import LabeledSelect from "./inputs/LableledSelect";
|
|
3
3
|
import LabeledInput from "./inputs/LableledInput";
|
|
4
4
|
import MultiSelect from "./inputs/MultiSelect";
|
|
5
5
|
import LabeledMutliSelect from "./inputs/LabeledMutliSelect";
|
|
6
6
|
import { useMemo } from "react";
|
|
7
|
+
import { Parser } from "expr-eval";
|
|
7
8
|
|
|
8
9
|
type ShowAttrProps = {
|
|
9
10
|
attribute: Attribute;
|
|
10
11
|
value: string;
|
|
11
12
|
setValue: (s: string) => void;
|
|
13
|
+
data: DataJSON;
|
|
12
14
|
showLabel?: boolean;
|
|
13
15
|
};
|
|
14
16
|
|
|
@@ -17,6 +19,7 @@ export function ShowAttr({
|
|
|
17
19
|
value,
|
|
18
20
|
setValue,
|
|
19
21
|
showLabel = true,
|
|
22
|
+
data,
|
|
20
23
|
}: ShowAttrProps) {
|
|
21
24
|
const label = useMemo(
|
|
22
25
|
() => (showLabel ? attribute.label || "" : ""),
|
|
@@ -116,5 +119,22 @@ export function ShowAttr({
|
|
|
116
119
|
<h2 className="text-3xl font-semibold">{attribute.label}</h2>
|
|
117
120
|
</div>
|
|
118
121
|
);
|
|
122
|
+
case AttributeTypeEnum.AUTOGEN:
|
|
123
|
+
let result = 0;
|
|
124
|
+
if (attribute.content && typeof attribute.content === "string") {
|
|
125
|
+
result = calculateContent(attribute.content, data);
|
|
126
|
+
return <p>{result}</p>;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
function calculateContent(content: string, data: DataJSON): number {
|
|
132
|
+
const parser = new Parser();
|
|
133
|
+
const expr = parser.parse(content);
|
|
134
|
+
const vars = expr.variables();
|
|
135
|
+
if (vars.every((v) => !!data[v])) {
|
|
136
|
+
return expr.evaluate(data as { [propertyName: string]: string }) as number;
|
|
137
|
+
} else {
|
|
138
|
+
return 0;
|
|
119
139
|
}
|
|
120
140
|
}
|