@dan-ui/react-calendar
Version:
TOAST UI Calendar for React
1,244 lines (1,243 loc) • 619 kB
JavaScript
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) {