@vue/language-core
Advanced tools
@@ -59,3 +59,2 @@ declare const raw: { | ||
| IsFunction: string; | ||
| NormalizeComponentEvent: string; | ||
| NormalizeEmits: string; | ||
@@ -68,2 +67,3 @@ OverloadUnion: string; | ||
| ResolveEmits: string; | ||
| ResolveEvent: string; | ||
| ShortEmits: string; | ||
@@ -70,0 +70,0 @@ ShortEmitsToObject: string; |
@@ -63,3 +63,2 @@ "use strict"; | ||
| IsFunction: '', | ||
| NormalizeComponentEvent: '', | ||
| NormalizeEmits: '', | ||
@@ -72,2 +71,3 @@ OverloadUnion: '', | ||
| ResolveEmits: '', | ||
| ResolveEvent: '', | ||
| ShortEmits: '', | ||
@@ -74,0 +74,0 @@ ShortEmitsToObject: '', |
@@ -50,3 +50,3 @@ "use strict"; | ||
| function* generateElementEvents(options, ctx, node, componentOriginalVar, getCtxVar, getPropsVar) { | ||
| const definitions = []; | ||
| const definitions = {}; | ||
| for (const prop of node.props) { | ||
@@ -75,14 +75,22 @@ if (prop.type === CompilerDOM.NodeTypes.DIRECTIVE | ||
| const emitName = emitPrefix + source; | ||
| definitions.push({ | ||
| const key = [ | ||
| prop.name, | ||
| propName, | ||
| ...prop.modifiers.map(modifier => modifier.content), | ||
| ].join('+'); | ||
| definitions[key] ??= { | ||
| propPrefix, | ||
| emitPrefix, | ||
| propName, | ||
| emitName, | ||
| items: [], | ||
| }; | ||
| definitions[key].items.push({ | ||
| prop, | ||
| source, | ||
| offset, | ||
| emitPrefix, | ||
| propPrefix, | ||
| propName, | ||
| emitName, | ||
| }); | ||
| } | ||
| } | ||
| if (!definitions.length) { | ||
| if (!Object.keys(definitions).length) { | ||
| return; | ||
@@ -92,29 +100,23 @@ } | ||
| yield `let ${emitsVar}!: ${names_1.names.ResolveEmits}<typeof ${componentOriginalVar}, typeof ${getCtxVar()}.emit>${utils_1.endOfLine}`; | ||
| yield `const ${ctx.getInternalVariable()}: `; | ||
| for (let i = 0; i < definitions.length; i++) { | ||
| const { propName, emitName } = definitions[i]; | ||
| if (i > 0) { | ||
| yield ` & `; | ||
| for (const { propPrefix, emitPrefix, propName, emitName, items } of Object.values(definitions)) { | ||
| yield `const ${ctx.getInternalVariable()}: ${names_1.names.ResolveEvent}<typeof ${getPropsVar()}, typeof ${emitsVar}, '${propName}', '${emitName}', '${(0, shared_1.camelize)(emitName)}'> = {${utils_1.newLine}`; | ||
| for (const { prop, source, offset } of items) { | ||
| if (prop.name === 'on') { | ||
| yield `/** @type {typeof ${emitsVar}.`; | ||
| yield* generateEventArg(options, source, offset, emitPrefix.slice(0, -1), codeFeatures_1.codeFeatures.navigation); | ||
| yield `} */${utils_1.newLine}`; | ||
| } | ||
| if (prop.name === 'on') { | ||
| yield* generateEventArg(options, source, offset, propPrefix.slice(0, -1)); | ||
| yield `: `; | ||
| yield* generateEventExpression(options, ctx, prop); | ||
| } | ||
| else { | ||
| yield `'${propName}': `; | ||
| yield* generateModelEventExpression(options, ctx, prop); | ||
| } | ||
| yield `,${utils_1.newLine}`; | ||
| } | ||
| yield `${names_1.names.NormalizeComponentEvent}<typeof ${getPropsVar()}, typeof ${emitsVar}, '${propName}', '${emitName}', '${(0, shared_1.camelize)(emitName)}'>`; | ||
| yield `}${utils_1.endOfLine}`; | ||
| } | ||
| yield ` = {${utils_1.newLine}`; | ||
| for (const { prop, source, offset, emitPrefix, propPrefix, propName } of definitions) { | ||
| if (prop.name === 'on') { | ||
| yield `...{ `; | ||
| yield* generateEventArg(options, source, offset, emitPrefix.slice(0, -1), codeFeatures_1.codeFeatures.navigation); | ||
| yield `: {} as any } as typeof ${emitsVar},${utils_1.newLine}`; | ||
| } | ||
| if (prop.name === 'on') { | ||
| yield* generateEventArg(options, source, offset, propPrefix.slice(0, -1)); | ||
| yield `: `; | ||
| yield* generateEventExpression(options, ctx, prop); | ||
| } | ||
| else { | ||
| yield `'${propName}': `; | ||
| yield* generateModelEventExpression(options, ctx, prop); | ||
| } | ||
| yield `,${utils_1.newLine}`; | ||
| } | ||
| yield `}${utils_1.endOfLine}`; | ||
| } | ||
@@ -121,0 +123,0 @@ function* generateEventArg(options, name, start, directive = 'on', features) { |
+2
-2
| { | ||
| "name": "@vue/language-core", | ||
| "version": "3.3.4", | ||
| "version": "3.3.5", | ||
| "license": "MIT", | ||
@@ -37,3 +37,3 @@ "files": [ | ||
| }, | ||
| "gitHead": "043a77b6182db32f4076f84a767c1c674ef2b149" | ||
| "gitHead": "2fe255ca6d5809c93b71ec8185ec14562cff5945" | ||
| } |
@@ -57,3 +57,3 @@ declare global { | ||
| : false; | ||
| type __VLS_NormalizeComponentEvent< | ||
| type __VLS_ResolveEvent< | ||
| Props, | ||
@@ -60,0 +60,0 @@ Emits, |
392384
0.04%9016
0.02%