UNPKG

@freshworks/crayons

Version:
636 lines (599 loc) 20.4 kB
import { b as buildFormatLongFn, a as buildLocalizeFn, c as buildMatchPatternFn, d as buildMatchFn } from './index-dc611d24.js'; import { t as toDate, i as isSameUTCWeek } from './index-d2a6c100.js'; function declension(scheme, count) { // scheme for count=1 exists if (scheme.one !== undefined && count === 1) { return scheme.one; } var rem10 = count % 10; var rem100 = count % 100; // 1, 21, 31, ... if (rem10 === 1 && rem100 !== 11) { return scheme.singularNominative.replace('{{count}}', String(count)); // 2, 3, 4, 22, 23, 24, 32 ... } else if (rem10 >= 2 && rem10 <= 4 && (rem100 < 10 || rem100 > 20)) { return scheme.singularGenitive.replace('{{count}}', String(count)); // 5, 6, 7, 8, 9, 10, 11, ... } else { return scheme.pluralGenitive.replace('{{count}}', String(count)); } } function buildLocalizeTokenFn(scheme) { return function (count, options) { if (options && options.addSuffix) { if (options.comparison && options.comparison > 0) { if (scheme.future) { return declension(scheme.future, count); } else { return 'праз ' + declension(scheme.regular, count); } } else { if (scheme.past) { return declension(scheme.past, count); } else { return declension(scheme.regular, count) + ' таму'; } } } else { return declension(scheme.regular, count); } }; } var halfAMinute = function halfAMinute(_, options) { if (options && options.addSuffix) { if (options.comparison && options.comparison > 0) { return 'праз паўхвіліны'; } else { return 'паўхвіліны таму'; } } return 'паўхвіліны'; }; var formatDistanceLocale = { lessThanXSeconds: buildLocalizeTokenFn({ regular: { one: 'менш за секунду', singularNominative: 'менш за {{count}} секунду', singularGenitive: 'менш за {{count}} секунды', pluralGenitive: 'менш за {{count}} секунд' }, future: { one: 'менш, чым праз секунду', singularNominative: 'менш, чым праз {{count}} секунду', singularGenitive: 'менш, чым праз {{count}} секунды', pluralGenitive: 'менш, чым праз {{count}} секунд' } }), xSeconds: buildLocalizeTokenFn({ regular: { singularNominative: '{{count}} секунда', singularGenitive: '{{count}} секунды', pluralGenitive: '{{count}} секунд' }, past: { singularNominative: '{{count}} секунду таму', singularGenitive: '{{count}} секунды таму', pluralGenitive: '{{count}} секунд таму' }, future: { singularNominative: 'праз {{count}} секунду', singularGenitive: 'праз {{count}} секунды', pluralGenitive: 'праз {{count}} секунд' } }), halfAMinute: halfAMinute, lessThanXMinutes: buildLocalizeTokenFn({ regular: { one: 'менш за хвіліну', singularNominative: 'менш за {{count}} хвіліну', singularGenitive: 'менш за {{count}} хвіліны', pluralGenitive: 'менш за {{count}} хвілін' }, future: { one: 'менш, чым праз хвіліну', singularNominative: 'менш, чым праз {{count}} хвіліну', singularGenitive: 'менш, чым праз {{count}} хвіліны', pluralGenitive: 'менш, чым праз {{count}} хвілін' } }), xMinutes: buildLocalizeTokenFn({ regular: { singularNominative: '{{count}} хвіліна', singularGenitive: '{{count}} хвіліны', pluralGenitive: '{{count}} хвілін' }, past: { singularNominative: '{{count}} хвіліну таму', singularGenitive: '{{count}} хвіліны таму', pluralGenitive: '{{count}} хвілін таму' }, future: { singularNominative: 'праз {{count}} хвіліну', singularGenitive: 'праз {{count}} хвіліны', pluralGenitive: 'праз {{count}} хвілін' } }), aboutXHours: buildLocalizeTokenFn({ regular: { singularNominative: 'каля {{count}} гадзіны', singularGenitive: 'каля {{count}} гадзін', pluralGenitive: 'каля {{count}} гадзін' }, future: { singularNominative: 'прыблізна праз {{count}} гадзіну', singularGenitive: 'прыблізна праз {{count}} гадзіны', pluralGenitive: 'прыблізна праз {{count}} гадзін' } }), xHours: buildLocalizeTokenFn({ regular: { singularNominative: '{{count}} гадзіна', singularGenitive: '{{count}} гадзіны', pluralGenitive: '{{count}} гадзін' }, past: { singularNominative: '{{count}} гадзіну таму', singularGenitive: '{{count}} гадзіны таму', pluralGenitive: '{{count}} гадзін таму' }, future: { singularNominative: 'праз {{count}} гадзіну', singularGenitive: 'праз {{count}} гадзіны', pluralGenitive: 'праз {{count}} гадзін' } }), xDays: buildLocalizeTokenFn({ regular: { singularNominative: '{{count}} дзень', singularGenitive: '{{count}} дні', pluralGenitive: '{{count}} дзён' } }), aboutXWeeks: buildLocalizeTokenFn({ regular: { singularNominative: 'каля {{count}} месяца', // TODO singularGenitive: 'каля {{count}} месяцаў', // TODO pluralGenitive: 'каля {{count}} месяцаў' // TODO }, future: { singularNominative: 'прыблізна праз {{count}} месяц', // TODO singularGenitive: 'прыблізна праз {{count}} месяцы', // TODO pluralGenitive: 'прыблізна праз {{count}} месяцаў' // TODO } }), xWeeks: buildLocalizeTokenFn({ regular: { singularNominative: '{{count}} месяц', singularGenitive: '{{count}} месяцы', pluralGenitive: '{{count}} месяцаў' } }), aboutXMonths: buildLocalizeTokenFn({ regular: { singularNominative: 'каля {{count}} месяца', singularGenitive: 'каля {{count}} месяцаў', pluralGenitive: 'каля {{count}} месяцаў' }, future: { singularNominative: 'прыблізна праз {{count}} месяц', singularGenitive: 'прыблізна праз {{count}} месяцы', pluralGenitive: 'прыблізна праз {{count}} месяцаў' } }), xMonths: buildLocalizeTokenFn({ regular: { singularNominative: '{{count}} месяц', singularGenitive: '{{count}} месяцы', pluralGenitive: '{{count}} месяцаў' } }), aboutXYears: buildLocalizeTokenFn({ regular: { singularNominative: 'каля {{count}} года', singularGenitive: 'каля {{count}} гадоў', pluralGenitive: 'каля {{count}} гадоў' }, future: { singularNominative: 'прыблізна праз {{count}} год', singularGenitive: 'прыблізна праз {{count}} гады', pluralGenitive: 'прыблізна праз {{count}} гадоў' } }), xYears: buildLocalizeTokenFn({ regular: { singularNominative: '{{count}} год', singularGenitive: '{{count}} гады', pluralGenitive: '{{count}} гадоў' } }), overXYears: buildLocalizeTokenFn({ regular: { singularNominative: 'больш за {{count}} год', singularGenitive: 'больш за {{count}} гады', pluralGenitive: 'больш за {{count}} гадоў' }, future: { singularNominative: 'больш, чым праз {{count}} год', singularGenitive: 'больш, чым праз {{count}} гады', pluralGenitive: 'больш, чым праз {{count}} гадоў' } }), almostXYears: buildLocalizeTokenFn({ regular: { singularNominative: 'амаль {{count}} год', singularGenitive: 'амаль {{count}} гады', pluralGenitive: 'амаль {{count}} гадоў' }, future: { singularNominative: 'амаль праз {{count}} год', singularGenitive: 'амаль праз {{count}} гады', pluralGenitive: 'амаль праз {{count}} гадоў' } }) }; var formatDistance = function formatDistance(token, count, options) { options = options || {}; return formatDistanceLocale[token](count, options); }; var dateFormats = { full: "EEEE, d MMMM y 'г.'", "long": "d MMMM y 'г.'", medium: "d MMM y 'г.'", "short": 'dd.MM.y' }; var timeFormats = { full: 'H:mm:ss zzzz', "long": 'H:mm:ss z', medium: 'H:mm:ss', "short": 'H:mm' }; var dateTimeFormats = { any: '{{date}}, {{time}}' }; var formatLong = { date: buildFormatLongFn({ formats: dateFormats, defaultWidth: 'full' }), time: buildFormatLongFn({ formats: timeFormats, defaultWidth: 'full' }), dateTime: buildFormatLongFn({ formats: dateTimeFormats, defaultWidth: 'any' }) }; var accusativeWeekdays = ['нядзелю', 'панядзелак', 'аўторак', 'сераду', 'чацвер', 'пятніцу', 'суботу']; function lastWeek(day) { var weekday = accusativeWeekdays[day]; switch (day) { case 0: case 3: case 5: case 6: return "'у мінулую " + weekday + " а' p"; case 1: case 2: case 4: return "'у мінулы " + weekday + " а' p"; } } function thisWeek(day) { var weekday = accusativeWeekdays[day]; return "'у " + weekday + " а' p"; } function nextWeek(day) { var weekday = accusativeWeekdays[day]; switch (day) { case 0: case 3: case 5: case 6: return "'у наступную " + weekday + " а' p"; case 1: case 2: case 4: return "'у наступны " + weekday + " а' p"; } } var lastWeekFormat = function lastWeekFormat(dirtyDate, baseDate, options) { var date = toDate(dirtyDate); var day = date.getUTCDay(); if (isSameUTCWeek(date, baseDate, options)) { return thisWeek(day); } else { return lastWeek(day); } }; var nextWeekFormat = function nextWeekFormat(dirtyDate, baseDate, options) { var date = toDate(dirtyDate); var day = date.getUTCDay(); if (isSameUTCWeek(date, baseDate, options)) { return thisWeek(day); } else { return nextWeek(day); } }; var formatRelativeLocale = { lastWeek: lastWeekFormat, yesterday: "'учора а' p", today: "'сёння а' p", tomorrow: "'заўтра а' p", nextWeek: nextWeekFormat, other: 'P' }; var formatRelative = function formatRelative(token, date, baseDate, options) { var format = formatRelativeLocale[token]; if (typeof format === 'function') { return format(date, baseDate, options); } return format; }; var eraValues = { narrow: ['да н.э.', 'н.э.'], abbreviated: ['да н. э.', 'н. э.'], wide: ['да нашай эры', 'нашай эры'] }; var quarterValues = { narrow: ['1', '2', '3', '4'], abbreviated: ['1-ы кв.', '2-і кв.', '3-і кв.', '4-ы кв.'], wide: ['1-ы квартал', '2-і квартал', '3-і квартал', '4-ы квартал'] }; var monthValues = { narrow: ['С', 'Л', 'С', 'К', 'М', 'Ч', 'Л', 'Ж', 'В', 'К', 'Л', 'С'], abbreviated: ['студз.', 'лют.', 'сак.', 'крас.', 'май', 'чэрв.', 'ліп.', 'жн.', 'вер.', 'кастр.', 'ліст.', 'снеж.'], wide: ['студзень', 'люты', 'сакавік', 'красавік', 'май', 'чэрвень', 'ліпень', 'жнівень', 'верасень', 'кастрычнік', 'лістапад', 'снежань'] }; var formattingMonthValues = { narrow: ['С', 'Л', 'С', 'К', 'М', 'Ч', 'Л', 'Ж', 'В', 'К', 'Л', 'С'], abbreviated: ['студз.', 'лют.', 'сак.', 'крас.', 'мая', 'чэрв.', 'ліп.', 'жн.', 'вер.', 'кастр.', 'ліст.', 'снеж.'], wide: ['студзеня', 'лютага', 'сакавіка', 'красавіка', 'мая', 'чэрвеня', 'ліпеня', 'жніўня', 'верасня', 'кастрычніка', 'лістапада', 'снежня'] }; var dayValues = { narrow: ['Н', 'П', 'А', 'С', 'Ч', 'П', 'С'], "short": ['нд', 'пн', 'аў', 'ср', 'чц', 'пт', 'сб'], abbreviated: ['нядз', 'пан', 'аўт', 'сер', 'чац', 'пят', 'суб'], wide: ['нядзеля', 'панядзелак', 'аўторак', 'серада', 'чацвер', 'пятніца', 'субота'] }; var dayPeriodValues = { narrow: { am: 'ДП', pm: 'ПП', midnight: 'поўн.', noon: 'поўд.', morning: 'ран.', afternoon: 'дзень', evening: 'веч.', night: 'ноч' }, abbreviated: { am: 'ДП', pm: 'ПП', midnight: 'поўн.', noon: 'поўд.', morning: 'ран.', afternoon: 'дзень', evening: 'веч.', night: 'ноч' }, wide: { am: 'ДП', pm: 'ПП', midnight: 'поўнач', noon: 'поўдзень', morning: 'раніца', afternoon: 'дзень', evening: 'вечар', night: 'ноч' } }; var formattingDayPeriodValues = { narrow: { am: 'ДП', pm: 'ПП', midnight: 'поўн.', noon: 'поўд.', morning: 'ран.', afternoon: 'дня', evening: 'веч.', night: 'ночы' }, abbreviated: { am: 'ДП', pm: 'ПП', midnight: 'поўн.', noon: 'поўд.', morning: 'ран.', afternoon: 'дня', evening: 'веч.', night: 'ночы' }, wide: { am: 'ДП', pm: 'ПП', midnight: 'поўнач', noon: 'поўдзень', morning: 'раніцы', afternoon: 'дня', evening: 'вечара', night: 'ночы' } }; var ordinalNumber = function ordinalNumber(dirtyNumber, dirtyOptions) { var options = dirtyOptions || {}; var unit = String(options.unit); var number = Number(dirtyNumber); var suffix; /** Though it's an incorrect ordinal form of a date we use it here for consistency with other similar locales (ru, uk) * For date-month combinations should be used `d` formatter. * Correct: `d MMMM` (4 верасня) * Incorrect: `do MMMM` (4-га верасня) * * But following the consistency leads to mistakes for literal uses of `do` formatter (ordinal day of month). * So for phrase "5th day of month" (`do дзень месяца`) * library will produce: `5-га дзень месяца` * but correct spelling should be: `5-ы дзень месяца` * * So I guess there should be a stand-alone and a formatting version of "day of month" formatters */ if (unit === 'date') { suffix = '-га'; } else if (unit === 'hour' || unit === 'minute' || unit === 'second') { suffix = '-я'; } else { suffix = (number % 10 === 2 || number % 10 === 3) && number % 100 !== 12 && number % 100 !== 13 ? '-і' : '-ы'; } return number + suffix; }; var localize = { ordinalNumber: ordinalNumber, era: buildLocalizeFn({ values: eraValues, defaultWidth: 'wide' }), quarter: buildLocalizeFn({ values: quarterValues, defaultWidth: 'wide', argumentCallback: function argumentCallback(quarter) { return Number(quarter) - 1; } }), month: buildLocalizeFn({ values: monthValues, defaultWidth: 'wide', formattingValues: formattingMonthValues, defaultFormattingWidth: 'wide' }), day: buildLocalizeFn({ values: dayValues, defaultWidth: 'wide' }), dayPeriod: buildLocalizeFn({ values: dayPeriodValues, defaultWidth: 'any', formattingValues: formattingDayPeriodValues, defaultFormattingWidth: 'wide' }) }; var matchOrdinalNumberPattern = /^(\d+)(-?(е|я|га|і|ы|ае|ая|яя|шы|гі|ці|ты|мы))?/i; var parseOrdinalNumberPattern = /\d+/i; var matchEraPatterns = { narrow: /^((да )?н\.?\s?э\.?)/i, abbreviated: /^((да )?н\.?\s?э\.?)/i, wide: /^(да нашай эры|нашай эры|наша эра)/i }; var parseEraPatterns = { any: [/^д/i, /^н/i] }; var matchQuarterPatterns = { narrow: /^[1234]/i, abbreviated: /^[1234](-?[ыі]?)? кв.?/i, wide: /^[1234](-?[ыі]?)? квартал/i }; var parseQuarterPatterns = { any: [/1/i, /2/i, /3/i, /4/i] }; var matchMonthPatterns = { narrow: /^[слкмчжв]/i, abbreviated: /^(студз|лют|сак|крас|ма[йя]|чэрв|ліп|жн|вер|кастр|ліст|снеж)\.?/i, wide: /^(студзен[ья]|лют(ы|ага)|сакавіка?|красавіка?|ма[йя]|чэрвен[ья]|ліпен[ья]|жні(вень|ўня)|верас(ень|ня)|кастрычніка?|лістапада?|снеж(ань|ня))/i }; var parseMonthPatterns = { narrow: [/^с/i, /^л/i, /^с/i, /^к/i, /^м/i, /^ч/i, /^л/i, /^ж/i, /^в/i, /^к/i, /^л/i, /^с/i], any: [/^ст/i, /^лю/i, /^са/i, /^кр/i, /^ма/i, /^ч/i, /^ліп/i, /^ж/i, /^в/i, /^ка/i, /^ліс/i, /^сн/i] }; var matchDayPatterns = { narrow: /^[нпасч]/i, "short": /^(нд|ня|пн|па|аў|ат|ср|се|чц|ча|пт|пя|сб|су)\.?/i, abbreviated: /^(нядз?|ндз|пнд|пан|аўт|срд|сер|чцв|чац|птн|пят|суб).?/i, wide: /^(нядзел[яі]|панядзел(ак|ка)|аўтор(ак|ка)|серад[аы]|чацв(ер|ярга)|пятніц[аы]|субот[аы])/i }; var parseDayPatterns = { narrow: [/^н/i, /^п/i, /^а/i, /^с/i, /^ч/i, /^п/i, /^с/i], any: [/^н/i, /^п[ан]/i, /^а/i, /^с[ер]/i, /^ч/i, /^п[ят]/i, /^с[уб]/i] }; var matchDayPeriodPatterns = { narrow: /^([дп]п|поўн\.?|поўд\.?|ран\.?|дзень|дня|веч\.?|ночы?)/i, abbreviated: /^([дп]п|поўн\.?|поўд\.?|ран\.?|дзень|дня|веч\.?|ночы?)/i, wide: /^([дп]п|поўнач|поўдзень|раніц[аы]|дзень|дня|вечара?|ночы?)/i }; var parseDayPeriodPatterns = { any: { am: /^дп/i, pm: /^пп/i, midnight: /^поўн/i, noon: /^поўд/i, morning: /^р/i, afternoon: /^д[зн]/i, evening: /^в/i, night: /^н/i } }; var match = { ordinalNumber: buildMatchPatternFn({ matchPattern: matchOrdinalNumberPattern, parsePattern: parseOrdinalNumberPattern, valueCallback: function valueCallback(value) { return parseInt(value, 10); } }), era: buildMatchFn({ matchPatterns: matchEraPatterns, defaultMatchWidth: 'wide', parsePatterns: parseEraPatterns, defaultParseWidth: 'any' }), quarter: buildMatchFn({ matchPatterns: matchQuarterPatterns, defaultMatchWidth: 'wide', parsePatterns: parseQuarterPatterns, defaultParseWidth: 'any', valueCallback: function valueCallback(index) { return Number(index) + 1; } }), month: buildMatchFn({ matchPatterns: matchMonthPatterns, defaultMatchWidth: 'wide', parsePatterns: parseMonthPatterns, defaultParseWidth: 'any' }), day: buildMatchFn({ matchPatterns: matchDayPatterns, defaultMatchWidth: 'wide', parsePatterns: parseDayPatterns, defaultParseWidth: 'any' }), dayPeriod: buildMatchFn({ matchPatterns: matchDayPeriodPatterns, defaultMatchWidth: 'wide', parsePatterns: parseDayPeriodPatterns, defaultParseWidth: 'any' }) }; /** * @type {Locale} * @category Locales * @summary Belarusian locale. * @language Belarusian * @iso-639-2 bel * @author Kiryl Anokhin [@alyrik]{@link https://github.com/alyrik} * @author Martin Wind [@arvigeus]{@link https://github.com/mawi12345} */ var locale = { code: 'be', formatDistance: formatDistance, formatLong: formatLong, formatRelative: formatRelative, localize: localize, match: match, options: { weekStartsOn: 1 /* Monday */ , firstWeekContainsDate: 1 } }; export default locale;