UNPKG

react-web-native-sketch

Version:

[TODO: We need an overview of how this can be used via npm vs as a local package]

144 lines 5.66 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var moment = require("moment-timezone"); var enums_1 = require("./enums"); function formatDate(format, date) { return moment(date).format(format); } exports.formatDate = formatDate; function isDateValid(locale, format, dateString) { if (!dateString || typeof dateString !== "string") { return null; } if (format === enums_1.DATE_FORMATS.yyyymmdd) { return !!dateString.match(/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/); } if (locale === enums_1.LOCALES.en_US) { switch (format) { case enums_1.DATE_FORMATS.ddmmyyyy: return !!dateString.match(/^(0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])[\/\-]\d{4}$/); } } else { switch (format) { case enums_1.DATE_FORMATS.ddmmyyyy: return !!dateString.match(/^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$/); } } return null; } exports.isDateValid = isDateValid; function profileInputFormat(locale) { switch (locale) { case enums_1.LOCALES.en_US: return enums_1.DATE_FORMATS.MM_DD_YYYY; default: return enums_1.DATE_FORMATS.DD_MM_YYYY; } } exports.profileInputFormat = profileInputFormat; function parseFormattedDate(timezone, locale, format, datestr) { if (format === enums_1.DATE_FORMATS.yyyymmdd) { return tsFromFormattedDate(timezone, moment(datestr, enums_1.DATE_FORMATS.YYYY_MM_DD, true).toDate()); } if (locale === enums_1.LOCALES.en_US) { switch (format) { case enums_1.DATE_FORMATS.ddmmyyyy: return tsFromFormattedDate(timezone, moment(datestr, enums_1.DATE_FORMATS.MM_DD_YYYY, true).toDate()); } } else { switch (format) { case enums_1.DATE_FORMATS.ddmmyyyy: return tsFromFormattedDate(timezone, moment(datestr, enums_1.DATE_FORMATS.DD_MM_YYYY, true).toDate()); } } return null; } exports.parseFormattedDate = parseFormattedDate; function formatTs(timezone, locale, format, timestamp) { var date = toFormattedDate(timezone, timestamp); if (!date) { return ''; } return formatDate(format, date); } exports.formatTs = formatTs; function formatDateInterval(timezone, locale, dateStart, dateEnd) { if (!dateStart || !dateEnd) { return undefined; } var dateStartFormat = formatTs(timezone, locale, enums_1.MOMENT_FORMAT.l, dateStart), dateEndFormat = formatTs(timezone, locale, enums_1.MOMENT_FORMAT.l, dateEnd); if (dateStartFormat === dateEndFormat) { var startMoment = moment(dateStart * 1000), dateFormat = dateStartFormat; if (startMoment.year() == new Date().getUTCFullYear()) { dateFormat = dateStartFormat.replace('/' + startMoment.year().toString(), ''); } return dateFormat + " " + formatTs(timezone, locale, enums_1.MOMENT_FORMAT.LT, dateStart) + " - " + formatTs(timezone, locale, enums_1.MOMENT_FORMAT.LT, dateEnd); } return formatTs(timezone, locale, enums_1.MOMENT_FORMAT.l_LT, dateStart) + " - " + formatTs(timezone, locale, enums_1.MOMENT_FORMAT.l_LT, dateEnd); } exports.formatDateInterval = formatDateInterval; // // TODO: refactor this in a more redux way // let translations: any = {}; // // export function setTranslations(newTranslations: Object): void { // translations = newTranslations || {}; // } // export function _t(stringId: string | null | undefined, args: any = {}): string { // if (!stringId) { // return ''; // } // let locale = getNativeLocale(), // localeLanguage: string = locale ? locale.slice(0, 2) : 'en', // unformattedString: string = // (!!translations && translations[localeLanguage] && translations[localeLanguage][stringId]) || ''; // if (!unformattedString) { // switch (localeLanguage) { // case "ro": // unformattedString = ro[stringId] || en[stringId]; // break; // case "cs": // unformattedString = cs[stringId] || en[stringId]; // break; // case "es": // unformattedString = es[stringId] || en[stringId]; // break; // case "zh": // unformattedString = zh[stringId] || en[stringId]; // break; // default: // unformattedString = en[stringId]; // } // } // if (!unformattedString) { // unformattedString = stringId; // } // return unformattedString ? // unformattedString.replace(/%\w+%/g, all => { // let replacement = args[all.slice(1, -1)]; // return replacement === null ? '' : replacement; // }) : // unformattedString; // } function localOffsetMins(tz, date) { if (!tz || !date || !moment(date).tz(tz)) { return 0; } return moment(date).tz(tz).utcOffset() + date.getTimezoneOffset(); } exports.localOffsetMins = localOffsetMins; function utcOffset(tz, ts) { return moment(new Date(ts * 1000)).tz(tz).utcOffset() * 60; } exports.utcOffset = utcOffset; function tsFromFormattedDate(tz, date) { return date && (Math.floor(date.getTime() / 1000) - localOffsetMins(tz, date) * 60); } exports.tsFromFormattedDate = tsFromFormattedDate; function toFormattedDate(tz, ts) { var offsetSecs = localOffsetMins(tz, new Date(ts * 1000)) * 60; return new Date((ts + offsetSecs) * 1000); } exports.toFormattedDate = toFormattedDate; //# sourceMappingURL=i18n.js.map