@builder.io/mitosis
Version:
Write components once, run everywhere. Compiles to Vue, React, Solid, and Liquid. Import code from Figma and Builder.io
34 lines (33 loc) • 1.5 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.addPreventDefault = void 0;
const event_handlers_1 = require("../../../helpers/event-handlers");
const is_mitosis_node_1 = require("../../../helpers/is-mitosis-node");
const legacy_1 = __importDefault(require("neotraverse/legacy"));
/**
* Find event handlers that explicitly call .preventDefault() and
* add preventdefault:event
* https://qwik.builder.io/tutorial/events/preventdefault
*/
function addPreventDefault(json) {
(0, legacy_1.default)(json).forEach((node) => {
var _a;
if ((0, is_mitosis_node_1.isMitosisNode)(node)) {
if (node.bindings) {
for (const key of Object.keys(node.bindings)) {
if ((0, event_handlers_1.checkIsEvent)(key)) {
if ((_a = node.bindings[key]) === null || _a === void 0 ? void 0 : _a.code.includes('.preventDefault()')) {
const event = key.slice(2).toLowerCase();
node.properties['preventdefault:' + event] = '';
node.bindings[key].code = node.bindings[key].code.replace(/.*?\.preventDefault\(\);?/, '').trim();
}
}
}
}
}
});
}
exports.addPreventDefault = addPreventDefault;
;