@renderlesskit/react
Version:
Collection of headless components/hooks that are accessible, composable, customizable from low level to build your own UI & Design System powered by Reakit
74 lines (61 loc) • 1.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getSelectedDateFromValue = getSelectedDateFromValue;
exports.getSelectedValueFromDate = getSelectedValueFromDate;
exports.parseTime = parseTime;
exports.stringifyTime = stringifyTime;
var _utils = require("@chakra-ui/utils");
// As per https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#times
function parseTime(timeValue) {
if (timeValue == null || !(0, _utils.isString)(timeValue)) return;
var timeRegex = timeValue.match(/(\d\d)(:(\d\d)){1,2}/i);
if (timeRegex == null) return;
var time = timeValue.split(":");
var date = new Date();
if (+time[0] < 0 || +time[0] > 23 || +time[1] < 0 || +time[1] > 59) return;
date.setHours(+time[0]);
date.setMinutes(+time[1]);
date.setSeconds(0);
if (time[2]) {
if (+time[2] < 0 || +time[2] > 60) return;
date.setSeconds(+time[2]);
}
return date;
}
function stringifyTime(date) {
return date.toString().slice(16, 24);
}
function getSelectedValueFromDate(date, type) {
if (type === "minute") return date.getMinutes();
if (type === "meridian") return date.getHours() >= 12 ? 1 : 0;
return date.getHours() % 12 || 12;
}
function getSelectedDateFromValue(value, date, type) {
if (type === "minute") {
return new Date(date.setMinutes(value));
}
if (type === "meridian") {
var hours = date.getHours() % 12;
if (value === 1) {
hours = hours + 12;
} else {
hours = hours % 12;
}
return new Date(date.setHours(hours));
}
if (date.getHours() >= 12) {
if (value !== 12) {
value = value + 12;
}
} else {
if (value !== 12) {
value = value % 12;
} else {
value = 0;
}
}
return new Date(date.setHours(value));
}
//# sourceMappingURL=helpers.js.map