wix-style-react
Version:
147 lines (115 loc) • 5.61 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getErorMessageByLocale = exports.isInputValid = exports.getSuggestedOption = exports.getClosestTimeSlot = exports.getTimeSlots = exports.getTimeSlot = exports.getFormattedDate = void 0;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _wixDesignSystemsLocaleUtils = require("wix-design-systems-locale-utils");
var _TimeInputNext = require("./TimeInputNext");
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
var timeRegex = /([下上午오전후 ]{0,3})([0-2]?[0-9]{0,2})([:.h]{0,1})([0-5][0-9]{0,2})/;
var validationRegex = /^([下上午오전후 ]{0,3})(([0-1]?[0-9]|2[0-3])[^0-9]{0,3}([0-5]([0-9]([^0-9]+)?)?)?)?$/;
var getFormattedDate = function getFormattedDate(_ref) {
var value = _ref.value,
timeStyle = _ref.timeStyle,
locale = _ref.locale;
if (!value) {
return '';
}
if (timeStyle === 'long') {
return _wixDesignSystemsLocaleUtils.dateTimeFormat.getLongTime(locale, value);
}
return _wixDesignSystemsLocaleUtils.dateTimeFormat.getShortTime(locale, value);
};
exports.getFormattedDate = getFormattedDate;
var getTimeSlot = function getTimeSlot(_ref2) {
var value = _ref2.value,
timeStyle = _ref2.timeStyle,
locale = _ref2.locale;
var formattedDate = getFormattedDate({
value: value,
timeStyle: timeStyle,
locale: locale
});
return {
id: new Date(value).getTime(),
value: formattedDate
};
};
exports.getTimeSlot = getTimeSlot;
var getTimeSlots = function getTimeSlots(_ref3) {
var _ref3$value = _ref3.value,
value = _ref3$value === void 0 ? new Date(Date.now()) : _ref3$value,
timeStyle = _ref3.timeStyle,
locale = _ref3.locale,
step = _ref3.step;
var validatedStep = parseInt(step) ? parseInt(step) : _TimeInputNext.DEFAULT_STEP;
var minuteMs = 60000;
var stepMs = validatedStep > 60 ? 60 * minuteMs : validatedStep * minuteMs;
var startOfTheDay = new Date(value).setHours(0, 0, 0, 0);
var dayMs = 86400000;
var amountOfTimeSlots = dayMs / stepMs;
return new Array(amountOfTimeSlots).fill().map(function (_, i) {
var timeInMs = startOfTheDay + i * stepMs;
return getTimeSlot({
value: timeInMs,
timeStyle: timeStyle,
locale: locale
});
});
};
exports.getTimeSlots = getTimeSlots;
var getClosestTimeSlot = function getClosestTimeSlot(_ref4) {
var _ref4$value = _ref4.value,
value = _ref4$value === void 0 ? new Date(Date.now()) : _ref4$value,
timeSlots = _ref4.timeSlots;
return timeSlots.find(function (option) {
return option.id >= value.getTime();
});
};
exports.getClosestTimeSlot = getClosestTimeSlot;
var regexReplacer = function regexReplacer(_, __, hours, divider, minutes) {
if (/^[1-9]$/.test(hours)) {
return "0".concat(hours).concat(divider).concat(minutes);
}
return "".concat(hours).concat(divider).concat(minutes);
};
var normalizeTimeSlots = function normalizeTimeSlots(timeSlots) {
return timeSlots.map(function (slot) {
return _objectSpread(_objectSpread({}, slot), {}, {
value: slot.value.replace(/\s+/g, '').replace(timeRegex, regexReplacer)
});
});
};
var removeIrrelevantCharacters = function removeIrrelevantCharacters(input) {
return input.replace(/[下上午오전후 ]{0,3}/, '').replace(/\s+/g, '').replace(/[.:h]+/, ':');
};
var getSuggestedOption = function getSuggestedOption(inputValue, timeSlots) {
var value = removeIrrelevantCharacters(inputValue);
if (!value || value === '0') {
return;
}
var currentTime = Date.now();
var nextTimeSlotId = timeSlots.findIndex(function (time) {
return time.id > currentTime;
});
var highPriorityList = timeSlots.slice(nextTimeSlotId, timeSlots.length);
var lowPriorityList = timeSlots.slice(0, nextTimeSlotId);
var prioritizedList = [].concat((0, _toConsumableArray2["default"])(highPriorityList), (0, _toConsumableArray2["default"])(lowPriorityList));
var normalizedTimeSlots = normalizeTimeSlots(prioritizedList);
return normalizedTimeSlots.find(function (slot) {
return slot.value.startsWith(value) || slot.value.startsWith("0".concat(value));
});
};
exports.getSuggestedOption = getSuggestedOption;
var isInputValid = function isInputValid(inputValue) {
return validationRegex.test(inputValue);
};
exports.isInputValid = isInputValid;
var getErorMessageByLocale = function getErorMessageByLocale() {
return 'Invalid Value';
};
exports.getErorMessageByLocale = getErorMessageByLocale;