@extclp/vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
1 lines • 2.94 kB
Source Map (JSON)
{"version":3,"file":"carousel-item.vue2.mjs","sources":["../../../components/carousel/carousel-item.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed, inject, onBeforeUnmount, reactive } from 'vue'\r\n\r\nimport { useNameHelper } from '@vexip-ui/config'\r\nimport { CAROUSEL_STATE } from './symbol'\r\n\r\nimport type { ItemState } from './symbol'\r\n\r\ndefineOptions({ name: 'CarouselItem' })\r\n\r\ndefineSlots<{\r\n default: (params: { active: boolean }) => any,\r\n}>()\r\n\r\nconst carouselState = inject(CAROUSEL_STATE, null)\r\n\r\nconst nh = useNameHelper('carousel')\r\nconst state: ItemState = reactive({\r\n label: -1,\r\n width: 0,\r\n height: 0,\r\n offset: 0,\r\n})\r\n\r\nconst active = computed(() => {\r\n return carouselState?.isItemActive(state.label) ?? false\r\n})\r\nconst className = computed(() => {\r\n return {\r\n [nh.be('item')]: true,\r\n [nh.bem('item', 'active')]: active.value,\r\n }\r\n})\r\nconst style = computed(() => {\r\n const { width, height, offset } = state\r\n\r\n return {\r\n width: width ? `${width}px` : undefined,\r\n height: height ? `${height}px` : undefined,\r\n transform: offset ? `translate${carouselState?.vertical ? 'Y' : 'X'}(${offset}px)` : undefined,\r\n }\r\n})\r\n\r\nif (carouselState) {\r\n carouselState.increaseItem(state)\r\n\r\n onBeforeUnmount(() => {\r\n carouselState.decreaseItem(state)\r\n })\r\n}\r\n\r\nfunction handleClick() {\r\n carouselState?.handleSelect(state.label)\r\n}\r\n</script>\r\n\r\n<template>\r\n <div\r\n :class=\"className\"\r\n role=\"listitem\"\r\n :style=\"style\"\r\n @click=\"handleClick\"\r\n >\r\n <slot :active=\"active\"></slot>\r\n </div>\r\n</template>\r\n"],"names":["carouselState","inject","CAROUSEL_STATE","nh","useNameHelper","state","reactive","active","computed","className","style","width","height","offset","onBeforeUnmount","handleClick","_createElementBlock","_renderSlot","_ctx"],"mappings":";;;;;;;AAcM,UAAAA,IAAgBC,EAAOC,GAAgB,IAAI,GAE3CC,IAAKC,EAAc,UAAU,GAC7BC,IAAmBC,EAAS;AAAA,MAChC,OAAO;AAAA,MACP,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ;AAAA,IAAA,CACT,GAEKC,IAASC,EAAS,OACfR,KAAA,gBAAAA,EAAe,aAAaK,EAAM,WAAU,EACpD,GACKI,IAAYD,EAAS,OAClB;AAAA,MACL,CAACL,EAAG,GAAG,MAAM,CAAC,GAAG;AAAA,MACjB,CAACA,EAAG,IAAI,QAAQ,QAAQ,CAAC,GAAGI,EAAO;AAAA,IACrC,EACD,GACKG,IAAQF,EAAS,MAAM;AAC3B,YAAM,EAAE,OAAAG,GAAO,QAAAC,GAAQ,QAAAC,EAAW,IAAAR;AAE3B,aAAA;AAAA,QACL,OAAOM,IAAQ,GAAGA,CAAK,OAAO;AAAA,QAC9B,QAAQC,IAAS,GAAGA,CAAM,OAAO;AAAA,QACjC,WAAWC,IAAS,YAAYb,KAAA,QAAAA,EAAe,WAAW,MAAM,GAAG,IAAIa,CAAM,QAAQ;AAAA,MACvF;AAAA,IAAA,CACD;AAED,IAAIb,MACFA,EAAc,aAAaK,CAAK,GAEhCS,EAAgB,MAAM;AACpB,MAAAd,EAAc,aAAaK,CAAK;AAAA,IAAA,CACjC;AAGH,aAASU,IAAc;AACN,MAAAf,KAAA,QAAAA,EAAA,aAAaK,EAAM;AAAA,IAAK;2BAKvCW,EAOM,OAAA;AAAA,MANH,SAAOP,EAAS,KAAA;AAAA,MACjB,MAAK;AAAA,MACJ,SAAOC,EAAK,KAAA;AAAA,MACZ,SAAOK;AAAA,IAAA;MAERE,EAA8BC,EAAA,QAAA,WAAA,EAAvB,QAAQX,EAAM,MAAA,CAAA;AAAA;;;"}