olova 2.0.70 → 2.0.71

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/vite.js CHANGED
@@ -1438,6 +1438,31 @@ function transformExpression(expr, stateNames, allSignalNames, jsxFunctionNames
1438
1438
  containsJsx = containsJsx || expressionProducesHtml(statement.expression);
1439
1439
  return { code: generate2(statement.expression).code, containsJsx };
1440
1440
  }
1441
+ function parseExpressionNode(expr) {
1442
+ try {
1443
+ const ast = parseModule(`(${expr})`);
1444
+ const statement = ast.program.body[0];
1445
+ return statement && t.isExpressionStatement(statement) ? statement.expression : null;
1446
+ } catch {
1447
+ return null;
1448
+ }
1449
+ }
1450
+ function isDirectEventHandlerExpression(node) {
1451
+ return !!(node && (t.isIdentifier(node) || t.isMemberExpression(node) || t.isOptionalMemberExpression(node) || t.isArrowFunctionExpression(node) || t.isFunctionExpression(node)));
1452
+ }
1453
+ function transformEventHandlerExpression(expr, stateNames, allSignalNames, jsxFunctionNames) {
1454
+ const expressionNode = parseExpressionNode(expr);
1455
+ const transformed = transformExpression(
1456
+ expr,
1457
+ stateNames,
1458
+ allSignalNames,
1459
+ jsxFunctionNames
1460
+ ).code;
1461
+ if (isDirectEventHandlerExpression(expressionNode)) {
1462
+ return transformed;
1463
+ }
1464
+ return `($event) => (${transformed})`;
1465
+ }
1441
1466
  function jsxToTemplateHtml(node) {
1442
1467
  if (t.isJSXElement(node)) {
1443
1468
  const opening = node.openingElement;
@@ -1753,12 +1778,12 @@ function transformTemplate(template, stateNames, allSignalNames, jsxFunctionName
1753
1778
  eventBindings.push({
1754
1779
  id: id2,
1755
1780
  event,
1756
- expr: transformExpression(
1781
+ expr: transformEventHandlerExpression(
1757
1782
  expr,
1758
1783
  stateNames,
1759
1784
  allSignalNames,
1760
1785
  jsxFunctionNames
1761
- ).code
1786
+ )
1762
1787
  });
1763
1788
  output += ` data-o-on-${event}="${id2}"`;
1764
1789
  continue;