UNPKG

nhb-toolbox

Version:

A versatile collection of smart, efficient, and reusable utility functions, classes and types for everyday development needs.

103 lines (102 loc) 5.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.banglaPlugin = void 0; const convert_1 = require("../../number/convert"); const constants_1 = require("../constants"); const helpers_1 = require("../helpers"); const banglaPlugin = ($Chronos) => { const { internalDate: $Date } = $Chronos[constants_1.INTERNALS]; const DEFAULT_CONFIG = new Map(); function $bnDaysMonthIdx(date, variant) { return (0, helpers_1._bnDaysMonthIdx)(date, variant ?? DEFAULT_CONFIG.get('config')?.variant); } $Chronos.prototype.configureBanglaCalendar = (configs) => { DEFAULT_CONFIG.set('config', configs); }; $Chronos.prototype.getBanglaYear = function (locale = 'bn') { const bnYear = (0, helpers_1._getBnYear)($Date(this)); return (locale === 'en' ? bnYear : (0, convert_1.digitToBangla)(bnYear)); }; $Chronos.prototype.getBanglaMonth = function (options) { const { locale = 'bn', variant } = options ?? {}; const isoMonth = $bnDaysMonthIdx($Date(this), variant).monthIdx + 1; return (locale === 'en' ? isoMonth : (0, convert_1.digitToBangla)(isoMonth)); }; $Chronos.prototype.getBanglaDay = function (options) { const { locale = 'bn', variant } = options ?? {}; const date = $bnDaysMonthIdx($Date(this), variant).days + 1; return (locale === 'en' ? date : (0, convert_1.digitToBangla)(date)); }; $Chronos.prototype.getBanglaDayName = function (locale = 'bn') { const DAY = constants_1.BN_DAYS[this.weekDay]; return (locale === 'en' ? DAY.en : DAY.bn); }; $Chronos.prototype.getBanglaMonthName = function (options) { const { locale = 'bn', variant } = options ?? {}; const { monthIdx } = $bnDaysMonthIdx($Date(this), variant); const MONTH = constants_1.BN_MONTHS[monthIdx]; return (locale === 'en' ? MONTH.en : MONTH.bn); }; $Chronos.prototype.getBanglaSeasonName = function (options) { const { locale, variant } = options ?? {}; const { monthIdx } = $bnDaysMonthIdx($Date(this), variant); return (0, helpers_1._getBnSeason)(monthIdx, locale); }; $Chronos.prototype.toBangla = function (opts) { return { year: this.getBanglaYear(opts?.locale), month: this.getBanglaMonth(opts), date: this.getBanglaDay(opts), monthName: this.getBanglaMonthName(opts), dayName: this.getBanglaDayName(opts?.locale), seasonName: this.getBanglaSeasonName(opts), isLeapYear: (0, helpers_1._isBnLeapYear)((0, helpers_1._getBnYear)($Date(this)), this.year, opts?.variant), }; }; $Chronos.prototype.formatBangla = function (fmt, opts) { const { variant } = opts ?? {}; const { hour, minute, second, millisecond } = this; const D_NAME = constants_1.BN_DAYS[this.weekDay]; const { monthIdx } = $bnDaysMonthIdx($Date(this), variant); const M_NAME = constants_1.BN_MONTHS[monthIdx]; const month = this.getBanglaMonth({ variant }); const year = (0, helpers_1._padShunno)(this.getBanglaYear(), 4); const date = this.getBanglaDay({ variant }); const seasonName = this.getBanglaSeasonName({ variant }); const offset = (0, convert_1.digitToBangla)(this.getTimeZoneOffset()); const dateComponents = { YYYY: year, YY: year.slice(-2), yyyy: year, yy: year.slice(-2), M: month, MM: (0, helpers_1._padShunno)(month), mmm: M_NAME.short, mmmm: M_NAME.bn, d: D_NAME.short, dd: D_NAME.bn.replace('বার', ''), ddd: D_NAME.bn, D: date, DD: (0, helpers_1._padShunno)(date), Do: date, H: (0, convert_1.digitToBangla)(hour), HH: (0, helpers_1._padShunno)((0, convert_1.digitToBangla)(hour)), h: (0, convert_1.digitToBangla)(hour % 12 || 12), hh: (0, helpers_1._padShunno)((0, convert_1.digitToBangla)(hour % 12 || 12)), m: (0, convert_1.digitToBangla)(minute), mm: (0, helpers_1._padShunno)((0, convert_1.digitToBangla)(minute)), s: (0, convert_1.digitToBangla)(second), ss: (0, helpers_1._padShunno)((0, convert_1.digitToBangla)(second)), ms: (0, convert_1.digitToBangla)(millisecond), mss: (0, helpers_1._padShunno)((0, convert_1.digitToBangla)(millisecond), 3), a: hour < 12 ? 'পূর্বাহ্ণ' : 'অপরাহ্ণ', A: hour < 12 ? 'পূর্বাহ্ণ' : 'অপরাহ্ণ', Z: offset, ZZ: offset, S: seasonName, SS: `${seasonName}কাল`, }; return (0, helpers_1._formatDateCore)(fmt || 'ddd, DD mmmm (SS), YYYY বঙ্গাব্দ - hh:mm:ss (A)', dateComponents); }; }; exports.banglaPlugin = banglaPlugin;