// this is skipped in browser build since browser builds do not perform
// binding analysis.
if (!__BROWSER__) {
- const fromSetup = resolveSetupReference(
- tag,
- capitalize(camelize(tag)),
- context
- )
+ const fromSetup = resolveSetupReference(tag, context)
if (fromSetup) {
return fromSetup
}
return toValidAssetId(tag, `component`)
}
-function resolveSetupReference(
- name: string,
- interopName: string,
- context: TransformContext
-) {
+function resolveSetupReference(name: string, context: TransformContext) {
const bindings = context.bindingMetadata
if (!bindings) {
return
}
+ const camelName = camelize(name)
+ const PascalName = capitalize(camelName)
const checkType = (type: BindingTypes) => {
if (bindings[name] === type) {
return name
}
- if (bindings[interopName] === type) {
- return interopName
+ if (bindings[camelName] === type) {
+ return camelName
+ }
+ if (bindings[PascalName] === type) {
+ return PascalName
}
}
} else {
// user directive.
// see if we have directives exposed via <script setup>
- const fromSetup =
- !__BROWSER__ &&
- resolveSetupReference(
- dir.name,
- // v-my-dir -> vMyDir
- 'v' + capitalize(camelize(dir.name)),
- context
- )
-
+ const fromSetup = !__BROWSER__ && resolveSetupReference(dir.name, context)
if (fromSetup) {
dirArgs.push(fromSetup)
} else {
import ChildComp from './Child.vue'
import SomeOtherComp from './Other.vue'
- import vMyDir from './my-dir'
+ import myDir from './my-dir'
export default {
expose: [],
return (_ctx, _cache) => {
return (_openBlock(), _createBlock(_Fragment, null, [
_withDirectives(_createVNode(\\"div\\", null, null, 512 /* NEED_PATCH */), [
- [_unref(vMyDir)]
+ [_unref(myDir)]
]),
_createVNode(ChildComp),
_createVNode(SomeOtherComp)
<script setup>
import ChildComp from './Child.vue'
import SomeOtherComp from './Other.vue'
- import vMyDir from './my-dir'
+ import myDir from './my-dir'
</script>
<template>
<div v-my-dir></div>
`,
{ inlineTemplate: true }
)
- expect(content).toMatch('[_unref(vMyDir)]')
+ expect(content).toMatch('[_unref(myDir)]')
expect(content).toMatch('_createVNode(ChildComp)')
// kebab-case component support
expect(content).toMatch('_createVNode(SomeOtherComp)')