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 61 62 63 64 65 66 | 2x 2x 2x 2x 13x 13x 13x 13x 13x 13x 13x 2x 13x 13x 2x 26x 26x 1x 1x 1x 1x 1x 26x 18x 18x 26x 2x 2x 2x 2x 2x 32x 32x 32x 32x 2x 9x 4x 3x 3x 4x 9x | import type { ObjectDirective } from '@vue/runtime-core' export const vShowOriginalDisplay: unique symbol = Symbol('_vod') export const vShowHidden: unique symbol = Symbol('_vsh') export interface VShowElement extends HTMLElement { // _vod = vue original display [vShowOriginalDisplay]: string [vShowHidden]: boolean } export const vShow: ObjectDirective<VShowElement> & { name?: 'show' } = { beforeMount(el, { value }, { transition }) { el[vShowOriginalDisplay] = el.style.display === 'none' ? '' : el.style.display if (transition && value) { transition.beforeEnter(el) } else { setDisplay(el, value) } }, mounted(el, { value }, { transition }) { if (transition && value) { transition.enter(el) } }, updated(el, { value, oldValue }, { transition }) { if (!value === !oldValue) return if (transition) { if (value) { transition.beforeEnter(el) setDisplay(el, true) transition.enter(el) } else { transition.leave(el, () => { setDisplay(el, false) }) } } else { setDisplay(el, value) } }, beforeUnmount(el, { value }) { setDisplay(el, value) }, } if (__DEV__) { vShow.name = 'show' } function setDisplay(el: VShowElement, value: unknown): void { el.style.display = value ? el[vShowOriginalDisplay] : 'none' el[vShowHidden] = !value } // SSR vnode transforms, only used when user includes client-oriented render // function in SSR export function initVShowForSSR(): void { vShow.getSSRProps = ({ value }) => { if (!value) { return { style: { display: 'none' } } } } } |