Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | 1x 1x 20x 20x 1x 1x 1x 1x | export function initExposed(vm) { const expose = vm.$options.expose || {} if (Array.isArray(expose)) { if (expose.length) { const exposed = vm._exposed || (vm._exposed = {}) I expose.forEach((key) => { Object.defineProperty(exposed, key, { get: () => vm[key], set: (val) => (vm[key] = val) }) }) return exposed } else if (!vm._exposed) { vm._exposed = {} } } } export function getPublicInstance(vm) { if (!vm) return null return getExposeProxy(vm) || vm } export type PublicPropertiesMap = Record< string, (i) => any > export const publicPropertiesMap: PublicPropertiesMap = { $data: (vm) => vm.$data, $props: (vm) => vm.$props, $refs: (vm) => vm.$refs, $parent: (vm) => vm.$parent, $root: (vm) => vm.$root, $children: (vm) => vm.$children, $options: (vm) => vm.$options, $emit: (vm) => vm.$emit, $nextTick: (vm) => vm.$nextTick, } export function getExposeProxy(vm) { if (vm._exposed) { return ( vm._exposeProxy || (vm._exposeProxy = new Proxy(vm._exposed, { get(target, key: string) { if (key in target) { return target[key] } else if (key in publicPropertiesMap) { return publicPropertiesMap[key](vm) } }, has(target, key: string) { return key in target || key in publicPropertiesMap }, })) ) } } |