@extclp/vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
1 lines • 4.46 kB
Source Map (JSON)
{"version":3,"file":"full-screen.vue2.mjs","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, useNameHelper, useProps } from '@vexip-ui/config'\nimport { useFullScreen } from '@vexip-ui/hooks'\nimport { getGlobalCount } from '@vexip-ui/utils'\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 = `__vxp-full-screen-id-${getGlobalCount()}`\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","useProps","__props","nh","useNameHelper","placeId","getGlobalCount","isEntered","ref","zIndex","fullType","full","computed","className","transferTo","browserEnter","browserExit","wrapper","browserFull","useFullScreen","watch","value","emitEvent","enter","type","customZIndex","exit","toggle","__expose"],"mappings":";;;;;;;;;;;;AAgBM,UAAAA,IAAQC,EAAS,cADRC,GAC8B;AAAA,MAC3C,KAAK;AAAA,IAAA,CACN,GAIKC,IAAKC,EAAc,aAAa,GAEhCC,IAAU,wBAAwBC,EAAgB,CAAA,IAElDC,IAAYC,EAAI,EAAK,GACrBC,IAASD,EAAY,GACrBE,IAAWF,EAAoB,GAE/BG,IAAOC,EAAS,MAAML,EAAU,SAASG,EAAS,KAAM,GACxDG,IAAYD,EAAS,MAAM,CAACT,EAAG,EAAE,GAAGA,EAAG,GAAG,MAAM,GAAG,EAAE,CAACA,EAAG,GAAG,MAAM,CAAC,GAAGQ,EAAK,MAAM,CAAC,CAAC,GACnFG,IAAaF,EAAS,MAAOF,EAAS,UAAU,WAAW,SAAS,EAAG,GAEvE;AAAA,MACJ,OAAOK;AAAA,MACP,MAAMC;AAAA,MACN,QAAQC;AAAA,MACR,MAAMC;AAAA,QACJC,EAAc;AAElB,IAAAC,EAAMF,GAAa,CAASG,MAAA;AAC1B,MAAKA,MACHd,EAAU,QAAQ,IAClBG,EAAS,QAAQ;AAAA,IACnB,CACD,GACDU,EAAMT,GAAM,CAASU,MAAA;AACT,MAAAC,EAAAtB,EAAM,UAAUqB,CAAK;AAAA,IAAA,CAChC;AAEc,mBAAAE,EAAMC,IAAuB,UAAUC,GAAuB;AAC3E,MAAIlB,EAAU,SACZ,MAAMmB,EAAK,GAGTF,MAAS,YACX,MAAMT,EAAa,GAGrBR,EAAU,QAAQ,IAClBE,EAAO,QAAQgB,GACNf,EAAA,QAAQc,MAAS,WAAW,YAAY;AAAA,IAAA;AAGnD,mBAAeE,IAAO;AACpB,YAAMV,EAAY,GAElBP,EAAO,QAAQ,QACfF,EAAU,QAAQ,IAClBG,EAAS,QAAQ;AAAA,IAAA;AAGJ,mBAAAiB,EAAOH,IAAuB,UAAUf,GAAiB;AACtE,MAAIF,EAAU,QACRG,EAAS,UAAUc,IACf,MAAAD,EAAMC,GAAMf,CAAM,IAExB,MAAMiB,EAAK,IAGP,MAAAH,EAAMC,GAAMf,CAAM;AAAA,IAC1B;AAGW,WAAAmB,EAAA;AAAA,MACX,MAAAjB;AAAA,MACA,SAAAN;AAAA,MACA,SAAAY;AAAA,MACA,OAAAM;AAAA,MACA,MAAAG;AAAA,MACA,QAAAC;AAAA,IAAA,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}