2024-01-29 09:26:07 +08:00

275 lines
5.7 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getAmPm = exports.findSimilarTime = exports.isTimeInStep = exports.getTimeUnits = exports.getFixValue = exports.time = void 0;
const date_fns_1 = require("date-fns"); //
const _utils_1 = require("../../_utils");
exports.time = {
amHours: [
'00',
'01',
'02',
'03',
'04',
'05',
'06',
'07',
'08',
'09',
'10',
'11'
],
pmHours: [
'12',
'01',
'02',
'03',
'04',
'05',
'06',
'07',
'08',
'09',
'10',
'11'
],
hours: [
'00',
'01',
'02',
'03',
'04',
'05',
'06',
'07',
'08',
'09',
'10',
'11',
'12',
'13',
'14',
'15',
'16',
'17',
'18',
'19',
'20',
'21',
'22',
'23'
],
minutes: [
'00',
'01',
'02',
'03',
'04',
'05',
'06',
'07',
'08',
'09',
'10',
'11',
'12',
'13',
'14',
'15',
'16',
'17',
'18',
'19',
'20',
'21',
'22',
'23',
'24',
'25',
'26',
'27',
'28',
'29',
'30',
'31',
'32',
'33',
'34',
'35',
'36',
'37',
'38',
'39',
'40',
'41',
'42',
'43',
'44',
'45',
'46',
'47',
'48',
'49',
'50',
'51',
'52',
'53',
'54',
'55',
'56',
'57',
'58',
'59'
],
seconds: [
'00',
'01',
'02',
'03',
'04',
'05',
'06',
'07',
'08',
'09',
'10',
'11',
'12',
'13',
'14',
'15',
'16',
'17',
'18',
'19',
'20',
'21',
'22',
'23',
'24',
'25',
'26',
'27',
'28',
'29',
'30',
'31',
'32',
'33',
'34',
'35',
'36',
'37',
'38',
'39',
'40',
'41',
'42',
'43',
'44',
'45',
'46',
'47',
'48',
'49',
'50',
'51',
'52',
'53',
'54',
'55',
'56',
'57',
'58',
'59'
],
period: ['AM', 'PM']
};
function getFixValue(value) {
return `00${value}`.slice(-2);
}
exports.getFixValue = getFixValue;
// TODO: refactor the logic, it's somehow a patch logic
function getTimeUnits(defaultValue, stepOrList, isHourWithAmPm) {
if (Array.isArray(stepOrList)) {
return (isHourWithAmPm === 'am'
? stepOrList.filter((v) => v < 12)
: isHourWithAmPm === 'pm'
? stepOrList.filter((v) => v >= 12).map((v) => (v === 12 ? 12 : v - 12))
: stepOrList).map((v) => getFixValue(v));
}
else if (typeof stepOrList === 'number') {
if (isHourWithAmPm === 'am') {
return defaultValue.filter((hour) => {
const hourAsNumber = Number(hour);
return hourAsNumber < 12 && hourAsNumber % stepOrList === 0;
});
}
else if (isHourWithAmPm === 'pm') {
return defaultValue
.filter((hour) => {
const hourAsNumber = Number(hour);
return hourAsNumber >= 12 && hourAsNumber % stepOrList === 0;
})
.map((hour) => {
const hourAsNumber = Number(hour);
return getFixValue(hourAsNumber === 12 ? 12 : hourAsNumber - 12);
});
}
return defaultValue.filter((hour) => {
return Number(hour) % stepOrList === 0;
});
}
else {
return isHourWithAmPm === 'am'
? defaultValue.filter((hour) => Number(hour) < 12)
: isHourWithAmPm === 'pm'
? defaultValue
.map((hour) => Number(hour))
.filter((hour) => Number(hour) >= 12)
.map((v) => getFixValue(v === 12 ? 12 : v - 12))
: defaultValue;
}
}
exports.getTimeUnits = getTimeUnits;
function isTimeInStep(value, type, stepOrList) {
if (!stepOrList) {
return true;
}
else if (typeof stepOrList === 'number') {
return value % stepOrList === 0;
}
else {
return stepOrList.includes(value);
}
}
exports.isTimeInStep = isTimeInStep;
function findSimilarTime(value, type, stepOrList) {
const list = getTimeUnits(exports.time[type], stepOrList).map(Number);
let lowerBound, upperBound;
for (let i = 0; i < list.length; ++i) {
const v = list[i];
if (v === value)
return v;
else if (v > value) {
upperBound = v;
break;
}
lowerBound = v;
}
if (lowerBound === undefined) {
if (!upperBound) {
(0, _utils_1.throwError)('time-picker', "Please set 'hours' or 'minutes' or 'seconds' props");
}
return upperBound;
}
if (upperBound === undefined) {
return lowerBound;
}
return upperBound - value > value - lowerBound ? lowerBound : upperBound;
}
exports.findSimilarTime = findSimilarTime;
function getAmPm(value) {
return (0, date_fns_1.getHours)(value) < 12 ? 'am' : 'pm';
}
exports.getAmPm = getAmPm;