vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
3 lines (2 loc) • 1.42 kB
JavaScript
;const t=require("vue"),i=require("@vexip-ui/config"),f=require("@vexip-ui/utils"),r=require("./helper.cjs"),y=require("./props.cjs"),b=["title"],w=t.defineComponent({name:"TimeAgo",__name:"time-ago",props:y.timeAgoProps,setup(g,{expose:v}){const _=g,o=i.useProps("timeAgo",_,{locale:null,datetime:{default:()=>Date.now(),static:!0},interval:{default:!1,validator:e=>typeof e=="boolean"||e>=1},title:!1,titleFormat:"yyyy-MM-dd HH:mm:ss"}),u=i.useNameHelper("time-ago"),a=d(o.datetime),s=i.useLocale("timeAgo",t.toRef(o,"locale")),c=i.useWordSpace(),n=t.ref(r.computeTimeAgo(a,Date.now(),s.value,c.value)),m=r.getId(),l={datetime:a,timeAgo:n,locale:s,wordSpace:c,interval:p(o.interval),updated:Date.now()},h=t.computed(()=>{if(o.title)return typeof o.title=="string"?o.title:f.format(o.datetime,o.titleFormat)});r.subscribe(m,l),t.watch(()=>o.datetime,e=>{l.datetime=d(e),n.value=r.computeTimeAgo(a,Date.now(),s.value,c.value)}),t.watch(()=>o.interval,e=>{l.interval=p(e)}),t.onBeforeUnmount(()=>{r.unsubscribe(m)});function p(e){return e&&(e===!0?1e4:e*1e3)}function d(e){return typeof e=="string"&&(e=e.replace(/-/g,"/")),f.toDate(e)}return v({timeAgo:n}),(e,A)=>(t.openBlock(),t.createElementBlock("span",{class:t.normalizeClass([t.unref(u).b(),t.unref(o).inherit&&t.unref(u).bm("inherit")]),title:h.value},t.toDisplayString(n.value),11,b))}});module.exports=w;
//# sourceMappingURL=time-ago.vue2.cjs.map