Import AITURK IDE 1.0.0-beta.1 from Hermes 63279301; preserve MIT license
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
import { fmtClock, fmtDayTime } from '@/lib/time'
|
||||
|
||||
const fmtTimelineClock = new Intl.DateTimeFormat(undefined, {
|
||||
fractionalSecondDigits: 3,
|
||||
hour: 'numeric',
|
||||
minute: '2-digit',
|
||||
second: '2-digit'
|
||||
})
|
||||
|
||||
const timelineDate = (seconds: number | undefined): Date | null => {
|
||||
if (typeof seconds !== 'number' || !Number.isFinite(seconds) || seconds <= 0) {
|
||||
return null
|
||||
}
|
||||
|
||||
const date = new Date(seconds * 1000)
|
||||
|
||||
return Number.isNaN(date.getTime()) ? null : date
|
||||
}
|
||||
|
||||
/** Millisecond-precise local clock for transcript activity boundaries. */
|
||||
export function formatTimelineTimestamp(seconds: number | undefined): string {
|
||||
const date = timelineDate(seconds)
|
||||
|
||||
return date ? fmtTimelineClock.format(date) : ''
|
||||
}
|
||||
|
||||
export function formatTimelineRange(start: number | undefined, end: number | undefined): string {
|
||||
const from = formatTimelineTimestamp(start)
|
||||
|
||||
if (!from) {
|
||||
return ''
|
||||
}
|
||||
|
||||
const to = formatTimelineTimestamp(end)
|
||||
|
||||
return to ? `${from} → ${to}` : from
|
||||
}
|
||||
|
||||
function startOfDay(d: Date): number {
|
||||
return new Date(d.getFullYear(), d.getMonth(), d.getDate()).getTime()
|
||||
}
|
||||
|
||||
export function formatMessageTimestamp(
|
||||
value: Date | string | number | undefined,
|
||||
labels: { today: (time: string) => string; yesterday: (time: string) => string }
|
||||
): string {
|
||||
if (!value) {
|
||||
return ''
|
||||
}
|
||||
|
||||
const date = value instanceof Date ? value : new Date(value)
|
||||
|
||||
if (Number.isNaN(date.getTime())) {
|
||||
return ''
|
||||
}
|
||||
|
||||
const dayDelta = Math.round((startOfDay(new Date()) - startOfDay(date)) / 86_400_000)
|
||||
|
||||
if (dayDelta === 0) {
|
||||
return labels.today(fmtClock.format(date))
|
||||
}
|
||||
|
||||
if (dayDelta === 1) {
|
||||
return labels.yesterday(fmtClock.format(date))
|
||||
}
|
||||
|
||||
return fmtDayTime.format(date)
|
||||
}
|
||||
Reference in New Issue
Block a user