Files
AstralRinth/packages/ui/src/composables/how-ago.ts
Cal H. 2aabcf36ee refactor: migrate to common eslint+prettier configs (#4168)
* refactor: migrate to common eslint+prettier configs

* fix: prettier frontend

* feat: config changes

* fix: lint issues

* fix: lint

* fix: type imports

* fix: cyclical import issue

* fix: lockfile

* fix: missing dep

* fix: switch to tabs

* fix: continue switch to tabs

* fix: rustfmt parity

* fix: moderation lint issue

* fix: lint issues

* fix: ui intl

* fix: lint issues

* Revert "fix: rustfmt parity"

This reverts commit cb99d2376c321d813d4b7fc7e2a213bb30a54711.

* feat: revert last rs
2025-08-14 20:48:38 +00:00

24 lines
783 B
TypeScript

import { createFormatter, type FormatOptions, type Formatter } from '@vintl/how-ago'
import { useVIntl } from '@vintl/vintl'
import type { IntlController } from '@vintl/vintl/controller'
import { computed } from 'vue'
/* eslint-disable @typescript-eslint/no-explicit-any */
const formatters = new WeakMap<IntlController<any>, Formatter>()
export function useRelativeTime(): Formatter {
const vintl = useVIntl()
let formatter = formatters.get(vintl)
if (formatter == null) {
const formatterRef = computed(() => createFormatter(vintl.intl))
const defaultOptions: FormatOptions = { roundingMode: 'halfExpand' as const }
formatter = (value, options) => formatterRef.value(value, { ...options, ...defaultOptions })
formatters.set(vintl, formatter)
}
return formatter
}