UNPKG

wix-style-react

Version:
147 lines (115 loc) 5.61 kB
"use strict"; 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;