d3-time-format-thai
Version:
Thai locale for d3-time-format
65 lines (63 loc) • 3.06 kB
JavaScript
'use client'
// src/index.ts
import { timeFormatLocale } from "@visx/vendor/d3-time-format";
var TimeFormats = {
FULL_DATE: "%A\u0E17\u0E35\u0E48 %-d %B \u0E1E.\u0E28. %Y",
SHORT_DATE: "%-d %b %y"
};
var THAI_LOCALE_DEFINITION = {
dateTime: "%x %H:%M \u0E19.",
date: TimeFormats.SHORT_DATE,
time: "%H:%M \u0E19.",
periods: ["", ""],
days: ["\u0E27\u0E31\u0E19\u0E2D\u0E32\u0E17\u0E34\u0E15\u0E22\u0E4C", "\u0E27\u0E31\u0E19\u0E08\u0E31\u0E19\u0E17\u0E23\u0E4C", "\u0E27\u0E31\u0E19\u0E2D\u0E31\u0E07\u0E04\u0E32\u0E23", "\u0E27\u0E31\u0E19\u0E1E\u0E38\u0E18", "\u0E27\u0E31\u0E19\u0E1E\u0E24\u0E2B\u0E31\u0E2A", "\u0E27\u0E31\u0E19\u0E28\u0E38\u0E01\u0E23\u0E4C", "\u0E27\u0E31\u0E19\u0E40\u0E2A\u0E32\u0E23\u0E4C"],
shortDays: ["\u0E2D\u0E32.", "\u0E08.", "\u0E2D.", "\u0E1E.", "\u0E1E\u0E24.", "\u0E28.", "\u0E2A."],
months: [
"\u0E21\u0E01\u0E23\u0E32\u0E04\u0E21",
"\u0E01\u0E38\u0E21\u0E20\u0E32\u0E1E\u0E31\u0E19\u0E18\u0E4C",
"\u0E21\u0E35\u0E19\u0E32\u0E04\u0E21",
"\u0E40\u0E21\u0E29\u0E32\u0E22\u0E19",
"\u0E1E\u0E24\u0E29\u0E20\u0E32\u0E04\u0E21",
"\u0E21\u0E34\u0E16\u0E38\u0E19\u0E32\u0E22\u0E19",
"\u0E01\u0E23\u0E01\u0E0E\u0E32\u0E04\u0E21",
"\u0E2A\u0E34\u0E07\u0E2B\u0E32\u0E04\u0E21",
"\u0E01\u0E31\u0E19\u0E22\u0E32\u0E22\u0E19",
"\u0E15\u0E38\u0E25\u0E32\u0E04\u0E21",
"\u0E1E\u0E24\u0E28\u0E08\u0E34\u0E01\u0E32\u0E22\u0E19",
"\u0E18\u0E31\u0E19\u0E27\u0E32\u0E04\u0E21"
],
shortMonths: ["\u0E21.\u0E04.", "\u0E01.\u0E1E.", "\u0E21\u0E35.\u0E04.", "\u0E40\u0E21.\u0E22.", "\u0E1E.\u0E04.", "\u0E21\u0E34.\u0E22.", "\u0E01.\u0E04.", "\u0E2A.\u0E04.", "\u0E01.\u0E22.", "\u0E15.\u0E04.", "\u0E1E.\u0E22.", "\u0E18.\u0E04."]
};
var PLACEHOLDER_YEAR = "##Y";
var PLACEHOLDER_SHORT_YEAR = "##y";
var shortYearRegex = /%y/g;
var yearRegex = /%Y/g;
var placeholderShortYearRegex = new RegExp(PLACEHOLDER_SHORT_YEAR, "g");
var placeholderYearRegex = new RegExp(PLACEHOLDER_YEAR, "g");
var locale = timeFormatLocale(THAI_LOCALE_DEFINITION);
function factory(originalFormat) {
return (format) => {
const hasYear = format.includes("%Y") || format.includes("%y") || format.includes("%x") || format.includes("%c");
if (hasYear) {
const cleanedFormatter = originalFormat(
format.replace(/%c/g, THAI_LOCALE_DEFINITION.dateTime).replace(/%x/g, THAI_LOCALE_DEFINITION.date).replace(shortYearRegex, PLACEHOLDER_SHORT_YEAR).replace(yearRegex, PLACEHOLDER_YEAR)
);
const fullYearFormat = originalFormat("%Y");
return (time) => {
const fullYear = fullYearFormat(time);
const correctYear = `${Number(fullYear) + 543}`;
const { length } = correctYear;
return cleanedFormatter(time).replace(placeholderShortYearRegex, correctYear.slice(length - 2, length)).replace(placeholderYearRegex, correctYear);
};
}
return originalFormat(format);
};
}
var timeFormat = factory(locale.format);
var utcFormat = factory(locale.utcFormat);
export {
THAI_LOCALE_DEFINITION,
TimeFormats,
timeFormat,
utcFormat
};