UNPKG

vexip-ui

Version:

A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good

1 lines 4.92 kB
{"version":3,"file":"full-screen.vue2.cjs","sources":["../../../components/full-screen/full-screen.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Portal } from '@/components/portal'\n\nimport { computed, ref, watch } from 'vue'\n\nimport { emitEvent, useId, useNameHelper, useProps } from '@vexip-ui/config'\nimport { useFullScreen } from '@vexip-ui/hooks'\nimport { fullScreenProps } from './props'\n// import { getIndexId } from './symbol'\n\nimport type { FullScreenSlotParams, FullScreenType } from './symbol'\n\ndefineOptions({ name: 'FullScreen' })\n\nconst _props = defineProps(fullScreenProps)\nconst props = useProps('fullScreen', _props, {\n tag: 'div',\n})\n\ndefineSlots<{ default: (params: FullScreenSlotParams) => any }>()\n\nconst nh = useNameHelper('full-screen')\n\nconst placeId = useId()\n\nconst isEntered = ref(false)\nconst zIndex = ref<number>()\nconst fullType = ref<FullScreenType>()\n\nconst full = computed(() => isEntered.value && fullType.value!)\nconst className = computed(() => [nh.b(), nh.bs('vars'), { [nh.bm('full')]: full.value }])\nconst transferTo = computed(() => (fullType.value === 'window' ? 'body' : ''))\n\nconst {\n enter: browserEnter,\n exit: browserExit,\n target: wrapper,\n full: browserFull,\n} = useFullScreen()\n\nwatch(browserFull, value => {\n if (!value) {\n isEntered.value = false\n fullType.value = undefined\n }\n})\nwatch(full, value => {\n emitEvent(props.onToggle, value)\n})\n\nasync function enter(type: FullScreenType = 'window', customZIndex?: number) {\n if (isEntered.value) {\n await exit()\n }\n\n if (type !== 'window') {\n await browserEnter()\n }\n\n isEntered.value = true\n zIndex.value = customZIndex\n fullType.value = type !== 'window' ? 'browser' : 'window'\n}\n\nasync function exit() {\n await browserExit()\n\n zIndex.value = undefined\n isEntered.value = false\n fullType.value = undefined\n}\n\nasync function toggle(type: FullScreenType = 'window', zIndex?: number) {\n if (isEntered.value) {\n if (fullType.value !== type) {\n await enter(type, zIndex)\n } else {\n await exit()\n }\n } else {\n await enter(type, zIndex)\n }\n}\n\ndefineExpose({\n full,\n placeId,\n wrapper,\n enter,\n exit,\n toggle,\n})\n</script>\n\n<template>\n <Portal :to=\"transferTo\">\n <component\n :is=\"props.tag || 'div'\"\n v-bind=\"$attrs\"\n ref=\"wrapper\"\n :class=\"className\"\n :style=\"{ [nh.cv('z-index')]: zIndex }\"\n >\n <slot\n :full=\"full\"\n :place-id=\"placeId\"\n :enter=\"enter\"\n :exit=\"exit\"\n :toggle=\"toggle\"\n ></slot>\n <div :id=\"placeId\" :class=\"nh.be('place')\" role=\"none\"></div>\n </component>\n </Portal>\n</template>\n"],"names":["_props","__props","props","useProps","nh","useNameHelper","placeId","useId","isEntered","ref","zIndex","fullType","full","computed","className","transferTo","browserEnter","browserExit","wrapper","browserFull","useFullScreen","watch","value","emitEvent","enter","type","customZIndex","exit","toggle","__expose","_createBlock","_unref","Portal","_openBlock","_resolveDynamicComponent","_mergeProps","$attrs","_renderSlot","_ctx","_createElementVNode","_normalizeClass"],"mappings":"qTAcA,MAAMA,EAASC,EACTC,EAAQC,EAAAA,SAAS,aAAcH,EAAQ,CAC3C,IAAK,KAAA,CACN,EAIKI,EAAKC,gBAAc,aAAa,EAEhCC,EAAUC,EAAAA,MAAM,EAEhBC,EAAYC,MAAI,EAAK,EACrBC,EAASD,EAAAA,IAAY,EACrBE,EAAWF,EAAAA,IAAoB,EAE/BG,EAAOC,EAAAA,SAAS,IAAML,EAAU,OAASG,EAAS,KAAM,EACxDG,EAAYD,EAAAA,SAAS,IAAM,CAACT,EAAG,EAAE,EAAGA,EAAG,GAAG,MAAM,EAAG,CAAE,CAACA,EAAG,GAAG,MAAM,CAAC,EAAGQ,EAAK,KAAM,CAAC,CAAC,EACnFG,EAAaF,EAAAA,SAAS,IAAOF,EAAS,QAAU,SAAW,OAAS,EAAG,EAEvE,CACJ,MAAOK,EACP,KAAMC,EACN,OAAQC,EACR,KAAMC,GACJC,gBAAc,EAElBC,QAAMF,EAAsBG,GAAA,CACrBA,IACHd,EAAU,MAAQ,GAClBG,EAAS,MAAQ,OACnB,CACD,EACDU,QAAMT,EAAeU,GAAA,CACTC,YAAArB,EAAM,SAAUoB,CAAK,CAAA,CAChC,EAEc,eAAAE,EAAMC,EAAuB,SAAUC,EAAuB,CACvElB,EAAU,OACZ,MAAMmB,EAAK,EAGTF,IAAS,UACX,MAAMT,EAAa,EAGrBR,EAAU,MAAQ,GAClBE,EAAO,MAAQgB,EACNf,EAAA,MAAQc,IAAS,SAAW,UAAY,QAAA,CAGnD,eAAeE,GAAO,CACpB,MAAMV,EAAY,EAElBP,EAAO,MAAQ,OACfF,EAAU,MAAQ,GAClBG,EAAS,MAAQ,MAAA,CAGJ,eAAAiB,EAAOH,EAAuB,SAAUf,EAAiB,CAClEF,EAAU,MACRG,EAAS,QAAUc,EACf,MAAAD,EAAMC,EAAMf,CAAM,EAExB,MAAMiB,EAAK,EAGP,MAAAH,EAAMC,EAAMf,CAAM,CAC1B,CAGW,OAAAmB,EAAA,CACX,KAAAjB,EACA,QAAAN,EACA,QAAAY,EACA,MAAAM,EACA,KAAAG,EACA,OAAAC,CAAA,CACD,wBAICE,EAAA,YAiBSC,QAAAC,CAAA,EAAA,CAjBA,GAAIjB,EAAU,OAAA,mBACrB,IAeY,EAfZkB,EAAAA,YAAAH,EAAAA,YAeYI,EAAA,wBAdLH,EAAK,MAAA7B,CAAA,EAAC,KADb,KAAA,EAAAiC,aAEUC,EAAM,OAAA,SACV,UAAJ,IAAIlB,EACH,MAAOJ,EAAS,MAChB,MAAU,CAAA,CAAAiB,EAAAA,MAAA3B,CAAA,EAAG,eAAgBM,EAAM,KAAA,CAAA,sBAEpC,IAMQ,CANR2B,aAMQC,EAAA,OAAA,UAAA,CALL,KAAM1B,EAAI,MACV,QAAUmB,QAAOzB,CAAA,EACjB,MAAAkB,EACA,KAAAG,EACA,OAAAC,CAAA,GAEHW,EAAAA,mBAA6D,MAAA,CAAvD,GAAIR,QAAOzB,CAAA,EAAG,MAAKkC,EAAE,eAAAT,EAAA,MAAE3B,CAAA,EAAC,GAAE,OAAA,CAAA,EAAW,KAAK,MAAA"}