{"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"}