@kubit-ui-web/react-components
Version:
Kubit React Components is a customizable, accessible library of React web components, designed to enhance your application's user experience
51 lines • 2.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformDate = void 0;
const common_constant_1 = require("./constants/common.constant");
const parser_constant_1 = require("./constants/parser.constant");
const formatDate_1 = require("./formatDate");
const getFormatParts = (format) => {
const formatParts = format.match(common_constant_1.FORMATTING_TOKENS) || [];
return formatParts.map((token) => {
const parseTo = parser_constant_1.EXPRESSIONS[token];
const regex = parseTo && parseTo[0];
const key = parseTo && parseTo[1];
const execute = parseTo && parseTo[2];
return key ? { regex, key, execute } : token;
});
};
const getDataObject = (date, formatParts) => {
const dateObject = {};
let dateString = date;
formatParts.forEach(token => {
if (typeof token === 'string') {
dateString = dateString.replace(token, '');
}
else {
const { regex, key, execute } = token;
const match = regex.exec(dateString);
const value = match ? match[0] : '';
dateObject[key] = execute ? execute(value) : +value;
dateString = dateString.replace(value, '');
}
});
return dateObject;
};
const transformDate = (date, format) => {
if (typeof date === 'number' || !format) {
return (0, formatDate_1.formatDateToUTC)(date);
}
const formatParts = getFormatParts(format);
const dateObject = getDataObject(date, formatParts);
const { year, month, day, hours, minutes, seconds } = dateObject;
const today = new Date();
const auxYear = year || today.getFullYear();
const auxMonth = month ? month - 1 : today.getMonth();
const auxDay = day || today.getDate();
const auxHours = hours || 0;
const auxMinutes = minutes || 0;
const auxSeconds = seconds || 0;
return new Date(auxYear, auxMonth, auxDay, auxHours, auxMinutes, auxSeconds);
};
exports.transformDate = transformDate;
//# sourceMappingURL=transformDate.js.map