import type { Quarter } from '../../../../types' ; import type { Localize , LocalizeFn } from '../../../types' ; import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index' ; const eraValues = { narrow : [ 'до н.е.' , 'н.е.' ] as const , abbreviated : [ 'до н. е.' , 'н. е.' ] as const , wide : [ 'до нашої ери' , 'нашої ери' ] as const , } ; const quarterValues = { narrow : [ '1' , '2' , '3' , '4' ] as const , abbreviated : [ '1-й кв.' , '2-й кв.' , '3-й кв.' , '4-й кв.' ] as const , wide : [ '1-й квартал' , '2-й квартал' , '3-й квартал' , '4-й квартал' ] as const , } ; const monthValues = { narrow : [ 'С' , 'Л' , 'Б' , 'К' , 'Т' , 'Ч' , 'Л' , 'С' , 'В' , 'Ж' , 'Л' , 'Г' ] as const , abbreviated : [ 'січ.' , 'лют.' , 'берез.' , 'квіт.' , 'трав.' , 'черв.' , 'лип.' , 'серп.' , 'верес.' , 'жовт.' , 'листоп.' , 'груд.' , ] as const , wide : [ 'січень' , 'лютий' , 'березень' , 'квітень' , 'травень' , 'червень' , 'липень' , 'серпень' , 'вересень' , 'жовтень' , 'листопад' , 'грудень' , ] as const , } ; const formattingMonthValues = { narrow : [ 'С' , 'Л' , 'Б' , 'К' , 'Т' , 'Ч' , 'Л' , 'С' , 'В' , 'Ж' , 'Л' , 'Г' ] as const , abbreviated : [ 'січ.' , 'лют.' , 'берез.' , 'квіт.' , 'трав.' , 'черв.' , 'лип.' , 'серп.' , 'верес.' , 'жовт.' , 'листоп.' , 'груд.' , ] as const , wide : [ 'січня' , 'лютого' , 'березня' , 'квітня' , 'травня' , 'червня' , 'липня' , 'серпня' , 'вересня' , 'жовтня' , 'листопада' , 'грудня' , ] as const , } ; const dayValues = { narrow : [ 'Н' , 'П' , 'В' , 'С' , 'Ч' , 'П' , 'С' ] as const , short : [ 'нд' , 'пн' , 'вт' , 'ср' , 'чт' , 'пт' , 'сб' ] as const , abbreviated : [ 'нед' , 'пон' , 'вів' , 'сер' , 'чтв' , 'птн' , 'суб' ] as const , wide : [ 'неділя' , 'понеділок' , 'вівторок' , 'середа' , 'четвер' , 'п’ятниця' , 'субота' , ] as const , } ; const 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 : 'ніч' , } , } ; const 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 : 'ночі' , } , } ; const ordinalNumber = ( dirtyNumber , dirtyOptions ) => { const options = dirtyOptions || { } ; const unit = String ( options . unit ) ; const number = Number ( dirtyNumber ) ; let suffix ; if ( unit === 'date' ) { if ( number === 3 || number === 23 ) { suffix = '-є' ; } else { suffix = '-е' ; } } else if ( unit === 'minute' || unit === 'second' || unit === 'hour' ) { suffix = '-а' ; } else { suffix = '-й' ; } return number + suffix ; } ; const localize = { ordinalNumber , era : buildLocalizeFn ( { values : eraValues , defaultWidth : 'wide' , } ) , quarter : buildLocalizeFn ( { values : quarterValues , defaultWidth : 'wide' , argumentCallback : ( quarter ) => ( quarter - 1 ) as Quarter , } ) , 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' , } ) , } ; export default localize ;