@shopify/polaris
Version:
Shopify’s product component library
58 lines (57 loc) • 2.05 kB
JavaScript
const MINUTE = 60;
const HOUR = MINUTE * 60;
export function ensureTwoDigits(num) {
return num > 9 ? String(num) : `0${num}`;
}
export function secondsToTimeComponents(seconds) {
return {
hours: Math.floor(seconds / HOUR),
minutes: Math.floor((seconds % HOUR) / MINUTE),
seconds: seconds % MINUTE,
};
}
export function secondsToTimestamp(numSeconds) {
const { hours, minutes, seconds } = secondsToTimeComponents(numSeconds);
const hasHours = numSeconds > HOUR;
const hoursText = hasHours ? `${hours}:` : '';
const minutesText = `${hasHours ? ensureTwoDigits(minutes) : minutes}:`;
const secondsText = `${ensureTwoDigits(seconds)}`;
return `${hoursText}${minutesText}${secondsText}`;
}
export function secondsToDurationTranslationKey(numSeconds) {
const { hours, minutes, seconds } = secondsToTimeComponents(numSeconds);
let durationKey = 'Polaris.VideoThumbnail.playButtonA11yLabel.duration';
if (hours) {
durationKey += `.hours.${hours > 1 ? 'other' : 'one'}`;
if (seconds) {
if (minutes > 1) {
durationKey += `${seconds > 1 ? '.minutesAndSeconds' : '.minutesAndSecond'}`;
}
else if (minutes === 1) {
durationKey += `${seconds > 1 ? '.minuteAndSeconds' : '.minuteAndSecond'}`;
}
else {
durationKey += `${seconds > 1 ? '.andSeconds' : '.andSecond'}`;
}
}
else if (minutes) {
durationKey += `${minutes > 1 ? '.andMinutes' : '.andMinute'}`;
}
else {
durationKey += '.only';
}
}
else if (minutes) {
durationKey += `.minutes.${minutes > 1 ? 'other' : 'one'}`;
if (seconds) {
durationKey += `${seconds > 1 ? '.andSeconds' : '.andSecond'}`;
}
else {
durationKey += '.only';
}
}
else if (seconds) {
durationKey += seconds > 1 ? '.seconds.other' : '.seconds.one';
}
return durationKey;
}