vue3-yuanma/packages/compiler-dom/src/index.ts

58 lines
1.7 KiB
TypeScript
Raw Normal View History

import {
baseCompile,
baseParse,
CompilerOptions,
CodegenResult,
isBuiltInType,
2020-01-02 23:21:56 +00:00
ParserOptions,
RootNode
} from '@vue/compiler-core'
import { parserOptionsMinimal } from './parserOptionsMinimal'
import { parserOptionsStandard } from './parserOptionsStandard'
import { transformStyle } from './transforms/transformStyle'
import { transformCloak } from './transforms/vCloak'
import { transformVHtml } from './transforms/vHtml'
import { transformVText } from './transforms/vText'
2019-10-10 22:02:51 +00:00
import { transformModel } from './transforms/vModel'
import { transformOn } from './transforms/vOn'
import { transformShow } from './transforms/vShow'
import { TRANSITION, TRANSITION_GROUP } from './runtimeHelpers'
const parserOptions = __BROWSER__ ? parserOptionsMinimal : parserOptionsStandard
2019-09-20 04:12:37 +00:00
export function compile(
template: string,
options: CompilerOptions = {}
): CodegenResult {
return baseCompile(template, {
...parserOptions,
...options,
nodeTransforms: [transformStyle, ...(options.nodeTransforms || [])],
2019-09-21 21:42:12 +00:00
directiveTransforms: {
cloak: transformCloak,
html: transformVHtml,
text: transformVText,
2019-10-10 22:02:51 +00:00
model: transformModel, // override compiler-core
on: transformOn,
show: transformShow,
2019-09-21 21:42:12 +00:00
...(options.directiveTransforms || {})
},
isBuiltInComponent: tag => {
if (isBuiltInType(tag, `Transition`)) {
return TRANSITION
} else if (isBuiltInType(tag, `TransitionGroup`)) {
return TRANSITION_GROUP
}
2019-09-21 21:42:12 +00:00
}
2019-09-20 04:12:37 +00:00
})
}
2019-09-22 20:50:57 +00:00
2020-01-02 23:21:56 +00:00
export function parse(template: string, options: ParserOptions = {}): RootNode {
return baseParse(template, {
...parserOptions,
...options
})
}
2019-09-22 20:50:57 +00:00
export * from '@vue/compiler-core'