@@ -39217,15 +39217,23 @@ function create(factories, config) {
3921739217const mathjs = create(all, { number: "Fraction" });
3921839218mathjs.replacer;
3921939219
39220+ function _optionalChain$4(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
3922039221const log$3 = logger("mv:ast-to-math");
3922139222const m$6 = mathjs;
3922239223const operators = {
3922339224 "+": function (operands) {
3922439225 return new m$6.OperatorNode("+", "add", operands);
3922539226 },
3922639227 "*": function (operands) {
39227- if (operands[1] && operands[1].isUnit) {
39228- return m$6.multiply(operands[0].value, operands[1]);
39228+ const [left, right] = operands;
39229+ if (
39230+ _optionalChain$4([left, 'optionalAccess', _2 => _2.type]) === "ConstantNode" &&
39231+ _optionalChain$4([right, 'optionalAccess', _3 => _3.isUnit]) &&
39232+ typeof left.value === "object"
39233+ ) {
39234+ const leftVal = left.value.valueOf();
39235+ const unitResult = m$6.multiply(leftVal, right);
39236+ return unitResult;
3922939237 }
3923039238 return new m$6.OperatorNode("*", "multiply", operands);
3923139239 },
@@ -40268,6 +40276,27 @@ const normalize = (a) => {
4026840276const isMathEqual$1 = (a, b) => {
4026940277 let as;
4027040278 let bs;
40279+ if (_optionalChain([a, 'optionalAccess', _ => _.isUnit]) && _optionalChain([b, 'optionalAccess', _2 => _2.isUnit])) {
40280+ try {
40281+ return m$1.equal(a, b);
40282+ } catch (e) {
40283+ log$1(
40284+ "[isMathEqual] Error comparing units:",
40285+ _optionalChain([a, 'optionalAccess', _3 => _3.toString, 'optionalCall', _4 => _4()]),
40286+ _optionalChain([b, 'optionalAccess', _5 => _5.toString, 'optionalCall', _6 => _6()]),
40287+ e
40288+ );
40289+ return false;
40290+ }
40291+ }
40292+ if (_optionalChain([a, 'optionalAccess', _7 => _7.isUnit]) || _optionalChain([b, 'optionalAccess', _8 => _8.isUnit])) {
40293+ log$1(
40294+ "[isMathEqual] Mismatched unit comparison:",
40295+ _optionalChain([a, 'optionalAccess', _9 => _9.toString, 'optionalCall', _10 => _10()]),
40296+ _optionalChain([b, 'optionalAccess', _11 => _11.toString, 'optionalCall', _12 => _12()])
40297+ );
40298+ return false;
40299+ }
4027140300 as = a.conditionals ? normalize(a) : sort(normalize(a));
4027240301 bs = b.conditionals ? normalize(b) : sort(normalize(b));
4027340302 log$1("[isMathEqual]", as.toString(), "==?", bs.toString());
@@ -40291,9 +40320,9 @@ const isMathEqual$1 = (a, b) => {
4029140320 return compareEquations(as, bs, true);
4029240321 }
4029340322 if (
40294- _optionalChain([as, 'optionalAccess', _ => _ .conditionals, 'optionalAccess', _2 => _2 .length]) === _optionalChain([bs, 'optionalAccess', _3 => _3 .conditionals, 'optionalAccess', _4 => _4 .length]) &&
40295- _optionalChain([as, 'optionalAccess', _5 => _5 .conditionals, 'optionalAccess', _6 => _6 .length]) === 2 &&
40296- _optionalChain([as, 'optionalAccess', _7 => _7 .conditionals, 'optionalAccess', _8 => _8 .toString, 'call', _9 => _9 ()]) === _optionalChain([bs, 'optionalAccess', _10 => _10 .conditionals, 'optionalAccess', _11 => _11 .toString, 'call', _12 => _12 ()])
40323+ _optionalChain([as, 'optionalAccess', _13 => _13 .conditionals, 'optionalAccess', _14 => _14 .length]) === _optionalChain([bs, 'optionalAccess', _15 => _15 .conditionals, 'optionalAccess', _16 => _16 .length]) &&
40324+ _optionalChain([as, 'optionalAccess', _17 => _17 .conditionals, 'optionalAccess', _18 => _18 .length]) === 2 &&
40325+ _optionalChain([as, 'optionalAccess', _19 => _19 .conditionals, 'optionalAccess', _20 => _20 .toString, 'call', _21 => _21 ()]) === _optionalChain([bs, 'optionalAccess', _22 => _22 .conditionals, 'optionalAccess', _23 => _23 .toString, 'call', _24 => _24 ()])
4029740326 ) {
4029840327 const params = [
4029940328 "smaller",
0 commit comments