const t = require('@babel/types')
|
|
const {
|
CLASS_REF,
|
CLASS_REF_IN_FOR
|
} = require('../../../constants')
|
|
module.exports = function processRef (paths, path, state) {
|
const refPath = paths.ref
|
if (refPath) {
|
if (state.options.platform.name === 'mp-alipay') {
|
return [
|
t.objectProperty( // data-ref="" ,data-ref-in-for=""
|
t.stringLiteral('ref'),
|
t.stringLiteral('__r')
|
),
|
t.objectProperty( // data-ref="" ,data-ref-in-for=""
|
t.stringLiteral(state.inFor ? state.options.platform.refInFor : state.options.platform.ref),
|
refPath.node.value
|
)
|
]
|
}
|
const refClass = state.inFor ? CLASS_REF_IN_FOR : CLASS_REF
|
const staticClassPath = paths.staticClass
|
if (staticClassPath) { // append
|
staticClassPath.node.value.value = staticClassPath.node.value.value + ' ' + refClass
|
} else { // add staticClass
|
path.node.properties.unshift(
|
t.objectProperty(t.identifier('staticClass'), t.stringLiteral(refClass))
|
)
|
paths.staticClass = path.get('properties').find(
|
propertyPath => propertyPath.node.key.name === 'staticClass'
|
)
|
}
|
return [
|
t.objectProperty( // data-ref="" ,头条 vue-ref
|
t.stringLiteral(state.options.platform.ref),
|
refPath.node.value
|
)
|
]
|
}
|
return []
|
}
|