|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
export function math_eval(expression) { |
|
|
|
|
|
if (!/^[\d\s+\-*/%.()]+$/.test(expression)) { |
|
|
throw new Error("Invalid characters in expression."); |
|
|
} |
|
|
return Function('"use strict";return (' + expression + ")")(); |
|
|
} |
|
|
|
|
|
export default (input, output) => |
|
|
React.createElement( |
|
|
"div", |
|
|
{ className: "bg-emerald-50 border border-emerald-200 rounded-lg p-4" }, |
|
|
React.createElement( |
|
|
"div", |
|
|
{ className: "flex items-center mb-2" }, |
|
|
React.createElement( |
|
|
"div", |
|
|
{ |
|
|
className: |
|
|
"w-8 h-8 bg-emerald-100 rounded-full flex items-center justify-center mr-3", |
|
|
}, |
|
|
"🧮", |
|
|
), |
|
|
React.createElement( |
|
|
"h3", |
|
|
{ className: "text-emerald-900 font-semibold" }, |
|
|
"Math Evaluation", |
|
|
), |
|
|
), |
|
|
React.createElement( |
|
|
"div", |
|
|
{ className: "text-center" }, |
|
|
React.createElement( |
|
|
"div", |
|
|
{ className: "text-lg font-mono text-emerald-700 mb-1" }, |
|
|
input.expression || "Unknown expression", |
|
|
), |
|
|
React.createElement( |
|
|
"div", |
|
|
{ className: "text-2xl font-bold text-emerald-600 mb-1" }, |
|
|
`= ${output}`, |
|
|
), |
|
|
React.createElement( |
|
|
"p", |
|
|
{ className: "text-emerald-500 text-xs" }, |
|
|
"Calculation result", |
|
|
), |
|
|
), |
|
|
); |
|
|
|