MCPcopy Create free account
hub / github.com/ygs-code/vue / genHandler

Function genHandler

vue.js:14507–14572  ·  view source on GitHub ↗
(
        name,
        handler
    )

Source from the content-addressed store, hash-verified

14505 }
14506
14507 function genHandler(
14508 name,
14509 handler
14510 ) {
14511 if (!handler) {
14512 return 'function(){}'
14513 }
14514
14515 if (Array.isArray(handler)) {
14516 return ("[" + (handler.map(function (handler) {
14517 return genHandler(name, handler);
14518 }).join(',')) + "]")
14519 }
14520
14521 var isMethodPath = simplePathRE.test(handler.value);
14522 var isFunctionExpression = fnExpRE.test(handler.value);
14523
14524 if (!handler.modifiers) {
14525 if (isMethodPath || isFunctionExpression) {
14526 return handler.value
14527 }
14528 /* istanbul ignore if */
14529 return ("function($event){" + (handler.value) + "}") // inline statement
14530 } else {
14531 var code = '';
14532 var genModifierCode = '';
14533 var keys = [];
14534 for (var key in handler.modifiers) {
14535 if (modifierCode[key]) {
14536 genModifierCode += modifierCode[key];
14537 // left/right
14538 if (keyCodes[key]) {
14539 keys.push(key);
14540 }
14541 } else if (key === 'exact') {
14542 var modifiers = (handler.modifiers);
14543 genModifierCode += genGuard(
14544 ['ctrl', 'shift', 'alt', 'meta']
14545 .filter(function (keyModifier) {
14546 return !modifiers[keyModifier];
14547 })
14548 .map(function (keyModifier) {
14549 return ("$event." + keyModifier + "Key");
14550 })
14551 .join('||')
14552 );
14553 } else {
14554 keys.push(key);
14555 }
14556 }
14557 if (keys.length) {
14558 code += genKeyFilter(keys);
14559 }
14560 // Make sure modifiers like prevent and stop get executed after key filtering
14561 if (genModifierCode) {
14562 code += genModifierCode;
14563 }
14564 var handlerCode = isMethodPath

Callers 1

genHandlersFunction · 0.85

Calls 2

genGuardFunction · 0.85
genKeyFilterFunction · 0.85

Tested by

no test coverage detected