UNPKG

@dan-ui/react-calendar

Version:
1,244 lines (1,243 loc) 619 kB
var __defProp = Object.defineProperty; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __publicField = (obj, key, value) => { __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); return value; }; (function(global2, factory) { typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory(require("react")) : typeof define === "function" && define.amd ? define(["react"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.tui = global2.tui || {}, global2.tui.ReactCalendar = factory(global2.React)); })(this, function(React) { "use strict"; function _interopDefaultLegacy(e2) { return e2 && typeof e2 === "object" && "default" in e2 ? e2 : { "default": e2 }; } var React__default = /* @__PURE__ */ _interopDefaultLegacy(React); function getDefaultExportFromCjs(x2) { return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, "default") ? x2["default"] : x2; } var tuiDatePicker = { exports: {} }; var tuiTimePicker = { exports: {} }; /*! * TOAST UI Time Picker * @version 2.1.4 * @author NHN FE Development Lab <dl_javascript@nhn.com> * @license MIT */ (function(module2, exports2) { (function webpackUniversalModuleDefinition(root, factory) { module2.exports = factory(); })(window, function() { return function(modules) { var installedModules = {}; function __webpack_require__(moduleId) { if (installedModules[moduleId]) { return installedModules[moduleId].exports; } var module3 = installedModules[moduleId] = { i: moduleId, l: false, exports: {} }; modules[moduleId].call(module3.exports, module3, module3.exports, __webpack_require__); module3.l = true; return module3.exports; } __webpack_require__.m = modules; __webpack_require__.c = installedModules; __webpack_require__.d = function(exports3, name, getter) { if (!__webpack_require__.o(exports3, name)) { Object.defineProperty(exports3, name, { enumerable: true, get: getter }); } }; __webpack_require__.r = function(exports3) { if (typeof Symbol !== "undefined" && Symbol.toStringTag) { Object.defineProperty(exports3, Symbol.toStringTag, { value: "Module" }); } Object.defineProperty(exports3, "__esModule", { value: true }); }; __webpack_require__.t = function(value, mode) { if (mode & 1) value = __webpack_require__(value); if (mode & 8) return value; if (mode & 4 && typeof value === "object" && value && value.__esModule) return value; var ns = /* @__PURE__ */ Object.create(null); __webpack_require__.r(ns); Object.defineProperty(ns, "default", { enumerable: true, value }); if (mode & 2 && typeof value != "string") for (var key in value) __webpack_require__.d(ns, key, function(key2) { return value[key2]; }.bind(null, key)); return ns; }; __webpack_require__.n = function(module3) { var getter = module3 && module3.__esModule ? function getDefault() { return module3["default"]; } : function getModuleExports() { return module3; }; __webpack_require__.d(getter, "a", getter); return getter; }; __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; __webpack_require__.p = "dist"; return __webpack_require__(__webpack_require__.s = 20); }([ function(module3, exports3, __webpack_require__) { var isArray2 = __webpack_require__(3); function inArray(searchElement, array2, startIndex) { var i2; var length; startIndex = startIndex || 0; if (!isArray2(array2)) { return -1; } if (Array.prototype.indexOf) { return Array.prototype.indexOf.call(array2, searchElement, startIndex); } length = array2.length; for (i2 = startIndex; startIndex >= 0 && i2 < length; i2 += 1) { if (array2[i2] === searchElement) { return i2; } } return -1; } module3.exports = inArray; }, function(module3, exports3, __webpack_require__) { function forEachArray2(arr, iteratee, context) { var index = 0; var len = arr.length; context = context || null; for (; index < len; index += 1) { if (iteratee.call(context, arr[index], index, arr) === false) { break; } } } module3.exports = forEachArray2; }, function(module3, exports3, __webpack_require__) { function extend2(target, objects) { var hasOwnProp2 = Object.prototype.hasOwnProperty; var source, prop, i2, len; for (i2 = 1, len = arguments.length; i2 < len; i2 += 1) { source = arguments[i2]; for (prop in source) { if (hasOwnProp2.call(source, prop)) { target[prop] = source[prop]; } } } return target; } module3.exports = extend2; }, function(module3, exports3, __webpack_require__) { function isArray2(obj) { return obj instanceof Array; } module3.exports = isArray2; }, function(module3, exports3, __webpack_require__) { var isArray2 = __webpack_require__(3); var forEachArray2 = __webpack_require__(1); var forEachOwnProperties2 = __webpack_require__(16); function forEach2(obj, iteratee, context) { if (isArray2(obj)) { forEachArray2(obj, iteratee, context); } else { forEachOwnProperties2(obj, iteratee, context); } } module3.exports = forEach2; }, function(module3, exports3, __webpack_require__) { function isUndefined2(obj) { return obj === void 0; } module3.exports = isUndefined2; }, function(module3, exports3, __webpack_require__) { function isString2(obj) { return typeof obj === "string" || obj instanceof String; } module3.exports = isString2; }, function(module3, exports3, __webpack_require__) { var inArray = __webpack_require__(0); var forEach2 = __webpack_require__(4); var isArray2 = __webpack_require__(3); var isString2 = __webpack_require__(6); var extend2 = __webpack_require__(2); var EXPRESSION_REGEXP = /{{\s?|\s?}}/g; var BRACKET_NOTATION_REGEXP = /^[a-zA-Z0-9_@]+\[[a-zA-Z0-9_@"']+\]$/; var BRACKET_REGEXP = /\[\s?|\s?\]/; var DOT_NOTATION_REGEXP = /^[a-zA-Z_]+\.[a-zA-Z_]+$/; var DOT_REGEXP = /\./; var STRING_NOTATION_REGEXP = /^["']\w+["']$/; var STRING_REGEXP = /"|'/g; var NUMBER_REGEXP = /^-?\d+\.?\d*$/; var EXPRESSION_INTERVAL = 2; var BLOCK_HELPERS = { "if": handleIf, "each": handleEach, "with": handleWith }; var isValidSplit = "a".split(/a/).length === 3; var splitByRegExp = function() { if (isValidSplit) { return function(text, regexp) { return text.split(regexp); }; } return function(text, regexp) { var result = []; var prevIndex = 0; var match, index; if (!regexp.global) { regexp = new RegExp(regexp, "g"); } match = regexp.exec(text); while (match !== null) { index = match.index; result.push(text.slice(prevIndex, index)); prevIndex = index + match[0].length; match = regexp.exec(text); } result.push(text.slice(prevIndex)); return result; }; }(); function getValueFromContext(exp, context) { var splitedExps; var value = context[exp]; if (exp === "true") { value = true; } else if (exp === "false") { value = false; } else if (STRING_NOTATION_REGEXP.test(exp)) { value = exp.replace(STRING_REGEXP, ""); } else if (BRACKET_NOTATION_REGEXP.test(exp)) { splitedExps = exp.split(BRACKET_REGEXP); value = getValueFromContext(splitedExps[0], context)[getValueFromContext(splitedExps[1], context)]; } else if (DOT_NOTATION_REGEXP.test(exp)) { splitedExps = exp.split(DOT_REGEXP); value = getValueFromContext(splitedExps[0], context)[splitedExps[1]]; } else if (NUMBER_REGEXP.test(exp)) { value = parseFloat(exp); } return value; } function extractElseif(ifExps, sourcesInsideBlock) { var exps = [ifExps]; var sourcesInsideIf = []; var otherIfCount = 0; var start = 0; forEach2(sourcesInsideBlock, function(source, index) { if (source.indexOf("if") === 0) { otherIfCount += 1; } else if (source === "/if") { otherIfCount -= 1; } else if (!otherIfCount && (source.indexOf("elseif") === 0 || source === "else")) { exps.push(source === "else" ? ["true"] : source.split(" ").slice(1)); sourcesInsideIf.push(sourcesInsideBlock.slice(start, index)); start = index + 1; } }); sourcesInsideIf.push(sourcesInsideBlock.slice(start)); return { exps, sourcesInsideIf }; } function handleIf(exps, sourcesInsideBlock, context) { var analyzed = extractElseif(exps, sourcesInsideBlock); var result = false; var compiledSource = ""; forEach2(analyzed.exps, function(exp, index) { result = handleExpression(exp, context); if (result) { compiledSource = compile(analyzed.sourcesInsideIf[index], context); } return !result; }); return compiledSource; } function handleEach(exps, sourcesInsideBlock, context) { var collection = handleExpression(exps, context); var additionalKey = isArray2(collection) ? "@index" : "@key"; var additionalContext = {}; var result = ""; forEach2(collection, function(item, key) { additionalContext[additionalKey] = key; additionalContext["@this"] = item; extend2(context, additionalContext); result += compile(sourcesInsideBlock.slice(), context); }); return result; } function handleWith(exps, sourcesInsideBlock, context) { var asIndex = inArray("as", exps); var alias = exps[asIndex + 1]; var result = handleExpression(exps.slice(0, asIndex), context); var additionalContext = {}; additionalContext[alias] = result; return compile(sourcesInsideBlock, extend2(context, additionalContext)) || ""; } function extractSourcesInsideBlock(sources, start, end) { var sourcesInsideBlock = sources.splice(start + 1, end - start); sourcesInsideBlock.pop(); return sourcesInsideBlock; } function handleBlockHelper(helperKeyword, sourcesToEnd, context) { var executeBlockHelper = BLOCK_HELPERS[helperKeyword]; var helperCount = 1; var startBlockIndex = 0; var endBlockIndex; var index = startBlockIndex + EXPRESSION_INTERVAL; var expression = sourcesToEnd[index]; while (helperCount && isString2(expression)) { if (expression.indexOf(helperKeyword) === 0) { helperCount += 1; } else if (expression.indexOf("/" + helperKeyword) === 0) { helperCount -= 1; endBlockIndex = index; } index += EXPRESSION_INTERVAL; expression = sourcesToEnd[index]; } if (helperCount) { throw Error(helperKeyword + " needs {{/" + helperKeyword + "}} expression."); } sourcesToEnd[startBlockIndex] = executeBlockHelper(sourcesToEnd[startBlockIndex].split(" ").slice(1), extractSourcesInsideBlock(sourcesToEnd, startBlockIndex, endBlockIndex), context); return sourcesToEnd; } function handleExpression(exps, context) { var result = getValueFromContext(exps[0], context); if (result instanceof Function) { return executeFunction(result, exps.slice(1), context); } return result; } function executeFunction(helper, argExps, context) { var args = []; forEach2(argExps, function(exp) { args.push(getValueFromContext(exp, context)); }); return helper.apply(null, args); } function compile(sources, context) { var index = 1; var expression = sources[index]; var exps, firstExp, result; while (isString2(expression)) { exps = expression.split(" "); firstExp = exps[0]; if (BLOCK_HELPERS[firstExp]) { result = handleBlockHelper(firstExp, sources.splice(index, sources.length - index), context); sources = sources.concat(result); } else { sources[index] = handleExpression(exps, context); } index += EXPRESSION_INTERVAL; expression = sources[index]; } return sources.join(""); } function template(text, context) { return compile(splitByRegExp(text, EXPRESSION_REGEXP), context); } module3.exports = template; }, function(module3, exports3, __webpack_require__) { var extend2 = __webpack_require__(2); var isExisty2 = __webpack_require__(23); var isString2 = __webpack_require__(6); var isObject2 = __webpack_require__(25); var isArray2 = __webpack_require__(3); var isFunction2 = __webpack_require__(26); var forEach2 = __webpack_require__(4); var R_EVENTNAME_SPLIT2 = /\s+/g; function CustomEvents2() { this.events = null; this.contexts = null; } CustomEvents2.mixin = function(func) { extend2(func.prototype, CustomEvents2.prototype); }; CustomEvents2.prototype._getHandlerItem = function(handler, context) { var item = { handler }; if (context) { item.context = context; } return item; }; CustomEvents2.prototype._safeEvent = function(eventName) { var events = this.events; var byName; if (!events) { events = this.events = {}; } if (eventName) { byName = events[eventName]; if (!byName) { byName = []; events[eventName] = byName; } events = byName; } return events; }; CustomEvents2.prototype._safeContext = function() { var context = this.contexts; if (!context) { context = this.contexts = []; } return context; }; CustomEvents2.prototype._indexOfContext = function(ctx) { var context = this._safeContext(); var index = 0; while (context[index]) { if (ctx === context[index][0]) { return index; } index += 1; } return -1; }; CustomEvents2.prototype._memorizeContext = function(ctx) { var context, index; if (!isExisty2(ctx)) { return; } context = this._safeContext(); index = this._indexOfContext(ctx); if (index > -1) { context[index][1] += 1; } else { context.push([ctx, 1]); } }; CustomEvents2.prototype._forgetContext = function(ctx) { var context, contextIndex; if (!isExisty2(ctx)) { return; } context = this._safeContext(); contextIndex = this._indexOfContext(ctx); if (contextIndex > -1) { context[contextIndex][1] -= 1; if (context[contextIndex][1] <= 0) { context.splice(contextIndex, 1); } } }; CustomEvents2.prototype._bindEvent = function(eventName, handler, context) { var events = this._safeEvent(eventName); this._memorizeContext(context); events.push(this._getHandlerItem(handler, context)); }; CustomEvents2.prototype.on = function(eventName, handler, context) { var self2 = this; if (isString2(eventName)) { eventName = eventName.split(R_EVENTNAME_SPLIT2); forEach2(eventName, function(name) { self2._bindEvent(name, handler, context); }); } else if (isObject2(eventName)) { context = handler; forEach2(eventName, function(func, name) { self2.on(name, func, context); }); } }; CustomEvents2.prototype.once = function(eventName, handler, context) { var self2 = this; if (isObject2(eventName)) { context = handler; forEach2(eventName, function(func, name) { self2.once(name, func, context); }); return; } function onceHandler() { handler.apply(context, arguments); self2.off(eventName, onceHandler, context); } this.on(eventName, onceHandler, context); }; CustomEvents2.prototype._spliceMatches = function(arr, predicate) { var i2 = 0; var len; if (!isArray2(arr)) { return; } for (len = arr.length; i2 < len; i2 += 1) { if (predicate(arr[i2]) === true) { arr.splice(i2, 1); len -= 1; i2 -= 1; } } }; CustomEvents2.prototype._matchHandler = function(handler) { var self2 = this; return function(item) { var needRemove = handler === item.handler; if (needRemove) { self2._forgetContext(item.context); } return needRemove; }; }; CustomEvents2.prototype._matchContext = function(context) { var self2 = this; return function(item) { var needRemove = context === item.context; if (needRemove) { self2._forgetContext(item.context); } return needRemove; }; }; CustomEvents2.prototype._matchHandlerAndContext = function(handler, context) { var self2 = this; return function(item) { var matchHandler = handler === item.handler; var matchContext = context === item.context; var needRemove = matchHandler && matchContext; if (needRemove) { self2._forgetContext(item.context); } return needRemove; }; }; CustomEvents2.prototype._offByEventName = function(eventName, handler) { var self2 = this; var andByHandler = isFunction2(handler); var matchHandler = self2._matchHandler(handler); eventName = eventName.split(R_EVENTNAME_SPLIT2); forEach2(eventName, function(name) { var handlerItems = self2._safeEvent(name); if (andByHandler) { self2._spliceMatches(handlerItems, matchHandler); } else { forEach2(handlerItems, function(item) { self2._forgetContext(item.context); }); self2.events[name] = []; } }); }; CustomEvents2.prototype._offByHandler = function(handler) { var self2 = this; var matchHandler = this._matchHandler(handler); forEach2(this._safeEvent(), function(handlerItems) { self2._spliceMatches(handlerItems, matchHandler); }); }; CustomEvents2.prototype._offByObject = function(obj, handler) { var self2 = this; var matchFunc; if (this._indexOfContext(obj) < 0) { forEach2(obj, function(func, name) { self2.off(name, func); }); } else if (isString2(handler)) { matchFunc = this._matchContext(obj); self2._spliceMatches(this._safeEvent(handler), matchFunc); } else if (isFunction2(handler)) { matchFunc = this._matchHandlerAndContext(handler, obj); forEach2(this._safeEvent(), function(handlerItems) { self2._spliceMatches(handlerItems, matchFunc); }); } else { matchFunc = this._matchContext(obj); forEach2(this._safeEvent(), function(handlerItems) { self2._spliceMatches(handlerItems, matchFunc); }); } }; CustomEvents2.prototype.off = function(eventName, handler) { if (isString2(eventName)) { this._offByEventName(eventName, handler); } else if (!arguments.length) { this.events = {}; this.contexts = []; } else if (isFunction2(eventName)) { this._offByHandler(eventName); } else if (isObject2(eventName)) { this._offByObject(eventName, handler); } }; CustomEvents2.prototype.fire = function(eventName) { this.invoke.apply(this, arguments); }; CustomEvents2.prototype.invoke = function(eventName) { var events, args, index, item; if (!this.hasListener(eventName)) { return true; } events = this._safeEvent(eventName); args = Array.prototype.slice.call(arguments, 1); index = 0; while (events[index]) { item = events[index]; if (item.handler.apply(item.context, args) === false) { return false; } index += 1; } return true; }; CustomEvents2.prototype.hasListener = function(eventName) { return this.getListenerLength(eventName) > 0; }; CustomEvents2.prototype.getListenerLength = function(eventName) { var events = this._safeEvent(eventName); return events.length; }; module3.exports = CustomEvents2; }, function(module3, exports3, __webpack_require__) { var inherit = __webpack_require__(27); var extend2 = __webpack_require__(2); function defineClass(parent, props) { var obj; if (!props) { props = parent; parent = null; } obj = props.init || function() { }; if (parent) { inherit(obj, parent); } if (props.hasOwnProperty("static")) { extend2(obj, props["static"]); delete props["static"]; } extend2(obj.prototype, props); return obj; } module3.exports = defineClass; }, function(module3, exports3, __webpack_require__) { var isString2 = __webpack_require__(6); var forEach2 = __webpack_require__(4); var safeEvent = __webpack_require__(17); function on2(element, types, handler, context) { if (isString2(types)) { forEach2(types.split(/\s+/g), function(type) { bindEvent(element, type, handler, context); }); return; } forEach2(types, function(func, type) { bindEvent(element, type, func, handler); }); } function bindEvent(element, type, handler, context) { function eventHandler(e2) { handler.call(context || element, e2 || window.event); } if ("addEventListener" in element) { element.addEventListener(type, eventHandler); } else if ("attachEvent" in element) { element.attachEvent("on" + type, eventHandler); } memorizeHandler(element, type, handler, eventHandler); } function memorizeHandler(element, type, handler, wrappedHandler) { var events = safeEvent(element, type); var existInEvents = false; forEach2(events, function(obj) { if (obj.handler === handler) { existInEvents = true; return false; } return true; }); if (!existInEvents) { events.push({ handler, wrappedHandler }); } } module3.exports = on2; }, function(module3, exports3, __webpack_require__) { var isString2 = __webpack_require__(6); var forEach2 = __webpack_require__(4); var safeEvent = __webpack_require__(17); function off(element, types, handler) { if (isString2(types)) { forEach2(types.split(/\s+/g), function(type) { unbindEvent(element, type, handler); }); return; } forEach2(types, function(func, type) { unbindEvent(element, type, func); }); } function unbindEvent(element, type, handler) { var events = safeEvent(element, type); var index; if (!handler) { forEach2(events, function(item) { removeHandler(element, type, item.wrappedHandler); }); events.splice(0, events.length); } else { forEach2(events, function(item, idx) { if (handler === item.handler) { removeHandler(element, type, item.wrappedHandler); index = idx; return false; } return true; }); events.splice(index, 1); } } function removeHandler(element, type, handler) { if ("removeEventListener" in element) { element.removeEventListener(type, handler); } else if ("detachEvent" in element) { element.detachEvent("on" + type, handler); } } module3.exports = off; }, function(module3, exports3, __webpack_require__) { var matches = __webpack_require__(30); function closest(element, selector) { var parent = element.parentNode; if (matches(element, selector)) { return element; } while (parent && parent !== document) { if (matches(parent, selector)) { return parent; } parent = parent.parentNode; } return null; } module3.exports = closest; }, function(module3, exports3, __webpack_require__) { function removeElement(element) { if (element && element.parentNode) { element.parentNode.removeChild(element); } } module3.exports = removeElement; }, function(module3, exports3, __webpack_require__) { function isHTMLNode(html) { if (typeof HTMLElement === "object") { return html && (html instanceof HTMLElement || !!html.nodeType); } return !!(html && html.nodeType); } module3.exports = isHTMLNode; }, function(module3, exports3, __webpack_require__) { var inArray = __webpack_require__(0); var forEachArray2 = __webpack_require__(1); var sendHostname2 = __webpack_require__(35); var uniqueId = 0; var utils = { getUniqueId: function() { uniqueId += 1; return uniqueId; }, formatTime: function(value, format) { var PADDING_ZERO_TYPES = ["hh", "mm"]; value = String(value); return inArray(format, PADDING_ZERO_TYPES) >= 0 && value.length === 1 ? "0" + value : value; }, getMeridiemHour: function(hour) { hour %= 12; if (hour === 0) { hour = 12; } return hour; }, getRangeArr: function(start, end, step) { var arr = []; var i2; step = step || 1; if (start > end) { for (i2 = end; i2 >= start; i2 -= step) { arr.push(i2); } } else { for (i2 = start; i2 <= end; i2 += step) { arr.push(i2); } } return arr; }, fill: function(start, end, value, target) { var arr = target || []; var replaceEnd = Math.min(arr.length - 1, end); var i2; for (i2 = start; i2 <= replaceEnd; i2 += 1) { arr[i2] = value; } for (i2 = replaceEnd; i2 <= end; i2 += 1) { arr.push(value); } return arr; }, getTarget: function(ev) { return ev.target || ev.srcElement; }, sendHostName: function() { sendHostname2("time-picker", "UA-129987462-1"); }, getDisabledMinuteArr: function(enableRanges, minuteStep) { var arr = this.fill(0, Math.floor(60 / minuteStep) - 2, false); function setDisabled(enableRange) { var beginDisabledMinute = Math.ceil(enableRange.begin / minuteStep); var endDisabledMinute = Math.floor(enableRange.end / minuteStep); arr = this.fill(beginDisabledMinute, endDisabledMinute, true, arr); } forEachArray2(enableRanges, setDisabled.bind(this)); return arr; }, setDisabled: function(el, isDisabled) { el.disabled = isDisabled; } }; module3.exports = utils; }, function(module3, exports3, __webpack_require__) { function forEachOwnProperties2(obj, iteratee, context) { var key; context = context || null; for (key in obj) { if (obj.hasOwnProperty(key)) { if (iteratee.call(context, obj[key], key, obj) === false) { break; } } } } module3.exports = forEachOwnProperties2; }, function(module3, exports3, __webpack_require__) { var EVENT_KEY = "_feEventKey"; function safeEvent(element, type) { var events = element[EVENT_KEY]; var handlers; if (!events) { events = element[EVENT_KEY] = {}; } handlers = events[type]; if (!handlers) { handlers = events[type] = []; } return handlers; } module3.exports = safeEvent; }, function(module3, exports3, __webpack_require__) { var isUndefined2 = __webpack_require__(5); function getClass(element) { if (!element || !element.className) { return ""; } if (isUndefined2(element.className.baseVal)) { return element.className; } return element.className.baseVal; } module3.exports = getClass; }, function(module3, exports3, __webpack_require__) { var isArray2 = __webpack_require__(3); var isUndefined2 = __webpack_require__(5); function setClassName(element, cssClass) { cssClass = isArray2(cssClass) ? cssClass.join(" ") : cssClass; cssClass = cssClass.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ""); if (isUndefined2(element.className.baseVal)) { element.className = cssClass; return; } element.className.baseVal = cssClass; } module3.exports = setClassName; }, function(module3, exports3, __webpack_require__) { __webpack_require__(21); module3.exports = __webpack_require__(22); }, function(module3, exports3, __webpack_require__) { }, function(module3, exports3, __webpack_require__) { var inArray = __webpack_require__(0); var forEachArray2 = __webpack_require__(1); var CustomEvents2 = __webpack_require__(8); var defineClass = __webpack_require__(9); var extend2 = __webpack_require__(2); var on2 = __webpack_require__(10); var off = __webpack_require__(11); var addClass = __webpack_require__(29); var closest = __webpack_require__(12); var removeElement = __webpack_require__(13); var removeClass = __webpack_require__(32); var isHTMLNode = __webpack_require__(14); var isNumber2 = __webpack_require__(33); var Spinbox = __webpack_require__(34); var Selectbox = __webpack_require__(38); var util = __webpack_require__(15); var localeTexts = __webpack_require__(40); var tmpl = __webpack_require__(41); var meridiemTmpl = __webpack_require__(42); var SELECTOR_HOUR_ELEMENT = ".tui-timepicker-hour"; var SELECTOR_MINUTE_ELEMENT = ".tui-timepicker-minute"; var SELECTOR_MERIDIEM_ELEMENT = ".tui-timepicker-meridiem"; var CLASS_NAME_LEFT_MERIDIEM = "tui-has-left"; var CLASS_NAME_HIDDEN = "tui-hidden"; var CLASS_NAME_CHECKED = "tui-timepicker-meridiem-checked"; var INPUT_TYPE_SPINBOX = "spinbox"; var INPUT_TYPE_SELECTBOX = "selectbox"; var START_NUMBER_OF_TIME = 0; var END_NUMBER_OF_MINUTE = 59; var END_NUMBER_OF_HOUR = 23; var END_NUMBER_OF_HOUR_WITH_MERIDIEM = 12; var mergeDefaultOptions = function(options) { return extend2({ language: "en", initialHour: 0, initialMinute: 0, showMeridiem: true, inputType: "selectbox", hourStep: 1, minuteStep: 1, meridiemPosition: "right", format: "h:m", disabledHours: [], disabledMinutes: {}, usageStatistics: true }, options); }; var TimePicker = defineClass({ static: { localeTexts }, init: function(container, options) { options = mergeDefaultOptions(options); this.id = util.getUniqueId(); this.container = isHTMLNode(container) ? container : document.querySelector(container); this.element = null; this.meridiemElement = null; this.amEl = null; this.pmEl = null; this.showMeridiem = options.showMeridiem; this.meridiemPosition = options.meridiemPosition; this.hourInput = null; this.minuteInput = null; this.hour = options.initialHour; this.minute = options.initialMinute; this.hourStep = options.hourStep; this.minuteStep = options.minuteStep; this.disabledHours = options.disabledHours; this.disabledMinutes = options.disabledMinutes; this.inputType = options.inputType; this.localeText = localeTexts[options.language]; this.format = this.getValidTimeFormat(options.format); this.render(); this.setEvents(); if (options.usageStatistics) { util.sendHostName(); } }, setEvents: function() { this.hourInput.on("change", this.onChangeTimeInput, this); this.minuteInput.on("change", this.onChangeTimeInput, this); if (this.showMeridiem) { if (this.inputType === INPUT_TYPE_SELECTBOX) { on2(this.meridiemElement.querySelector("select"), "change", this.onChangeMeridiem, this); } else if (this.inputType === INPUT_TYPE_SPINBOX) { on2(this.meridiemElement, "click", this.onChangeMeridiem, this); } } }, removeEvents: function() { this.off(); this.hourInput.destroy(); this.minuteInput.destroy(); if (this.showMeridiem) { if (this.inputType === INPUT_TYPE_SELECTBOX) { off(this.meridiemElement.querySelector("select"), "change", this.onChangeMeridiem, this); } else if (this.inputType === INPUT_TYPE_SPINBOX) { off(this.meridiemElement, "click", this.onChangeMeridiem, this); } } }, render: function() { var context = { showMeridiem: this.showMeridiem, isSpinbox: this.inputType === "spinbox" }; if (this.showMeridiem) { extend2(context, { meridiemElement: this.makeMeridiemHTML() }); } if (this.element) { removeElement(this.element); } this.container.innerHTML = tmpl(context); this.element = this.container.firstChild; this.renderTimeInputs(); if (this.showMeridiem) { this.setMeridiemElement(); } }, setMeridiemElement: function() { if (this.meridiemPosition === "left") { addClass(this.element, CLASS_NAME_LEFT_MERIDIEM); } this.meridiemElement = this.element.querySelector(SELECTOR_MERIDIEM_ELEMENT); this.amEl = this.meridiemElement.querySelector('[value="AM"]'); this.pmEl = this.meridiemElement.querySelector('[value="PM"]'); this.syncToMeridiemElements(); }, makeMeridiemHTML: function() { var localeText = this.localeText; return meridiemTmpl({ am: localeText.am, pm: localeText.pm, radioId: this.id, isSpinbox: this.inputType === "spinbox" }); }, renderTimeInputs: function() { var hour = this.hour; var showMeridiem = this.showMeridiem; var hourElement = this.element.querySelector(SELECTOR_HOUR_ELEMENT); var minuteElement = this.element.querySelector(SELECTOR_MINUTE_ELEMENT); var BoxComponent = this.inputType.toLowerCase() === "selectbox" ? Selectbox : Spinbox; var formatExplode = this.format.split(":"); var hourItems = this.getHourItems(); if (showMeridiem) { hour = util.getMeridiemHour(hour); } this.hourInput = new BoxComponent(hourElement, { initialValue: hour, items: hourItems, format: formatExplode[0], disabledItems: this.makeDisabledStatItems(hourItems) }); this.minuteInput = new BoxComponent(minuteElement, { initialValue: this.minute, items: this.getMinuteItems(), format: formatExplode[1] }); }, makeDisabledStatItems: function(hourItems) { var result = []; var disabledHours = this.disabledHours.slice(); if (this.showMeridiem) { disabledHours = this.meridiemableTime(disabledHours); } forEachArray2(hourItems, function(hour) { result.push(inArray(hour, disabledHours) >= 0); }); return result; }, meridiemableTime: function(disabledHours) { var diffHour = 0; var startHour = 0; var endHour = 11; var result = []; if (this.hour >= 12) { diffHour = 12; startHour = 12; endHour = 23; } forEachArray2(disabledHours, function(hour) { if (hour >= startHour && hour <= endHour) { result.push(hour - diffHour === 0 ? 12 : hour - diffHour); } }); return result; }, getValidTimeFormat: function(format) { if (!format.match(/^[h]{1,2}:[m]{1,2}$/i)) { return "h:m"; } return format.toLowerCase(); }, syncToMeridiemElements: function() { var selectedEl = this.hour >= 12 ? this.pmEl : this.amEl; var notSelectedEl = selectedEl === this.pmEl ? this.amEl : this.pmEl; selectedEl.setAttribute("selected", true); selectedEl.setAttribute("checked", true); addClass(selectedEl, CLASS_NAME_CHECKED); notSelectedEl.removeAttribute("selected"); notSelectedEl.removeAttribute("checked"); removeClass(notSelectedEl, CLASS_NAME_CHECKED); }, syncToInputs: function() { var hour = this.hour; var minute = this.minute; if (this.showMeridiem) { hour = util.getMeridiemHour(hour); } this.hourInput.setValue(hour); this.minuteInput.setValue(minute); }, onChangeMeridiem: function(ev) { var hour = this.hour; var target = util.getTarget(ev); if (target.value && closest(target, SELECTOR_MERIDIEM_ELEMENT)) { hour = this.to24Hour(target.value === "PM", hour); this.setTime(hour, this.minute); this.setDisabledHours(); this.setDisabledMinutes(hour); } }, onChangeTimeInput: function() { var hour = this.hourInput.getValue(); var minute = this.minuteInput.getValue(); var isPM = this.hour >= 12; if (this.showMeridiem) { hour = this.to24Hour(isPM, hour); } this.setTime(hour, minute); this.setDisabledMinutes(hour); }, to24Hour: function(isPM, hour) { hour %= 12; if (isPM) { hour += 12; } return hour; }, setDisabledHours: function() { var hourItems = this.getHourItems(); var disabledItems = this.makeDisabledStatItems(hourItems); this.hourInput.setDisabledItems(disabledItems); }, setDisabledMinutes: function(hour) { var disabledItems; disabledItems = this.disabledMinutes[hour] || []; this.minuteInput.setDisabledItems(disabledItems); }, getHourItems: function() { var step = this.hourStep; return this.showMeridiem ? util.getRangeArr(1, 12, step) : util.getRangeArr(0, 23, step); }, getMinuteItems: function() { return util.getRangeArr(0, 59, this.minuteStep); }, validItems: function(hour, minute) { if (!isNumber2(hour) || !isNumber2(minute)) { return false; } if (this.showMeridiem) { hour = util.getMeridiemHour(hour); } return inArray(hour, this.getHourItems()) > -1 && inArray(minute, this.getMinuteItems()) > -1; }, setHourStep: function(step) { this.hourStep = step; this.hourInput.fire("changeItems", this.getHourItems()); }, getHourStep: function() { return this.hourStep; }, setMinuteStep: function(step) { this.minuteStep = step; this.minuteInput.fire("changeItems", this.getMinuteItems()); }, getMinuteStep: function() { return this.minuteStep; }, show: function() { removeClass(this.element, CLASS_NAME_HIDDEN); }, hide: function() { addClass(this.element, CLASS_NAME_HIDDEN); }, setHour: function(hour) { return this.setTime(hour, this.minute); }, setMinute: function(minute) { return this.setTime(this.hour, minute); }, setTime: function(hour, minute) { if (!this.validItems(hour, minute)) { return; } this.hour = hour; this.minute = minute; this.syncToInputs(); if (this.showMeridiem) { this.syncToMeridiemElements(); } this.fire("change", { hour: this.hour, minute: this.minute }); }, setRange: function(begin, end) { var beginHour = begin.hour; var beginMin = begin.minute; var endHour, endMin; if (!this.isValidRange(begin, end)) { return; } if (end) { endHour = end.hour; endMin = end.minute; } this.setRangeHour(beginHour, endHour); this.setRangeMinute(beginHour, beginMin, endHour, endMin); this.applyRange(beginHour, beginMin, endHour); }, setRangeHour: function(beginHour, endHour) { var disabledHours = util.getRangeArr(START_NUMBER_OF_TIME, beginHour - 1); if (endHour) { disabledHours = disabledHours.concat(util.getRangeArr(endHour + 1, END_NUMBER_OF_HOUR)); } this.disabledHours = disabledHours.slice(); }, setRangeMinute: function(beginHour, beginMin, endHour, endMin) { var disabledMinRanges = []; if (!beginHour && !beginMin) { return; } disabledMinRanges.push({ begin: START_NUMBER_OF_TIME, end: beginMin }); if (endHour && endMin) { disabledMinRanges.push({ begin: endMin, end: END_NUMBER_OF_MINUTE }); if (beginHour === endHour) { this.disabledMinutes[beginHour] = util.getDisabledMinuteArr(disabledMinRanges, this.minuteStep).slice(); return; } this.disabledMinutes[endHour] = util.getDisabledMinuteArr([disabledMinRanges[1]], this.minuteStep).slice(); } this.disabledMinutes[beginHour] = util.getDisabledMinuteArr([disabledMinRanges[0]], this.minuteStep).slice(); }, applyRange: function(beginHour, beginMin, endHour) {