@vue/language-core
Advanced tools
@@ -222,5 +222,10 @@ "use strict"; | ||
| if (shouldInheritAttrs) { | ||
| const restsVar = ctx.getInternalVariable(); | ||
| yield `var ${restsVar} = ${names_1.names.omit}(${getPropsVar()}, {\n${propsStr}})${utils_1.endOfLine}`; | ||
| ctx.inheritedAttrVars.add(restsVar); | ||
| if (options.vueCompilerOptions.checkRequiredFallthroughAttributes) { | ||
| const restsVar = ctx.getInternalVariable(); | ||
| yield `var ${restsVar} = ${names_1.names.omit}(${getPropsVar()}, {\n${propsStr}})${utils_1.endOfLine}`; | ||
| ctx.inheritedAttrVars.add(restsVar); | ||
| } | ||
| else { | ||
| ctx.inheritedAttrVars.add(getPropsVar()); | ||
| } | ||
| } | ||
@@ -227,0 +232,0 @@ yield* generateStyleScopedClassReferences(options, node); |
@@ -50,3 +50,3 @@ "use strict"; | ||
| function* generateElementEvents(options, ctx, node, componentOriginalVar, getCtxVar, getPropsVar) { | ||
| let emitsVar; | ||
| const definitions = []; | ||
| for (const prop of node.props) { | ||
@@ -59,8 +59,4 @@ if (prop.type === CompilerDOM.NodeTypes.DIRECTIVE | ||
| && (!prop.arg || prop.arg.type === CompilerDOM.NodeTypes.SIMPLE_EXPRESSION && prop.arg.isStatic))) { | ||
| if (!emitsVar) { | ||
| emitsVar = ctx.getInternalVariable(); | ||
| yield `let ${emitsVar}!: ${names_1.names.ResolveEmits}<typeof ${componentOriginalVar}, typeof ${getCtxVar()}.emit>${utils_1.endOfLine}`; | ||
| } | ||
| let source = prop.arg?.loc.source ?? 'model-value'; | ||
| let start = prop.arg?.loc.start.offset; | ||
| let offset = prop.arg?.loc.start.offset; | ||
| let propPrefix = 'on-'; | ||
@@ -74,3 +70,3 @@ let emitPrefix = ''; | ||
| source = source.slice('vue:'.length); | ||
| start = start + 'vue:'.length; | ||
| offset = offset + 'vue:'.length; | ||
| propPrefix = 'onVnode-'; | ||
@@ -81,22 +77,45 @@ emitPrefix = 'vnode-'; | ||
| const emitName = emitPrefix + source; | ||
| const camelizedEmitName = (0, shared_1.camelize)(emitName); | ||
| yield `const ${ctx.getInternalVariable()}: ${names_1.names.NormalizeComponentEvent}<typeof ${getPropsVar()}, typeof ${emitsVar}, '${propName}', '${emitName}', '${camelizedEmitName}'> = (${utils_1.newLine}`; | ||
| if (prop.name === 'on') { | ||
| yield `{ `; | ||
| yield* generateEventArg(options, source, start, emitPrefix.slice(0, -1), codeFeatures_1.codeFeatures.navigation); | ||
| yield `: {} as any } as typeof ${emitsVar},${utils_1.newLine}`; | ||
| } | ||
| yield `{ `; | ||
| if (prop.name === 'on') { | ||
| yield* generateEventArg(options, source, start, propPrefix.slice(0, -1)); | ||
| yield `: `; | ||
| yield* generateEventExpression(options, ctx, prop); | ||
| } | ||
| else { | ||
| yield `'${propName}': `; | ||
| yield* generateModelEventExpression(options, ctx, prop); | ||
| } | ||
| yield `})${utils_1.endOfLine}`; | ||
| definitions.push({ | ||
| prop, | ||
| source, | ||
| offset, | ||
| emitPrefix, | ||
| propPrefix, | ||
| propName, | ||
| emitName, | ||
| }); | ||
| } | ||
| } | ||
| if (!definitions.length) { | ||
| return; | ||
| } | ||
| const emitsVar = ctx.getInternalVariable(); | ||
| 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 ` & `; | ||
| } | ||
| yield `${names_1.names.NormalizeComponentEvent}<typeof ${getPropsVar()}, typeof ${emitsVar}, '${propName}', '${emitName}', '${(0, shared_1.camelize)(emitName)}'>`; | ||
| } | ||
| 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}`; | ||
| } | ||
@@ -103,0 +122,0 @@ function* generateEventArg(options, name, start, directive = 'on', features) { |
@@ -242,3 +242,4 @@ "use strict"; | ||
| && (0, shared_2.hyphenateAttr)(propName) === propName | ||
| && !options.vueCompilerOptions.htmlAttributes.some(pattern => (0, picomatch_1.isMatch)(propName, pattern)); | ||
| && (node.tagType === CompilerDOM.ElementTypes.SLOT | ||
| || !options.vueCompilerOptions.htmlAttributes.some(pattern => (0, picomatch_1.isMatch)(propName, pattern))); | ||
| } | ||
@@ -245,0 +246,0 @@ function getPropsCodeFeatures(checkUnknownProps) { |
+2
-2
| { | ||
| "name": "@vue/language-core", | ||
| "version": "3.3.3", | ||
| "version": "3.3.4", | ||
| "license": "MIT", | ||
@@ -37,3 +37,3 @@ "files": [ | ||
| }, | ||
| "gitHead": "5c41b5f8637c29551e7f3f1e0674606e5963cd0a" | ||
| "gitHead": "043a77b6182db32f4076f84a767c1c674ef2b149" | ||
| } |
392217
0.17%9014
0.28%