vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
1 lines • 4.3 kB
Source Map (JSON)
{"version":3,"file":"timeline.vue2.cjs","sources":["../../../components/timeline/timeline.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, provide, reactive, toRef } from 'vue'\n\nimport { emitEvent, useNameHelper, useProps } from '@vexip-ui/config'\nimport { debounceMinor, isNull } from '@vexip-ui/utils'\nimport { timelineProps } from './props'\nimport { TIMELINE_STATE } from './symbol'\n\nimport type { ItemState, TimelineState } from './symbol'\n\ndefineOptions({ name: 'Timeline' })\n\nconst _props = defineProps(timelineProps)\nconst props = useProps('timeline', _props, {\n pending: false,\n dashed: false,\n lineColor: null,\n spacing: null,\n flip: false,\n horizontal: false,\n alternate: false,\n})\n\nconst nh = useNameHelper('timeline')\nconst itemStates = reactive(new Set<ItemState>())\n\nconst className = computed(() => {\n return {\n [nh.b()]: true,\n [nh.bs('vars')]: true,\n [nh.bm('inherit')]: props.inherit,\n [nh.bm('pending')]: props.pending,\n [nh.bm('alternate')]: props.alternate,\n [nh.bm('flip')]: props.flip,\n [nh.bm('horizontal')]: props.horizontal,\n }\n})\nconst height = computed(() => {\n return Math.max(...Array.from(itemStates).map(state => state.height)) * 2\n})\n\ndefineExpose({ itemStates })\n\nconst refreshLabels = debounceMinor(() => {\n const total = itemStates.size\n\n Array.from(itemStates).forEach((item, index) => {\n item.index = index + 1\n item.total = total\n\n if (isNull(item.label)) {\n item.label = index + 1\n }\n })\n})\n\nconst state: TimelineState = reactive({\n dashed: toRef(props, 'dashed'),\n lineColor: toRef(props, 'lineColor'),\n spacing: toRef(props, 'spacing'),\n alternate: toRef(props, 'alternate'),\n horizontal: toRef(props, 'horizontal'),\n increaseItem,\n decreaseItem,\n handleSignalClick,\n})\n\nprovide(TIMELINE_STATE, state)\n\nfunction increaseItem(item: ItemState) {\n itemStates.add(item)\n refreshLabels()\n}\n\nfunction decreaseItem(item: ItemState) {\n itemStates.delete(item)\n refreshLabels()\n}\n\nfunction handleSignalClick(label: string | number) {\n emitEvent(props.onSignalClick, label)\n}\n</script>\n\n<template>\n <div\n :class=\"className\"\n :style=\"{ height: props.horizontal && props.alternate ? `${height}px` : undefined }\"\n >\n <slot></slot>\n </div>\n</template>\n"],"names":["_props","__props","props","useProps","nh","useNameHelper","itemStates","reactive","className","computed","height","state","__expose","refreshLabels","debounceMinor","total","item","index","isNull","toRef","increaseItem","decreaseItem","handleSignalClick","provide","TIMELINE_STATE","label","emitEvent","_createElementBlock","_normalizeStyle","_unref","_renderSlot","_ctx"],"mappings":"mPAYA,MAAMA,EAASC,EACTC,EAAQC,EAAAA,SAAS,WAAYH,EAAQ,CACzC,QAAS,GACT,OAAQ,GACR,UAAW,KACX,QAAS,KACT,KAAM,GACN,WAAY,GACZ,UAAW,EAAA,CACZ,EAEKI,EAAKC,gBAAc,UAAU,EAC7BC,EAAaC,EAAAA,SAAa,IAAA,GAAgB,EAE1CC,EAAYC,EAAAA,SAAS,KAClB,CACL,CAACL,EAAG,EAAE,CAAC,EAAG,GACV,CAACA,EAAG,GAAG,MAAM,CAAC,EAAG,GACjB,CAACA,EAAG,GAAG,SAAS,CAAC,EAAGF,EAAM,QAC1B,CAACE,EAAG,GAAG,SAAS,CAAC,EAAGF,EAAM,QAC1B,CAACE,EAAG,GAAG,WAAW,CAAC,EAAGF,EAAM,UAC5B,CAACE,EAAG,GAAG,MAAM,CAAC,EAAGF,EAAM,KACvB,CAACE,EAAG,GAAG,YAAY,CAAC,EAAGF,EAAM,UAC/B,EACD,EACKQ,EAASD,EAAAA,SAAS,IACf,KAAK,IAAI,GAAG,MAAM,KAAKH,CAAU,EAAE,IAAIK,GAASA,EAAM,MAAM,CAAC,EAAI,CACzE,EAEYC,EAAA,CAAE,WAAAN,EAAY,EAErB,MAAAO,EAAgBC,EAAAA,cAAc,IAAM,CACxC,MAAMC,EAAQT,EAAW,KAEzB,MAAM,KAAKA,CAAU,EAAE,QAAQ,CAACU,EAAMC,IAAU,CAC9CD,EAAK,MAAQC,EAAQ,EACrBD,EAAK,MAAQD,EAETG,EAAA,OAAOF,EAAK,KAAK,IACnBA,EAAK,MAAQC,EAAQ,EACvB,CACD,CAAA,CACF,EAEKN,EAAuBJ,EAAAA,SAAS,CACpC,OAAQY,EAAAA,MAAMjB,EAAO,QAAQ,EAC7B,UAAWiB,EAAAA,MAAMjB,EAAO,WAAW,EACnC,QAASiB,EAAAA,MAAMjB,EAAO,SAAS,EAC/B,UAAWiB,EAAAA,MAAMjB,EAAO,WAAW,EACnC,WAAYiB,EAAAA,MAAMjB,EAAO,YAAY,EACrC,aAAAkB,EACA,aAAAC,EACA,kBAAAC,CAAA,CACD,EAEDC,EAAA,QAAQC,iBAAgBb,CAAK,EAE7B,SAASS,EAAaJ,EAAiB,CACrCV,EAAW,IAAIU,CAAI,EACLH,EAAA,CAAA,CAGhB,SAASQ,EAAaL,EAAiB,CACrCV,EAAW,OAAOU,CAAI,EACRH,EAAA,CAAA,CAGhB,SAASS,EAAkBG,EAAwB,CACvCC,YAAAxB,EAAM,cAAeuB,CAAK,CAAA,6BAKpCE,EAAA,mBAKM,MAAA,CAJH,uBAAOnB,EAAS,KAAA,EAChB,MAAKoB,EAAA,eAAA,CAAA,OAAYC,EAAA,MAAK3B,CAAA,EAAC,YAAc2B,EAAK,MAAA3B,CAAA,EAAC,UAAS,GAAMQ,EAAM,KAAA,KAAO,MAAS,CAAA,CAAA,GAEjFoB,aAAaC,EAAA,OAAA,SAAA"}