UNPKG

@extclp/vexip-ui

Version:

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

1 lines 4.47 kB
{"version":3,"file":"time-ago.vue2.mjs","sources":["../../../components/time-ago/time-ago.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed, onBeforeUnmount, ref, toRef, watch } from 'vue'\r\n\r\nimport { useLocale, useNameHelper, useProps, useWordSpace } from '@vexip-ui/config'\r\nimport { format, toDate } from '@vexip-ui/utils'\r\nimport { computeTimeAgo, getId, subscribe, unsubscribe } from './helper'\r\nimport { timeAgoProps } from './props'\r\n\r\nimport type { Dateable } from '@vexip-ui/utils'\r\n\r\ndefineOptions({ name: 'TimeAgo' })\r\n\r\nconst _props = defineProps(timeAgoProps)\r\nconst props = useProps('timeAgo', _props, {\r\n locale: null,\r\n datetime: {\r\n default: () => Date.now(),\r\n static: true,\r\n },\r\n interval: {\r\n default: false,\r\n validator: value => typeof value === 'boolean' || value >= 1,\r\n },\r\n title: false,\r\n titleFormat: 'yyyy-MM-dd HH:mm:ss',\r\n})\r\n\r\nconst nh = useNameHelper('time-ago')\r\nconst datetime = toDateValue(props.datetime)\r\nconst locale = useLocale('timeAgo', toRef(props, 'locale'))\r\nconst wordSpace = useWordSpace()\r\nconst timeAgo = ref(computeTimeAgo(datetime, Date.now(), locale.value, wordSpace.value))\r\n\r\nconst id = getId()\r\nconst record = {\r\n datetime,\r\n timeAgo,\r\n locale,\r\n wordSpace,\r\n interval: parseInterval(props.interval),\r\n updated: Date.now(),\r\n}\r\n\r\nconst currentTitle = computed(() => {\r\n if (!props.title) return undefined\r\n\r\n if (typeof props.title === 'string') return props.title\r\n\r\n return format(props.datetime, props.titleFormat)\r\n})\r\n\r\nsubscribe(id, record)\r\n\r\nwatch(\r\n () => props.datetime,\r\n value => {\r\n record.datetime = toDateValue(value)\r\n timeAgo.value = computeTimeAgo(datetime, Date.now(), locale.value, wordSpace.value)\r\n },\r\n)\r\nwatch(\r\n () => props.interval,\r\n value => {\r\n record.interval = parseInterval(value)\r\n },\r\n)\r\n\r\nonBeforeUnmount(() => {\r\n unsubscribe(id)\r\n})\r\n\r\nfunction parseInterval(interval: boolean | number) {\r\n return interval && (interval === true ? 1e4 : interval * 1000)\r\n}\r\n\r\nfunction toDateValue(value: Dateable) {\r\n if (typeof value === 'string') {\r\n value = value.replace(/-/g, '/')\r\n }\r\n\r\n return toDate(value)\r\n}\r\n\r\ndefineExpose({ timeAgo })\r\n</script>\r\n\r\n<template>\r\n <span :class=\"[nh.b(), props.inherit && nh.bm('inherit')]\" :title=\"currentTitle\">\r\n {{ timeAgo }}\r\n </span>\r\n</template>\r\n"],"names":["props","useProps","__props","value","nh","useNameHelper","datetime","toDateValue","locale","useLocale","toRef","wordSpace","useWordSpace","timeAgo","ref","computeTimeAgo","id","getId","record","parseInterval","currentTitle","computed","format","subscribe","watch","onBeforeUnmount","unsubscribe","interval","toDate","__expose","_createElementBlock","_normalizeClass","_unref","_hoisted_1"],"mappings":";;;;;;;;;;AAaM,UAAAA,IAAQC,EAAS,WADRC,GAC2B;AAAA,MACxC,QAAQ;AAAA,MACR,UAAU;AAAA,QACR,SAAS,MAAM,KAAK,IAAI;AAAA,QACxB,QAAQ;AAAA,MACV;AAAA,MACA,UAAU;AAAA,QACR,SAAS;AAAA,QACT,WAAW,CAAAC,MAAS,OAAOA,KAAU,aAAaA,KAAS;AAAA,MAC7D;AAAA,MACA,OAAO;AAAA,MACP,aAAa;AAAA,IAAA,CACd,GAEKC,IAAKC,EAAc,UAAU,GAC7BC,IAAWC,EAAYP,EAAM,QAAQ,GACrCQ,IAASC,EAAU,WAAWC,EAAMV,GAAO,QAAQ,CAAC,GACpDW,IAAYC,EAAa,GACzBC,IAAUC,EAAIC,EAAeT,GAAU,KAAK,IAAI,GAAGE,EAAO,OAAOG,EAAU,KAAK,CAAC,GAEjFK,IAAKC,EAAM,GACXC,IAAS;AAAA,MACb,UAAAZ;AAAA,MACA,SAAAO;AAAA,MACA,QAAAL;AAAA,MACA,WAAAG;AAAA,MACA,UAAUQ,EAAcnB,EAAM,QAAQ;AAAA,MACtC,SAAS,KAAK,IAAI;AAAA,IACpB,GAEMoB,IAAeC,EAAS,MAAM;AAC9B,UAACrB,EAAM;AAEX,eAAI,OAAOA,EAAM,SAAU,WAAiBA,EAAM,QAE3CsB,EAAOtB,EAAM,UAAUA,EAAM,WAAW;AAAA,IAAA,CAChD;AAED,IAAAuB,EAAUP,GAAIE,CAAM,GAEpBM;AAAA,MACE,MAAMxB,EAAM;AAAA,MACZ,CAASG,MAAA;AACA,QAAAe,EAAA,WAAWX,EAAYJ,CAAK,GAC3BU,EAAA,QAAQE,EAAeT,GAAU,KAAK,IAAO,GAAAE,EAAO,OAAOG,EAAU,KAAK;AAAA,MAAA;AAAA,IAEtF,GACAa;AAAA,MACE,MAAMxB,EAAM;AAAA,MACZ,CAASG,MAAA;AACA,QAAAe,EAAA,WAAWC,EAAchB,CAAK;AAAA,MAAA;AAAA,IAEzC,GAEAsB,EAAgB,MAAM;AACpB,MAAAC,EAAYV,CAAE;AAAA,IAAA,CACf;AAED,aAASG,EAAcQ,GAA4B;AACjD,aAAOA,MAAaA,MAAa,KAAO,MAAMA,IAAW;AAAA,IAAA;AAG3D,aAASpB,EAAYJ,GAAiB;AAChC,aAAA,OAAOA,KAAU,aACXA,IAAAA,EAAM,QAAQ,MAAM,GAAG,IAG1ByB,EAAOzB,CAAK;AAAA,IAAA;AAGR,WAAA0B,EAAA,EAAE,SAAAhB,GAAS,mBAItBiB,EAEO,QAAA;AAAA,MAFA,OAAKC,EAAA,CAAGC,EAAE5B,CAAA,EAAC,KAAK4B,EAAKhC,CAAA,EAAC,WAAWgC,EAAE5B,CAAA,EAAC,GAAE,SAAA,CAAA,CAAA;AAAA,MAAe,OAAOgB,EAAY;AAAA,SAC1EP,EAAO,KAAA,GAAA,IAAAoB,CAAA;AAAA;;"}