"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.scrollTo = scrollTo; exports.createKeyDownHandler = createKeyDownHandler; exports.getDefaultFormat = getDefaultFormat; exports.getInputSize = getInputSize; exports.addGlobalMouseDownEvent = addGlobalMouseDownEvent; exports.elementsContains = elementsContains; exports.PickerModeMap = void 0; var _KeyCode = _interopRequireDefault(require("rc-util/lib/KeyCode")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } var scrollIds = new Map(); /* eslint-disable no-param-reassign */ function scrollTo(element, to, duration) { if (scrollIds.get(element)) { cancelAnimationFrame(scrollIds.get(element)); } // jump to target if duration zero if (duration <= 0) { scrollIds.set(element, requestAnimationFrame(function () { element.scrollTop = to; })); return; } var difference = to - element.scrollTop; var perTick = difference / duration * 10; scrollIds.set(element, requestAnimationFrame(function () { element.scrollTop += perTick; if (element.scrollTop !== to) { scrollTo(element, to, duration - 10); } })); } function createKeyDownHandler(event, _ref) { var onLeftRight = _ref.onLeftRight, onCtrlLeftRight = _ref.onCtrlLeftRight, onUpDown = _ref.onUpDown, onPageUpDown = _ref.onPageUpDown, onEnter = _ref.onEnter; var which = event.which, ctrlKey = event.ctrlKey, metaKey = event.metaKey; switch (which) { case _KeyCode.default.LEFT: if (ctrlKey || metaKey) { if (onCtrlLeftRight) { onCtrlLeftRight(-1); return true; } } else if (onLeftRight) { onLeftRight(-1); return true; } /* istanbul ignore next */ break; case _KeyCode.default.RIGHT: if (ctrlKey || metaKey) { if (onCtrlLeftRight) { onCtrlLeftRight(1); return true; } } else if (onLeftRight) { onLeftRight(1); return true; } /* istanbul ignore next */ break; case _KeyCode.default.UP: if (onUpDown) { onUpDown(-1); return true; } /* istanbul ignore next */ break; case _KeyCode.default.DOWN: if (onUpDown) { onUpDown(1); return true; } /* istanbul ignore next */ break; case _KeyCode.default.PAGE_UP: if (onPageUpDown) { onPageUpDown(-1); return true; } /* istanbul ignore next */ break; case _KeyCode.default.PAGE_DOWN: if (onPageUpDown) { onPageUpDown(1); return true; } /* istanbul ignore next */ break; case _KeyCode.default.ENTER: if (onEnter) { onEnter(); return true; } /* istanbul ignore next */ break; } return false; } // ===================== Format ===================== function getDefaultFormat(format, picker, showTime, use12Hours) { var mergedFormat = format; if (!mergedFormat) { switch (picker) { case 'time': mergedFormat = use12Hours ? 'hh:mm:ss a' : 'HH:mm:ss'; break; case 'week': mergedFormat = 'gggg-wo'; break; case 'month': mergedFormat = 'YYYY-MM'; break; case 'quarter': mergedFormat = 'YYYY-[Q]Q'; break; case 'year': mergedFormat = 'YYYY'; break; default: mergedFormat = showTime ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD'; } } return mergedFormat; } function getInputSize(picker, format) { var defaultSize = picker === 'time' ? 8 : 10; return Math.max(defaultSize, format.length) + 2; } var globalClickFunc = null; var clickCallbacks = new Set(); function addGlobalMouseDownEvent(callback) { if (!globalClickFunc && typeof window !== 'undefined' && window.addEventListener) { globalClickFunc = function globalClickFunc(e) { // Clone a new list to avoid repeat trigger events _toConsumableArray(clickCallbacks).forEach(function (queueFunc) { queueFunc(e); }); }; window.addEventListener('mousedown', globalClickFunc); } clickCallbacks.add(callback); return function () { clickCallbacks.delete(callback); if (clickCallbacks.size === 0) { window.removeEventListener('mousedown', globalClickFunc); globalClickFunc = null; } }; } // ====================== Mode ====================== var getYearNextMode = function getYearNextMode(next) { if (next === 'month' || next === 'date') { return 'year'; } return next; }; var getMonthNextMode = function getMonthNextMode(next) { if (next === 'date') { return 'month'; } return next; }; var getQuarterNextMode = function getQuarterNextMode(next) { if (next === 'month' || next === 'date') { return 'quarter'; } return next; }; var getWeekNextMode = function getWeekNextMode(next) { if (next === 'date') { return 'week'; } return next; }; var PickerModeMap = { year: getYearNextMode, month: getMonthNextMode, quarter: getQuarterNextMode, week: getWeekNextMode, time: null, date: null }; exports.PickerModeMap = PickerModeMap; function elementsContains(elements, target) { return elements.some(function (ele) { return ele && ele.contains(target); }); }