`;
exports[`compile > custom directive > basic 1`] = `
-"import { template as _template, children as _children, resolveDirective("vTest") as _resolveDirective("vTest"), resolveDirective("vHello") as _resolveDirective("vHello"), withDirectives as _withDirectives } from 'vue/vapor';
+"import { template as _template, children as _children, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from 'vue/vapor';
export function render(_ctx) {
const t0 = _template("<div></div>")
helpers: Set<string>
vaporHelpers: Set<string>
helper(name: string): string
- vaporHelper(name: string): string
+ vaporHelper(name: VaporHelper): string
}
function createCodegenContext(ir: RootIRNode, options: CodegenOptions) {
return [
newline(),
- ...call(vaporHelper('withDirectives'), [element], directives),
+ ...call(vaporHelper('withDirectives'), element, directives),
]
function genDirective({ dir, builtin }: WithDirectiveIRNode): CodeFragment[] {
- const NULL = ['void 0']
+ const NULL = 'void 0'
const directive = genDirective()
const value = dir.exp
return multi(['[', ']', ', '], directive, value, argument, modifiers)
- function genDirective(): CodeFragment[] {
+ function genDirective() {
const {
vaporHelper,
options: { bindingMetadata },
directiveExpression.ast = null
return genExpression(directiveExpression, context)
} else {
- return [vaporHelper(`resolveDirective("${directiveReference}")`)]
+ return `${vaporHelper('resolveDirective')}("${directiveReference}")`
}
}
}
import type { CodeFragment, CodegenContext } from '../generate'
-import type { SetPropIRNode } from '../ir'
+import type { SetPropIRNode, VaporHelper } from '../ir'
import { genExpression } from './expression'
import { isString } from '@vue/shared'
if (isString(oper.key) || oper.key.isStatic) {
const keyName = isString(oper.key) ? oper.key : oper.key.content
- let helperName: string | undefined
+ let helperName: VaporHelper | undefined
let omitKey = false
if (keyName === 'class') {
helperName = 'setClass'
type: IRNodeTypes.WITH_DIRECTIVE
element: number
dir: VaporDirectiveNode
- builtin?: string
+ builtin?: VaporHelper
}
export type IRNode =
isStaticArgOf,
} from '@vue/compiler-dom'
import type { DirectiveTransform } from '../transform'
-import { IRNodeTypes } from '..'
+import { IRNodeTypes, type VaporHelper } from '../ir'
export const transformVModel: DirectiveTransform = (dir, node, context) => {
const { exp, arg, loc } = dir
}
const isComponent = node.tagType === ElementTypes.COMPONENT
- let runtimeDirective: string | undefined
+ let runtimeDirective: VaporHelper | undefined
if (isComponent) {
if (dir.arg)
resetTracking()
if (name !== 'beforeUpdate') binding.oldValue = binding.value
}
+
+export function resolveDirective() {
+ // TODO
+}
el.value = newValue
},
}
+
+// TODO
+export const vModelDynamic = {}
+export const vModelRadio = {}
+export const vModelCheckbox = {}
+export const vModelSelect = {}