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 14x 14x 14x 14x 14x 14x 14x 2x 14x 14x 2x 27x 27x 1x 1x 1x 1x 1x 27x 19x 19x 27x 2x 2x 2x 2x 2x 34x 34x 34x 34x 2x 9x 5x 4x 4x 5x 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' } } } } } |